164 lines
3.5 KiB
C
164 lines
3.5 KiB
C
/* File generated with Shader Minifier 1.0.3
|
|
* http://www.ctrl-alt-test.fr
|
|
*/
|
|
#ifndef SHADER_CODE_H_
|
|
# define SHADER_CODE_H_
|
|
# define V_Y "v"
|
|
# define V_Z "m"
|
|
|
|
const char *mark_fs = ""
|
|
"varying vec4 v;"
|
|
"varying vec2 m;"
|
|
"vec3 f,z;"
|
|
"float x=6.28319;"
|
|
"vec2 n(vec2 f,float v)"
|
|
"{"
|
|
"return cos(v)*f+sin(v)*vec2(-f.y,f.x);"
|
|
"}"
|
|
"void i(inout vec3 v,float f)"
|
|
"{"
|
|
"float z=mod(atan(v.z,v.x),f)-f*.5;"
|
|
"v.xz=length(v.xz)*vec2(cos(z),sin(z));"
|
|
"}"
|
|
"float i(vec3 v,float f,float z)"
|
|
"{"
|
|
"return length(vec2(length(v.xz)-f,v.y))-z;"
|
|
"}"
|
|
"float s(vec3 v,float z)"
|
|
"{"
|
|
"return length(v)-z;"
|
|
"}"
|
|
"float i(vec3 v)"
|
|
"{"
|
|
"return v.y+.6;"
|
|
"}"
|
|
"float n(vec3 v)"
|
|
"{"
|
|
"return min(s(v+vec3(0,8.,0),8.5),i(v,2.3,.5));"
|
|
"}"
|
|
"float s(vec3 v)"
|
|
"{"
|
|
"float z=max(s(v,6.),v.y);"
|
|
"i(v,x/64.);"
|
|
"v.x=abs(v.x-5.)-2.;"
|
|
"float f=mix(length(v.yz),length(v.xyz),step(0.,v.x));"
|
|
"return min(z,f-.4);"
|
|
"}"
|
|
"float l(vec3 f)"
|
|
"{"
|
|
"return f.y-=4.,f.xz=n(f.xz,v.y*6.),i(f,x/12.),f.yz=n(f.yz,x/4.),min(i(f,2.,.15),s(f,1.5));"
|
|
"}"
|
|
"float h(vec3 v)"
|
|
"{"
|
|
"return min(min(min(i(v),n(v)),s(v)),l(v));"
|
|
"}"
|
|
"int g(vec3 v)"
|
|
"{"
|
|
"float z=1000.;"
|
|
"int f;"
|
|
"if(i(v)<z)"
|
|
"z=i(v),f=0;"
|
|
"if(n(v)<z)"
|
|
"z=n(v),f=1;"
|
|
"if(s(v)<z)"
|
|
"z=s(v),f=2;"
|
|
"if(l(v)<z)"
|
|
"z=l(v),f=3;"
|
|
"return f;"
|
|
"}"
|
|
"vec3 p(vec3 v)"
|
|
"{"
|
|
"vec3 z=vec3(.04,0.,0.),f;"
|
|
"f.x=h(v+z.xyy)-h(v-z.xyy);"
|
|
"f.y=h(v+z.yxy)-h(v-z.yxy);"
|
|
"f.z=h(v+z.yyx)-h(v-z.yyx);"
|
|
"return normalize(f);"
|
|
"}"
|
|
"float e(vec3 v)"
|
|
"{"
|
|
"float z=1.;"
|
|
"for(float f=.2;f<12.;f=f*1.1+.125)"
|
|
"z+=min(h(v+vec3(0.,1.,0.)*f),0.);"
|
|
"return clamp(z,.2,1.);"
|
|
"}"
|
|
"float e(vec3 v,vec3 f,float z,float i)"
|
|
"{"
|
|
"float x,y=sign(z);"
|
|
"for(x=y*.5+.5;i>0.;i--)"
|
|
"x-=(i*z-h(v+f*i*z*y))/exp2(i);"
|
|
"return x;"
|
|
"}"
|
|
"vec3 t(vec3 v)"
|
|
"{"
|
|
"float z=.3+.3*dot(v,vec3(0.,1.,0.));"
|
|
"i(v,x/16.);"
|
|
"v.x=abs(v.x-.2)-.08;"
|
|
"float f=mix(abs(v.z),length(v.xz),step(0.,v.x));"
|
|
"z+=pow(smoothstep(.1,0.,f),15.);"
|
|
"return vec3(z);"
|
|
"}"
|
|
"float c(vec3 v)"
|
|
"{"
|
|
"float z=abs(v.y-.9);"
|
|
"return.4+.3*(1-z);"
|
|
"}"
|
|
"void main()"
|
|
"{"
|
|
"int x=int(v.y);"
|
|
"float y=mod(v.y,1.);"
|
|
"z=vec3(m.xy-.5,1);"
|
|
"f=vec3(-30.-y*5.,3.,-16.+y*24.);"
|
|
"z.xz=n(z.xz,y*-2.5);"
|
|
"if(false)"
|
|
"{"
|
|
"f.x=gl_ModelViewMatrix[0][0];"
|
|
"f.y=gl_ModelViewMatrix[0][1];"
|
|
"f.z=gl_ModelViewMatrix[0][2];"
|
|
"float i=gl_ModelViewMatrix[1][1],s,r;"
|
|
"vec3 l=vec3(m.xy-.5,1);"
|
|
"s=cos(i);"
|
|
"r=sin(i);"
|
|
"z.y=s*l.y-r*l.z;"
|
|
"z.x=l.x;"
|
|
"z.z=r*l.y+s*l.z;"
|
|
"i=gl_ModelViewMatrix[1][0];"
|
|
"l=z;"
|
|
"s=cos(i);"
|
|
"r=sin(i);"
|
|
"z.x=s*l.x+r*l.z;"
|
|
"z.z=-r*l.x+s*l.z;"
|
|
"}"
|
|
"z=normalize(z);"
|
|
"vec3 i=vec3(0.,0.,0.);"
|
|
"float s=1.,l=0.,r=256.,a;"
|
|
"while(s>.1)"
|
|
"{"
|
|
"for(a=1.;l<r&&a>.05;l+=a)"
|
|
"a=h(f+z*l);"
|
|
"if(l<r)"
|
|
"{"
|
|
"f+=z*l;"
|
|
"vec3 o=p(f);"
|
|
"z=reflect(z,o);"
|
|
"l=.1;"
|
|
"vec3 d=vec3(.3,.2,.1);"
|
|
"float u=.125;"
|
|
"int M=g(f);"
|
|
"if(M==1)"
|
|
"d=vec3(.1,.1,.1),u=.8;"
|
|
"if(M==2)"
|
|
"d=vec3(.4,.3,.03),u=.2;"
|
|
"if(M==3)"
|
|
"d=vec3(.7,0.,0.),u=.2;"
|
|
"d*=c(o)*e(f)*e(f,o,.4,10.);"
|
|
"i+=s*d;"
|
|
"s*=u;"
|
|
"}"
|
|
"else"
|
|
" i+=s*t(z),s=0.;"
|
|
"}"
|
|
"gl_FragColor.xyz=i;"
|
|
"}";
|
|
|
|
#endif // SHADER_CODE_H_
|