Bo3b's School For Shaderhackers
  71 / 88    
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/72198/[/img] For that image, is the fire supposed to be on the tank itself, or is that a burning building in the distance? What does the unmodified image look like? I agree it has a halo edge there on the tank turret. It is in stereo however, the smoke is not at infinity, it's somewhere in the distance, like 10 miles away. Might be that the sky is too close. Nevertheless, it's in stereo, otherwise it would be at screen depth, not at distance. Things that are not in stereo are always at screen depth where the delta-x is zero. (difference between left eye and right eye.) I don't see anything too special in the PS there. It's weird that the VS only puts out a float2, so I'm not sure exactly what is happening there.
Image

For that image, is the fire supposed to be on the tank itself, or is that a burning building in the distance? What does the unmodified image look like?

I agree it has a halo edge there on the tank turret. It is in stereo however, the smoke is not at infinity, it's somewhere in the distance, like 10 miles away. Might be that the sky is too close. Nevertheless, it's in stereo, otherwise it would be at screen depth, not at distance. Things that are not in stereo are always at screen depth where the delta-x is zero. (difference between left eye and right eye.)


I don't see anything too special in the PS there. It's weird that the VS only puts out a float2, so I'm not sure exactly what is happening there.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

Posted 04/05/2017 07:43 AM   
Well the tank in the forefront is the players tank. the smoke is definitely of a destroyed enemy tank in the distance.. It was mainly a picture showing the halo effect around the turret.. I was testing and when I put the image of the smoke into the code you told me to use it makes the halo disappeared but then the smoke and fire was not in stereo.. Is the fire and smoke supposed to be in Stereo too?? I have done a few things and when it takes away the halo the fire and smoke is not in stereo.. but when I input another code it puts the smoke and fire in stereo but makes the halo return very weird ... the first (548) pic is with the code you gave me from lesson6 and you see the smoke and fire does not seem to have any depth and there is no halo.. the 2nd picture (4e0) is another code and the fire and smoke it at depth but the halo effect is back.. So what should I do just live with the halo effect?? Thank you Bo3b.. ;)
Well the tank in the forefront is the players tank. the smoke is definitely of a destroyed enemy tank in the distance..

It was mainly a picture showing the halo effect around the turret..

I was testing and when I put the image of the smoke into the code you told me to use it makes the halo disappeared but then the smoke and fire was not in stereo..

Is the fire and smoke supposed to be in Stereo too??
I have done a few things and when it takes away the halo the fire and smoke is not in stereo.. but when I input another code it puts the smoke and fire in stereo but makes the halo return very weird ...

the first (548) pic is with the code you gave me from lesson6 and you see the smoke and fire does not seem to have any depth and there is no halo..

the 2nd picture (4e0) is another code and the fire and smoke it at depth but the halo effect is back..

So what should I do just live with the halo effect??


