PageSourceSearch

https://frac.io/static/js/54.3b5f8a16.chunk.js

js frac.io collected 2026-10-08 19:27:32 UTC 4,864 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[54],{54(e,n,t){t.r(n),t.d(n,{AwardsLoaderScene:()=>f,default:()=>v});var o=t(544),a=t(43),i=t(37),r=t(926),s=t(111),c=t(435),l=t(579);const d={desktop:{count:1500,size:4.2},mobile:{count:600,size:4.6}};function u(e){let n=e.isAnimated,t=e.count,i=e.size;const s=(0,a.useRef)(),d=(0,a.useRef)(),u=(0,r.C)(e=>e.gl),f=(0,r.C)(e=>e.invalidate),v=(0,a.useState)(!1),h=(0,o.A)(v,2),m=h[0],p=h[1],x=(0,a.useMemo)(()=>function(e){const n=new c.LoY,t=new Float32Array(3*e),o=new Float32Array(3*e),a=new Float32Array(3*e);for(let i=0;i<e;i+=1){const e=6*Math.cbrt(Math.random()),n=Math.random()*Math.PI*2,r=Math.acos(2*Math.random()-1);t[3*i+0]=e*Math.sin(r)*Math.cos(n),t[3*i+1]=e*Math.sin(r)*Math.sin(n),t[3*i+2]=e*Math.cos(r),o[3*i+0]=t[3*i+0],o[3*i+1]=t[3*i+1],o[3*i+2]=t[3*i+2],a[3*i+0]=100*Math.random(),a[3*i+1]=100*Math.random(),a[3*i+2]=100*Math.random()}return n.setAttribute("position",new c.THS(t,3)),n.setAttribute("aLatticePos",new c.THS(o,3)),n.setAttribute("aSeed",new c.THS(a,3)),n}(t),[t]);(0,a.useEffect)(()=>()=>x.dispose(),[x]);const g=(0,a.useMemo)(()=>{var e,n;return{uTime:{value:0},uNoiseAmp:{value:.55},uSize:{value:i},uPixelRatio:{value:Math.min(null!==(e=null===(n=u.getPixelRatio)||void 0===n?void 0:n.call(u))&&void 0!==e?e:1,1.5)}}},[i]);return(0,a.useEffect)(()=>{const e=()=>p(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,a.useEffect)(()=>{n||f()},[n,f]),(0,r.D)((e,t)=>{if(!n||m)return;const o=d.current;o&&(o.uniforms.uTime.value+=t),s.current&&(s.current.rotation.y+=.07*t)}),(0,l.jsx)("group",{ref:s,children:(0,l.jsx)("points",{geometry:x,frustumCulled:!1,children:(0,l.jsx)("shaderMaterial",{ref:d,uniforms:g,vertexShader:"\n  attribute vec3 aLatticePos;\n  attribute vec3 aSeed;\n  uniform float uTime;\n  uniform float uNoiseAmp;\n  uniform float uSize;\n  uniform float uPixelRatio;\n  varying vec3 vColor;\n  varying float vAlpha;\n\n  float hash13(vec3 p) {\n    p = fract(p * 0.1031);\n    p += dot(p, p.yzx + 33.33);\n    return fract((p.x + p.y) * p.z);\n  }\n  float vnoise(vec3 p) {\n    vec3 i = floor(p);\n    vec3 f = fract(p);\n    f = f * f * (3.0 - 2.0 * f);\n    float n000 = hash13(i);\n    float n100 = hash13(i + vec3(1.0, 0.0, 0.0));\n    float n010 = hash13(i + vec3(0.0, 1.0, 0.0));\n    float n110 = hash13(i + vec3(1.0, 1.0, 0.0));\n    float n001 = hash13(i + vec3(0.0, 0.0, 1.0));\n    float n101 = hash13(i + vec3(1.0, 0.0, 1.0));\n    float n011 = hash13(i + vec3(0.0, 1.0, 1.0));\n    float n111 = hash13(i + vec3(1.0, 1.0, 1.0));\n    return mix(\n      mix(mix(n000, n100, f.x), mix(n010, n110, f.x), f.y),\n      mix(mix(n001, n101, f.x), mix(n011, n111, f.x), f.y),\n      f.z\n    );\n  }\n\n  void main() {\n    vec3 base = position;\n    vec3 nseed = aSeed * 0.35 + uTime * 0.12;\n    vec3 disp = vec3(\n      vnoise(nseed) - 0.5,\n      vnoise(nseed + vec3(19.7,  9.3, 47.1)) - 0.5,\n      vnoise(nseed + vec3(83.2, 61.5, 12.9)) - 0.5\n    ) * uNoiseAmp;\n    vec3 pos = base + disp;\n\n    // Colour ramp \u2014 darker than SceneA so it never fights the copy.\n    vec3 colFar  = vec3(0.008, 0.016, 0.043); // ~ #02040B\n    vec3 colMid  = vec3(0.100, 0.030, 0.220); // slightly darker #2A0A4A\n    vec3 colNear = vec3(0.320, 0.000, 0.620); // slightly darker #7200DB\n    vec3 col = mix(colFar, colMid, smoothstep(-3.0, 0.0, pos.z));\n    col      = mix(col,    colNear, smoothstep( 0.0, 3.0, pos.z));\n    vColor = col;\n\n    vAlpha = 0.42;\n\n    vec4 mv = modelViewMatrix * vec4(pos, 1.0);\n    gl_Position = projectionMatrix * mv;\n    gl_PointSize = uSize * uPixelRatio * (10.0 / max(-mv.z, 3.0));\n  }\n",fragmentShader:"\n  varying vec3 vColor;\n  varying float vAlpha;\n  void main() {\n    vec2 c = gl_PointCoord - 0.5;\n    float d = length(c);\n    if (d > 0.5) discard;\n    float core = smoothstep(0.5, 0.0, d);\n    float halo = smoothstep(0.5, 0.32, d);\n    float a = pow(core, 1.4) * 0.55 + pow(halo, 2.6) * 0.35;\n    gl_FragColor = vec4(vColor, clamp(a * vAlpha, 0.0, 1.0));\n  }\n",transparent:!0,depthWrite:!1,blending:c.EZo})})})}function f(){const e=(0,s.I)(),n=(0,a.useState)(()=>"undefined"!==typeof window&&window.innerWidth<640?"mobile":"desktop"),t=(0,o.A)(n,2),r=t[0],c=t[1];(0,a.useEffect)(()=>{const e=window.innerWidth<640?"mobile":"desktop";c(e)},[]);const f=d[r],v=!e;return(0,l.jsxs)(i.Hl,{dpr:[1,1.5],camera:{position:[0,0,8],fov:45,near:.1,far:100},frameloop:v?"always":"demand",gl:{antialias:!0,alpha:!0,powerPreference:"default"},style:{position:"absolute",inset:0},"data-testid":"awards-loader-scene",children:[(0,l.jsx)("color",{attach:"background",args:["#02040B"]}),(0,l.jsx)(u,{isAnimated:v,count:f.count,size:f.size})]})}const v=f}}]);
2//# sourceMappingURL=54.3b5f8a16.chunk.js.map

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.