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