Ys VIII: Lacrimosa of DANA
  2 / 3    
Nice! Once it goes on sale on GOG (hopefully a deep one after all the trouble and delays they caused), I'll get it. If you can, use 3Dmigoto and dump the water vertex shaders and pixels shaders, and then post them here, as well as some screenshots of how it looks at 0 convergence.
Nice! Once it goes on sale on GOG (hopefully a deep one after all the trouble and delays they caused), I'll get it.

If you can, use 3Dmigoto and dump the water vertex shaders and pixels shaders, and then post them here, as well as some screenshots of how it looks at 0 convergence.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#16
Posted 05/22/2018 07:07 AM   
I haven't used 3Dmigoto for hunting before, but hopefully the ones attached here are the correct water vertex and pixel shaders. I've also added a screenshot at 0 convergence. Let me know if I've messed up something :P 1b5c3940d52cf7a2-vs_replace // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:40:41 2018 cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float4x4 uUVMatrix : packoffset(c14); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float3 v0 : POSITION0, float4 v1 : COLOR0, float4 v2 : COLOR1, out float4 o0 : COLOR0, out float4 o1 : COLOR1, out float4 o2 : TEXCOORD0, out float4 o3 : SV_Position0) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; o0.xyzw = uColor[0].xyzw * v1.xyzw; o1.xyzw = uColor[1].xyzw * v2.xyzw; r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw; r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz; r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy; r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw; r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw; r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw; r1.xyzw = uUVMatrix._m01_m11_m21_m31 * r0.yyyy; r1.xyzw = uUVMatrix._m00_m10_m20_m30 * r0.xxxx + r1.xyzw; r1.xyzw = uUVMatrix._m02_m12_m22_m32 * r0.zzzz + r1.xyzw; o2.xyzw = uUVMatrix._m03_m13_m23_m33 * r0.wwww + r1.xyzw; o3.xyzw = r0.xyzw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:40:41 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float4x4 uMatrix[3]; // Offset: 0 Size: 192 // float4 uColor[2]; // Offset: 192 Size: 32 // float4x4 uUVMatrix; // Offset: 224 Size: 64 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyz 0 NONE float xyz // COLOR 0 xyzw 1 NONE float xyzw // COLOR 1 xyzw 2 NONE float xyzw // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // COLOR 0 xyzw 0 NONE float xyzw // COLOR 1 xyzw 1 NONE float xyzw // TEXCOORD 0 xyzw 2 NONE float xyzw // SV_Position 0 xyzw 3 POS float xyzw // vs_4_0 dcl_constantbuffer cb0[18], immediateIndexed dcl_input v0.xyz dcl_input v1.xyzw dcl_input v2.xyzw dcl_output o0.xyzw dcl_output o1.xyzw dcl_output o2.xyzw dcl_output_siv o3.xyzw, position dcl_temps 2 mul o0.xyzw, v1.xyzw, cb0[12].xyzw mul o1.xyzw, v2.xyzw, cb0[13].xyzw mul r0.xyz, v0.yyyy, cb0[1].xyzx mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx add r0.xyz, r0.xyzx, cb0[3].xyzx mul r1.xyz, r0.yyyy, cb0[5].xyzx mad r0.xyw, cb0[4].xyxz, r0.xxxx, r1.xyxz mad r0.xyz, cb0[6].xyzx, r0.zzzz, r0.xywx add r0.xyz, r0.xyzx, cb0[7].xyzx mul r1.xyzw, r0.yyyy, cb0[9].xyzw mad r1.xyzw, cb0[8].xyzw, r0.xxxx, r1.xyzw mad r0.xyzw, cb0[10].xyzw, r0.zzzz, r1.xyzw add r0.xyzw, r0.xyzw, cb0[11].xyzw mul r1.xyzw, r0.yyyy, cb0[15].xyzw mad r1.xyzw, cb0[14].xyzw, r0.xxxx, r1.xyzw mad r1.xyzw, cb0[16].xyzw, r0.zzzz, r1.xyzw mad o2.xyzw, cb0[17].xyzw, r0.wwww, r1.xyzw mov o3.xyzw, r0.xyzw ret // Approximately 20 instruction slots used 08c7259da741a755-vs_replace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:40:26 2018 cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float4 lightvec : packoffset(c14); float4 fogparam[2] : packoffset(c15); float4 fogden[2] : packoffset(c17); float4 fogcolor[2] : packoffset(c19); float numFogLight : packoffset(c21); struct { float4 param; float4 color; float4 pos; } foginfo[64] : packoffset(c22); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float3 v1 : POSITION1, float4 v2 : NORMAL0, float4 v3 : NORMAL1, float4 v4 : COLOR0, float4 v5 : COLOR1, float4 v6 : TEXCOORD0, float2 v7 : TEXCOORD1, out float4 o0 : COLOR0, out float4 o1 : COLOR1, out float4 o2 : TEXCOORD0, out float4 o3 : TEXCOORD1, out float4 o4 : TEXCOORD2, out float4 o5 : TEXCOORD3, out float4 o6 : TEXCOORD4, out float4 o7 : TEXCOORD5, out float4 o8 : TEXCOORD6, out float4 o9 : SV_Position0) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; uint4 bitmask, uiDest; float4 fDest; r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r1.xyz = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r1.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r1.xyz; r1.xyz = uMatrix[1]._m03_m13_m23 + r1.xyz; r2.xyzw = uMatrix[2]._m01_m11_m21_m31 * r1.yyyy; r2.xyzw = uMatrix[2]._m00_m10_m20_m30 * r1.xxxx + r2.xyzw; r2.xyzw = uMatrix[2]._m02_m12_m22_m32 * r1.zzzz + r2.xyzw; o9.xyzw = uMatrix[2]._m03_m13_m23_m33 + r2.xyzw; r2.xyz = v2.xyz * v0.www; r3.xyz = uMatrix[0]._m01_m11_m21 * r2.yyy; r2.xyw = uMatrix[0]._m00_m10_m20 * r2.xxx + r3.xyz; r2.xyz = uMatrix[0]._m02_m12_m22 * r2.zzz + r2.xyw; r0.w = dot(r2.xyz, r2.xyz); r0.w = rsqrt(r0.w); r2.xyz = r2.xyz * r0.www; r3.xyz = uMatrix[1]._m01_m11_m21 * r2.yyy; r2.xyw = uMatrix[1]._m00_m10_m20 * r2.xxx + r3.xyz; r2.xyz = uMatrix[1]._m02_m12_m22 * r2.zzz + r2.xyw; r0.w = dot(r2.xyz, r2.xyz); r0.w = rsqrt(r0.w); r2.xyz = r2.xyz * r0.www; o0.xyzw = uColor[0].xyzw * v4.xyzw; r3.xyz = float3(1,-1,1) * v3.xzy; r4.xyz = uMatrix[0]._m01_m11_m21 * r3.yyy; r3.xyw = uMatrix[0]._m00_m10_m20 * r3.xxx + r4.xyz; r3.xyz = uMatrix[0]._m02_m12_m22 * r3.zzz + r3.xyw; r4.xyz = uMatrix[1]._m01_m11_m21 * r3.yyy; r3.xyw = uMatrix[1]._m00_m10_m20 * r3.xxx + r4.xyz; r3.xyz = uMatrix[1]._m02_m12_m22 * r3.zzz + r3.xyw; r0.w = dot(r3.xyz, r3.xyz); r0.w = rsqrt(r0.w); r3.xyz = r3.xyz * r0.www; r4.xyz = r3.yzx * r2.zxy; o4.xyz = r2.yzx * r3.zxy + -r4.xyz; r4.xyz = float3(1,-1,1) * v1.xzy; r5.xyz = uMatrix[0]._m01_m11_m21 * r4.yyy; r4.xyw = uMatrix[0]._m00_m10_m20 * r4.xxx + r5.xyz; r4.xyz = uMatrix[0]._m02_m12_m22 * r4.zzz + r4.xyw; r5.xyz = uMatrix[1]._m01_m11_m21 * r4.yyy; r4.xyw = uMatrix[1]._m00_m10_m20 * r4.xxx + r5.xyz; r4.xyz = uMatrix[1]._m02_m12_m22 * r4.zzz + r4.xyw; r0.w = dot(r4.xyz, r4.xyz); r0.w = rsqrt(r0.w); r4.xyz = r4.xyz * r0.www; r5.xyz = r4.yzx * r2.zxy; r5.xyz = r2.yzx * r4.zxy + -r5.xyz; r0.w = cmp(0 != fogparam[0].w); if (r0.w != 0) { r6.xy = fogden[1].zw + -fogden[0].zw; r7.x = -fogparam[0].y; r7.y = -fogparam[1].y; r6.zw = r7.xy + r1.zz; r7.x = saturate(fogparam[0].x * r6.z); r7.y = saturate(fogparam[1].x * r6.w); r6.zw = log2(r7.xy); r7.x = fogparam[0].z * r6.z; r7.y = fogparam[1].z * r6.w; r6.zw = exp2(r7.xy); r7.x = fogden[0].x + -fogden[0].y; r7.y = fogden[1].x + -fogden[1].y; r8.x = fogden[0].y; r8.y = fogden[1].y; r7.xy = r6.zw * r7.xy + r8.xy; r0.w = cmp(0.00100000005 >= r6.x); r1.w = -fogden[0].z + r0.z; r1.w = saturate(r1.w / r6.x); r3.w = r7.y + -r7.x; r8.x = r1.w * r3.w + r7.x; r6.xzw = fogcolor[1].xyz + -fogcolor[0].xyz; r6.xzw = r1.www * r6.xzw + fogcolor[0].xyz; r8.y = r1.w * r6.y + fogden[0].w; r6.xyz = r0.www ? fogcolor[0].xyz : r6.xzw; r7.z = fogden[0].w; r7.xy = r0.ww ? r7.xz : r8.xy; r0.w = 1 + -r7.x; r1.w = numFogLight; r7.xzw = r6.xyz; r3.w = r0.w; r4.w = 0; while (true) { r5.w = cmp((int)r4.w >= (int)r1.w); if (r5.w != 0) break; r5.w = (int)r4.w * 3; r8.xyz = -foginfo[r5.w].pos.xyz + r0.xyz; r6.w = dot(r8.xyz, r8.xyz); r6.w = sqrt(r6.w); r6.w = saturate(r6.w / foginfo[r5.w].param.y); r6.w = log2(r6.w); r6.w = foginfo[r5.w].param.z * r6.w; r6.w = exp2(r6.w); r8.x = cmp(0.000000 == foginfo[r5.w].param.w); if (r8.x != 0) { r6.w = 1 + -r6.w; r8.x = r3.w * foginfo[r5.w].param.x + -r3.w; r3.w = r6.w * r8.x + r3.w; } else { r8.x = cmp(1.000000 == foginfo[r5.w].param.w); if (r8.x != 0) { r6.w = 1 + -r6.w; r8.x = foginfo[r5.w].param.x * r6.w + r3.w; r3.w = min(1, r8.x); } else { r8.x = foginfo[r5.w].param.x * r6.w + r3.w; r3.w = min(1, r8.x); } } r6.w = foginfo[r5.w].color.w * r6.w; r8.xyz = foginfo[r5.w].color.xyz + -r7.xzw; r7.xzw = r6.www * r8.xyz + r7.xzw; r4.w = (int)r4.w + 1; } o8.xyz = r7.xzw * r3.www; o8.w = 1 + -r3.w; r2.w = r7.y; } else { o8.xyzw = float4(0,0,0,1); r2.w = 0; } o2.xy = uColor[1].xy + v6.xy; o2.zw = uColor[1].zw + v7.xy; o1.xyzw = v5.xyzw; o3.w = r5.x; o3.xyz = r3.xyz; o4.w = r5.y; o5.w = r5.z; o5.xyz = r4.xyz; o7.xyzw = r2.xyzw; o6.xyz = r1.xyz; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:40:26 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float4x4 uMatrix[3]; // Offset: 0 Size: 192 // float4 uColor[2]; // Offset: 192 Size: 32 // float4 lightvec; // Offset: 224 Size: 16 [unused] // float4 fogparam[2]; // Offset: 240 Size: 32 // float4 fogden[2]; // Offset: 272 Size: 32 // float4 fogcolor[2]; // Offset: 304 Size: 32 // float numFogLight; // Offset: 336 Size: 4 // // struct // { // // float4 param; // Offset: 352 // float4 color; // Offset: 368 // float4 pos; // Offset: 384 // // } foginfo[64]; // Offset: 352 Size: 3072 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyzw // POSITION 1 xyz 1 NONE float xyz // NORMAL 0 xyzw 2 NONE float xyz // NORMAL 1 xyzw 3 NONE float xyz // COLOR 0 xyzw 4 NONE float xyzw // COLOR 1 xyzw 5 NONE float xyzw // TEXCOORD 0 xy 6 NONE float xy // TEXCOORD 1 xy 7 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // COLOR 0 xyzw 0 NONE float xyzw // COLOR 1 xyzw 1 NONE float xyzw // TEXCOORD 0 xyzw 2 NONE float xyzw // TEXCOORD 1 xyzw 3 NONE float xyzw // TEXCOORD 2 xyzw 4 NONE float xyzw // TEXCOORD 3 xyzw 5 NONE float xyzw // TEXCOORD 4 xyz 6 NONE float xyz // TEXCOORD 5 xyzw 7 NONE float xyzw // TEXCOORD 6 xyzw 8 NONE float xyzw // SV_Position 0 xyzw 9 POS float xyzw // vs_4_0 dcl_constantbuffer cb0[214], dynamicIndexed dcl_input v0.xyzw dcl_input v1.xyz dcl_input v2.xyz dcl_input v3.xyz dcl_input v4.xyzw dcl_input v5.xyzw dcl_input v6.xy dcl_input v7.xy dcl_output o0.xyzw dcl_output o1.xyzw dcl_output o2.xyzw dcl_output o3.xyzw dcl_output o4.xyzw dcl_output o5.xyzw dcl_output o6.xyz dcl_output o7.xyzw dcl_output o8.xyzw dcl_output_siv o9.xyzw, position dcl_temps 9 mul r0.xyz, v0.yyyy, cb0[1].xyzx mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx add r0.xyz, r0.xyzx, cb0[3].xyzx mul r1.xyz, r0.yyyy, cb0[5].xyzx mad r1.xyz, cb0[4].xyzx, r0.xxxx, r1.xyzx mad r1.xyz, cb0[6].xyzx, r0.zzzz, r1.xyzx add r1.xyz, r1.xyzx, cb0[7].xyzx mul r2.xyzw, r1.yyyy, cb0[9].xyzw mad r2.xyzw, cb0[8].xyzw, r1.xxxx, r2.xyzw mad r2.xyzw, cb0[10].xyzw, r1.zzzz, r2.xyzw add o9.xyzw, r2.xyzw, cb0[11].xyzw mul r2.xyz, v0.wwww, v2.xyzx mul r3.xyz, r2.yyyy, cb0[1].xyzx mad r2.xyw, cb0[0].xyxz, r2.xxxx, r3.xyxz mad r2.xyz, cb0[2].xyzx, r2.zzzz, r2.xywx dp3 r0.w, r2.xyzx, r2.xyzx rsq r0.w, r0.w mul r2.xyz, r0.wwww, r2.xyzx mul r3.xyz, r2.yyyy, cb0[5].xyzx mad r2.xyw, cb0[4].xyxz, r2.xxxx, r3.xyxz mad r2.xyz, cb0[6].xyzx, r2.zzzz, r2.xywx dp3 r0.w, r2.xyzx, r2.xyzx rsq r0.w, r0.w mul r2.xyz, r0.wwww, r2.xyzx mul o0.xyzw, v4.xyzw, cb0[12].xyzw mul r3.xyz, v3.xzyx, l(1.000000, -1.000000, 1.000000, 0.000000) mul r4.xyz, r3.yyyy, cb0[1].xyzx mad r3.xyw, cb0[0].xyxz, r3.xxxx, r4.xyxz mad r3.xyz, cb0[2].xyzx, r3.zzzz, r3.xywx mul r4.xyz, r3.yyyy, cb0[5].xyzx mad r3.xyw, cb0[4].xyxz, r3.xxxx, r4.xyxz mad r3.xyz, cb0[6].xyzx, r3.zzzz, r3.xywx dp3 r0.w, r3.xyzx, r3.xyzx rsq r0.w, r0.w mul r3.xyz, r0.wwww, r3.xyzx mul r4.xyz, r2.zxyz, r3.yzxy mad o4.xyz, r2.yzxy, r3.zxyz, -r4.xyzx mul r4.xyz, v1.xzyx, l(1.000000, -1.000000, 1.000000, 0.000000) mul r5.xyz, r4.yyyy, cb0[1].xyzx mad r4.xyw, cb0[0].xyxz, r4.xxxx, r5.xyxz mad r4.xyz, cb0[2].xyzx, r4.zzzz, r4.xywx mul r5.xyz, r4.yyyy, cb0[5].xyzx mad r4.xyw, cb0[4].xyxz, r4.xxxx, r5.xyxz mad r4.xyz, cb0[6].xyzx, r4.zzzz, r4.xywx dp3 r0.w, r4.xyzx, r4.xyzx rsq r0.w, r0.w mul r4.xyz, r0.wwww, r4.xyzx mul r5.xyz, r2.zxyz, r4.yzxy mad r5.xyz, r2.yzxy, r4.zxyz, -r5.xyzx ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[15].w if_nz r0.w add r6.xy, -cb0[17].zwzz, cb0[18].zwzz mov r7.x, -cb0[15].y mov r7.y, -cb0[16].y add r6.zw, r1.zzzz, r7.xxxy mul_sat r7.x, r6.z, cb0[15].x mul_sat r7.y, r6.w, cb0[16].x log r6.zw, r7.xxxy mul r7.x, r6.z, cb0[15].z mul r7.y, r6.w, cb0[16].z exp r6.zw, r7.xxxy add r7.x, -cb0[17].y, cb0[17].x add r7.y, -cb0[18].y, cb0[18].x mov r8.x, cb0[17].y mov r8.y, cb0[18].y mad r7.xy, r6.zwzz, r7.xyxx, r8.xyxx ge r0.w, l(0.001000), r6.x add r1.w, r0.z, -cb0[17].z div_sat r1.w, r1.w, r6.x add r3.w, -r7.x, r7.y mad r8.x, r1.w, r3.w, r7.x add r6.xzw, -cb0[19].xxyz, cb0[20].xxyz mad r6.xzw, r1.wwww, r6.xxzw, cb0[19].xxyz mad r8.y, r1.w, r6.y, cb0[17].w movc r6.xyz, r0.wwww, cb0[19].xyzx, r6.xzwx mov r7.z, cb0[17].w movc r7.xy, r0.wwww, r7.xzxx, r8.xyxx add r0.w, -r7.x, l(1.000000) ftoi r1.w, cb0[21].x mov r7.xzw, r6.xxyz mov r3.w, r0.w mov r4.w, l(0) loop ige r5.w, r4.w, r1.w breakc_nz r5.w imul null, r5.w, r4.w, l(3) add r8.xyz, r0.xyzx, -cb0[r5.w + 24].xyzx dp3 r6.w, r8.xyzx, r8.xyzx sqrt r6.w, r6.w div_sat r6.w, r6.w, cb0[r5.w + 22].y log r6.w, r6.w mul r6.w, r6.w, cb0[r5.w + 22].z exp r6.w, r6.w eq r8.x, l(0.000000), cb0[r5.w + 22].w if_nz r8.x add r6.w, -r6.w, l(1.000000) mad r8.x, r3.w, cb0[r5.w + 22].x, -r3.w mad r3.w, r6.w, r8.x, r3.w else eq r8.x, l(1.000000), cb0[r5.w + 22].w if_nz r8.x add r6.w, -r6.w, l(1.000000) mad r8.x, cb0[r5.w + 22].x, r6.w, r3.w min r3.w, r8.x, l(1.000000) else mad r8.x, cb0[r5.w + 22].x, r6.w, r3.w min r3.w, r8.x, l(1.000000) endif endif mul r6.w, r6.w, cb0[r5.w + 23].w add r8.xyz, -r7.xzwx, cb0[r5.w + 23].xyzx mad r7.xzw, r6.wwww, r8.xxyz, r7.xxzw iadd r4.w, r4.w, l(1) endloop mul o8.xyz, r3.wwww, r7.xzwx add o8.w, -r3.w, l(1.000000) mov r2.w, r7.y else mov o8.xyzw, l(0,0,0,1.000000) mov r2.w, l(0) endif add o2.xy, v6.xyxx, cb0[13].xyxx add o2.zw, v7.xxxy, cb0[13].zzzw mov o1.xyzw, v5.xyzw mov o3.w, r5.x mov o3.xyz, r3.xyzx mov o4.w, r5.y mov o5.w, r5.z mov o5.xyz, r4.xyzx mov o7.xyzw, r2.xyzw mov o6.xyz, r1.xyzx ret // Approximately 133 instruction slots used b620a75d2a91df52-vs_replace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:39:57 2018 cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float4 lightvec : packoffset(c14); float4 fogparam[2] : packoffset(c15); float4 fogden[2] : packoffset(c17); float4 fogcolor[2] : packoffset(c19); float numFogLight : packoffset(c21); struct { float4 param; float4 color; float4 pos; } foginfo[64] : packoffset(c22); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float4 v1 : NORMAL0, float4 v2 : COLOR0, float4 v3 : COLOR1, float2 v4 : TEXCOORD0, float4 v5 : BLENDWEIGHT0, uint4 v6 : BLENDINDICES0, out float2 o0 : TEXCOORD0, out float p0 : TEXCOORD9, out float4 o1 : TEXCOORD1, out float3 o2 : TEXCOORD2, out float4 o3 : COLOR0, out float4 o4 : COLOR1, out float4 o5 : TEXCOORD8, out float4 o6 : SV_Position0) { float4 r0,r1,r2,r3,r4,r5; uint4 bitmask, uiDest; float4 fDest; r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r1.xyz = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r1.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r1.xyz; r1.xyz = uMatrix[1]._m03_m13_m23 + r1.xyz; r2.xyzw = uMatrix[2]._m01_m11_m21_m31 * r1.yyyy; r2.xyzw = uMatrix[2]._m00_m10_m20_m30 * r1.xxxx + r2.xyzw; r2.xyzw = uMatrix[2]._m02_m12_m22_m32 * r1.zzzz + r2.xyzw; o6.xyzw = uMatrix[2]._m03_m13_m23_m33 + r2.xyzw; r2.xyz = v1.xyz * v0.www; r3.xyz = uMatrix[0]._m01_m11_m21 * r2.yyy; r2.xyw = uMatrix[0]._m00_m10_m20 * r2.xxx + r3.xyz; r2.xyz = uMatrix[0]._m02_m12_m22 * r2.zzz + r2.xyw; r0.w = dot(r2.xyz, r2.xyz); r0.w = rsqrt(r0.w); r2.xyz = r2.xyz * r0.www; r3.xyz = uMatrix[1]._m01_m11_m21 * r2.yyy; r3.xyz = uMatrix[1]._m00_m10_m20 * r2.xxx + r3.xyz; r3.xyz = uMatrix[1]._m02_m12_m22 * r2.zzz + r3.xyz; r0.w = dot(r3.xyz, r3.xyz); r0.w = rsqrt(r0.w); o2.xyz = r3.xyz * r0.www; o3.xyzw = uColor[0].xyzw * v2.xyzw; r0.w = cmp(0 != fogparam[0].w); if (r0.w != 0) { r3.xy = fogden[1].zw + -fogden[0].zw; r4.x = -fogparam[0].y; r4.y = -fogparam[1].y; r3.zw = r4.xy + r1.zz; r4.x = saturate(fogparam[0].x * r3.z); r4.y = saturate(fogparam[1].x * r3.w); r3.zw = log2(r4.xy); r4.x = fogparam[0].z * r3.z; r4.y = fogparam[1].z * r3.w; r3.zw = exp2(r4.xy); r4.x = fogden[0].x + -fogden[0].y; r4.y = fogden[1].x + -fogden[1].y; r5.x = fogden[0].y; r5.y = fogden[1].y; r4.xy = r3.zw * r4.xy + r5.xy; r0.w = cmp(0.00100000005 >= r3.x); r1.w = -fogden[0].z + r0.z; r1.w = saturate(r1.w / r3.x); r2.w = r4.y + -r4.x; r5.x = r1.w * r2.w + r4.x; r3.xzw = fogcolor[1].xyz + -fogcolor[0].xyz; r3.xzw = r1.www * r3.xzw + fogcolor[0].xyz; r5.y = r1.w * r3.y + fogden[0].w; r3.xyz = r0.www ? fogcolor[0].xyz : r3.xzw; r4.z = fogden[0].w; r4.xy = r0.ww ? r4.xz : r5.xy; r0.w = 1 + -r4.x; r1.w = numFogLight; r4.xzw = r3.xyz; r2.w = r0.w; r3.w = 0; while (true) { r5.x = cmp((int)r3.w >= (int)r1.w); if (r5.x != 0) break; r5.x = (int)r3.w * 3; r5.yzw = -foginfo[r5.x].pos.xyz + r0.xyz; r5.y = dot(r5.yzw, r5.yzw); r5.y = sqrt(r5.y); r5.y = saturate(r5.y / foginfo[r5.x].param.y); r5.y = log2(r5.y); r5.y = foginfo[r5.x].param.z * r5.y; r5.y = exp2(r5.y); r5.z = cmp(0.000000 == foginfo[r5.x].param.w); if (r5.z != 0) { r5.y = 1 + -r5.y; r5.z = r2.w * foginfo[r5.x].param.x + -r2.w; r2.w = r5.y * r5.z + r2.w; } else { r5.z = cmp(1.000000 == foginfo[r5.x].param.w); if (r5.z != 0) { r5.y = 1 + -r5.y; r5.z = foginfo[r5.x].param.x * r5.y + r2.w; r2.w = min(1, r5.z); } else { r5.z = foginfo[r5.x].param.x * r5.y + r2.w; r2.w = min(1, r5.z); } } r5.y = foginfo[r5.x].color.w * r5.y; r5.xzw = foginfo[r5.x].color.xyz + -r4.xzw; r4.xzw = r5.yyy * r5.xzw + r4.xzw; r3.w = (int)r3.w + 1; } o5.xyz = r4.xzw * r2.www; o5.w = 1 + -r2.w; p0.x = r4.y; } else { o5.xyzw = float4(0,0,0,1); p0.x = 0; } r0.x = dot(r2.xyz, lightvec.xyz); r0.x = 1 + -r0.x; r0.x = min(1, r0.x); o4.w = r0.x * r0.x; o0.xy = uColor[1].xy + v4.xy; o4.xyz = v3.xyz; o1.xyz = r1.xyz; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:39:57 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float4x4 uMatrix[3]; // Offset: 0 Size: 192 // float4 uColor[2]; // Offset: 192 Size: 32 // float4 lightvec; // Offset: 224 Size: 16 // float4 fogparam[2]; // Offset: 240 Size: 32 // float4 fogden[2]; // Offset: 272 Size: 32 // float4 fogcolor[2]; // Offset: 304 Size: 32 // float numFogLight; // Offset: 336 Size: 4 // // struct // { // // float4 param; // Offset: 352 // float4 color; // Offset: 368 // float4 pos; // Offset: 384 // // } foginfo[64]; // Offset: 352 Size: 3072 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyzw // NORMAL 0 xyzw 1 NONE float xyz // COLOR 0 xyzw 2 NONE float xyzw // COLOR 1 xyzw 3 NONE float xyz // TEXCOORD 0 xy 4 NONE float xy // BLENDWEIGHT 0 xyzw 5 NONE float // BLENDINDICES 0 xyzw 6 NONE uint // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // TEXCOORD 0 xy 0 NONE float xy // TEXCOORD 9 z 0 NONE float z // TEXCOORD 1 xyz 1 NONE float xyz // TEXCOORD 2 xyz 2 NONE float xyz // COLOR 0 xyzw 3 NONE float xyzw // COLOR 1 xyzw 4 NONE float xyzw // TEXCOORD 8 xyzw 5 NONE float xyzw // SV_Position 0 xyzw 6 POS float xyzw // vs_4_0 dcl_constantbuffer cb0[214], dynamicIndexed dcl_input v0.xyzw dcl_input v1.xyz dcl_input v2.xyzw dcl_input v3.xyz dcl_input v4.xy dcl_output o0.xy dcl_output o0.z dcl_output o1.xyz dcl_output o2.xyz dcl_output o3.xyzw dcl_output o4.xyzw dcl_output o5.xyzw dcl_output_siv o6.xyzw, position dcl_temps 6 mul r0.xyz, v0.yyyy, cb0[1].xyzx mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx add r0.xyz, r0.xyzx, cb0[3].xyzx mul r1.xyz, r0.yyyy, cb0[5].xyzx mad r1.xyz, cb0[4].xyzx, r0.xxxx, r1.xyzx mad r1.xyz, cb0[6].xyzx, r0.zzzz, r1.xyzx add r1.xyz, r1.xyzx, cb0[7].xyzx mul r2.xyzw, r1.yyyy, cb0[9].xyzw mad r2.xyzw, cb0[8].xyzw, r1.xxxx, r2.xyzw mad r2.xyzw, cb0[10].xyzw, r1.zzzz, r2.xyzw add o6.xyzw, r2.xyzw, cb0[11].xyzw mul r2.xyz, v0.wwww, v1.xyzx mul r3.xyz, r2.yyyy, cb0[1].xyzx mad r2.xyw, cb0[0].xyxz, r2.xxxx, r3.xyxz mad r2.xyz, cb0[2].xyzx, r2.zzzz, r2.xywx dp3 r0.w, r2.xyzx, r2.xyzx rsq r0.w, r0.w mul r2.xyz, r0.wwww, r2.xyzx mul r3.xyz, r2.yyyy, cb0[5].xyzx mad r3.xyz, cb0[4].xyzx, r2.xxxx, r3.xyzx mad r3.xyz, cb0[6].xyzx, r2.zzzz, r3.xyzx dp3 r0.w, r3.xyzx, r3.xyzx rsq r0.w, r0.w mul o2.xyz, r0.wwww, r3.xyzx mul o3.xyzw, v2.xyzw, cb0[12].xyzw ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[15].w if_nz r0.w add r3.xy, -cb0[17].zwzz, cb0[18].zwzz mov r4.x, -cb0[15].y mov r4.y, -cb0[16].y add r3.zw, r1.zzzz, r4.xxxy mul_sat r4.x, r3.z, cb0[15].x mul_sat r4.y, r3.w, cb0[16].x log r3.zw, r4.xxxy mul r4.x, r3.z, cb0[15].z mul r4.y, r3.w, cb0[16].z exp r3.zw, r4.xxxy add r4.x, -cb0[17].y, cb0[17].x add r4.y, -cb0[18].y, cb0[18].x mov r5.x, cb0[17].y mov r5.y, cb0[18].y mad r4.xy, r3.zwzz, r4.xyxx, r5.xyxx ge r0.w, l(0.001000), r3.x add r1.w, r0.z, -cb0[17].z div_sat r1.w, r1.w, r3.x add r2.w, -r4.x, r4.y mad r5.x, r1.w, r2.w, r4.x add r3.xzw, -cb0[19].xxyz, cb0[20].xxyz mad r3.xzw, r1.wwww, r3.xxzw, cb0[19].xxyz mad r5.y, r1.w, r3.y, cb0[17].w movc r3.xyz, r0.wwww, cb0[19].xyzx, r3.xzwx mov r4.z, cb0[17].w movc r4.xy, r0.wwww, r4.xzxx, r5.xyxx add r0.w, -r4.x, l(1.000000) ftoi r1.w, cb0[21].x mov r4.xzw, r3.xxyz mov r2.w, r0.w mov r3.w, l(0) loop ige r5.x, r3.w, r1.w breakc_nz r5.x imul null, r5.x, r3.w, l(3) add r5.yzw, r0.xxyz, -cb0[r5.x + 24].xxyz dp3 r5.y, r5.yzwy, r5.yzwy sqrt r5.y, r5.y div_sat r5.y, r5.y, cb0[r5.x + 22].y log r5.y, r5.y mul r5.y, r5.y, cb0[r5.x + 22].z exp r5.y, r5.y eq r5.z, l(0.000000), cb0[r5.x + 22].w if_nz r5.z add r5.y, -r5.y, l(1.000000) mad r5.z, r2.w, cb0[r5.x + 22].x, -r2.w mad r2.w, r5.y, r5.z, r2.w else eq r5.z, l(1.000000), cb0[r5.x + 22].w if_nz r5.z add r5.y, -r5.y, l(1.000000) mad r5.z, cb0[r5.x + 22].x, r5.y, r2.w min r2.w, r5.z, l(1.000000) else mad r5.z, cb0[r5.x + 22].x, r5.y, r2.w min r2.w, r5.z, l(1.000000) endif endif mul r5.y, r5.y, cb0[r5.x + 23].w add r5.xzw, -r4.xxzw, cb0[r5.x + 23].xxyz mad r4.xzw, r5.yyyy, r5.xxzw, r4.xxzw iadd r3.w, r3.w, l(1) endloop mul o5.xyz, r2.wwww, r4.xzwx add o5.w, -r2.w, l(1.000000) mov o0.z, r4.y else mov o5.xyzw, l(0,0,0,1.000000) mov o0.z, l(0) endif dp3 r0.x, r2.xyzx, cb0[14].xyzx add r0.x, -r0.x, l(1.000000) min r0.x, r0.x, l(1.000000) mul o4.w, r0.x, r0.x add o0.xy, v4.xyxx, cb0[13].xyxx mov o4.xyz, v3.xyzx mov o1.xyz, r1.xyzx ret // Approximately 106 instruction slots used d720ae2045e3fed3-vs_replace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:40:10 2018 cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float2 fparam : packoffset(c14); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float4 v1 : NORMAL0, float4 v2 : COLOR0, float2 v3 : TEXCOORD0, out float4 o0 : COLOR0, out float4 o1 : TEXCOORD0, out float4 o2 : TEXCOORD1, out float4 o3 : TEXCOORD2, out float4 o4 : SV_Position0) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; o0.xyzw = uColor[0].xyzw * v2.xyzw; r0.xyz = v1.xyz * v0.www; r1.xyz = uMatrix[0]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[0]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * r0.zzz + r0.xyw; r0.w = dot(r0.xyz, r0.xyz); r0.w = rsqrt(r0.w); r0.xyz = r0.xyz * r0.www; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw; r0.w = dot(r0.xyz, r0.xyz); r0.w = rsqrt(r0.w); r0.xyz = r0.xyz * r0.www; o1.xyz = float3(1,-1,1) * r0.xyz; r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw; r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz; o1.w = r0.z; o2.xy = fparam.xy + v3.xy; r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy; r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw; r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw; r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw; o3.xyzw = float4(1,-1,1,1) * r0.xyzw; o4.xyzw = r0.xyzw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:40:10 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float4x4 uMatrix[3]; // Offset: 0 Size: 192 // float4 uColor[2]; // Offset: 192 Size: 32 // float2 fparam; // Offset: 224 Size: 8 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyzw // NORMAL 0 xyzw 1 NONE float xyz // COLOR 0 xyzw 2 NONE float xyzw // TEXCOORD 0 xy 3 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // COLOR 0 xyzw 0 NONE float xyzw // TEXCOORD 0 xyzw 1 NONE float xyzw // TEXCOORD 1 xy 2 NONE float xy // TEXCOORD 2 xyzw 3 NONE float xyzw // SV_Position 0 xyzw 4 POS float xyzw // vs_4_0 dcl_constantbuffer cb0[15], immediateIndexed dcl_input v0.xyzw dcl_input v1.xyz dcl_input v2.xyzw dcl_input v3.xy dcl_output o0.xyzw dcl_output o1.xyzw dcl_output o2.xy dcl_output o3.xyzw dcl_output_siv o4.xyzw, position dcl_temps 2 mul o0.xyzw, v2.xyzw, cb0[12].xyzw mul r0.xyz, v0.wwww, v1.xyzx mul r1.xyz, r0.yyyy, cb0[1].xyzx mad r0.xyw, cb0[0].xyxz, r0.xxxx, r1.xyxz mad r0.xyz, cb0[2].xyzx, r0.zzzz, r0.xywx dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx mul r1.xyz, r0.yyyy, cb0[5].xyzx mad r0.xyw, cb0[4].xyxz, r0.xxxx, r1.xyxz mad r0.xyz, cb0[6].xyzx, r0.zzzz, r0.xywx dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx mul o1.xyz, r0.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) mul r0.xyz, v0.yyyy, cb0[1].xyzx mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx add r0.xyz, r0.xyzx, cb0[3].xyzx mul r1.xyz, r0.yyyy, cb0[5].xyzx mad r0.xyw, cb0[4].xyxz, r0.xxxx, r1.xyxz mad r0.xyz, cb0[6].xyzx, r0.zzzz, r0.xywx add r0.xyz, r0.xyzx, cb0[7].xyzx mov o1.w, r0.z add o2.xy, v3.xyxx, cb0[14].xyxx mul r1.xyzw, r0.yyyy, cb0[9].xyzw mad r1.xyzw, cb0[8].xyzw, r0.xxxx, r1.xyzw mad r0.xyzw, cb0[10].xyzw, r0.zzzz, r1.xyzw add r0.xyzw, r0.xyzw, cb0[11].xyzw mul o3.xyzw, r0.xyzw, l(1.000000, -1.000000, 1.000000, 1.000000) mov o4.xyzw, r0.xyzw ret // Approximately 32 instruction slots used 2ba486fe774889e9-ps_replace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:35:24 2018 cbuffer CB0 : register(b0) { float altest : packoffset(c0); float useshadow : packoffset(c0.y); float mulblend : packoffset(c0.z); float noalpha : packoffset(c0.w); float znear : packoffset(c1); float zfar : packoffset(c1.y); float zwrite : packoffset(c1.z); } SamplerState tex_samp_s : register(s0); Texture2D<float4> tex_tex : register(t0); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : COLOR0, float4 v1 : COLOR1, float4 v2 : TEXCOORD0, float4 v3 : SV_Position0, out float4 o0 : SV_Target0, out float4 o1 : SV_Target1) { float4 r0,r1,r2; uint4 bitmask, uiDest; float4 fDest; r0.x = -altest; r0.y = -0.00400000019; r0.zw = v2.xy / v2.ww; r1.xyzw = tex_tex.Sample(tex_samp_s, r0.zw).xyzw; r2.x = r1.w; r2.y = v0.w * r1.w; r0.xy = r2.xy + r0.xy; o0.w = r2.y; r0.xy = cmp(r0.xy < float2(0,0)); r0.x = (int)r0.y | (int)r0.x; r0.yz = cmp(float2(0,0) != noalpha); r0.y = ~(int)r0.y; r0.x = r0.y ? r0.x : 0; if (r0.x != 0) discard; r0.x = -r1.w * v0.w + 1; r1.xyz = r1.xyz * v0.xyz + v1.xyz; r1.xyz = min(float3(1,1,1), r1.xyz); r2.xyz = float3(1,1,1) + -r1.xyz; r0.xyw = r0.xxx * r2.xyz + r1.xyz; o0.xyz = r0.zzz ? r0.xyw : r1.xyz; o1.xyzw = float4(0,0,0,0); return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:35:24 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float altest; // Offset: 0 Size: 4 // float useshadow; // Offset: 4 Size: 4 [unused] // float mulblend; // Offset: 8 Size: 4 // float noalpha; // Offset: 12 Size: 4 // float znear; // Offset: 16 Size: 4 [unused] // float zfar; // Offset: 20 Size: 4 [unused] // float zwrite; // Offset: 24 Size: 4 [unused] // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // tex_samp sampler NA NA 0 1 // tex_tex texture float4 2d 0 1 // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // COLOR 0 xyzw 0 NONE float xyzw // COLOR 1 xyzw 1 NONE float xyz // TEXCOORD 0 xyzw 2 NONE float xy w // SV_Position 0 xyzw 3 POS float // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // SV_Target 1 xyzw 1 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[1], immediateIndexed dcl_sampler s0, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_input_ps linear v0.xyzw dcl_input_ps linear v1.xyz dcl_input_ps linear v2.xyw dcl_output o0.xyzw dcl_output o1.xyzw dcl_temps 3 mov r0.x, -cb0[0].x mov r0.y, l(-0.004000) div r0.zw, v2.xxxy, v2.wwww sample r1.xyzw, r0.zwzz, t0.xyzw, s0 mov r2.x, r1.w mul r2.y, r1.w, v0.w add r0.xy, r0.xyxx, r2.xyxx mov o0.w, r2.y lt r0.xy, r0.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) or r0.x, r0.y, r0.x ne r0.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].wwzw not r0.y, r0.y and r0.x, r0.y, r0.x discard_nz r0.x mad r0.x, -r1.w, v0.w, l(1.000000) mad r1.xyz, r1.xyzx, v0.xyzx, v1.xyzx min r1.xyz, r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) add r2.xyz, -r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) mad r0.xyw, r0.xxxx, r2.xyxz, r1.xyxz movc o0.xyz, r0.zzzz, r0.xywx, r1.xyzx mov o1.xyzw, l(0,0,0,0) ret // Approximately 22 instruction slots used 3b41d5e5af7fd6a0-ps_replace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:35:16 2018 cbuffer CB0 : register(b0) { float altest : packoffset(c0); float useshadow : packoffset(c0.y); float mulblend : packoffset(c0.z); float noalpha : packoffset(c0.w); float znear : packoffset(c1); float zfar : packoffset(c1.y); float zwrite : packoffset(c1.z); float4 shadowcolor : packoffset(c2); float4 cascadeBound : packoffset(c3); float4 lightColor : packoffset(c4); float4 param : packoffset(c5); float2 depthuv : packoffset(c6); float numLight : packoffset(c1.w); struct { float4 pos; float4 color; } lightinfo[64] : packoffset(c7); } SamplerState tex_samp_s : register(s0); SamplerState linearztex_samp_s : register(s1); Texture2D<float4> tex_tex : register(t0); Texture2D<float4> linearztex_tex : register(t1); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float2 v0 : TEXCOORD0, float w0 : TEXCOORD9, float4 v1 : TEXCOORD1, float3 v2 : TEXCOORD2, float4 v3 : COLOR0, float4 v4 : COLOR1, float4 v5 : TEXCOORD8, float4 v6 : SV_Position0, out float4 o0 : SV_Target0, out float4 o1 : SV_Target1) { const float4 icb[] = { { 1.000000, 0, 0, 0}, { 0, 1.000000, 0, 0}, { 0, 0, 1.000000, 0}, { 0, 0, 0, 1.000000} }; float4 r0,r1,r2,r3,r4,r5,r6,r7; uint4 bitmask, uiDest; float4 fDest; r0.x = dot(v1.xyz, v1.xyz); r0.x = rsqrt(r0.x); r0.yzw = v1.xyz * r0.xxx; r1.xyzw = tex_tex.Sample(tex_samp_s, v0.xy).xyzw; r2.xyzw = v3.xyzw * r1.xyzw; r3.x = cmp(0 != noalpha); r3.x = ~(int)r3.x; r4.x = -altest; r4.y = -0.00400000019; r5.x = r1.w; r5.y = r2.w; r3.yz = r5.xy + r4.xy; r3.yz = cmp(r3.yz < float2(0,0)); r1.w = (int)r3.z | (int)r3.y; r1.w = r3.x ? r1.w : 0; if (r1.w != 0) discard; r1.w = cmp(param.x < 10); r0.y = dot(-r0.yzw, v2.xyz); r0.y = saturate(1 + -r0.y); r0.y = log2(r0.y); r0.y = param.x * r0.y; r0.y = exp2(r0.y); r0.y = 1 + -r0.y; r0.y = r2.w * r0.y; r0.z = cmp(r0.y < 0.00100000005); r0.z = r0.z ? r1.w : 0; if (r0.z != 0) discard; r3.w = r1.w ? r0.y : r2.w; r0.y = cmp(0 < param.z); if (r0.y != 0) { r0.y = -param.y + v6.w; r0.y = r0.y / param.z; r0.y = min(1, r0.y); r0.z = cmp(0 != zwrite); if (r0.z != 0) { r0.zw = float2(0.25,0.25) * v6.yx; r4.xy = cmp(r0.zw >= -r0.zw); r0.zw = frac(abs(r0.zw)); r0.zw = r4.xy ? r0.zw : -r0.zw; r0.zw = float2(4,4) * r0.zw; r0.zw = (uint2)r0.zw; r4.x = dot(float4(0.061999999,0.559000015,0.247999996,0.745000005), icb[r0.w+0].xyzw); r4.y = dot(float4(0.806999981,0.31099999,0.994000018,0.497000009), icb[r0.w+0].xyzw); r4.z = dot(float4(0.186000004,0.683000028,0.123999998,0.620999992), icb[r0.w+0].xyzw); r4.w = dot(float4(0.931999981,0.435000002,0.870000005,0.372999996), icb[r0.w+0].xyzw); r4.x = dot(r4.xyzw, icb[r0.z+0].xyzw); r4.y = 0.00400000019; r0.zw = -r4.xy + r0.yy; r0.zw = cmp(r0.zw < float2(0,0)); r0.z = (int)r0.w | (int)r0.z; if (r0.z != 0) discard; } else { r3.w = r3.w * r0.y; r0.y = cmp(r3.w < 0.00400000019); if (r0.y != 0) discard; } } r0.y = cmp(0 < param.w); if (r0.y != 0) { r0.yz = v6.xy / depthuv.xy; r4.xyzw = linearztex_tex.Sample(linearztex_samp_s, r0.yz).xyzw; r0.y = dot(r4.xy, float2(65536,256)); r0.y = r0.y + r4.z; r0.y = saturate(1.52587891e-005 * r0.y); r0.y = 1 + -r0.y; r0.z = zfar + -znear; r0.y = r0.y * r0.z + znear; r0.y = v6.w + -r0.y; r0.z = cmp(r0.y >= param.w); if (r0.z != 0) discard; r0.z = cmp(0 < r0.y); r0.y = r0.y / param.w; r0.y = 1 + -r0.y; r0.y = r3.w * r0.y; r3.w = r0.z ? r0.y : r3.w; } r0.yzw = lightColor.xyz * r2.xyz; r1.w = numLight; r4.xyz = float3(0,0,0); r5.xyz = float3(0,0,0); r2.w = 0; while (true) { r4.w = cmp((int)r2.w >= (int)r1.w); if (r4.w != 0) break; r4.w = (uint)r2.w << 1; r6.xyz = lightinfo[r4.w].pos.xyz + -v1.xyz; r5.w = dot(r6.xyz, r6.xyz); r6.w = sqrt(r5.w); r5.w = cmp(r6.w >= lightinfo[r4.w].pos.w); if (r5.w != 0) { r5.w = (int)r2.w + 1; r2.w = r5.w; continue; } r7.x = r6.w; r7.w = lightinfo[r4.w].pos.w; r6.xyzw = r6.xyzw / r7.xxxw; r5.w = 1 + -r6.w; r5.w = log2(r5.w); r5.w = lightinfo[r4.w].color.w * r5.w; r5.w = exp2(r5.w); r7.xyz = -v1.xyz * r0.xxx + r6.xyz; r6.w = dot(r7.xyz, r7.xyz); r6.w = rsqrt(r6.w); r7.xyz = r7.xyz * r6.www; r6.x = dot(r6.xyz, v2.xyz); r6.y = dot(r7.xyz, v2.xyz); r6.z = cmp(r6.x >= 0); r7.x = max(0, r6.x); r6.x = cmp(r6.y >= 0); r6.x = r6.z ? r6.x : 0; r6.y = r6.y * r6.y; r7.y = r6.x ? r6.y : 0; r6.xy = r7.xy * r5.ww; r4.xyz = lightinfo[r4.w].color.xyz * r6.xxx + r4.xyz; r5.xyz = lightinfo[r4.w].color.xyz * r6.yyy + r5.xyz; r2.w = (int)r2.w + 1; } r6.xy = float2(0.224250004,0.440250009) * r4.xy; r0.x = r6.x + r6.y; r0.x = r4.z * 0.0855000019 + r0.x; r0.x = saturate(1 + -r0.x); r0.x = v4.w * r0.x; r1.xyz = r4.xyz * r1.xyz; r2.xyz = r2.xyz * lightColor.xyz + r1.xyz; r0.yzw = -r0.yzw * r1.xyz + r2.xyz; r1.xyz = r5.xyz * float3(0.100000001,0.100000001,0.100000001) + v4.xyz; r2.xyz = shadowcolor.xyz * r0.yzw + -r0.yzw; r0.xyz = r0.xxx * r2.xyz + r0.yzw; r0.xyz = r0.xyz + r1.xyz; r0.xyz = min(float3(1,1,1), r0.xyz); r0.w = dot(r0.xyz, float3(0.298999995,0.587000012,0.114)); r1.x = dot(v5.xyz, float3(0.298999995,0.587000012,0.114)); r0.w = -r1.x * 0.5 + r0.w; r0.w = max(0, r0.w); r1.x = 1 + -v5.w; r1.x = w0.x * r1.x; r0.w = r1.x * r0.w; r1.xyz = r0.xyz * v5.www + v5.xyz; r2.xyz = r0.xyz * r0.www; r0.xyz = r0.xyz * r0.www + r1.xyz; r0.xyz = -r1.xyz * r2.xyz + r0.xyz; r0.w = cmp(0 != mulblend); r1.x = -r3.w * v5.w + 1; r1.yzw = float3(1,1,1) + -r0.xyz; r1.xyz = r1.xxx * r1.yzw + r0.xyz; r3.xyz = r0.www ? r1.xyz : r0.xyz; r0.x = cmp(0 < zwrite); r1.xy = v2.xy * float2(0.5,0.5) + float2(0.5,0.5); r1.z = v5.w; r1.w = 1; o1.xyzw = r0.xxxx ? r1.xyzw : 0; o0.xyzw = r3.xyzw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:35:16 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float altest; // Offset: 0 Size: 4 // float useshadow; // Offset: 4 Size: 4 [unused] // float mulblend; // Offset: 8 Size: 4 // float noalpha; // Offset: 12 Size: 4 // float znear; // Offset: 16 Size: 4 // float zfar; // Offset: 20 Size: 4 // float zwrite; // Offset: 24 Size: 4 // float4 shadowcolor; // Offset: 32 Size: 16 // float4 cascadeBound; // Offset: 48 Size: 16 [unused] // float4 lightColor; // Offset: 64 Size: 16 // float4 param; // Offset: 80 Size: 16 // float2 depthuv; // Offset: 96 Size: 8 // float numLight; // Offset: 28 Size: 4 // // struct // { // // float4 pos; // Offset: 112 // float4 color; // Offset: 128 // // } lightinfo[64]; // Offset: 112 Size: 2048 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // tex_samp sampler NA NA 0 1 // linearztex_samp sampler NA NA 1 1 // tex_tex texture float4 2d 0 1 // linearztex_tex texture float4 2d 1 1 // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // TEXCOORD 0 xy 0 NONE float xy // TEXCOORD 9 z 0 NONE float z // TEXCOORD 1 xyz 1 NONE float xyz // TEXCOORD 2 xyz 2 NONE float xyz // COLOR 0 xyzw 3 NONE float xyzw // COLOR 1 xyzw 4 NONE float xyzw // TEXCOORD 8 xyzw 5 NONE float xyzw // SV_Position 0 xyzw 6 POS float xy w // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // SV_Target 1 xyzw 1 TARGET float xyzw // ps_4_0 dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, { 0, 1.000000, 0, 0}, { 0, 0, 1.000000, 0}, { 0, 0, 0, 1.000000} } dcl_constantbuffer cb0[135], dynamicIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_input_ps linear v0.xy dcl_input_ps linear v0.z dcl_input_ps linear v1.xyz dcl_input_ps linear v2.xyz dcl_input_ps linear v3.xyzw dcl_input_ps linear v4.xyzw dcl_input_ps linear v5.xyzw dcl_input_ps_siv linear noperspective v6.xyw, position dcl_output o0.xyzw dcl_output o1.xyzw dcl_temps 8 dp3 r0.x, v1.xyzx, v1.xyzx rsq r0.x, r0.x mul r0.yzw, r0.xxxx, v1.xxyz sample r1.xyzw, v0.xyxx, t0.xyzw, s0 mul r2.xyzw, r1.xyzw, v3.xyzw ne r3.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].w not r3.x, r3.x mov r4.x, -cb0[0].x mov r4.y, l(-0.004000) mov r5.x, r1.w mov r5.y, r2.w add r3.yz, r4.xxyx, r5.xxyx lt r3.yz, r3.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) or r1.w, r3.z, r3.y and r1.w, r3.x, r1.w discard_nz r1.w lt r1.w, cb0[5].x, l(10.000000) dp3 r0.y, -r0.yzwy, v2.xyzx add_sat r0.y, -r0.y, l(1.000000) log r0.y, r0.y mul r0.y, r0.y, cb0[5].x exp r0.y, r0.y add r0.y, -r0.y, l(1.000000) mul r0.y, r0.y, r2.w lt r0.z, r0.y, l(0.001000) and r0.z, r0.z, r1.w discard_nz r0.z movc r3.w, r1.w, r0.y, r2.w lt r0.y, l(0.000000), cb0[5].z if_nz r0.y add r0.y, v6.w, -cb0[5].y div r0.y, r0.y, cb0[5].z min r0.y, r0.y, l(1.000000) ne r0.z, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[1].z if_nz r0.z mul r0.zw, v6.yyyx, l(0.000000, 0.000000, 0.250000, 0.250000) ge r4.xy, r0.zwzz, -r0.zwzz frc r0.zw, |r0.zzzw| movc r0.zw, r4.xxxy, r0.zzzw, -r0.zzzw mul r0.zw, r0.zzzw, l(0.000000, 0.000000, 4.000000, 4.000000) ftou r0.zw, r0.zzzw dp4 r4.x, l(0.062000, 0.559000, 0.248000, 0.745000), icb[r0.w + 0].xyzw dp4 r4.y, l(0.807000, 0.311000, 0.994000, 0.497000), icb[r0.w + 0].xyzw dp4 r4.z, l(0.186000, 0.683000, 0.124000, 0.621000), icb[r0.w + 0].xyzw dp4 r4.w, l(0.932000, 0.435000, 0.870000, 0.373000), icb[r0.w + 0].xyzw dp4 r4.x, r4.xyzw, icb[r0.z + 0].xyzw mov r4.y, l(0.004000) add r0.zw, r0.yyyy, -r4.xxxy lt r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) or r0.z, r0.w, r0.z discard_nz r0.z else mul r3.w, r0.y, r3.w lt r0.y, r3.w, l(0.004000) discard_nz r0.y endif endif lt r0.y, l(0.000000), cb0[5].w if_nz r0.y div r0.yz, v6.xxyx, cb0[6].xxyx sample r4.xyzw, r0.yzyy, t1.xyzw, s1 dp2 r0.y, r4.xyxx, l(65536.000000, 256.000000, 0.000000, 0.000000) add r0.y, r4.z, r0.y mul_sat r0.y, r0.y, l(0.0000152587891) add r0.y, -r0.y, l(1.000000) add r0.z, -cb0[1].x, cb0[1].y mad r0.y, r0.y, r0.z, cb0[1].x add r0.y, -r0.y, v6.w ge r0.z, r0.y, cb0[5].w discard_nz r0.z lt r0.z, l(0.000000), r0.y div r0.y, r0.y, cb0[5].w add r0.y, -r0.y, l(1.000000) mul r0.y, r0.y, r3.w movc r3.w, r0.z, r0.y, r3.w endif mul r0.yzw, r2.xxyz, cb0[4].xxyz ftoi r1.w, cb0[1].w mov r4.xyz, l(0,0,0,0) mov r5.xyz, l(0,0,0,0) mov r2.w, l(0) loop ige r4.w, r2.w, r1.w breakc_nz r4.w ishl r4.w, r2.w, l(1) add r6.xyz, -v1.xyzx, cb0[r4.w + 7].xyzx dp3 r5.w, r6.xyzx, r6.xyzx sqrt r6.w, r5.w ge r5.w, r6.w, cb0[r4.w + 7].w if_nz r5.w iadd r5.w, r2.w, l(1) mov r2.w, r5.w continue endif mov r7.x, r6.w mov r7.w, cb0[r4.w + 7].w div r6.xyzw, r6.xyzw, r7.xxxw add r5.w, -r6.w, l(1.000000) log r5.w, r5.w mul r5.w, r5.w, cb0[r4.w + 8].w exp r5.w, r5.w mad r7.xyz, -v1.xyzx, r0.xxxx, r6.xyzx dp3 r6.w, r7.xyzx, r7.xyzx rsq r6.w, r6.w mul r7.xyz, r6.wwww, r7.xyzx dp3 r6.x, r6.xyzx, v2.xyzx dp3 r6.y, r7.xyzx, v2.xyzx ge r6.z, r6.x, l(0.000000) max r7.x, r6.x, l(0.000000) ge r6.x, r6.y, l(0.000000) and r6.x, r6.z, r6.x mul r6.y, r6.y, r6.y and r7.y, r6.y, r6.x mul r6.xy, r5.wwww, r7.xyxx mad r4.xyz, cb0[r4.w + 8].xyzx, r6.xxxx, r4.xyzx mad r5.xyz, cb0[r4.w + 8].xyzx, r6.yyyy, r5.xyzx iadd r2.w, r2.w, l(1) endloop mul r6.xy, r4.xyxx, l(0.224250, 0.440250, 0.000000, 0.000000) add r0.x, r6.y, r6.x mad r0.x, r4.z, l(0.085500), r0.x add_sat r0.x, -r0.x, l(1.000000) mul r0.x, r0.x, v4.w mul r1.xyz, r1.xyzx, r4.xyzx mad r2.xyz, r2.xyzx, cb0[4].xyzx, r1.xyzx mad r0.yzw, -r0.yyzw, r1.xxyz, r2.xxyz mad r1.xyz, r5.xyzx, l(0.100000, 0.100000, 0.100000, 0.000000), v4.xyzx mad r2.xyz, cb0[2].xyzx, r0.yzwy, -r0.yzwy mad r0.xyz, r0.xxxx, r2.xyzx, r0.yzwy add r0.xyz, r1.xyzx, r0.xyzx min r0.xyz, r0.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) dp3 r0.w, r0.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000) dp3 r1.x, v5.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000) mad r0.w, -r1.x, l(0.500000), r0.w max r0.w, r0.w, l(0.000000) add r1.x, -v5.w, l(1.000000) mul r1.x, r1.x, v0.z mul r0.w, r0.w, r1.x mad r1.xyz, r0.xyzx, v5.wwww, v5.xyzx mul r2.xyz, r0.wwww, r0.xyzx mad r0.xyz, r0.xyzx, r0.wwww, r1.xyzx mad r0.xyz, -r1.xyzx, r2.xyzx, r0.xyzx ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].z mad r1.x, -r3.w, v5.w, l(1.000000) add r1.yzw, -r0.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) mad r1.xyz, r1.xxxx, r1.yzwy, r0.xyzx movc r3.xyz, r0.wwww, r1.xyzx, r0.xyzx lt r0.x, l(0.000000), cb0[1].z mad r1.xy, v2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) mov r1.z, v5.w mov r1.w, l(1.000000) and o1.xyzw, r0.xxxx, r1.xyzw mov o0.xyzw, r3.xyzw ret // Approximately 154 instruction slots used 8fb63dad48dc801e-ps_replace ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:36:15 2018 cbuffer CB0 : register(b0) { float altest : packoffset(c0); float useshadow : packoffset(c0.y); float mulblend : packoffset(c0.z); float noalpha : packoffset(c0.w); float znear : packoffset(c1); float zfar : packoffset(c1.y); float zwrite : packoffset(c1.z); float4 fparam : packoffset(c2); float4 fuvclamp : packoffset(c3); float4 fuvmul : packoffset(c4); } SamplerState tex_samp_s : register(s0); SamplerState bbtex_samp_s : register(s1); Texture2D<float4> tex_tex : register(t0); Texture2D<float4> bbtex_tex : register(t1); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : COLOR0, float4 v1 : TEXCOORD0, float4 v2 : TEXCOORD1, float4 v3 : TEXCOORD2, float4 v4 : SV_Position0, out float4 o0 : SV_Target0, out float4 o1 : SV_Target1) { float4 r0,r1,r2,r3; uint4 bitmask, uiDest; float4 fDest; r0.xyzw = tex_tex.Sample(tex_samp_s, v2.xy).xyzw; r0.xy = float2(-0.5,-0.5) + r0.xy; r0.zw = float2(1.00999999,1.00999999) + -r0.zw; r0.xy = r0.xy / r0.zw; r0.xy = fparam.zw * r0.xy; r0.z = max(2.5, v1.w); r0.z = 10 / r0.z; r0.z = -1 + r0.z; r0.z = fparam.y * r0.z + 1; r1.xy = fparam.xx * v1.xy; r0.xy = r0.xy * r0.zz + r1.xy; r0.zw = v3.xy / v3.ww; r0.zw = r0.zw * fuvmul.xy + fuvmul.zw; r0.xy = r0.xy + r0.zw; r0.xy = max(fuvclamp.xy, r0.xy); r0.xy = min(fuvclamp.zw, r0.xy); r0.xyzw = bbtex_tex.Sample(bbtex_samp_s, r0.xy).wxyz; r1.xyzw = v0.wxyz * r0.xyzw; r2.xyzw = -r0.xyzw * v0.wxyz + float4(1,1,1,1); r2.xyz = r2.xxx * r2.yzw + r1.yzw; r0.y = r1.x; r3.x = -altest; r3.y = -0.00400000019; r0.xz = r3.xy + r0.xy; o0.w = r0.y; r0.xy = cmp(r0.xz < float2(0,0)); r0.x = (int)r0.y | (int)r0.x; r0.yz = cmp(float2(0,0) != noalpha); r0.y = ~(int)r0.y; o0.xyz = r0.zzz ? r2.xyz : r1.yzw; r0.x = r0.y ? r0.x : 0; if (r0.x != 0) discard; r0.x = cmp(0 < zwrite); r1.xy = v1.xy * float2(0.5,0.5) + float2(0.5,0.5); r1.zw = float2(0,1); o1.xyzw = r0.xxxx ? r1.xyzw : 0; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.3.8 on Wed May 23 14:36:15 2018 // // // Buffer Definitions: // // cbuffer CB0 // { // // float altest; // Offset: 0 Size: 4 // float useshadow; // Offset: 4 Size: 4 [unused] // float mulblend; // Offset: 8 Size: 4 // float noalpha; // Offset: 12 Size: 4 // float znear; // Offset: 16 Size: 4 [unused] // float zfar; // Offset: 20 Size: 4 [unused] // float zwrite; // Offset: 24 Size: 4 // float4 fparam; // Offset: 32 Size: 16 // float4 fuvclamp; // Offset: 48 Size: 16 // float4 fuvmul; // Offset: 64 Size: 16 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // tex_samp sampler NA NA 0 1 // bbtex_samp sampler NA NA 1 1 // tex_tex texture float4 2d 0 1 // bbtex_tex texture float4 2d 1 1 // CB0 cbuffer NA NA 0 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // COLOR 0 xyzw 0 NONE float xyzw // TEXCOORD 0 xyzw 1 NONE float xy w // TEXCOORD 1 xy 2 NONE float xy // TEXCOORD 2 xyzw 3 NONE float xy w // SV_Position 0 xyzw 4 POS float // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // SV_Target 1 xyzw 1 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[5], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_input_ps linear v0.xyzw dcl_input_ps linear v1.xyw dcl_input_ps linear v2.xy dcl_input_ps linear v3.xyw dcl_output o0.xyzw dcl_output o1.xyzw dcl_temps 4 sample r0.xyzw, v2.xyxx, t0.xyzw, s0 add r0.xy, r0.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) add r0.zw, -r0.zzzw, l(0.000000, 0.000000, 1.010000, 1.010000) div r0.xy, r0.xyxx, r0.zwzz mul r0.xy, r0.xyxx, cb0[2].zwzz max r0.z, v1.w, l(2.500000) div r0.z, l(10.000000), r0.z add r0.z, r0.z, l(-1.000000) mad r0.z, cb0[2].y, r0.z, l(1.000000) mul r1.xy, v1.xyxx, cb0[2].xxxx mad r0.xy, r0.xyxx, r0.zzzz, r1.xyxx div r0.zw, v3.xxxy, v3.wwww mad r0.zw, r0.zzzw, cb0[4].xxxy, cb0[4].zzzw add r0.xy, r0.zwzz, r0.xyxx max r0.xy, r0.xyxx, cb0[3].xyxx min r0.xy, r0.xyxx, cb0[3].zwzz sample r0.xyzw, r0.xyxx, t1.wxyz, s1 mul r1.xyzw, r0.xyzw, v0.wxyz mad r2.xyzw, -r0.xyzw, v0.wxyz, l(1.000000, 1.000000, 1.000000, 1.000000) mad r2.xyz, r2.xxxx, r2.yzwy, r1.yzwy mov r0.y, r1.x mov r3.x, -cb0[0].x mov r3.y, l(-0.004000) add r0.xz, r0.xxyx, r3.xxyx mov o0.w, r0.y lt r0.xy, r0.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) or r0.x, r0.y, r0.x ne r0.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].wwzw not r0.y, r0.y movc o0.xyz, r0.zzzz, r2.xyzx, r1.yzwy and r0.x, r0.y, r0.x discard_nz r0.x lt r0.x, l(0.000000), cb0[1].z mad r1.xy, v1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) mov r1.zw, l(0,0,0,1.000000) and o1.xyzw, r0.xxxx, r1.xyzw ret // Approximately 37 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
I haven't used 3Dmigoto for hunting before, but hopefully the ones attached here are the correct water vertex and pixel shaders.
I've also added a screenshot at 0 convergence.

