/* 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 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=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_