The Long Dark v.426 3D fix shadows, lights, halos, autocrosshair, blood, footprints, campfire, torc...
  1 / 3    
Shadows, lights, Halos are fixed and I made an auto-crosshair fix thanks to Darkstarsword's template. Thanks to Masterotaku (shadows) and 4everawake (lights, I used his Kona fix to understand how to fix them) 3D Vision fix for The Long Dark Fixed - Halos, shadows, lights, blood decals, footprints, autocrosshair-depth, auto HUD convergence and separation... etc Not fixed - Balls of fire from torch, I had to disable them. - [s]Last update (8-1-2017) "ultra quality shadows settings break the fix so use "high"[/s] now ultra quality shadows are fixed... Installation - Download this file and extract (with 7-zip, for example) its contents in the "TheLongDark" folder where "tld.exe" is. - Boot the game. - Set in options FOV to 100 (footprints and blood decals need this to be fixed) - Set in Options - Tree billboard distance - 800 (this fix some trees that render in one eye when they are far away. - Low quality display settings breaks the fix. -In your Steam library, right click on "The Long Dark" and select "Properties" Click "Set Launch Options" In the box, type "-window-mode exclusive" without the "" Hotkeys - k: Separation 60 and covergence 0.7 (nice 3d) - .: Toggle low configuration convergence and separation sometimes useful. -RMB: Low convergence setting for aiming. Notes - FOV 100 is needed. - Auto separation and convergence in menus. - If you get a very low convergence and separation while playing press "k" update 07/14/17 [url]https://s3.amazonaws.com/cicicleta/The_Long_Dark.zip[/url] Using the same method that 4everawake made in "Kona" we can fix Unity games V5.5 and 5.6
Shadows, lights, Halos are fixed and I made an auto-crosshair fix thanks to Darkstarsword's template.
Thanks to Masterotaku (shadows) and 4everawake (lights, I used his Kona fix to understand how to fix them)
3D Vision fix for The Long Dark

Fixed
- Halos, shadows, lights, blood decals, footprints, autocrosshair-depth, auto HUD convergence and separation... etc

Not fixed
- Balls of fire from torch, I had to disable them.
- Last update (8-1-2017) "ultra quality shadows settings break the fix so use "high"
now ultra quality shadows are fixed...