Let me know if I've messed up something :P

1b5c3940d52cf7a2-vs_replace
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:40:41 2018

cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float4x4 uUVMatrix : packoffset(c14);
}



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


void main(
float3 v0 : POSITION0,
float4 v1 : COLOR0,
float4 v2 : COLOR1,
out float4 o0 : COLOR0,
out float4 o1 : COLOR1,
out float4 o2 : TEXCOORD0,
out float4 o3 : SV_Position0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;

o0.xyzw = uColor[0].xyzw * v1.xyzw;
o1.xyzw = uColor[1].xyzw * v2.xyzw;
r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz;
r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy;
r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw;
r1.xyzw = uUVMatrix._m01_m11_m21_m31 * r0.yyyy;
r1.xyzw = uUVMatrix._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
r1.xyzw = uUVMatrix._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
o2.xyzw = uUVMatrix._m03_m13_m23_m33 * r0.wwww + r1.xyzw;
o3.xyzw = r0.xyzw;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:40:41 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float4x4 uMatrix[3]; // Offset: 0 Size: 192
// float4 uColor[2]; // Offset: 192 Size: 32
// float4x4 uUVMatrix; // Offset: 224 Size: 64
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyz 0 NONE float xyz
// COLOR 0 xyzw 1 NONE float xyzw
// COLOR 1 xyzw 2 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// COLOR 0 xyzw 0 NONE float xyzw
// COLOR 1 xyzw 1 NONE float xyzw
// TEXCOORD 0 xyzw 2 NONE float xyzw
// SV_Position 0 xyzw 3 POS float xyzw
//
vs_4_0
dcl_constantbuffer cb0[18], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xyzw
dcl_input v2.xyzw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output_siv o3.xyzw, position
dcl_temps 2
mul o0.xyzw, v1.xyzw, cb0[12].xyzw
mul o1.xyzw, v2.xyzw, cb0[13].xyzw
mul r0.xyz, v0.yyyy, cb0[1].xyzx
mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx
mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx
add r0.xyz, r0.xyzx, cb0[3].xyzx
mul r1.xyz, r0.yyyy, cb0[5].xyzx
mad r0.xyw, cb0[4].xyxz, r0.xxxx, r1.xyxz
mad r0.xyz, cb0[6].xyzx, r0.zzzz, r0.xywx
add r0.xyz, r0.xyzx, cb0[7].xyzx
mul r1.xyzw, r0.yyyy, cb0[9].xyzw
mad r1.xyzw, cb0[8].xyzw, r0.xxxx, r1.xyzw
mad r0.xyzw, cb0[10].xyzw, r0.zzzz, r1.xyzw
add r0.xyzw, r0.xyzw, cb0[11].xyzw
mul r1.xyzw, r0.yyyy, cb0[15].xyzw
mad r1.xyzw, cb0[14].xyzw, r0.xxxx, r1.xyzw
mad r1.xyzw, cb0[16].xyzw, r0.zzzz, r1.xyzw
mad o2.xyzw, cb0[17].xyzw, r0.wwww, r1.xyzw
mov o3.xyzw, r0.xyzw
ret
// Approximately 20 instruction slots used

08c7259da741a755-vs_replace
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:40:26 2018

cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float4 lightvec : packoffset(c14);
float4 fogparam[2] : packoffset(c15);
float4 fogden[2] : packoffset(c17);
float4 fogcolor[2] : packoffset(c19);
float numFogLight : packoffset(c21);

struct
{
float4 param;
float4 color;
float4 pos;
} foginfo[64] : packoffset(c22);

}



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


