/* File generated with Shader Minifier 1.1.3 * http://www.ctrl-alt-test.fr */ #ifndef SHADER_CODE_H_ # define SHADER_CODE_H_ # define VAR_DUMMY0 "f" # define VAR_DUMMY1 "n" # define VAR_DUMMY2 "s" # define VAR_DUMMY3 "a" # define VAR_DUMMY4 "S" # define VAR_DUMMY5 "U" # define VAR_FAKLEMANVECTORS "g" # define VAR_FAKLEMANVECTORS_ "A" # define VAR_LIGHTCOLOR "ad" # define VAR_LIGHTPOSITION "ab" # define VAR_LIGHTSIZE "ac" # define VAR_MATERIAL "X" # define VAR_OUT0 "K" # define VAR_RNDSEED "r" # define VAR_SAMPLER0 "J" # define VAR_TEX0 "j" # define VAR_TIME "y" # define VAR_VIEWDIRECTION "d" # define VAR_VIEWPOSITION "l" # define VAR_VIEWUP "z" char tmpE89D_tmp[] = "cbuffer cb0:register(b0){" "float y,f,n,s;" "float3 l;" "float a;" "float3 d;" "float S;" "float3 z;" "float U;" "}\n" "#ifndef UTILS\n" "#define UTILS\n" "#define USE_ATAN2_APPROXIMATION\n" "#define PI 3.14159265\n" "#define INFINITY 1000.0\n" "#define PHI (sqrt(5)*0.5+0.5)\n" "float3x3 t(float f)" "{" "return float3x3(1,0,0,0,cos(f),-sin(f),0,sin(f),cos(f));" "}" "float3x3 e(float f)" "{" "return float3x3(cos(f),0,sin(f),0,1,0,-sin(f),0,cos(f));" "}" "float3x3 x(float f)" "{" "return float3x3(cos(f),-sin(f),0,sin(f),cos(f),0,0,0,1);" "}" "static uint r=0;" "void h(uint f)" "{" "r=f;" "}" "uint p(uint f)" "{" "return f+=f<<10,f^=f>>6,f+=f<<3,f^=f>>11,f+=f<<15,f;" "}" "float e()" "{" "return asfloat((r=p(r)&8388607)|1065353216)-1;" "}" "float h()" "{" "return asfloat((r=p(r)&8388607)|1073741824)-3;" "}" "float N(uint f)" "{" "return asfloat(f&8388607|1065353216)-1;" "}" "float w(uint f)" "{" "return asfloat(f&8388607|1073741824)-3;" "}" "float T(float f)" "{" "return asfloat(int(12102203*f+1064866805));" "}\n" "#ifdef USE_ATAN2_APPROXIMATION\n" "float N(float f,float y)" "{" "float z=PI*.25,n=PI*.75,x=abs(f),s=y<0?-1:1,b=(-x*s+y)/(y*s+x),a=(.1963*b*b-.9817)*b+(y<0?n:z);" "return a*(f<0?-1:1);" "}\n" "#else\n" "#define atan2f atan2\n" "#endif\n" "float3x3 c(float3x3 f)" "{" "float3x3 a={f[1][1]*f[2][2]-f[1][2]*f[2][1],f[0][2]*f[2][1]-f[0][1]*f[2][2],f[0][1]*f[1][2]-f[0][2]*f[1][1],f[1][2]*f[2][0]-f[1][0]*f[2][2],f[0][0]*f[2][2]-f[0][2]*f[2][0],f[0][2]*f[1][0]-f[0][0]*f[1][2],f[1][0]*f[2][1]-f[1][1]*f[2][0],f[0][1]*f[2][0]-f[0][0]*f[2][1],f[0][0]*f[1][1]-f[0][1]*f[1][0]};" "return a;" "}" "float3x3 m(float3x3 f)" "{" "return c(f)/determinant(f);" "}" "float T(float f,float y)" "{" "return f-y*floor(f/y);" "}" "float2 c(float2 f,float2 y)" "{" "return f-y*floor(f/y);" "}" "float3 e(float3 f,float3 y)" "{" "return f-y*floor(f/y);" "}" "float2 h(float2 f,float y)" "{" "return f-y*floor(f/y);" "}" "float3 m(float3 f,float y)" "{" "return f-y*floor(f/y);" "}" "float N(float f,float y,float z)" "{" "if(f>y)" "return f;" "float x=f/y;" "return((2*z-y)*x+2*y-3*z)*x*x+z;" "}" "float T(float f,float a,float y)" "{" "return y=saturate((y-f)/(a-f)),y*y*y*(y*(y*6-15)+10);" "}" "float3 c(float3 f,float3 a,float3 y)" "{" "return y=saturate((y-f)/(a-f)),y*y*y*(y*(y*6-15)+10);" "}" "float e(float f,float y,float z)" "{" "float r=abs(z-f);" "if(r>y)" "return 0;" "r/=y;" "return 1-r*r*(3-2*r);" "}" "float3 h(float f,float y,float z)" "{" "return lerp(1,saturate(abs(frac(f+float3(3,2,1)/3)*6-3)-1),y)*z;" "}" "float3 m(float f,float y,float z)" "{" "return lerp(1,smoothstep(0,1,saturate(abs(frac(f+float3(3,2,1)/3)*6-3)-1)),y)*z;" "}" "float3 M(float f)" "{" "float y=saturate(f);" "return saturate(float3(sqrt(y),y*y*y,max(sin(5.49763*y),pow(y,12.))));" "}" "float3 P(float3 f)" "{" "float y=.15,z=.5,x=.1,n=.2,s=.02,b=.3,a=11.2;" "f=(f*(y*f+x*z)+n*s)/(f*(y*f+z)+n*b)-s/b;" "float l=(a*(y*a+x*z)+n*s)/(a*(y*a+z)+n*b)-s/b;" "return f/l;" "}" "float3 G(float3 f)" "{" "return f*(f*1.28713+.153229)/(f*(f+3.33333)+.4);" "}" "float4 L(float2 f)" "{" "float4 a=float4(1,.111,0,1);" "uint y[]={-2122219265,-1887334513,-1886417777,-8352628};" "int2 c=floor(f*16);" "if(c.x<0||c.x>15||c.y<0||c.y>15)" "return float4(0,0,0,0);" "if(y[c.y/4u]>>c.y%4u*8u+uint(abs(c.x-7.5))%8u&1u)" "return float4(1,1,1,1);" "return a;" "}" "float i(float3 f)" "{" "float4 y=dot(floor(f),float3(1,57,21))+float4(0,57,21,78);" "f=smoothstep(0,1,frac(f));" "y=lerp(sin(cos(y*y)),sin(cos(y*y+2*y+1)),f.x);" "y.xy=lerp(y.xz,y.yw,f.y);" "return lerp(y.x,y.y,f.z);" "}" "float I(float3 f)" "{" "float3 a=floor(f);" "float4 y=a.x+a.y*57+a.z*21;" "y.yzw+=float3(57,21,78);" "float3 r=frac(f);" "r=r*r*(-2*r+3);" "y=lerp(sin(cos(y)*y),sin(cos(1+y)*(1+y)),r.x);" "y.xy=lerp(y.xz,y.yw,r.y);" "return lerp(y.x,y.y,r.z);" "}" "float b(float3 f)" "{" "float y=I(f*.06125)*.5;" "f.xy=cos(1)*f.xy+float2(-sin(1),sin(1))*f.yx;" "y+=I(f*.125)*.25;" "f.zy=cos(1)*f.zy+float2(-sin(1),sin(1))*f.yz;" "y+=I(f*.25)*.125;" "return y*(1/.875);" "}\n" "#endif\n" "#ifndef LIGHTING\n" "#define LIGHTING\n" "float G(float f,float y)" "{" "float a=y*y,s=a*a,x=f*f,n=abs(x*s-x+1);" "return s/(PI*n*n+1e-08);" "}" "float G(float f,float y,float z)" "{" "float a=z+1,n=a*a/8,s=1-n;" "return 1/(4*(f*s+n)*(y*s+n));" "}" "float I(float f,float y)" "{" "float a=(-5.55473*f-6.98316)*f;" "return y+(1-y)*exp2(a);" "}" "float G(float3 f,float3 y,float a,float z)" "{" "float x=a/z,s=-dot(y,f),n=x*x*(1.-s*s);" "if(n>1.)" "return 1.;" "float r=sqrt(1.-n),b=(a*s-z*r)/(a*s+z*r),P=(z*s-a*r)/(z*s+a*r);" "return 1.-(b*b+P*P)/2.;" "}" "float G(float f,float y,float a,float z,float n,float s)" "{" "return G(a,n)*I(f,s)*G(f,y,n);" "}" "float G()" "{" "return 1/PI;" "}" "float3 G(float3 f,float3 y,float3 z,float3 a,float3 x,float r,float n)" "{" "r=clamp(r,.05,1.);" "float3 s=normalize(y+z);" "float c=max(0,dot(f,y)),m=max(0,dot(f,z)),b=max(0,dot(f,s)),d=max(0,dot(y,s));" "float3 i=a*G()+x*G(c,m,b,d,r,n);" "i*=m;" "return i;" "}" "float3 G(float3 f,float3 y,float3 a,float3 z,float3 l,float c,float3 n,float3 s,float d,float b)" "{" "float3 m=l-f,x=m-dot(m,z)*z,i=m-x*saturate(c/length(x)),r=normalize(i);" "return G(y,a,r,n,s,d,b);" "}\n" "#endif\n" "#ifndef MATERIAL\n" "#define MATERIAL\nstruct Material{float3 color;float roughness;float4 attenuation;float eta;float3 emissive;float metallic;};" "static Material X;" "void u(Material f)" "{" "X=f;" "}" "void L(bool f,Material y)" "{" "if(f)" "L(y);" "}" "void I(inout float f,float y,bool z,Material a)" "{" "if(yf)" "{" "f=y;" "if(z)" "L(a);" "}" "}" "void M(inout float f,float y,bool a,Material z)" "{" "I(f,abs(y),a,z),f*=y<0?-1:1;" "}" "bool F(Material f)" "{" "return f.attenuation.w>=.5;" "}" "bool o(Material f)" "{" "return f.attenuation.w==1;" "}" "Material O(float3 f)" "{" "Material r;" "r.color=f;" "r.metallic=0.;" "r.roughness=0.;" "r.emissive=0.;" "r.attenuation=0.;" "return r;" "}" "Material v(float3 f)" "{" "Material r;" "r.color=f;" "r.metallic=0.;" "r.roughness=1.;" "r.emissive=0.;" "r.attenuation=0.;" "return r;" "}" "Material R(float3 f)" "{" "Material r;" "r.color=0;" "r.metallic=0;" "r.roughness=0;" "r.emissive=f;" "r.attenuation=0.;" "return r;" "}" "Material F(float3 f,float a=1.1,float y=.3)" "{" "Material r;" "r.color=.3;" "r.emissive=0;" "r.metallic=1;" "r.roughness=y;" "r.attenuation=float4(f,1);" "r.eta=a;" "return r;" "}" "Material F(float3 f,int y)" "{" "float3 a=f+.01*b(f*1114.95),z=a+.05*b(a*228.999),x=z+13.845*b(z*12.5);" "float r=b(x*16.5)*.5+.5;" "const float3 s[3]={float3(1,.2,0.),float3(.5,.8,.1),float3(1.,1.,1.)};" "float3 l=lerp(s[(2+y)%3],lerp(s[(0+y)%3],s[(1+y)%3],b((x+z)*15)*.5+.5),b(x*10)*.5+.5);" "Material i;" "i.emissive=0;" "i.color=l*r;" "i.metallic=1.;" "i.roughness=saturate(r*-.55+.5);" "i.attenuation=float4(3*saturate(1-l),1);" "i.eta=1.2;" "return i;" "}" "Material M(float3 f,int y)" "{" "float3 a=f+.01*b(f*1114.95),z=a+.05*b(a*228.999),x=z+13.845*b(z*12.5);" "float r=b(x*16.5)*.5+.5;" "const float3 s[3]={float3(1,.2,0.),float3(.5,.8,.1),float3(1.,1.,1.)};" "float3 l=lerp(s[(2+y)%3],lerp(s[(0+y)%3],s[(1+y)%3],b((x+z)*15)*.5+.5),b(x*10)*.5+.5);" "Material e;" "e.emissive=0;" "e.color=l*r;" "e.metallic=0;" "e.roughness=saturate(r*-.55+.5);" "e.attenuation=0;" "return e;" "}" "Material E(float3 f)" "{" "int y=0;" "float3 a=f+.01*b(f*1114.95),z=a+.05*b(a*228.999),x=z+13.845*b(z*12.5);" "float r=b(x*16.5)*.5+.5;" "const float3 s[3]={float3(1,.2,0.),float3(.5,.8,.1),float3(1.,1.,1.)};" "float3 l=lerp(s[(2+y)%3],lerp(s[(0+y)%3],s[(1+y)%3],b((x+z)*15)*.5+.5),b(x*10)*.5+.5);" "Material i;" "i.emissive=0;" "i.color=sin(f.z)*.5+.5;" "i.metallic=0;" "i.roughness=.3;" "i.attenuation=0;" "return i;" "}\n" "#endif\n" "#ifndef SDF\n" "#define SDF\n" "static const float3 A[19]={{1.,0.,0.},{0.,1.,0.},{0.,0.,1.},{.577,.577,.577},{-.577,.577,.577},{.577,-.577,.577},{.577,.577,-.577},{0.,.357,.934},{0.,-.357,.934},{.934,0.,.357},{-.934,0.,.357},{.357,.934,0.},{-.357,.934,0.},{0.,.851,.526},{0.,-.851,.526},{.526,0.,.851},{-.526,0.,.851},{.851,.526,0.},{-.851,.526,0.}},g[19]={normalize(float3(1,0,0)),normalize(float3(0,1,0)),normalize(float3(0,0,1)),normalize(float3(1,1,1)),normalize(float3(-1,1,1)),normalize(float3(1,-1,1)),normalize(float3(1,1,-1)),normalize(float3(0,1,PHI+1)),normalize(float3(0,-1,PHI+1)),normalize(float3(PHI+1,0,1)),normalize(float3(-PHI-1,0,1)),normalize(float3(1,PHI+1,0)),normalize(float3(-1,PHI+1,0)),normalize(float3(0,PHI,1)),normalize(float3(0,-PHI,1)),normalize(float3(1,0,PHI)),normalize(float3(-1,0,PHI)),normalize(float3(PHI,1,0)),normalize(float3(-PHI,1,0))};" "float3 H(float3 f)" "{" "if(f.y>0)" "f.xy=float2(length(f.xy),N(f.y,f.x));" "else" " if(f.x<0)" "f.xy*=-1,f.y+=2*asin(1);" "return f;" "}" "float3 E(float3 f,float y,float z)" "{" "if(abs(y)<.01)" "return f;" "float a=sign(y),s=1/y;" "float2 r=a*float2(f.x-z,s-f.y);" "float x=N(r.x,r.y);" "return float3(x*s+z,-length(r)*a+s,f.z);" "}" "float3 E(float3 f,float y,float z,float a,float s)" "{" "float r=y/(s-a);" "if(abs(r)<.0001)" "return f;" "float x=sign(r),n=abs(r),b=1/r;" "float2 i=x*float2(f.x-z,b-f.y);" "float c=N(i.x,i.y);" "float2 d=(float2(a,s)-z)*r;" "float l=clamp(c,min(d.x,d.y),max(d.x,d.y)),m=l*b+z;" "if(abs(c-l)>0)" "{" "float2 X=float2(cos(l),sin(l));" "return float3(-x*(X*i.x*float2(-1,1)+X.yx*i.y)+float2(m,b),f.z);" "}" "return float3(m,-length(i)*x+b,f.z);" "}\n" "#define fOpR45(p)p=0.7071*p+0.7071*float2(p.y,-p.x)\n" "float H(float f,float y,float z)" "{" "return-fs?2*s-r:r;" "return length(float2(length(f.yz)-z,r));" "}" "float q(float3 f,float y)" "{" "return max(length(f.xz)-y,abs(f.y));" "}" "float t(float3 f,float y)" "{" "return length(f)-y;" "}" "float u(float3 f,float y)" "{" "float3 z=normalize(float3(-PHI,PHI-1,1)),a=normalize(float3(1,-PHI,PHI+1));" "f=abs(f);" "f-=2*max(0,dot(f,z))*z;" "f-=2*max(0,dot(f,a))*a;" "f=abs(f);" "f-=2*max(0,dot(f,z))*z;" "f-=2*max(0,dot(f,a))*a;" "return f.y-y;" "}" "float W(float3 f)" "{" "f=abs(f);" "if(f.x1.41)" "return length(f)-1.4;" "const float4 y[]={float4(1.,0.,0.,2.5),float4(-1.,0.,0.,2.5),float4(1.,2.,0.,2.5),float4(-1.,2.,0.,2.5),float4(1.,4.,0.,1.),float4(-1.,4.,0.,1.),float4(1.5,0.,1.5,1.2),float4(-1.5,0.,1.5,1.2),float4(1.55,2.,1.5,0.),float4(-1.5,2.,1.5,0.),float4(1.3,4.8,-.2,.3),float4(-1.3,4.8,-.2,.3),float4(0.,4.,1.,0.)};" "float a=.1;" "f/=a;" "f.y+=4.8/2;" "float r=0;" "for(int z=0;z<13;++z)" "r+=.5-atan(length(f-3*y[z].xyz)-y[z].w)/PI;" "return(tan((-clamp(r,.0001,.78)-.5)*PI)+1)*a;" "}\n" "#endif\n" "RWTexture2D K:register(u0);" "SamplerState J:register(s0);" "Texture2D j:register(t0);\n" "#define NUM_ST_ITERATIONS 80\n" "#define NUM_ST_ITERATIONS_REFLECTIONS 80\n" "#define NUM_ST_ITERATIONS_REFRACTIONS 80\n" "#define USE_SOR\n" "#define SOR_OMEGA 1.3\n" "#define USE_ERROR_SMOOTHING\n" "#define NUM_ERROR_SMOOTHING_ITERATIONS 3\n" "#define _USE_ERROR_SMOOTHING_ALONG_NORMAL\n" "#define NUM_REFRACTIONS 8\n" "#define NUM_REFLECTIONS 2\n" "#define FOV 45\n" "static const float3 ab=float3(-.5,5.5,5);" "static const float ac=.75;" "static const float3 ad=10*float3(1,.8,.7);\n" "#define GRADIENT_EPSILON_THRESHOLD 0.00045\n" "#define GRADIENT_EPSILON_MINIMUM 0.0004\n" "#define POSITION_EPSILON_THRESHOLD 0.0045\n" "#define POSITION_EPSILON_MINIMUM 0.004\n" "float Q(float3 f,bool a,bool z)" "{" "float r=f.y+1.65,n=-t(f,10),x=2*PI/3,s=0*y*.3;" "float3 i=f-1.85*float3(sin(x*2+s),0,cos(x*2+s)),d=f-1.85*float3(sin(x*1+s),.1,cos(x*1+s)),c=mul(t(.65),mul(t(-PI/5),(f-2*float3(sin(x*3+s),0,cos(x*3+s))).xzy).zyx);" "float b=W(i),P=O(d,1.4,30);" "P*=z?1.025:1;" "float l=B(c,1),e=B(c,1,40);" "e*=z?1.025:1;" "l=lerp(l,e,.4);" "float o=INFINITY;" "I(o,r,a,v(float3(.5,.5,.5)));" "I(o,n,a,v(float3(.5,.5,.5)));" "I(o,e,a,F(float3(.1,1.9,.5),1.5,0.));" "I(o,b,a,F(float3(.1,.5,1.9),1.1,.2));" "I(o,P,a,F(float3(1.9,.5,.1),1.3));" "return o;" "}" "float W(float3 f,float y,bool z)" "{" "float a=length(f.xz),r=a-1.5;" "r=max(r,f.y);" "if(r>.1)" "return r;" "float s=a-1;" "s=max(s,.8-a);" "s=I(s,-f.y,.05);" "float x=2*3.14159/12,n=2*3.14159/48,b=N(f.z,f.x),i=b+x*.5,c=b+n*.5;" "i=m(i,x)-x*.5;" "c=m(c,n)-n*.5;" "f.xz=float2(cos(i),sin(i))*a;" "float3 l=float3(cos(c)*a,f.y,sin(c)*a),d=f;" "f+=float3(-.9,.3,0.);" "f.z=abs(f.z);" "f.x-=.2;" "f.z-=.3;" "s=max(s,.2-length(f.xz));" "d+=float3(-1,12,0);" "float e=V(d,float3(.35,10+.2,.4));" "e=L(e,V(d,float3(.5,10+.3,.2)),.05);" "d.x-=.1;" "l.x-=.8;" "s=max(s,.03-length(l.xz));" "s=min(s,e);" "f+=float3(-.2,.6,.25);" "f=E(f.yxz,-PI/4,0,0,.25).yxz;" "float P=length(f.xz)-.047;" "P=max(P,-.2-d.x);" "I(y,s,z,v(float3(.8,.9,1)));" "M(s,P,z,F(8*float3(.1,.5,1.9),1.3,.25));" "return s;" "}" "float Z(float3 f,bool y,bool z)" "{" "float a=f.y+2.05,r=-t(f,20),s=W(f)*(z?1:.67),n=V(f-float3(0,0,0),float3(1,1,1)),x=max(max(t(f-float3(0,1,0),2),-t(f-float3(0,1.1,0),1.95)),f.y-1.7)*(z?1:.9),b=O(f,1.4,30)*(z?1:.9),d=u(f,1),e=INFINITY;" "I(e,a,y,v(3*float3(.5,.5,.5)));" "I(e,r,y,v(3*float3(.5,.5,.5)));" "I(e,x,y,E(f*float3(.25,.25,200)));" "return e;" "}" "float k(float3 f,bool y,bool z)" "{" "float a=f.y+2.05,r=-t(f,10),s=W(f),e=INFINITY;" "I(e,a,y,v(float3(.5,.5,.5)));" "I(e,r,y,v(float3(.5,.5,.5)));" "I(e,s,y,F(float3(.1,1.9,.5),1.1));" "return e;" "}" "float o(float3 f,bool y,bool z)" "{" "float a=INFINITY,r=-Y(f,float3(10,10,10));" "I(a,r,y,v(float3(.5,.5,.5)));" "float s=W(f);" "M(a,s,y,F(1*float3(0.,.3333,1.),1.1));" "return a;" "}" "float ae(float3 f)" "{" "return o(f,true,false);" "}" "float af(float3 f)" "{" "return o(f,false,true);" "}" "float ag(float3 f)" "{" "return o(f,false,false);" "}" "float3 Q(float3 f,float y)" "{" "const float3 a[]={{y,0,0},{-y,0,0},{0,y,0},{0,-y,0},{0,0,y},{0,0,-y}};" "float r[6];" "for(int z=0;z<6;++z)" "r[z]=af(f+a[z]);" "return float3(r[0]-r[1],r[2]-r[3],r[4]-r[5]);" "}" "float ae(float3 f,float3 y,float a)" "{" "return(ag(f+a*y)-2*ag(f)+ag(f-a*y))/(a*a);" "}" "float D(float3 f,float3 y,float3 z,float a)" "{" "return(ag(f+a*y+a*z)-ag(f+a*y-a*z)+ag(f-a*y-a*z)-ag(f-a*y+a*z))/(4*a*a);" "}" "float3x3 Z(float3 f,float y)" "{" "float3 a=float3(1,0,0),r=float3(0,1,0),z=float3(0,0,1),s=float3(D(f,a,y),D(f,r,y),D(f,z,y)),n=float3(D(f,a,r,y),D(f,r,z,y),D(f,z,a,y));" "return float3x3(s.x,n.x,n.z,n.x,s.y,n.y,n.z,n.y,s.z);" "}" "float af(float3 f,float3 y,float z)" "{" "float3x3 a=Z(f,z);" "return dot(mul(c(a),y),y);" "}" "float ag(float3 f,float3 y,float z)" "{" "float3x3 a=Z(f,z);" "float r=a[0][0]+a[1][1]+a[2][2];" "return-dot(mul(a,y),y)+r;" "}" "float C(float3 f,float3 y,float a,float z,float r)" "{" "float s=1,x=1;" "for(float i=1;i<=r;++i)" "s-=(i*a*z-abs(ag(f+y*i*z)))/(x*=2);" "return saturate(s);" "}" "float E(float3 f,float3 y,float z,float a)" "{" "float r=1,x=1;" "for(float s=1;s<=a;++s)" "r-=(s*z-abs(ag(f+y*s*z)))/(x*=2);" "return saturate(r);" "}" "float3 F(float3 f,float3 y,float3 z,float a)" "{" "float r=E(f,z,.3,4);" "float3 s=reflect(y,z);" "float n=saturate(-dot(z,y)),x=C(f,s,n,.1,4);" "x*=x;" "float i=saturate(max(X.roughness,a)),b=X.metallic,d=lerp(.04,1.,b);" "float3 c=lerp(1,X.color,b)*lerp(1,r,i)*x,e=lerp(X.color,0,b)*r,l=G(f,z,-y,s,ab,ac,e,c,i,d)*ad;" "l+=X.emissive;" "return l;" "}" "float3 p(float3 f,float y,out float r)" "{" "float z=max(abs(y),GRADIENT_EPSILON_MINIMUM);" "float3 a=Q(f,z);" "float s=length(a);" "r=1-saturate(s/(2*z));" "return a/s;" "}" "void B(float3 f,float3 y,float a,float z,inout float3 r,inout float s)" "{" "for(int i=0;i1&&I+bz)" "break;" "\n#else\n" "if(Pz)" "break;" "\n#endif\n" "n+=m;" "}" "return float2((n>z||i.y>a)&&!s?INFINITY:i.x,d*max(i.x*i.y,POSITION_EPSILON_MINIMUM));" "}" "float3 D(float3 f,float3 y,float3 a,float2 r,float z)" "{" "bool i=true;" "float3 x=1,s=0;" "[fastopt]" "for(int n=0;n0?-a:a;" "if(!i||i&&n<=1)" "s+=F(m,y,a,e)*x;" "f=m;" "}" "return s;" "}" "float3 q(float3 f,float3 y,float z)" "{" "float2 a=D(f,y,30,z,NUM_ST_ITERATIONS,true);" "float3 r=y*ST_T(a)+f;" "float s=z*ST_SIGN(a)*ST_T(a);" "\n#if defined(USE_ERROR_SMOOTHING)&&!defined(USE_ERROR_SMOOTHING_ALONG_NORMAL)\n" "B(f,y,ST_SIGN(a),z,r,s);" "\n#endif\n" "float n;" "float3 x=p(r,s,n)*ST_SIGN(a);" "\n#if defined(USE_ERROR_SMOOTHING)&&defined(USE_ERROR_SMOOTHING_ALONG_NORMAL)\n" "C(f,x,ST_SIGN(a),z,r,s);" "\n#endif\n" "ST_RADIUS(a)=ST_SIGN(a)*max(abs(ae(r)),POSITION_EPSILON_MINIMUM);" "float3 i=F(r,y,x,n);" "Material c=X;" "if(o(c))" "i+=F(r,y,dot(y,x)>0?-x:x,a,z);" "if(F(c))" "i+=D(r,y,x,a,z);" "if(ST_SIGN(a)<0)" "i*=exp(-ST_T(a)*c.attenuation.xyz);" "return i;" "}" "[numthreads(16,16,1)]" "void ah(int3 f:SV_DispatchThreadID)" "{" "float2 y;" "K.GetDimensions(y.x,y.y);" "float2 a=(f.xy+.5)/y,r=(a*2-1)*float2(y.x/y.y,-1.);" "float3 s=cross(d,z),n=z,b=-d,x=l,i=normalize(mul(transpose(float3x3(s,n,b)),float3(r/2,-.5/tan(1.57075*FOV/180.))));" "float c=tan(1.57075*FOV/180.)/y.y;" "float3 m=q(x,i,c);" "float4 e=float4(m,1);" "if(isnan(dot(e,e))||isinf(dot(e,e)))" "{" "K[f.xy]=float4(0,1,0,1);" "return;" "}" "K[f.xy]=e;" "}"; #endif // SHADER_CODE_H_