{"version":3,"file":"ScrollAnimation.bWhDOYB0.mjs","names":["useRef","p"],"sources":["https:/framerusercontent.com/modules/mSLQSVtyhKZySjknxjPk/lEVpOq0CEeENXBqHHOdv/ScrollAnimation.js"],"sourcesContent":["// AboutShaderGradient.tsx — Framer Code Component\n// WebGL2 ASCII shader gradient with scroll parallax + post-processing\n// Dark palette with vortex, glitch, VHS, pixelate, saturation effects\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef}from\"react\";// ————————————————————————————————————————\n// GLSL Sources\n// ————————————————————————————————————————\nconst VS=`#version 300 es\nprecision highp float;\nuniform vec2 u_mouse;\nuniform int u_mouseMode;\nuniform vec2 u_mouseVelocity;\nuniform float u_time;\nout vec2 vUv;\nvoid main() {\n  float x = float((gl_VertexID & 1) << 2);\n  float y = float((gl_VertexID & 2) << 1);\n  vUv = vec2(x * 0.5, y * 0.5);\n  gl_Position = vec4(x - 1.0, y - 1.0, 0.0, 1.0);\n}\n`;const FS=`#version 300 es\nprecision highp float;\nin vec2 vUv;\nout vec4 fragColor;\nuniform float u_time;\nuniform float u_speed;\nuniform vec3 u_colors[12];\nuniform float u_colorPositions[12];\nuniform int u_colorCount;\nuniform float u_direction;\nuniform float u_grain;\nuniform vec2 u_resolution;\nuniform int u_blendMode;\nuniform float u_blendIntensity;\nuniform float u_blendOffset;\nuniform float u_blendRotation;\nuniform float u_blendScale;\nuniform int u_blendAnimRotation;\nuniform int u_blendAnimIntensity;\nuniform int u_blendAnimOffset;\nuniform float u_blendAnimSpeed;\nuniform float u_blendNoiseMask;\nuniform float u_blendNoiseScale;\nuniform float u_blendFalloff;\nuniform int u_blendDualLayer;\nuniform int u_blendMode2;\nuniform float u_blendIntensity2;\nuniform float u_blendOffset2;\nuniform float u_blendRotation2;\nuniform float u_blendScale2;\nuniform float u_fontSize;\nuniform float u_density;\nuniform int u_invert;\nuniform int u_overlay;\nuniform int u_characterSet;\nuniform int u_hdr;\nuniform vec2 u_mouse;\nuniform vec2 u_mouseVelocity;\nuniform int u_mouseMode;\nuniform int u_mousePressed;\nuniform sampler2D u_imageTexture;\nuniform int u_hasImage;\nuniform float u_imageIntensity;\nuniform int u_imageFitMode;\nuniform vec2 u_imageSize;\n\nvec3 mod289_3(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}\nvec2 mod289_2(vec2 x){return x-floor(x*(1.0/289.0))*289.0;}\nvec3 permute(vec3 x){return mod289_3(((x*34.0)+1.0)*x);}\nfloat snoise(vec2 v){\n  const vec4 C=vec4(0.211324865405187,0.366025403784439,-0.577350269189626,0.024390243902439);\n  vec2 i=floor(v+dot(v,C.yy));vec2 x0=v-i+dot(i,C.xx);\n  vec2 i1=(x0.x>x0.y)?vec2(1.0,0.0):vec2(0.0,1.0);\n  vec4 x12=x0.xyxy+C.xxzz;x12.xy-=i1;i=mod289_2(i);\n  vec3 p=permute(permute(i.y+vec3(0.0,i1.y,1.0))+i.x+vec3(0.0,i1.x,1.0));\n  vec3 m=max(0.5-vec3(dot(x0,x0),dot(x12.xy,x12.xy),dot(x12.zw,x12.zw)),0.0);\n  m=m*m;m=m*m;\n  vec3 x_=2.0*fract(p*C.www)-1.0;vec3 h=abs(x_)-0.5;\n  vec3 ox=floor(x_+0.5);vec3 a0=x_-ox;\n  m*=1.79284291400159-0.85373472095314*(a0*a0+h*h);\n  vec3 g;g.x=a0.x*x0.x+h.x*x0.y;g.yz=a0.yz*x12.xz+h.yz*x12.yw;\n  return 130.0*dot(m,g);\n}\nvec3 srgbToLinear(vec3 c){c=clamp(c,0.0,1.0);vec3 lo=c/12.92;vec3 hi=pow((c+0.055)/1.055,vec3(2.4));return mix(lo,hi,step(vec3(0.04045),c));}\nvec3 linearToSrgb(vec3 c){c=max(c,vec3(0.0));vec3 lo=c*12.92;vec3 hi=1.055*pow(c,vec3(1.0/2.4))-0.055;return mix(lo,hi,step(vec3(0.0031308),c));}\nvec3 linearToOklab(vec3 c){float l=0.4122214708*c.r+0.5363325363*c.g+0.0514459929*c.b;float m=0.2119034982*c.r+0.6806995451*c.g+0.1073969566*c.b;float s=0.0883024619*c.r+0.2817188376*c.g+0.6299787005*c.b;float l_=pow(l,1.0/3.0);float m_=pow(m,1.0/3.0);float s_=pow(s,1.0/3.0);return vec3(0.2104542553*l_+0.7936177850*m_-0.0040720468*s_,1.9779984951*l_-2.4285922050*m_+0.4505937099*s_,0.0259040371*l_+0.7827717662*m_-0.8086757660*s_);}\nvec3 oklabToLinear(vec3 lab){float l_=lab.x+0.3963377774*lab.y+0.2158037573*lab.z;float m_=lab.x-0.1055613458*lab.y-0.0638541728*lab.z;float s_=lab.x-0.0894841775*lab.y-1.2914855480*lab.z;float l=l_*l_*l_;float m=m_*m_*m_;float s=s_*s_*s_;return vec3(+4.0767416621*l-3.3077115913*m+0.2309699292*s,-1.2684380046*l+2.6097574011*m-0.3413193965*s,-0.0041960863*l-0.7034186147*m+1.7076147010*s);}\nvec3 acesTonemap(vec3 x){const float a=2.51;const float b=0.03;const float c=2.43;const float d=0.59;const float e=0.14;return clamp((x*(a*x+b))/(x*(c*x+d)+e),0.0,1.0);}\nfloat interleavedGradientNoise(vec2 p){return fract(52.9829189*fract(dot(p,vec2(0.06711056,0.00583715))));}\nconst int COLOR_STOP_CAP=12;\nvec3 mixColors(vec3 colors[COLOR_STOP_CAP],float positions[COLOR_STOP_CAP],int count,float t){\n  if(count<=1)return srgbToLinear(colors[0]);if(t<=positions[0])return srgbToLinear(colors[0]);if(t>=positions[count-1])return srgbToLinear(colors[count-1]);\n  for(int i=0;i<COLOR_STOP_CAP-1;i++){if(i+1>=count)break;if(t>=positions[i]&&t<=positions[i+1]){float range=positions[i+1]-positions[i];float local=(range>0.001)?(t-positions[i])/range:0.0;local=local*local*(3.0-2.0*local);vec3 c0=srgbToLinear(colors[i]);vec3 c1=srgbToLinear(colors[i+1]);vec3 ok0=linearToOklab(c0);vec3 ok1=linearToOklab(c1);return oklabToLinear(mix(ok0,ok1,local));}}\n  return srgbToLinear(colors[count-1]);\n}\nfloat grain(vec2 uv,float time,float intensity){float n=snoise(uv*400.0+time*7.0);return n*intensity;}\nvec3 finalizeColor(vec3 linearColor,vec2 fragCoord,float ditherAmount){vec3 mapped=acesTonemap(max(linearColor,vec3(0.0)));vec3 srgb=linearToSrgb(mapped);float dither=(interleavedGradientNoise(fragCoord)-0.5)/255.0;srgb+=dither*ditherAmount;return clamp(srgb,0.0,1.0);}\nvec4 outputColor(vec3 linearColor,vec2 fragCoord,float ditherAmount){if(u_hdr==1){return vec4(max(linearColor,vec3(0.0)),1.0);}return vec4(finalizeColor(linearColor,fragCoord,ditherAmount),1.0);}\nfloat sg_luminance(vec3 c){return dot(c,vec3(0.2126,0.7152,0.0722));}\nvec3 rgb2hsl(vec3 c){float mx=max(c.r,max(c.g,c.b));float mn=min(c.r,min(c.g,c.b));float l=(mx+mn)*0.5;if(mx==mn)return vec3(0.0,0.0,l);float d=mx-mn;float s=l>0.5?d/(2.0-mx-mn):d/(mx+mn);float h;if(mx==c.r)h=(c.g-c.b)/d+(c.g<c.b?6.0:0.0);else if(mx==c.g)h=(c.b-c.r)/d+2.0;else h=(c.r-c.g)/d+4.0;h/=6.0;return vec3(h,s,l);}\nfloat hue2rgb(float p,float q,float t){if(t<0.0)t+=1.0;if(t>1.0)t-=1.0;if(t<1.0/6.0)return p+(q-p)*6.0*t;if(t<1.0/2.0)return q;if(t<2.0/3.0)return p+(q-p)*(2.0/3.0-t)*6.0;return p;}\nvec3 hsl2rgb(vec3 hsl){if(hsl.y==0.0)return vec3(hsl.z);float q=hsl.z<0.5?hsl.z*(1.0+hsl.y):hsl.z+hsl.y-hsl.z*hsl.y;float p=2.0*hsl.z-q;return vec3(hue2rgb(p,q,hsl.x+1.0/3.0),hue2rgb(p,q,hsl.x),hue2rgb(p,q,hsl.x-1.0/3.0));}\nvec3 blendOverlay(vec3 base,vec3 blend){return vec3(base.r<0.5?2.0*base.r*blend.r:1.0-2.0*(1.0-base.r)*(1.0-blend.r),base.g<0.5?2.0*base.g*blend.g:1.0-2.0*(1.0-base.g)*(1.0-blend.g),base.b<0.5?2.0*base.b*blend.b:1.0-2.0*(1.0-base.b)*(1.0-blend.b));}\nvec3 blendSoftLight(vec3 base,vec3 blend){return vec3(blend.r<0.5?base.r-(1.0-2.0*blend.r)*base.r*(1.0-base.r):base.r+(2.0*blend.r-1.0)*(sqrt(base.r)-base.r),blend.g<0.5?base.g-(1.0-2.0*blend.g)*base.g*(1.0-base.g):base.g+(2.0*blend.g-1.0)*(sqrt(base.g)-base.g),blend.b<0.5?base.b-(1.0-2.0*blend.b)*base.b*(1.0-base.b):base.b+(2.0*blend.b-1.0)*(sqrt(base.b)-base.b));}\nvec3 applyBlendMode(int mode,vec3 base,vec3 blend,float intensity){vec3 result;if(mode==1)result=base*blend;else if(mode==2)result=1.0-(1.0-base)*(1.0-blend);else if(mode==3)result=blendOverlay(base,blend);else if(mode==4)result=blendSoftLight(base,blend);else if(mode==5)result=blendOverlay(blend,base);else if(mode==6)result=vec3(blend.r>=1.0?1.0:min(1.0,base.r/(1.0-blend.r)),blend.g>=1.0?1.0:min(1.0,base.g/(1.0-blend.g)),blend.b>=1.0?1.0:min(1.0,base.b/(1.0-blend.b)));else if(mode==7)result=vec3(blend.r<=0.0?0.0:max(0.0,1.0-(1.0-base.r)/blend.r),blend.g<=0.0?0.0:max(0.0,1.0-(1.0-base.g)/blend.g),blend.b<=0.0?0.0:max(0.0,1.0-(1.0-base.b)/blend.b));else if(mode==8)result=abs(base-blend);else if(mode==9)result=base+blend-2.0*base*blend;else if(mode==10)result=min(base,blend);else if(mode==11)result=max(base,blend);else if(mode==12){vec3 bH=rgb2hsl(base);vec3 lH=rgb2hsl(blend);result=hsl2rgb(vec3(lH.x,bH.y,bH.z));}else if(mode==13){vec3 bH=rgb2hsl(base);vec3 lH=rgb2hsl(blend);result=hsl2rgb(vec3(bH.x,lH.y,bH.z));}else if(mode==14){vec3 bH=rgb2hsl(base);vec3 lH=rgb2hsl(blend);result=hsl2rgb(vec3(lH.x,lH.y,bH.z));}else if(mode==15){vec3 bH=rgb2hsl(base);vec3 lH=rgb2hsl(blend);result=hsl2rgb(vec3(bH.x,bH.y,lH.z));}else result=base;return mix(base,result,intensity);}\nfloat blendLayerT(vec2 uv,float baseT,vec2 resolution,float direction,float offset,float rotation,float blendScale){vec2 center=vec2(0.5);vec2 transformed=uv-center;float rad=rotation*3.14159265/180.0;float cosR=cos(rad);float sinR=sin(rad);transformed=vec2(transformed.x*cosR-transformed.y*sinR,transformed.x*sinR+transformed.y*cosR);transformed/=max(blendScale,0.001);transformed+=center;float dirRad=direction*3.14159265/180.0;transformed+=offset*vec2(cos(dirRad),sin(dirRad));float aspect=resolution.x/max(resolution.y,1.0);vec2 adj=vec2(transformed.x*aspect,transformed.y);float t=dot(adj,vec2(cos(dirRad),sin(dirRad)));t=t*0.5+0.5;return clamp(t,0.0,1.0);}\nfloat animatedBlendRotation(float baseRotation,float time,float speed){if(speed<=0.0)return baseRotation;return baseRotation+time*speed*60.0;}\nfloat animatedBlendIntensity(float baseIntensity,float time,float speed){if(speed<=0.0)return baseIntensity;float pulse=sin(time*speed*2.0)*0.5+0.5;return baseIntensity*pulse;}\nfloat animatedBlendOffset(float baseOffset,float time,float speed){if(speed<=0.0)return baseOffset;return baseOffset+sin(time*speed*0.5)*0.3;}\nfloat noiseModulatedIntensity(float baseIntensity,vec2 uv,float time,float noiseMask,float noiseScale){if(noiseMask<=0.0)return baseIntensity;float n=snoise(uv*noiseScale+time*0.2)*0.5+0.5;return baseIntensity*mix(1.0,n,noiseMask);}\nfloat applyBlendFalloff(float intensity,float t,float falloff){if(abs(falloff-0.5)<0.01)return intensity;float power=mix(0.25,4.0,falloff);float shaped=pow(clamp(t,0.001,1.0),power);return intensity*shaped;}\nvec2 applyMouseWarp(vec2 uv,float aspect){\n  if(u_mouseMode==0)return uv;\n  vec2 mouseUv=u_mouse*0.5+0.5;vec2 delta=uv-mouseUv;vec2 aspectDelta=vec2(delta.x*aspect,delta.y);float dist=length(aspectDelta);\n  if(u_mouseMode==1){float strength=0.35*exp(-dist*dist*3.0);return uv+(mouseUv-uv)*strength;}\n  if(u_mouseMode==2){float strength=0.3*exp(-dist*dist*3.5);vec2 pushDir=normalize(aspectDelta+vec2(0.0001));pushDir.x/=aspect;return uv+pushDir*strength;}\n  if(u_mouseMode==3){float radius=0.45;float nd=min(dist/radius,1.0);float factor=mix(0.4,1.0,nd*nd);vec2 distorted=mouseUv+delta*factor;float edge=smoothstep(1.0,0.7,nd);return mix(uv,distorted,edge);}\n  if(u_mouseMode==4){float ripple=sin(dist*30.0-u_time*5.0)*0.02;ripple*=exp(-dist*2.5);vec2 pushDir=normalize(aspectDelta+vec2(0.0001));pushDir.x/=aspect;return uv+pushDir*ripple;}\n  if(u_mouseMode==5){float swirlAngle=(0.8+u_time*0.8)*exp(-dist*2.0);float c=cos(swirlAngle);float s=sin(swirlAngle);vec2 rotated=vec2(aspectDelta.x*c-aspectDelta.y*s,aspectDelta.x*s+aspectDelta.y*c);rotated.x/=aspect;return mouseUv+rotated;}\n  return uv;\n}\nfloat getCharPixel(int charIndex,vec2 pos){\n  int patterns[10]=int[10](0,0x4000,0x4010040,0xA8000,0xA80A8,0x4A904,0x4AE04,0xEA5AE,0x155D57,0x1F7FBE);\n  int ix=int(pos.x);int iy=int(pos.y);if(ix<0||ix>=5||iy<0||iy>=5)return 0.0;\n  int idx=min(charIndex,9);int bit=iy*5+ix;return float((patterns[idx]>>bit)&1);\n}\nvoid main(){\n  vec2 uv=vUv;float time=u_time*u_speed;float aspect=u_resolution.x/max(u_resolution.y,1.0);\n  uv=applyMouseWarp(uv,aspect);\n  float angle=radians(u_direction);vec2 dir=vec2(cos(angle),sin(angle));float t=dot(uv-0.5,dir)+0.5;\n  t+=snoise(uv*3.0+time*0.15)*0.15;t=clamp(t,0.0,1.0);\n  vec3 baseColor=mixColors(u_colors,u_colorPositions,u_colorCount,t);\n  float cellSize=u_fontSize*u_density;vec2 cell=floor(gl_FragCoord.xy/cellSize);vec2 cellUV=fract(gl_FragCoord.xy/cellSize)*5.0;\n  vec2 cellCenter=(cell+0.5)*cellSize/u_resolution;float cellT=dot(cellCenter-0.5,dir)+0.5;cellT+=snoise(cellCenter*3.0+time*0.15)*0.15;cellT=clamp(cellT,0.0,1.0);\n  vec3 cellColor=mixColors(u_colors,u_colorPositions,u_colorCount,cellT);float lum=sg_luminance(cellColor);\n  if(u_invert==1)lum=1.0-lum;\n  int charIdx=int(lum*9.0);\n  if(u_characterSet==1){charIdx=int(lum*4.0);charIdx=charIdx*2;}\n  if(u_characterSet==2){charIdx=lum>0.5?9:(lum>0.2?4:0);}\n  float pixel=getCharPixel(charIdx,cellUV);\n  vec3 color;\n  if(u_overlay==1){color=mix(baseColor*0.3,baseColor,pixel);}else{color=cellColor*pixel;}\n  color+=grain(uv,time,u_grain);\n  if(u_blendMode>0){float bRotation=u_blendAnimRotation>0?animatedBlendRotation(u_blendRotation,time,u_blendAnimSpeed):u_blendRotation;float bOffset=u_blendAnimOffset>0?animatedBlendOffset(u_blendOffset,time,u_blendAnimSpeed):u_blendOffset;float bIntensity=u_blendAnimIntensity>0?animatedBlendIntensity(u_blendIntensity,time,u_blendAnimSpeed):u_blendIntensity;bIntensity=noiseModulatedIntensity(bIntensity,uv,time,u_blendNoiseMask,u_blendNoiseScale);bIntensity=applyBlendFalloff(bIntensity,t,u_blendFalloff);float tB=blendLayerT(uv,t,u_resolution,u_direction,bOffset,bRotation,u_blendScale);vec3 blendCol=mixColors(u_colors,u_colorPositions,u_colorCount,tB);color=applyBlendMode(u_blendMode,color,blendCol,bIntensity);if(u_blendDualLayer>0&&u_blendMode2>0){float tB2=blendLayerT(uv,t,u_resolution,u_direction,u_blendOffset2,u_blendRotation2,u_blendScale2);vec3 blendCol2=mixColors(u_colors,u_colorPositions,u_colorCount,tB2);color=applyBlendMode(u_blendMode2,color,blendCol2,u_blendIntensity2);}}\n  fragColor=outputColor(color,gl_FragCoord.xy,1.0);\n}\n`;const EFFECT_VS=`#version 300 es\nprecision highp float;\nout vec2 v_uv;\nvoid main(){float x=float((gl_VertexID&1)<<2);float y=float((gl_VertexID&2)<<1);v_uv=vec2(x*0.5,y*0.5);gl_Position=vec4(x-1.0,y-1.0,0.0,1.0);}\n`;const EFFECT_PIXELATE_FS=`#version 300 es\nprecision highp float;\nin vec2 v_uv;uniform sampler2D u_texture;uniform vec2 u_resolution;uniform float u_time;uniform float u_intensity;uniform int u_pixelateShape;uniform float u_pixelateSmoothing;out vec4 fragColor;\nvoid main(){float pixelSize=max(2.0,u_intensity*30.0);vec2 uv=v_uv*u_resolution;vec2 cell;\nif(u_pixelateShape==1){float h=pixelSize;float r=h*0.8660254;vec2 rep=vec2(r*2.0,h*1.5);vec2 p=uv;vec2 a=mod(p,rep)-rep*0.5;vec2 b=mod(p-vec2(r,h*0.75),rep)-rep*0.5;cell=(dot(a,a)<dot(b,b))?(floor(p/rep)+0.5)*rep:(floor((p-vec2(r,h*0.75))/rep)+0.5)*rep+vec2(r,h*0.75);}\nelse if(u_pixelateShape==2){float h=pixelSize;vec2 g=uv/h;vec2 f=fract(g);vec2 i=floor(g);bool flip=mod(i.x+i.y,2.0)==0.0;bool upper=flip?(f.x+f.y<1.0):(f.x>f.y);cell=(upper?i+vec2(0.33,0.33):i+vec2(0.66,0.66))*h;}\nelse{cell=floor(uv/pixelSize)*pixelSize+pixelSize*0.5;}\nvec2 cellUv=cell/u_resolution;vec4 cellCol=texture(u_texture,cellUv);float s=clamp(u_pixelateSmoothing,0.0,1.0);vec4 orig=texture(u_texture,v_uv);fragColor=mix(cellCol,orig,s);}\n`;const EFFECT_GLITCH_FS=`#version 300 es\nprecision highp float;\nin vec2 v_uv;uniform sampler2D u_texture;uniform vec2 u_resolution;uniform float u_time;uniform float u_intensity;uniform float u_glitchBlockSize;uniform float u_glitchRgbShift;uniform float u_glitchScanlineJitter;out vec4 fragColor;\nfloat rand(vec2 co){return fract(sin(dot(co,vec2(12.9898,78.233)))*43758.5453);}\nvoid main(){vec2 uv=v_uv;float t=floor(u_time*8.0);float blockCount=max(4.0,u_glitchBlockSize*40.0);float block=floor(uv.y*blockCount);float shift=(rand(vec2(t,block))-0.5)*0.1*u_intensity;if(rand(vec2(t*0.5,block))>0.7){uv.x+=shift;}uv.y+=(rand(vec2(t,uv.x*10.0))-0.5)*u_glitchScanlineJitter*0.01;float rgbOff=u_glitchRgbShift*0.01*u_intensity;float r=texture(u_texture,uv+vec2(rgbOff,0.0)).r;float g=texture(u_texture,uv).g;float b=texture(u_texture,uv-vec2(rgbOff,0.0)).b;fragColor=vec4(r,g,b,1.0);}\n`;const EFFECT_VORTEX_FS=`#version 300 es\nprecision highp float;\nin vec2 v_uv;uniform sampler2D u_texture;uniform vec2 u_resolution;uniform float u_time;uniform float u_intensity;uniform float u_vortexCenterX;uniform float u_vortexCenterY;uniform float u_vortexRadius;out vec4 fragColor;\nvoid main(){vec2 center=vec2(u_vortexCenterX,u_vortexCenterY);float aspect=u_resolution.x/max(u_resolution.y,1.0);vec2 p=v_uv-center;p.x*=aspect;float r=length(p);float rad=max(u_vortexRadius,0.01);float t=smoothstep(rad,0.0,r);float angle=atan(p.y,p.x);angle+=t*u_intensity*5.0*sin(u_time*0.5);vec2 rotated=vec2(cos(angle),sin(angle))*r;rotated.x/=aspect;vec2 uv=rotated+center;fragColor=texture(u_texture,uv);}\n`;const EFFECT_VHS_FS=`#version 300 es\nprecision highp float;\nin vec2 v_uv;uniform sampler2D u_texture;uniform vec2 u_resolution;uniform float u_time;uniform float u_intensity;uniform float u_vhsTrackingError;uniform float u_vhsNoiseAmount;uniform float u_vhsColorBleed;out vec4 fragColor;\nfloat rand(vec2 co){return fract(sin(dot(co,vec2(12.9898,78.233)))*43758.5453);}\nvoid main(){vec2 uv=v_uv;uv.x+=sin(uv.y*300.0+u_time*5.0)*0.002*u_intensity;float tracking=sin(u_time*2.0+uv.y*50.0)*u_vhsTrackingError*0.01*u_intensity;uv.x+=tracking;vec4 col=texture(u_texture,uv);float bleedOff=u_vhsColorBleed*0.005*u_intensity;if(bleedOff>0.0001){float rBleed=texture(u_texture,uv+vec2(bleedOff,0.0)).r;float bBleed=texture(u_texture,uv-vec2(bleedOff*0.7,0.0)).b;col.r=mix(col.r,rBleed,0.6);col.b=mix(col.b,bBleed,0.6);}float scan=sin(uv.y*u_resolution.y*1.5)*0.04*u_intensity;col.rgb-=scan;float noise=(rand(uv+u_time)-0.5)*u_vhsNoiseAmount*0.2*u_intensity;col.rgb+=noise;fragColor=col;}\n`;const EFFECT_SATURATION_FS=`#version 300 es\nprecision highp float;\nin vec2 v_uv;uniform sampler2D u_texture;uniform vec2 u_resolution;uniform float u_time;uniform float u_intensity;uniform float u_saturationAmount;out vec4 fragColor;\nvoid main(){vec4 col=texture(u_texture,v_uv);float lum=dot(col.rgb,vec3(0.299,0.587,0.114));float sat=1.0+u_saturationAmount*u_intensity;vec3 adjusted=mix(vec3(lum),col.rgb,sat);fragColor=vec4(clamp(adjusted,0.0,1.0),col.a);}\n`;const TONEMAP_FS=`#version 300 es\nprecision highp float;\nin vec2 v_uv;uniform sampler2D u_texture;uniform vec2 u_resolution;uniform int u_tonemapOperator;out vec4 fragColor;\nvec3 acesTonemap(vec3 x){const float a=2.51;const float b=0.03;const float c=2.43;const float d=0.59;const float e=0.14;return clamp((x*(a*x+b))/(x*(c*x+d)+e),0.0,1.0);}\nvec3 linearToSrgb(vec3 c){c=max(c,vec3(0.0));vec3 lo=c*12.92;vec3 hi=1.055*pow(c,vec3(1.0/2.4))-0.055;return mix(lo,hi,step(vec3(0.0031308),c));}\nfloat interleavedGradientNoise(vec2 p){return fract(52.9829189*fract(dot(p,vec2(0.06711056,0.00583715))));}\nvoid main(){vec3 hdr=max(texture(u_texture,v_uv).rgb,vec3(0.0));vec3 mapped=acesTonemap(hdr);vec3 srgb=linearToSrgb(mapped);float dither=(interleavedGradientNoise(gl_FragCoord.xy)-0.5)/255.0;srgb+=dither;fragColor=vec4(clamp(srgb,0.0,1.0),1.0);}\n`;// ————————————————————————————————————————\n// WebGL Helpers\n// ————————————————————————————————————————\nfunction compileShader(gl,type,src){const s=gl.createShader(type);gl.shaderSource(s,src);gl.compileShader(s);if(!gl.getShaderParameter(s,gl.COMPILE_STATUS)){console.error(\"Shader compile error:\",gl.getShaderInfoLog(s));}return s;}function linkProgram(gl,vsSrc,fsSrc){const vs=compileShader(gl,gl.VERTEX_SHADER,vsSrc);const fs=compileShader(gl,gl.FRAGMENT_SHADER,fsSrc);const prog=gl.createProgram();gl.attachShader(prog,vs);gl.attachShader(prog,fs);gl.linkProgram(prog);if(!gl.getProgramParameter(prog,gl.LINK_STATUS)){console.error(\"Program link error:\",gl.getProgramInfoLog(prog));}return prog;}function createFbo(gl,w,h){const ext=gl.getExtension(\"EXT_color_buffer_float\");const internalFmt=ext?gl.RGBA16F:gl.RGBA8;const type=ext?gl.HALF_FLOAT:gl.UNSIGNED_BYTE;const tex=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,tex);gl.texImage2D(gl.TEXTURE_2D,0,internalFmt,w,h,0,gl.RGBA,type,null);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);const fb=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fb);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,tex,0);gl.bindFramebuffer(gl.FRAMEBUFFER,null);return{fb,tex};}export default function AboutShaderGradient({speed=.35,animated=false,mouseMode=1,fontSize=8,density=1,direction=264,parallaxAmount=40,pixelateIntensity=.11,pixelateSmoothing=.62,glitchIntensity=.5,vortexIntensity=.09,vortexCenterX=.08,vortexCenterY=.13,vortexRadius=1.5,vhsIntensity=.21,saturationIntensity=.41,style}){const canvasRef=useRef(null);const rafRef=useRef(0);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const gl=canvas.getContext(\"webgl2\");if(!gl)return;let fbos=[];function rebuildFbos(w,h){fbos.forEach(fbo=>{gl.deleteFramebuffer(fbo.fb);gl.deleteTexture(fbo.tex);});fbos=[];const a=createFbo(gl,w,h);const b=createFbo(gl,w,h);if(a&&b)fbos=[a,b];}const program=linkProgram(gl,VS,FS);gl.useProgram(program);// Static uniforms — dark palette from huegrid config\ngl.uniform1f(gl.getUniformLocation(program,\"u_speed\"),speed);gl.uniform1f(gl.getUniformLocation(program,\"u_direction\"),direction);gl.uniform1f(gl.getUniformLocation(program,\"u_grain\"),0);gl.uniform3fv(gl.getUniformLocation(program,\"u_colors\"),[.0314,.0392,.0353,.0431,.1686,.0314,.1961,.2078,.2078,.6196,.5882,.949,.6078,.9725,.4392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);gl.uniform1fv(gl.getUniformLocation(program,\"u_colorPositions\"),[0,.2565,.5,.75,.9856,0,0,0,0,0,0,0]);gl.uniform1i(gl.getUniformLocation(program,\"u_colorCount\"),5);gl.uniform1i(gl.getUniformLocation(program,\"u_hdr\"),1);gl.uniform1i(gl.getUniformLocation(program,\"u_mouseMode\"),mouseMode);gl.uniform1f(gl.getUniformLocation(program,\"u_fontSize\"),fontSize);gl.uniform1f(gl.getUniformLocation(program,\"u_density\"),density);gl.uniform1i(gl.getUniformLocation(program,\"u_invert\"),0);gl.uniform1i(gl.getUniformLocation(program,\"u_overlay\"),0);gl.uniform1i(gl.getUniformLocation(program,\"u_characterSet\"),0);// No blend mode on this variant\ngl.uniform1i(gl.getUniformLocation(program,\"u_blendMode\"),0);const tLoc=gl.getUniformLocation(program,\"u_time\");const rLoc=gl.getUniformLocation(program,\"u_resolution\");// Effect pipeline — 5 passes: pixelate → glitch → vortex → VHS → saturation\nconst effectPasses=[];effectPasses.push({program:linkProgram(gl,EFFECT_VS,EFFECT_PIXELATE_FS),intensity:pixelateIntensity,params:[{name:\"u_pixelateShape\",value:2,isInt:true},{name:\"u_pixelateSmoothing\",value:pixelateSmoothing,isInt:false}]});effectPasses.push({program:linkProgram(gl,EFFECT_VS,EFFECT_GLITCH_FS),intensity:glitchIntensity,params:[{name:\"u_glitchBlockSize\",value:10,isInt:false},{name:\"u_glitchRgbShift\",value:.5,isInt:false},{name:\"u_glitchScanlineJitter\",value:.15,isInt:false}]});effectPasses.push({program:linkProgram(gl,EFFECT_VS,EFFECT_VORTEX_FS),intensity:vortexIntensity,params:[{name:\"u_vortexCenterX\",value:vortexCenterX,isInt:false},{name:\"u_vortexCenterY\",value:vortexCenterY,isInt:false},{name:\"u_vortexRadius\",value:vortexRadius,isInt:false}]});effectPasses.push({program:linkProgram(gl,EFFECT_VS,EFFECT_VHS_FS),intensity:vhsIntensity,params:[{name:\"u_vhsTrackingError\",value:.17,isInt:false},{name:\"u_vhsNoiseAmount\",value:.15,isInt:false},{name:\"u_vhsColorBleed\",value:.51,isInt:false}]});effectPasses.push({program:linkProgram(gl,EFFECT_VS,EFFECT_SATURATION_FS),intensity:saturationIntensity,params:[{name:\"u_saturationAmount\",value:1,isInt:false}]});const tonemapProgram=linkProgram(gl,EFFECT_VS,TONEMAP_FS);// Resize\nfunction resize(){const dpr=Math.min(devicePixelRatio,2);canvas.width=canvas.clientWidth*dpr;canvas.height=canvas.clientHeight*dpr;gl.viewport(0,0,canvas.width,canvas.height);rebuildFbos(canvas.width,canvas.height);}window.addEventListener(\"resize\",resize);resize();// Mouse tracking\nconst mouseLoc=gl.getUniformLocation(program,\"u_mouse\");const mouseVelLoc=gl.getUniformLocation(program,\"u_mouseVelocity\");let mx=0,my=0,mtx=0,mty=0,mvx=0,mvy=0;const onMouseMove=e=>{const rect=canvas.getBoundingClientRect();mtx=(e.clientX-rect.left)/rect.width*2-1;mty=(e.clientY-rect.top)/rect.height*2-1;};const onMouseLeave=()=>{mtx=0;mty=0;};canvas.addEventListener(\"mousemove\",onMouseMove);canvas.addEventListener(\"mouseleave\",onMouseLeave);function updateMouse(){const prevX=mx,prevY=my;mx+=(mtx-mx)*.1;my+=(mty-my)*.1;mvx+=(mx-prevX-mvx)*.15;mvy+=(my-prevY-mvy)*.15;}// Scroll parallax tracking\nlet scrollProg=0,scrollVel=0,lastScrollY=0;let smoothProg=0;const onScroll=()=>{const rect=canvas.getBoundingClientRect();const vh=window.innerHeight;scrollProg=Math.max(0,Math.min(1,1-(rect.top+rect.height)/(vh+rect.height)));scrollVel=Math.abs(window.scrollY-lastScrollY)/16;lastScrollY=window.scrollY;};window.addEventListener(\"scroll\",onScroll,{passive:true});onScroll();function updateScroll(){smoothProg+=(scrollProg-smoothProg)*.1;const yOffset=(smoothProg-.5)*-parallaxAmount;canvas.style.transform=`translateY(${yOffset}px)`;}// Draw loop\nconst start=performance.now();function draw(){updateMouse();if(mouseLoc)gl.uniform2f(mouseLoc,mx,my);if(mouseVelLoc)gl.uniform2f(mouseVelLoc,mvx,mvy);updateScroll();const t=animated?(performance.now()-start)/1e3:0;const w=canvas.width;const h=canvas.height;// 1. Render gradient to FBO A\nif(fbos.length>=2){gl.bindFramebuffer(gl.FRAMEBUFFER,fbos[0].fb);}gl.viewport(0,0,w,h);gl.useProgram(program);gl.uniform1f(tLoc,t);if(rLoc)gl.uniform2f(rLoc,w,h);gl.drawArrays(gl.TRIANGLES,0,3);if(fbos.length>=2){// 2. Effect passes (ping-pong)\nlet readIdx=0;let writeIdx=1;for(let i=0;i<effectPasses.length;i++){const pass=effectPasses[i];gl.bindFramebuffer(gl.FRAMEBUFFER,fbos[writeIdx].fb);gl.useProgram(pass.program);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,fbos[readIdx].tex);const uTex=gl.getUniformLocation(pass.program,\"u_texture\");if(uTex)gl.uniform1i(uTex,0);const uRes=gl.getUniformLocation(pass.program,\"u_resolution\");if(uRes)gl.uniform2f(uRes,w,h);const uTime=gl.getUniformLocation(pass.program,\"u_time\");if(uTime)gl.uniform1f(uTime,t);const uInt=gl.getUniformLocation(pass.program,\"u_intensity\");if(uInt)gl.uniform1f(uInt,pass.intensity);for(const pm of pass.params){const loc=gl.getUniformLocation(pass.program,pm.name);if(loc){if(pm.isInt)gl.uniform1i(loc,pm.value);else gl.uniform1f(loc,pm.value);}}gl.viewport(0,0,w,h);gl.drawArrays(gl.TRIANGLES,0,3);const tmp=readIdx;readIdx=writeIdx;writeIdx=tmp;}// 3. Tonemap to screen\ngl.bindFramebuffer(gl.FRAMEBUFFER,null);gl.useProgram(tonemapProgram);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,fbos[readIdx].tex);const tmTex=gl.getUniformLocation(tonemapProgram,\"u_texture\");if(tmTex)gl.uniform1i(tmTex,0);const tmRes=gl.getUniformLocation(tonemapProgram,\"u_resolution\");if(tmRes)gl.uniform2f(tmRes,w,h);const tmOp=gl.getUniformLocation(tonemapProgram,\"u_tonemapOperator\");if(tmOp)gl.uniform1i(tmOp,0);gl.viewport(0,0,w,h);gl.drawArrays(gl.TRIANGLES,0,3);}rafRef.current=requestAnimationFrame(draw);}draw();return()=>{cancelAnimationFrame(rafRef.current);window.removeEventListener(\"resize\",resize);window.removeEventListener(\"scroll\",onScroll);canvas.removeEventListener(\"mousemove\",onMouseMove);canvas.removeEventListener(\"mouseleave\",onMouseLeave);effectPasses.forEach(p=>gl.deleteProgram(p.program));gl.deleteProgram(tonemapProgram);gl.deleteProgram(program);fbos.forEach(fbo=>{gl.deleteFramebuffer(fbo.fb);gl.deleteTexture(fbo.tex);});};},[speed,animated,mouseMode,fontSize,density,direction,parallaxAmount,pixelateIntensity,pixelateSmoothing,glitchIntensity,vortexIntensity,vortexCenterX,vortexCenterY,vortexRadius,vhsIntensity,saturationIntensity]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",willChange:\"transform\",...style}});}addPropertyControls(AboutShaderGradient,{speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.35,min:0,max:3,step:.05},animated:{type:ControlType.Boolean,title:\"Animated\",defaultValue:false},mouseMode:{type:ControlType.Enum,title:\"Mouse Mode\",defaultValue:1,options:[0,1,2,3,4,5],optionTitles:[\"None\",\"Follow\",\"Repel\",\"Distort\",\"Pulse\",\"Orbit\"]},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:8,min:4,max:32,step:1},density:{type:ControlType.Number,title:\"Density\",defaultValue:1,min:.5,max:5,step:.1},direction:{type:ControlType.Number,title:\"Direction\",defaultValue:264,min:0,max:360,step:1},parallaxAmount:{type:ControlType.Number,title:\"Parallax\",defaultValue:40,min:0,max:120,step:5},pixelateIntensity:{type:ControlType.Number,title:\"Pixelate\",defaultValue:.11,min:0,max:1,step:.01},pixelateSmoothing:{type:ControlType.Number,title:\"Pixel Smooth\",defaultValue:.62,min:0,max:1,step:.01},glitchIntensity:{type:ControlType.Number,title:\"Glitch\",defaultValue:.5,min:0,max:1,step:.01},vortexIntensity:{type:ControlType.Number,title:\"Vortex\",defaultValue:.09,min:0,max:1,step:.01},vortexCenterX:{type:ControlType.Number,title:\"Vortex X\",defaultValue:.08,min:0,max:1,step:.01},vortexCenterY:{type:ControlType.Number,title:\"Vortex Y\",defaultValue:.13,min:0,max:1,step:.01},vortexRadius:{type:ControlType.Number,title:\"Vortex Radius\",defaultValue:1.5,min:.1,max:3,step:.1},vhsIntensity:{type:ControlType.Number,title:\"VHS\",defaultValue:.21,min:0,max:1,step:.01},saturationIntensity:{type:ControlType.Number,title:\"Saturation\",defaultValue:.41,min:0,max:1,step:.01}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AboutShaderGradient\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollAnimation.map"],"mappings":"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"}