void main(
float4 v0 : POSITION0,
float3 v1 : POSITION1,
float4 v2 : NORMAL0,
float4 v3 : NORMAL1,
float4 v4 : COLOR0,
float4 v5 : COLOR1,
float4 v6 : TEXCOORD0,
float2 v7 : TEXCOORD1,
out float4 o0 : COLOR0,
out float4 o1 : COLOR1,
out float4 o2 : TEXCOORD0,
out float4 o3 : TEXCOORD1,
out float4 o4 : TEXCOORD2,
out float4 o5 : TEXCOORD3,
out float4 o6 : TEXCOORD4,
out float4 o7 : TEXCOORD5,
out float4 o8 : TEXCOORD6,
out float4 o9 : SV_Position0)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r1.xyz = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r1.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r1.xyz;
r1.xyz = uMatrix[1]._m03_m13_m23 + r1.xyz;
r2.xyzw = uMatrix[2]._m01_m11_m21_m31 * r1.yyyy;
r2.xyzw = uMatrix[2]._m00_m10_m20_m30 * r1.xxxx + r2.xyzw;
r2.xyzw = uMatrix[2]._m02_m12_m22_m32 * r1.zzzz + r2.xyzw;
o9.xyzw = uMatrix[2]._m03_m13_m23_m33 + r2.xyzw;
r2.xyz = v2.xyz * v0.www;
r3.xyz = uMatrix[0]._m01_m11_m21 * r2.yyy;
r2.xyw = uMatrix[0]._m00_m10_m20 * r2.xxx + r3.xyz;
r2.xyz = uMatrix[0]._m02_m12_m22 * r2.zzz + r2.xyw;
r0.w = dot(r2.xyz, r2.xyz);
r0.w = rsqrt(r0.w);
r2.xyz = r2.xyz * r0.www;
r3.xyz = uMatrix[1]._m01_m11_m21 * r2.yyy;
r2.xyw = uMatrix[1]._m00_m10_m20 * r2.xxx + r3.xyz;
r2.xyz = uMatrix[1]._m02_m12_m22 * r2.zzz + r2.xyw;
r0.w = dot(r2.xyz, r2.xyz);
r0.w = rsqrt(r0.w);
r2.xyz = r2.xyz * r0.www;
o0.xyzw = uColor[0].xyzw * v4.xyzw;
r3.xyz = float3(1,-1,1) * v3.xzy;
r4.xyz = uMatrix[0]._m01_m11_m21 * r3.yyy;
r3.xyw = uMatrix[0]._m00_m10_m20 * r3.xxx + r4.xyz;
r3.xyz = uMatrix[0]._m02_m12_m22 * r3.zzz + r3.xyw;
r4.xyz = uMatrix[1]._m01_m11_m21 * r3.yyy;
r3.xyw = uMatrix[1]._m00_m10_m20 * r3.xxx + r4.xyz;
r3.xyz = uMatrix[1]._m02_m12_m22 * r3.zzz + r3.xyw;
r0.w = dot(r3.xyz, r3.xyz);
r0.w = rsqrt(r0.w);
r3.xyz = r3.xyz * r0.www;
r4.xyz = r3.yzx * r2.zxy;
o4.xyz = r2.yzx * r3.zxy + -r4.xyz;
r4.xyz = float3(1,-1,1) * v1.xzy;
r5.xyz = uMatrix[0]._m01_m11_m21 * r4.yyy;
r4.xyw = uMatrix[0]._m00_m10_m20 * r4.xxx + r5.xyz;
r4.xyz = uMatrix[0]._m02_m12_m22 * r4.zzz + r4.xyw;
r5.xyz = uMatrix[1]._m01_m11_m21 * r4.yyy;
r4.xyw = uMatrix[1]._m00_m10_m20 * r4.xxx + r5.xyz;
r4.xyz = uMatrix[1]._m02_m12_m22 * r4.zzz + r4.xyw;
r0.w = dot(r4.xyz, r4.xyz);
r0.w = rsqrt(r0.w);
r4.xyz = r4.xyz * r0.www;
r5.xyz = r4.yzx * r2.zxy;
r5.xyz = r2.yzx * r4.zxy + -r5.xyz;
r0.w = cmp(0 != fogparam[0].w);
if (r0.w != 0) {
r6.xy = fogden[1].zw + -fogden[0].zw;
r7.x = -fogparam[0].y;
r7.y = -fogparam[1].y;
r6.zw = r7.xy + r1.zz;
r7.x = saturate(fogparam[0].x * r6.z);
r7.y = saturate(fogparam[1].x * r6.w);
r6.zw = log2(r7.xy);
r7.x = fogparam[0].z * r6.z;
r7.y = fogparam[1].z * r6.w;
r6.zw = exp2(r7.xy);
r7.x = fogden[0].x + -fogden[0].y;
r7.y = fogden[1].x + -fogden[1].y;
r8.x = fogden[0].y;
r8.y = fogden[1].y;
r7.xy = r6.zw * r7.xy + r8.xy;
r0.w = cmp(0.00100000005 >= r6.x);
r1.w = -fogden[0].z + r0.z;
r1.w = saturate(r1.w / r6.x);
r3.w = r7.y + -r7.x;
r8.x = r1.w * r3.w + r7.x;
r6.xzw = fogcolor[1].xyz + -fogcolor[0].xyz;
r6.xzw = r1.www * r6.xzw + fogcolor[0].xyz;
r8.y = r1.w * r6.y + fogden[0].w;
r6.xyz = r0.www ? fogcolor[0].xyz : r6.xzw;
r7.z = fogden[0].w;
r7.xy = r0.ww ? r7.xz : r8.xy;
r0.w = 1 + -r7.x;
r1.w = numFogLight;
r7.xzw = r6.xyz;
r3.w = r0.w;
r4.w = 0;
while (true) {
r5.w = cmp((int)r4.w >= (int)r1.w);
if (r5.w != 0) break;
r5.w = (int)r4.w * 3;
r8.xyz = -foginfo[r5.w].pos.xyz + r0.xyz;
r6.w = dot(r8.xyz, r8.xyz);
r6.w = sqrt(r6.w);
r6.w = saturate(r6.w / foginfo[r5.w].param.y);
r6.w = log2(r6.w);
r6.w = foginfo[r5.w].param.z * r6.w;
r6.w = exp2(r6.w);
r8.x = cmp(0.000000 == foginfo[r5.w].param.w);
if (r8.x != 0) {
r6.w = 1 + -r6.w;
r8.x = r3.w * foginfo[r5.w].param.x + -r3.w;
r3.w = r6.w * r8.x + r3.w;
} else {
r8.x = cmp(1.000000 == foginfo[r5.w].param.w);
if (r8.x != 0) {
r6.w = 1 + -r6.w;
r8.x = foginfo[r5.w].param.x * r6.w + r3.w;
r3.w = min(1, r8.x);
} else {
r8.x = foginfo[r5.w].param.x * r6.w + r3.w;
r3.w = min(1, r8.x);
}
}
r6.w = foginfo[r5.w].color.w * r6.w;
r8.xyz = foginfo[r5.w].color.xyz + -r7.xzw;
r7.xzw = r6.www * r8.xyz + r7.xzw;
r4.w = (int)r4.w + 1;
}
o8.xyz = r7.xzw * r3.www;
o8.w = 1 + -r3.w;
r2.w = r7.y;
} else {
o8.xyzw = float4(0,0,0,1);
r2.w = 0;
}
o2.xy = uColor[1].xy + v6.xy;
o2.zw = uColor[1].zw + v7.xy;
o1.xyzw = v5.xyzw;
o3.w = r5.x;
o3.xyz = r3.xyz;
o4.w = r5.y;
o5.w = r5.z;
o5.xyz = r4.xyz;
o7.xyzw = r2.xyzw;
o6.xyz = r1.xyz;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:40:26 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float4x4 uMatrix[3]; // Offset: 0 Size: 192
// float4 uColor[2]; // Offset: 192 Size: 32
// float4 lightvec; // Offset: 224 Size: 16 [unused]
// float4 fogparam[2]; // Offset: 240 Size: 32
// float4 fogden[2]; // Offset: 272 Size: 32
// float4 fogcolor[2]; // Offset: 304 Size: 32
// float numFogLight; // Offset: 336 Size: 4
//
// struct
// {
//
// float4 param; // Offset: 352
// float4 color; // Offset: 368
// float4 pos; // Offset: 384
//
// } foginfo[64]; // Offset: 352 Size: 3072
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// POSITION 1 xyz 1 NONE float xyz
// NORMAL 0 xyzw 2 NONE float xyz
// NORMAL 1 xyzw 3 NONE float xyz
// COLOR 0 xyzw 4 NONE float xyzw
// COLOR 1 xyzw 5 NONE float xyzw
// TEXCOORD 0 xy 6 NONE float xy
// TEXCOORD 1 xy 7 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// COLOR 0 xyzw 0 NONE float xyzw
// COLOR 1 xyzw 1 NONE float xyzw
// TEXCOORD 0 xyzw 2 NONE float xyzw
// TEXCOORD 1 xyzw 3 NONE float xyzw
// TEXCOORD 2 xyzw 4 NONE float xyzw
// TEXCOORD 3 xyzw 5 NONE float xyzw
// TEXCOORD 4 xyz 6 NONE float xyz
// TEXCOORD 5 xyzw 7 NONE float xyzw
// TEXCOORD 6 xyzw 8 NONE float xyzw
// SV_Position 0 xyzw 9 POS float xyzw
//
vs_4_0
dcl_constantbuffer cb0[214], dynamicIndexed
dcl_input v0.xyzw
dcl_input v1.xyz
dcl_input v2.xyz
dcl_input v3.xyz
dcl_input v4.xyzw
dcl_input v5.xyzw
dcl_input v6.xy
dcl_input v7.xy
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.xyz
dcl_output o7.xyzw
dcl_output o8.xyzw
dcl_output_siv o9.xyzw, position
dcl_temps 9
mul r0.xyz, v0.yyyy, cb0[1].xyzx
mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx
mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx
add r0.xyz, r0.xyzx, cb0[3].xyzx
mul r1.xyz, r0.yyyy, cb0[5].xyzx
mad r1.xyz, cb0[4].xyzx, r0.xxxx, r1.xyzx
mad r1.xyz, cb0[6].xyzx, r0.zzzz, r1.xyzx
add r1.xyz, r1.xyzx, cb0[7].xyzx
mul r2.xyzw, r1.yyyy, cb0[9].xyzw
mad r2.xyzw, cb0[8].xyzw, r1.xxxx, r2.xyzw
mad r2.xyzw, cb0[10].xyzw, r1.zzzz, r2.xyzw
add o9.xyzw, r2.xyzw, cb0[11].xyzw
mul r2.xyz, v0.wwww, v2.xyzx
mul r3.xyz, r2.yyyy, cb0[1].xyzx
mad r2.xyw, cb0[0].xyxz, r2.xxxx, r3.xyxz
mad r2.xyz, cb0[2].xyzx, r2.zzzz, r2.xywx
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
mul r3.xyz, r2.yyyy, cb0[5].xyzx
mad r2.xyw, cb0[4].xyxz, r2.xxxx, r3.xyxz
mad r2.xyz, cb0[6].xyzx, r2.zzzz, r2.xywx
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
mul o0.xyzw, v4.xyzw, cb0[12].xyzw
mul r3.xyz, v3.xzyx, l(1.000000, -1.000000, 1.000000, 0.000000)
mul r4.xyz, r3.yyyy, cb0[1].xyzx
mad r3.xyw, cb0[0].xyxz, r3.xxxx, r4.xyxz
mad r3.xyz, cb0[2].xyzx, r3.zzzz, r3.xywx
mul r4.xyz, r3.yyyy, cb0[5].xyzx
mad r3.xyw, cb0[4].xyxz, r3.xxxx, r4.xyxz
mad r3.xyz, cb0[6].xyzx, r3.zzzz, r3.xywx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul r3.xyz, r0.wwww, r3.xyzx
mul r4.xyz, r2.zxyz, r3.yzxy
mad o4.xyz, r2.yzxy, r3.zxyz, -r4.xyzx
mul r4.xyz, v1.xzyx, l(1.000000, -1.000000, 1.000000, 0.000000)
mul r5.xyz, r4.yyyy, cb0[1].xyzx
mad r4.xyw, cb0[0].xyxz, r4.xxxx, r5.xyxz
mad r4.xyz, cb0[2].xyzx, r4.zzzz, r4.xywx
mul r5.xyz, r4.yyyy, cb0[5].xyzx
mad r4.xyw, cb0[4].xyxz, r4.xxxx, r5.xyxz
mad r4.xyz, cb0[6].xyzx, r4.zzzz, r4.xywx
dp3 r0.w, r4.xyzx, r4.xyzx
rsq r0.w, r0.w
mul r4.xyz, r0.wwww, r4.xyzx
mul r5.xyz, r2.zxyz, r4.yzxy
mad r5.xyz, r2.yzxy, r4.zxyz, -r5.xyzx
ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[15].w
if_nz r0.w
add r6.xy, -cb0[17].zwzz, cb0[18].zwzz
mov r7.x, -cb0[15].y
mov r7.y, -cb0[16].y
add r6.zw, r1.zzzz, r7.xxxy
mul_sat r7.x, r6.z, cb0[15].x
mul_sat r7.y, r6.w, cb0[16].x
log r6.zw, r7.xxxy
mul r7.x, r6.z, cb0[15].z
mul r7.y, r6.w, cb0[16].z
exp r6.zw, r7.xxxy
add r7.x, -cb0[17].y, cb0[17].x
add r7.y, -cb0[18].y, cb0[18].x
mov r8.x, cb0[17].y
mov r8.y, cb0[18].y
mad r7.xy, r6.zwzz, r7.xyxx, r8.xyxx
ge r0.w, l(0.001000), r6.x
add r1.w, r0.z, -cb0[17].z
div_sat r1.w, r1.w, r6.x
add r3.w, -r7.x, r7.y
mad r8.x, r1.w, r3.w, r7.x
add r6.xzw, -cb0[19].xxyz, cb0[20].xxyz
mad r6.xzw, r1.wwww, r6.xxzw, cb0[19].xxyz
mad r8.y, r1.w, r6.y, cb0[17].w
movc r6.xyz, r0.wwww, cb0[19].xyzx, r6.xzwx
mov r7.z, cb0[17].w
movc r7.xy, r0.wwww, r7.xzxx, r8.xyxx
add r0.w, -r7.x, l(1.000000)
ftoi r1.w, cb0[21].x
mov r7.xzw, r6.xxyz
mov r3.w, r0.w
mov r4.w, l(0)
loop
ige r5.w, r4.w, r1.w
breakc_nz r5.w
imul null, r5.w, r4.w, l(3)
add r8.xyz, r0.xyzx, -cb0[r5.w + 24].xyzx
dp3 r6.w, r8.xyzx, r8.xyzx
sqrt r6.w, r6.w
div_sat r6.w, r6.w, cb0[r5.w + 22].y
log r6.w, r6.w
mul r6.w, r6.w, cb0[r5.w + 22].z
exp r6.w, r6.w
eq r8.x, l(0.000000), cb0[r5.w + 22].w
if_nz r8.x
add r6.w, -r6.w, l(1.000000)
mad r8.x, r3.w, cb0[r5.w + 22].x, -r3.w
mad r3.w, r6.w, r8.x, r3.w
else
eq r8.x, l(1.000000), cb0[r5.w + 22].w
if_nz r8.x
add r6.w, -r6.w, l(1.000000)
mad r8.x, cb0[r5.w + 22].x, r6.w, r3.w
min r3.w, r8.x, l(1.000000)
else
mad r8.x, cb0[r5.w + 22].x, r6.w, r3.w
min r3.w, r8.x, l(1.000000)
endif
endif
mul r6.w, r6.w, cb0[r5.w + 23].w
add r8.xyz, -r7.xzwx, cb0[r5.w + 23].xyzx
mad r7.xzw, r6.wwww, r8.xxyz, r7.xxzw
iadd r4.w, r4.w, l(1)
endloop
mul o8.xyz, r3.wwww, r7.xzwx
add o8.w, -r3.w, l(1.000000)
mov r2.w, r7.y
else
mov o8.xyzw, l(0,0,0,1.000000)
mov r2.w, l(0)
endif
add o2.xy, v6.xyxx, cb0[13].xyxx
add o2.zw, v7.xxxy, cb0[13].zzzw
mov o1.xyzw, v5.xyzw
mov o3.w, r5.x
mov o3.xyz, r3.xyzx
mov o4.w, r5.y
mov o5.w, r5.z
mov o5.xyz, r4.xyzx
mov o7.xyzw, r2.xyzw
mov o6.xyz, r1.xyzx
ret
// Approximately 133 instruction slots used