Installation
- Download this file and extract (with 7-zip, for example) its contents in the "TheLongDark" folder where "tld.exe" is.
- Boot the game.
- Set in options FOV to 100 (footprints and blood decals need this to be fixed)
- Set in Options - Tree billboard distance - 800 (this fix some trees that render in one eye when they are far away.
- Low quality display settings breaks the fix.
-In your Steam library, right click on "The Long Dark" and select "Properties"
Click "Set Launch Options"
In the box, type "-window-mode exclusive" without the ""

Hotkeys
- k: Separation 60 and covergence 0.7 (nice 3d)
- .: Toggle low configuration convergence and separation sometimes useful.
-RMB: Low convergence setting for aiming.


Notes
- FOV 100 is needed.
- Auto separation and convergence in menus.
- If you get a very low convergence and separation while playing press "k"



update 07/14/17
https://s3.amazonaws.com/cicicleta/The_Long_Dark.zip

Using the same method that 4everawake made in "Kona" we can fix Unity games V5.5 and 5.6

#1
Posted 06/17/2017 12:35 AM   
that's cool. thank you.
that's cool. thank you.

Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/ Image

#2
Posted 06/17/2017 10:37 AM   
Post the shadows pixel shader here. I'll try to help.
Post the shadows pixel shader here. I'll try to help.

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

#3
Posted 06/17/2017 01:05 PM   
did this used to be in 3d? as i remember playing it years ago when it was new (alpha) in virtually 3d ready state
did this used to be in 3d? as i remember playing it years ago when it was new (alpha) in virtually 3d ready state

#4
Posted 06/17/2017 01:11 PM   
Thanks a lot for the fix cicicleta, i will take 3d over shadows any day
Thanks a lot for the fix cicicleta, i will take 3d over shadows any day

All hail 3d modders DHR, MasterOtaku, Losti, Necropants, Helifax, bo3b, mike_ar69, Flugan, DarkStarSword, 4everAwake, 3d4dd and so many more helping to keep the 3d dream alive, find their 3d fixes at http://helixmod.blogspot.com/ Also check my site for spanish VR and mobile gaming news: www.gamermovil.com

#5
Posted 06/17/2017 03:35 PM   
[quote="masterotaku"]Post the shadows pixel shader here. I'll try to help.[/quote] Hello!!! This is ps (e0e92586fcf76b94-ps_replace.txt) [code]// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 Texture2D<float4> t1 : register(t1); Texture2D<float4> t0 : register(t0); SamplerComparisonState s1_s : register(s1); SamplerState s0_s : register(s0); cbuffer cb2 : register(b2) { float4 cb2[25]; } cbuffer cb1 : register(b1) { float4 cb1[22]; } cbuffer cb0 : register(b0) { float4 cb0[9]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_POSITION0, float4 v1 : TEXCOORD0, float4 v2 : TEXCOORD1, float4 v3 : TEXCOORD2, float3 v4 : TEXCOORD3, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3; uint4 bitmask, uiDest; float4 fDest; r0.xyzw = t0.Sample(s0_s, v1.xy).xyzw; r0.y = cb0[7].x * r0.x + cb0[7].y; r0.y = 1 / r0.y; r0.z = r0.x + -r0.y; r0.y = cb0[8].w * r0.z + r0.y; r0.x = 1 + -r0.x; r1.xyz = v4.xyz + -v3.xyz; r0.xzw = r0.xxx * r1.xyz + v3.xyz; r0.xzw = -v2.xyz * r0.yyy + r0.xzw; r1.xyz = v2.xyz * r0.yyy; r0.xyz = cb0[8].www * r0.xzw + r1.xyz; r1.xyzw = cb1[19].xyzw * r0.yyyy; r1.xyzw = cb1[18].xyzw * r0.xxxx + r1.xyzw; r0.xyzw = cb1[20].xyzw * r0.zzzz + r1.xyzw; r0.xyzw = cb1[21].xyzw + r0.xyzw; r1.xyz = -cb2[0].xyz + r0.xyz; r1.x = dot(r1.xyz, r1.xyz); r2.xyz = -cb2[1].xyz + r0.xyz; r1.y = dot(r2.xyz, r2.xyz); r2.xyz = -cb2[2].xyz + r0.xyz; r1.z = dot(r2.xyz, r2.xyz); r2.xyz = -cb2[3].xyz + r0.xyz; r1.w = dot(r2.xyz, r2.xyz); r1.xyzw = cmp(r1.xyzw < cb2[4].xyzw); r2.xyz = r1.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); r1.xyzw = r1.xyzw ? float4(1,1,1,1) : 0; r2.xyz = r1.yzw + r2.xyz; r1.yzw = max(float3(0,0,0), r2.xyz); r2.xyz = cb2[13].xyz * r0.yyy; r2.xyz = cb2[12].xyz * r0.xxx + r2.xyz; r2.xyz = cb2[14].xyz * r0.zzz + r2.xyz; r2.xyz = cb2[15].xyz * r0.www + r2.xyz; r2.xyz = r2.xyz * r1.yyy; r3.xyz = cb2[9].xyz * r0.yyy; r3.xyz = cb2[8].xyz * r0.xxx + r3.xyz; r3.xyz = cb2[10].xyz * r0.zzz + r3.xyz; r3.xyz = cb2[11].xyz * r0.www + r3.xyz; r2.xyz = r3.xyz * r1.xxx + r2.xyz; r1.x = dot(r1.xyzw, float4(1,1,1,1)); r3.xyz = cb2[17].xyz * r0.yyy; r3.xyz = cb2[16].xyz * r0.xxx + r3.xyz; r3.xyz = cb2[18].xyz * r0.zzz + r3.xyz; r3.xyz = cb2[19].xyz * r0.www + r3.xyz; r2.xyz = r3.xyz * r1.zzz + r2.xyz; r3.xyz = cb2[21].xyz * r0.yyy; r3.xyz = cb2[20].xyz * r0.xxx + r3.xyz; r0.xyz = cb2[22].xyz * r0.zzz + r3.xyz; r0.xyz = cb2[23].xyz * r0.www + r0.xyz; r0.xyz = r0.xyz * r1.www + r2.xyz; r0.z = r0.z + -r1.x; r0.z = 1 + r0.z; r0.x = t1.SampleCmpLevelZero(s1_s, r0.xy, r0.z).x; r0.y = 1 + -cb2[24].x; o0.xyzw = r0.xxxx * r0.yyyy + cb2[24].xxxx; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float // TEXCOORD 0 xyzw 1 NONE float xy // TEXCOORD 1 xyz 2 NONE float xyz // TEXCOORD 2 xyz 3 NONE float xyz // TEXCOORD 3 xyz 4 NONE float xyz // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[9], immediateIndexed dcl_constantbuffer cb1[22], immediateIndexed dcl_constantbuffer cb2[25], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_comparison dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_input_ps linear v1.xy dcl_input_ps linear v2.xyz dcl_input_ps linear v3.xyz dcl_input_ps linear v4.xyz dcl_output o0.xyzw dcl_temps 4 sample r0.xyzw, v1.xyxx, t0.xyzw, s0 mad r0.y, cb0[7].x, r0.x, cb0[7].y div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y add r0.z, -r0.y, r0.x mad r0.y, cb0[8].w, r0.z, r0.y add r0.x, -r0.x, l(1.000000) add r1.xyz, -v3.xyzx, v4.xyzx mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw mul r1.xyz, r0.yyyy, v2.xyzx mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx mul r1.xyzw, r0.yyyy, cb1[19].xyzw mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw add r0.xyzw, r0.xyzw, cb1[21].xyzw add r1.xyz, r0.xyzx, -cb2[0].xyzx dp3 r1.x, r1.xyzx, r1.xyzx add r2.xyz, r0.xyzx, -cb2[1].xyzx dp3 r1.y, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[2].xyzx dp3 r1.z, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[3].xyzx dp3 r1.w, r2.xyzx, r2.xyzx lt r1.xyzw, r1.xyzw, cb2[4].xyzw movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) add r2.xyz, r2.xyzx, r1.yzwy max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) mul r2.xyz, r0.yyyy, cb2[13].xyzx mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx mul r2.xyz, r1.yyyy, r2.xyzx mul r3.xyz, r0.yyyy, cb2[9].xyzx mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) mul r3.xyz, r0.yyyy, cb2[17].xyzx mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx mul r3.xyz, r0.yyyy, cb2[21].xyzx mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx add r0.z, -r1.x, r0.z add r0.z, r0.z, l(1.000000) sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z add r0.y, -cb2[24].x, l(1.000000) mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] And this is vs (2917d6a2498642c6-vs_replace.txt) [code]// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017 cbuffer cb3 : register(b3) { float4 cb3[21]; } cbuffer cb2 : register(b2) { float4 cb2[4]; } cbuffer cb1 : register(b1) { float4 cb1[14]; } cbuffer cb0 : register(b0) { float4 cb0[6]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float4 v1 : TEXCOORD0, float3 v2 : TEXCOORD1, out float4 o0 : SV_POSITION0, out float4 o1 : TEXCOORD0, out float4 o2 : TEXCOORD1, out float4 o3 : TEXCOORD2, out float3 o4 : TEXCOORD3) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; r0.xyzw = cb2[1].xyzw * v0.yyyy; r0.xyzw = cb2[0].xyzw * v0.xxxx + r0.xyzw; r0.xyzw = cb2[2].xyzw * v0.zzzz + r0.xyzw; r0.xyzw = cb2[3].xyzw + r0.xyzw; r1.xyzw = cb3[18].xyzw * r0.yyyy; r1.xyzw = cb3[17].xyzw * r0.xxxx + r1.xyzw; r1.xyzw = cb3[19].xyzw * r0.zzzz + r1.xyzw; r0.xyzw = cb3[20].xyzw * r0.wwww + r1.xyzw; o0.xyzw = r0.xyzw; r0.y = cb0[5].x * r0.y; r1.xzw = float3(0.5,0.5,0.5) * r0.xwy; r0.yzw = cb1[11].xyz * r0.yyy; r0.xyz = cb1[10].xyz * r0.xxx + r0.yzw; o1.zw = r1.xw + r1.zz; o1.xy = v1.xy; o2.xyz = v2.xyz; r1.xyz = -cb1[12].xyz + r0.xyz; r0.xyz = cb1[12].xyz + r0.xyz; r0.xyz = cb1[13].xyz + r0.xyz; r1.xyz = cb1[13].xyz + r1.xyz; r1.w = -r1.z; o3.xyz = r1.xyw; r0.w = -r0.z; o4.xyz = r0.xyw; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyz // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 xyz 2 NONE float xyz // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float xyzw // TEXCOORD 0 xyzw 1 NONE float xyzw // TEXCOORD 1 xyz 2 NONE float xyz // TEXCOORD 2 xyz 3 NONE float xyz // TEXCOORD 3 xyz 4 NONE float xyz // vs_4_0 dcl_constantbuffer cb0[6], immediateIndexed dcl_constantbuffer cb1[14], immediateIndexed dcl_constantbuffer cb2[4], immediateIndexed dcl_constantbuffer cb3[21], immediateIndexed dcl_input v0.xyz dcl_input v1.xy dcl_input v2.xyz dcl_output_siv o0.xyzw, position dcl_output o1.xyzw dcl_output o2.xyz dcl_output o3.xyz dcl_output o4.xyz dcl_temps 2 mul r0.xyzw, v0.yyyy, cb2[1].xyzw mad r0.xyzw, cb2[0].xyzw, v0.xxxx, r0.xyzw mad r0.xyzw, cb2[2].xyzw, v0.zzzz, r0.xyzw add r0.xyzw, r0.xyzw, cb2[3].xyzw mul r1.xyzw, r0.yyyy, cb3[18].xyzw mad r1.xyzw, cb3[17].xyzw, r0.xxxx, r1.xyzw mad r1.xyzw, cb3[19].xyzw, r0.zzzz, r1.xyzw mad r0.xyzw, cb3[20].xyzw, r0.wwww, r1.xyzw mov o0.xyzw, r0.xyzw mul r0.y, r0.y, cb0[5].x mul r1.xzw, r0.xxwy, l(0.500000, 0.000000, 0.500000, 0.500000) mul r0.yzw, r0.yyyy, cb1[11].xxyz mad r0.xyz, cb1[10].xyzx, r0.xxxx, r0.yzwy add o1.zw, r1.zzzz, r1.xxxw mov o1.xy, v1.xyxx mov o2.xyz, v2.xyzx add r1.xyz, r0.xyzx, -cb1[12].xyzx add r0.xyz, r0.xyzx, cb1[12].xyzx add r0.xyz, r0.xyzx, cb1[13].xyzx add r1.xyz, r1.xyzx, cb1[13].xyzx mov r1.w, -r1.z mov o3.xyz, r1.xywx mov r0.w, -r0.z mov o4.xyz, r0.xywx ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code]
masterotaku said:Post the shadows pixel shader here. I'll try to help.

Hello!!!
This is ps (e0e92586fcf76b94-ps_replace.txt)
// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerComparisonState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb2 : register(b2)
{
float4 cb2[25];
}

cbuffer cb1 : register(b1)
{
float4 cb1[22];
}

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




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


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

r0.xyzw = t0.Sample(s0_s, v1.xy).xyzw;
r0.y = cb0[7].x * r0.x + cb0[7].y;
r0.y = 1 / r0.y;
r0.z = r0.x + -r0.y;
r0.y = cb0[8].w * r0.z + r0.y;
r0.x = 1 + -r0.x;
r1.xyz = v4.xyz + -v3.xyz;
r0.xzw = r0.xxx * r1.xyz + v3.xyz;
r0.xzw = -v2.xyz * r0.yyy + r0.xzw;
r1.xyz = v2.xyz * r0.yyy;
r0.xyz = cb0[8].www * r0.xzw + r1.xyz;
r1.xyzw = cb1[19].xyzw * r0.yyyy;
r1.xyzw = cb1[18].xyzw * r0.xxxx + r1.xyzw;
r0.xyzw = cb1[20].xyzw * r0.zzzz + r1.xyzw;
r0.xyzw = cb1[21].xyzw + r0.xyzw;
r1.xyz = -cb2[0].xyz + r0.xyz;
r1.x = dot(r1.xyz, r1.xyz);
r2.xyz = -cb2[1].xyz + r0.xyz;
r1.y = dot(r2.xyz, r2.xyz);
r2.xyz = -cb2[2].xyz + r0.xyz;
r1.z = dot(r2.xyz, r2.xyz);
r2.xyz = -cb2[3].xyz + r0.xyz;
r1.w = dot(r2.xyz, r2.xyz);
r1.xyzw = cmp(r1.xyzw < cb2[4].xyzw);
r2.xyz = r1.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0);
r1.xyzw = r1.xyzw ? float4(1,1,1,1) : 0;
r2.xyz = r1.yzw + r2.xyz;
r1.yzw = max(float3(0,0,0), r2.xyz);
r2.xyz = cb2[13].xyz * r0.yyy;
r2.xyz = cb2[12].xyz * r0.xxx + r2.xyz;
r2.xyz = cb2[14].xyz * r0.zzz + r2.xyz;
r2.xyz = cb2[15].xyz * r0.www + r2.xyz;
r2.xyz = r2.xyz * r1.yyy;
r3.xyz = cb2[9].xyz * r0.yyy;
r3.xyz = cb2[8].xyz * r0.xxx + r3.xyz;
r3.xyz = cb2[10].xyz * r0.zzz + r3.xyz;
r3.xyz = cb2[11].xyz * r0.www + r3.xyz;
r2.xyz = r3.xyz * r1.xxx + r2.xyz;
r1.x = dot(r1.xyzw, float4(1,1,1,1));
r3.xyz = cb2[17].xyz * r0.yyy;
r3.xyz = cb2[16].xyz * r0.xxx + r3.xyz;
r3.xyz = cb2[18].xyz * r0.zzz + r3.xyz;
r3.xyz = cb2[19].xyz * r0.www + r3.xyz;
r2.xyz = r3.xyz * r1.zzz + r2.xyz;
r3.xyz = cb2[21].xyz * r0.yyy;
r3.xyz = cb2[20].xyz * r0.xxx + r3.xyz;
r0.xyz = cb2[22].xyz * r0.zzz + r3.xyz;
r0.xyz = cb2[23].xyz * r0.www + r0.xyz;
r0.xyz = r0.xyz * r1.www + r2.xyz;
r0.z = r0.z + -r1.x;
r0.z = 1 + r0.z;
r0.x = t1.SampleCmpLevelZero(s1_s, r0.xy, r0.z).x;
r0.y = 1 + -cb2[24].x;
o0.xyzw = r0.xxxx * r0.yyyy + cb2[24].xxxx;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float xy
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[9], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_constantbuffer cb2[25], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_output o0.xyzw
dcl_temps 4
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
mad r0.y, cb0[7].x, r0.x, cb0[7].y
div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y
add r0.z, -r0.y, r0.x
mad r0.y, cb0[8].w, r0.z, r0.y
add r0.x, -r0.x, l(1.000000)
add r1.xyz, -v3.xyzx, v4.xyzx
mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz
mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw
mul r1.xyz, r0.yyyy, v2.xyzx
mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx
mul r1.xyzw, r0.yyyy, cb1[19].xyzw
mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw
mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw
add r0.xyzw, r0.xyzw, cb1[21].xyzw
add r1.xyz, r0.xyzx, -cb2[0].xyzx
dp3 r1.x, r1.xyzx, r1.xyzx
add r2.xyz, r0.xyzx, -cb2[1].xyzx
dp3 r1.y, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[2].xyzx
dp3 r1.z, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[3].xyzx
dp3 r1.w, r2.xyzx, r2.xyzx
lt r1.xyzw, r1.xyzw, cb2[4].xyzw
movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0)
and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
add r2.xyz, r2.xyzx, r1.yzwy
max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r2.xyz, r0.yyyy, cb2[13].xyzx
mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx
mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx
mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx
mul r2.xyz, r1.yyyy, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[9].xyzx
mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx
dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
mul r3.xyz, r0.yyyy, cb2[17].xyzx
mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[21].xyzx
mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx
mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx
mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx
mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx
add r0.z, -r1.x, r0.z
add r0.z, r0.z, l(1.000000)
sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z
add r0.y, -cb2[24].x, l(1.000000)
mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx
ret
// Approximately 0 instruction slots used

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


