1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[772],{4772:function(e,n,t){t.r(n),t.d(n,{default:function(){return m}});var i=t(2265),o=t(2079),r=t(1448),a=t(2046),s=t(2691),d=t(9033),l=t(9520),u=t(4035),c=t(9620);function m(){let e=(0,i.useRef)(null),n=(0,i.useRef)(null),t=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let i,m,v,w,f,p,h;e.current||(e.current=new(window.AudioContext||window.webkitAudioContext)),t.current||(t.current=e.current.createChannelMerger(2),t.current.connect(e.current.destination)),(i=new o.xsS).background=new o.Ilk(16777215),(m=new o.cPb(75,window.innerWidth/window.innerHeight,.1,1e3)).position.set(0,0,3),(v=new r.CP7({antialias:!0})).setSize(window.innerWidth,window.innerHeight),v.shadowMap.enabled=!0,v.shadowMap.type=o.ntZ,document.body.appendChild(v.domElement);let g=new o.jyz({vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n precision mediump float;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform vec2 iMouse;\n \n #define iterations 17\n #define formuparam 0.53\n\n #define volsteps 10\n #define stepsize 0.05\n\n #define zoom 10.800\n #define tile 0.850\n #define speed 0.010 \n\n #define brightness 0.0015\n #define darkmatter 0.999\n #define distfading 0.730\n #define saturation 0.000\n\n // Funzione principale che realizza il rendering volumetrico\n void mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n // Coordinate normalizzate\n vec2 uv = fragCoord.xy / iResolution.xy - 0.5;\n uv.y *= iResolution.y / iResolution.x;\n vec3 dir = vec3(uv * zoom, 1.0);\n float time = iTime * speed + 0.25;\n \n // Rotazione basata sulla posizione del mouse\n float a1 = 0.5 + iMouse.x / iResolution.x * 1.0;\n float a2 = 0.8 + iMouse.y / iResolution.y * 1.0;\n mat2 rot1 = mat2(cos(a1), sin(a1), -sin(a1), cos(a1));\n mat2 rot2 = mat2(cos(a2), sin(a2), -sin(a2), cos(a2));\n dir.xz *= rot1;\n dir.xy *= rot2;\n vec3 from = vec3(1.0, 0.5, 0.5);\n from += vec3(time * 2.0, time, -2.0);\n from.xz *= rot1;\n from.xy *= rot2;\n \n // Rendering volumetrico\n float s = 0.1, fade = 1.0;\n vec3 v = vec3(0.0);\n for (int r = 0; r < volsteps; r++) {\n vec3 p = from + s * dir * 0.5;\n p = abs(vec3(tile) - mod(p, vec3(tile * 2.0))); // Effetto tiling\n float pa, a = pa = 0.0;\n for (int i = 0; i < iterations; i++) {\n p = abs(p) / dot(p, p) - formuparam;\n a += abs(length(p) - pa);\n pa = length(p);\n }\n float dm = max(0.0, darkmatter - a * a * 0.001);\n a *= a * a;\n if (r > 6) fade *= 1.0 - dm;\n v += fade;\n v += vec3(s, s * s, s * s * s * s) * a * brightness * fade;\n fade *= distfading;\n s += stepsize;\n }\n v = mix(vec3(length(v)), v, saturation);\n fragColor = vec4(v * 0.01, 1.0);\n }\n \n void main(){\n mainImage(gl_FragColor, gl_FragCoord.xy);\n }\n ",uniforms:{iResolution:{value:new o.FM8(window.innerWidth,window.innerHeight)},iTime:{value:0},iMouse:{value:new o.FM8(0,0)}},depthTest:!1,depthWrite:!1}),x=new o._12(200,200),y=new o.Kj0(x,g);function E(e){g.uniforms.iMouse.value.set(e.clientX,window.innerHeight-e.clientY)}function z(e){if(e.preventDefault(),e.touches.length>0){let n=e.touches[0];g.uniforms.iMouse.value.set(n.clientX,window.innerHeight-n.clientY)}}y.renderOrder=-1,i.add(y),y.position.set(0,0,-10),window.addEventListener("mousemove",E),window.addEventListener("touchmove",z,{passive:!1}),(h=new o.dpR().load("/sfondo.jpg")).mapping=o.dSO,h.colorSpace=o.KI_;let M=new o.Ox3(16777215,6);M.position.set(0,2,10),M.intensity=3,i.add(M);let b={x:null,y:null,t:null},C=i=>{let o,r;if(!e.current)return;i.stopPropagation(),i.touches&&i.touches.length>0?(o=i.touches[0].clientX,r=i.touches[0].clientY,i.preventDefault()):(o=i.clientX,r=i.clientY);let a=performance.now(),s=0;if(null!==b.x&&null!==b.y&&null!==b.t){let e=o-b.x,n=r-b.y,t=a-b.t;s=t>0?Math.sqrt(e*e+n*n)/t:0}b={x:o,y:r,t:a};let d=Math.min(60+100*s,100);n.current&&(n.current.stop(),n.current.disconnect()),n.current=e.current.createOscillator(),n.current.type="sine";let l=e.current.createGain();l.gain.value=.1,n.current.connect(l),l.connect(t.current,0,1),n.current.frequency.setValueAtTime(d,e.current.currentTime),n.current.start(),n.current.stop(e.current.currentTime+.2)};window.addEventListener("mousemove",C),window.addEventListener("touchmove",C,{passive:!1}),new a.E().load("/RH.glb",e=>{(p=e.scene).scale.set(4,4,4),p.position.set(0,.5,-1),p.castShadow=!0,p.receiveShadow=!0,p.envMap={textureEquirec:h},p.needsUpdate=!0,p.traverse(e=>{e.isMesh&&(e.material=new o.Wid({color:"#000",roughness:0,metalness:1,wireframe:!1,transparent:!0,opacity:1,envMap:h}),e.castShadow=!0,e.receiveShadow=!0)}),i.add(p)}),(w=new s.z(m,v.domElement)).enableDamping=!0,w.dampingFactor=.25,w.enableZoom=!0,(f=new d.x(v)).setSize(window.innerWidth,window.innerHeight);let R=new l.C(i,m);f.addPass(R),new c.d;let S=new u.C;S.enabled=!1,S.goWild=!1,S.dtSize=1,f.addPass(S);let L=()=>{S.enabled=!0,setTimeout(()=>{S.enabled=!1},1500)};function H(){m.aspect=window.innerWidth/window.innerHeight,m.updateProjectionMatrix(),v.setSize(window.innerWidth,window.innerHeight),f.setSize(window.innerWidth,window.innerHeight)}return window.addEventListener("transition",L),window.addEventListener("resize",H),function e(n){let t=.001*n;g.uniforms.iTime.value=t/8,requestAnimationFrame(e),p&&(p.rotation.y=.5*t),w.update(),f.render()}(),()=>{v.domElement&&v.domElement.parentNode&&v.domElement.parentNode.removeChild(v.domElement),window.removeEventListener("resize",H),i.traverse(e=>
1{if(e.isMesh){if(e.geometry.dispose(),e.material.isMaterial)e.material.dispose();else for(let n of e.material)n.dispose()}}),window.removeEventListener("transition",L),w.dispose(),v.dispose(),f.dispose(),window.removeEventListener("mousemove",E),window.removeEventListener("touchmove",z,{passive:!1}),window.removeEventListener("mousemove",C),window.removeEventListener("touchmove",C,{passive:!1})}},[]),null}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.