b620a75d2a91df52-vs_replace
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:39:57 2018

cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float4 lightvec : packoffset(c14);
float4 fogparam[2] : packoffset(c15);
float4 fogden[2] : packoffset(c17);
float4 fogcolor[2] : packoffset(c19);
float numFogLight : packoffset(c21);

struct
{
float4 param;
float4 color;
float4 pos;
} foginfo[64] : packoffset(c22);

}



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


void main(
float4 v0 : POSITION0,
float4 v1 : NORMAL0,
float4 v2 : COLOR0,
float4 v3 : COLOR1,
float2 v4 : TEXCOORD0,
float4 v5 : BLENDWEIGHT0,
uint4 v6 : BLENDINDICES0,
out float2 o0 : TEXCOORD0,
out float p0 : TEXCOORD9,
out float4 o1 : TEXCOORD1,
out float3 o2 : TEXCOORD2,
out float4 o3 : COLOR0,
out float4 o4 : COLOR1,
out float4 o5 : TEXCOORD8,
out float4 o6 : SV_Position0)
{
float4 r0,r1,r2,r3,r4,r5;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r1.xyz = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r1.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r1.xyz;
r1.xyz = uMatrix[1]._m03_m13_m23 + r1.xyz;
r2.xyzw = uMatrix[2]._m01_m11_m21_m31 * r1.yyyy;
r2.xyzw = uMatrix[2]._m00_m10_m20_m30 * r1.xxxx + r2.xyzw;
r2.xyzw = uMatrix[2]._m02_m12_m22_m32 * r1.zzzz + r2.xyzw;
o6.xyzw = uMatrix[2]._m03_m13_m23_m33 + r2.xyzw;
r2.xyz = v1.xyz * v0.www;
r3.xyz = uMatrix[0]._m01_m11_m21 * r2.yyy;
r2.xyw = uMatrix[0]._m00_m10_m20 * r2.xxx + r3.xyz;
r2.xyz = uMatrix[0]._m02_m12_m22 * r2.zzz + r2.xyw;
r0.w = dot(r2.xyz, r2.xyz);
r0.w = rsqrt(r0.w);
r2.xyz = r2.xyz * r0.www;
r3.xyz = uMatrix[1]._m01_m11_m21 * r2.yyy;
r3.xyz = uMatrix[1]._m00_m10_m20 * r2.xxx + r3.xyz;
r3.xyz = uMatrix[1]._m02_m12_m22 * r2.zzz + r3.xyz;
r0.w = dot(r3.xyz, r3.xyz);
r0.w = rsqrt(r0.w);
o2.xyz = r3.xyz * r0.www;
o3.xyzw = uColor[0].xyzw * v2.xyzw;
r0.w = cmp(0 != fogparam[0].w);
if (r0.w != 0) {
r3.xy = fogden[1].zw + -fogden[0].zw;
r4.x = -fogparam[0].y;
r4.y = -fogparam[1].y;
r3.zw = r4.xy + r1.zz;
r4.x = saturate(fogparam[0].x * r3.z);
r4.y = saturate(fogparam[1].x * r3.w);
r3.zw = log2(r4.xy);
r4.x = fogparam[0].z * r3.z;
r4.y = fogparam[1].z * r3.w;
r3.zw = exp2(r4.xy);
r4.x = fogden[0].x + -fogden[0].y;
r4.y = fogden[1].x + -fogden[1].y;
r5.x = fogden[0].y;
r5.y = fogden[1].y;
r4.xy = r3.zw * r4.xy + r5.xy;
r0.w = cmp(0.00100000005 >= r3.x);
r1.w = -fogden[0].z + r0.z;
r1.w = saturate(r1.w / r3.x);
r2.w = r4.y + -r4.x;
r5.x = r1.w * r2.w + r4.x;
r3.xzw = fogcolor[1].xyz + -fogcolor[0].xyz;
r3.xzw = r1.www * r3.xzw + fogcolor[0].xyz;
r5.y = r1.w * r3.y + fogden[0].w;
r3.xyz = r0.www ? fogcolor[0].xyz : r3.xzw;
r4.z = fogden[0].w;
r4.xy = r0.ww ? r4.xz : r5.xy;
r0.w = 1 + -r4.x;
r1.w = numFogLight;
r4.xzw = r3.xyz;
r2.w = r0.w;
r3.w = 0;
while (true) {
r5.x = cmp((int)r3.w >= (int)r1.w);
if (r5.x != 0) break;
r5.x = (int)r3.w * 3;
r5.yzw = -foginfo[r5.x].pos.xyz + r0.xyz;
r5.y = dot(r5.yzw, r5.yzw);
r5.y = sqrt(r5.y);
r5.y = saturate(r5.y / foginfo[r5.x].param.y);
r5.y = log2(r5.y);
r5.y = foginfo[r5.x].param.z * r5.y;
r5.y = exp2(r5.y);
r5.z = cmp(0.000000 == foginfo[r5.x].param.w);
if (r5.z != 0) {
r5.y = 1 + -r5.y;
r5.z = r2.w * foginfo[r5.x].param.x + -r2.w;
r2.w = r5.y * r5.z + r2.w;
} else {
r5.z = cmp(1.000000 == foginfo[r5.x].param.w);
if (r5.z != 0) {
r5.y = 1 + -r5.y;
r5.z = foginfo[r5.x].param.x * r5.y + r2.w;
r2.w = min(1, r5.z);
} else {
r5.z = foginfo[r5.x].param.x * r5.y + r2.w;
r2.w = min(1, r5.z);
}
}
r5.y = foginfo[r5.x].color.w * r5.y;
r5.xzw = foginfo[r5.x].color.xyz + -r4.xzw;
r4.xzw = r5.yyy * r5.xzw + r4.xzw;
r3.w = (int)r3.w + 1;
}
o5.xyz = r4.xzw * r2.www;
o5.w = 1 + -r2.w;
p0.x = r4.y;
} else {
o5.xyzw = float4(0,0,0,1);
p0.x = 0;
}
r0.x = dot(r2.xyz, lightvec.xyz);
r0.x = 1 + -r0.x;
r0.x = min(1, r0.x);
o4.w = r0.x * r0.x;
o0.xy = uColor[1].xy + v4.xy;
o4.xyz = v3.xyz;
o1.xyz = r1.xyz;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:39:57 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float4x4 uMatrix[3]; // Offset: 0 Size: 192
// float4 uColor[2]; // Offset: 192 Size: 32
// float4 lightvec; // Offset: 224 Size: 16
// float4 fogparam[2]; // Offset: 240 Size: 32
// float4 fogden[2]; // Offset: 272 Size: 32
// float4 fogcolor[2]; // Offset: 304 Size: 32
// float numFogLight; // Offset: 336 Size: 4
//
// struct
// {
//
// float4 param; // Offset: 352
// float4 color; // Offset: 368
// float4 pos; // Offset: 384
//
// } foginfo[64]; // Offset: 352 Size: 3072
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// NORMAL 0 xyzw 1 NONE float xyz
// COLOR 0 xyzw 2 NONE float xyzw
// COLOR 1 xyzw 3 NONE float xyz
// TEXCOORD 0 xy 4 NONE float xy
// BLENDWEIGHT 0 xyzw 5 NONE float
// BLENDINDICES 0 xyzw 6 NONE uint
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xy 0 NONE float xy
// TEXCOORD 9 z 0 NONE float z
// TEXCOORD 1 xyz 1 NONE float xyz
// TEXCOORD 2 xyz 2 NONE float xyz
// COLOR 0 xyzw 3 NONE float xyzw
// COLOR 1 xyzw 4 NONE float xyzw
// TEXCOORD 8 xyzw 5 NONE float xyzw
// SV_Position 0 xyzw 6 POS float xyzw
//
vs_4_0
dcl_constantbuffer cb0[214], dynamicIndexed
dcl_input v0.xyzw
dcl_input v1.xyz
dcl_input v2.xyzw
dcl_input v3.xyz
dcl_input v4.xy
dcl_output o0.xy
dcl_output o0.z
dcl_output o1.xyz
dcl_output o2.xyz
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output_siv o6.xyzw, position
dcl_temps 6
mul r0.xyz, v0.yyyy, cb0[1].xyzx
mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx
mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx
add r0.xyz, r0.xyzx, cb0[3].xyzx
mul r1.xyz, r0.yyyy, cb0[5].xyzx
mad r1.xyz, cb0[4].xyzx, r0.xxxx, r1.xyzx
mad r1.xyz, cb0[6].xyzx, r0.zzzz, r1.xyzx
add r1.xyz, r1.xyzx, cb0[7].xyzx
mul r2.xyzw, r1.yyyy, cb0[9].xyzw
mad r2.xyzw, cb0[8].xyzw, r1.xxxx, r2.xyzw
mad r2.xyzw, cb0[10].xyzw, r1.zzzz, r2.xyzw
add o6.xyzw, r2.xyzw, cb0[11].xyzw
mul r2.xyz, v0.wwww, v1.xyzx
mul r3.xyz, r2.yyyy, cb0[1].xyzx
mad r2.xyw, cb0[0].xyxz, r2.xxxx, r3.xyxz
mad r2.xyz, cb0[2].xyzx, r2.zzzz, r2.xywx
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
mul r3.xyz, r2.yyyy, cb0[5].xyzx
mad r3.xyz, cb0[4].xyzx, r2.xxxx, r3.xyzx
mad r3.xyz, cb0[6].xyzx, r2.zzzz, r3.xyzx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul o2.xyz, r0.wwww, r3.xyzx
mul o3.xyzw, v2.xyzw, cb0[12].xyzw
ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[15].w
if_nz r0.w
add r3.xy, -cb0[17].zwzz, cb0[18].zwzz
mov r4.x, -cb0[15].y
mov r4.y, -cb0[16].y
add r3.zw, r1.zzzz, r4.xxxy
mul_sat r4.x, r3.z, cb0[15].x
mul_sat r4.y, r3.w, cb0[16].x
log r3.zw, r4.xxxy
mul r4.x, r3.z, cb0[15].z
mul r4.y, r3.w, cb0[16].z
exp r3.zw, r4.xxxy
add r4.x, -cb0[17].y, cb0[17].x
add r4.y, -cb0[18].y, cb0[18].x
mov r5.x, cb0[17].y
mov r5.y, cb0[18].y
mad r4.xy, r3.zwzz, r4.xyxx, r5.xyxx
ge r0.w, l(0.001000), r3.x
add r1.w, r0.z, -cb0[17].z
div_sat r1.w, r1.w, r3.x
add r2.w, -r4.x, r4.y
mad r5.x, r1.w, r2.w, r4.x
add r3.xzw, -cb0[19].xxyz, cb0[20].xxyz
mad r3.xzw, r1.wwww, r3.xxzw, cb0[19].xxyz
mad r5.y, r1.w, r3.y, cb0[17].w
movc r3.xyz, r0.wwww, cb0[19].xyzx, r3.xzwx
mov r4.z, cb0[17].w
movc r4.xy, r0.wwww, r4.xzxx, r5.xyxx
add r0.w, -r4.x, l(1.000000)
ftoi r1.w, cb0[21].x
mov r4.xzw, r3.xxyz
mov r2.w, r0.w
mov r3.w, l(0)
loop
ige r5.x, r3.w, r1.w
breakc_nz r5.x
imul null, r5.x, r3.w, l(3)
add r5.yzw, r0.xxyz, -cb0[r5.x + 24].xxyz
dp3 r5.y, r5.yzwy, r5.yzwy
sqrt r5.y, r5.y
div_sat r5.y, r5.y, cb0[r5.x + 22].y
log r5.y, r5.y
mul r5.y, r5.y, cb0[r5.x + 22].z
exp r5.y, r5.y
eq r5.z, l(0.000000), cb0[r5.x + 22].w
if_nz r5.z
add r5.y, -r5.y, l(1.000000)
mad r5.z, r2.w, cb0[r5.x + 22].x, -r2.w
mad r2.w, r5.y, r5.z, r2.w
else
eq r5.z, l(1.000000), cb0[r5.x + 22].w
if_nz r5.z
add r5.y, -r5.y, l(1.000000)
mad r5.z, cb0[r5.x + 22].x, r5.y, r2.w
min r2.w, r5.z, l(1.000000)
else
mad r5.z, cb0[r5.x + 22].x, r5.y, r2.w
min r2.w, r5.z, l(1.000000)
endif
endif
mul r5.y, r5.y, cb0[r5.x + 23].w
add r5.xzw, -r4.xxzw, cb0[r5.x + 23].xxyz
mad r4.xzw, r5.yyyy, r5.xxzw, r4.xxzw
iadd r3.w, r3.w, l(1)
endloop
mul o5.xyz, r2.wwww, r4.xzwx
add o5.w, -r2.w, l(1.000000)
mov o0.z, r4.y
else
mov o5.xyzw, l(0,0,0,1.000000)
mov o0.z, l(0)
endif
dp3 r0.x, r2.xyzx, cb0[14].xyzx
add r0.x, -r0.x, l(1.000000)
min r0.x, r0.x, l(1.000000)
mul o4.w, r0.x, r0.x
add o0.xy, v4.xyxx, cb0[13].xyxx
mov o4.xyz, v3.xyzx
mov o1.xyz, r1.xyzx
ret
// Approximately 106 instruction slots used

d720ae2045e3fed3-vs_replace
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:40:10 2018

cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float2 fparam : packoffset(c14);
}



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