And this is vs (2917d6a2498642c6-vs_replace.txt)

// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017
cbuffer cb3 : register(b3)
{
float4 cb3[21];
}

cbuffer cb2 : register(b2)
{
float4 cb2[4];
}

cbuffer cb1 : register(b1)
{
float4 cb1[14];
}

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




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


void main(
float4 v0 : POSITION0,
float4 v1 : TEXCOORD0,
float3 v2 : TEXCOORD1,
out float4 o0 : SV_POSITION0,
out float4 o1 : TEXCOORD0,
out float4 o2 : TEXCOORD1,
out float4 o3 : TEXCOORD2,
out float3 o4 : TEXCOORD3)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyzw = cb2[1].xyzw * v0.yyyy;
r0.xyzw = cb2[0].xyzw * v0.xxxx + r0.xyzw;
r0.xyzw = cb2[2].xyzw * v0.zzzz + r0.xyzw;
r0.xyzw = cb2[3].xyzw + r0.xyzw;
r1.xyzw = cb3[18].xyzw * r0.yyyy;
r1.xyzw = cb3[17].xyzw * r0.xxxx + r1.xyzw;
r1.xyzw = cb3[19].xyzw * r0.zzzz + r1.xyzw;
r0.xyzw = cb3[20].xyzw * r0.wwww + r1.xyzw;
o0.xyzw = r0.xyzw;
r0.y = cb0[5].x * r0.y;
r1.xzw = float3(0.5,0.5,0.5) * r0.xwy;
r0.yzw = cb1[11].xyz * r0.yyy;
r0.xyz = cb1[10].xyz * r0.xxx + r0.yzw;
o1.zw = r1.xw + r1.zz;
o1.xy = v1.xy;
o2.xyz = v2.xyz;
r1.xyz = -cb1[12].xyz + r0.xyz;
r0.xyz = cb1[12].xyz + r0.xyz;
r0.xyz = cb1[13].xyz + r0.xyz;
r1.xyz = cb1[13].xyz + r1.xyz;
r1.w = -r1.z;
o3.xyz = r1.xyw;
r0.w = -r0.z;
o4.xyz = r0.xyw;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyz
// TEXCOORD 0 xy 1 NONE float xy
// TEXCOORD 1 xyz 2 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
//
vs_4_0
dcl_constantbuffer cb0[6], immediateIndexed
dcl_constantbuffer cb1[14], immediateIndexed
dcl_constantbuffer cb2[4], immediateIndexed
dcl_constantbuffer cb3[21], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xy
dcl_input v2.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyz
dcl_temps 2
mul r0.xyzw, v0.yyyy, cb2[1].xyzw
mad r0.xyzw, cb2[0].xyzw, v0.xxxx, r0.xyzw
mad r0.xyzw, cb2[2].xyzw, v0.zzzz, r0.xyzw
add r0.xyzw, r0.xyzw, cb2[3].xyzw
mul r1.xyzw, r0.yyyy, cb3[18].xyzw
mad r1.xyzw, cb3[17].xyzw, r0.xxxx, r1.xyzw
mad r1.xyzw, cb3[19].xyzw, r0.zzzz, r1.xyzw
mad r0.xyzw, cb3[20].xyzw, r0.wwww, r1.xyzw
mov o0.xyzw, r0.xyzw
mul r0.y, r0.y, cb0[5].x
mul r1.xzw, r0.xxwy, l(0.500000, 0.000000, 0.500000, 0.500000)
mul r0.yzw, r0.yyyy, cb1[11].xxyz
mad r0.xyz, cb1[10].xyzx, r0.xxxx, r0.yzwy
add o1.zw, r1.zzzz, r1.xxxw
mov o1.xy, v1.xyxx
mov o2.xyz, v2.xyzx
add r1.xyz, r0.xyzx, -cb1[12].xyzx
add r0.xyz, r0.xyzx, cb1[12].xyzx
add r0.xyz, r0.xyzx, cb1[13].xyzx
add r1.xyz, r1.xyzx, cb1[13].xyzx
mov r1.w, -r1.z
mov o3.xyz, r1.xywx
mov r0.w, -r0.z
mov o4.xyz, r0.xywx
ret
// Approximately 0 instruction slots used

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

#6
Posted 06/17/2017 05:53 PM   
[quote="General_Anesthetic"]did this used to be in 3d? as i remember playing it years ago when it was new (alpha) in virtually 3d ready state[/quote][url]http://helixmod.blogspot.com/2015/04/the-long-dark.html[/url]
General_Anesthetic said:did this used to be in 3d? as i remember playing it years ago when it was new (alpha) in virtually 3d ready state
http://helixmod.blogspot.com/2015/04/the-long-dark.html
#7
Posted 06/17/2017 08:00 PM   
Yep, I can fix those shadows, I think. But I have just arrived from a party (6:53AM here, lol), so you'll have to wait until I sleep. Clue: line 58 of the pixel shader (153 in ASM) . I think r0.x needs a correction there. Maybe using r0.z or r1.z as reference.
Yep, I can fix those shadows, I think. But I have just arrived from a party (6:53AM here, lol), so you'll have to wait until I sleep.

Clue: line 58 of the pixel shader (153 in ASM)
. I think r0.x needs a correction there. Maybe using r0.z or r1.z as reference.

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

#8
Posted 06/18/2017 04:56 AM   
OK, I'm back after sleeping for 3 hours and a half. Rename the file to just "e0e92586fcf76b94-ps.txt", because we are going to use ASM instead of HLSL. And here is the exact code you need (I deleted all HLSL code, because that's what it's needed). [code]// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float // TEXCOORD 0 xyzw 1 NONE float xy // TEXCOORD 1 xyz 2 NONE float xyz // TEXCOORD 2 xyz 3 NONE float xyz // TEXCOORD 3 xyz 4 NONE float xyz // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[9], immediateIndexed dcl_constantbuffer cb1[22], immediateIndexed dcl_constantbuffer cb2[25], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_comparison dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_input_ps linear v1.xy dcl_input_ps linear v2.xyz dcl_input_ps linear v3.xyz dcl_input_ps linear v4.xyz dcl_output o0.xyzw dcl_temps 4 dcl_resource_texture2d (float,float,float,float) t125 sample r0.xyzw, v1.xyxx, t0.xyzw, s0 mad r0.y, cb0[7].x, r0.x, cb0[7].y div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y add r0.z, -r0.y, r0.x mad r0.y, cb0[8].w, r0.z, r0.y add r0.x, -r0.x, l(1.000000) add r1.xyz, -v3.xyzx, v4.xyzx mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw mul r1.xyz, r0.yyyy, v2.xyzx mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw add r21.w, r0.z, -r21.y mad r0.x, r21.x, -r21.w, r0.x mul r1.xyzw, r0.yyyy, cb1[19].xyzw mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw add r0.xyzw, r0.xyzw, cb1[21].xyzw add r1.xyz, r0.xyzx, -cb2[0].xyzx dp3 r1.x, r1.xyzx, r1.xyzx add r2.xyz, r0.xyzx, -cb2[1].xyzx dp3 r1.y, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[2].xyzx dp3 r1.z, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[3].xyzx dp3 r1.w, r2.xyzx, r2.xyzx lt r1.xyzw, r1.xyzw, cb2[4].xyzw movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) add r2.xyz, r2.xyzx, r1.yzwy max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) mul r2.xyz, r0.yyyy, cb2[13].xyzx mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx mul r2.xyz, r1.yyyy, r2.xyzx mul r3.xyz, r0.yyyy, cb2[9].xyzx mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) mul r3.xyz, r0.yyyy, cb2[17].xyzx mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx mul r3.xyz, r0.yyyy, cb2[21].xyzx mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx add r0.z, -r1.x, r0.z add r0.z, r0.z, l(1.000000) sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z add r0.y, -cb2[24].x, l(1.000000) mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx ret // Approximately 0 instruction slots used[/code] In line 55, if "r0.z" doesnt fix the shadows, try "r0.w" or "r1.z" instead. But "r0.z" is my first guess.
OK, I'm back after sleeping for 3 hours and a half.

Rename the file to just "e0e92586fcf76b94-ps.txt", because we are going to use ASM instead of HLSL.

And here is the exact code you need (I deleted all HLSL code, because that's what it's needed).

// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float xy
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[9], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_constantbuffer cb2[25], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_output o0.xyzw
dcl_temps 4

dcl_resource_texture2d (float,float,float,float) t125

sample r0.xyzw, v1.xyxx, t0.xyzw, s0
mad r0.y, cb0[7].x, r0.x, cb0[7].y
div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y
add r0.z, -r0.y, r0.x
mad r0.y, cb0[8].w, r0.z, r0.y
add r0.x, -r0.x, l(1.000000)
add r1.xyz, -v3.xyzx, v4.xyzx
mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz
mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw
mul r1.xyz, r0.yyyy, v2.xyzx
mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
add r21.w, r0.z, -r21.y
mad r0.x, r21.x, -r21.w, r0.x