Thank you Bo3b.. ;)

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/05/2017 12:23 PM   
@Bo3b, GOOD NEWS, I had another user 4everawake help us and he fixed a bunch of stuff we where working on ;) [quote] Hey The_Nephilim. I only played through the tutorial missions. But I was able to add to your fix a little bit: - The smaller circle reticle is actually a stereo crosshair. (it's strange that this game has, like, 6 crosshairs and 3 of them are stereo). So I just applied the Prime Directive to the stereo crosshairs. - Fixed various haloing & screendepth effects (smoke, fire, dust, bomb impacts.. etc) - Stretched out some of the skyboxes that were pushed in depth (to remove the black bars on the side). - Added a HUD / UI toggle. Press the Forward Slash (/) key to turn HUD & UI on/off. - The cumulus clouds have to be edited in the PS. I'm not sure I'll be able to fix this. I started placing the stereo formula at various places and I was able to place the clouds in depth. But it also caused haloing, so this still needs further work (shader disabled for now). [/quote] The Above Quote was from 4everawake, So know all we need to fix is the Cumulus clouds in the Aircraft sky. He said something about editing the PS shader for those? I will post that shader here: [code] //cumulus clouds // ---- Created with 3Dmigoto v1.2.56 on Wed Apr 05 10:53:05 2017 Texture2D<float4> t7 : register(t7); Texture3D<float4> t6 : register(t6); Texture3D<float4> t5 : register(t5); Texture3D<float4> t4 : register(t4); Texture3D<float4> t3 : register(t3); Texture2D<float4> t2 : register(t2); Texture2D<float4> t1 : register(t1); Texture2D<float4> t0 : register(t0); SamplerState s7_s : register(s7); SamplerState s6_s : register(s6); SamplerState s5_s : register(s5); SamplerState s4_s : register(s4); SamplerState s3_s : register(s3); SamplerState s2_s : register(s2); SamplerState s1_s : register(s1); SamplerState s0_s : register(s0); cbuffer cb0 : register(b0) { float4 cb0[32]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_POSITION0, float2 v1 : TEXCOORD0, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18; uint4 bitmask, uiDest; float4 fDest; r0.xy = cb0[31].zw * v0.xy; float4 stereo = StereoParams.Load(0); //r0.x -= stereo.x * 0.5; // in depth but causing halos r1.xyz = cb0[27].xyz + -cb0[26].xyz; r1.xyz = r0.xxx * r1.xyz + cb0[26].xyz; r2.xyz = cb0[29].xyz + -cb0[28].xyz; r2.xyz = r0.xxx * r2.xyz + cb0[28].xyz; r2.xyz = r2.xyz + -r1.xyz; r1.xyz = r0.yyy * r2.xyz + r1.xyz; r0.z = dot(r1.xyz, r1.xyz); r0.z = rsqrt(r0.z); r0.w = 1 / r0.z; r2.xyz = r1.xyz * r0.zzz; r1.x = cb0[4].z * -r2.y; r1.xz = r1.xx * r1.xx + -cb0[5].zw; r1.w = cmp(cb0[4].x >= cb0[4].z); r3.x = ~(int)r1.w; r3.yz = sqrt(r1.xz); r4.xy = cb0[4].zz * -r2.yy + r3.zy; r3.w = 280 + -r4.y; r3.w = cmp(r3.w < 0); r3.w = r1.w ? r3.w : 0; if (r3.w != 0) discard; r3.w = cmp(cb0[5].x >= cb0[4].z); r4.z = ~(int)r3.w; r1.xz = cmp(r1.xz < float2(0,0)); r3.yz = cb0[4].zz * -r2.yy + -r3.yz; r5.xy = r1.xz ? float2(-1,-1) : r3.yz; r1.x = cmp(0 < r5.x); r1.z = cmp(640 < r4.x); r1.z = r1.z ? r1.x : 0; r6.x = r1.z ? r5.x : r4.x; r1.z = (int)r3.x & (int)r4.z; r5.z = r1.x ? r5.x : r4.x; r1.x = cmp(r5.y < 0); r1.x = r1.z ? r1.x : 0; if (r1.x != 0) discard; r6.y = 0; r1.xz = r3.ww ? r6.xy : r5.zy; r1.xz = r1.ww ? r4.xy : r1.xz; r1.xz = float2(1000,1000) * r1.xz; r1.x = min(280000, r1.x); r3.xyzw = t0.SampleLevel(s0_s, r0.xy, 0).xyzw; r1.w = cmp(r3.x >= cb0[0].y); r0.w = r3.x * r0.w; r0.w = r1.w ? 320000 : r0.w; r1.w = cmp(r2.y < 0); if (r1.w != 0) { r1.w = cb0[3].z * r2.y; r1.w = r1.w * r1.w + -cb0[3].y; r3.x = cmp(r1.w < 0); r1.w = sqrt(r1.w); r1.w = -cb0[3].z * r2.y + -r1.w; r1.w = 1000 * r1.w; r1.w = r3.x ? 320000 : r1.w; r0.w = min(r1.w, r0.w); } r1.x = min(r1.x, r0.w); r0.xy = cb0[2].xy * r0.xy; r3.xyzw = t1.SampleLevel(s1_s, r0.xy, 0).xyzw; r0.x = -r3.x * 320000 + 320000; r0.x = max(r0.x, r1.z); r0.y = cmp(r0.x >= r1.x); if (r0.y != 0) { if (-1 != 0) discard; } r0.y = dot(cb0[25].xzy, r2.xyz); r0.w = 0.00999999978 * r0.w; r1.z = r0.y * r0.y + 1; r1.z = 0.0596831031 * r1.z; r1.w = cb0[19].y * r0.y + cb0[19].z; r3.x = r1.w * r1.w; r1.w = rsqrt(r1.w); r1.w = r3.x * r1.w; r1.w = 1 / r1.w; r3.y = cb0[20].y * r1.w; r1.w = dot(r2.xz, r2.xz); r1.w = rsqrt(r1.w); r4.xy = r2.xz * r1.ww; r1.w = dot(cb0[25].xy, cb0[25].xy); r1.w = rsqrt(r1.w); r4.zw = cb0[25].xy * r1.ww; r1.w = dot(r4.xy, r4.zw); r1.w = 1 + -r1.w; r4.x = floor(r1.w); r1.w = saturate(-r4.x + r1.w); r4.y = r1.w * -2 + 3; r1.w = r1.w * r1.w; r1.w = r4.y * r1.w + r4.x; r4.xy = saturate(float2(-0.75,0.25) * r2.yy); r4.x = 0.75 + -r4.x; r4.y = r4.x + r4.y; r1.w = 0.5 + r1.w; r4.z = 0.333333343 * r1.w; r1.w = 400 + r1.x; r1.w = min(15744, r1.w); r5.x = cmp(0.135000005 < abs(r2.y)); if (r5.x != 0) { r5.x = 1 / r2.y; r5.y = 384 * abs(r5.x); r6.xyz = r5.yyy * r2.xyz; r5.z = -0.135000005 + abs(r2.y); r5.z = saturate(1.90476203 * r5.z); r5.z = r5.z * r5.z; r5.w = cmp(abs(r2.y) < 0.660000026); r5.w = r5.w ? -1 : 0.00999999978; r6.w = -cb0[1].y * r5.x + 1; r7.x = 1 / r5.y; r6.w = r7.x * r6.w; r6.w = frac(r6.w); r7.y = r6.w * r5.y; r7.z = cmp(r7.y < r0.x); r6.w = -r6.w * r5.y + r0.x; r6.w = 0.00999999978 + r6.w; r6.w = r6.w * r7.x; r6.w = ceil(r6.w); r5.y = r6.w * r5.y + r7.y; r5.y = r7.z ? r5.y : r7.y; r6.w = -r5.y + r1.w; r6.w = r6.w * r7.x; r6.w = ceil(r6.w); r6.w = min(45, r6.w); r6.w = (int)r6.w; r7.xyz = r5.yyy * r2.xyz; r8.xy = r7.xz * cb0[7].xz + cb0[9].xz; r7.xz = float2(0.00100000005,0.00100000005) * r7.xz; r7.y = r7.y * 0.00100000005 + cb0[4].z; r3.xzw = float3(1,0.429629624,0.175226584); r10.xyz = r7.xyz; r11.xy = r8.xy; r9.xyzw = float4(0,0,0,1); r7.w = r5.y; r8.z = r5.w; r8.w = 0; while (true) { r10.w = cmp((int)r8.w >= (int)r6.w); if (r10.w != 0) break; r10.w = dot(r10.xyz, r10.xyz); r10.w = sqrt(r10.w); r11.z = r10.w * cb0[6].x + cb0[6].y; r12.xyz = float3(35.2000008,35.2000008,4.4000001) * r11.xyz; r12.xyzw = t3.SampleLevel(s3_s, r12.xyz, 0).xyzw; r12.xyz = r12.xyz * cb0[16].xyz + cb0[15].xyz; r13.xyz = float3(109.120003,109.120003,13.6400003) * r11.xyz; r13.xyzw = t3.SampleLevel(s3_s, r13.xyz, 0).xyzw; r13.xyz = r13.xyz * cb0[16].xyz + cb0[15].xyz; r13.xyz = float3(0.5,0.5,0.5) * r13.xyz; r14.x = 0.00499999989 * r7.w; r10.w = saturate(-r7.w * 0.000127032516 + 2); r12.xyz = r13.xyz * r10.www + r12.xyz; r10.w = saturate(r11.z); r10.w = r10.w * 0.5 + 0.5; r12.xyz = r12.xyz * r10.www + r11.xyz; r13.xyzw = t4.SampleLevel(s4_s, r12.xyz, 0).xyzw; r10.w = cb0[12].w * r13.x; r11.z = -r7.w + r1.w; r11.z = saturate(0.00249999994 * r11.z); r10.w = r11.z * r10.w; r11.z = saturate(r7.w * -0.00999999978 + r0.w); r10.w = r11.z * r10.w; r14.x = saturate(r14.x); r10.w = r14.x * r10.w; r11.z = cmp(0.00100000005 < r10.w); if (r11.z != 0) { r10.w = saturate(1.001001 * r10.w); r12.xyzw = t5.SampleLevel(s5_s, r12.xyz, 0).xyzw; r11.z = cb0[11].x * r12.y; r11.w = r11.z * r11.z + 1; r12.w = dot(r0.yy, r11.zz); r11.w = -r12.w + r11.w; r11.z = -r11.z * r11.z + 1; r11.z = 0.0397887342 * r11.z; r12.w = r11.w * r11.w; r11.w = rsqrt(r11.w); r11.w = r12.w * r11.w; r11.w = 1 / r11.w; r11.z = r11.z * r11.w + 0.0397884995; r11.z = cb0[12].x * r11.z; r11.w = cb0[12].y * r12.z; r11.z = r12.y * r11.z + r11.w; r12.xyz = cb0[18].xyz * r12.xxx; r12.xyz = r11.zzz * cb0[17].xyz + r12.xyz; r11.z = 1.25000006e-005 * r7.w; r4.w = sqrt(r11.z); r13.xyzw = t7.SampleLevel(s7_s, r4.wy, 0).xyzw; r14.xyzw = t6.SampleLevel(s6_s, r4.wyz, 0).xyzw; r15.xyz = r14.xyz * r1.zzz; r4.w = max(9.99999975e-005, r14.x); r4.w = 1 / r4.w; r4.w = r14.w * r4.w; r14.xyz = r4.www * r3.xyy; r14.xyz = r14.xyz * r3.yzw + float3(1,1,1); r14.xyz = r15.xyz * r14.xyz; r14.xyz = max(float3(0,0,0), r14.xyz); r12.xyz = r13.xyz * r12.xyz; r12.xyz = r14.xyz * cb0[23].xyz + r12.xyz; r4.w = r10.w * r9.w; r9.xyz = r4.www * r12.xyz + r9.xyz; r4.w = 1 + -r10.w; r9.w = r9.w * r4.w; r4.w = cmp(r8.z >= r9.w); if (r4.w != 0) { o0.xyz = r9.www * r12.xyz + r9.xyz; o0.w = 0; return; } } r11.xy = r6.xz * cb0[7].xz + r11.xy; r10.xyz = r6.xyz * float3(0.00100000005,0.00100000005,0.00100000005) + r10.xyz; r7.w = abs(r5.x) * 384 + r7.w; r8.w = (int)r8.w + 1; } r4.w = cmp(abs(r2.y) >= 0.660000026); if (r4.w != 0) { r4.w = cmp(0.999000013 < r9.w); if (r4.w != 0) discard; o0.xyzw = r9.xyzw; return; } } else { r9.xyzw = float4(0,0,0,1); r5.z = 0; } r6.xyzw = cb0[7].xzxz * r2.xzxz; r4.w = -r2.y * r2.y + 1; r4.w = max(0, r4.w); r4.w = sqrt(r4.w); r5.xy = min(float2(40000,60000), r1.xx); r5.w = -cb0[13].x + 1; r7.xyzw = float4(0.00260416674,0.000651041686,0.000325520843,0.000108506945) * r5.wwww; r7.xyzw = frac(r7.xyzw); r8.xyzw = float4(384,1536,3072,9216) * r7.xyzw; r5.w = cmp(r8.x < r0.x); r0.x = -r7.x * 384 + r0.x; r0.x = 0.00999999978 + r0.x; r0.x = 0.00260416674 * r0.x; r0.x = ceil(r0.x); r0.x = r0.x * 384 + r8.x; r0.x = r5.w ? r0.x : r8.x; r5.w = r1.w + -r0.x; r5.w = 0.00260416674 * r5.w; r5.w = ceil(r5.w); r5.w = min(45, r5.w); r7.x = (int)r5.w; r5.w = r5.w * 384 + r0.x; r8.x = cmp(r8.y < r1.w); r7.y = -r7.y * 1536 + r1.w; r7.y = 0.00999999978 + r7.y; r7.y = 0.000651041686 * r7.y; r7.y = ceil(r7.y); r7.y = r7.y * 1536 + r8.y; r7.y = r8.x ? r7.y : r8.y; r5.w = 1151.98999 + r5.w; r5.w = cmp(r5.w >= r7.y); r1.w = r5.w ? r1.w : 1000000; r10.xyz = r0.xxx * r2.xyz; r8.xy = r10.xz * cb0[7].xz + cb0[9].xz; r10.xz = float2(0.00100000005,0.00100000005) * r10.xz; r5.w = r10.y * 0.00100000005 + cb0[4].z; r3.xzw = float3(1,0.429629624,0.175226584); r11.w = 0; r13.xz = r10.xz; r13.y = r5.w; r14.xy = r8.xy; r10.y = 1; r10.w = r0.x; r12.xyzw = float4(0,0,0,0); while (true) { r13.w = cmp((int)r12.w >= (int)r7.x); if (r13.w != 0) break; r13.w = dot(r13.xyz, r13.xyz); r13.w = sqrt(r13.w); r14.z = r13.w * cb0[6].x + cb0[6].y; r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz; r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw; r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz; r16.xyz = float3(109.120003,109.120003,13.6400003) * r14.xyz; r16.xyzw = t3.SampleLevel(s3_s, r16.xyz, 0).xyzw; r16.xyz = r16.xyz * cb0[16].xyz + cb0[15].xyz; r16.xyz = float3(0.5,0.5,0.5) * r16.xyz; r17.x = 0.00499999989 * r10.w; r13.w = saturate(-r10.w * 0.000127032516 + 2); r15.xyz = r16.xyz * r13.www + r15.xyz; r13.w = saturate(r14.z); r13.w = r13.w * 0.5 + 0.5; r15.xyz = r15.xyz * r13.www + r14.xyz; r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, 0).xyzw; r13.w = cb0[12].w * r16.x; r14.z = -r10.w + r1.w; r14.z = saturate(0.00249999994 * r14.z); r13.w = r14.z * r13.w; r14.z = saturate(r10.w * -0.00999999978 + r0.w); r13.w = r14.z * r13.w; r17.x = saturate(r17.x); r13.w = r17.x * r13.w; r14.z = cmp(0.00100000005 < r13.w); if (r14.z != 0) { r13.w = saturate(1.001001 * r13.w); r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, 0).xyzw; r14.z = cb0[11].x * r15.y; r14.w = r14.z * r14.z + 1; r15.w = dot(r0.yy, r14.zz); r14.w = -r15.w + r14.w; r14.z = -r14.z * r14.z + 1; r14.z = 0.0397887342 * r14.z; r15.w = r14.w * r14.w; r14.w = rsqrt(r14.w); r14.w = r15.w * r14.w; r14.w = 1 / r14.w; r14.z = r14.z * r14.w + 0.0397884995; r14.z = cb0[12].x * r14.z; r14.w = cb0[12].y * r15.z; r14.z = r15.y * r14.z + r14.w; r15.xyz = cb0[18].xyz * r15.xxx; r15.xyz = r14.zzz * cb0[17].xyz + r15.xyz; r14.z = 1.25000006e-005 * r10.w; r4.x = sqrt(r14.z); r16.xyzw = t7.SampleLevel(s7_s, r4.xy, 0).xyzw; r17.xyzw = t6.SampleLevel(s6_s, r4.xyz, 0).xyzw; r18.xyz = r17.xyz * r1.zzz; r14.z = max(9.99999975e-005, r17.x); r14.z = 1 / r14.z; r14.z = r17.w * r14.z; r17.xyz = r14.zzz * r3.xyy; r17.xyz = r17.xyz * r3.yzw + float3(1,1,1); r17.xyz = r18.xyz * r17.xyz; r17.xyz = max(float3(0,0,0), r17.xyz); r15.xyz = r16.xyz * r15.xyz; r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz; r14.z = r13.w * r10.y; r12.xyz = r14.zzz * r15.xyz + r12.xyz; r13.w = 1 + -r13.w; r10.y = r13.w * r10.y; r13.w = cmp(0.00999999978 >= r10.y); if (r13.w != 0) { r11.xyz = r10.yyy * r15.xyz + r12.xyz; r15.xyzw = -r11.xyzw + r9.xyzw; o0.xyzw = r5.zzzz * r15.xyzw + r11.xyzw; return; } } r14.xy = r6.zw * float2(384,384) + r14.xy; r13.xyz = r2.xyz * float3(0.384000003,0.384000003,0.384000003) + r13.xyz; r10.w = 384 + r10.w; r12.w = (int)r12.w + 1; } r0.x = -r7.y + r5.x; r0.x = 0.000651041686 * r0.x; r0.x = ceil(r0.x); r0.x = min(45, r0.x); r1.w = (int)r0.x; r0.x = r0.x * 1536 + r7.y; r8.xy = cmp(r8.zw < r5.xy); r7.xz = -r7.zw * float2(3072,9216) + r5.xy; r7.xz = float2(0.00999999978,0.00999999978) + r7.xz; r7.xz = float2(0.000325520843,0.000108506945) * r7.xz; r7.xz = ceil(r7.xz); r7.xz = r7.xz * float2(3072,9216) + r8.zw; r7.xz = r8.xy ? r7.xz : r8.zw; r0.x = 1535.98999 + r0.x; r0.x = cmp(r0.x >= r7.x); r0.x = r0.x ? r5.x : 1000000; r8.xyz = r7.yyy * r2.xyz; r5.xw = r8.xz * cb0[7].xz + cb0[9].xz; r8.xz = float2(0.00100000005,0.00100000005) * r8.xz; r7.w = r8.y * 0.00100000005 + cb0[4].z; r8.y = cb0[14].x * 3.57142858e-006; r3.xzw = float3(1,0.429629624,0.175226584); r11.w = 0; r10.xzw = r12.xyz; r13.xz = r8.xz; r13.y = r7.w; r14.xy = r5.xw; r8.w = r10.y; r12.w = r7.y; r13.w = 0; while (true) { r14.w = cmp((int)r13.w >= (int)r1.w); if (r14.w != 0) break; r14.w = dot(r13.xyz, r13.xyz); r14.w = sqrt(r14.w); r14.z = r14.w * cb0[6].x + cb0[6].y; r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz; r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw; r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz; r14.w = saturate(r14.z); r14.w = r14.w * 0.5 + 0.5; r15.xyz = r15.xyz * r14.www + r14.xyz; r14.z = r12.w * r8.y; r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, r14.z).xyzw; r14.w = cb0[12].w * r16.x; r15.w = -r12.w + r0.x; r15.w = saturate(0.00249999994 * r15.w); r14.w = r15.w * r14.w; r15.w = saturate(r12.w * -0.00999999978 + r0.w); r14.w = r15.w * r14.w; r15.w = cmp(0.00100000005 < r14.w); if (r15.w != 0) { r14.w = saturate(1.001001 * r14.w); r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, r14.z).xyzw; r14.z = cb0[11].x * r15.y; r15.w = r14.z * r14.z + 1; r16.x = dot(r0.yy, r14.zz); r15.w = -r16.x + r15.w; r14.z = -r14.z * r14.z + 1; r14.z = 0.0397887342 * r14.z; r16.x = r15.w * r15.w; r15.w = rsqrt(r15.w); r15.w = r16.x * r15.w; r15.w = 1 / r15.w; r14.z = r14.z * r15.w + 0.0397884995; r14.z = cb0[12].x * r14.z; r15.z = cb0[12].y * r15.z; r14.z = r15.y * r14.z + r15.z; r15.xyz = cb0[18].xyz * r15.xxx; r15.xyz = r14.zzz * cb0[17].xyz + r15.xyz; r14.z = 1.25000006e-005 * r12.w; r4.x = sqrt(r14.z); r16.xyzw = t7.SampleLevel(s7_s, r4.xy, 0).xyzw; r17.xyzw = t6.SampleLevel(s6_s, r4.xyz, 0).xyzw; r18.xyz = r17.xyz * r1.zzz; r14.z = max(9.99999975e-005, r17.x); r14.z = 1 / r14.z; r14.z = r17.w * r14.z; r17.xyz = r14.zzz * r3.xyy; r17.xyz = r17.xyz * r3.yzw + float3(1,1,1); r17.xyz = r18.xyz * r17.xyz; r17.xyz = max(float3(0,0,0), r17.xyz); r15.xyz = r16.xyz * r15.xyz; r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz; r14.z = r14.w * r8.w; r10.xzw = r14.zzz * r15.xyz + r10.xzw; r14.z = 1 + -r14.w; r8.w = r14.z * r8.w; r14.z = cmp(0.00999999978 >= r8.w); if (r14.z != 0) { r11.xyz = r8.www * r15.xyz + r10.xzw; r15.xyzw = -r11.xyzw + r9.xyzw; o0.xyzw = r5.zzzz * r15.xyzw + r11.xyzw; return; } } r14.xy = r6.zw * float2(1536,1536) + r14.xy; r13.xyz = r2.xyz * float3(1.53600001,1.53600001,1.53600001) + r13.xyz; r12.w = 1536 + r12.w; r13.w = (int)r13.w + 1; } r0.x = -r7.x + r5.y; r0.x = 0.000325520843 * r0.x; r0.x = ceil(r0.x); r0.x = min(45, r0.x); r1.w = (int)r0.x; r0.x = r0.x * 3072 + r7.x; r0.x = 6143.99023 + r0.x; r0.x = cmp(r0.x >= r7.z); r0.x = r0.x ? r5.y : 1000000; r5.xyw = r7.xxx * r2.xyz; r7.yw = r5.xw * cb0[7].xz + cb0[9].xz; r5.xw = float2(0.00100000005,0.00100000005) * r5.xw; r5.y = r5.y * 0.00100000005 + cb0[4].z; r3.xzw = float3(1,0.429629624,0.175226584); r11.w = 0; r12.xyz = r10.xzw; r13.xyz = r5.xyw; r14.xy = r7.yw; r8.x = r8.w; r8.z = r7.x; r10.y = 0; while (true) { r12.w = cmp((int)r10.y >= (int)r1.w); if (r12.w != 0) break; r12.w = dot(r13.xyz, r13.xyz); r12.w = sqrt(r12.w); r14.z = r12.w * cb0[6].x + cb0[6].y; r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz; r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw; r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz; r12.w = saturate(r14.z); r12.w = r12.w * 0.5 + 0.5; r15.xyz = r15.xyz * r12.www + r14.xyz; r12.w = r8.z * r8.y; r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, r12.w).xyzw; r13.w = cb0[12].w * r16.x; r14.z = -r8.z + r0.x; r14.z = saturate(0.00249999994 * r14.z); r13.w = r14.z * r13.w; r14.z = saturate(r8.z * -0.00999999978 + r0.w); r13.w = r14.z * r13.w; r14.z = cmp(0.00100000005 < r13.w); if (r14.z != 0) { r13.w = saturate(1.001001 * r13.w); r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, r12.w).xyzw; r12.w = cb0[11].x * r15.y; r14.z = r12.w * r12.w + 1; r14.w = dot(r0.yy, r12.ww); r14.z = r14.z + -r14.w; r12.w = -r12.w * r12.w + 1; r12.w = 0.0397887342 * r12.w; r14.w = r14.z * r14.z; r14.z = rsqrt(r14.z); r14.z = r14.w * r14.z; r14.z = 1 / r14.z; r12.w = r12.w * r14.z + 0.0397884995; r12.w = cb0[12].x * r12.w; r14.z = cb0[12].y * r15.z; r12.w = r15.y * r12.w + r14.z; r15.xyz = cb0[18].xyz * r15.xxx; r15.xyz = r12.www * cb0[17].xyz + r15.xyz; r12.w = 1.25000006e-005 * r8.z; r4.x = sqrt(r12.w); r16.xyzw = t7.SampleLevel(s7_s, r4.xy, 0).xyzw; r17.xyzw = t6.SampleLevel(s6_s, r4.xyz, 0).xyzw; r18.xyz = r17.xyz * r1.zzz; r12.w = max(9.99999975e-005, r17.x); r12.w = 1 / r12.w; r12.w = r17.w * r12.w; r17.xyz = r12.www * r3.xyy; r17.xyz = r17.xyz * r3.yzw + float3(1,1,1); r17.xyz = r18.xyz * r17.xyz; r17.xyz = max(float3(0,0,0), r17.xyz); r15.xyz = r16.xyz * r15.xyz; r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz; r12.w = r13.w * r8.x; r12.xyz = r12.www * r15.xyz + r12.xyz; r12.w = 1 + -r13.w; r8.x = r12.w * r8.x; r12.w = cmp(0.00999999978 >= r8.x); if (r12.w != 0) { r11.xyz = r8.xxx * r15.xyz + r12.xyz; r15.xyzw = -r11.xyzw + r9.xyzw; o0.xyzw = r5.zzzz * r15.xyzw + r11.xyzw; return; } } r14.xy = r6.xy * float2(3072,3072) + r14.xy; r13.xyz = r2.xyz * float3(3.07200003,3.07200003,3.07200003) + r13.xyz; r8.z = 3072 + r8.z; r10.y = (int)r10.y + 1; } r0.x = -r7.z + r1.x; r0.x = 0.000108506945 * r0.x; r0.x = ceil(r0.x); r0.x = min(45, r0.x); r0.x = (int)r0.x; r5.xyw = r7.zzz * r2.xyz; r6.xy = r5.xw * cb0[7].xz + cb0[9].xz; r5.xw = float2(0.00100000005,0.00100000005) * r5.xw; r1.w = r5.y * 0.00100000005 + cb0[4].z; r7.xy = cb0[24].xx * float2(0.0625,50.2654839); r7.xy = sqrt(r7.xy); r4.y = -cb0[24].x + 6360; r5.y = 0.180336878 * r4.y; r5.y = exp2(r5.y); r5.y = r7.y * r5.y; r7.yw = cb0[24].xx * cb0[22].yx; r7.yw = float2(0.5,6.28318548) * r7.yw; r7.yw = sqrt(r7.yw); r4.y = cb0[22].y * r4.y; r4.yw = float2(1.44269502,3.57142858e-006) * r4.yw; r4.y = exp2(r4.y); r4.y = r7.w * r4.y; r8.zw = float2(1,1); r3.xzw = float3(1,0.429629624,0.175226584); r10.w = 0; r11.xyz = r12.xyz; r13.xz = r5.xw; r13.y = r1.w; r14.xy = r6.xy; r11.w = r8.x; r7.w = r7.z; r12.w = 0; while (true) { r13.w = cmp((int)r12.w >= (int)r0.x); if (r13.w != 0) break; r13.w = dot(r13.xyz, r13.xyz); r13.w = sqrt(r13.w); r14.z = r13.w * cb0[6].x + cb0[6].y; r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz; r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw; r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz; r13.w = saturate(r14.z); r13.w = r13.w * 0.5 + 0.5; r15.xyz = r15.xyz * r13.www + r14.xyz; r13.w = r7.w * r8.y; r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, r13.w).xyzw; r14.z = cb0[12].w * r16.x; r14.w = -r7.w + r1.x; r14.w = saturate(0.00249999994 * r14.w); r14.z = r14.z * r14.w; r14.w = saturate(r7.w * -0.00999999978 + r0.w); r14.z = r14.z * r14.w; r14.w = cmp(0.00100000005 < r14.z); if (r14.w != 0) { r14.z = saturate(1.001001 * r14.z); r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, r13.w).xyzw; r13.w = cb0[11].x * r15.y; r14.w = r13.w * r13.w + 1; r15.w = dot(r0.yy, r13.ww); r14.w = -r15.w + r14.w; r13.w = -r13.w * r13.w + 1; r13.w = 0.0397887342 * r13.w; r15.w = r14.w * r14.w; r14.w = rsqrt(r14.w); r14.w = r15.w * r14.w; r14.w = 1 / r14.w; r13.w = r13.w * r14.w + 0.0397884995; r13.w = cb0[12].x * r13.w; r14.w = cb0[12].y * r15.z; r13.w = r15.y * r13.w + r14.w; r15.xyz = cb0[18].xyz * r15.xxx; r15.xyz = r13.www * cb0[17].xyz + r15.xyz; r16.xy = float2(0.00100000005,-0.000125000006) * r7.ww; r13.w = r16.x / cb0[24].x; r2.w = r1.y * r0.z + r13.w; r16.zw = r7.xx * r2.yw; r17.xy = cmp(r16.zw >= float2(0,0)); r17.xy = r17.xy ? float2(1,1) : float2(-1,-1); r17.xy = (int2)r17.xy; r18.xyz = r16.zzw * r16.zzw; r14.w = cmp(r17.x < r17.y); r15.w = 1.44269502 * r18.x; r15.w = exp2(r15.w); r14.w = r14.w ? r15.w : 0; r17.zw = r18.yz * float2(1.51999998,1.51999998) + float2(4,4); r17.zw = sqrt(r17.zw); r16.zw = abs(r16.zw) * float2(2.31929994,2.31929994) + r17.zw; r16.zw = r17.xy / r16.zw; r13.w = r13.w * 0.5 + r2.y; r15.w = r16.y * r13.w; r15.w = 1.44269502 * r15.w; r15.w = exp2(r15.w); r15.w = r16.w * r15.w; r15.w = r16.z * r8.z + -r15.w; r14.w = r15.w + r14.w; r14.w = r14.w * r5.y; r16.yz = r7.yy * r2.yw; r17.xy = cmp(r16.yz >= float2(0,0)); r17.xy = r17.xy ? float2(1,1) : float2(-1,-1); r17.xy = (int2)r17.xy; r18.xyz = r16.yyz * r16.yyz; r2.w = cmp(r17.x < r17.y); r15.w = 1.44269502 * r18.x; r15.w = exp2(r15.w); r2.w = r2.w ? r15.w : 0; r17.zw = r18.yz * float2(1.51999998,1.51999998) + float2(4,4); r17.zw = sqrt(r17.zw); r16.yz = abs(r16.yz) * float2(2.31929994,2.31929994) + r17.zw; r16.yz = r17.xy / r16.yz; r15.w = cb0[22].y * -r16.x; r13.w = r15.w * r13.w; r13.w = 1.44269502 * r13.w; r13.w = exp2(r13.w); r13.w = r16.z * r13.w; r13.w = r16.y * r8.w + -r13.w; r2.w = r13.w + r2.w; r2.w = r4.y * r2.w; r16.xyz = cb0[21].xyz * r2.www; r16.xyz = r14.www * float3(-0.00579999993,-0.0135000004,-0.0331000015) + -r16.xyz; r16.xyz = float3(1.44269502,1.44269502,1.44269502) * r16.xyz; r16.xyz = exp2(r16.xyz); r16.xyz = min(float3(1,1,1), r16.xyz); r4.x = r7.w * r4.w; r17.xyzw = t2.SampleLevel(s2_s, r4.xz, 0).xyzw; r18.xyz = r17.xyz * r1.zzz; r2.w = max(9.99999975e-005, r17.x); r2.w = 1 / r2.w; r2.w = r17.w * r2.w; r17.xyz = r2.www * r3.xyy; r17.xyz = r17.xyz * r3.yzw + float3(1,1,1); r17.xyz = r18.xyz * r17.xyz; r17.xyz = max(float3(0,0,0), r17.xyz); r15.xyz = r16.xyz * r15.xyz; r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz; r2.w = r14.z * r11.w; r11.xyz = r2.www * r15.xyz + r11.xyz; r2.w = 1 + -r14.z; r11.w = r11.w * r2.w; r2.w = cmp(0.00999999978 >= r11.w); if (r2.w != 0) { r10.xyz = r11.www * r15.xyz + r11.xyz; r15.xyzw = -r10.xyzw + r9.xyzw; o0.xyzw = r5.zzzz * r15.xyzw + r10.xyzw; return; } } r14.xy = r6.zw * float2(9216,9216) + r14.xy; r13.xyz = r2.xyz * float3(9.21600056,9.21600056,9.21600056) + r13.xyz; r7.w = 9216 + r7.w; r12.w = (int)r12.w + 1; } r0.xyzw = -r11.xyzw + r9.xyzw; r0.xyzw = r5.zzzz * r0.xyzw + r11.xyzw; r1.x = cmp(0.999000013 < r0.w); if (r1.x != 0) discard; o0.xyzw = r0.xyzw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.56 on Wed Apr 05 10:53:05 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float xy // TEXCOORD 0 xy 1 NONE float // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[32], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default dcl_sampler s3, mode_default dcl_sampler s4, mode_default dcl_sampler s5, mode_default dcl_sampler s6, mode_default dcl_sampler s7, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_resource_texture2d (float,float,float,float) t2 dcl_resource_texture3d (float,float,float,float) t3 dcl_resource_texture3d (float,float,float,float) t4 dcl_resource_texture3d (float,float,float,float) t5 dcl_resource_texture3d (float,float,float,float) t6 dcl_resource_texture2d (float,float,float,float) t7 dcl_input_ps_siv linear noperspective v0.xy, position dcl_output o0.xyzw dcl_temps 19 mul r0.xy, v0.xyxx, cb0[31].zwzz add r1.xyz, -cb0[26].xyzx, cb0[27].xyzx mad r1.xyz, r0.xxxx, r1.xyzx, cb0[26].xyzx add r2.xyz, -cb0[28].xyzx, cb0[29].xyzx mad r2.xyz, r0.xxxx, r2.xyzx, cb0[28].xyzx add r2.xyz, -r1.xyzx, r2.xyzx mad r1.xyz, r0.yyyy, r2.xyzx, r1.xyzx dp3 r0.z, r1.xyzx, r1.xyzx rsq r0.z, r0.z div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z mul r2.xyz, r0.zzzz, r1.xyzx mul r1.x, -r2.y, cb0[4].z mad r1.xz, r1.xxxx, r1.xxxx, -cb0[5].zzwz ge r1.w, cb0[4].x, cb0[4].z not r3.x, r1.w sqrt r3.yz, r1.xxzx mad r4.xy, cb0[4].zzzz, -r2.yyyy, r3.zyzz add r3.w, -r4.y, l(280.000000) lt r3.w, r3.w, l(0.000000) and r3.w, r1.w, r3.w discard_nz r3.w ge r3.w, cb0[5].x, cb0[4].z not r4.z, r3.w lt r1.xz, r1.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) mad r3.yz, cb0[4].zzzz, -r2.yyyy, -r3.yyzy movc r5.xy, r1.xzxx, l(-1.000000,-1.000000,0,0), r3.yzyy lt r1.x, l(0.000000), r5.x lt r1.z, l(640.000000), r4.x and r1.z, r1.z, r1.x movc r6.x, r1.z, r5.x, r4.x and r1.z, r3.x, r4.z movc r5.z, r1.x, r5.x, r4.x lt r1.x, r5.y, l(0.000000) and r1.x, r1.z, r1.x discard_nz r1.x mov r6.y, l(0) movc r1.xz, r3.wwww, r6.xxyx, r5.zzyz movc r1.xz, r1.wwww, r4.xxyx, r1.xxzx mul r1.xz, r1.xxzx, l(1000.000000, 0.000000, 1000.000000, 0.000000) min r1.x, r1.x, l(280000.000000) sample_l r3.xyzw, r0.xyxx, t0.xyzw, s0, l(0.000000) ge r1.w, r3.x, cb0[0].y mul r0.w, r0.w, r3.x movc r0.w, r1.w, l(320000.000000), r0.w lt r1.w, r2.y, l(0.000000) if_nz r1.w mul r1.w, r2.y, cb0[3].z mad r1.w, r1.w, r1.w, -cb0[3].y lt r3.x, r1.w, l(0.000000) sqrt r1.w, r1.w mad r1.w, -cb0[3].z, r2.y, -r1.w mul r1.w, r1.w, l(1000.000000) movc r1.w, r3.x, l(320000.000000), r1.w min r0.w, r0.w, r1.w endif min r1.x, r0.w, r1.x mul r0.xy, r0.xyxx, cb0[2].xyxx sample_l r3.xyzw, r0.xyxx, t1.xyzw, s1, l(0.000000) mad r0.x, -r3.x, l(320000.000000), l(320000.000000) max r0.x, r1.z, r0.x ge r0.y, r0.x, r1.x if_nz r0.y discard_nz l(-1) endif dp3 r0.y, cb0[25].xzyx, r2.xyzx mul r0.w, r0.w, l(0.010000) mad r1.z, r0.y, r0.y, l(1.000000) mul r1.z, r1.z, l(0.0596831031) mad r1.w, cb0[19].y, r0.y, cb0[19].z mul r3.x, r1.w, r1.w rsq r1.w, r1.w mul r1.w, r1.w, r3.x div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w mul r3.y, r1.w, cb0[20].y dp2 r1.w, r2.xzxx, r2.xzxx rsq r1.w, r1.w mul r4.xy, r1.wwww, r2.xzxx dp2 r1.w, cb0[25].xyxx, cb0[25].xyxx rsq r1.w, r1.w mul r4.zw, r1.wwww, cb0[25].xxxy dp2 r1.w, r4.xyxx, r4.zwzz add r1.w, -r1.w, l(1.000000) round_ni r4.x, r1.w add_sat r1.w, r1.w, -r4.x mad r4.y, r1.w, l(-2.000000), l(3.000000) mul r1.w, r1.w, r1.w mad r1.w, r4.y, r1.w, r4.x mul_sat r4.xy, r2.yyyy, l(-0.750000, 0.250000, 0.000000, 0.000000) add r4.x, -r4.x, l(0.750000) add r4.y, r4.y, r4.x add r1.w, r1.w, l(0.500000) mul r4.z, r1.w, l(0.333333343) add r1.w, r1.x, l(400.000000) min r1.w, r1.w, l(15744.000000) lt r5.x, l(0.135000), |r2.y| if_nz r5.x div r5.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.y mul r5.y, |r5.x|, l(384.000000) mul r6.xyz, r2.xyzx, r5.yyyy add r5.z, |r2.y|, l(-0.135000) mul_sat r5.z, r5.z, l(1.904762) mul r5.z, r5.z, r5.z lt r5.w, |r2.y|, l(0.660000) movc r5.w, r5.w, l(-1.000000), l(0.010000) mad r6.w, -cb0[1].y, r5.x, l(1.000000) div r7.x, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y mul r6.w, r6.w, r7.x frc r6.w, r6.w mul r7.y, r5.y, r6.w lt r7.z, r7.y, r0.x mad r6.w, -r6.w, r5.y, r0.x add r6.w, r6.w, l(0.010000) mul r6.w, r7.x, r6.w round_pi r6.w, r6.w mad r5.y, r6.w, r5.y, r7.y movc r5.y, r7.z, r5.y, r7.y add r6.w, r1.w, -r5.y mul r6.w, r7.x, r6.w round_pi r6.w, r6.w min r6.w, r6.w, l(45.000000) ftoi r6.w, r6.w mul r7.xyz, r2.xyzx, r5.yyyy mad r8.xy, r7.xzxx, cb0[7].xzxx, cb0[9].xzxx mul r7.xz, r7.xxzx, l(0.001000, 0.000000, 0.001000, 0.000000) mad r7.y, r7.y, l(0.001000), cb0[4].z mov r3.xzw, l(1.000000,0,0.429629624,0.175226584) mov r10.xyz, r7.xyzx mov r11.xy, r8.xyxx mov r9.xyzw, l(0,0,0,1.000000) mov r7.w, r5.y mov r8.z, r5.w mov r8.w, l(0) loop ige r10.w, r8.w, r6.w breakc_nz r10.w dp3 r10.w, r10.xyzx, r10.xyzx sqrt r10.w, r10.w mad r11.z, r10.w, cb0[6].x, cb0[6].y mul r12.xyz, r11.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000) sample_l r12.xyzw, r12.xyzx, t3.xyzw, s3, l(0.000000) mad r12.xyz, r12.xyzx, cb0[16].xyzx, cb0[15].xyzx mul r13.xyz, r11.xyzx, l(109.120003, 109.120003, 13.640000, 0.000000) sample_l r13.xyzw, r13.xyzx, t3.xyzw, s3, l(0.000000) mad r13.xyz, r13.xyzx, cb0[16].xyzx, cb0[15].xyzx mul r13.xyz, r13.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r14.x, r7.w, l(0.005000) mad_sat r10.w, -r7.w, l(0.000127032516), l(2.000000) mad r12.xyz, r13.xyzx, r10.wwww, r12.xyzx mov_sat r10.w, r11.z mad r10.w, r10.w, l(0.500000), l(0.500000) mad r12.xyz, r12.xyzx, r10.wwww, r11.xyzx sample_l r13.xyzw, r12.xyzx, t4.xyzw, s4, l(0.000000) mul r10.w, r13.x, cb0[12].w add r11.z, r1.w, -r7.w mul_sat r11.z, r11.z, l(0.002500) mul r10.w, r10.w, r11.z mad_sat r11.z, r7.w, l(-0.010000), r0.w mul r10.w, r10.w, r11.z mov_sat r14.x, r14.x mul r10.w, r10.w, r14.x lt r11.z, l(0.001000), r10.w if_nz r11.z mul_sat r10.w, r10.w, l(1.001001) sample_l r12.xyzw, r12.xyzx, t5.xyzw, s5, l(0.000000) mul r11.z, r12.y, cb0[11].x mad r11.w, r11.z, r11.z, l(1.000000) dp2 r12.w, r0.yyyy, r11.zzzz add r11.w, r11.w, -r12.w mad r11.z, -r11.z, r11.z, l(1.000000) mul r11.z, r11.z, l(0.0397887342) mul r12.w, r11.w, r11.w rsq r11.w, r11.w mul r11.w, r11.w, r12.w div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w mad r11.z, r11.z, r11.w, l(0.0397884995) mul r11.z, r11.z, cb0[12].x mul r11.w, r12.z, cb0[12].y mad r11.z, r12.y, r11.z, r11.w mul r12.xyz, r12.xxxx, cb0[18].xyzx mad r12.xyz, r11.zzzz, cb0[17].xyzx, r12.xyzx mul r11.z, r7.w, l(0.0000125000006) sqrt r4.w, r11.z sample_l r13.xyzw, r4.wyww, t7.xyzw, s7, l(0.000000) sample_l r14.xyzw, r4.wyzw, t6.xyzw, s6, l(0.000000) mul r15.xyz, r1.zzzz, r14.xyzx max r4.w, r14.x, l(0.000100) div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w mul r4.w, r4.w, r14.w mul r14.xyz, r3.xyyx, r4.wwww mad r14.xyz, r14.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) mul r14.xyz, r14.xyzx, r15.xyzx max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mul r12.xyz, r12.xyzx, r13.xyzx mad r12.xyz, r14.xyzx, cb0[23].xyzx, r12.xyzx mul r4.w, r9.w, r10.w mad r9.xyz, r4.wwww, r12.xyzx, r9.xyzx add r4.w, -r10.w, l(1.000000) mul r9.w, r4.w, r9.w ge r4.w, r8.z, r9.w if_nz r4.w mad o0.xyz, r9.wwww, r12.xyzx, r9.xyzx mov o0.w, l(0) ret endif endif mad r11.xy, r6.xzxx, cb0[7].xzxx, r11.xyxx mad r10.xyz, r6.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000), r10.xyzx mad r7.w, |r5.x|, l(384.000000), r7.w iadd r8.w, r8.w, l(1) endloop ge r4.w, |r2.y|, l(0.660000) if_nz r4.w lt r4.w, l(0.999000), r9.w discard_nz r4.w mov o0.xyzw, r9.xyzw ret endif else mov r9.xyzw, l(0,0,0,1.000000) mov r5.z, l(0) endif mul r6.xyzw, r2.xzxz, cb0[7].xzxz mad r4.w, -r2.y, r2.y, l(1.000000) max r4.w, r4.w, l(0.000000) sqrt r4.w, r4.w min r5.xy, r1.xxxx, l(40000.000000, 60000.000000, 0.000000, 0.000000) add r5.w, l(1.000000), -cb0[13].x mul r7.xyzw, r5.wwww, l(0.00260416674, 0.000651041686, 0.000325520843, 0.000108506945) frc r7.xyzw, r7.xyzw mul r8.xyzw, r7.xyzw, l(384.000000, 1536.000000, 3072.000000, 9216.000000) lt r5.w, r8.x, r0.x mad r0.x, -r7.x, l(384.000000), r0.x add r0.x, r0.x, l(0.010000) mul r0.x, r0.x, l(0.00260416674) round_pi r0.x, r0.x mad r0.x, r0.x, l(384.000000), r8.x movc r0.x, r5.w, r0.x, r8.x add r5.w, -r0.x, r1.w mul r5.w, r5.w, l(0.00260416674) round_pi r5.w, r5.w min r5.w, r5.w, l(45.000000) ftoi r7.x, r5.w mad r5.w, r5.w, l(384.000000), r0.x lt r8.x, r8.y, r1.w mad r7.y, -r7.y, l(1536.000000), r1.w add r7.y, r7.y, l(0.010000) mul r7.y, r7.y, l(0.000651041686) round_pi r7.y, r7.y mad r7.y, r7.y, l(1536.000000), r8.y movc r7.y, r8.x, r7.y, r8.y add r5.w, r5.w, l(1151.989990) ge r5.w, r5.w, r7.y movc r1.w, r5.w, r1.w, l(1000000.000000) mul r10.xyz, r2.xyzx, r0.xxxx mad r8.xy, r10.xzxx, cb0[7].xzxx, cb0[9].xzxx mul r10.xz, r10.xxzx, l(0.001000, 0.000000, 0.001000, 0.000000) mad r5.w, r10.y, l(0.001000), cb0[4].z mov r3.xzw, l(1.000000,0,0.429629624,0.175226584) mov r11.w, l(0) mov r13.xz, r10.xxzx mov r13.y, r5.w mov r14.xy, r8.xyxx mov r10.y, l(1.000000) mov r10.w, r0.x mov r12.xyzw, l(0,0,0,0) loop ige r13.w, r12.w, r7.x breakc_nz r13.w dp3 r13.w, r13.xyzx, r13.xyzx sqrt r13.w, r13.w mad r14.z, r13.w, cb0[6].x, cb0[6].y mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000) sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000) mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx mul r16.xyz, r14.xyzx, l(109.120003, 109.120003, 13.640000, 0.000000) sample_l r16.xyzw, r16.xyzx, t3.xyzw, s3, l(0.000000) mad r16.xyz, r16.xyzx, cb0[16].xyzx, cb0[15].xyzx mul r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r17.x, r10.w, l(0.005000) mad_sat r13.w, -r10.w, l(0.000127032516), l(2.000000) mad r15.xyz, r16.xyzx, r13.wwww, r15.xyzx mov_sat r13.w, r14.z mad r13.w, r13.w, l(0.500000), l(0.500000) mad r15.xyz, r15.xyzx, r13.wwww, r14.xyzx sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, l(0.000000) mul r13.w, r16.x, cb0[12].w add r14.z, r1.w, -r10.w mul_sat r14.z, r14.z, l(0.002500) mul r13.w, r13.w, r14.z mad_sat r14.z, r10.w, l(-0.010000), r0.w mul r13.w, r13.w, r14.z mov_sat r17.x, r17.x mul r13.w, r13.w, r17.x lt r14.z, l(0.001000), r13.w if_nz r14.z mul_sat r13.w, r13.w, l(1.001001) sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, l(0.000000) mul r14.z, r15.y, cb0[11].x mad r14.w, r14.z, r14.z, l(1.000000) dp2 r15.w, r0.yyyy, r14.zzzz add r14.w, r14.w, -r15.w mad r14.z, -r14.z, r14.z, l(1.000000) mul r14.z, r14.z, l(0.0397887342) mul r15.w, r14.w, r14.w rsq r14.w, r14.w mul r14.w, r14.w, r15.w div r14.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w mad r14.z, r14.z, r14.w, l(0.0397884995) mul r14.z, r14.z, cb0[12].x mul r14.w, r15.z, cb0[12].y mad r14.z, r15.y, r14.z, r14.w mul r15.xyz, r15.xxxx, cb0[18].xyzx mad r15.xyz, r14.zzzz, cb0[17].xyzx, r15.xyzx mul r14.z, r10.w, l(0.0000125000006) sqrt r4.x, r14.z sample_l r16.xyzw, r4.xyxx, t7.xyzw, s7, l(0.000000) sample_l r17.xyzw, r4.xyzx, t6.xyzw, s6, l(0.000000) mul r18.xyz, r1.zzzz, r17.xyzx max r14.z, r17.x, l(0.000100) div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r14.z mul r14.z, r14.z, r17.w mul r17.xyz, r3.xyyx, r14.zzzz mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) mul r17.xyz, r17.xyzx, r18.xyzx max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mul r15.xyz, r15.xyzx, r16.xyzx mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx mul r14.z, r10.y, r13.w mad r12.xyz, r14.zzzz, r15.xyzx, r12.xyzx add r13.w, -r13.w, l(1.000000) mul r10.y, r10.y, r13.w ge r13.w, l(0.010000), r10.y if_nz r13.w mad r11.xyz, r10.yyyy, r15.xyzx, r12.xyzx add r15.xyzw, r9.xyzw, -r11.xyzw mad o0.xyzw, r5.zzzz, r15.xyzw, r11.xyzw ret endif endif mad r14.xy, r6.zwzz, l(384.000000, 384.000000, 0.000000, 0.000000), r14.xyxx mad r13.xyz, r2.xyzx, l(0.384000, 0.384000, 0.384000, 0.000000), r13.xyzx add r10.w, r10.w, l(384.000000) iadd r12.w, r12.w, l(1) endloop add r0.x, r5.x, -r7.y mul r0.x, r0.x, l(0.000651041686) round_pi r0.x, r0.x min r0.x, r0.x, l(45.000000) ftoi r1.w, r0.x mad r0.x, r0.x, l(1536.000000), r7.y lt r8.xy, r8.zwzz, r5.xyxx mad r7.xz, -r7.zzwz, l(3072.000000, 0.000000, 9216.000000, 0.000000), r5.xxyx add r7.xz, r7.xxzx, l(0.010000, 0.000000, 0.010000, 0.000000) mul r7.xz, r7.xxzx, l(0.000325520843, 0.000000, 0.000108506945, 0.000000) round_pi r7.xz, r7.xxzx mad r7.xz, r7.xxzx, l(3072.000000, 0.000000, 9216.000000, 0.000000), r8.zzwz movc r7.xz, r8.xxyx, r7.xxzx, r8.zzwz add r0.x, r0.x, l(1535.989990) ge r0.x, r0.x, r7.x movc r0.x, r0.x, r5.x, l(1000000.000000) mul r8.xyz, r2.xyzx, r7.yyyy mad r5.xw, r8.xxxz, cb0[7].xxxz, cb0[9].xxxz mul r8.xz, r8.xxzx, l(0.001000, 0.000000, 0.001000, 0.000000) mad r7.w, r8.y, l(0.001000), cb0[4].z mul r8.y, l(0.00000357142858), cb0[14].x mov r3.xzw, l(1.000000,0,0.429629624,0.175226584) mov r11.w, l(0) mov r10.xzw, r12.xxyz mov r13.xz, r8.xxzx mov r13.y, r7.w mov r14.xy, r5.xwxx mov r8.w, r10.y mov r12.w, r7.y mov r13.w, l(0) loop ige r14.w, r13.w, r1.w breakc_nz r14.w dp3 r14.w, r13.xyzx, r13.xyzx sqrt r14.w, r14.w mad r14.z, r14.w, cb0[6].x, cb0[6].y mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000) sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000) mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx mov_sat r14.w, r14.z mad r14.w, r14.w, l(0.500000), l(0.500000) mad r15.xyz, r15.xyzx, r14.wwww, r14.xyzx mul r14.z, r8.y, r12.w sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, r14.z mul r14.w, r16.x, cb0[12].w add r15.w, r0.x, -r12.w mul_sat r15.w, r15.w, l(0.002500) mul r14.w, r14.w, r15.w mad_sat r15.w, r12.w, l(-0.010000), r0.w mul r14.w, r14.w, r15.w lt r15.w, l(0.001000), r14.w if_nz r15.w mul_sat r14.w, r14.w, l(1.001001) sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, r14.z mul r14.z, r15.y, cb0[11].x mad r15.w, r14.z, r14.z, l(1.000000) dp2 r16.x, r0.yyyy, r14.zzzz add r15.w, r15.w, -r16.x mad r14.z, -r14.z, r14.z, l(1.000000) mul r14.z, r14.z, l(0.0397887342) mul r16.x, r15.w, r15.w rsq r15.w, r15.w mul r15.w, r15.w, r16.x div r15.w, l(1.000000, 1.000000, 1.000000, 1.000000), r15.w mad r14.z, r14.z, r15.w, l(0.0397884995) mul r14.z, r14.z, cb0[12].x mul r15.z, r15.z, cb0[12].y mad r14.z, r15.y, r14.z, r15.z mul r15.xyz, r15.xxxx, cb0[18].xyzx mad r15.xyz, r14.zzzz, cb0[17].xyzx, r15.xyzx mul r14.z, r12.w, l(0.0000125000006) sqrt r4.x, r14.z sample_l r16.xyzw, r4.xyxx, t7.xyzw, s7, l(0.000000) sample_l r17.xyzw, r4.xyzx, t6.xyzw, s6, l(0.000000) mul r18.xyz, r1.zzzz, r17.xyzx max r14.z, r17.x, l(0.000100) div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r14.z mul r14.z, r14.z, r17.w mul r17.xyz, r3.xyyx, r14.zzzz mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) mul r17.xyz, r17.xyzx, r18.xyzx max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mul r15.xyz, r15.xyzx, r16.xyzx mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx mul r14.z, r8.w, r14.w mad r10.xzw, r14.zzzz, r15.xxyz, r10.xxzw add r14.z, -r14.w, l(1.000000) mul r8.w, r8.w, r14.z ge r14.z, l(0.010000), r8.w if_nz r14.z mad r11.xyz, r8.wwww, r15.xyzx, r10.xzwx add r15.xyzw, r9.xyzw, -r11.xyzw mad o0.xyzw, r5.zzzz, r15.xyzw, r11.xyzw ret endif endif mad r14.xy, r6.zwzz, l(1536.000000, 1536.000000, 0.000000, 0.000000), r14.xyxx mad r13.xyz, r2.xyzx, l(1.536000, 1.536000, 1.536000, 0.000000), r13.xyzx add r12.w, r12.w, l(1536.000000) iadd r13.w, r13.w, l(1) endloop add r0.x, r5.y, -r7.x mul r0.x, r0.x, l(0.000325520843) round_pi r0.x, r0.x min r0.x, r0.x, l(45.000000) ftoi r1.w, r0.x mad r0.x, r0.x, l(3072.000000), r7.x add r0.x, r0.x, l(6143.990234) ge r0.x, r0.x, r7.z movc r0.x, r0.x, r5.y, l(1000000.000000) mul r5.xyw, r2.xyxz, r7.xxxx mad r7.yw, r5.xxxw, cb0[7].xxxz, cb0[9].xxxz mul r5.xw, r5.xxxw, l(0.001000, 0.000000, 0.000000, 0.001000) mad r5.y, r5.y, l(0.001000), cb0[4].z mov r3.xzw, l(1.000000,0,0.429629624,0.175226584) mov r11.w, l(0) mov r12.xyz, r10.xzwx mov r13.xyz, r5.xywx mov r14.xy, r7.ywyy mov r8.x, r8.w mov r8.z, r7.x mov r10.y, l(0) loop ige r12.w, r10.y, r1.w breakc_nz r12.w dp3 r12.w, r13.xyzx, r13.xyzx sqrt r12.w, r12.w mad r14.z, r12.w, cb0[6].x, cb0[6].y mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000) sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000) mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx mov_sat r12.w, r14.z mad r12.w, r12.w, l(0.500000), l(0.500000) mad r15.xyz, r15.xyzx, r12.wwww, r14.xyzx mul r12.w, r8.y, r8.z sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, r12.w mul r13.w, r16.x, cb0[12].w add r14.z, r0.x, -r8.z mul_sat r14.z, r14.z, l(0.002500) mul r13.w, r13.w, r14.z mad_sat r14.z, r8.z, l(-0.010000), r0.w mul r13.w, r13.w, r14.z lt r14.z, l(0.001000), r13.w if_nz r14.z mul_sat r13.w, r13.w, l(1.001001) sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, r12.w mul r12.w, r15.y, cb0[11].x mad r14.z, r12.w, r12.w, l(1.000000) dp2 r14.w, r0.yyyy, r12.wwww add r14.z, -r14.w, r14.z mad r12.w, -r12.w, r12.w, l(1.000000) mul r12.w, r12.w, l(0.0397887342) mul r14.w, r14.z, r14.z rsq r14.z, r14.z mul r14.z, r14.z, r14.w div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r14.z mad r12.w, r12.w, r14.z, l(0.0397884995) mul r12.w, r12.w, cb0[12].x mul r14.z, r15.z, cb0[12].y mad r12.w, r15.y, r12.w, r14.z mul r15.xyz, r15.xxxx, cb0[18].xyzx mad r15.xyz, r12.wwww, cb0[17].xyzx, r15.xyzx mul r12.w, r8.z, l(0.0000125000006) sqrt r4.x, r12.w sample_l r16.xyzw, r4.xyxx, t7.xyzw, s7, l(0.000000) sample_l r17.xyzw, r4.xyzx, t6.xyzw, s6, l(0.000000) mul r18.xyz, r1.zzzz, r17.xyzx max r12.w, r17.x, l(0.000100) div r12.w, l(1.000000, 1.000000, 1.000000, 1.000000), r12.w mul r12.w, r12.w, r17.w mul r17.xyz, r3.xyyx, r12.wwww mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) mul r17.xyz, r17.xyzx, r18.xyzx max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mul r15.xyz, r15.xyzx, r16.xyzx mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx mul r12.w, r8.x, r13.w mad r12.xyz, r12.wwww, r15.xyzx, r12.xyzx add r12.w, -r13.w, l(1.000000) mul r8.x, r8.x, r12.w ge r12.w, l(0.010000), r8.x if_nz r12.w mad r11.xyz, r8.xxxx, r15.xyzx, r12.xyzx add r15.xyzw, r9.xyzw, -r11.xyzw mad o0.xyzw, r5.zzzz, r15.xyzw, r11.xyzw ret endif endif mad r14.xy, r6.xyxx, l(3072.000000, 3072.000000, 0.000000, 0.000000), r14.xyxx mad r13.xyz, r2.xyzx, l(3.072000, 3.072000, 3.072000, 0.000000), r13.xyzx add r8.z, r8.z, l(3072.000000) iadd r10.y, r10.y, l(1) endloop add r0.x, r1.x, -r7.z mul r0.x, r0.x, l(0.000108506945) round_pi r0.x, r0.x min r0.x, r0.x, l(45.000000) ftoi r0.x, r0.x mul r5.xyw, r2.xyxz, r7.zzzz mad r6.xy, r5.xwxx, cb0[7].xzxx, cb0[9].xzxx mul r5.xw, r5.xxxw, l(0.001000, 0.000000, 0.000000, 0.001000) mad r1.w, r5.y, l(0.001000), cb0[4].z mul r7.xy, l(0.062500, 50.265484, 0.000000, 0.000000), cb0[24].xxxx sqrt r7.xy, r7.xyxx add r4.y, l(6360.000000), -cb0[24].x mul r5.y, r4.y, l(0.180336878) exp r5.y, r5.y mul r5.y, r5.y, r7.y mul r7.yw, cb0[22].yyyx, cb0[24].xxxx mul r7.yw, r7.yyyw, l(0.000000, 0.500000, 0.000000, 6.28318548) sqrt r7.yw, r7.yyyw mul r4.y, r4.y, cb0[22].y mul r4.yw, r4.yyyw, l(0.000000, 1.442695, 0.000000, 0.00000357142858) exp r4.y, r4.y mul r4.y, r4.y, r7.w mov r8.zw, l(0,0,1.000000,1.000000) mov r3.xzw, l(1.000000,0,0.429629624,0.175226584) mov r10.w, l(0) mov r11.xyz, r12.xyzx mov r13.xz, r5.xxwx mov r13.y, r1.w mov r14.xy, r6.xyxx mov r11.w, r8.x mov r7.w, r7.z mov r12.w, l(0) loop ige r13.w, r12.w, r0.x breakc_nz r13.w dp3 r13.w, r13.xyzx, r13.xyzx sqrt r13.w, r13.w mad r14.z, r13.w, cb0[6].x, cb0[6].y mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000) sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000) mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx mov_sat r13.w, r14.z mad r13.w, r13.w, l(0.500000), l(0.500000) mad r15.xyz, r15.xyzx, r13.wwww, r14.xyzx mul r13.w, r8.y, r7.w sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, r13.w mul r14.z, r16.x, cb0[12].w add r14.w, r1.x, -r7.w mul_sat r14.w, r14.w, l(0.002500) mul r14.z, r14.w, r14.z mad_sat r14.w, r7.w, l(-0.010000), r0.w mul r14.z, r14.w, r14.z lt r14.w, l(0.001000), r14.z if_nz r14.w mul_sat r14.z, r14.z, l(1.001001) sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, r13.w mul r13.w, r15.y, cb0[11].x mad r14.w, r13.w, r13.w, l(1.000000) dp2 r15.w, r0.yyyy, r13.wwww add r14.w, r14.w, -r15.w mad r13.w, -r13.w, r13.w, l(1.000000) mul r13.w, r13.w, l(0.0397887342) mul r15.w, r14.w, r14.w rsq r14.w, r14.w mul r14.w, r14.w, r15.w div r14.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w mad r13.w, r13.w, r14.w, l(0.0397884995) mul r13.w, r13.w, cb0[12].x mul r14.w, r15.z, cb0[12].y mad r13.w, r15.y, r13.w, r14.w mul r15.xyz, r15.xxxx, cb0[18].xyzx mad r15.xyz, r13.wwww, cb0[17].xyzx, r15.xyzx mul r16.xy, r7.wwww, l(0.001000, -0.000125, 0.000000, 0.000000) div r13.w, r16.x, cb0[24].x mad r2.w, r1.y, r0.z, r13.w mul r16.zw, r2.yyyw, r7.xxxx ge r17.xy, r16.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) movc r17.xy, r17.xyxx, l(1,1,0,0), l(-1,-1,0,0) itof r17.xy, r17.xyxx mul r18.xyz, r16.zzwz, r16.zzwz lt r14.w, r17.x, r17.y mul r15.w, r18.x, l(1.442695) exp r15.w, r15.w and r14.w, r14.w, r15.w mad r17.zw, r18.yyyz, l(0.000000, 0.000000, 1.520000, 1.520000), l(0.000000, 0.000000, 4.000000, 4.000000) sqrt r17.zw, r17.zzzw mad r16.zw, |r16.zzzw|, l(0.000000, 0.000000, 2.319300, 2.319300), r17.zzzw div r16.zw, r17.xxxy, r16.zzzw mad r13.w, r13.w, l(0.500000), r2.y mul r15.w, r13.w, r16.y mul r15.w, r15.w, l(1.442695) exp r15.w, r15.w mul r15.w, r15.w, r16.w mad r15.w, r16.z, r8.z, -r15.w add r14.w, r14.w, r15.w mul r14.w, r5.y, r14.w mul r16.yz, r2.yywy, r7.yyyy ge r17.xy, r16.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) movc r17.xy, r17.xyxx, l(1,1,0,0), l(-1,-1,0,0) itof r17.xy, r17.xyxx mul r18.xyz, r16.yyzy, r16.yyzy lt r2.w, r17.x, r17.y mul r15.w, r18.x, l(1.442695) exp r15.w, r15.w and r2.w, r2.w, r15.w mad r17.zw, r18.yyyz, l(0.000000, 0.000000, 1.520000, 1.520000), l(0.000000, 0.000000, 4.000000, 4.000000) sqrt r17.zw, r17.zzzw mad r16.yz, |r16.yyzy|, l(0.000000, 2.319300, 2.319300, 0.000000), r17.zzwz div r16.yz, r17.xxyx, r16.yyzy mul r15.w, -r16.x, cb0[22].y mul r13.w, r13.w, r15.w mul r13.w, r13.w, l(1.442695) exp r13.w, r13.w mul r13.w, r13.w, r16.z mad r13.w, r16.y, r8.w, -r13.w add r2.w, r2.w, r13.w mul r2.w, r2.w, r4.y mul r16.xyz, r2.wwww, cb0[21].xyzx mad r16.xyz, r14.wwww, l(-0.005800, -0.013500, -0.033100, 0.000000), -r16.xyzx mul r16.xyz, r16.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) exp r16.xyz, r16.xyzx min r16.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) mul r4.x, r4.w, r7.w sample_l r17.xyzw, r4.xzxx, t2.xyzw, s2, l(0.000000) mul r18.xyz, r1.zzzz, r17.xyzx max r2.w, r17.x, l(0.000100) div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w mul r2.w, r2.w, r17.w mul r17.xyz, r3.xyyx, r2.wwww mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) mul r17.xyz, r17.xyzx, r18.xyzx max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) mul r15.xyz, r15.xyzx, r16.xyzx mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx mul r2.w, r11.w, r14.z mad r11.xyz, r2.wwww, r15.xyzx, r11.xyzx add r2.w, -r14.z, l(1.000000) mul r11.w, r2.w, r11.w ge r2.w, l(0.010000), r11.w if_nz r2.w mad r10.xyz, r11.wwww, r15.xyzx, r11.xyzx add r15.xyzw, r9.xyzw, -r10.xyzw mad o0.xyzw, r5.zzzz, r15.xyzw, r10.xyzw ret endif endif mad r14.xy, r6.zwzz, l(9216.000000, 9216.000000, 0.000000, 0.000000), r14.xyxx mad r13.xyz, r2.xyzx, l(9.216001, 9.216001, 9.216001, 0.000000), r13.xyzx add r7.w, r7.w, l(9216.000000) iadd r12.w, r12.w, l(1) endloop add r0.xyzw, r9.xyzw, -r11.xyzw mad r0.xyzw, r5.zzzz, r0.xyzw, r11.xyzw lt r1.x, l(0.999000), r0.w discard_nz r1.x mov o0.xyzw, r0.xyzw ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] a BIG Thank you to Everybody helping this is coming together very nicely now, We just need to fix those pesky cumulkus clouds.. ;)
@Bo3b,

GOOD NEWS, I had another user 4everawake help us and he fixed a bunch of stuff we where working on ;)