void main(
float4 v0 : POSITION0,
float4 v1 : NORMAL0,
float4 v2 : COLOR0,
float2 v3 : TEXCOORD0,
out float4 o0 : COLOR0,
out float4 o1 : TEXCOORD0,
out float4 o2 : TEXCOORD1,
out float4 o3 : TEXCOORD2,
out float4 o4 : SV_Position0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;

o0.xyzw = uColor[0].xyzw * v2.xyzw;
r0.xyz = v1.xyz * v0.www;
r1.xyz = uMatrix[0]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[0]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.w = dot(r0.xyz, r0.xyz);
r0.w = rsqrt(r0.w);
r0.xyz = r0.xyz * r0.www;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.w = dot(r0.xyz, r0.xyz);
r0.w = rsqrt(r0.w);
r0.xyz = r0.xyz * r0.www;
o1.xyz = float3(1,-1,1) * r0.xyz;
r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz;
o1.w = r0.z;
o2.xy = fparam.xy + v3.xy;
r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy;
r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw;
o3.xyzw = float4(1,-1,1,1) * r0.xyzw;
o4.xyzw = r0.xyzw;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:40:10 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float4x4 uMatrix[3]; // Offset: 0 Size: 192
// float4 uColor[2]; // Offset: 192 Size: 32
// float2 fparam; // Offset: 224 Size: 8
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// NORMAL 0 xyzw 1 NONE float xyz
// COLOR 0 xyzw 2 NONE float xyzw
// TEXCOORD 0 xy 3 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// COLOR 0 xyzw 0 NONE float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xy 2 NONE float xy
// TEXCOORD 2 xyzw 3 NONE float xyzw
// SV_Position 0 xyzw 4 POS float xyzw
//
vs_4_0
dcl_constantbuffer cb0[15], immediateIndexed
dcl_input v0.xyzw
dcl_input v1.xyz
dcl_input v2.xyzw
dcl_input v3.xy
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xy
dcl_output o3.xyzw
dcl_output_siv o4.xyzw, position
dcl_temps 2
mul o0.xyzw, v2.xyzw, cb0[12].xyzw
mul r0.xyz, v0.wwww, v1.xyzx
mul r1.xyz, r0.yyyy, cb0[1].xyzx
mad r0.xyw, cb0[0].xyxz, r0.xxxx, r1.xyxz
mad r0.xyz, cb0[2].xyzx, r0.zzzz, r0.xywx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
mul r1.xyz, r0.yyyy, cb0[5].xyzx
mad r0.xyw, cb0[4].xyxz, r0.xxxx, r1.xyxz
mad r0.xyz, cb0[6].xyzx, r0.zzzz, r0.xywx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
mul o1.xyz, r0.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000)
mul r0.xyz, v0.yyyy, cb0[1].xyzx
mad r0.xyz, cb0[0].xyzx, v0.xxxx, r0.xyzx
mad r0.xyz, cb0[2].xyzx, v0.zzzz, r0.xyzx
add r0.xyz, r0.xyzx, cb0[3].xyzx
mul r1.xyz, r0.yyyy, cb0[5].xyzx
mad r0.xyw, cb0[4].xyxz, r0.xxxx, r1.xyxz
mad r0.xyz, cb0[6].xyzx, r0.zzzz, r0.xywx
add r0.xyz, r0.xyzx, cb0[7].xyzx
mov o1.w, r0.z
add o2.xy, v3.xyxx, cb0[14].xyxx
mul r1.xyzw, r0.yyyy, cb0[9].xyzw
mad r1.xyzw, cb0[8].xyzw, r0.xxxx, r1.xyzw
mad r0.xyzw, cb0[10].xyzw, r0.zzzz, r1.xyzw
add r0.xyzw, r0.xyzw, cb0[11].xyzw
mul o3.xyzw, r0.xyzw, l(1.000000, -1.000000, 1.000000, 1.000000)
mov o4.xyzw, r0.xyzw
ret
// Approximately 32 instruction slots used

2ba486fe774889e9-ps_replace
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:35:24 2018

cbuffer CB0 : register(b0)
{
float altest : packoffset(c0);
float useshadow : packoffset(c0.y);
float mulblend : packoffset(c0.z);
float noalpha : packoffset(c0.w);
float znear : packoffset(c1);
float zfar : packoffset(c1.y);
float zwrite : packoffset(c1.z);
}

SamplerState tex_samp_s : register(s0);
Texture2D<float4> tex_tex : register(t0);


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


void main(
float4 v0 : COLOR0,
float4 v1 : COLOR1,
float4 v2 : TEXCOORD0,
float4 v3 : SV_Position0,
out float4 o0 : SV_Target0,
out float4 o1 : SV_Target1)
{
float4 r0,r1,r2;
uint4 bitmask, uiDest;
float4 fDest;

r0.x = -altest;
r0.y = -0.00400000019;
r0.zw = v2.xy / v2.ww;
r1.xyzw = tex_tex.Sample(tex_samp_s, r0.zw).xyzw;
r2.x = r1.w;
r2.y = v0.w * r1.w;
r0.xy = r2.xy + r0.xy;
o0.w = r2.y;
r0.xy = cmp(r0.xy < float2(0,0));
r0.x = (int)r0.y | (int)r0.x;
r0.yz = cmp(float2(0,0) != noalpha);
r0.y = ~(int)r0.y;
r0.x = r0.y ? r0.x : 0;
if (r0.x != 0) discard;
r0.x = -r1.w * v0.w + 1;
r1.xyz = r1.xyz * v0.xyz + v1.xyz;
r1.xyz = min(float3(1,1,1), r1.xyz);
r2.xyz = float3(1,1,1) + -r1.xyz;
r0.xyw = r0.xxx * r2.xyz + r1.xyz;
o0.xyz = r0.zzz ? r0.xyw : r1.xyz;
o1.xyzw = float4(0,0,0,0);
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:35:24 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float altest; // Offset: 0 Size: 4
// float useshadow; // Offset: 4 Size: 4 [unused]
// float mulblend; // Offset: 8 Size: 4
// float noalpha; // Offset: 12 Size: 4
// float znear; // Offset: 16 Size: 4 [unused]
// float zfar; // Offset: 20 Size: 4 [unused]
// float zwrite; // Offset: 24 Size: 4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// tex_samp sampler NA NA 0 1
// tex_tex texture float4 2d 0 1
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// COLOR 0 xyzw 0 NONE float xyzw
// COLOR 1 xyzw 1 NONE float xyz
// TEXCOORD 0 xyzw 2 NONE float xy w
// SV_Position 0 xyzw 3 POS float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
// SV_Target 1 xyzw 1 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[1], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_input_ps linear v0.xyzw
dcl_input_ps linear v1.xyz
dcl_input_ps linear v2.xyw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 3
mov r0.x, -cb0[0].x
mov r0.y, l(-0.004000)
div r0.zw, v2.xxxy, v2.wwww
sample r1.xyzw, r0.zwzz, t0.xyzw, s0
mov r2.x, r1.w
mul r2.y, r1.w, v0.w
add r0.xy, r0.xyxx, r2.xyxx
mov o0.w, r2.y
lt r0.xy, r0.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.x, r0.y, r0.x
ne r0.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].wwzw
not r0.y, r0.y
and r0.x, r0.y, r0.x
discard_nz r0.x
mad r0.x, -r1.w, v0.w, l(1.000000)
mad r1.xyz, r1.xyzx, v0.xyzx, v1.xyzx
min r1.xyz, r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
add r2.xyz, -r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mad r0.xyw, r0.xxxx, r2.xyxz, r1.xyxz
movc o0.xyz, r0.zzzz, r0.xywx, r1.xyzx
mov o1.xyzw, l(0,0,0,0)
ret
// Approximately 22 instruction slots used

3b41d5e5af7fd6a0-ps_replace
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:35:16 2018