mul r1.xyzw, r0.yyyy, cb1[19].xyzw
mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw
mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw
add r0.xyzw, r0.xyzw, cb1[21].xyzw
add r1.xyz, r0.xyzx, -cb2[0].xyzx
dp3 r1.x, r1.xyzx, r1.xyzx
add r2.xyz, r0.xyzx, -cb2[1].xyzx
dp3 r1.y, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[2].xyzx
dp3 r1.z, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[3].xyzx
dp3 r1.w, r2.xyzx, r2.xyzx
lt r1.xyzw, r1.xyzw, cb2[4].xyzw
movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0)
and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
add r2.xyz, r2.xyzx, r1.yzwy
max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r2.xyz, r0.yyyy, cb2[13].xyzx
mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx
mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx
mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx
mul r2.xyz, r1.yyyy, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[9].xyzx
mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx
dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
mul r3.xyz, r0.yyyy, cb2[17].xyzx
mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[21].xyzx
mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx
mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx
mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx
mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx
add r0.z, -r1.x, r0.z
add r0.z, r0.z, l(1.000000)
sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z
add r0.y, -cb2[24].x, l(1.000000)
mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx
ret
// Approximately 0 instruction slots used



In line 55, if "r0.z" doesnt fix the shadows, try "r0.w" or "r1.z" instead. But "r0.z" is my first guess.

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

#9
Posted 06/18/2017 08:46 AM   
Hey!! good morning!!! I'm going to try it right now. Give me 5 minutes.
Hey!! good morning!!! I'm going to try it right now. Give me 5 minutes.

#10
Posted 06/18/2017 09:48 AM   
[quote="masterotaku"]OK, I'm back after sleeping for 3 hours and a half. Rename the file to just "e0e92586fcf76b94-ps.txt", because we are going to use ASM instead of HLSL. And here is the exact code you need (I deleted all HLSL code, because that's what it's needed). [code]// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float // TEXCOORD 0 xyzw 1 NONE float xy // TEXCOORD 1 xyz 2 NONE float xyz // TEXCOORD 2 xyz 3 NONE float xyz // TEXCOORD 3 xyz 4 NONE float xyz // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[9], immediateIndexed dcl_constantbuffer cb1[22], immediateIndexed dcl_constantbuffer cb2[25], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_comparison dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_input_ps linear v1.xy dcl_input_ps linear v2.xyz dcl_input_ps linear v3.xyz dcl_input_ps linear v4.xyz dcl_output o0.xyzw dcl_temps 4 dcl_resource_texture2d (float,float,float,float) t125 sample r0.xyzw, v1.xyxx, t0.xyzw, s0 mad r0.y, cb0[7].x, r0.x, cb0[7].y div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y add r0.z, -r0.y, r0.x mad r0.y, cb0[8].w, r0.z, r0.y add r0.x, -r0.x, l(1.000000) add r1.xyz, -v3.xyzx, v4.xyzx mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw mul r1.xyz, r0.yyyy, v2.xyzx mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw add r21.w, r0.z, -r21.y mad r0.x, r21.x, -r21.w, r0.x mul r1.xyzw, r0.yyyy, cb1[19].xyzw mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw add r0.xyzw, r0.xyzw, cb1[21].xyzw add r1.xyz, r0.xyzx, -cb2[0].xyzx dp3 r1.x, r1.xyzx, r1.xyzx add r2.xyz, r0.xyzx, -cb2[1].xyzx dp3 r1.y, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[2].xyzx dp3 r1.z, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[3].xyzx dp3 r1.w, r2.xyzx, r2.xyzx lt r1.xyzw, r1.xyzw, cb2[4].xyzw movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) add r2.xyz, r2.xyzx, r1.yzwy max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) mul r2.xyz, r0.yyyy, cb2[13].xyzx mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx mul r2.xyz, r1.yyyy, r2.xyzx mul r3.xyz, r0.yyyy, cb2[9].xyzx mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) mul r3.xyz, r0.yyyy, cb2[17].xyzx mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx mul r3.xyz, r0.yyyy, cb2[21].xyzx mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx add r0.z, -r1.x, r0.z add r0.z, r0.z, l(1.000000) sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z add r0.y, -cb2[24].x, l(1.000000) mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx ret // Approximately 0 instruction slots used[/code] In line 55, if "r0.z" doesnt fix the shadows, try "r0.w" or "r1.z" instead. But "r0.z" is my first guess.[/quote] Hi, with r0.z looks better but the shadows look like they are upper the floor. Here are the jpgs: [url]https://drive.google.com/open?id=0B7-C-G8Te2HbTWlTV3U5WjhraDA[/url]
masterotaku said:OK, I'm back after sleeping for 3 hours and a half.

Rename the file to just "e0e92586fcf76b94-ps.txt", because we are going to use ASM instead of HLSL.

And here is the exact code you need (I deleted all HLSL code, because that's what it's needed).

// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float xy
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[9], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_constantbuffer cb2[25], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_output o0.xyzw
dcl_temps 4

dcl_resource_texture2d (float,float,float,float) t125

sample r0.xyzw, v1.xyxx, t0.xyzw, s0
mad r0.y, cb0[7].x, r0.x, cb0[7].y
div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y
add r0.z, -r0.y, r0.x
mad r0.y, cb0[8].w, r0.z, r0.y
add r0.x, -r0.x, l(1.000000)
add r1.xyz, -v3.xyzx, v4.xyzx
mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz
mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw
mul r1.xyz, r0.yyyy, v2.xyzx
mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
add r21.w, r0.z, -r21.y
mad r0.x, r21.x, -r21.w, r0.x

mul r1.xyzw, r0.yyyy, cb1[19].xyzw
mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw
mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw
add r0.xyzw, r0.xyzw, cb1[21].xyzw
add r1.xyz, r0.xyzx, -cb2[0].xyzx
dp3 r1.x, r1.xyzx, r1.xyzx
add r2.xyz, r0.xyzx, -cb2[1].xyzx
dp3 r1.y, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[2].xyzx
dp3 r1.z, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[3].xyzx
dp3 r1.w, r2.xyzx, r2.xyzx
lt r1.xyzw, r1.xyzw, cb2[4].xyzw
movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0)
and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
add r2.xyz, r2.xyzx, r1.yzwy
max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r2.xyz, r0.yyyy, cb2[13].xyzx
mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx
mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx
mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx
mul r2.xyz, r1.yyyy, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[9].xyzx
mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx
dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
mul r3.xyz, r0.yyyy, cb2[17].xyzx
mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[21].xyzx
mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx
mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx
mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx
mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx
add r0.z, -r1.x, r0.z
add r0.z, r0.z, l(1.000000)
sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z
add r0.y, -cb2[24].x, l(1.000000)
mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx
ret
// Approximately 0 instruction slots used



In line 55, if "r0.z" doesnt fix the shadows, try "r0.w" or "r1.z" instead. But "r0.z" is my first guess.


Hi, with r0.z looks better but the shadows look like they are upper the floor.
Here are the jpgs:
https://drive.google.com/open?id=0B7-C-G8Te2HbTWlTV3U5WjhraDA

#11
Posted 06/18/2017 10:43 AM   
OK, almost there. r0.z seems the correct option (by default, shadows are at screen depth, right?), but I think you have to multiply "r21.w" by 2 or 0.5. So try this: [code] ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw add r21.w, r0.z, -r21.y mul r21.w, r21.w, l(2.000000) mad r0.x, r21.x, -r21.w, r0.x [/code] or [code] ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw add r21.w, r0.z, -r21.y mul r21.w, r21.w, l(0.500000) mad r0.x, r21.x, -r21.w, r0.x [/code] You know where. I hope I'm right.
OK, almost there. r0.z seems the correct option (by default, shadows are at screen depth, right?), but I think you have to multiply "r21.w" by 2 or 0.5. So try this:

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
add r21.w, r0.z, -r21.y
mul r21.w, r21.w, l(2.000000)
mad r0.x, r21.x, -r21.w, r0.x


or

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
add r21.w, r0.z, -r21.y
mul r21.w, r21.w, l(0.500000)
mad r0.x, r21.x, -r21.w, r0.x


You know where. I hope I'm right.

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

#12
Posted 06/18/2017 01:10 PM   
[quote="masterotaku"]OK, almost there. r0.z seems the correct option (by default, shadows are at screen depth, right?), but I think you have to multiply "r21.w" by 2 or 0.5. So try this: [code] ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw add r21.w, r0.z, -r21.y mul r21.w, r21.w, l(2.000000) mad r0.x, r21.x, -r21.w, r0.x [/code] or [code] ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw add r21.w, r0.z, -r21.y mul r21.w, r21.w, l(0.500000) mad r0.x, r21.x, -r21.w, r0.x [/code] You know where. I hope I'm right.[/quote] OOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHH YOU KNOW I LOVE YOU!!!!!! THIS CONSTANT WORKS PERFECT "(1.290000)" Now I'm going to try fix the rest of the shaders with this formula. Thanks a lot!!! ;) Screenshot: [url]https://drive.google.com/open?id=0B7-C-G8Te2Hbdm0wYkl5ek1EQkU[/url]
masterotaku said:OK, almost there. r0.z seems the correct option (by default, shadows are at screen depth, right?), but I think you have to multiply "r21.w" by 2 or 0.5. So try this:

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
add r21.w, r0.z, -r21.y
mul r21.w, r21.w, l(2.000000)
mad r0.x, r21.x, -r21.w, r0.x


or

ld_indexable(texture2d)(float,float,float,float) r21.xyzw, l(0, 0, 0, 0), t125.xyzw
add r21.w, r0.z, -r21.y
mul r21.w, r21.w, l(0.500000)
mad r0.x, r21.x, -r21.w, r0.x


You know where. I hope I'm right.


OOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHH YOU KNOW I LOVE YOU!!!!!!
THIS CONSTANT WORKS PERFECT "(1.290000)"

