Files
4k_synthwave/src/shaders/fragment.inl
2025-07-22 22:22:35 +03:00

133 lines
3.3 KiB
C++

// Generated with Shader Minifier 1.5.1 (https://github.com/laurentlb/Shader_Minifier/)
#ifndef FRAGMENT_INL_
# define FRAGMENT_INL_
# define VAR_fft_output "f"
# define VAR_o "i"
# define VAR_shapes "C"
# define VAR_syncs "m"
# define VAR_test "k"
const char *fragment_frag =
"#version 460\n"
"precision mediump float;"
"out vec4 i;"
"const float n=2.*acos(-1.),v=sqrt(5.)*.5+.5;"
"layout(location=0)uniform float m[7];"
"layout(location=8)uniform float f[512];"
"layout(location=600)uniform vec3 C[15];"
"layout(location=700)uniform vec3 k;"
"float l=m[0];"
"vec2 t(vec3 v)"
"{"
"float n=0.,i=1e9,m=length(vec3(v.x+k.y,v.y+k.x,v.z))-k.z-2.;"
"i=min(i,m);"
"if(i==m)"
"n=1.;"
"return vec2(i,n);"
"}"
"vec3 t(vec3 v,vec3 i,inout vec3 n)"
"{"
"float f=0.,r=0.,m=0.;"
"for(int e=0;e<30;e++)"
"{"
"n=v+i*f;"
"vec2 l=t(n);"
"f+=l.x;"
"r=l.y;"
"if(f>1e2)"
"break;"
"if(l.x<.001*f)"
"{"
"m=1.;"
"break;"
"}"
"}"
"if(f>1e2)"
"f=0.;"
"return vec3(f,r,m);"
"}"
"float t(vec3 v,vec3 f,float n)"
"{"
"float i=1.,m=.02;"
"for(int e=0;e<6;e++)"
"{"
"if(m>n)"
"break;"
"float l=t(v+m*f).x;"
"i=min(i,l/(4.*m));"
"m+=clamp(l,.1,.8);"
"if(i<-1.)"
"break;"
"}"
"i=max(i,-1.);"
"return.25*(1.+i)*(1.+i)*(2.-i);"
"}"
"vec3 e(vec3 v)"
"{"
"vec2 i=vec2(.01,0);"
"return normalize(vec3(t(v+i.xyy).x-t(v-i.xyy).x,t(v+i.yxy).x-t(v-i.yxy).x,t(v+i.yyx).x-t(v-i.yyx).x));"
"}"
"vec3 e(vec3 v,vec3 i,vec3 l,vec3 f,vec3 m,float n)"
"{"
"v-=l;"
"float e=length(v);"
"v=normalize(v);"
"float y=3./(1.+.09*e+.032*e*e),r=max(dot(m,v),0.);"
"f=normalize(v-f);"
"vec3 x=vec3(.04);"
"x+=(1.-x)*pow(clamp(1.-max(dot(f,v),0.),0.,1.),5.);"
"e=t(l+m*.01,v,e);"
"return(i*r*y+i*pow(max(dot(m,f),0.),mix(128.,8.,n))*y*x)*e;"
"}"
"vec3 e(vec3 v,vec3 i,vec3 f,float n)"
"{"
"float m=.01;"
"vec3 l=vec3(0);"
"if(n==0.)"
"l=vec3(.8314,.2941,.2941),m=.1;"
"else if(n==1.)"
"l=vec3(.6196,.6118,.6118),m=.7;"
"else if(n==2.)"
"l=vec3(.3255,.4784,.3255),m=.2;"
"else if(n==3.)"
"l=vec3(.2471,.3059,.6314),m=1.;"
"else if(n==4.)"
"l=vec3(.9961,1,.9922),m=.1;"
"else if(n==5.)"
"l=vec3(.9961,1,.9922),m=.3;"
"v=vec3(0)+e(vec3(-10,10,0),vec3(.77,.26,.73),v,f,i,m)+e(vec3(0,10,-5),vec3(.08,.62,.75),v,f,i,m)+e(vec3(0,25,0),vec3(.5137,.1961,.7725),v,f,i,m)+vec3(.08,.62,.75)*clamp(dot(i,normalize(vec3(0,1,-3)*vec3(0,-1,-2))),0.,1.)*.8;"
"return l*max(vec3(0),v);"
"}"
"vec3 e(vec2 v,vec3 i)"
"{"
"i=normalize(vec3(0,-1,10)-i);"
"vec3 m=normalize(cross(vec3(0,1,0),i));"
"return normalize(v.x*m+v.y*normalize(cross(i,m))+i);"
"}"
"vec3 e()"
"{"
"vec3 i;"
"{"
"float v=l*.06;"
"i=vec3(sin(v)*15.,30.+cos(v*.5)*5.,cos(v)*15.);"
"}"
"return i;"
"}"
"vec3 e(vec2 v)"
"{"
"vec3 i=e(v,e()),m=vec3(.102,.2431,.3412),n=vec3(0),l=t(e(),i,n);"
"if(l.x>0.)"
"{"
"vec3 v=e(n);"
"m=e(n,v,i,l.y);"
"}"
"return m;"
"}"
"void main()"
"{"
"vec3 v=e(gl_FragCoord.xy*vec2(.00104166667,.00185185185)-1.);"
"i=vec4(v,1);"
"}";
#endif // FRAGMENT_INL_