Hey The_Nephilim. I only played through the tutorial missions. But I was able to add to your fix a little bit:

- The smaller circle reticle is actually a stereo crosshair. (it's strange that this game has, like, 6 crosshairs and 3 of them are stereo). So I just applied the Prime Directive to the stereo crosshairs.
- Fixed various haloing & screendepth effects (smoke, fire, dust, bomb impacts.. etc)
- Stretched out some of the skyboxes that were pushed in depth (to remove the black bars on the side).
- Added a HUD / UI toggle. Press the Forward Slash (/) key to turn HUD & UI on/off.

- The cumulus clouds have to be edited in the PS. I'm not sure I'll be able to fix this. I started placing the stereo formula at various places and I was able to place the clouds in depth. But it also caused haloing, so this still needs further work (shader disabled for now).


The Above Quote was from 4everawake, So know all we need to fix is the Cumulus clouds in the Aircraft sky. He said something about editing the PS shader for those? I will post that shader here:

//cumulus clouds
// ---- Created with 3Dmigoto v1.2.56 on Wed Apr 05 10:53:05 2017
Texture2D<float4> t7 : register(t7);

Texture3D<float4> t6 : register(t6);

Texture3D<float4> t5 : register(t5);

Texture3D<float4> t4 : register(t4);

Texture3D<float4> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerState s7_s : register(s7);

SamplerState s6_s : register(s6);

SamplerState s5_s : register(s5);

SamplerState s4_s : register(s4);

SamplerState s3_s : register(s3);

SamplerState s2_s : register(s2);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb0 : register(b0)
{
float4 cb0[32];
}




// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : SV_POSITION0,
float2 v1 : TEXCOORD0,
out float4 o0 : SV_Target0)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18;
uint4 bitmask, uiDest;
float4 fDest;