cbuffer CB0 : register(b0)
{
float altest : packoffset(c0);
float useshadow : packoffset(c0.y);
float mulblend : packoffset(c0.z);
float noalpha : packoffset(c0.w);
float znear : packoffset(c1);
float zfar : packoffset(c1.y);
float zwrite : packoffset(c1.z);
float4 shadowcolor : packoffset(c2);
float4 cascadeBound : packoffset(c3);
float4 lightColor : packoffset(c4);
float4 param : packoffset(c5);
float2 depthuv : packoffset(c6);
float numLight : packoffset(c1.w);

struct
{
float4 pos;
float4 color;
} lightinfo[64] : packoffset(c7);

}

SamplerState tex_samp_s : register(s0);
SamplerState linearztex_samp_s : register(s1);
Texture2D<float4> tex_tex : register(t0);
Texture2D<float4> linearztex_tex : register(t1);


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


void main(
float2 v0 : TEXCOORD0,
float w0 : TEXCOORD9,
float4 v1 : TEXCOORD1,
float3 v2 : TEXCOORD2,
float4 v3 : COLOR0,
float4 v4 : COLOR1,
float4 v5 : TEXCOORD8,
float4 v6 : SV_Position0,
out float4 o0 : SV_Target0,
out float4 o1 : SV_Target1)
{
const float4 icb[] = { { 1.000000, 0, 0, 0},
{ 0, 1.000000, 0, 0},
{ 0, 0, 1.000000, 0},
{ 0, 0, 0, 1.000000} };
float4 r0,r1,r2,r3,r4,r5,r6,r7;
uint4 bitmask, uiDest;
float4 fDest;

r0.x = dot(v1.xyz, v1.xyz);
r0.x = rsqrt(r0.x);
r0.yzw = v1.xyz * r0.xxx;
r1.xyzw = tex_tex.Sample(tex_samp_s, v0.xy).xyzw;
r2.xyzw = v3.xyzw * r1.xyzw;
r3.x = cmp(0 != noalpha);
r3.x = ~(int)r3.x;
r4.x = -altest;
r4.y = -0.00400000019;
r5.x = r1.w;
r5.y = r2.w;
r3.yz = r5.xy + r4.xy;
r3.yz = cmp(r3.yz < float2(0,0));
r1.w = (int)r3.z | (int)r3.y;
r1.w = r3.x ? r1.w : 0;
if (r1.w != 0) discard;
r1.w = cmp(param.x < 10);
r0.y = dot(-r0.yzw, v2.xyz);
r0.y = saturate(1 + -r0.y);
r0.y = log2(r0.y);
r0.y = param.x * r0.y;
r0.y = exp2(r0.y);
r0.y = 1 + -r0.y;
r0.y = r2.w * r0.y;
r0.z = cmp(r0.y < 0.00100000005);
r0.z = r0.z ? r1.w : 0;
if (r0.z != 0) discard;
r3.w = r1.w ? r0.y : r2.w;
r0.y = cmp(0 < param.z);
if (r0.y != 0) {
r0.y = -param.y + v6.w;
r0.y = r0.y / param.z;
r0.y = min(1, r0.y);
r0.z = cmp(0 != zwrite);
if (r0.z != 0) {
r0.zw = float2(0.25,0.25) * v6.yx;
r4.xy = cmp(r0.zw >= -r0.zw);
r0.zw = frac(abs(r0.zw));
r0.zw = r4.xy ? r0.zw : -r0.zw;
r0.zw = float2(4,4) * r0.zw;
r0.zw = (uint2)r0.zw;
r4.x = dot(float4(0.061999999,0.559000015,0.247999996,0.745000005), icb[r0.w+0].xyzw);
r4.y = dot(float4(0.806999981,0.31099999,0.994000018,0.497000009), icb[r0.w+0].xyzw);
r4.z = dot(float4(0.186000004,0.683000028,0.123999998,0.620999992), icb[r0.w+0].xyzw);
r4.w = dot(float4(0.931999981,0.435000002,0.870000005,0.372999996), icb[r0.w+0].xyzw);
r4.x = dot(r4.xyzw, icb[r0.z+0].xyzw);
r4.y = 0.00400000019;
r0.zw = -r4.xy + r0.yy;
r0.zw = cmp(r0.zw < float2(0,0));
r0.z = (int)r0.w | (int)r0.z;
if (r0.z != 0) discard;
} else {
r3.w = r3.w * r0.y;
r0.y = cmp(r3.w < 0.00400000019);
if (r0.y != 0) discard;
}
}
r0.y = cmp(0 < param.w);
if (r0.y != 0) {
r0.yz = v6.xy / depthuv.xy;
r4.xyzw = linearztex_tex.Sample(linearztex_samp_s, r0.yz).xyzw;
r0.y = dot(r4.xy, float2(65536,256));
r0.y = r0.y + r4.z;
r0.y = saturate(1.52587891e-005 * r0.y);
r0.y = 1 + -r0.y;
r0.z = zfar + -znear;
r0.y = r0.y * r0.z + znear;
r0.y = v6.w + -r0.y;
r0.z = cmp(r0.y >= param.w);
if (r0.z != 0) discard;
r0.z = cmp(0 < r0.y);
r0.y = r0.y / param.w;
r0.y = 1 + -r0.y;
r0.y = r3.w * r0.y;
r3.w = r0.z ? r0.y : r3.w;
}
r0.yzw = lightColor.xyz * r2.xyz;
r1.w = numLight;
r4.xyz = float3(0,0,0);
r5.xyz = float3(0,0,0);
r2.w = 0;
while (true) {
r4.w = cmp((int)r2.w >= (int)r1.w);
if (r4.w != 0) break;
r4.w = (uint)r2.w << 1;
r6.xyz = lightinfo[r4.w].pos.xyz + -v1.xyz;
r5.w = dot(r6.xyz, r6.xyz);
r6.w = sqrt(r5.w);
r5.w = cmp(r6.w >= lightinfo[r4.w].pos.w);
if (r5.w != 0) {
r5.w = (int)r2.w + 1;
r2.w = r5.w;
continue;
}
r7.x = r6.w;
r7.w = lightinfo[r4.w].pos.w;
r6.xyzw = r6.xyzw / r7.xxxw;
r5.w = 1 + -r6.w;
r5.w = log2(r5.w);
r5.w = lightinfo[r4.w].color.w * r5.w;
r5.w = exp2(r5.w);
r7.xyz = -v1.xyz * r0.xxx + r6.xyz;
r6.w = dot(r7.xyz, r7.xyz);
r6.w = rsqrt(r6.w);
r7.xyz = r7.xyz * r6.www;
r6.x = dot(r6.xyz, v2.xyz);
r6.y = dot(r7.xyz, v2.xyz);
r6.z = cmp(r6.x >= 0);
r7.x = max(0, r6.x);
r6.x = cmp(r6.y >= 0);
r6.x = r6.z ? r6.x : 0;
r6.y = r6.y * r6.y;
r7.y = r6.x ? r6.y : 0;
r6.xy = r7.xy * r5.ww;
r4.xyz = lightinfo[r4.w].color.xyz * r6.xxx + r4.xyz;
r5.xyz = lightinfo[r4.w].color.xyz * r6.yyy + r5.xyz;
r2.w = (int)r2.w + 1;
}
r6.xy = float2(0.224250004,0.440250009) * r4.xy;
r0.x = r6.x + r6.y;
r0.x = r4.z * 0.0855000019 + r0.x;
r0.x = saturate(1 + -r0.x);
r0.x = v4.w * r0.x;
r1.xyz = r4.xyz * r1.xyz;
r2.xyz = r2.xyz * lightColor.xyz + r1.xyz;
r0.yzw = -r0.yzw * r1.xyz + r2.xyz;
r1.xyz = r5.xyz * float3(0.100000001,0.100000001,0.100000001) + v4.xyz;
r2.xyz = shadowcolor.xyz * r0.yzw + -r0.yzw;
r0.xyz = r0.xxx * r2.xyz + r0.yzw;
r0.xyz = r0.xyz + r1.xyz;
r0.xyz = min(float3(1,1,1), r0.xyz);
r0.w = dot(r0.xyz, float3(0.298999995,0.587000012,0.114));
r1.x = dot(v5.xyz, float3(0.298999995,0.587000012,0.114));
r0.w = -r1.x * 0.5 + r0.w;
r0.w = max(0, r0.w);
r1.x = 1 + -v5.w;
r1.x = w0.x * r1.x;
r0.w = r1.x * r0.w;
r1.xyz = r0.xyz * v5.www + v5.xyz;
r2.xyz = r0.xyz * r0.www;
r0.xyz = r0.xyz * r0.www + r1.xyz;
r0.xyz = -r1.xyz * r2.xyz + r0.xyz;
r0.w = cmp(0 != mulblend);
r1.x = -r3.w * v5.w + 1;
r1.yzw = float3(1,1,1) + -r0.xyz;
r1.xyz = r1.xxx * r1.yzw + r0.xyz;
r3.xyz = r0.www ? r1.xyz : r0.xyz;
r0.x = cmp(0 < zwrite);
r1.xy = v2.xy * float2(0.5,0.5) + float2(0.5,0.5);
r1.z = v5.w;
r1.w = 1;
o1.xyzw = r0.xxxx ? r1.xyzw : 0;
o0.xyzw = r3.xyzw;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:35:16 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float altest; // Offset: 0 Size: 4
// float useshadow; // Offset: 4 Size: 4 [unused]
// float mulblend; // Offset: 8 Size: 4
// float noalpha; // Offset: 12 Size: 4
// float znear; // Offset: 16 Size: 4
// float zfar; // Offset: 20 Size: 4
// float zwrite; // Offset: 24 Size: 4
// float4 shadowcolor; // Offset: 32 Size: 16
// float4 cascadeBound; // Offset: 48 Size: 16 [unused]
// float4 lightColor; // Offset: 64 Size: 16
// float4 param; // Offset: 80 Size: 16
// float2 depthuv; // Offset: 96 Size: 8
// float numLight; // Offset: 28 Size: 4
//
// struct
// {
//
// float4 pos; // Offset: 112
// float4 color; // Offset: 128
//
// } lightinfo[64]; // Offset: 112 Size: 2048
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// tex_samp sampler NA NA 0 1
// linearztex_samp sampler NA NA 1 1
// tex_tex texture float4 2d 0 1
// linearztex_tex texture float4 2d 1 1
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xy 0 NONE float xy
// TEXCOORD 9 z 0 NONE float z
// TEXCOORD 1 xyz 1 NONE float xyz
// TEXCOORD 2 xyz 2 NONE float xyz
// COLOR 0 xyzw 3 NONE float xyzw
// COLOR 1 xyzw 4 NONE float xyzw
// TEXCOORD 8 xyzw 5 NONE float xyzw
// SV_Position 0 xyzw 6 POS float xy w
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
// SV_Target 1 xyzw 1 TARGET float xyzw
//
ps_4_0
dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0},
{ 0, 1.000000, 0, 0},
{ 0, 0, 1.000000, 0},
{ 0, 0, 0, 1.000000} }
dcl_constantbuffer cb0[135], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear v0.xy
dcl_input_ps linear v0.z
dcl_input_ps linear v1.xyz
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyzw
dcl_input_ps_siv linear noperspective v6.xyw, position
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 8
dp3 r0.x, v1.xyzx, v1.xyzx
rsq r0.x, r0.x
mul r0.yzw, r0.xxxx, v1.xxyz
sample r1.xyzw, v0.xyxx, t0.xyzw, s0
mul r2.xyzw, r1.xyzw, v3.xyzw
ne r3.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].w
not r3.x, r3.x
mov r4.x, -cb0[0].x
mov r4.y, l(-0.004000)
mov r5.x, r1.w
mov r5.y, r2.w
add r3.yz, r4.xxyx, r5.xxyx
lt r3.yz, r3.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
or r1.w, r3.z, r3.y
and r1.w, r3.x, r1.w
discard_nz r1.w
lt r1.w, cb0[5].x, l(10.000000)
dp3 r0.y, -r0.yzwy, v2.xyzx
add_sat r0.y, -r0.y, l(1.000000)
log r0.y, r0.y
mul r0.y, r0.y, cb0[5].x
exp r0.y, r0.y
add r0.y, -r0.y, l(1.000000)
mul r0.y, r0.y, r2.w
lt r0.z, r0.y, l(0.001000)
and r0.z, r0.z, r1.w
discard_nz r0.z
movc r3.w, r1.w, r0.y, r2.w
lt r0.y, l(0.000000), cb0[5].z
if_nz r0.y
add r0.y, v6.w, -cb0[5].y
div r0.y, r0.y, cb0[5].z
min r0.y, r0.y, l(1.000000)
ne r0.z, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[1].z
if_nz r0.z
mul r0.zw, v6.yyyx, l(0.000000, 0.000000, 0.250000, 0.250000)
ge r4.xy, r0.zwzz, -r0.zwzz
frc r0.zw, |r0.zzzw|
movc r0.zw, r4.xxxy, r0.zzzw, -r0.zzzw
mul r0.zw, r0.zzzw, l(0.000000, 0.000000, 4.000000, 4.000000)
ftou r0.zw, r0.zzzw
dp4 r4.x, l(0.062000, 0.559000, 0.248000, 0.745000), icb[r0.w + 0].xyzw
dp4 r4.y, l(0.807000, 0.311000, 0.994000, 0.497000), icb[r0.w + 0].xyzw
dp4 r4.z, l(0.186000, 0.683000, 0.124000, 0.621000), icb[r0.w + 0].xyzw
dp4 r4.w, l(0.932000, 0.435000, 0.870000, 0.373000), icb[r0.w + 0].xyzw
dp4 r4.x, r4.xyzw, icb[r0.z + 0].xyzw
mov r4.y, l(0.004000)
add r0.zw, r0.yyyy, -r4.xxxy
lt r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.z, r0.w, r0.z
discard_nz r0.z
else
mul r3.w, r0.y, r3.w
lt r0.y, r3.w, l(0.004000)
discard_nz r0.y
endif
endif
lt r0.y, l(0.000000), cb0[5].w
if_nz r0.y
div r0.yz, v6.xxyx, cb0[6].xxyx
sample r4.xyzw, r0.yzyy, t1.xyzw, s1
dp2 r0.y, r4.xyxx, l(65536.000000, 256.000000, 0.000000, 0.000000)
add r0.y, r4.z, r0.y
mul_sat r0.y, r0.y, l(0.0000152587891)
add r0.y, -r0.y, l(1.000000)
add r0.z, -cb0[1].x, cb0[1].y
mad r0.y, r0.y, r0.z, cb0[1].x
add r0.y, -r0.y, v6.w
ge r0.z, r0.y, cb0[5].w
discard_nz r0.z
lt r0.z, l(0.000000), r0.y
div r0.y, r0.y, cb0[5].w
add r0.y, -r0.y, l(1.000000)
mul r0.y, r0.y, r3.w
movc r3.w, r0.z, r0.y, r3.w
endif
mul r0.yzw, r2.xxyz, cb0[4].xxyz
ftoi r1.w, cb0[1].w
mov r4.xyz, l(0,0,0,0)
mov r5.xyz, l(0,0,0,0)
mov r2.w, l(0)
loop
ige r4.w, r2.w, r1.w
breakc_nz r4.w
ishl r4.w, r2.w, l(1)
add r6.xyz, -v1.xyzx, cb0[r4.w + 7].xyzx
dp3 r5.w, r6.xyzx, r6.xyzx
sqrt r6.w, r5.w
ge r5.w, r6.w, cb0[r4.w + 7].w
if_nz r5.w
iadd r5.w, r2.w, l(1)
mov r2.w, r5.w
continue
endif
mov r7.x, r6.w
mov r7.w, cb0[r4.w + 7].w
div r6.xyzw, r6.xyzw, r7.xxxw
add r5.w, -r6.w, l(1.000000)
log r5.w, r5.w
mul r5.w, r5.w, cb0[r4.w + 8].w
exp r5.w, r5.w
mad r7.xyz, -v1.xyzx, r0.xxxx, r6.xyzx
dp3 r6.w, r7.xyzx, r7.xyzx
rsq r6.w, r6.w
mul r7.xyz, r6.wwww, r7.xyzx
dp3 r6.x, r6.xyzx, v2.xyzx
dp3 r6.y, r7.xyzx, v2.xyzx
ge r6.z, r6.x, l(0.000000)
max r7.x, r6.x, l(0.000000)
ge r6.x, r6.y, l(0.000000)
and r6.x, r6.z, r6.x
mul r6.y, r6.y, r6.y
and r7.y, r6.y, r6.x
mul r6.xy, r5.wwww, r7.xyxx
mad r4.xyz, cb0[r4.w + 8].xyzx, r6.xxxx, r4.xyzx
mad r5.xyz, cb0[r4.w + 8].xyzx, r6.yyyy, r5.xyzx
iadd r2.w, r2.w, l(1)
endloop
mul r6.xy, r4.xyxx, l(0.224250, 0.440250, 0.000000, 0.000000)
add r0.x, r6.y, r6.x
mad r0.x, r4.z, l(0.085500), r0.x
add_sat r0.x, -r0.x, l(1.000000)
mul r0.x, r0.x, v4.w
mul r1.xyz, r1.xyzx, r4.xyzx
mad r2.xyz, r2.xyzx, cb0[4].xyzx, r1.xyzx
mad r0.yzw, -r0.yyzw, r1.xxyz, r2.xxyz
mad r1.xyz, r5.xyzx, l(0.100000, 0.100000, 0.100000, 0.000000), v4.xyzx
mad r2.xyz, cb0[2].xyzx, r0.yzwy, -r0.yzwy
mad r0.xyz, r0.xxxx, r2.xyzx, r0.yzwy
add r0.xyz, r1.xyzx, r0.xyzx
min r0.xyz, r0.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
dp3 r0.w, r0.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
dp3 r1.x, v5.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
mad r0.w, -r1.x, l(0.500000), r0.w
max r0.w, r0.w, l(0.000000)
add r1.x, -v5.w, l(1.000000)
mul r1.x, r1.x, v0.z
mul r0.w, r0.w, r1.x
mad r1.xyz, r0.xyzx, v5.wwww, v5.xyzx
mul r2.xyz, r0.wwww, r0.xyzx
mad r0.xyz, r0.xyzx, r0.wwww, r1.xyzx
mad r0.xyz, -r1.xyzx, r2.xyzx, r0.xyzx
ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].z
mad r1.x, -r3.w, v5.w, l(1.000000)
add r1.yzw, -r0.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000)
mad r1.xyz, r1.xxxx, r1.yzwy, r0.xyzx
movc r3.xyz, r0.wwww, r1.xyzx, r0.xyzx
lt r0.x, l(0.000000), cb0[1].z
mad r1.xy, v2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mov r1.z, v5.w
mov r1.w, l(1.000000)
and o1.xyzw, r0.xxxx, r1.xyzw
mov o0.xyzw, r3.xyzw
ret
// Approximately 154 instruction slots used

8fb63dad48dc801e-ps_replace
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
// ---- Created with 3Dmigoto v1.3.8 on Wed May 23 14:36:15 2018

cbuffer CB0 : register(b0)
{
float altest : packoffset(c0);
float useshadow : packoffset(c0.y);
float mulblend : packoffset(c0.z);
float noalpha : packoffset(c0.w);
float znear : packoffset(c1);
float zfar : packoffset(c1.y);
float zwrite : packoffset(c1.z);
float4 fparam : packoffset(c2);
float4 fuvclamp : packoffset(c3);
float4 fuvmul : packoffset(c4);
}

SamplerState tex_samp_s : register(s0);
SamplerState bbtex_samp_s : register(s1);
Texture2D<float4> tex_tex : register(t0);
Texture2D<float4> bbtex_tex : register(t1);


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


