export declare const RIBBON_FIELD_VERTEX_SHADER = "\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n "; export declare const RIBBON_FIELD_FRAGMENT_SHADER = "\n precision highp float;\n uniform vec2 resolution;\n uniform float time;\n uniform vec2 pointer;\n\n float hash(vec2 p) {\n p = fract(p * vec2(123.34, 456.21));\n p += dot(p, p + 45.32);\n return fract(p.x * p.y);\n }\n\n float ribbon(vec2 uv, float offset, float width, float phase) {\n float y = 0.55 + 0.20 * sin((uv.x * 2.15) + phase) + 0.045 * sin((uv.x * 7.0) - phase * 0.7);\n float d = abs(uv.y - y - offset);\n return exp(-(d * d) / width);\n }\n\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec2 p = uv;\n p.x *= resolution.x / resolution.y;\n\n float t = time * 0.22;\n float drift = (pointer.x - 0.5) * 0.06;\n\n float rightFade = smoothstep(0.28, 0.72, uv.x);\n float centerDark = 1.0 - smoothstep(0.0, 0.88, distance(uv, vec2(0.18, 0.48)));\n\n float r1 = ribbon(vec2(uv.x + drift, uv.y), 0.03, 0.0065, t + 0.9);\n float r2 = ribbon(vec2(uv.x - drift * 0.7, uv.y), -0.23, 0.0085, t + 3.25);\n float r3 = ribbon(vec2(uv.x + drift * 0.4, uv.y), 0.25, 0.014, t + 1.85);\n\n float glow = r1 * 1.14 + r2 * 1.05 + r3 * 0.48;\n\n vec3 teal = vec3(0.17, 0.83, 0.75);\n vec3 cyan = vec3(0.22, 0.82, 0.96);\n vec3 indigo = vec3(0.39, 0.38, 0.92);\n vec3 purple = vec3(0.66, 0.33, 0.98);\n vec3 blue = vec3(0.23, 0.51, 0.96);\n\n vec3 col = vec3(0.0);\n col += cyan * r1 * 0.92;\n col += teal * r1 * 0.62;\n col += indigo * r3 * 0.42;\n col += blue * r2 * 0.66;\n col += purple * (r2 + r3) * 0.30;\n\n float bloom = exp(-pow(distance(uv, vec2(0.76, 0.40 + 0.035 * sin(t))), 2.0) / 0.050);\n bloom += exp(-pow(distance(uv, vec2(0.71, 0.75 + 0.025 * cos(t))), 2.0) / 0.030);\n col += vec3(0.42, 0.85, 1.0) * bloom * 0.34;\n\n vec2 grid = fract(gl_FragCoord.xy / 7.0) - 0.5;\n float dotShape = smoothstep(0.29, 0.11, length(grid));\n float noise = hash(floor(gl_FragCoord.xy / 7.0));\n float scan = 0.72 + 0.28 * sin((uv.x + uv.y) * 38.0 + time * 1.3);\n float dots = dotShape * (0.48 + 0.52 * noise) * scan;\n\n float micro = hash(gl_FragCoord.xy + time) * 0.035;\n float alpha = clamp((glow * 1.55 + bloom * 0.50) * dots * rightFade, 0.0, 1.0);\n alpha *= 1.0 - centerDark * 0.56;\n\n vec3 base = vec3(0.005, 0.005, 0.005);\n vec3 finalColor = mix(base, col, clamp(alpha * 1.55, 0.0, 1.0));\n finalColor += micro * rightFade;\n\n gl_FragColor = vec4(finalColor, 1.0);\n }\n "; //# sourceMappingURL=ribbonFieldShaders.d.ts.map