r0.xy = cb0[31].zw * v0.xy;

float4 stereo = StereoParams.Load(0);
//r0.x -= stereo.x * 0.5; // in depth but causing halos

r1.xyz = cb0[27].xyz + -cb0[26].xyz;
r1.xyz = r0.xxx * r1.xyz + cb0[26].xyz;



r2.xyz = cb0[29].xyz + -cb0[28].xyz;
r2.xyz = r0.xxx * r2.xyz + cb0[28].xyz;

r2.xyz = r2.xyz + -r1.xyz;

r1.xyz = r0.yyy * r2.xyz + r1.xyz;

r0.z = dot(r1.xyz, r1.xyz);
r0.z = rsqrt(r0.z);
r0.w = 1 / r0.z;
r2.xyz = r1.xyz * r0.zzz;

r1.x = cb0[4].z * -r2.y;
r1.xz = r1.xx * r1.xx + -cb0[5].zw;
r1.w = cmp(cb0[4].x >= cb0[4].z);
r3.x = ~(int)r1.w;
r3.yz = sqrt(r1.xz);
r4.xy = cb0[4].zz * -r2.yy + r3.zy;
r3.w = 280 + -r4.y;
r3.w = cmp(r3.w < 0);
r3.w = r1.w ? r3.w : 0;
if (r3.w != 0) discard;
r3.w = cmp(cb0[5].x >= cb0[4].z);
r4.z = ~(int)r3.w;
r1.xz = cmp(r1.xz < float2(0,0));
r3.yz = cb0[4].zz * -r2.yy + -r3.yz;
r5.xy = r1.xz ? float2(-1,-1) : r3.yz;
r1.x = cmp(0 < r5.x);
r1.z = cmp(640 < r4.x);
r1.z = r1.z ? r1.x : 0;
r6.x = r1.z ? r5.x : r4.x;
r1.z = (int)r3.x & (int)r4.z;
r5.z = r1.x ? r5.x : r4.x;
r1.x = cmp(r5.y < 0);
r1.x = r1.z ? r1.x : 0;
if (r1.x != 0) discard;
r6.y = 0;
r1.xz = r3.ww ? r6.xy : r5.zy;
r1.xz = r1.ww ? r4.xy : r1.xz;
r1.xz = float2(1000,1000) * r1.xz;
r1.x = min(280000, r1.x);
r3.xyzw = t0.SampleLevel(s0_s, r0.xy, 0).xyzw;