void main(
float4 v0 : COLOR0,
float4 v1 : TEXCOORD0,
float4 v2 : TEXCOORD1,
float4 v3 : TEXCOORD2,
float4 v4 : SV_Position0,
out float4 o0 : SV_Target0,
out float4 o1 : SV_Target1)
{
float4 r0,r1,r2,r3;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyzw = tex_tex.Sample(tex_samp_s, v2.xy).xyzw;
r0.xy = float2(-0.5,-0.5) + r0.xy;
r0.zw = float2(1.00999999,1.00999999) + -r0.zw;
r0.xy = r0.xy / r0.zw;
r0.xy = fparam.zw * r0.xy;
r0.z = max(2.5, v1.w);
r0.z = 10 / r0.z;
r0.z = -1 + r0.z;
r0.z = fparam.y * r0.z + 1;
r1.xy = fparam.xx * v1.xy;
r0.xy = r0.xy * r0.zz + r1.xy;
r0.zw = v3.xy / v3.ww;
r0.zw = r0.zw * fuvmul.xy + fuvmul.zw;
r0.xy = r0.xy + r0.zw;
r0.xy = max(fuvclamp.xy, r0.xy);
r0.xy = min(fuvclamp.zw, r0.xy);
r0.xyzw = bbtex_tex.Sample(bbtex_samp_s, r0.xy).wxyz;
r1.xyzw = v0.wxyz * r0.xyzw;
r2.xyzw = -r0.xyzw * v0.wxyz + float4(1,1,1,1);
r2.xyz = r2.xxx * r2.yzw + r1.yzw;
r0.y = r1.x;
r3.x = -altest;
r3.y = -0.00400000019;
r0.xz = r3.xy + r0.xy;
o0.w = r0.y;
r0.xy = cmp(r0.xz < float2(0,0));
r0.x = (int)r0.y | (int)r0.x;
r0.yz = cmp(float2(0,0) != noalpha);
r0.y = ~(int)r0.y;
o0.xyz = r0.zzz ? r2.xyz : r1.yzw;
r0.x = r0.y ? r0.x : 0;
if (r0.x != 0) discard;
r0.x = cmp(0 < zwrite);
r1.xy = v1.xy * float2(0.5,0.5) + float2(0.5,0.5);
r1.zw = float2(0,1);
o1.xyzw = r0.xxxx ? r1.xyzw : 0;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.3.8 on Wed May 23 14:36:15 2018
//
//
// Buffer Definitions:
//
// cbuffer CB0
// {
//
// float altest; // Offset: 0 Size: 4
// float useshadow; // Offset: 4 Size: 4 [unused]
// float mulblend; // Offset: 8 Size: 4
// float noalpha; // Offset: 12 Size: 4
// float znear; // Offset: 16 Size: 4 [unused]
// float zfar; // Offset: 20 Size: 4 [unused]
// float zwrite; // Offset: 24 Size: 4
// float4 fparam; // Offset: 32 Size: 16
// float4 fuvclamp; // Offset: 48 Size: 16
// float4 fuvmul; // Offset: 64 Size: 16
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// tex_samp sampler NA NA 0 1
// bbtex_samp sampler NA NA 1 1
// tex_tex texture float4 2d 0 1
// bbtex_tex texture float4 2d 1 1
// CB0 cbuffer NA NA 0 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// COLOR 0 xyzw 0 NONE float xyzw
// TEXCOORD 0 xyzw 1 NONE float xy w
// TEXCOORD 1 xy 2 NONE float xy
// TEXCOORD 2 xyzw 3 NONE float xy w
// SV_Position 0 xyzw 4 POS float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
// SV_Target 1 xyzw 1 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[5], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear v0.xyzw
dcl_input_ps linear v1.xyw
dcl_input_ps linear v2.xy
dcl_input_ps linear v3.xyw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_temps 4
sample r0.xyzw, v2.xyxx, t0.xyzw, s0
add r0.xy, r0.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
add r0.zw, -r0.zzzw, l(0.000000, 0.000000, 1.010000, 1.010000)
div r0.xy, r0.xyxx, r0.zwzz
mul r0.xy, r0.xyxx, cb0[2].zwzz
max r0.z, v1.w, l(2.500000)
div r0.z, l(10.000000), r0.z
add r0.z, r0.z, l(-1.000000)
mad r0.z, cb0[2].y, r0.z, l(1.000000)
mul r1.xy, v1.xyxx, cb0[2].xxxx
mad r0.xy, r0.xyxx, r0.zzzz, r1.xyxx
div r0.zw, v3.xxxy, v3.wwww
mad r0.zw, r0.zzzw, cb0[4].xxxy, cb0[4].zzzw
add r0.xy, r0.zwzz, r0.xyxx
max r0.xy, r0.xyxx, cb0[3].xyxx
min r0.xy, r0.xyxx, cb0[3].zwzz
sample r0.xyzw, r0.xyxx, t1.wxyz, s1
mul r1.xyzw, r0.xyzw, v0.wxyz
mad r2.xyzw, -r0.xyzw, v0.wxyz, l(1.000000, 1.000000, 1.000000, 1.000000)
mad r2.xyz, r2.xxxx, r2.yzwy, r1.yzwy
mov r0.y, r1.x
mov r3.x, -cb0[0].x
mov r3.y, l(-0.004000)
add r0.xz, r0.xxyx, r3.xxyx
mov o0.w, r0.y
lt r0.xy, r0.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000)
or r0.x, r0.y, r0.x
ne r0.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].wwzw
not r0.y, r0.y
movc o0.xyz, r0.zzzz, r2.xyzx, r1.yzwy
and r0.x, r0.y, r0.x
discard_nz r0.x
lt r0.x, l(0.000000), cb0[1].z
mad r1.xy, v1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mov r1.zw, l(0,0,0,1.000000)
and o1.xyzw, r0.xxxx, r1.xyzw
ret
// Approximately 37 instruction slots used

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

#17
Posted 05/23/2018 01:08 PM   
double post
double post

#18
Posted 05/23/2018 01:22 PM   
Wow. Do all those shaders disable the effected water, or do they correspond to different locations? Let's assume that it can be fixed in one vertex shader. This is the typical double depth / haloing problem, where at 0 convergence you can see the reflection of your character at double the separation than the character itself. I don't know which it can be, so try these steps for each shader: 1) Under the "float4 fDest;" line, write: [code]float4 stereo = StereoParams.Load(0);[/code] You can write it in all those vertex shaders at the same time, and save the changes. 2) Once you have done that, take a look at the part after "void main(". You have to note what outputs (o0, o1, o2...) correspond to texcoords (TEXCOORD0, TEXCOORD1, TEXCOORD2...). You have to NOT modify outputs that refer to COLOR, SV_POSITION, NORMAL, or TANGENT. 3) After your output has been completely defined (x, y, z and w), or just before the "return;" line, write this (example with o2): [code]o2.x+=stereo.x*(o2.w-stereo.y);[/code] That's the standard correction formula. For example, o2 in the first shader you posted and o7 in the second, o3 in "d720ae2045e3fed3-vs_replace", are suspicious. You can delete or comment (with "//", no quotes) these lines and reload shaders with F10 (if the game is alt+tab friendly) to see the changes in real time. Sorry that this is more a guide than a proper fix, but with that many shaders, I can't be sure of which is correct.
Wow. Do all those shaders disable the effected water, or do they correspond to different locations?

Let's assume that it can be fixed in one vertex shader. This is the typical double depth / haloing problem, where at 0 convergence you can see the reflection of your character at double the separation than the character itself.

I don't know which it can be, so try these steps for each shader:

1) Under the "float4 fDest;" line, write:

float4 stereo = StereoParams.Load(0);


You can write it in all those vertex shaders at the same time, and save the changes.

2) Once you have done that, take a look at the part after "void main(". You have to note what outputs (o0, o1, o2...) correspond to texcoords (TEXCOORD0, TEXCOORD1, TEXCOORD2...). You have to NOT modify outputs that refer to COLOR, SV_POSITION, NORMAL, or TANGENT.

3) After your output has been completely defined (x, y, z and w), or just before the "return;" line, write this (example with o2):

o2.x+=stereo.x*(o2.w-stereo.y);


That's the standard correction formula. For example, o2 in the first shader you posted and o7 in the second, o3 in "d720ae2045e3fed3-vs_replace", are suspicious. You can delete or comment (with "//", no quotes) these lines and reload shaders with F10 (if the game is alt+tab friendly) to see the changes in real time.

Sorry that this is more a guide than a proper fix, but with that many shaders, I can't be sure of which is correct.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#19
Posted 05/23/2018 04:57 PM   
Thanks for the beginner's guide, which I've tried to follow as closely as possible. I've narrowed down the vertex shaders affecting the water to 3. Here's a list of the outputs that actually do have an effect on the water: - o2 in the first shader - o2, o3, o4 and o5 in the second shader (o6, o7 and o8 don't change anything when modified) - o3 in the third shader (o1 and o2 didn't change anything) I'm posting the result of the changes I've made below in "before" and "after" screenshots (zero convergence). cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float4x4 uUVMatrix : packoffset(c14); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float3 v0 : POSITION0, float4 v1 : COLOR0, float4 v2 : COLOR1, out float4 o0 : COLOR0, out float4 o1 : COLOR1, out float4 o2 : TEXCOORD0, out float4 o3 : SV_Position0) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; float4 stereo = StereoParams.Load(0); o0.xyzw = uColor[0].xyzw * v1.xyzw; o1.xyzw = uColor[1].xyzw * v2.xyzw; r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw; r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz; r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy; r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw; r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw; r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw; r1.xyzw = uUVMatrix._m01_m11_m21_m31 * r0.yyyy; r1.xyzw = uUVMatrix._m00_m10_m20_m30 * r0.xxxx + r1.xyzw; r1.xyzw = uUVMatrix._m02_m12_m22_m32 * r0.zzzz + r1.xyzw; o2.xyzw = uUVMatrix._m03_m13_m23_m33 * r0.wwww + r1.xyzw; o2.x+=stereo.x*(o2.w-stereo.y); o3.xyzw = r0.xyzw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float4 lightvec : packoffset(c14); float4 fogparam[2] : packoffset(c15); float4 fogden[2] : packoffset(c17); float4 fogcolor[2] : packoffset(c19); float numFogLight : packoffset(c21); struct { float4 param; float4 color; float4 pos; } foginfo[64] : packoffset(c22); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float3 v1 : POSITION1, float4 v2 : NORMAL0, float4 v3 : NORMAL1, float4 v4 : COLOR0, float4 v5 : COLOR1, float4 v6 : TEXCOORD0, float2 v7 : TEXCOORD1, out float4 o0 : COLOR0, out float4 o1 : COLOR1, out float4 o2 : TEXCOORD0, out float4 o3 : TEXCOORD1, out float4 o4 : TEXCOORD2, out float4 o5 : TEXCOORD3, out float4 o6 : TEXCOORD4, out float4 o7 : TEXCOORD5, out float4 o8 : TEXCOORD6, out float4 o9 : SV_Position0) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; uint4 bitmask, uiDest; float4 fDest; float4 stereo = StereoParams.Load(0); r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r1.xyz = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r1.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r1.xyz; r1.xyz = uMatrix[1]._m03_m13_m23 + r1.xyz; r2.xyzw = uMatrix[2]._m01_m11_m21_m31 * r1.yyyy; r2.xyzw = uMatrix[2]._m00_m10_m20_m30 * r1.xxxx + r2.xyzw; r2.xyzw = uMatrix[2]._m02_m12_m22_m32 * r1.zzzz + r2.xyzw; o9.xyzw = uMatrix[2]._m03_m13_m23_m33 + r2.xyzw; r2.xyz = v2.xyz * v0.www; r3.xyz = uMatrix[0]._m01_m11_m21 * r2.yyy; r2.xyw = uMatrix[0]._m00_m10_m20 * r2.xxx + r3.xyz; r2.xyz = uMatrix[0]._m02_m12_m22 * r2.zzz + r2.xyw; r0.w = dot(r2.xyz, r2.xyz); r0.w = rsqrt(r0.w); r2.xyz = r2.xyz * r0.www; r3.xyz = uMatrix[1]._m01_m11_m21 * r2.yyy; r2.xyw = uMatrix[1]._m00_m10_m20 * r2.xxx + r3.xyz; r2.xyz = uMatrix[1]._m02_m12_m22 * r2.zzz + r2.xyw; r0.w = dot(r2.xyz, r2.xyz); r0.w = rsqrt(r0.w); r2.xyz = r2.xyz * r0.www; o0.xyzw = uColor[0].xyzw * v4.xyzw; r3.xyz = float3(1,-1,1) * v3.xzy; r4.xyz = uMatrix[0]._m01_m11_m21 * r3.yyy; r3.xyw = uMatrix[0]._m00_m10_m20 * r3.xxx + r4.xyz; r3.xyz = uMatrix[0]._m02_m12_m22 * r3.zzz + r3.xyw; r4.xyz = uMatrix[1]._m01_m11_m21 * r3.yyy; r3.xyw = uMatrix[1]._m00_m10_m20 * r3.xxx + r4.xyz; r3.xyz = uMatrix[1]._m02_m12_m22 * r3.zzz + r3.xyw; r0.w = dot(r3.xyz, r3.xyz); r0.w = rsqrt(r0.w); r3.xyz = r3.xyz * r0.www; r4.xyz = r3.yzx * r2.zxy; o4.xyz = r2.yzx * r3.zxy + -r4.xyz; r4.xyz = float3(1,-1,1) * v1.xzy; r5.xyz = uMatrix[0]._m01_m11_m21 * r4.yyy; r4.xyw = uMatrix[0]._m00_m10_m20 * r4.xxx + r5.xyz; r4.xyz = uMatrix[0]._m02_m12_m22 * r4.zzz + r4.xyw; r5.xyz = uMatrix[1]._m01_m11_m21 * r4.yyy; r4.xyw = uMatrix[1]._m00_m10_m20 * r4.xxx + r5.xyz; r4.xyz = uMatrix[1]._m02_m12_m22 * r4.zzz + r4.xyw; r0.w = dot(r4.xyz, r4.xyz); r0.w = rsqrt(r0.w); r4.xyz = r4.xyz * r0.www; r5.xyz = r4.yzx * r2.zxy; r5.xyz = r2.yzx * r4.zxy + -r5.xyz; r0.w = cmp(0 != fogparam[0].w); if (r0.w != 0) { r6.xy = fogden[1].zw + -fogden[0].zw; r7.x = -fogparam[0].y; r7.y = -fogparam[1].y; r6.zw = r7.xy + r1.zz; r7.x = saturate(fogparam[0].x * r6.z); r7.y = saturate(fogparam[1].x * r6.w); r6.zw = log2(r7.xy); r7.x = fogparam[0].z * r6.z; r7.y = fogparam[1].z * r6.w; r6.zw = exp2(r7.xy); r7.x = fogden[0].x + -fogden[0].y; r7.y = fogden[1].x + -fogden[1].y; r8.x = fogden[0].y; r8.y = fogden[1].y; r7.xy = r6.zw * r7.xy + r8.xy; r0.w = cmp(0.00100000005 >= r6.x); r1.w = -fogden[0].z + r0.z; r1.w = saturate(r1.w / r6.x); r3.w = r7.y + -r7.x; r8.x = r1.w * r3.w + r7.x; r6.xzw = fogcolor[1].xyz + -fogcolor[0].xyz; r6.xzw = r1.www * r6.xzw + fogcolor[0].xyz; r8.y = r1.w * r6.y + fogden[0].w; r6.xyz = r0.www ? fogcolor[0].xyz : r6.xzw; r7.z = fogden[0].w; r7.xy = r0.ww ? r7.xz : r8.xy; r0.w = 1 + -r7.x; r1.w = numFogLight; r7.xzw = r6.xyz; r3.w = r0.w; r4.w = 0; while (true) { r5.w = cmp((int)r4.w >= (int)r1.w); if (r5.w != 0) break; r5.w = (int)r4.w * 3; r8.xyz = -foginfo[r5.w].pos.xyz + r0.xyz; r6.w = dot(r8.xyz, r8.xyz); r6.w = sqrt(r6.w); r6.w = saturate(r6.w / foginfo[r5.w].param.y); r6.w = log2(r6.w); r6.w = foginfo[r5.w].param.z * r6.w; r6.w = exp2(r6.w); r8.x = cmp(0.000000 == foginfo[r5.w].param.w); if (r8.x != 0) { r6.w = 1 + -r6.w; r8.x = r3.w * foginfo[r5.w].param.x + -r3.w; r3.w = r6.w * r8.x + r3.w; } else { r8.x = cmp(1.000000 == foginfo[r5.w].param.w); if (r8.x != 0) { r6.w = 1 + -r6.w; r8.x = foginfo[r5.w].param.x * r6.w + r3.w; r3.w = min(1, r8.x); } else { r8.x = foginfo[r5.w].param.x * r6.w + r3.w; r3.w = min(1, r8.x); } } r6.w = foginfo[r5.w].color.w * r6.w; r8.xyz = foginfo[r5.w].color.xyz + -r7.xzw; r7.xzw = r6.www * r8.xyz + r7.xzw; r4.w = (int)r4.w + 1; } o8.xyz = r7.xzw * r3.www; o8.w = 1 + -r3.w; r2.w = r7.y; } else { o8.xyzw = float4(0,0,0,1); r2.w = 0; } o2.xy = uColor[1].xy + v6.xy; o2.zw = uColor[1].zw + v7.xy; o2.x+=stereo.x*(o2.w-stereo.y); o1.xyzw = v5.xyzw; o3.w = r5.x; o3.xyz = r3.xyz; o3.x+=stereo.x*(o3.w-stereo.y); o4.w = r5.y; o4.x+=stereo.x*(o4.w-stereo.y); o5.w = r5.z; o5.xyz = r4.xyz; o5.x+=stereo.x*(o5.w-stereo.y); o7.xyzw = r2.xyzw; o6.xyz = r1.xyz; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cbuffer CB0 : register(b0) { float4x4 uMatrix[3] : packoffset(c0); float4 uColor[2] : packoffset(c12); float2 fparam : packoffset(c14); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float4 v1 : NORMAL0, float4 v2 : COLOR0, float2 v3 : TEXCOORD0, out float4 o0 : COLOR0, out float4 o1 : TEXCOORD0, out float4 o2 : TEXCOORD1, out float4 o3 : TEXCOORD2, out float4 o4 : SV_Position0) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; float4 stereo = StereoParams.Load(0); o0.xyzw = uColor[0].xyzw * v2.xyzw; r0.xyz = v1.xyz * v0.www; r1.xyz = uMatrix[0]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[0]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * r0.zzz + r0.xyw; r0.w = dot(r0.xyz, r0.xyz); r0.w = rsqrt(r0.w); r0.xyz = r0.xyz * r0.www; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw; r0.w = dot(r0.xyz, r0.xyz); r0.w = rsqrt(r0.w); r0.xyz = r0.xyz * r0.www; o1.xyz = float3(1,-1,1) * r0.xyz; r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy; r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz; r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz; r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz; r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy; r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz; r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw; r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz; o1.w = r0.z; o2.xy = fparam.xy + v3.xy; r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy; r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw; r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw; r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw; o3.xyzw = float4(1,-1,1,1) * r0.xyzw; o3.x+=stereo.x*(o3.w-stereo.y); o4.xyzw = r0.xyzw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks for the beginner's guide, which I've tried to follow as closely as possible.
I've narrowed down the vertex shaders affecting the water to 3.

Here's a list of the outputs that actually do have an effect on the water:
- o2 in the first shader
- o2, o3, o4 and o5 in the second shader (o6, o7 and o8 don't change anything when modified)
- o3 in the third shader (o1 and o2 didn't change anything)

I'm posting the result of the changes I've made below in "before" and "after" screenshots (zero convergence).


cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float4x4 uUVMatrix : packoffset(c14);
}



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


void main(
float3 v0 : POSITION0,
float4 v1 : COLOR0,
float4 v2 : COLOR1,
out float4 o0 : COLOR0,
out float4 o1 : COLOR1,
out float4 o2 : TEXCOORD0,
out float4 o3 : SV_Position0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;
float4 stereo = StereoParams.Load(0);

o0.xyzw = uColor[0].xyzw * v1.xyzw;
o1.xyzw = uColor[1].xyzw * v2.xyzw;
r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz;
r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy;
r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw;
r1.xyzw = uUVMatrix._m01_m11_m21_m31 * r0.yyyy;
r1.xyzw = uUVMatrix._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
r1.xyzw = uUVMatrix._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
o2.xyzw = uUVMatrix._m03_m13_m23_m33 * r0.wwww + r1.xyzw;
o2.x+=stereo.x*(o2.w-stereo.y);
o3.xyzw = r0.xyzw;
return;
}

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

cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float4 lightvec : packoffset(c14);
float4 fogparam[2] : packoffset(c15);
float4 fogden[2] : packoffset(c17);
float4 fogcolor[2] : packoffset(c19);
float numFogLight : packoffset(c21);

struct
{
float4 param;
float4 color;
float4 pos;
} foginfo[64] : packoffset(c22);

}



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


void main(
float4 v0 : POSITION0,
float3 v1 : POSITION1,
float4 v2 : NORMAL0,
float4 v3 : NORMAL1,
float4 v4 : COLOR0,
float4 v5 : COLOR1,
float4 v6 : TEXCOORD0,
float2 v7 : TEXCOORD1,
out float4 o0 : COLOR0,
out float4 o1 : COLOR1,
out float4 o2 : TEXCOORD0,
out float4 o3 : TEXCOORD1,
out float4 o4 : TEXCOORD2,
out float4 o5 : TEXCOORD3,
out float4 o6 : TEXCOORD4,
out float4 o7 : TEXCOORD5,
out float4 o8 : TEXCOORD6,
out float4 o9 : SV_Position0)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8;
uint4 bitmask, uiDest;
float4 fDest;
float4 stereo = StereoParams.Load(0);