Now I'm going to try fix the rest of the shaders with this formula.

Thanks a lot!!! ;)

Screenshot:
https://drive.google.com/open?id=0B7-C-G8Te2Hbdm0wYkl5ek1EQkU

#13
Posted 06/18/2017 02:29 PM   
This is another shadow shader. This one is the shadow proyected from torch and laterns. Masterotaku could you fix this one? please ps shader: [code]// ---- Created with 3Dmigoto v1.2.61 on Sun Jun 18 17:48:17 2017 cbuffer cb1 : register(b1) { float4 cb1[6]; } cbuffer cb0 : register(b0) { float4 cb0[2]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float3 v0 : TEXCOORD0, float4 v1 : SV_POSITION0, float2 v2 : TEXCOORD1, float2 w2 : TEXCOORD2, float4 v3 : TEXCOORD3, float4 v4 : TEXCOORD4, float4 v5 : TEXCOORD5, out float4 o0 : SV_Target0) { float4 r0; uint4 bitmask, uiDest; float4 fDest; r0.x = dot(v0.xyz, v0.xyz); r0.x = sqrt(r0.x); r0.x = cb1[5].x + r0.x; o0.xyzw = cb0[1].wwww * r0.xxxx; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sun Jun 18 17:48:17 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // TEXCOORD 0 xyz 0 NONE float xyz // SV_POSITION 0 xyzw 1 POS float // TEXCOORD 1 xy 2 NONE float // TEXCOORD 2 zw 2 NONE float // TEXCOORD 3 xy 3 NONE float // TEXCOORD 4 xyzw 4 NONE float // TEXCOORD 5 xyzw 5 NONE float // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[2], immediateIndexed dcl_constantbuffer cb1[6], immediateIndexed dcl_input_ps linear v0.xyz dcl_output o0.xyzw dcl_temps 1 dp3 r0.x, v0.xyzx, v0.xyzx sqrt r0.x, r0.x add r0.x, r0.x, cb1[5].x mul o0.xyzw, r0.xxxx, cb0[1].wwww ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/[/code] vs shader [code]// ---- Created with 3Dmigoto v1.2.61 on Sun Jun 18 17:53:52 2017 cbuffer cb2 : register(b2) { float4 cb2[21]; } cbuffer cb1 : register(b1) { float4 cb1[4]; } cbuffer cb0 : register(b0) { float4 cb0[2]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float4 v1 : TEXCOORD0, float4 v2 : TEXCOORD1, float2 v3 : TEXCOORD2, out float3 o0 : TEXCOORD0, out float4 o1 : SV_POSITION0, out float2 o2 : TEXCOORD1, out float2 p2 : TEXCOORD2, out float4 o3 : TEXCOORD3, out float4 o4 : TEXCOORD4, out float4 o5 : TEXCOORD5) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; r0.xyzw = cb1[1].xyzw * v0.yyyy; r0.xyzw = cb1[0].xyzw * v0.xxxx + r0.xyzw; r0.xyzw = cb1[2].xyzw * v0.zzzz + r0.xyzw; r1.xyzw = cb1[3].xyzw * v0.wwww + r0.xyzw; r0.xyzw = cb1[3].xyzw + r0.xyzw; o0.xyz = -cb0[1].xyz + r1.xyz; o4.xyzw = r1.xyzw; r1.xyzw = cb2[18].xyzw * r0.yyyy; r1.xyzw = cb2[17].xyzw * r0.xxxx + r1.xyzw; r1.xyzw = cb2[19].xyzw * r0.zzzz + r1.xyzw; r0.xyzw = cb2[20].xyzw * r0.wwww + r1.xyzw; o1.xyzw = r0.xyzw; o5.xyzw = r0.xyzw; o2.xy = v1.xy; p2.xy = v2.xy; o3.xy = v3.xy; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sun Jun 18 17:53:52 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyzw // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 xy 2 NONE float xy // TEXCOORD 2 xy 3 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // TEXCOORD 0 xyz 0 NONE float xyz // SV_POSITION 0 xyzw 1 POS float xyzw // TEXCOORD 1 xy 2 NONE float xy // TEXCOORD 2 zw 2 NONE float zw // TEXCOORD 3 xy 3 NONE float xy // TEXCOORD 4 xyzw 4 NONE float xyzw // TEXCOORD 5 xyzw 5 NONE float xyzw // vs_4_0 dcl_constantbuffer cb0[2], immediateIndexed dcl_constantbuffer cb1[4], immediateIndexed dcl_constantbuffer cb2[21], immediateIndexed dcl_input v0.xyzw dcl_input v1.xy dcl_input v2.xy dcl_input v3.xy dcl_output o0.xyz dcl_output_siv o1.xyzw, position dcl_output o2.xy dcl_output o2.zw dcl_output o3.xy dcl_output o4.xyzw dcl_output o5.xyzw dcl_temps 2 mul r0.xyzw, v0.yyyy, cb1[1].xyzw mad r0.xyzw, cb1[0].xyzw, v0.xxxx, r0.xyzw mad r0.xyzw, cb1[2].xyzw, v0.zzzz, r0.xyzw mad r1.xyzw, cb1[3].xyzw, v0.wwww, r0.xyzw add r0.xyzw, r0.xyzw, cb1[3].xyzw add o0.xyz, r1.xyzx, -cb0[1].xyzx mov o4.xyzw, r1.xyzw mul r1.xyzw, r0.yyyy, cb2[18].xyzw mad r1.xyzw, cb2[17].xyzw, r0.xxxx, r1.xyzw mad r1.xyzw, cb2[19].xyzw, r0.zzzz, r1.xyzw mad r0.xyzw, cb2[20].xyzw, r0.wwww, r1.xyzw mov o1.xyzw, r0.xyzw mov o5.xyzw, r0.xyzw mov o2.xy, v1.xyxx mov o2.zw, v2.xxxy mov o3.xy, v3.xyxx ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/[/code]
This is another shadow shader. This one is the shadow proyected from torch and laterns. Masterotaku could you fix this one? please

ps shader:
// ---- Created with 3Dmigoto v1.2.61 on Sun Jun 18 17:48:17 2017
cbuffer cb1 : register(b1)
{
float4 cb1[6];
}

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




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