r1.w = cmp(r3.x >= cb0[0].y);
r0.w = r3.x * r0.w;
r0.w = r1.w ? 320000 : r0.w;
r1.w = cmp(r2.y < 0);
if (r1.w != 0) {
r1.w = cb0[3].z * r2.y;
r1.w = r1.w * r1.w + -cb0[3].y;
r3.x = cmp(r1.w < 0);
r1.w = sqrt(r1.w);
r1.w = -cb0[3].z * r2.y + -r1.w;
r1.w = 1000 * r1.w;
r1.w = r3.x ? 320000 : r1.w;
r0.w = min(r1.w, r0.w);
}
r1.x = min(r1.x, r0.w);
r0.xy = cb0[2].xy * r0.xy;
r3.xyzw = t1.SampleLevel(s1_s, r0.xy, 0).xyzw;
r0.x = -r3.x * 320000 + 320000;
r0.x = max(r0.x, r1.z);
r0.y = cmp(r0.x >= r1.x);
if (r0.y != 0) {
if (-1 != 0) discard;
}
r0.y = dot(cb0[25].xzy, r2.xyz);
r0.w = 0.00999999978 * r0.w;
r1.z = r0.y * r0.y + 1;
r1.z = 0.0596831031 * r1.z;
r1.w = cb0[19].y * r0.y + cb0[19].z;
r3.x = r1.w * r1.w;
r1.w = rsqrt(r1.w);
r1.w = r3.x * r1.w;
r1.w = 1 / r1.w;
r3.y = cb0[20].y * r1.w;
r1.w = dot(r2.xz, r2.xz);
r1.w = rsqrt(r1.w);
r4.xy = r2.xz * r1.ww;
r1.w = dot(cb0[25].xy, cb0[25].xy);
r1.w = rsqrt(r1.w);
r4.zw = cb0[25].xy * r1.ww;
r1.w = dot(r4.xy, r4.zw);
r1.w = 1 + -r1.w;
r4.x = floor(r1.w);
r1.w = saturate(-r4.x + r1.w);
r4.y = r1.w * -2 + 3;
r1.w = r1.w * r1.w;
r1.w = r4.y * r1.w + r4.x;
r4.xy = saturate(float2(-0.75,0.25) * r2.yy);
r4.x = 0.75 + -r4.x;
r4.y = r4.x + r4.y;
r1.w = 0.5 + r1.w;
r4.z = 0.333333343 * r1.w;
r1.w = 400 + r1.x;
r1.w = min(15744, r1.w);
r5.x = cmp(0.135000005 < abs(r2.y));
if (r5.x != 0) {
r5.x = 1 / r2.y;
r5.y = 384 * abs(r5.x);
r6.xyz = r5.yyy * r2.xyz;
r5.z = -0.135000005 + abs(r2.y);
r5.z = saturate(1.90476203 * r5.z);
r5.z = r5.z * r5.z;
r5.w = cmp(abs(r2.y) < 0.660000026);
r5.w = r5.w ? -1 : 0.00999999978;
r6.w = -cb0[1].y * r5.x + 1;
r7.x = 1 / r5.y;
r6.w = r7.x * r6.w;
r6.w = frac(r6.w);
r7.y = r6.w * r5.y;
r7.z = cmp(r7.y < r0.x);
r6.w = -r6.w * r5.y + r0.x;
r6.w = 0.00999999978 + r6.w;
r6.w = r6.w * r7.x;
r6.w = ceil(r6.w);
r5.y = r6.w * r5.y + r7.y;
r5.y = r7.z ? r5.y : r7.y;
r6.w = -r5.y + r1.w;
r6.w = r6.w * r7.x;
r6.w = ceil(r6.w);
r6.w = min(45, r6.w);
r6.w = (int)r6.w;
r7.xyz = r5.yyy * r2.xyz;
r8.xy = r7.xz * cb0[7].xz + cb0[9].xz;
r7.xz = float2(0.00100000005,0.00100000005) * r7.xz;
r7.y = r7.y * 0.00100000005 + cb0[4].z;
r3.xzw = float3(1,0.429629624,0.175226584);
r10.xyz = r7.xyz;
r11.xy = r8.xy;
r9.xyzw = float4(0,0,0,1);
r7.w = r5.y;
r8.z = r5.w;
r8.w = 0;
while (true) {
r10.w = cmp((int)r8.w >= (int)r6.w);
if (r10.w != 0) break;
r10.w = dot(r10.xyz, r10.xyz);
r10.w = sqrt(r10.w);
r11.z = r10.w * cb0[6].x + cb0[6].y;
r12.xyz = float3(35.2000008,35.2000008,4.4000001) * r11.xyz;
r12.xyzw = t3.SampleLevel(s3_s, r12.xyz, 0).xyzw;
r12.xyz = r12.xyz * cb0[16].xyz + cb0[15].xyz;
r13.xyz = float3(109.120003,109.120003,13.6400003) * r11.xyz;
r13.xyzw = t3.SampleLevel(s3_s, r13.xyz, 0).xyzw;
r13.xyz = r13.xyz * cb0[16].xyz + cb0[15].xyz;
r13.xyz = float3(0.5,0.5,0.5) * r13.xyz;
r14.x = 0.00499999989 * r7.w;
r10.w = saturate(-r7.w * 0.000127032516 + 2);
r12.xyz = r13.xyz * r10.www + r12.xyz;
r10.w = saturate(r11.z);
r10.w = r10.w * 0.5 + 0.5;
r12.xyz = r12.xyz * r10.www + r11.xyz;
r13.xyzw = t4.SampleLevel(s4_s, r12.xyz, 0).xyzw;
r10.w = cb0[12].w * r13.x;
r11.z = -r7.w + r1.w;
r11.z = saturate(0.00249999994 * r11.z);
r10.w = r11.z * r10.w;
r11.z = saturate(r7.w * -0.00999999978 + r0.w);
r10.w = r11.z * r10.w;
r14.x = saturate(r14.x);
r10.w = r14.x * r10.w;
r11.z = cmp(0.00100000005 < r10.w);
if (r11.z != 0) {
r10.w = saturate(1.001001 * r10.w);
r12.xyzw = t5.SampleLevel(s5_s, r12.xyz, 0).xyzw;
r11.z = cb0[11].x * r12.y;
r11.w = r11.z * r11.z + 1;
r12.w = dot(r0.yy, r11.zz);
r11.w = -r12.w + r11.w;
r11.z = -r11.z * r11.z + 1;
r11.z = 0.0397887342 * r11.z;
r12.w = r11.w * r11.w;
r11.w = rsqrt(r11.w);
r11.w = r12.w * r11.w;
r11.w = 1 / r11.w;
r11.z = r11.z * r11.w + 0.0397884995;
r11.z = cb0[12].x * r11.z;
r11.w = cb0[12].y * r12.z;
r11.z = r12.y * r11.z + r11.w;
r12.xyz = cb0[18].xyz * r12.xxx;
r12.xyz = r11.zzz * cb0[17].xyz + r12.xyz;
r11.z = 1.25000006e-005 * r7.w;
r4.w = sqrt(r11.z);
r13.xyzw = t7.SampleLevel(s7_s, r4.wy, 0).xyzw;
r14.xyzw = t6.SampleLevel(s6_s, r4.wyz, 0).xyzw;
r15.xyz = r14.xyz * r1.zzz;
r4.w = max(9.99999975e-005, r14.x);
r4.w = 1 / r4.w;
r4.w = r14.w * r4.w;
r14.xyz = r4.www * r3.xyy;
r14.xyz = r14.xyz * r3.yzw + float3(1,1,1);
r14.xyz = r15.xyz * r14.xyz;
r14.xyz = max(float3(0,0,0), r14.xyz);
r12.xyz = r13.xyz * r12.xyz;
r12.xyz = r14.xyz * cb0[23].xyz + r12.xyz;
r4.w = r10.w * r9.w;
r9.xyz = r4.www * r12.xyz + r9.xyz;
r4.w = 1 + -r10.w;
r9.w = r9.w * r4.w;
r4.w = cmp(r8.z >= r9.w);
if (r4.w != 0) {
o0.xyz = r9.www * r12.xyz + r9.xyz;
o0.w = 0;
return;
}
}
r11.xy = r6.xz * cb0[7].xz + r11.xy;
r10.xyz = r6.xyz * float3(0.00100000005,0.00100000005,0.00100000005) + r10.xyz;
r7.w = abs(r5.x) * 384 + r7.w;
r8.w = (int)r8.w + 1;
}
r4.w = cmp(abs(r2.y) >= 0.660000026);
if (r4.w != 0) {
r4.w = cmp(0.999000013 < r9.w);
if (r4.w != 0) discard;
o0.xyzw = r9.xyzw;
return;
}
} else {
r9.xyzw = float4(0,0,0,1);
r5.z = 0;
}
r6.xyzw = cb0[7].xzxz * r2.xzxz;
r4.w = -r2.y * r2.y + 1;
r4.w = max(0, r4.w);
r4.w = sqrt(r4.w);
r5.xy = min(float2(40000,60000), r1.xx);
r5.w = -cb0[13].x + 1;
r7.xyzw = float4(0.00260416674,0.000651041686,0.000325520843,0.000108506945) * r5.wwww;
r7.xyzw = frac(r7.xyzw);
r8.xyzw = float4(384,1536,3072,9216) * r7.xyzw;
r5.w = cmp(r8.x < r0.x);
r0.x = -r7.x * 384 + r0.x;
r0.x = 0.00999999978 + r0.x;
r0.x = 0.00260416674 * r0.x;
r0.x = ceil(r0.x);
r0.x = r0.x * 384 + r8.x;
r0.x = r5.w ? r0.x : r8.x;
r5.w = r1.w + -r0.x;
r5.w = 0.00260416674 * r5.w;
r5.w = ceil(r5.w);
r5.w = min(45, r5.w);
r7.x = (int)r5.w;
r5.w = r5.w * 384 + r0.x;
r8.x = cmp(r8.y < r1.w);
r7.y = -r7.y * 1536 + r1.w;
r7.y = 0.00999999978 + r7.y;
r7.y = 0.000651041686 * r7.y;
r7.y = ceil(r7.y);
r7.y = r7.y * 1536 + r8.y;
r7.y = r8.x ? r7.y : r8.y;
r5.w = 1151.98999 + r5.w;
r5.w = cmp(r5.w >= r7.y);
r1.w = r5.w ? r1.w : 1000000;
r10.xyz = r0.xxx * r2.xyz;
r8.xy = r10.xz * cb0[7].xz + cb0[9].xz;
r10.xz = float2(0.00100000005,0.00100000005) * r10.xz;
r5.w = r10.y * 0.00100000005 + cb0[4].z;
r3.xzw = float3(1,0.429629624,0.175226584);
r11.w = 0;
r13.xz = r10.xz;
r13.y = r5.w;
r14.xy = r8.xy;
r10.y = 1;
r10.w = r0.x;
r12.xyzw = float4(0,0,0,0);
while (true) {
r13.w = cmp((int)r12.w >= (int)r7.x);
if (r13.w != 0) break;
r13.w = dot(r13.xyz, r13.xyz);
r13.w = sqrt(r13.w);
r14.z = r13.w * cb0[6].x + cb0[6].y;
r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz;
r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw;
r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz;
r16.xyz = float3(109.120003,109.120003,13.6400003) * r14.xyz;
r16.xyzw = t3.SampleLevel(s3_s, r16.xyz, 0).xyzw;
r16.xyz = r16.xyz * cb0[16].xyz + cb0[15].xyz;
r16.xyz = float3(0.5,0.5,0.5) * r16.xyz;
r17.x = 0.00499999989 * r10.w;
r13.w = saturate(-r10.w * 0.000127032516 + 2);
r15.xyz = r16.xyz * r13.www + r15.xyz;
r13.w = saturate(r14.z);
r13.w = r13.w * 0.5 + 0.5;
r15.xyz = r15.xyz * r13.www + r14.xyz;
r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, 0).xyzw;
r13.w = cb0[12].w * r16.x;
r14.z = -r10.w + r1.w;
r14.z = saturate(0.00249999994 * r14.z);
r13.w = r14.z * r13.w;
r14.z = saturate(r10.w * -0.00999999978 + r0.w);
r13.w = r14.z * r13.w;
r17.x = saturate(r17.x);
r13.w = r17.x * r13.w;
r14.z = cmp(0.00100000005 < r13.w);
if (r14.z != 0) {
r13.w = saturate(1.001001 * r13.w);
r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, 0).xyzw;
r14.z = cb0[11].x * r15.y;
r14.w = r14.z * r14.z + 1;
r15.w = dot(r0.yy, r14.zz);
r14.w = -r15.w + r14.w;
r14.z = -r14.z * r14.z + 1;
r14.z = 0.0397887342 * r14.z;
r15.w = r14.w * r14.w;
r14.w = rsqrt(r14.w);
r14.w = r15.w * r14.w;
r14.w = 1 / r14.w;
r14.z = r14.z * r14.w + 0.0397884995;
r14.z = cb0[12].x * r14.z;
r14.w = cb0[12].y * r15.z;
r14.z = r15.y * r14.z + r14.w;
r15.xyz = cb0[18].xyz * r15.xxx;
r15.xyz = r14.zzz * cb0[17].xyz + r15.xyz;
r14.z = 1.25000006e-005 * r10.w;
r4.x = sqrt(r14.z);
r16.xyzw = t7.SampleLevel(s7_s, r4.xy, 0).xyzw;
r17.xyzw = t6.SampleLevel(s6_s, r4.xyz, 0).xyzw;
r18.xyz = r17.xyz * r1.zzz;
r14.z = max(9.99999975e-005, r17.x);
r14.z = 1 / r14.z;
r14.z = r17.w * r14.z;
r17.xyz = r14.zzz * r3.xyy;
r17.xyz = r17.xyz * r3.yzw + float3(1,1,1);
r17.xyz = r18.xyz * r17.xyz;
r17.xyz = max(float3(0,0,0), r17.xyz);
r15.xyz = r16.xyz * r15.xyz;
r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz;
r14.z = r13.w * r10.y;
r12.xyz = r14.zzz * r15.xyz + r12.xyz;
r13.w = 1 + -r13.w;
r10.y = r13.w * r10.y;
r13.w = cmp(0.00999999978 >= r10.y);
if (r13.w != 0) {
r11.xyz = r10.yyy * r15.xyz + r12.xyz;
r15.xyzw = -r11.xyzw + r9.xyzw;
o0.xyzw = r5.zzzz * r15.xyzw + r11.xyzw;
return;
}
}
r14.xy = r6.zw * float2(384,384) + r14.xy;
r13.xyz = r2.xyz * float3(0.384000003,0.384000003,0.384000003) + r13.xyz;
r10.w = 384 + r10.w;
r12.w = (int)r12.w + 1;
}
r0.x = -r7.y + r5.x;
r0.x = 0.000651041686 * r0.x;
r0.x = ceil(r0.x);
r0.x = min(45, r0.x);
r1.w = (int)r0.x;
r0.x = r0.x * 1536 + r7.y;
r8.xy = cmp(r8.zw < r5.xy);
r7.xz = -r7.zw * float2(3072,9216) + r5.xy;
r7.xz = float2(0.00999999978,0.00999999978) + r7.xz;
r7.xz = float2(0.000325520843,0.000108506945) * r7.xz;
r7.xz = ceil(r7.xz);
r7.xz = r7.xz * float2(3072,9216) + r8.zw;
r7.xz = r8.xy ? r7.xz : r8.zw;
r0.x = 1535.98999 + r0.x;
r0.x = cmp(r0.x >= r7.x);
r0.x = r0.x ? r5.x : 1000000;
r8.xyz = r7.yyy * r2.xyz;
r5.xw = r8.xz * cb0[7].xz + cb0[9].xz;
r8.xz = float2(0.00100000005,0.00100000005) * r8.xz;
r7.w = r8.y * 0.00100000005 + cb0[4].z;
r8.y = cb0[14].x * 3.57142858e-006;
r3.xzw = float3(1,0.429629624,0.175226584);
r11.w = 0;
r10.xzw = r12.xyz;
r13.xz = r8.xz;
r13.y = r7.w;
r14.xy = r5.xw;
r8.w = r10.y;
r12.w = r7.y;
r13.w = 0;
while (true) {
r14.w = cmp((int)r13.w >= (int)r1.w);
if (r14.w != 0) break;
r14.w = dot(r13.xyz, r13.xyz);
r14.w = sqrt(r14.w);
r14.z = r14.w * cb0[6].x + cb0[6].y;
r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz;
r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw;
r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz;
r14.w = saturate(r14.z);
r14.w = r14.w * 0.5 + 0.5;
r15.xyz = r15.xyz * r14.www + r14.xyz;
r14.z = r12.w * r8.y;
r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, r14.z).xyzw;
r14.w = cb0[12].w * r16.x;
r15.w = -r12.w + r0.x;
r15.w = saturate(0.00249999994 * r15.w);
r14.w = r15.w * r14.w;
r15.w = saturate(r12.w * -0.00999999978 + r0.w);
r14.w = r15.w * r14.w;
r15.w = cmp(0.00100000005 < r14.w);
if (r15.w != 0) {
r14.w = saturate(1.001001 * r14.w);
r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, r14.z).xyzw;
r14.z = cb0[11].x * r15.y;
r15.w = r14.z * r14.z + 1;
r16.x = dot(r0.yy, r14.zz);
r15.w = -r16.x + r15.w;
r14.z = -r14.z * r14.z + 1;
r14.z = 0.0397887342 * r14.z;
r16.x = r15.w * r15.w;
r15.w = rsqrt(r15.w);
r15.w = r16.x * r15.w;
r15.w = 1 / r15.w;
r14.z = r14.z * r15.w + 0.0397884995;
r14.z = cb0[12].x * r14.z;
r15.z = cb0[12].y * r15.z;
r14.z = r15.y * r14.z + r15.z;
r15.xyz = cb0[18].xyz * r15.xxx;
r15.xyz = r14.zzz * cb0[17].xyz + r15.xyz;
r14.z = 1.25000006e-005 * r12.w;
r4.x = sqrt(r14.z);
r16.xyzw = t7.SampleLevel(s7_s, r4.xy, 0).xyzw;
r17.xyzw = t6.SampleLevel(s6_s, r4.xyz, 0).xyzw;
r18.xyz = r17.xyz * r1.zzz;
r14.z = max(9.99999975e-005, r17.x);
r14.z = 1 / r14.z;
r14.z = r17.w * r14.z;
r17.xyz = r14.zzz * r3.xyy;
r17.xyz = r17.xyz * r3.yzw + float3(1,1,1);
r17.xyz = r18.xyz * r17.xyz;
r17.xyz = max(float3(0,0,0), r17.xyz);
r15.xyz = r16.xyz * r15.xyz;
r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz;
r14.z = r14.w * r8.w;
r10.xzw = r14.zzz * r15.xyz + r10.xzw;
r14.z = 1 + -r14.w;
r8.w = r14.z * r8.w;
r14.z = cmp(0.00999999978 >= r8.w);
if (r14.z != 0) {
r11.xyz = r8.www * r15.xyz + r10.xzw;
r15.xyzw = -r11.xyzw + r9.xyzw;
o0.xyzw = r5.zzzz * r15.xyzw + r11.xyzw;
return;
}
}
r14.xy = r6.zw * float2(1536,1536) + r14.xy;
r13.xyz = r2.xyz * float3(1.53600001,1.53600001,1.53600001) + r13.xyz;
r12.w = 1536 + r12.w;
r13.w = (int)r13.w + 1;
}
r0.x = -r7.x + r5.y;
r0.x = 0.000325520843 * r0.x;
r0.x = ceil(r0.x);
r0.x = min(45, r0.x);
r1.w = (int)r0.x;
r0.x = r0.x * 3072 + r7.x;
r0.x = 6143.99023 + r0.x;
r0.x = cmp(r0.x >= r7.z);
r0.x = r0.x ? r5.y : 1000000;
r5.xyw = r7.xxx * r2.xyz;
r7.yw = r5.xw * cb0[7].xz + cb0[9].xz;
r5.xw = float2(0.00100000005,0.00100000005) * r5.xw;
r5.y = r5.y * 0.00100000005 + cb0[4].z;
r3.xzw = float3(1,0.429629624,0.175226584);
r11.w = 0;
r12.xyz = r10.xzw;
r13.xyz = r5.xyw;
r14.xy = r7.yw;
r8.x = r8.w;
r8.z = r7.x;
r10.y = 0;
while (true) {
r12.w = cmp((int)r10.y >= (int)r1.w);
if (r12.w != 0) break;
r12.w = dot(r13.xyz, r13.xyz);
r12.w = sqrt(r12.w);
r14.z = r12.w * cb0[6].x + cb0[6].y;
r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz;
r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw;
r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz;
r12.w = saturate(r14.z);
r12.w = r12.w * 0.5 + 0.5;
r15.xyz = r15.xyz * r12.www + r14.xyz;
r12.w = r8.z * r8.y;
r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, r12.w).xyzw;
r13.w = cb0[12].w * r16.x;
r14.z = -r8.z + r0.x;
r14.z = saturate(0.00249999994 * r14.z);
r13.w = r14.z * r13.w;
r14.z = saturate(r8.z * -0.00999999978 + r0.w);
r13.w = r14.z * r13.w;
r14.z = cmp(0.00100000005 < r13.w);
if (r14.z != 0) {
r13.w = saturate(1.001001 * r13.w);
r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, r12.w).xyzw;
r12.w = cb0[11].x * r15.y;
r14.z = r12.w * r12.w + 1;
r14.w = dot(r0.yy, r12.ww);
r14.z = r14.z + -r14.w;
r12.w = -r12.w * r12.w + 1;
r12.w = 0.0397887342 * r12.w;
r14.w = r14.z * r14.z;
r14.z = rsqrt(r14.z);
r14.z = r14.w * r14.z;
r14.z = 1 / r14.z;
r12.w = r12.w * r14.z + 0.0397884995;
r12.w = cb0[12].x * r12.w;
r14.z = cb0[12].y * r15.z;
r12.w = r15.y * r12.w + r14.z;
r15.xyz = cb0[18].xyz * r15.xxx;
r15.xyz = r12.www * cb0[17].xyz + r15.xyz;
r12.w = 1.25000006e-005 * r8.z;
r4.x = sqrt(r12.w);
r16.xyzw = t7.SampleLevel(s7_s, r4.xy, 0).xyzw;
r17.xyzw = t6.SampleLevel(s6_s, r4.xyz, 0).xyzw;
r18.xyz = r17.xyz * r1.zzz;
r12.w = max(9.99999975e-005, r17.x);
r12.w = 1 / r12.w;
r12.w = r17.w * r12.w;
r17.xyz = r12.www * r3.xyy;
r17.xyz = r17.xyz * r3.yzw + float3(1,1,1);
r17.xyz = r18.xyz * r17.xyz;
r17.xyz = max(float3(0,0,0), r17.xyz);
r15.xyz = r16.xyz * r15.xyz;
r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz;
r12.w = r13.w * r8.x;
r12.xyz = r12.www * r15.xyz + r12.xyz;
r12.w = 1 + -r13.w;
r8.x = r12.w * r8.x;
r12.w = cmp(0.00999999978 >= r8.x);
if (r12.w != 0) {
r11.xyz = r8.xxx * r15.xyz + r12.xyz;
r15.xyzw = -r11.xyzw + r9.xyzw;
o0.xyzw = r5.zzzz * r15.xyzw + r11.xyzw;
return;
}
}
r14.xy = r6.xy * float2(3072,3072) + r14.xy;
r13.xyz = r2.xyz * float3(3.07200003,3.07200003,3.07200003) + r13.xyz;
r8.z = 3072 + r8.z;
r10.y = (int)r10.y + 1;
}
r0.x = -r7.z + r1.x;
r0.x = 0.000108506945 * r0.x;
r0.x = ceil(r0.x);
r0.x = min(45, r0.x);
r0.x = (int)r0.x;
r5.xyw = r7.zzz * r2.xyz;
r6.xy = r5.xw * cb0[7].xz + cb0[9].xz;
r5.xw = float2(0.00100000005,0.00100000005) * r5.xw;
r1.w = r5.y * 0.00100000005 + cb0[4].z;
r7.xy = cb0[24].xx * float2(0.0625,50.2654839);
r7.xy = sqrt(r7.xy);
r4.y = -cb0[24].x + 6360;
r5.y = 0.180336878 * r4.y;
r5.y = exp2(r5.y);
r5.y = r7.y * r5.y;
r7.yw = cb0[24].xx * cb0[22].yx;
r7.yw = float2(0.5,6.28318548) * r7.yw;
r7.yw = sqrt(r7.yw);
r4.y = cb0[22].y * r4.y;
r4.yw = float2(1.44269502,3.57142858e-006) * r4.yw;
r4.y = exp2(r4.y);
r4.y = r7.w * r4.y;
r8.zw = float2(1,1);
r3.xzw = float3(1,0.429629624,0.175226584);
r10.w = 0;
r11.xyz = r12.xyz;
r13.xz = r5.xw;
r13.y = r1.w;
r14.xy = r6.xy;
r11.w = r8.x;
r7.w = r7.z;
r12.w = 0;
while (true) {
r13.w = cmp((int)r12.w >= (int)r0.x);
if (r13.w != 0) break;
r13.w = dot(r13.xyz, r13.xyz);
r13.w = sqrt(r13.w);
r14.z = r13.w * cb0[6].x + cb0[6].y;
r15.xyz = float3(35.2000008,35.2000008,4.4000001) * r14.xyz;
r15.xyzw = t3.SampleLevel(s3_s, r15.xyz, 0).xyzw;
r15.xyz = r15.xyz * cb0[16].xyz + cb0[15].xyz;
r13.w = saturate(r14.z);
r13.w = r13.w * 0.5 + 0.5;
r15.xyz = r15.xyz * r13.www + r14.xyz;
r13.w = r7.w * r8.y;
r16.xyzw = t4.SampleLevel(s4_s, r15.xyz, r13.w).xyzw;
r14.z = cb0[12].w * r16.x;
r14.w = -r7.w + r1.x;
r14.w = saturate(0.00249999994 * r14.w);
r14.z = r14.z * r14.w;
r14.w = saturate(r7.w * -0.00999999978 + r0.w);
r14.z = r14.z * r14.w;
r14.w = cmp(0.00100000005 < r14.z);
if (r14.w != 0) {
r14.z = saturate(1.001001 * r14.z);
r15.xyzw = t5.SampleLevel(s5_s, r15.xyz, r13.w).xyzw;
r13.w = cb0[11].x * r15.y;
r14.w = r13.w * r13.w + 1;
r15.w = dot(r0.yy, r13.ww);
r14.w = -r15.w + r14.w;
r13.w = -r13.w * r13.w + 1;
r13.w = 0.0397887342 * r13.w;
r15.w = r14.w * r14.w;
r14.w = rsqrt(r14.w);
r14.w = r15.w * r14.w;
r14.w = 1 / r14.w;
r13.w = r13.w * r14.w + 0.0397884995;
r13.w = cb0[12].x * r13.w;
r14.w = cb0[12].y * r15.z;
r13.w = r15.y * r13.w + r14.w;
r15.xyz = cb0[18].xyz * r15.xxx;
r15.xyz = r13.www * cb0[17].xyz + r15.xyz;
r16.xy = float2(0.00100000005,-0.000125000006) * r7.ww;
r13.w = r16.x / cb0[24].x;
r2.w = r1.y * r0.z + r13.w;
r16.zw = r7.xx * r2.yw;
r17.xy = cmp(r16.zw >= float2(0,0));
r17.xy = r17.xy ? float2(1,1) : float2(-1,-1);
r17.xy = (int2)r17.xy;
r18.xyz = r16.zzw * r16.zzw;
r14.w = cmp(r17.x < r17.y);
r15.w = 1.44269502 * r18.x;
r15.w = exp2(r15.w);
r14.w = r14.w ? r15.w : 0;
r17.zw = r18.yz * float2(1.51999998,1.51999998) + float2(4,4);
r17.zw = sqrt(r17.zw);
r16.zw = abs(r16.zw) * float2(2.31929994,2.31929994) + r17.zw;
r16.zw = r17.xy / r16.zw;
r13.w = r13.w * 0.5 + r2.y;
r15.w = r16.y * r13.w;
r15.w = 1.44269502 * r15.w;
r15.w = exp2(r15.w);
r15.w = r16.w * r15.w;
r15.w = r16.z * r8.z + -r15.w;
r14.w = r15.w + r14.w;
r14.w = r14.w * r5.y;
r16.yz = r7.yy * r2.yw;
r17.xy = cmp(r16.yz >= float2(0,0));
r17.xy = r17.xy ? float2(1,1) : float2(-1,-1);
r17.xy = (int2)r17.xy;
r18.xyz = r16.yyz * r16.yyz;
r2.w = cmp(r17.x < r17.y);
r15.w = 1.44269502 * r18.x;
r15.w = exp2(r15.w);
r2.w = r2.w ? r15.w : 0;
r17.zw = r18.yz * float2(1.51999998,1.51999998) + float2(4,4);
r17.zw = sqrt(r17.zw);
r16.yz = abs(r16.yz) * float2(2.31929994,2.31929994) + r17.zw;
r16.yz = r17.xy / r16.yz;
r15.w = cb0[22].y * -r16.x;
r13.w = r15.w * r13.w;
r13.w = 1.44269502 * r13.w;
r13.w = exp2(r13.w);
r13.w = r16.z * r13.w;
r13.w = r16.y * r8.w + -r13.w;
r2.w = r13.w + r2.w;
r2.w = r4.y * r2.w;
r16.xyz = cb0[21].xyz * r2.www;
r16.xyz = r14.www * float3(-0.00579999993,-0.0135000004,-0.0331000015) + -r16.xyz;
r16.xyz = float3(1.44269502,1.44269502,1.44269502) * r16.xyz;
r16.xyz = exp2(r16.xyz);
r16.xyz = min(float3(1,1,1), r16.xyz);
r4.x = r7.w * r4.w;
r17.xyzw = t2.SampleLevel(s2_s, r4.xz, 0).xyzw;
r18.xyz = r17.xyz * r1.zzz;
r2.w = max(9.99999975e-005, r17.x);
r2.w = 1 / r2.w;
r2.w = r17.w * r2.w;
r17.xyz = r2.www * r3.xyy;
r17.xyz = r17.xyz * r3.yzw + float3(1,1,1);
r17.xyz = r18.xyz * r17.xyz;
r17.xyz = max(float3(0,0,0), r17.xyz);
r15.xyz = r16.xyz * r15.xyz;
r15.xyz = r17.xyz * cb0[23].xyz + r15.xyz;
r2.w = r14.z * r11.w;
r11.xyz = r2.www * r15.xyz + r11.xyz;
r2.w = 1 + -r14.z;
r11.w = r11.w * r2.w;
r2.w = cmp(0.00999999978 >= r11.w);
if (r2.w != 0) {
r10.xyz = r11.www * r15.xyz + r11.xyz;
r15.xyzw = -r10.xyzw + r9.xyzw;
o0.xyzw = r5.zzzz * r15.xyzw + r10.xyzw;
return;
}
}
r14.xy = r6.zw * float2(9216,9216) + r14.xy;
r13.xyz = r2.xyz * float3(9.21600056,9.21600056,9.21600056) + r13.xyz;
r7.w = 9216 + r7.w;
r12.w = (int)r12.w + 1;
}
r0.xyzw = -r11.xyzw + r9.xyzw;
r0.xyzw = r5.zzzz * r0.xyzw + r11.xyzw;
r1.x = cmp(0.999000013 < r0.w);
if (r1.x != 0) discard;
o0.xyzw = r0.xyzw;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.56 on Wed Apr 05 10:53:05 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xy
// TEXCOORD 0 xy 1 NONE float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[32], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_sampler s7, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture3d (float,float,float,float) t3
dcl_resource_texture3d (float,float,float,float) t4
dcl_resource_texture3d (float,float,float,float) t5
dcl_resource_texture3d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 19
mul r0.xy, v0.xyxx, cb0[31].zwzz
add r1.xyz, -cb0[26].xyzx, cb0[27].xyzx
mad r1.xyz, r0.xxxx, r1.xyzx, cb0[26].xyzx
add r2.xyz, -cb0[28].xyzx, cb0[29].xyzx
mad r2.xyz, r0.xxxx, r2.xyzx, cb0[28].xyzx
add r2.xyz, -r1.xyzx, r2.xyzx
mad r1.xyz, r0.yyyy, r2.xyzx, r1.xyzx
dp3 r0.z, r1.xyzx, r1.xyzx
rsq r0.z, r0.z
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
mul r2.xyz, r0.zzzz, r1.xyzx
mul r1.x, -r2.y, cb0[4].z
mad r1.xz, r1.xxxx, r1.xxxx, -cb0[5].zzwz
ge r1.w, cb0[4].x, cb0[4].z
not r3.x, r1.w
sqrt r3.yz, r1.xxzx
mad r4.xy, cb0[4].zzzz, -r2.yyyy, r3.zyzz
add r3.w, -r4.y, l(280.000000)
lt r3.w, r3.w, l(0.000000)
and r3.w, r1.w, r3.w
discard_nz r3.w
ge r3.w, cb0[5].x, cb0[4].z
not r4.z, r3.w
lt r1.xz, r1.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mad r3.yz, cb0[4].zzzz, -r2.yyyy, -r3.yyzy
movc r5.xy, r1.xzxx, l(-1.000000,-1.000000,0,0), r3.yzyy
lt r1.x, l(0.000000), r5.x
lt r1.z, l(640.000000), r4.x
and r1.z, r1.z, r1.x
movc r6.x, r1.z, r5.x, r4.x
and r1.z, r3.x, r4.z
movc r5.z, r1.x, r5.x, r4.x
lt r1.x, r5.y, l(0.000000)
and r1.x, r1.z, r1.x
discard_nz r1.x
mov r6.y, l(0)
movc r1.xz, r3.wwww, r6.xxyx, r5.zzyz
movc r1.xz, r1.wwww, r4.xxyx, r1.xxzx
mul r1.xz, r1.xxzx, l(1000.000000, 0.000000, 1000.000000, 0.000000)
min r1.x, r1.x, l(280000.000000)
sample_l r3.xyzw, r0.xyxx, t0.xyzw, s0, l(0.000000)
ge r1.w, r3.x, cb0[0].y
mul r0.w, r0.w, r3.x
movc r0.w, r1.w, l(320000.000000), r0.w
lt r1.w, r2.y, l(0.000000)
if_nz r1.w
mul r1.w, r2.y, cb0[3].z
mad r1.w, r1.w, r1.w, -cb0[3].y
lt r3.x, r1.w, l(0.000000)
sqrt r1.w, r1.w
mad r1.w, -cb0[3].z, r2.y, -r1.w
mul r1.w, r1.w, l(1000.000000)
movc r1.w, r3.x, l(320000.000000), r1.w
min r0.w, r0.w, r1.w
endif
min r1.x, r0.w, r1.x
mul r0.xy, r0.xyxx, cb0[2].xyxx
sample_l r3.xyzw, r0.xyxx, t1.xyzw, s1, l(0.000000)
mad r0.x, -r3.x, l(320000.000000), l(320000.000000)
max r0.x, r1.z, r0.x
ge r0.y, r0.x, r1.x
if_nz r0.y
discard_nz l(-1)
endif
dp3 r0.y, cb0[25].xzyx, r2.xyzx
mul r0.w, r0.w, l(0.010000)
mad r1.z, r0.y, r0.y, l(1.000000)
mul r1.z, r1.z, l(0.0596831031)
mad r1.w, cb0[19].y, r0.y, cb0[19].z
mul r3.x, r1.w, r1.w
rsq r1.w, r1.w
mul r1.w, r1.w, r3.x
div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w
mul r3.y, r1.w, cb0[20].y
dp2 r1.w, r2.xzxx, r2.xzxx
rsq r1.w, r1.w
mul r4.xy, r1.wwww, r2.xzxx
dp2 r1.w, cb0[25].xyxx, cb0[25].xyxx
rsq r1.w, r1.w
mul r4.zw, r1.wwww, cb0[25].xxxy
dp2 r1.w, r4.xyxx, r4.zwzz
add r1.w, -r1.w, l(1.000000)
round_ni r4.x, r1.w
add_sat r1.w, r1.w, -r4.x
mad r4.y, r1.w, l(-2.000000), l(3.000000)
mul r1.w, r1.w, r1.w
mad r1.w, r4.y, r1.w, r4.x
mul_sat r4.xy, r2.yyyy, l(-0.750000, 0.250000, 0.000000, 0.000000)
add r4.x, -r4.x, l(0.750000)
add r4.y, r4.y, r4.x
add r1.w, r1.w, l(0.500000)
mul r4.z, r1.w, l(0.333333343)
add r1.w, r1.x, l(400.000000)
min r1.w, r1.w, l(15744.000000)
lt r5.x, l(0.135000), |r2.y|
if_nz r5.x
div r5.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.y
mul r5.y, |r5.x|, l(384.000000)
mul r6.xyz, r2.xyzx, r5.yyyy
add r5.z, |r2.y|, l(-0.135000)
mul_sat r5.z, r5.z, l(1.904762)
mul r5.z, r5.z, r5.z
lt r5.w, |r2.y|, l(0.660000)
movc r5.w, r5.w, l(-1.000000), l(0.010000)
mad r6.w, -cb0[1].y, r5.x, l(1.000000)
div r7.x, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y
mul r6.w, r6.w, r7.x
frc r6.w, r6.w
mul r7.y, r5.y, r6.w
lt r7.z, r7.y, r0.x
mad r6.w, -r6.w, r5.y, r0.x
add r6.w, r6.w, l(0.010000)
mul r6.w, r7.x, r6.w
round_pi r6.w, r6.w
mad r5.y, r6.w, r5.y, r7.y
movc r5.y, r7.z, r5.y, r7.y
add r6.w, r1.w, -r5.y
mul r6.w, r7.x, r6.w
round_pi r6.w, r6.w
min r6.w, r6.w, l(45.000000)
ftoi r6.w, r6.w
mul r7.xyz, r2.xyzx, r5.yyyy
mad r8.xy, r7.xzxx, cb0[7].xzxx, cb0[9].xzxx
mul r7.xz, r7.xxzx, l(0.001000, 0.000000, 0.001000, 0.000000)
mad r7.y, r7.y, l(0.001000), cb0[4].z
mov r3.xzw, l(1.000000,0,0.429629624,0.175226584)
mov r10.xyz, r7.xyzx
mov r11.xy, r8.xyxx
mov r9.xyzw, l(0,0,0,1.000000)
mov r7.w, r5.y
mov r8.z, r5.w
mov r8.w, l(0)
loop
ige r10.w, r8.w, r6.w
breakc_nz r10.w
dp3 r10.w, r10.xyzx, r10.xyzx
sqrt r10.w, r10.w
mad r11.z, r10.w, cb0[6].x, cb0[6].y
mul r12.xyz, r11.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000)
sample_l r12.xyzw, r12.xyzx, t3.xyzw, s3, l(0.000000)
mad r12.xyz, r12.xyzx, cb0[16].xyzx, cb0[15].xyzx
mul r13.xyz, r11.xyzx, l(109.120003, 109.120003, 13.640000, 0.000000)
sample_l r13.xyzw, r13.xyzx, t3.xyzw, s3, l(0.000000)
mad r13.xyz, r13.xyzx, cb0[16].xyzx, cb0[15].xyzx
mul r13.xyz, r13.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
mul r14.x, r7.w, l(0.005000)
mad_sat r10.w, -r7.w, l(0.000127032516), l(2.000000)
mad r12.xyz, r13.xyzx, r10.wwww, r12.xyzx
mov_sat r10.w, r11.z
mad r10.w, r10.w, l(0.500000), l(0.500000)
mad r12.xyz, r12.xyzx, r10.wwww, r11.xyzx
sample_l r13.xyzw, r12.xyzx, t4.xyzw, s4, l(0.000000)
mul r10.w, r13.x, cb0[12].w
add r11.z, r1.w, -r7.w
mul_sat r11.z, r11.z, l(0.002500)
mul r10.w, r10.w, r11.z
mad_sat r11.z, r7.w, l(-0.010000), r0.w
mul r10.w, r10.w, r11.z
mov_sat r14.x, r14.x
mul r10.w, r10.w, r14.x
lt r11.z, l(0.001000), r10.w
if_nz r11.z
mul_sat r10.w, r10.w, l(1.001001)
sample_l r12.xyzw, r12.xyzx, t5.xyzw, s5, l(0.000000)
mul r11.z, r12.y, cb0[11].x
mad r11.w, r11.z, r11.z, l(1.000000)
dp2 r12.w, r0.yyyy, r11.zzzz
add r11.w, r11.w, -r12.w
mad r11.z, -r11.z, r11.z, l(1.000000)
mul r11.z, r11.z, l(0.0397887342)
mul r12.w, r11.w, r11.w
rsq r11.w, r11.w
mul r11.w, r11.w, r12.w
div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w
mad r11.z, r11.z, r11.w, l(0.0397884995)
mul r11.z, r11.z, cb0[12].x
mul r11.w, r12.z, cb0[12].y
mad r11.z, r12.y, r11.z, r11.w
mul r12.xyz, r12.xxxx, cb0[18].xyzx
mad r12.xyz, r11.zzzz, cb0[17].xyzx, r12.xyzx
mul r11.z, r7.w, l(0.0000125000006)
sqrt r4.w, r11.z
sample_l r13.xyzw, r4.wyww, t7.xyzw, s7, l(0.000000)
sample_l r14.xyzw, r4.wyzw, t6.xyzw, s6, l(0.000000)
mul r15.xyz, r1.zzzz, r14.xyzx
max r4.w, r14.x, l(0.000100)
div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w
mul r4.w, r4.w, r14.w
mul r14.xyz, r3.xyyx, r4.wwww
mad r14.xyz, r14.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r14.xyz, r14.xyzx, r15.xyzx
max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r12.xyz, r12.xyzx, r13.xyzx
mad r12.xyz, r14.xyzx, cb0[23].xyzx, r12.xyzx
mul r4.w, r9.w, r10.w
mad r9.xyz, r4.wwww, r12.xyzx, r9.xyzx
add r4.w, -r10.w, l(1.000000)
mul r9.w, r4.w, r9.w
ge r4.w, r8.z, r9.w
if_nz r4.w
mad o0.xyz, r9.wwww, r12.xyzx, r9.xyzx
mov o0.w, l(0)
ret
endif
endif
mad r11.xy, r6.xzxx, cb0[7].xzxx, r11.xyxx
mad r10.xyz, r6.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000), r10.xyzx
mad r7.w, |r5.x|, l(384.000000), r7.w
iadd r8.w, r8.w, l(1)
endloop
ge r4.w, |r2.y|, l(0.660000)
if_nz r4.w
lt r4.w, l(0.999000), r9.w
discard_nz r4.w
mov o0.xyzw, r9.xyzw
ret
endif
else
mov r9.xyzw, l(0,0,0,1.000000)
mov r5.z, l(0)
endif
mul r6.xyzw, r2.xzxz, cb0[7].xzxz
mad r4.w, -r2.y, r2.y, l(1.000000)
max r4.w, r4.w, l(0.000000)
sqrt r4.w, r4.w
min r5.xy, r1.xxxx, l(40000.000000, 60000.000000, 0.000000, 0.000000)
add r5.w, l(1.000000), -cb0[13].x
mul r7.xyzw, r5.wwww, l(0.00260416674, 0.000651041686, 0.000325520843, 0.000108506945)
frc r7.xyzw, r7.xyzw
mul r8.xyzw, r7.xyzw, l(384.000000, 1536.000000, 3072.000000, 9216.000000)
lt r5.w, r8.x, r0.x
mad r0.x, -r7.x, l(384.000000), r0.x
add r0.x, r0.x, l(0.010000)
mul r0.x, r0.x, l(0.00260416674)
round_pi r0.x, r0.x
mad r0.x, r0.x, l(384.000000), r8.x
movc r0.x, r5.w, r0.x, r8.x
add r5.w, -r0.x, r1.w
mul r5.w, r5.w, l(0.00260416674)
round_pi r5.w, r5.w
min r5.w, r5.w, l(45.000000)
ftoi r7.x, r5.w
mad r5.w, r5.w, l(384.000000), r0.x
lt r8.x, r8.y, r1.w
mad r7.y, -r7.y, l(1536.000000), r1.w
add r7.y, r7.y, l(0.010000)
mul r7.y, r7.y, l(0.000651041686)
round_pi r7.y, r7.y
mad r7.y, r7.y, l(1536.000000), r8.y
movc r7.y, r8.x, r7.y, r8.y
add r5.w, r5.w, l(1151.989990)
ge r5.w, r5.w, r7.y
movc r1.w, r5.w, r1.w, l(1000000.000000)
mul r10.xyz, r2.xyzx, r0.xxxx
mad r8.xy, r10.xzxx, cb0[7].xzxx, cb0[9].xzxx
mul r10.xz, r10.xxzx, l(0.001000, 0.000000, 0.001000, 0.000000)
mad r5.w, r10.y, l(0.001000), cb0[4].z
mov r3.xzw, l(1.000000,0,0.429629624,0.175226584)
mov r11.w, l(0)
mov r13.xz, r10.xxzx
mov r13.y, r5.w
mov r14.xy, r8.xyxx
mov r10.y, l(1.000000)
mov r10.w, r0.x
mov r12.xyzw, l(0,0,0,0)
loop
ige r13.w, r12.w, r7.x
breakc_nz r13.w
dp3 r13.w, r13.xyzx, r13.xyzx
sqrt r13.w, r13.w
mad r14.z, r13.w, cb0[6].x, cb0[6].y
mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000)
sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000)
mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx
mul r16.xyz, r14.xyzx, l(109.120003, 109.120003, 13.640000, 0.000000)
sample_l r16.xyzw, r16.xyzx, t3.xyzw, s3, l(0.000000)
mad r16.xyz, r16.xyzx, cb0[16].xyzx, cb0[15].xyzx
mul r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
mul r17.x, r10.w, l(0.005000)
mad_sat r13.w, -r10.w, l(0.000127032516), l(2.000000)
mad r15.xyz, r16.xyzx, r13.wwww, r15.xyzx
mov_sat r13.w, r14.z
mad r13.w, r13.w, l(0.500000), l(0.500000)
mad r15.xyz, r15.xyzx, r13.wwww, r14.xyzx
sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, l(0.000000)
mul r13.w, r16.x, cb0[12].w
add r14.z, r1.w, -r10.w
mul_sat r14.z, r14.z, l(0.002500)
mul r13.w, r13.w, r14.z
mad_sat r14.z, r10.w, l(-0.010000), r0.w
mul r13.w, r13.w, r14.z
mov_sat r17.x, r17.x
mul r13.w, r13.w, r17.x
lt r14.z, l(0.001000), r13.w
if_nz r14.z
mul_sat r13.w, r13.w, l(1.001001)
sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, l(0.000000)
mul r14.z, r15.y, cb0[11].x
mad r14.w, r14.z, r14.z, l(1.000000)
dp2 r15.w, r0.yyyy, r14.zzzz
add r14.w, r14.w, -r15.w
mad r14.z, -r14.z, r14.z, l(1.000000)
mul r14.z, r14.z, l(0.0397887342)
mul r15.w, r14.w, r14.w
rsq r14.w, r14.w
mul r14.w, r14.w, r15.w
div r14.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w
mad r14.z, r14.z, r14.w, l(0.0397884995)
mul r14.z, r14.z, cb0[12].x
mul r14.w, r15.z, cb0[12].y
mad r14.z, r15.y, r14.z, r14.w
mul r15.xyz, r15.xxxx, cb0[18].xyzx
mad r15.xyz, r14.zzzz, cb0[17].xyzx, r15.xyzx
mul r14.z, r10.w, l(0.0000125000006)
sqrt r4.x, r14.z
sample_l r16.xyzw, r4.xyxx, t7.xyzw, s7, l(0.000000)
sample_l r17.xyzw, r4.xyzx, t6.xyzw, s6, l(0.000000)
mul r18.xyz, r1.zzzz, r17.xyzx
max r14.z, r17.x, l(0.000100)
div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r14.z
mul r14.z, r14.z, r17.w
mul r17.xyz, r3.xyyx, r14.zzzz
mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r17.xyz, r17.xyzx, r18.xyzx
max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r15.xyz, r15.xyzx, r16.xyzx
mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx
mul r14.z, r10.y, r13.w
mad r12.xyz, r14.zzzz, r15.xyzx, r12.xyzx
add r13.w, -r13.w, l(1.000000)
mul r10.y, r10.y, r13.w
ge r13.w, l(0.010000), r10.y
if_nz r13.w
mad r11.xyz, r10.yyyy, r15.xyzx, r12.xyzx
add r15.xyzw, r9.xyzw, -r11.xyzw
mad o0.xyzw, r5.zzzz, r15.xyzw, r11.xyzw
ret
endif
endif
mad r14.xy, r6.zwzz, l(384.000000, 384.000000, 0.000000, 0.000000), r14.xyxx
mad r13.xyz, r2.xyzx, l(0.384000, 0.384000, 0.384000, 0.000000), r13.xyzx
add r10.w, r10.w, l(384.000000)
iadd r12.w, r12.w, l(1)
endloop
add r0.x, r5.x, -r7.y
mul r0.x, r0.x, l(0.000651041686)
round_pi r0.x, r0.x
min r0.x, r0.x, l(45.000000)
ftoi r1.w, r0.x
mad r0.x, r0.x, l(1536.000000), r7.y
lt r8.xy, r8.zwzz, r5.xyxx
mad r7.xz, -r7.zzwz, l(3072.000000, 0.000000, 9216.000000, 0.000000), r5.xxyx
add r7.xz, r7.xxzx, l(0.010000, 0.000000, 0.010000, 0.000000)
mul r7.xz, r7.xxzx, l(0.000325520843, 0.000000, 0.000108506945, 0.000000)
round_pi r7.xz, r7.xxzx
mad r7.xz, r7.xxzx, l(3072.000000, 0.000000, 9216.000000, 0.000000), r8.zzwz
movc r7.xz, r8.xxyx, r7.xxzx, r8.zzwz
add r0.x, r0.x, l(1535.989990)
ge r0.x, r0.x, r7.x
movc r0.x, r0.x, r5.x, l(1000000.000000)
mul r8.xyz, r2.xyzx, r7.yyyy
mad r5.xw, r8.xxxz, cb0[7].xxxz, cb0[9].xxxz
mul r8.xz, r8.xxzx, l(0.001000, 0.000000, 0.001000, 0.000000)
mad r7.w, r8.y, l(0.001000), cb0[4].z
mul r8.y, l(0.00000357142858), cb0[14].x
mov r3.xzw, l(1.000000,0,0.429629624,0.175226584)
mov r11.w, l(0)
mov r10.xzw, r12.xxyz
mov r13.xz, r8.xxzx
mov r13.y, r7.w
mov r14.xy, r5.xwxx
mov r8.w, r10.y
mov r12.w, r7.y
mov r13.w, l(0)
loop
ige r14.w, r13.w, r1.w
breakc_nz r14.w
dp3 r14.w, r13.xyzx, r13.xyzx
sqrt r14.w, r14.w
mad r14.z, r14.w, cb0[6].x, cb0[6].y
mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000)
sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000)
mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx
mov_sat r14.w, r14.z
mad r14.w, r14.w, l(0.500000), l(0.500000)
mad r15.xyz, r15.xyzx, r14.wwww, r14.xyzx
mul r14.z, r8.y, r12.w
sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, r14.z
mul r14.w, r16.x, cb0[12].w
add r15.w, r0.x, -r12.w
mul_sat r15.w, r15.w, l(0.002500)
mul r14.w, r14.w, r15.w
mad_sat r15.w, r12.w, l(-0.010000), r0.w
mul r14.w, r14.w, r15.w
lt r15.w, l(0.001000), r14.w
if_nz r15.w
mul_sat r14.w, r14.w, l(1.001001)
sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, r14.z
mul r14.z, r15.y, cb0[11].x
mad r15.w, r14.z, r14.z, l(1.000000)
dp2 r16.x, r0.yyyy, r14.zzzz
add r15.w, r15.w, -r16.x
mad r14.z, -r14.z, r14.z, l(1.000000)
mul r14.z, r14.z, l(0.0397887342)
mul r16.x, r15.w, r15.w
rsq r15.w, r15.w
mul r15.w, r15.w, r16.x
div r15.w, l(1.000000, 1.000000, 1.000000, 1.000000), r15.w
mad r14.z, r14.z, r15.w, l(0.0397884995)
mul r14.z, r14.z, cb0[12].x
mul r15.z, r15.z, cb0[12].y
mad r14.z, r15.y, r14.z, r15.z
mul r15.xyz, r15.xxxx, cb0[18].xyzx
mad r15.xyz, r14.zzzz, cb0[17].xyzx, r15.xyzx
mul r14.z, r12.w, l(0.0000125000006)
sqrt r4.x, r14.z
sample_l r16.xyzw, r4.xyxx, t7.xyzw, s7, l(0.000000)
sample_l r17.xyzw, r4.xyzx, t6.xyzw, s6, l(0.000000)
mul r18.xyz, r1.zzzz, r17.xyzx
max r14.z, r17.x, l(0.000100)
div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r14.z
mul r14.z, r14.z, r17.w
mul r17.xyz, r3.xyyx, r14.zzzz
mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r17.xyz, r17.xyzx, r18.xyzx
max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r15.xyz, r15.xyzx, r16.xyzx
mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx
mul r14.z, r8.w, r14.w
mad r10.xzw, r14.zzzz, r15.xxyz, r10.xxzw
add r14.z, -r14.w, l(1.000000)
mul r8.w, r8.w, r14.z
ge r14.z, l(0.010000), r8.w
if_nz r14.z
mad r11.xyz, r8.wwww, r15.xyzx, r10.xzwx
add r15.xyzw, r9.xyzw, -r11.xyzw
mad o0.xyzw, r5.zzzz, r15.xyzw, r11.xyzw
ret
endif
endif
mad r14.xy, r6.zwzz, l(1536.000000, 1536.000000, 0.000000, 0.000000), r14.xyxx
mad r13.xyz, r2.xyzx, l(1.536000, 1.536000, 1.536000, 0.000000), r13.xyzx
add r12.w, r12.w, l(1536.000000)
iadd r13.w, r13.w, l(1)
endloop
add r0.x, r5.y, -r7.x
mul r0.x, r0.x, l(0.000325520843)
round_pi r0.x, r0.x
min r0.x, r0.x, l(45.000000)
ftoi r1.w, r0.x
mad r0.x, r0.x, l(3072.000000), r7.x
add r0.x, r0.x, l(6143.990234)
ge r0.x, r0.x, r7.z
movc r0.x, r0.x, r5.y, l(1000000.000000)
mul r5.xyw, r2.xyxz, r7.xxxx
mad r7.yw, r5.xxxw, cb0[7].xxxz, cb0[9].xxxz
mul r5.xw, r5.xxxw, l(0.001000, 0.000000, 0.000000, 0.001000)
mad r5.y, r5.y, l(0.001000), cb0[4].z
mov r3.xzw, l(1.000000,0,0.429629624,0.175226584)
mov r11.w, l(0)
mov r12.xyz, r10.xzwx
mov r13.xyz, r5.xywx
mov r14.xy, r7.ywyy
mov r8.x, r8.w
mov r8.z, r7.x
mov r10.y, l(0)
loop
ige r12.w, r10.y, r1.w
breakc_nz r12.w
dp3 r12.w, r13.xyzx, r13.xyzx
sqrt r12.w, r12.w
mad r14.z, r12.w, cb0[6].x, cb0[6].y
mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000)
sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000)
mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx
mov_sat r12.w, r14.z
mad r12.w, r12.w, l(0.500000), l(0.500000)
mad r15.xyz, r15.xyzx, r12.wwww, r14.xyzx
mul r12.w, r8.y, r8.z
sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, r12.w
mul r13.w, r16.x, cb0[12].w
add r14.z, r0.x, -r8.z
mul_sat r14.z, r14.z, l(0.002500)
mul r13.w, r13.w, r14.z
mad_sat r14.z, r8.z, l(-0.010000), r0.w
mul r13.w, r13.w, r14.z
lt r14.z, l(0.001000), r13.w
if_nz r14.z
mul_sat r13.w, r13.w, l(1.001001)
sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, r12.w
mul r12.w, r15.y, cb0[11].x
mad r14.z, r12.w, r12.w, l(1.000000)
dp2 r14.w, r0.yyyy, r12.wwww
add r14.z, -r14.w, r14.z
mad r12.w, -r12.w, r12.w, l(1.000000)
mul r12.w, r12.w, l(0.0397887342)
mul r14.w, r14.z, r14.z
rsq r14.z, r14.z
mul r14.z, r14.z, r14.w
div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r14.z
mad r12.w, r12.w, r14.z, l(0.0397884995)
mul r12.w, r12.w, cb0[12].x
mul r14.z, r15.z, cb0[12].y
mad r12.w, r15.y, r12.w, r14.z
mul r15.xyz, r15.xxxx, cb0[18].xyzx
mad r15.xyz, r12.wwww, cb0[17].xyzx, r15.xyzx
mul r12.w, r8.z, l(0.0000125000006)
sqrt r4.x, r12.w
sample_l r16.xyzw, r4.xyxx, t7.xyzw, s7, l(0.000000)
sample_l r17.xyzw, r4.xyzx, t6.xyzw, s6, l(0.000000)
mul r18.xyz, r1.zzzz, r17.xyzx
max r12.w, r17.x, l(0.000100)
div r12.w, l(1.000000, 1.000000, 1.000000, 1.000000), r12.w
mul r12.w, r12.w, r17.w
mul r17.xyz, r3.xyyx, r12.wwww
mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r17.xyz, r17.xyzx, r18.xyzx
max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r15.xyz, r15.xyzx, r16.xyzx
mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx
mul r12.w, r8.x, r13.w
mad r12.xyz, r12.wwww, r15.xyzx, r12.xyzx
add r12.w, -r13.w, l(1.000000)
mul r8.x, r8.x, r12.w
ge r12.w, l(0.010000), r8.x
if_nz r12.w
mad r11.xyz, r8.xxxx, r15.xyzx, r12.xyzx
add r15.xyzw, r9.xyzw, -r11.xyzw
mad o0.xyzw, r5.zzzz, r15.xyzw, r11.xyzw
ret
endif
endif
mad r14.xy, r6.xyxx, l(3072.000000, 3072.000000, 0.000000, 0.000000), r14.xyxx
mad r13.xyz, r2.xyzx, l(3.072000, 3.072000, 3.072000, 0.000000), r13.xyzx
add r8.z, r8.z, l(3072.000000)
iadd r10.y, r10.y, l(1)
endloop
add r0.x, r1.x, -r7.z
mul r0.x, r0.x, l(0.000108506945)
round_pi r0.x, r0.x
min r0.x, r0.x, l(45.000000)
ftoi r0.x, r0.x
mul r5.xyw, r2.xyxz, r7.zzzz
mad r6.xy, r5.xwxx, cb0[7].xzxx, cb0[9].xzxx
mul r5.xw, r5.xxxw, l(0.001000, 0.000000, 0.000000, 0.001000)
mad r1.w, r5.y, l(0.001000), cb0[4].z
mul r7.xy, l(0.062500, 50.265484, 0.000000, 0.000000), cb0[24].xxxx
sqrt r7.xy, r7.xyxx
add r4.y, l(6360.000000), -cb0[24].x
mul r5.y, r4.y, l(0.180336878)
exp r5.y, r5.y
mul r5.y, r5.y, r7.y
mul r7.yw, cb0[22].yyyx, cb0[24].xxxx
mul r7.yw, r7.yyyw, l(0.000000, 0.500000, 0.000000, 6.28318548)
sqrt r7.yw, r7.yyyw
mul r4.y, r4.y, cb0[22].y
mul r4.yw, r4.yyyw, l(0.000000, 1.442695, 0.000000, 0.00000357142858)
exp r4.y, r4.y
mul r4.y, r4.y, r7.w
mov r8.zw, l(0,0,1.000000,1.000000)
mov r3.xzw, l(1.000000,0,0.429629624,0.175226584)
mov r10.w, l(0)
mov r11.xyz, r12.xyzx
mov r13.xz, r5.xxwx
mov r13.y, r1.w
mov r14.xy, r6.xyxx
mov r11.w, r8.x
mov r7.w, r7.z
mov r12.w, l(0)
loop
ige r13.w, r12.w, r0.x
breakc_nz r13.w
dp3 r13.w, r13.xyzx, r13.xyzx
sqrt r13.w, r13.w
mad r14.z, r13.w, cb0[6].x, cb0[6].y
mul r15.xyz, r14.xyzx, l(35.200001, 35.200001, 4.400000, 0.000000)
sample_l r15.xyzw, r15.xyzx, t3.xyzw, s3, l(0.000000)
mad r15.xyz, r15.xyzx, cb0[16].xyzx, cb0[15].xyzx
mov_sat r13.w, r14.z
mad r13.w, r13.w, l(0.500000), l(0.500000)
mad r15.xyz, r15.xyzx, r13.wwww, r14.xyzx
mul r13.w, r8.y, r7.w
sample_l r16.xyzw, r15.xyzx, t4.xyzw, s4, r13.w
mul r14.z, r16.x, cb0[12].w
add r14.w, r1.x, -r7.w
mul_sat r14.w, r14.w, l(0.002500)
mul r14.z, r14.w, r14.z
mad_sat r14.w, r7.w, l(-0.010000), r0.w
mul r14.z, r14.w, r14.z
lt r14.w, l(0.001000), r14.z
if_nz r14.w
mul_sat r14.z, r14.z, l(1.001001)
sample_l r15.xyzw, r15.xyzx, t5.xyzw, s5, r13.w
mul r13.w, r15.y, cb0[11].x
mad r14.w, r13.w, r13.w, l(1.000000)
dp2 r15.w, r0.yyyy, r13.wwww
add r14.w, r14.w, -r15.w
mad r13.w, -r13.w, r13.w, l(1.000000)
mul r13.w, r13.w, l(0.0397887342)
mul r15.w, r14.w, r14.w
rsq r14.w, r14.w
mul r14.w, r14.w, r15.w
div r14.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w
mad r13.w, r13.w, r14.w, l(0.0397884995)
mul r13.w, r13.w, cb0[12].x
mul r14.w, r15.z, cb0[12].y
mad r13.w, r15.y, r13.w, r14.w
mul r15.xyz, r15.xxxx, cb0[18].xyzx
mad r15.xyz, r13.wwww, cb0[17].xyzx, r15.xyzx
mul r16.xy, r7.wwww, l(0.001000, -0.000125, 0.000000, 0.000000)
div r13.w, r16.x, cb0[24].x
mad r2.w, r1.y, r0.z, r13.w
mul r16.zw, r2.yyyw, r7.xxxx
ge r17.xy, r16.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r17.xy, r17.xyxx, l(1,1,0,0), l(-1,-1,0,0)
itof r17.xy, r17.xyxx
mul r18.xyz, r16.zzwz, r16.zzwz
lt r14.w, r17.x, r17.y
mul r15.w, r18.x, l(1.442695)
exp r15.w, r15.w
and r14.w, r14.w, r15.w
mad r17.zw, r18.yyyz, l(0.000000, 0.000000, 1.520000, 1.520000), l(0.000000, 0.000000, 4.000000, 4.000000)
sqrt r17.zw, r17.zzzw
mad r16.zw, |r16.zzzw|, l(0.000000, 0.000000, 2.319300, 2.319300), r17.zzzw
div r16.zw, r17.xxxy, r16.zzzw
mad r13.w, r13.w, l(0.500000), r2.y
mul r15.w, r13.w, r16.y
mul r15.w, r15.w, l(1.442695)
exp r15.w, r15.w
mul r15.w, r15.w, r16.w
mad r15.w, r16.z, r8.z, -r15.w
add r14.w, r14.w, r15.w
mul r14.w, r5.y, r14.w
mul r16.yz, r2.yywy, r7.yyyy
ge r17.xy, r16.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r17.xy, r17.xyxx, l(1,1,0,0), l(-1,-1,0,0)
itof r17.xy, r17.xyxx
mul r18.xyz, r16.yyzy, r16.yyzy
lt r2.w, r17.x, r17.y
mul r15.w, r18.x, l(1.442695)
exp r15.w, r15.w
and r2.w, r2.w, r15.w
mad r17.zw, r18.yyyz, l(0.000000, 0.000000, 1.520000, 1.520000), l(0.000000, 0.000000, 4.000000, 4.000000)
sqrt r17.zw, r17.zzzw
mad r16.yz, |r16.yyzy|, l(0.000000, 2.319300, 2.319300, 0.000000), r17.zzwz
div r16.yz, r17.xxyx, r16.yyzy
mul r15.w, -r16.x, cb0[22].y
mul r13.w, r13.w, r15.w
mul r13.w, r13.w, l(1.442695)
exp r13.w, r13.w
mul r13.w, r13.w, r16.z
mad r13.w, r16.y, r8.w, -r13.w
add r2.w, r2.w, r13.w
mul r2.w, r2.w, r4.y
mul r16.xyz, r2.wwww, cb0[21].xyzx
mad r16.xyz, r14.wwww, l(-0.005800, -0.013500, -0.033100, 0.000000), -r16.xyzx
mul r16.xyz, r16.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000)
exp r16.xyz, r16.xyzx
min r16.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r4.x, r4.w, r7.w
sample_l r17.xyzw, r4.xzxx, t2.xyzw, s2, l(0.000000)
mul r18.xyz, r1.zzzz, r17.xyzx
max r2.w, r17.x, l(0.000100)
div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w
mul r2.w, r2.w, r17.w
mul r17.xyz, r3.xyyx, r2.wwww
mad r17.xyz, r17.xyzx, r3.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r17.xyz, r17.xyzx, r18.xyzx
max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r15.xyz, r15.xyzx, r16.xyzx
mad r15.xyz, r17.xyzx, cb0[23].xyzx, r15.xyzx
mul r2.w, r11.w, r14.z
mad r11.xyz, r2.wwww, r15.xyzx, r11.xyzx
add r2.w, -r14.z, l(1.000000)
mul r11.w, r2.w, r11.w
ge r2.w, l(0.010000), r11.w
if_nz r2.w
mad r10.xyz, r11.wwww, r15.xyzx, r11.xyzx
add r15.xyzw, r9.xyzw, -r10.xyzw
mad o0.xyzw, r5.zzzz, r15.xyzw, r10.xyzw
ret
endif
endif
mad r14.xy, r6.zwzz, l(9216.000000, 9216.000000, 0.000000, 0.000000), r14.xyxx
mad r13.xyz, r2.xyzx, l(9.216001, 9.216001, 9.216001, 0.000000), r13.xyzx
add r7.w, r7.w, l(9216.000000)
iadd r12.w, r12.w, l(1)
endloop
add r0.xyzw, r9.xyzw, -r11.xyzw
mad r0.xyzw, r5.zzzz, r0.xyzw, r11.xyzw
lt r1.x, l(0.999000), r0.w
discard_nz r1.x
mov o0.xyzw, r0.xyzw
ret
// Approximately 0 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/