r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r1.xyz = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r1.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r1.xyz;
r1.xyz = uMatrix[1]._m03_m13_m23 + r1.xyz;
r2.xyzw = uMatrix[2]._m01_m11_m21_m31 * r1.yyyy;
r2.xyzw = uMatrix[2]._m00_m10_m20_m30 * r1.xxxx + r2.xyzw;
r2.xyzw = uMatrix[2]._m02_m12_m22_m32 * r1.zzzz + r2.xyzw;
o9.xyzw = uMatrix[2]._m03_m13_m23_m33 + r2.xyzw;
r2.xyz = v2.xyz * v0.www;
r3.xyz = uMatrix[0]._m01_m11_m21 * r2.yyy;
r2.xyw = uMatrix[0]._m00_m10_m20 * r2.xxx + r3.xyz;
r2.xyz = uMatrix[0]._m02_m12_m22 * r2.zzz + r2.xyw;
r0.w = dot(r2.xyz, r2.xyz);
r0.w = rsqrt(r0.w);
r2.xyz = r2.xyz * r0.www;
r3.xyz = uMatrix[1]._m01_m11_m21 * r2.yyy;
r2.xyw = uMatrix[1]._m00_m10_m20 * r2.xxx + r3.xyz;
r2.xyz = uMatrix[1]._m02_m12_m22 * r2.zzz + r2.xyw;
r0.w = dot(r2.xyz, r2.xyz);
r0.w = rsqrt(r0.w);
r2.xyz = r2.xyz * r0.www;
o0.xyzw = uColor[0].xyzw * v4.xyzw;
r3.xyz = float3(1,-1,1) * v3.xzy;
r4.xyz = uMatrix[0]._m01_m11_m21 * r3.yyy;
r3.xyw = uMatrix[0]._m00_m10_m20 * r3.xxx + r4.xyz;
r3.xyz = uMatrix[0]._m02_m12_m22 * r3.zzz + r3.xyw;
r4.xyz = uMatrix[1]._m01_m11_m21 * r3.yyy;
r3.xyw = uMatrix[1]._m00_m10_m20 * r3.xxx + r4.xyz;
r3.xyz = uMatrix[1]._m02_m12_m22 * r3.zzz + r3.xyw;
r0.w = dot(r3.xyz, r3.xyz);
r0.w = rsqrt(r0.w);
r3.xyz = r3.xyz * r0.www;
r4.xyz = r3.yzx * r2.zxy;
o4.xyz = r2.yzx * r3.zxy + -r4.xyz;
r4.xyz = float3(1,-1,1) * v1.xzy;
r5.xyz = uMatrix[0]._m01_m11_m21 * r4.yyy;
r4.xyw = uMatrix[0]._m00_m10_m20 * r4.xxx + r5.xyz;
r4.xyz = uMatrix[0]._m02_m12_m22 * r4.zzz + r4.xyw;
r5.xyz = uMatrix[1]._m01_m11_m21 * r4.yyy;
r4.xyw = uMatrix[1]._m00_m10_m20 * r4.xxx + r5.xyz;
r4.xyz = uMatrix[1]._m02_m12_m22 * r4.zzz + r4.xyw;
r0.w = dot(r4.xyz, r4.xyz);
r0.w = rsqrt(r0.w);
r4.xyz = r4.xyz * r0.www;
r5.xyz = r4.yzx * r2.zxy;
r5.xyz = r2.yzx * r4.zxy + -r5.xyz;
r0.w = cmp(0 != fogparam[0].w);
if (r0.w != 0) {
r6.xy = fogden[1].zw + -fogden[0].zw;
r7.x = -fogparam[0].y;
r7.y = -fogparam[1].y;
r6.zw = r7.xy + r1.zz;
r7.x = saturate(fogparam[0].x * r6.z);
r7.y = saturate(fogparam[1].x * r6.w);
r6.zw = log2(r7.xy);
r7.x = fogparam[0].z * r6.z;
r7.y = fogparam[1].z * r6.w;
r6.zw = exp2(r7.xy);
r7.x = fogden[0].x + -fogden[0].y;
r7.y = fogden[1].x + -fogden[1].y;
r8.x = fogden[0].y;
r8.y = fogden[1].y;
r7.xy = r6.zw * r7.xy + r8.xy;
r0.w = cmp(0.00100000005 >= r6.x);
r1.w = -fogden[0].z + r0.z;
r1.w = saturate(r1.w / r6.x);
r3.w = r7.y + -r7.x;
r8.x = r1.w * r3.w + r7.x;
r6.xzw = fogcolor[1].xyz + -fogcolor[0].xyz;
r6.xzw = r1.www * r6.xzw + fogcolor[0].xyz;
r8.y = r1.w * r6.y + fogden[0].w;
r6.xyz = r0.www ? fogcolor[0].xyz : r6.xzw;
r7.z = fogden[0].w;
r7.xy = r0.ww ? r7.xz : r8.xy;
r0.w = 1 + -r7.x;
r1.w = numFogLight;
r7.xzw = r6.xyz;
r3.w = r0.w;
r4.w = 0;
while (true) {
r5.w = cmp((int)r4.w >= (int)r1.w);
if (r5.w != 0) break;
r5.w = (int)r4.w * 3;
r8.xyz = -foginfo[r5.w].pos.xyz + r0.xyz;
r6.w = dot(r8.xyz, r8.xyz);
r6.w = sqrt(r6.w);
r6.w = saturate(r6.w / foginfo[r5.w].param.y);
r6.w = log2(r6.w);
r6.w = foginfo[r5.w].param.z * r6.w;
r6.w = exp2(r6.w);
r8.x = cmp(0.000000 == foginfo[r5.w].param.w);
if (r8.x != 0) {
r6.w = 1 + -r6.w;
r8.x = r3.w * foginfo[r5.w].param.x + -r3.w;
r3.w = r6.w * r8.x + r3.w;
} else {
r8.x = cmp(1.000000 == foginfo[r5.w].param.w);
if (r8.x != 0) {
r6.w = 1 + -r6.w;
r8.x = foginfo[r5.w].param.x * r6.w + r3.w;
r3.w = min(1, r8.x);
} else {
r8.x = foginfo[r5.w].param.x * r6.w + r3.w;
r3.w = min(1, r8.x);
}
}
r6.w = foginfo[r5.w].color.w * r6.w;
r8.xyz = foginfo[r5.w].color.xyz + -r7.xzw;
r7.xzw = r6.www * r8.xyz + r7.xzw;
r4.w = (int)r4.w + 1;
}
o8.xyz = r7.xzw * r3.www;
o8.w = 1 + -r3.w;
r2.w = r7.y;
} else {
o8.xyzw = float4(0,0,0,1);
r2.w = 0;
}
o2.xy = uColor[1].xy + v6.xy;
o2.zw = uColor[1].zw + v7.xy;
o2.x+=stereo.x*(o2.w-stereo.y);
o1.xyzw = v5.xyzw;
o3.w = r5.x;
o3.xyz = r3.xyz;
o3.x+=stereo.x*(o3.w-stereo.y);
o4.w = r5.y;
o4.x+=stereo.x*(o4.w-stereo.y);
o5.w = r5.z;
o5.xyz = r4.xyz;
o5.x+=stereo.x*(o5.w-stereo.y);
o7.xyzw = r2.xyzw;
o6.xyz = r1.xyz;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cbuffer CB0 : register(b0)
{
float4x4 uMatrix[3] : packoffset(c0);
float4 uColor[2] : packoffset(c12);
float2 fparam : packoffset(c14);
}



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


void main(
float4 v0 : POSITION0,
float4 v1 : NORMAL0,
float4 v2 : COLOR0,
float2 v3 : TEXCOORD0,
out float4 o0 : COLOR0,
out float4 o1 : TEXCOORD0,
out float4 o2 : TEXCOORD1,
out float4 o3 : TEXCOORD2,
out float4 o4 : SV_Position0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;
float4 stereo = StereoParams.Load(0);

o0.xyzw = uColor[0].xyzw * v2.xyzw;
r0.xyz = v1.xyz * v0.www;
r1.xyz = uMatrix[0]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[0]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.w = dot(r0.xyz, r0.xyz);
r0.w = rsqrt(r0.w);
r0.xyz = r0.xyz * r0.www;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.w = dot(r0.xyz, r0.xyz);
r0.w = rsqrt(r0.w);
r0.xyz = r0.xyz * r0.www;
o1.xyz = float3(1,-1,1) * r0.xyz;
r0.xyz = uMatrix[0]._m01_m11_m21 * v0.yyy;
r0.xyz = uMatrix[0]._m00_m10_m20 * v0.xxx + r0.xyz;
r0.xyz = uMatrix[0]._m02_m12_m22 * v0.zzz + r0.xyz;
r0.xyz = uMatrix[0]._m03_m13_m23 + r0.xyz;
r1.xyz = uMatrix[1]._m01_m11_m21 * r0.yyy;
r0.xyw = uMatrix[1]._m00_m10_m20 * r0.xxx + r1.xyz;
r0.xyz = uMatrix[1]._m02_m12_m22 * r0.zzz + r0.xyw;
r0.xyz = uMatrix[1]._m03_m13_m23 + r0.xyz;
o1.w = r0.z;
o2.xy = fparam.xy + v3.xy;
r1.xyzw = uMatrix[2]._m01_m11_m21_m31 * r0.yyyy;
r1.xyzw = uMatrix[2]._m00_m10_m20_m30 * r0.xxxx + r1.xyzw;
r0.xyzw = uMatrix[2]._m02_m12_m22_m32 * r0.zzzz + r1.xyzw;
r0.xyzw = uMatrix[2]._m03_m13_m23_m33 + r0.xyzw;
o3.xyzw = float4(1,-1,1,1) * r0.xyzw;
o3.x+=stereo.x*(o3.w-stereo.y);
o4.xyzw = r0.xyzw;
return;
}

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

#20
Posted 05/25/2018 05:18 PM   
Is that the result of modifying the 3 shaders at the same time, or just one of them? In the "after" screenshot, the effect has different separation for each eye, and in both cases it's too much.
Is that the result of modifying the 3 shaders at the same time, or just one of them? In the "after" screenshot, the effect has different separation for each eye, and in both cases it's too much.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#21
Posted 05/25/2018 07:56 PM   
It's the result of modifying all 3 shaders at the same time, according to the excerpt in my last post. I've also tried to mod each shader individually and activate them separately but it still looks off. That's as far as I could push it with trial and error. Either the vertex shaders are more complicated than this or some pixel shader could be involved too.
It's the result of modifying all 3 shaders at the same time, according to the excerpt in my last post.
I've also tried to mod each shader individually and activate them separately but it still looks off.

That's as far as I could push it with trial and error. Either the vertex shaders are more complicated than this or some pixel shader could be involved too.

#22
Posted 05/25/2018 08:15 PM   
Try analyzing how the image looks with the vertex shaders one by one. For example, in the "before" screenshot, you can see Adol's image on the right with the right eye view, and on the left with the left eye view. If doing a fix inverts this exactly (at the left in the right eye view and at the right in the left eye view), it means that you have to multiply the fixing formula by 0.5. So, "o2.x+=stereo.x*(o2.w-stereo.y)*0.5;", for example. There are some games where this happens. Sorry that I can't help directly by having the game :(. I'll get it as soon as the first price drop happens on GOG.
Try analyzing how the image looks with the vertex shaders one by one. For example, in the "before" screenshot, you can see Adol's image on the right with the right eye view, and on the left with the left eye view. If doing a fix inverts this exactly (at the left in the right eye view and at the right in the left eye view), it means that you have to multiply the fixing formula by 0.5. So, "o2.x+=stereo.x*(o2.w-stereo.y)*0.5;", for example. There are some games where this happens.

Sorry that I can't help directly by having the game :(. I'll get it as soon as the first price drop happens on GOG.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#23
Posted 05/25/2018 08:32 PM   
Thanks for your patience and please don't apologize for not owning the game. NIS just released update 6 today, which reintroduced crashes and dragged the frame rate down to 35fps. I used to have 100+ fps in 3D with update 5, but they've royally screwed it up now :( I'll take another look at the water shaders once I've gotten over the frustration with that publisher.
Thanks for your patience and please don't apologize for not owning the game.
NIS just released update 6 today, which reintroduced crashes and dragged the frame rate down to 35fps. I used to have 100+ fps in 3D with update 5, but they've royally screwed it up now :(

I'll take another look at the water shaders once I've gotten over the frustration with that publisher.

#24
Posted 05/25/2018 10:20 PM   
Yeah, well.. I spoke too soon cause I just couldn't let it go :P Multiplying the formula by 0.5 did the trick and now only the reflections of the main characters remain an issue :)
Yeah, well.. I spoke too soon cause I just couldn't let it go :P
Multiplying the formula by 0.5 did the trick and now only the reflections of the main characters remain an issue :)
Attachments

ys8_waterfix.jpg

#25
Posted 05/25/2018 11:32 PM   
Now that looks like a different issue, but you seem to have fixed the haloing problem (in just one shader, right?). It looks like a flat (meaning at surface level) reflection that is affected by separation, going to the same side in both eyes. If this problem isn't caused by an unneeded correction in another shader, maybe the render target needs to be stereoized. If you want to do it, here's an explanation: Check the "ShaderUsage.txt" file. It gets updated every time you dump a shader. You have been dumping water shaders, so it should be OK as it is now. Go down in the file until you see the big "<RenderTarget" definitions. Skyrim SE example: [code] <RenderTarget orig_hash=2fab381f type=Texture2D width=40 height=23 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=3499d289 type=Texture2D width=160 height=90 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=36f63b9f type=Texture2D width=2560 height=1440 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=3812b386 type=Texture2D width=2560 height=1440 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=3fc01d5e type=Texture2D width=2560 height=1440 mips=1 array=1 format="R16G16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=420c37b2 type=Texture2D width=1280 height=720 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=45e8e12e type=Texture2D width=160 height=360 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=56442b51 type=Texture2D width=640 height=360 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=58a0a348 type=Texture2D width=640 height=360 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=70e3f5de type=Texture2D width=2560 height=1440 mips=1 array=1 format="R16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=72d2b22c type=Texture2D width=2560 height=1440 mips=1 array=1 format="R10G10B10A2_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> <RenderTarget orig_hash=85a67f33 type=Texture2D width=1280 height=720 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget> [/code] In general, you should look for render targets that have width and height lower than your resolution, especially those that are half of it. In this example: [code]<RenderTarget orig_hash=420c37b2 type=Texture2D width=1280 height=720 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>[/code] Take your "orig_hash" value and use it to search over the "ShaderUsage.txt" file. If you're lucky, you'll see it used above in the file in the "<VertexShader" definition of your water shader. If it's there, write this in "d3dx.ini" (with your render target hash): [code] [TextureOverrideWater1] Hash=XXXXXXXX StereoMode=1 [/code] If it works, that flat reflection will be 3D. It may need a fix in the shader after that, or maybe not. If you are unlucky and this is like the biggest decals problem I found in the Once Piece game, I have no idea what to do.
Now that looks like a different issue, but you seem to have fixed the haloing problem (in just one shader, right?). It looks like a flat (meaning at surface level) reflection that is affected by separation, going to the same side in both eyes.

If this problem isn't caused by an unneeded correction in another shader, maybe the render target needs to be stereoized. If you want to do it, here's an explanation:

Check the "ShaderUsage.txt" file. It gets updated every time you dump a shader. You have been dumping water shaders, so it should be OK as it is now.

Go down in the file until you see the big "<RenderTarget" definitions. Skyrim SE example:

<RenderTarget orig_hash=2fab381f type=Texture2D width=40 height=23 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=3499d289 type=Texture2D width=160 height=90 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=36f63b9f type=Texture2D width=2560 height=1440 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=3812b386 type=Texture2D width=2560 height=1440 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=3fc01d5e type=Texture2D width=2560 height=1440 mips=1 array=1 format="R16G16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=420c37b2 type=Texture2D width=1280 height=720 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=45e8e12e type=Texture2D width=160 height=360 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=56442b51 type=Texture2D width=640 height=360 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=58a0a348 type=Texture2D width=640 height=360 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=70e3f5de type=Texture2D width=2560 height=1440 mips=1 array=1 format="R16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=72d2b22c type=Texture2D width=2560 height=1440 mips=1 array=1 format="R10G10B10A2_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x28 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>
<RenderTarget orig_hash=85a67f33 type=Texture2D width=1280 height=720 mips=1 array=1 format="R16G16B16A16_FLOAT" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>


In general, you should look for render targets that have width and height lower than your resolution, especially those that are half of it. In this example:

<RenderTarget orig_hash=420c37b2 type=Texture2D width=1280 height=720 mips=1 array=1 format="R8G8B8A8_UNORM" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0xa8 cpu_access_flags=0x0 misc_flags=0x0></RenderTarget>


Take your "orig_hash" value and use it to search over the "ShaderUsage.txt" file. If you're lucky, you'll see it used above in the file in the "<VertexShader" definition of your water shader. If it's there, write this in "d3dx.ini" (with your render target hash):


[TextureOverrideWater1]
Hash=XXXXXXXX
StereoMode=1


If it works, that flat reflection will be 3D. It may need a fix in the shader after that, or maybe not.


If you are unlucky and this is like the biggest decals problem I found in the Once Piece game, I have no idea what to do.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#26
Posted 05/26/2018 08:20 AM   
I bought the game and downloaded it already. For the little 20% off it has on GOG (I'm feeling kinda bad for spending this much). I bought it because I don't expect a bigger drop before the end of the year, and I don't want to make people wait so much time for a fix. Poor Tokyo Xanadu Ex+ (I'm at chapter 5 out of 7 + epilogue. Fix going great but I want to test everything) will have to share time with another game again, lol.
I bought the game and downloaded it already. For the little 20% off it has on GOG (I'm feeling kinda bad for spending this much). I bought it because I don't expect a bigger drop before the end of the year, and I don't want to make people wait so much time for a fix.

Poor Tokyo Xanadu Ex+ (I'm at chapter 5 out of 7 + epilogue. Fix going great but I want to test everything) will have to share time with another game again, lol.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#27
Posted 11/16/2018 01:08 PM   
[quote="masterotaku"]Poor Tokyo Xanadu Ex+ (I'm at chapter 5 out of 7 + epilogue. Fix going great but I want to test everything) will have to share time with another game again, lol.[/quote] Awesome news, thanks for taking a look at this gem! It's my runner-up for game of the year, only bested by DQ XI. Just curious: Did you actually enjoy Tokyo Xanadu as much as the Trails series? I mean, I'll give it another go for sure, but had quite a hard time adapting to the combat system. Also, don't ever feel obliged to dish out fixes under time pressure, but do it on your own terms - you don't owe people anything :P
masterotaku said:Poor Tokyo Xanadu Ex+ (I'm at chapter 5 out of 7 + epilogue. Fix going great but I want to test everything) will have to share time with another game again, lol.

Awesome news, thanks for taking a look at this gem!
It's my runner-up for game of the year, only bested by DQ XI.

Just curious: Did you actually enjoy Tokyo Xanadu as much as the Trails series? I mean, I'll give it another go for sure, but had quite a hard time adapting to the combat system.

Also, don't ever feel obliged to dish out fixes under time pressure, but do it on your own terms - you don't owe people anything :P

#28
Posted 11/17/2018 08:44 AM   
[quote="Gryzor_"] Just curious: Did you actually enjoy Tokyo Xanadu as much as the Trails series? I mean, I'll give it another go for sure, but had quite a hard time adapting to the combat system.[/quote] As much as Trails? Mmmm, maybe not that much. If for me the Trails games are 10/10, Tokyo Xanadu is maybe 8/10. Outside of dungeons the system is similat. Time passes, you have events to see, silly sidequests to do, items to collect and buy, etc. With similar clunky animations in cutscenes :p. Combat in dungeons isn't at the level of Nioh, Devil May Cry or Dark Souls game. If you compare it to them, yes, it's clunky and pretty basic. But in this game I value the same things as in Trails: music, story, and character interactions. If someone hates the highschool setting... well, they can hate this game a bit I guess :p. [quote="Gryzor_"]Also, don't ever feel obliged to dish out fixes under time pressure, but do it on your own terms - you don't owe people anything :P[/quote] I know, I know. I also wanted to play it, of course. And I have the feeling that I'm going to love it. This is what I've done so far between last night and this morning: - Profile with "StereoTextureEnable = 0x00000027", which stereoizes some things I needed. - Fixing what the profile broke (shadows and minimap). - Sun and its lens flares at full depth. - Optional dynamic HUD. Still a bit in progress. It was significantly hard to make it work right (especially damage numbers). - Water is fixed completely. [url]https://u.cubeupload.com/masterotaku/ys8009.jpg[/url] - No glasses mode :p. Just one character for now, the only one I saw with glasses. I still need to fix a haloing problem when you do a flash move.
Gryzor_ said:
Just curious: Did you actually enjoy Tokyo Xanadu as much as the Trails series? I mean, I'll give it another go for sure, but had quite a hard time adapting to the combat system.


As much as Trails? Mmmm, maybe not that much. If for me the Trails games are 10/10, Tokyo Xanadu is maybe 8/10. Outside of dungeons the system is similat. Time passes, you have events to see, silly sidequests to do, items to collect and buy, etc. With similar clunky animations in cutscenes :p.

Combat in dungeons isn't at the level of Nioh, Devil May Cry or Dark Souls game. If you compare it to them, yes, it's clunky and pretty basic. But in this game I value the same things as in Trails: music, story, and character interactions.

If someone hates the highschool setting... well, they can hate this game a bit I guess :p.

Gryzor_ said:Also, don't ever feel obliged to dish out fixes under time pressure, but do it on your own terms - you don't owe people anything :P


I know, I know. I also wanted to play it, of course. And I have the feeling that I'm going to love it.


This is what I've done so far between last night and this morning:

- Profile with "StereoTextureEnable = 0x00000027", which stereoizes some things I needed.
- Fixing what the profile broke (shadows and minimap).
- Sun and its lens flares at full depth.
- Optional dynamic HUD. Still a bit in progress. It was significantly hard to make it work right (especially damage numbers).
- Water is fixed completely. https://u.cubeupload.com/masterotaku/ys8009.jpg
- No glasses mode :p. Just one character for now, the only one I saw with glasses.


I still need to fix a haloing problem when you do a flash move.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#29
Posted 11/17/2018 11:51 AM   
Some more progress: - Fixed sky gradation that was at screen depth. - Fixed some kind of "sun rays" that affected lighting and penumbra inside at least one dungeon. - Automatic high convergence + dynamic HUD preset. It goes back to low convergence and static HUD for conversations, tutorial prompts and cutscenes. I'm still in chapter 2 (inferno difficulty). There's a lot of game to play yet.
Some more progress:

- Fixed sky gradation that was at screen depth.
- Fixed some kind of "sun rays" that affected lighting and penumbra inside at least one dungeon.
- Automatic high convergence + dynamic HUD preset. It goes back to low convergence and static HUD for conversations, tutorial prompts and cutscenes.

I'm still in chapter 2 (inferno difficulty). There's a lot of game to play yet.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: Gainward Phoenix 1080 GLH
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#30
Posted 11/18/2018 07:51 PM   
  2 / 3    
Scroll To Top