void main(
float3 v0 : TEXCOORD0,
float4 v1 : SV_POSITION0,
float2 v2 : TEXCOORD1,
float2 w2 : TEXCOORD2,
float4 v3 : TEXCOORD3,
float4 v4 : TEXCOORD4,
float4 v5 : TEXCOORD5,
out float4 o0 : SV_Target0)
{
float4 r0;
uint4 bitmask, uiDest;
float4 fDest;

r0.x = dot(v0.xyz, v0.xyz);
r0.x = sqrt(r0.x);
r0.x = cb1[5].x + r0.x;
o0.xyzw = cb0[1].wwww * r0.xxxx;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sun Jun 18 17:48:17 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xyz 0 NONE float xyz
// SV_POSITION 0 xyzw 1 POS float
// TEXCOORD 1 xy 2 NONE float
// TEXCOORD 2 zw 2 NONE float
// TEXCOORD 3 xy 3 NONE float
// TEXCOORD 4 xyzw 4 NONE float
// TEXCOORD 5 xyzw 5 NONE float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[2], immediateIndexed
dcl_constantbuffer cb1[6], immediateIndexed
dcl_input_ps linear v0.xyz
dcl_output o0.xyzw
dcl_temps 1
dp3 r0.x, v0.xyzx, v0.xyzx
sqrt r0.x, r0.x
add r0.x, r0.x, cb1[5].x
mul o0.xyzw, r0.xxxx, cb0[1].wwww
ret
// Approximately 0 instruction slots used

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


vs shader

// ---- Created with 3Dmigoto v1.2.61 on Sun Jun 18 17:53:52 2017
cbuffer cb2 : register(b2)
{
float4 cb2[21];
}

cbuffer cb1 : register(b1)
{
float4 cb1[4];
}

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




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


void main(
float4 v0 : POSITION0,
float4 v1 : TEXCOORD0,
float4 v2 : TEXCOORD1,
float2 v3 : TEXCOORD2,
out float3 o0 : TEXCOORD0,
out float4 o1 : SV_POSITION0,
out float2 o2 : TEXCOORD1,
out float2 p2 : TEXCOORD2,
out float4 o3 : TEXCOORD3,
out float4 o4 : TEXCOORD4,
out float4 o5 : TEXCOORD5)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyzw = cb1[1].xyzw * v0.yyyy;
r0.xyzw = cb1[0].xyzw * v0.xxxx + r0.xyzw;
r0.xyzw = cb1[2].xyzw * v0.zzzz + r0.xyzw;
r1.xyzw = cb1[3].xyzw * v0.wwww + r0.xyzw;
r0.xyzw = cb1[3].xyzw + r0.xyzw;
o0.xyz = -cb0[1].xyz + r1.xyz;
o4.xyzw = r1.xyzw;
r1.xyzw = cb2[18].xyzw * r0.yyyy;
r1.xyzw = cb2[17].xyzw * r0.xxxx + r1.xyzw;
r1.xyzw = cb2[19].xyzw * r0.zzzz + r1.xyzw;
r0.xyzw = cb2[20].xyzw * r0.wwww + r1.xyzw;
o1.xyzw = r0.xyzw;
o5.xyzw = r0.xyzw;
o2.xy = v1.xy;
p2.xy = v2.xy;
o3.xy = v3.xy;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sun Jun 18 17:53:52 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// TEXCOORD 0 xy 1 NONE float xy
// TEXCOORD 1 xy 2 NONE float xy
// TEXCOORD 2 xy 3 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xyz 0 NONE float xyz
// SV_POSITION 0 xyzw 1 POS float xyzw
// TEXCOORD 1 xy 2 NONE float xy
// TEXCOORD 2 zw 2 NONE float zw
// TEXCOORD 3 xy 3 NONE float xy
// TEXCOORD 4 xyzw 4 NONE float xyzw
// TEXCOORD 5 xyzw 5 NONE float xyzw
//
vs_4_0
dcl_constantbuffer cb0[2], immediateIndexed
dcl_constantbuffer cb1[4], immediateIndexed
dcl_constantbuffer cb2[21], immediateIndexed
dcl_input v0.xyzw
dcl_input v1.xy
dcl_input v2.xy
dcl_input v3.xy
dcl_output o0.xyz
dcl_output_siv o1.xyzw, position
dcl_output o2.xy
dcl_output o2.zw
dcl_output o3.xy
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_temps 2
mul r0.xyzw, v0.yyyy, cb1[1].xyzw
mad r0.xyzw, cb1[0].xyzw, v0.xxxx, r0.xyzw
mad r0.xyzw, cb1[2].xyzw, v0.zzzz, r0.xyzw
mad r1.xyzw, cb1[3].xyzw, v0.wwww, r0.xyzw
add r0.xyzw, r0.xyzw, cb1[3].xyzw
add o0.xyz, r1.xyzx, -cb0[1].xyzx
mov o4.xyzw, r1.xyzw
mul r1.xyzw, r0.yyyy, cb2[18].xyzw
mad r1.xyzw, cb2[17].xyzw, r0.xxxx, r1.xyzw
mad r1.xyzw, cb2[19].xyzw, r0.zzzz, r1.xyzw
mad r0.xyzw, cb2[20].xyzw, r0.wwww, r1.xyzw
mov o1.xyzw, r0.xyzw
mov o5.xyzw, r0.xyzw
mov o2.xy, v1.xyxx
mov o2.zw, v2.xxxy
mov o3.xy, v3.xyxx
ret
// Approximately 0 instruction slots used

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

#14
Posted 06/18/2017 03:53 PM   
STOP RIGHT THERE! I've noticed that the number you need is actually the FoV of the game (if it doesn't EVER change and it isn't user configurable, a static value should be fine). In the shaders fixed by the DarkStarSword Unity scripts, there are ways to calculate that. And I found something similar, so I'm going to try getting it 100% right. It's possible that this won't work, because I based it on an older Unity version. So back up your shaders and d3dx.ini first. First, you need "inverse_unity_mvp.hlsl" and "matrix.hlsl" from my Yooka-Laylee fix. Place them in the "ShaderFixes" folder. In "d3dx.ini" (yes, using the name of your vertex shader, thanks for posting it): [code] [ShaderOverrideDirectional53_9x] Hash = 2917d6a2498642c6 Resource_UnityPerCameraRare = vs-cb1 [/code] This will be "2917d6a2498642c6-vs_replace.txt": [code] // ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017 cbuffer cb3 : register(b3) { float4 cb3[21]; } cbuffer cb2 : register(b2) { float4 cb2[4]; } // UnityPerCameraRare contains the projection & inverse projection matrices // that we need to fix the shadows. The headers extracted from the asset files // show which constant buffer is UnityPerCameraRare, and then we just grab the // actual definition of the buffer from the Unity Cg source code, and replace // references to it as necessary. // cbuffer cb1 : register(b1) cbuffer UnityPerCameraRare : register(b1) { // float4 cb1[14]; uniform float4 unity_CameraWorldClipPlanes[6]; // Projection matrices of the camera. Note that this might be different from projection matrix // that is set right now, e.g. while rendering shadows the matrices below are still the projection // of original camera. row_major uniform float4x4 unity_CameraProjection; // cb1[7] - cb1[10] row_major uniform float4x4 unity_CameraInvProjection; // cb1[11] - cb1[14] } cbuffer cb0 : register(b0) { float4 cb0[6]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float4 v1 : TEXCOORD0, float3 v2 : TEXCOORD1, out float4 o0 : SV_POSITION0, out float4 o1 : TEXCOORD0, out float4 o2 : TEXCOORD1, out float4 o3 : TEXCOORD2, out float3 o4 : TEXCOORD3, out float fov : TEXCOORD4) // New output to pass FOV from inverse projection matrix to pixel shaders) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; r0.xyzw = cb2[1].xyzw * v0.yyyy; r0.xyzw = cb2[0].xyzw * v0.xxxx + r0.xyzw; r0.xyzw = cb2[2].xyzw * v0.zzzz + r0.xyzw; r0.xyzw = cb2[3].xyzw + r0.xyzw; r1.xyzw = cb3[18].xyzw * r0.yyyy; r1.xyzw = cb3[17].xyzw * r0.xxxx + r1.xyzw; r1.xyzw = cb3[19].xyzw * r0.zzzz + r1.xyzw; r0.xyzw = cb3[20].xyzw * r0.wwww + r1.xyzw; o0.xyzw = r0.xyzw; r0.y = cb0[5].x * r0.y; r1.xzw = float3(0.5,0.5,0.5) * r0.xwy; r0.yzw = unity_CameraInvProjection[1].xyz * r0.yyy; r0.xyz = unity_CameraInvProjection[0].xyz * r0.xxx + r0.yzw; o1.zw = r1.xw + r1.zz; o1.xy = v1.xy; o2.xyz = v2.xyz; r1.xyz = -unity_CameraInvProjection[2].xyz + r0.xyz; r0.xyz = unity_CameraInvProjection[2].xyz + r0.xyz; r0.xyz = unity_CameraInvProjection[3].xyz + r0.xyz; r1.xyz = unity_CameraInvProjection[3].xyz + r1.xyz; r1.w = -r1.z; o3.xyz = r1.xyw; r0.w = -r0.z; o4.xyz = r0.xyw; fov = unity_CameraInvProjection[0].x; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyz // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 xyz 2 NONE float xyz // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float xyzw // TEXCOORD 0 xyzw 1 NONE float xyzw // TEXCOORD 1 xyz 2 NONE float xyz // TEXCOORD 2 xyz 3 NONE float xyz // TEXCOORD 3 xyz 4 NONE float xyz // vs_4_0 dcl_constantbuffer cb0[6], immediateIndexed dcl_constantbuffer cb1[14], immediateIndexed dcl_constantbuffer cb2[4], immediateIndexed dcl_constantbuffer cb3[21], immediateIndexed dcl_input v0.xyz dcl_input v1.xy dcl_input v2.xyz dcl_output_siv o0.xyzw, position dcl_output o1.xyzw dcl_output o2.xyz dcl_output o3.xyz dcl_output o4.xyz dcl_temps 2 mul r0.xyzw, v0.yyyy, cb2[1].xyzw mad r0.xyzw, cb2[0].xyzw, v0.xxxx, r0.xyzw mad r0.xyzw, cb2[2].xyzw, v0.zzzz, r0.xyzw add r0.xyzw, r0.xyzw, cb2[3].xyzw mul r1.xyzw, r0.yyyy, cb3[18].xyzw mad r1.xyzw, cb3[17].xyzw, r0.xxxx, r1.xyzw mad r1.xyzw, cb3[19].xyzw, r0.zzzz, r1.xyzw mad r0.xyzw, cb3[20].xyzw, r0.wwww, r1.xyzw mov o0.xyzw, r0.xyzw mul r0.y, r0.y, cb0[5].x mul r1.xzw, r0.xxwy, l(0.500000, 0.000000, 0.500000, 0.500000) mul r0.yzw, r0.yyyy, cb1[11].xxyz mad r0.xyz, cb1[10].xyzx, r0.xxxx, r0.yzwy add o1.zw, r1.zzzz, r1.xxxw mov o1.xy, v1.xyxx mov o2.xyz, v2.xyzx add r1.xyz, r0.xyzx, -cb1[12].xyzx add r0.xyz, r0.xyzx, cb1[12].xyzx add r0.xyz, r0.xyzx, cb1[13].xyzx add r1.xyz, r1.xyzx, cb1[13].xyzx mov r1.w, -r1.z mov o3.xyz, r1.xywx mov r0.w, -r0.z mov o4.xyz, r0.xywx ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] And this "e0e92586fcf76b94-ps_replace.txt" (using HLSL again): [code] // ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 Texture2D<float4> t1 : register(t1); Texture2D<float4> t0 : register(t0); SamplerComparisonState s1_s : register(s1); SamplerState s0_s : register(s0); cbuffer cb2 : register(b2) { float4 cb2[25]; } cbuffer cb1 : register(b1) { float4 cb1[22]; } cbuffer cb0 : register(b0) { float4 cb0[9]; } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_POSITION0, float4 v1 : TEXCOORD0, float4 v2 : TEXCOORD1, float4 v3 : TEXCOORD2, float3 v4 : TEXCOORD3, float fov : TEXCOORD4, // New input from vertex shader with unity_CameraInvProjection[0].x; out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3; uint4 bitmask, uiDest; float4 fDest; r0.xyzw = t0.Sample(s0_s, v1.xy).xyzw; r0.y = cb0[7].x * r0.x + cb0[7].y; r0.y = 1 / r0.y; r0.z = r0.x + -r0.y; r0.y = cb0[8].w * r0.z + r0.y; r0.x = 1 + -r0.x; r1.xyz = v4.xyz + -v3.xyz; r0.xzw = r0.xxx * r1.xyz + v3.xyz; r0.xzw = -v2.xyz * r0.yyy + r0.xzw; r1.xyz = v2.xyz * r0.yyy; r0.xyz = cb0[8].www * r0.xzw + r1.xyz; float depth = r0.z; float4 stereo = StereoParams.Load(0); float separation = stereo.x; float convergence = stereo.y; r0.x -= separation * (depth - convergence) * fov; r1.xyzw = cb1[19].xyzw * r0.yyyy; r1.xyzw = cb1[18].xyzw * r0.xxxx + r1.xyzw; r0.xyzw = cb1[20].xyzw * r0.zzzz + r1.xyzw; r0.xyzw = cb1[21].xyzw + r0.xyzw; r1.xyz = -cb2[0].xyz + r0.xyz; r1.x = dot(r1.xyz, r1.xyz); r2.xyz = -cb2[1].xyz + r0.xyz; r1.y = dot(r2.xyz, r2.xyz); r2.xyz = -cb2[2].xyz + r0.xyz; r1.z = dot(r2.xyz, r2.xyz); r2.xyz = -cb2[3].xyz + r0.xyz; r1.w = dot(r2.xyz, r2.xyz); r1.xyzw = cmp(r1.xyzw < cb2[4].xyzw); r2.xyz = r1.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); r1.xyzw = r1.xyzw ? float4(1,1,1,1) : 0; r2.xyz = r1.yzw + r2.xyz; r1.yzw = max(float3(0,0,0), r2.xyz); r2.xyz = cb2[13].xyz * r0.yyy; r2.xyz = cb2[12].xyz * r0.xxx + r2.xyz; r2.xyz = cb2[14].xyz * r0.zzz + r2.xyz; r2.xyz = cb2[15].xyz * r0.www + r2.xyz; r2.xyz = r2.xyz * r1.yyy; r3.xyz = cb2[9].xyz * r0.yyy; r3.xyz = cb2[8].xyz * r0.xxx + r3.xyz; r3.xyz = cb2[10].xyz * r0.zzz + r3.xyz; r3.xyz = cb2[11].xyz * r0.www + r3.xyz; r2.xyz = r3.xyz * r1.xxx + r2.xyz; r1.x = dot(r1.xyzw, float4(1,1,1,1)); r3.xyz = cb2[17].xyz * r0.yyy; r3.xyz = cb2[16].xyz * r0.xxx + r3.xyz; r3.xyz = cb2[18].xyz * r0.zzz + r3.xyz; r3.xyz = cb2[19].xyz * r0.www + r3.xyz; r2.xyz = r3.xyz * r1.zzz + r2.xyz; r3.xyz = cb2[21].xyz * r0.yyy; r3.xyz = cb2[20].xyz * r0.xxx + r3.xyz; r0.xyz = cb2[22].xyz * r0.zzz + r3.xyz; r0.xyz = cb2[23].xyz * r0.www + r0.xyz; r0.xyz = r0.xyz * r1.www + r2.xyz; r0.z = r0.z + -r1.x; r0.z = 1 + r0.z; r0.x = t1.SampleCmpLevelZero(s1_s, r0.xy, r0.z).x; r0.y = 1 + -cb2[24].x; o0.xyzw = r0.xxxx * r0.yyyy + cb2[24].xxxx; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) D3D Shader Disassembler // // using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017 // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float // TEXCOORD 0 xyzw 1 NONE float xy // TEXCOORD 1 xyz 2 NONE float xyz // TEXCOORD 2 xyz 3 NONE float xyz // TEXCOORD 3 xyz 4 NONE float xyz // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_4_0 dcl_constantbuffer cb0[9], immediateIndexed dcl_constantbuffer cb1[22], immediateIndexed dcl_constantbuffer cb2[25], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_comparison dcl_resource_texture2d (float,float,float,float) t0 dcl_resource_texture2d (float,float,float,float) t1 dcl_input_ps linear v1.xy dcl_input_ps linear v2.xyz dcl_input_ps linear v3.xyz dcl_input_ps linear v4.xyz dcl_output o0.xyzw dcl_temps 4 sample r0.xyzw, v1.xyxx, t0.xyzw, s0 mad r0.y, cb0[7].x, r0.x, cb0[7].y div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y add r0.z, -r0.y, r0.x mad r0.y, cb0[8].w, r0.z, r0.y add r0.x, -r0.x, l(1.000000) add r1.xyz, -v3.xyzx, v4.xyzx mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw mul r1.xyz, r0.yyyy, v2.xyzx mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx mul r1.xyzw, r0.yyyy, cb1[19].xyzw mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw add r0.xyzw, r0.xyzw, cb1[21].xyzw add r1.xyz, r0.xyzx, -cb2[0].xyzx dp3 r1.x, r1.xyzx, r1.xyzx add r2.xyz, r0.xyzx, -cb2[1].xyzx dp3 r1.y, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[2].xyzx dp3 r1.z, r2.xyzx, r2.xyzx add r2.xyz, r0.xyzx, -cb2[3].xyzx dp3 r1.w, r2.xyzx, r2.xyzx lt r1.xyzw, r1.xyzw, cb2[4].xyzw movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) add r2.xyz, r2.xyzx, r1.yzwy max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) mul r2.xyz, r0.yyyy, cb2[13].xyzx mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx mul r2.xyz, r1.yyyy, r2.xyzx mul r3.xyz, r0.yyyy, cb2[9].xyzx mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) mul r3.xyz, r0.yyyy, cb2[17].xyzx mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx mul r3.xyz, r0.yyyy, cb2[21].xyzx mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx add r0.z, -r1.x, r0.z add r0.z, r0.z, l(1.000000) sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z add r0.y, -cb2[24].x, l(1.000000) mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx ret // Approximately 0 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] If it doesn't work, try going to the vertex shader and changing the axis "unity_CameraInvProjection" is using in the code. Instead of the "[1], [0], [2], [3]" order, change it to "[0], [3], [1], [2]". If it works, it should be 100% correct at all FoV values. EDIT: wow, I spent like half an hour posting this. Now I see your new post. I'll have to think about that one for a while.
STOP RIGHT THERE! I've noticed that the number you need is actually the FoV of the game (if it doesn't EVER change and it isn't user configurable, a static value should be fine). In the shaders fixed by the DarkStarSword Unity scripts, there are ways to calculate that. And I found something similar, so I'm going to try getting it 100% right. It's possible that this won't work, because I based it on an older Unity version. So back up your shaders and d3dx.ini first.

First, you need "inverse_unity_mvp.hlsl" and "matrix.hlsl" from my Yooka-Laylee fix. Place them in the "ShaderFixes" folder.

In "d3dx.ini" (yes, using the name of your vertex shader, thanks for posting it):
[ShaderOverrideDirectional53_9x]
Hash = 2917d6a2498642c6
Resource_UnityPerCameraRare = vs-cb1


This will be "2917d6a2498642c6-vs_replace.txt":

// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017
cbuffer cb3 : register(b3)
{
float4 cb3[21];
}

cbuffer cb2 : register(b2)
{
float4 cb2[4];
}

// UnityPerCameraRare contains the projection & inverse projection matrices
// that we need to fix the shadows. The headers extracted from the asset files
// show which constant buffer is UnityPerCameraRare, and then we just grab the
// actual definition of the buffer from the Unity Cg source code, and replace
// references to it as necessary.

// cbuffer cb1 : register(b1)
cbuffer UnityPerCameraRare : register(b1)
{
// float4 cb1[14];
uniform float4 unity_CameraWorldClipPlanes[6];

// Projection matrices of the camera. Note that this might be different from projection matrix
// that is set right now, e.g. while rendering shadows the matrices below are still the projection
// of original camera.
row_major uniform float4x4 unity_CameraProjection; // cb1[7] - cb1[10]
row_major uniform float4x4 unity_CameraInvProjection; // cb1[11] - cb1[14]
}

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




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


void main(
float4 v0 : POSITION0,
float4 v1 : TEXCOORD0,
float3 v2 : TEXCOORD1,
out float4 o0 : SV_POSITION0,
out float4 o1 : TEXCOORD0,
out float4 o2 : TEXCOORD1,
out float4 o3 : TEXCOORD2,
out float3 o4 : TEXCOORD3,
out float fov : TEXCOORD4) // New output to pass FOV from inverse projection matrix to pixel shaders)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyzw = cb2[1].xyzw * v0.yyyy;
r0.xyzw = cb2[0].xyzw * v0.xxxx + r0.xyzw;
r0.xyzw = cb2[2].xyzw * v0.zzzz + r0.xyzw;
r0.xyzw = cb2[3].xyzw + r0.xyzw;
r1.xyzw = cb3[18].xyzw * r0.yyyy;
r1.xyzw = cb3[17].xyzw * r0.xxxx + r1.xyzw;
r1.xyzw = cb3[19].xyzw * r0.zzzz + r1.xyzw;
r0.xyzw = cb3[20].xyzw * r0.wwww + r1.xyzw;
o0.xyzw = r0.xyzw;
r0.y = cb0[5].x * r0.y;
r1.xzw = float3(0.5,0.5,0.5) * r0.xwy;
r0.yzw = unity_CameraInvProjection[1].xyz * r0.yyy;
r0.xyz = unity_CameraInvProjection[0].xyz * r0.xxx + r0.yzw;
o1.zw = r1.xw + r1.zz;
o1.xy = v1.xy;
o2.xyz = v2.xyz;
r1.xyz = -unity_CameraInvProjection[2].xyz + r0.xyz;
r0.xyz = unity_CameraInvProjection[2].xyz + r0.xyz;
r0.xyz = unity_CameraInvProjection[3].xyz + r0.xyz;
r1.xyz = unity_CameraInvProjection[3].xyz + r1.xyz;
r1.w = -r1.z;
o3.xyz = r1.xyw;
r0.w = -r0.z;
o4.xyz = r0.xyw;

fov = unity_CameraInvProjection[0].x;

return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:16 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyz
// TEXCOORD 0 xy 1 NONE float xy
// TEXCOORD 1 xyz 2 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
//
vs_4_0
dcl_constantbuffer cb0[6], immediateIndexed
dcl_constantbuffer cb1[14], immediateIndexed
dcl_constantbuffer cb2[4], immediateIndexed
dcl_constantbuffer cb3[21], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xy
dcl_input v2.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyz
dcl_temps 2
mul r0.xyzw, v0.yyyy, cb2[1].xyzw
mad r0.xyzw, cb2[0].xyzw, v0.xxxx, r0.xyzw
mad r0.xyzw, cb2[2].xyzw, v0.zzzz, r0.xyzw
add r0.xyzw, r0.xyzw, cb2[3].xyzw
mul r1.xyzw, r0.yyyy, cb3[18].xyzw
mad r1.xyzw, cb3[17].xyzw, r0.xxxx, r1.xyzw
mad r1.xyzw, cb3[19].xyzw, r0.zzzz, r1.xyzw
mad r0.xyzw, cb3[20].xyzw, r0.wwww, r1.xyzw
mov o0.xyzw, r0.xyzw
mul r0.y, r0.y, cb0[5].x
mul r1.xzw, r0.xxwy, l(0.500000, 0.000000, 0.500000, 0.500000)
mul r0.yzw, r0.yyyy, cb1[11].xxyz
mad r0.xyz, cb1[10].xyzx, r0.xxxx, r0.yzwy
add o1.zw, r1.zzzz, r1.xxxw
mov o1.xy, v1.xyxx
mov o2.xyz, v2.xyzx
add r1.xyz, r0.xyzx, -cb1[12].xyzx
add r0.xyz, r0.xyzx, cb1[12].xyzx
add r0.xyz, r0.xyzx, cb1[13].xyzx
add r1.xyz, r1.xyzx, cb1[13].xyzx
mov r1.w, -r1.z
mov o3.xyz, r1.xywx
mov r0.w, -r0.z
mov o4.xyz, r0.xywx
ret
// Approximately 0 instruction slots used

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


And this "e0e92586fcf76b94-ps_replace.txt" (using HLSL again):

// ---- Created with 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerComparisonState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb2 : register(b2)
{
float4 cb2[25];
}

cbuffer cb1 : register(b1)
{
float4 cb1[22];
}

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




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


void main(
float4 v0 : SV_POSITION0,
float4 v1 : TEXCOORD0,
float4 v2 : TEXCOORD1,
float4 v3 : TEXCOORD2,
float3 v4 : TEXCOORD3,
float fov : TEXCOORD4, // New input from vertex shader with unity_CameraInvProjection[0].x;
out float4 o0 : SV_Target0)
{
float4 r0,r1,r2,r3;
uint4 bitmask, uiDest;
float4 fDest;

r0.xyzw = t0.Sample(s0_s, v1.xy).xyzw;
r0.y = cb0[7].x * r0.x + cb0[7].y;
r0.y = 1 / r0.y;
r0.z = r0.x + -r0.y;
r0.y = cb0[8].w * r0.z + r0.y;
r0.x = 1 + -r0.x;
r1.xyz = v4.xyz + -v3.xyz;
r0.xzw = r0.xxx * r1.xyz + v3.xyz;
r0.xzw = -v2.xyz * r0.yyy + r0.xzw;
r1.xyz = v2.xyz * r0.yyy;
r0.xyz = cb0[8].www * r0.xzw + r1.xyz;

float depth = r0.z;
float4 stereo = StereoParams.Load(0);
float separation = stereo.x; float convergence = stereo.y;
r0.x -= separation * (depth - convergence) * fov;

r1.xyzw = cb1[19].xyzw * r0.yyyy;
r1.xyzw = cb1[18].xyzw * r0.xxxx + r1.xyzw;
r0.xyzw = cb1[20].xyzw * r0.zzzz + r1.xyzw;
r0.xyzw = cb1[21].xyzw + r0.xyzw;
r1.xyz = -cb2[0].xyz + r0.xyz;
r1.x = dot(r1.xyz, r1.xyz);
r2.xyz = -cb2[1].xyz + r0.xyz;
r1.y = dot(r2.xyz, r2.xyz);
r2.xyz = -cb2[2].xyz + r0.xyz;
r1.z = dot(r2.xyz, r2.xyz);
r2.xyz = -cb2[3].xyz + r0.xyz;
r1.w = dot(r2.xyz, r2.xyz);
r1.xyzw = cmp(r1.xyzw < cb2[4].xyzw);
r2.xyz = r1.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0);
r1.xyzw = r1.xyzw ? float4(1,1,1,1) : 0;
r2.xyz = r1.yzw + r2.xyz;
r1.yzw = max(float3(0,0,0), r2.xyz);
r2.xyz = cb2[13].xyz * r0.yyy;
r2.xyz = cb2[12].xyz * r0.xxx + r2.xyz;
r2.xyz = cb2[14].xyz * r0.zzz + r2.xyz;
r2.xyz = cb2[15].xyz * r0.www + r2.xyz;
r2.xyz = r2.xyz * r1.yyy;
r3.xyz = cb2[9].xyz * r0.yyy;
r3.xyz = cb2[8].xyz * r0.xxx + r3.xyz;
r3.xyz = cb2[10].xyz * r0.zzz + r3.xyz;
r3.xyz = cb2[11].xyz * r0.www + r3.xyz;
r2.xyz = r3.xyz * r1.xxx + r2.xyz;
r1.x = dot(r1.xyzw, float4(1,1,1,1));
r3.xyz = cb2[17].xyz * r0.yyy;
r3.xyz = cb2[16].xyz * r0.xxx + r3.xyz;
r3.xyz = cb2[18].xyz * r0.zzz + r3.xyz;
r3.xyz = cb2[19].xyz * r0.www + r3.xyz;
r2.xyz = r3.xyz * r1.zzz + r2.xyz;
r3.xyz = cb2[21].xyz * r0.yyy;
r3.xyz = cb2[20].xyz * r0.xxx + r3.xyz;
r0.xyz = cb2[22].xyz * r0.zzz + r3.xyz;
r0.xyz = cb2[23].xyz * r0.www + r0.xyz;
r0.xyz = r0.xyz * r1.www + r2.xyz;
r0.z = r0.z + -r1.x;
r0.z = 1 + r0.z;
r0.x = t1.SampleCmpLevelZero(s1_s, r0.xy, r0.z).x;
r0.y = 1 + -cb2[24].x;
o0.xyzw = r0.xxxx * r0.yyyy + cb2[24].xxxx;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.61 on Sat Jun 17 19:46:58 2017
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float xy
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer cb0[9], immediateIndexed
dcl_constantbuffer cb1[22], immediateIndexed
dcl_constantbuffer cb2[25], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_comparison
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_output o0.xyzw
dcl_temps 4
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
mad r0.y, cb0[7].x, r0.x, cb0[7].y
div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y
add r0.z, -r0.y, r0.x
mad r0.y, cb0[8].w, r0.z, r0.y
add r0.x, -r0.x, l(1.000000)
add r1.xyz, -v3.xyzx, v4.xyzx
mad r0.xzw, r0.xxxx, r1.xxyz, v3.xxyz
mad r0.xzw, -v2.xxyz, r0.yyyy, r0.xxzw
mul r1.xyz, r0.yyyy, v2.xyzx
mad r0.xyz, cb0[8].wwww, r0.xzwx, r1.xyzx
mul r1.xyzw, r0.yyyy, cb1[19].xyzw
mad r1.xyzw, cb1[18].xyzw, r0.xxxx, r1.xyzw
mad r0.xyzw, cb1[20].xyzw, r0.zzzz, r1.xyzw
add r0.xyzw, r0.xyzw, cb1[21].xyzw
add r1.xyz, r0.xyzx, -cb2[0].xyzx
dp3 r1.x, r1.xyzx, r1.xyzx
add r2.xyz, r0.xyzx, -cb2[1].xyzx
dp3 r1.y, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[2].xyzx
dp3 r1.z, r2.xyzx, r2.xyzx
add r2.xyz, r0.xyzx, -cb2[3].xyzx
dp3 r1.w, r2.xyzx, r2.xyzx
lt r1.xyzw, r1.xyzw, cb2[4].xyzw
movc r2.xyz, r1.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0)
and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
add r2.xyz, r2.xyzx, r1.yzwy
max r1.yzw, r2.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r2.xyz, r0.yyyy, cb2[13].xyzx
mad r2.xyz, cb2[12].xyzx, r0.xxxx, r2.xyzx
mad r2.xyz, cb2[14].xyzx, r0.zzzz, r2.xyzx
mad r2.xyz, cb2[15].xyzx, r0.wwww, r2.xyzx
mul r2.xyz, r1.yyyy, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[9].xyzx
mad r3.xyz, cb2[8].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[10].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[11].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.xxxx, r2.xyzx
dp4 r1.x, r1.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
mul r3.xyz, r0.yyyy, cb2[17].xyzx
mad r3.xyz, cb2[16].xyzx, r0.xxxx, r3.xyzx
mad r3.xyz, cb2[18].xyzx, r0.zzzz, r3.xyzx
mad r3.xyz, cb2[19].xyzx, r0.wwww, r3.xyzx
mad r2.xyz, r3.xyzx, r1.zzzz, r2.xyzx
mul r3.xyz, r0.yyyy, cb2[21].xyzx
mad r3.xyz, cb2[20].xyzx, r0.xxxx, r3.xyzx
mad r0.xyz, cb2[22].xyzx, r0.zzzz, r3.xyzx
mad r0.xyz, cb2[23].xyzx, r0.wwww, r0.xyzx
mad r0.xyz, r0.xyzx, r1.wwww, r2.xyzx
add r0.z, -r1.x, r0.z
add r0.z, r0.z, l(1.000000)
sample_c_lz r0.x, r0.xyxx, t1.xxxx, s1, r0.z
add r0.y, -cb2[24].x, l(1.000000)
mad o0.xyzw, r0.xxxx, r0.yyyy, cb2[24].xxxx
ret
// Approximately 0 instruction slots used

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


If it doesn't work, try going to the vertex shader and changing the axis "unity_CameraInvProjection" is using in the code. Instead of the "[1], [0], [2], [3]" order, change it to "[0], [3], [1], [2]".

If it works, it should be 100% correct at all FoV values.



EDIT: wow, I spent like half an hour posting this. Now I see your new post. I'll have to think about that one for a while.

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

#15
Posted 06/18/2017 04:19 PM   
  1 / 3    
Scroll To Top