a BIG Thank you to Everybody helping this is coming together very nicely now, We just need to fix those pesky cumulkus clouds.. ;)

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/05/2017 09:58 PM   
not fixed see above post please..
not fixed see above post please..

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/06/2017 04:01 PM   
Well on Post # 1053 the line 62 puts the cumulus clouds to depth but creates Halos in the Planes Cockpit rails.. I will post a screenshot of it.. I thought I had fixed it but all I did was move the clouds too back into the original position so it was not fixed ;) I looked at some crisis code and injected that code in but it did not work either.. not sure what to do neither does 4everawake so I seek help from the Masters ;)
Well on Post # 1053 the line 62 puts the cumulus clouds to depth but creates Halos in the Planes Cockpit rails.. I will post a screenshot of it.. I thought I had fixed it but all I did was move the clouds too back into the original position so it was not fixed ;)

I looked at some crisis code and injected that code in but it did not work either..
not sure what to do neither does 4everawake so I seek help from the Masters ;)

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/06/2017 05:55 PM   
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/72228/[/img] Strange effect there, I'm not sure what is going on. Since it's free-to-play, I downloaded the game and will take a look at the plane cockpits. That looks like maybe a stencil instead of a normal halo effect. Clouds seem at the right depth.
Image

Strange effect there, I'm not sure what is going on. Since it's free-to-play, I downloaded the game and will take a look at the plane cockpits.

