port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,538 @@
/* File generated with Shader Minifier 1.1.3
* http://www.ctrl-alt-test.fr
*/
#ifndef SHADER_H_
# define SHADER_H_
# define VAR_PI "x"
# define VAR_BACKBUFFER "i"
# define VAR_CLAMPSAMPLETYPE "s"
# define VAR_CMPSAMPLER "l"
# define VAR_SAMPLETYPE "t"
# define VAR_SHADERTEXTURE "f"
# define VAR_SHADOWTEXTURE "o"
# define VAR_TERRAINDIFFUSETEXTURE "c"
const char *Shader_hlsl =
"cbuffer _0:register(b0){float _t:TIME;uint _sh:SHADER;uint _sy:HEIGHT;float _a:ASPET;};struct _2{float3 o:POSITION;float2 tc:TEXCOORD0;};struct _3{float4 o:SV_POSITION;float4 c:COLOR;sample float2 tc:TEXCOORD0;float3 n:TEXCOORD1;};struct _4{float e[4]:SV_TessFactor;float i[2]:SV_InsideTessFactor;};struct _5{float3 o:POSITION;float2 tc:TEXCOORD0;float4 c:COLOR;float4 _t:TRANSLATION;float4 _r:ROTATION;float4 _s:SCALE;};struct _6{float4 _t:TRANSLATION;float4 _r:ROTATION;float4 _s:SCALE;float4 tc:TEXCOORD0;};struct __1{float4 _d:_dS;float4 _c:_cS;float4x4 _v:_vS;float4x4 _p:_pS;float4x4 _lvp:_lvpS;float4 _f:_fS;float4 _r1:_lS;float4 _r2:_gS;float4 _r3:_nS;float4 _l:lS;};cbuffer _1:register(b1){__1 _c;};Texture2D f:register(t0),c:register(t1),o:register(t2);"
"Texture2DMS<float4,4> i:register(t3);"
"SamplerState t:register(s0),s:register(s2);"
"SamplerComparisonState l:register(s1);"
"static const float x=3.14159;"
"float4 p(float4 f)"
"{"
"return f/sqrt(dot(f,f));"
"}"
"float4 p(float4 f,float4 c)"
"{"
"return float4(cross(f.xyz,c.xyz)+f.w*c.xyz+c.w*f.xyz,f.w*c.w-dot(f.xyz,c.xyz));"
"}"
"float4 n(float4 c)"
"{"
"return float4(-c.xyz,c.w);"
"}"
"float4 n(float3 f,float x)"
"{"
"return float4(f*sin(x/2),cos(x/2));"
"}"
"float d(float2 f)"
"{"
"return frac(sin(dot(f,float2(12.9898,78.233)))*43758.5);"
"}"
"float3 m(float2 f)"
"{"
"float2 c=floor(f),o=f-c,s=30*o*o*(o*(o-2)+1);"
"o=o*o*o*(o*(o*6-15)+10);"
"float l=d(c+float2(0,0)),m=d(c+float2(1,0)),n=d(c+float2(0,1)),r=d(c+float2(1,1)),t=m-l,y=n-l,i=l-m-n+r;"
"return float3(l+t*o.x+y*o.y+i*o.x*o.y,s*float2(t+i*o.y,y+i*o.x));"
"}"
"float3 d(float2 f,int c,float x,float l)"
"{"
"float o=0.,i=.5;"
"float2 y=float2(0,0);"
"for(int r=0;r<c;r++)"
"{"
"float3 s=m(f);"
"y+=s.yz;"
"o+=i*s.x/(1.+dot(y,y));"
"i*=l;"
"f*=x;"
"}"
"return float3(o,y);"
"}"
"float4x4 d(float3 f,float3 x,float3 c)"
"{"
"float3 o=normalize(cross(c,x)),s=cross(x,o);"
"float4x4 l={o,-dot(o,f),s,-dot(s,f),x,-dot(x,f),0,0,0,1};"
"return transpose(l);"
"}"
"float e(float2 f)"
"{"
"return 20.*max(0.,1.5-8.*pow(length(f-.5),1.));"
"}"
"float4 w(float2 x)"
"{"
"return f.SampleLevel(t,x,0)*float4(e(x),1.,1.,1.);"
"}"
"void e(float f,float o,out float3 c)"
"{"
"c=(float3(d(float2(f,o++)),d(float2(f,o++)),d(float2(f,o++)))*2-1)*float3(64,3,64),c.y+=4+e(c.xz/512.+.5),c.y=smoothstep(3.,13.,c.y)*10.+3.;"
"}"
"void e(int f,out float3 c,out float3 x,out float3 o)"
"{"
"float t=f;"
"float3 l,y,s,z,r;"
"e(t,f++,l);"
"e(t,f++,y);"
"e(t,f++,s);"
"e(t,f++,z);"
"c=lerp(l,y,frac(_t));"
"x=normalize(lerp(s,z,frac(_t))-c);"
"r=cross(float3(0,1,0),x);"
"o=cross(x,r);"
"}"
"__1 VSCB()"
"{"
"__1 f;"
"float c=-cos(x*2*_t/19)*.5+.5;"
"f._l=float4(lerp(float3(-1.,.2,0.),float3(.1,-.7,0.),c),0.);"
"f._f=float4(lerp(float3(.3,.2,0.),float3(.1,.5,.7),c),c);"
"f._r1=float4(lerp(float3(0.,0.,.1),float3(0.,.1,.1),c),1.);"
"f._r2=float4(lerp(float3(.2,0.,.3),float3(.6,.5,.6),c),1.);"
"f._r3=float4(lerp(float3(.8,.6,0.),float3(.7,.6,.5),c),1.);"
"int l[19]={55,58,2,7,111,11,90,0,17,39,83,29,91,69,55,59,51,61,55};"
"float3 o,y,z;"
"e(l[floor(_t)],o,y,z);"
"f._v=d(o,y,z);"
"float3 t=o+y*25;"
"t.y=o.y;"
"float3 m=normalize(f._l);"
"t-=m*25;"
"f._d=float4(y,0);"
"f._c=float4(o,0);"
"f._p=float4x4(.04,0,0,0,0,.04,0,0,0,0,.0005,0,0,0,-.0005,1);"
"f._lvp=mul(d(t,m,y),f._p);"
"f._p=float4x4(1,0,0,0,0,1,0,0,0,0,1,1,0,0,-1,0);"
"return f;"
"}"
"void VSC(uint f:SV_VertexID,out _2 c)"
"{"
"float o=f%512,x=f/512;"
"c.o=float3(-256+o,0,-256+x);"
"c.tc=(float2(o,x)+.5)/512;"
"}"
"void VSV(uint f:SV_VertexID,out _2 c)"
"{"
"uint o=f%2048;"
"float x=f/2048;"
"uint l=o%4;"
"float t=o/4;"
"c.o=float3(-256+t,0,-256+x);"
"if(l==0)"
"c.o+=float3(-.5f,0,-.5f),c.tc=float2(t,x)/512;"
"else"
" if(l==1)"
"c.o+=float3(-.5f,0,.5f),c.tc=float2(t,x+1)/512;"
"else"
" if(l==2)"
"c.o+=float3(.5f,0,.5f),c.tc=float2(t+1,x+1)/512;"
"else"
" c.o+=float3(.5f,0,-.5f),c.tc=float2(t+1,x)/512;"
"}"
"void VS(_2 f,out _5 c)"
"{"
"c.o=f.o,c.tc=f.tc,c.c=c._r=c._s=0,c._t=float4(0,w(f.tc).x,0,0);"
"}"
"float d(float3 f,float3 x)"
"{"
"float4 c=mul(float4((f+x)/2,1),_c._v),o=c;"
"o.x++;"
"float4 t=mul(c,_c._p),s=mul(o,_c._p);"
"float l=distance(t/t.w,s/s.w)/8;"
"return clamp(l,0,64);"
"}"
"bool P(const float3 f)"
"{"
"float3 c=f-_c._c.xyz,x=_c._d.xyz*dot(c,_c._d.xyz)-c;"
"float4 o=mul(mul(float4(f+normalize(x)*min(1.4,length(x)),1.),_c._v),_c._p);"
"o/=o.w;"
"return abs(o.x)<=1.&&abs(o.y)<=1.&&o.w>=0||length(c)<=1.4;"
"}"
"_4 CPCFT(InputPatch<_5, 4> f)"
"{"
"_4 c;"
"float3 x=f[0].o+f[0]._t,o=f[1].o+f[1]._t,y=f[2].o+f[2]._t,t=f[3].o+f[3]._t;"
"if(distance(x,_c._c.xyz)>200||!P(x)&&!P(o)&&!P(y)&&!P(t))"
"c.i[0]=c.i[1]=c.e[0]=c.e[1]=c.e[2]=c.e[3]=-1;"
"else"
" c.e[0]=d(x,o),c.e[1]=d(o,y),c.e[2]=d(y,t),c.e[3]=d(t,x),c.i[1]=(c.e[0]+c.e[2])/2,c.i[0]=(c.e[1]+c.e[3])/2;"
"return c;"
"}"
"_4 CPCFP(InputPatch<_5, 4> f)"
"{"
"_4 c;"
"float3 x=f[0].o+f[0]._t,o=f[1].o+f[1]._t,l=f[2].o+f[2]._t,y=f[3].o+f[3]._t;"
"if(distance(x,_c._c.xyz)>200||!P(x)&&!P(o)&&!P(l)&&!P(y))"
"c.i[0]=c.i[1]=c.e[0]=c.e[1]=c.e[2]=c.e[3]=-1;"
"else"
" c.e[0]=c.e[2]=1,c.e[1]=c.e[3]=8,c.i[0]=8,c.i[1]=1;"
"return c;"
"}"
"[domain(\"quad\")]"
"[partitioning(\"fractional_even\")]"
"[outputtopology(\"triangle_cw\")]"
"[outputcontrolpoints(4)]"
"[patchconstantfunc(\"CPCFT\")]"
"_5 HS(InputPatch<_5, 4> f,uint c:SV_OutputControlPointID)"
"{"
"return f[c];"
"}"
"[domain(\"quad\")]"
"[partitioning(\"fractional_even\")]"
"[outputtopology(\"triangle_cw\")]"
"[outputcontrolpoints(4)]"
"[patchconstantfunc(\"CPCFP\")]"
"_5 HSP(InputPatch<_5, 4> f,uint c:SV_OutputControlPointID)"
"{"
"return f[c];"
"}"
"[domain(\"quad\")]"
"void DS(_4 f,float2 c:SV_DomainLocation,const OutputPatch<_5, 4> o,out _2 x)"
"{"
"x.tc=lerp(lerp(o[0].tc,o[1].tc,c.x),lerp(o[3].tc,o[2].tc,c.x),c.y);"
"x.o=lerp(lerp(o[0].o,o[1].o,c.x),lerp(o[3].o,o[2].o,c.x),c.y);"
"x.o.y+=w(x.tc).x;"
"if(_sh==2)"
"x.o.y=5-x.o.y;"
"}"
"void VST(uint f:SV_VertexID,out _3 c)"
"{"
"if(f==0)"
"c.o=float4(-1.,-1.,0.,1.);"
"else"
" if(f==1)"
"c.o=float4(-1.,1.,0.,1.);"
"else"
" if(f==2)"
"c.o=float4(1.,-1.,0.,1.);"
"else"
" c.o=float4(1.,1.,0.,1.);"
"c.tc=c.o.xy*.5+.5;"
"c.c=0;"
"c.n=_c._c;"
"}"
"void VSTP(_2 f,out _3 c)"
"{"
"c.o=mul(mul(float4(f.o,1),_c._v),_c._p),c.c=mul(float4(f.o,1),_c._lvp),c.tc=f.tc,c.n=f.o;"
"}"
"float r(float4 c)"
"{"
"return max(0,min(1,smoothstep(.4,.7,c.w)*smoothstep(3.,3.5,c.x)));"
"}"
"float V(float4 c)"
"{"
"return max(smoothstep(-.4,-.2,-c.w),smoothstep(-3.5,-3.,-c.x));"
"}"
"float3 a(float2 f)"
"{"
"float2 c=2*f-1;"
"float3 x=normalize(cross(float3(0,1,0),_c._d));"
"return normalize(_c._d+x*c.x*_a+normalize(cross(_c._d,x))*c.y);"
"}"
"float3 S(float3 c)"
"{"
"return pow(saturate(1-c.y),4)*.2+_c._f;"
"}"
"float4 PS(_3 f):SV_TARGET"
"{"
"float x=1.,y=1.f;"
"float2 s=f.tc;"
"float4 i=w(s);"
"float3 m=S(a(f.tc));"
"if(i.x<2.5)"
"{"
"if(_sh==2)"
"discard;"
"else"
" x=(.5-normalize(f.n-_c._c).y)*saturate(i.x/2.5);"
"m*=.8;"
"}"
"float p=distance(f.n,_c._c);"
"float3 z=normalize(float3(i.y,-1,i.z)),n=d(s*2000,4,1.5,.95);"
"z=normalize(float3(n.y,-1,n.z))*(1-r(i))+z;"
"float P=saturate(p/50.);"
"if(P<1)"
"{"
"float3 V=f.c/f.c.w;"
"float2 e=V.xy*.5+.5;"
"e=float2(e.x,1-e.y);"
"float O=0.;"
"for(float h=-1.5;h<=1.5;h++)"
"for(float D=-1.5;D<=1.5;D++)"
"O+=o.SampleCmpLevelZero(l,e+float2(D,h)/4096,V.z);"
"y=lerp(O/16.,1,P);"
"}"
"float D=.2+.8*(.2+.8*_c._f.w)*(i.x/10.),u=max(0,dot(z,normalize(_c._l)));"
"float3 e=c.Sample(t,float2(s.x,1.-s.y)).xyz;"
"e*=lerp(1.,2*d(s*float2(10000,20000),4,1.5,.95).x,r(i));"
"float3 V=m*D,O=_c._f.w*float3(2.,2.,1.)*u*(.2+.8*y);"
"return float4(lerp((O+V)*e,m,max(0,min(1,p/200.))),x);"
"}"
"float4 PSTD(_3 c):SV_TARGET"
"{"
"float2 f=c.tc;"
"float4 o=w(f);"
"float3 x=d(f*2000,4,2.,.5),s=m(f*1000),y=d(f*1000,8,1.5,.95),t=lerp(lerp(float3(.57,.51,0.),float3(.16,.37,.1),s.x),float3(.03,.21,.24),x.x),l=float3(.56,.62,.67),z=lerp(lerp(float3(.41,.37,.12),float3(.57,.51,.32),s.x),l,x.x),i=lerp(l,float3(.27,.22,.11),s.x);"
"i*=.5*y.x;"
"float3 P=lerp(i,.5*z,V(o)),e=lerp(P*(.5+.5*m(f*900).x),.5*t,r(o));"
"e*=.25+(o.x/10-.25)*step(o.x,2.5)+.75*sqrt(smoothstep(2.5,3.,o.x));"
"return float4(e,1);"
"}"
"float4 PSH(_3 c):SV_TARGET"
"{"
"float2 f=d(c.tc*20,3,2.,.5).yz;"
"return float4(d(c.tc*20,10,2.,.5).x,f,normalize(float3(f.x,.5,f.y)).y);"
"}"
"bool P(float3 f,float3 c,float3 x,float3 o,out float y)"
"{"
"float t=dot(f,o);"
"if(t>0)"
"return y=dot(c-x,f)/t,y>=0;"
"return false;"
"}"
"float4 PSC(_3 c):SV_TARGET"
"{"
"float f=0;"
"float3 o=_c._c,x=a(c.tc);"
"float y=0,t=2.;"
"if(P(float3(0,-1,0),float3(0,0,0),o,x,f))"
"o+=x*f,x.y*=-1,y=-.4,t=1.2;"
"if(P(float3(0,1,0),float3(0,200,0),o,x,f))"
"o+=x*f,y+=pow(abs(d(_t*.1-o.xz/80,6,2.,.5)),.1)*smoothstep(.1,.9,pow(abs(d(-_t*.1-o.zx/400,6,1.7,.49)),.6))*(1-pow(min(1,max(0,abs(f)/100000.)),.1));"
"float3 l=S(x);"
"return float4(lerp(l,lerp((1-x.y*.5)*l,t,y),pow(x.y,.4))+smoothstep(.995,.998,dot(x,-normalize(_c._l)))*float3(2.,2.,1.),1);"
"}"
"float4 PSDD(_3 c,uint f:SV_SAMPLEINDEX):SV_TARGET"
"{"
"uint o,y,z;"
"i.GetDimensions(o,y,z);"
"float2 t=float2(c.tc.x,1-c.tc.y);"
"float3 l=i.Load(t*float2(o-1,y-1),f).xyz;"
"l+=pow(1e-05+_c._f.w,.1)*smoothstep(0.,1.,pow(saturate(dot(a(c.tc),-normalize(_c._l))),1./(.1+1-_c._f.w)))*float3(2.,2.,1.)*.2;"
"l=pow(abs(l*(_c._r3-_c._r1)+_c._r1),2*(1-_c._r2));"
"l*=1.4-pow(1.2*distance(t,float2(.5,.5)),2);"
"l*=1+.07*m((t+sin(_t*333))*333).x;"
"l*=1+.05*pow(m(float2(1,_t*222)).x,8);"
"l*=min(1,_c._f.w*33)*min(1,abs(sin(_t*x)*9));"
"return float4(l,1);"
"}"
"float4 P(_3 f,float3 c,float3 o,float2 x)"
"{"
"float y=distance(f.n,_c._c);"
"float3 t=lerp(c,o,x.x);"
"t=lerp(t.xyz,t.yxz,f.c.x*.5)*pow(abs(x.y),f.c.y);"
"float2 s=f.n.xz/256*.5+.5;"
"float4 l=w(float2(s.x,s.y));"
"float3 i=normalize(float3(l.y,-1,l.z));"
"float P=max(0,dot(i,normalize(_c._l))),m=S(a(f.tc)),z=.2+.8*(.2+.8*_c._f.w)*(l.x/10.);"
"float3 p=m*z,n=_c._f.w*float3(1.5,1.5,.6)*P;"
"return float4(lerp(t*(n+p),_c._f.xyz,max(0,min(1,y/200.))),1.-min(1,y/100.));"
"}"
"float4 PSTN(_3 f):SV_TARGET"
"{"
"return P(f,float3(.67,.71,.14),float3(.06,.37,.17),c.Sample(t,f.tc).xy);"
"}"
"float4 PSTS(_3 c):SV_TARGET"
"{"
"return float4(c.c.z/c.c.w,0,0,0);"
"}"
"float4 FSTN(_3 f):SV_TARGET"
"{"
"return P(f,float3(1,0,1),1,c.Sample(t,f.tc).zw);"
"}"
"float4 PSP(_3 c):SV_TARGET"
"{"
"float o=c.tc.y,y=c.tc.x;"
"float2 l=c.tc*float2(.5,.25)+float2(.4,0);"
"float3 s=f.Sample(t,l).xyz;"
"float z=(1+max(0,sin(pow(2-2*o,2)))*max(0,sin(y*5*x))*max(step(.75,y),step(y,.25)))*(1-.2*min(1,1.25*cos((-y+.5)*5*x)*min(step(.4,y),step(y,.6))))*max(sin((1-o)*x),step(.5,1-o))*pow(abs(s.x),.25),i=o+.3*sin(y*8+4)-.2;"
"return float4(o,z,smoothstep(i-.1,i+.1,.7+.1*s.x),(s.x*.4+.6)*(1-min(1,pow(abs(o),4))));"
"}"
"void VSP(_6 f,uint c:SV_VertexID,out _5 x)"
"{"
"uint o=c%4;"
"if(o==0)"
"x.o=float3(0,-1.,1.);"
"else"
" if(o==1)"
"x.o=float3(0,1.,1.);"
"else"
" if(o==2)"
"x.o=float3(0,1.,-1.);"
"else"
" x.o=float3(0,-1.,-1.);"
"x.tc=x.o.yz*.5+.5;"
"x.c=float4(f.tc.zw,0,0);"
"x._t=f._t;"
"x._r=f._r;"
"x._s=f._s;"
"}"
"void S(inout _3 f,int c,const OutputPatch<_5, 4> o,float2 y)"
"{"
"float2 l=lerp(lerp(o[0].tc,o[1].tc,y.x),lerp(o[3].tc,o[2].tc,y.x),y.y);"
"float t=l.x,s=l.y,i=_t*8,z=(2*sin(pow(1-t+.825,3)*.15*x)-.5)*.1;"
"float3 r=float3(t,-pow(t,4)+.07*((max(sin(s*2*x),sin(s*2*x+x))+sin(s*x))/1.765),(2*s-1)*z);"
"r=p(p(o[0]._r,float4(r,0)),n(o[0]._r));"
"r*=(.5+o[0]._s.x)*.7*(.7+.3*o[0].c.x);"
"r+=m(o[0]._t.xz+r.xz*.2+i)*pow(abs(t),8)*(.2+.1*sin(i));"
"r.xyz+=o[0]._t.xyz;"
"f.n=r;"
"f.tc=l.yx;"
"float4 P=mul(float4(r,1.f),_c._lvp);"
"if(c==0)"
"f.o=mul(mul(float4(r,1.f),_c._v),_c._p),f.c=o[0].c;"
"else"
" f.o=P,f.c=f.o;"
"}"
"[domain(\"quad\")]"
"void DSPN(_4 f,float2 c:SV_DomainLocation,const OutputPatch<_5, 4> o,out _3 x)"
"{"
"S(x,0,o,c);"
"}"
"[domain(\"quad\")]"
"void DSPS(_4 f,float2 c:SV_DomainLocation,const OutputPatch<_5, 4> o,out _3 x)"
"{"
"S(x,1,o,c);"
"}"
"void V(inout _3 f,int c,const OutputPatch<_5, 4> o,float2 x)"
"{"
"float2 l=lerp(lerp(o[0].tc,o[1].tc,x.x),lerp(o[3].tc,o[2].tc,x.x),x.y);"
"float y=l.x,s=l.y,z=.2*lerp(lerp(8*y,0,pow(y,2)),0,y);"
"float3 t=float3(y,-log(pow(y,.85)+1),(2*s-1)*z);"
"t=p(p(o[0]._r,float4(t,0)),n(o[0]._r));"
"t*=(.5+o[0]._s.x)*.3*(.7+.3*o[0].c.x);"
"t.xyz+=o[0]._t.xyz;"
"t+=m(t.xz+_t)*pow(abs(y),2)*(.05+.02*sin(_t));"
"f.n=t;"
"f.tc=l.yx;"
"float4 P=mul(float4(t,1.f),_c._lvp);"
"if(c==0)"
"f.o=mul(mul(float4(t,1.f),_c._v),_c._p),f.c=o[0].c;"
"else"
" f.o=P,f.c=f.o;"
"}"
"[domain(\"quad\")]"
"void DSFN(_4 f,float2 c:SV_DomainLocation,const OutputPatch<_5, 4> o,out _3 x)"
"{"
"V(x,0,o,c);"
"}"
"[domain(\"quad\")]"
"void DSFS(_4 f,float2 c:SV_DomainLocation,const OutputPatch<_5, 4> o,out _3 x)"
"{"
"V(x,1,o,c);"
"}"
"_2 O(_2 c)"
"{"
"return c.o.y=5-c.o.y,c;"
"}"
"[maxvertexcount(6)]"
"void GST(triangle _2 f[3],inout PointStream<_2> c,inout PointStream<_2> x)"
"{"
"x.Append(f[0]);"
"x.Append(f[1]);"
"x.Append(f[2]);"
"x.RestartStrip();"
"if(f[0].o.y>=2.5||f[1].o.y>=2.5||f[2].o.y>=2.5)"
"c.Append(O(f[0])),c.Append(O(f[1])),c.Append(O(f[2])),c.RestartStrip();"
"}"
"[maxvertexcount(1)]"
"void GSP(point _2 f[1],inout PointStream<_6> c)"
"{"
"float2 x=f[0].tc,o=float2(m((x-0)*999).x,m((x.yx-0)*999).x);"
"x+=o/512;"
"float4 y=w(x);"
"if(r(y)<.5)"
"return;"
"float3 t=f[0].o;"
"t.xzy+=float3(o,y.x);"
"_6 l;"
"l._t=float4(t,1);"
"l._r=l._s=0;"
"l.tc=float4(x,0,0);"
"c.Append(l);"
"c.RestartStrip();"
"}"
"_6 VSM(_6 c)"
"{"
"return c;"
"}"
"[maxvertexcount(28)]"
"void GSR(point _6 f[1],inout PointStream<_6> c,inout PointStream<_6> o)"
"{"
"_6 y=f[0];"
"float3 t=f[0]._t,l=t+float3(.5,0,.5),s=t+float3(-.5,0,.5),i=t+float3(.5,0,-.5),z=t+float3(-.5,0,-.5);"
"if(distance(t,_c._c)>100||!P(l)&&!P(s)&&!P(i)&&!P(z))"
"return;"
"float3 r=m(y._t.xz);"
"float2 V=r.yz*.5,e=f[0].tc.xy;"
"float4 d=w(e);"
"float3 O=normalize(float3(d.y,3.,d.z)),a=float3(0,0,1),D=float3(0,1,0);"
"float h,u=7.,v=5.,S=4.;"
"float4 N;"
"float3 G;"
"y._s=float4(r,1);"
"for(h=0;h<1;h+=1/u)"
"G=m(y._t.xz*h*u),N=n(a,1+.5*G.x),N=p(p(n(D,V.x+h*(1+.2*G.x)*2*x),N)),N=p(p(float4(cross(O,D),dot(O,D)),N)),y._r=N,y.tc.z=G.y,y.tc.w=1,c.Append(y),c.RestartStrip();"
"for(h=0;h<1;h+=1/v)"
"G=m(y._t.xz*h*v+1),N=n(a,.5+.5*G.x),N=p(p(n(D,V.y+h*(1+.2*G.x)*2*x),N)),N=p(p(float4(float3(-1,1,1)*cross(O,D),dot(O,D)),N)),y._r=N,y.tc.z=G.z,y.tc.w=2,c.Append(y),c.RestartStrip();"
"if(r.x<.25)"
"{"
"float C=1+floor(r.x*4*7);"
"for(h=0;h<1;h+=1/C)"
"{"
"float2 I=float2(m((e+h)*283).x,m((e.yx+h)*185).x)*.5;"
"e+=I/512;"
"float4 H=w(e);"
"y._t.y=H.x+.1;"
"y._t.xz+=I;"
"y._s=float4(m(y._t.xz),1);"
"for(int T=0;T<4;++T)"
"N=n(a,1+.5*G.x),N=p(p(n(D,(I.y+T/4.)*2*x),N)),N=p(p(float4(cross(O,D),dot(O,D)),N)),y._r=N,y.tc.z=I.x,y.tc.w=1,o.Append(y),o.RestartStrip();"
"}"
"}"
"}"
"[maxvertexcount(4)]"
"void GSM(point _6 f[1],inout PointStream<_6> c)"
"{"
"c.Append(f[0]),c.RestartStrip(),c.Append(f[0]),c.RestartStrip(),c.Append(f[0]),c.RestartStrip(),c.Append(f[0]),c.RestartStrip();"
"}"
"[maxvertexcount(6)]"
"void GSQ(point _6 f[1],inout TriangleStream<_3> c)"
"{"
"_3 x;"
"float o=1/1024.;"
"float4 l=float4(f[0]._t.xz/256+2*o,1,1);"
"x.c=0;"
"x.n=0;"
"x.o=l+float4(-o,o,0,0);"
"x.tc=float2(-1,1);"
"c.Append(x);"
"x.o=l+float4(o,-o,0,0);"
"x.tc=float2(1,-1);"
"c.Append(x);"
"x.o=l+float4(-o,-o,0,0);"
"x.tc=float2(-1,-1);"
"c.Append(x);"
"c.RestartStrip();"
"x.o=l+float4(-o,o,0,0);"
"x.tc=float2(-1,1);"
"c.Append(x);"
"x.o=l+float4(o,o,0,0);"
"x.tc=float2(1,1);"
"c.Append(x);"
"x.o=l+float4(o,-o,0,0);"
"x.tc=float2(1,-1);"
"c.Append(x);"
"c.RestartStrip();"
"}";
#endif // SHADER_H_