That looks like maybe a stencil instead of a normal halo effect. Clouds seem at the right depth.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

Posted 04/07/2017 11:18 PM   
Yes Bo3b, 4everAwake fixed the clouds there but then we had that happen to the cockpit.. glad you are taking a look. this is one of the last problems we have in War Thunder..
Yes Bo3b, 4everAwake fixed the clouds there but then we had that happen to the cockpit.. glad you are taking a look. this is one of the last problems we have in War Thunder..

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/07/2017 11:22 PM   
85170bab6119522a-ps_replace that is the PS responsible for the clouds in the aircraft arena.. thought I would save you some time rather then looking through all the files ;) Also to get that exact pic goto Tutorials and select Torpedo mission, you can skip with spacebar until you are in the cockpit ..
85170bab6119522a-ps_replace

that is the PS responsible for the clouds in the aircraft arena.. thought I would save you some time rather then looking through all the files ;)

Also to get that exact pic goto Tutorials and select Torpedo mission, you can skip with spacebar until you are in the cockpit ..

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/07/2017 11:41 PM   
Hi Bo3b, Quick question: Is there a way to tell 3DMigoto to globally disable all the shaders we replace? Like F9 does, but I want it to make it a toggle and work outside of Dev-Mode. Is this possible? Thank you!
Hi Bo3b,

Quick question:
Is there a way to tell 3DMigoto to globally disable all the shaders we replace? Like F9 does, but I want it to make it a toggle and work outside of Dev-Mode.
Is this possible?

Thank you!

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 04/08/2017 11:31 AM   
[quote="helifax"]Hi Bo3b, Quick question: Is there a way to tell 3DMigoto to globally disable all the shaders we replace? Like F9 does, but I want it to make it a toggle and work outside of Dev-Mode. Is this possible? Thank you![/quote] No feature at present to allow that. In non-dev mode we kill a lot of functionality in order to improve performance. You could run hunting=2, which has no overlay and is an in-between state. Took a quick look at the code, and it does enable the F9 show_original. But there is no way presently to make it toggle, it's only when held down. (could probably map in some other key like CapsLock, or use external tool to hold it down.)
helifax said:Hi Bo3b,

Quick question:
Is there a way to tell 3DMigoto to globally disable all the shaders we replace? Like F9 does, but I want it to make it a toggle and work outside of Dev-Mode.
Is this possible?

Thank you!

No feature at present to allow that. In non-dev mode we kill a lot of functionality in order to improve performance.

You could run hunting=2, which has no overlay and is an in-between state. Took a quick look at the code, and it does enable the F9 show_original.

But there is no way presently to make it toggle, it's only when held down. (could probably map in some other key like CapsLock, or use external tool to hold it down.)

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

Posted 04/08/2017 10:23 PM   
[quote="bo3b"][quote="helifax"]Hi Bo3b, Quick question: Is there a way to tell 3DMigoto to globally disable all the shaders we replace? Like F9 does, but I want it to make it a toggle and work outside of Dev-Mode. Is this possible? Thank you![/quote] No feature at present to allow that. In non-dev mode we kill a lot of functionality in order to improve performance. You could run hunting=2, which has no overlay and is an in-between state. Took a quick look at the code, and it does enable the F9 show_original. But there is no way presently to make it toggle, it's only when held down. (could probably map in some other key like CapsLock, or use external tool to hold it down.)[/quote] Thank you for the response! The plan was/is to disable all our modifications and swap to CM mode in certain places. We need to do this as stereo.x is still valid in CM mode;) and we don't want to offset in 2D the position. I guess I can manually add a check in all shaders I modify:)
bo3b said:
helifax said:Hi Bo3b,

Quick question:
Is there a way to tell 3DMigoto to globally disable all the shaders we replace? Like F9 does, but I want it to make it a toggle and work outside of Dev-Mode.
Is this possible?

Thank you!

No feature at present to allow that. In non-dev mode we kill a lot of functionality in order to improve performance.

You could run hunting=2, which has no overlay and is an in-between state. Took a quick look at the code, and it does enable the F9 show_original.

But there is no way presently to make it toggle, it's only when held down. (could probably map in some other key like CapsLock, or use external tool to hold it down.)


Thank you for the response! The plan was/is to disable all our modifications and swap to CM mode in certain places. We need to do this as stereo.x is still valid in CM mode;) and we don't want to offset in 2D the position. I guess I can manually add a check in all shaders I modify:)

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 04/08/2017 10:45 PM   
OK, I looked at this one in depth, for about 5 hours, and unfortunately I have to say this one is an uphill battle all the way. I can't find a good combo for fixing the torpedo tutorial mission, so I have to accept I can't help here. The game is using an old and fairly primitive technique for doing 3D graphics, where they do everything on the 2D screen itself, instead of drawing a proper 3D model and letting the video card to the work. This is why in all the shaders you see the stuff like: [code]o0.xy = v0.xy; o0.zw = float2(0,1); [/code] That's specifically ignoring the depth of the smoke effect, and just drawing it in the 'right' spot on the backing 2D posterboard. You've found that you can adjust a bunch of these with the separation * 0.5, which is a probably as good a compromise as you can get. I think the real answer here would be to try to force everything to separation * 0.99, but until you get all on-screen effects to that depth, you'll have eye conflicts. In order to fix problems that you see, like the sun at the wrong depth relative to clouds, or smoke tracer rounds, you'll need to modify the pixel shaders directly, in the code itself. Somewhere in the middle of those code sequences, it is deciding where to draw relative to the 2D backing posterboard, and you can inject a stereo correction there. Similarly, I tried to look at the one-eye ground shadow effect, and that is also something relative to the guts of the PS. This is also why 3D Vision Automatic is confused here, it's basically 2D effects from its perspective, and does not know to draw the image twice. This will be pretty hard, but it's possible you can dissect a shader enough to find these tweaks. I was going to say that maybe they would be more modder friendly and add back the shader headers, so we could see what is happening with shaders. But based on Flowbee_602's comment, it sounds like that is not going to happen. Fixing an unknown game engine is right at the top edge of difficulty, and only a small handful of ShaderHackers have succeeded at making a new engine work. This one is an extra hard case because of the lack of header info, the primitive drawing techniques, and an unknown game engine. Not to discourage you, but just be clear this one is extra hard. Given the structure of the game, and the hostile to modders approach by bad devs, this one is most likely a candidate for fake-3D, and would be worth trying SuperDepth to see if that gives you better results.
OK, I looked at this one in depth, for about 5 hours, and unfortunately I have to say this one is an uphill battle all the way. I can't find a good combo for fixing the torpedo tutorial mission, so I have to accept I can't help here.

The game is using an old and fairly primitive technique for doing 3D graphics, where they do everything on the 2D screen itself, instead of drawing a proper 3D model and letting the video card to the work. This is why in all the shaders you see the stuff like:

o0.xy = v0.xy;
o0.zw = float2(0,1);

That's specifically ignoring the depth of the smoke effect, and just drawing it in the 'right' spot on the backing 2D posterboard.


You've found that you can adjust a bunch of these with the separation * 0.5, which is a probably as good a compromise as you can get.

I think the real answer here would be to try to force everything to separation * 0.99, but until you get all on-screen effects to that depth, you'll have eye conflicts.


In order to fix problems that you see, like the sun at the wrong depth relative to clouds, or smoke tracer rounds, you'll need to modify the pixel shaders directly, in the code itself. Somewhere in the middle of those code sequences, it is deciding where to draw relative to the 2D backing posterboard, and you can inject a stereo correction there.

Similarly, I tried to look at the one-eye ground shadow effect, and that is also something relative to the guts of the PS. This is also why 3D Vision Automatic is confused here, it's basically 2D effects from its perspective, and does not know to draw the image twice.

This will be pretty hard, but it's possible you can dissect a shader enough to find these tweaks.


I was going to say that maybe they would be more modder friendly and add back the shader headers, so we could see what is happening with shaders. But based on Flowbee_602's comment, it sounds like that is not going to happen.

Fixing an unknown game engine is right at the top edge of difficulty, and only a small handful of ShaderHackers have succeeded at making a new engine work.

This one is an extra hard case because of the lack of header info, the primitive drawing techniques, and an unknown game engine.

Not to discourage you, but just be clear this one is extra hard.


Given the structure of the game, and the hostile to modders approach by bad devs, this one is most likely a candidate for fake-3D, and would be worth trying SuperDepth to see if that gives you better results.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

Posted 04/10/2017 11:10 PM   
Well Bo3b I appreciate all the help and thank you so much.. I can live with the clouds disabled not sure what Flowbee would want to do but that is how I will release the fix with the aircraft clouds disabled.. About the shodw thing well guess they can either set the graphics to use old video card or live with the shadow.. That really sucks byt Flowbee mentioned they have banned players for use SweetFX.. If they found out about this they would probally go nuts.. Well guess to just leave as is.. Thank you so much ;)
Well Bo3b I appreciate all the help and thank you so much..
I can live with the clouds disabled not sure what Flowbee would want to do but that is how I will release the fix with the aircraft clouds disabled..

About the shodw thing well guess they can either set the graphics to use old video card or live with the shadow..

That really sucks byt Flowbee mentioned they have banned players for use SweetFX.. If they found out about this they would probally go nuts..

Well guess to just leave as is.. Thank you so much ;)

Intel i5 7600K @ 4.8ghz / MSI Z270 SLI / Asus 1080GTX - 416.16 / Optoma HD142x Projector / 1 4'x10' Curved Screen PVC / TrackIR / HOTAS Cougar / Cougar MFD's / Track IR / NVidia 3D Vision / Win 10 64bit

Posted 04/10/2017 11:24 PM   
Right, so I have this CS Shader here: https://pastebin.com/XJBshjip (too long to paste here) Anyone knows or has any idea on how to fix the Tiles in this shader??? If we could solve this one;) I could easily solve the mystery of the Frosbite3 engines;)
Right, so I have this CS Shader here:

https://pastebin.com/XJBshjip

(too long to paste here)

Anyone knows or has any idea on how to fix the Tiles in this shader??? If we could solve this one;) I could easily solve the mystery of the Frosbite3 engines;)

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 04/11/2017 12:40 AM   
[quote="helifax"]Right, so I have this CS Shader here: https://pastebin.com/XJBshjip (too long to paste here) Anyone knows or has any idea on how to fix the Tiles in this shader??? If we could solve this one;) I could easily solve the mystery of the Frosbite3 engines;)[/quote] Is there any way to get variable names? As a general idea, the biggest advantage of the HLSL decompile is the insertion of variable names into the code flow. Won't work well here, because CS almost never Decompile properly, and this shader has no header information. Is there any other CS that is similar that has header information, or some way to cross-correlate the use of cb0, t2, t3, g1, g3 and so on? I think that in the absence of named variables this is going to require a lot of active comment out, test, type tweaking to understand different parts of the code. The little bit I studied of the CS for tile lights indicated that the entire shader was used for a single tile. So, it wouldn't divide the screen into tiles, that was done at a higher level, and it used the thread groups to decide which tile was being worked upon. So for example, and 8x8 tile list had 64 CS in parallel, all running the same code in a thread group.
helifax said:Right, so I have this CS Shader here:
https://pastebin.com/XJBshjip
(too long to paste here)

Anyone knows or has any idea on how to fix the Tiles in this shader??? If we could solve this one;) I could easily solve the mystery of the Frosbite3 engines;)

Is there any way to get variable names? As a general idea, the biggest advantage of the HLSL decompile is the insertion of variable names into the code flow. Won't work well here, because CS almost never Decompile properly, and this shader has no header information.

Is there any other CS that is similar that has header information, or some way to cross-correlate the use of cb0, t2, t3, g1, g3 and so on?

I think that in the absence of named variables this is going to require a lot of active comment out, test, type tweaking to understand different parts of the code.


The little bit I studied of the CS for tile lights indicated that the entire shader was used for a single tile. So, it wouldn't divide the screen into tiles, that was done at a higher level, and it used the thread groups to decide which tile was being worked upon. So for example, and 8x8 tile list had 64 CS in parallel, all running the same code in a thread group.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

Posted 04/11/2017 02:14 AM   
  71 / 88    
Scroll To Top