Dark Souls III - 3D vision
  8 / 26    
I fucking love this forum, lol. Goddamnit, you guys are properly amazing! Helifax.... HOLY SHIT DUDE!!
I fucking love this forum, lol. Goddamnit, you guys are properly amazing!

Helifax.... HOLY SHIT DUDE!!

Posted 04/17/2016 01:03 PM   
Amazing work Helifax!! :D These game companies and Nvidia should be putting you and all the other guys and girls on the payroll! Absolutely Frickin Splendid!!!!!!!! To U Sir I tip my hat, U R a Gentleman and a scholar.
Amazing work Helifax!! :D

These game companies and Nvidia should be putting you and all the other guys and girls on the payroll!

Absolutely Frickin Splendid!!!!!!!!

To U Sir I tip my hat, U R a Gentleman and a scholar.

Posted 04/17/2016 01:20 PM   
Thanks Helifax
Thanks Helifax

Gigabyte Z370 Gaming 7 32GB Ram i9-9900K GigaByte Aorus Extreme Gaming 2080TI (single) Game Blaster Z Windows 10 X64 build #17763.195 Define R6 Blackout Case Corsair H110i GTX Sandisk 1TB (OS) SanDisk 2TB SSD (Games) Seagate EXOs 8 and 12 TB drives Samsung UN46c7000 HD TV Samsung UN55HU9000 UHD TVCurrently using ACER PASSIVE EDID override on 3D TVs LG 55

Posted 04/17/2016 01:40 PM   
[quote="helifax"] I agree the incentive for me to fix the game is pretty low currently since I am really disappointed that: it doesn't work in Surround, I wasn't able to hack it to work in Surround, no Surround fix exists yet:( If this changes I will probably pick it up and continue fixing it:) I know for 90% of people here this is not important, but I can't drive myself to play games on a single screen when I am sitting on my Surround desktop (all I see are those 2 big sidescreens that are BLACK...lol) and as a matter of fact I played/play the game on my Laptop:)) Now, if anyone wants to step in and drive this fix, PLEASE DO SO!!! I will do all I can to help out;) [/quote] Hi Helifax thanks for your work, surround is essential for me too,a pity that can not fix it. I see that Hayden dont have the game...may be if we give it..may be the two will fix it. you talked to him? he is interested? Offtopic PD: Impressive work in Tomb Raider...thanks again..
helifax said: I agree the incentive for me to fix the game is pretty low currently since I am really disappointed that: it doesn't work in Surround, I wasn't able to hack it to work in Surround, no Surround fix exists yet:(
If this changes I will probably pick it up and continue fixing it:)
I know for 90% of people here this is not important, but I can't drive myself to play games on a single screen when I am sitting on my Surround desktop (all I see are those 2 big sidescreens that are BLACK...lol) and as a matter of fact I played/play the game on my Laptop:))
Now, if anyone wants to step in and drive this fix, PLEASE DO SO!!! I will do all I can to help out;)


Hi Helifax thanks for your work, surround is essential for me too,a pity that can not fix it. I see that Hayden dont have the game...may be if we give it..may be the two will fix it. you talked to him? he is interested?
Offtopic PD: Impressive work in Tomb Raider...thanks again..

i7 4970k@4.5Ghz, SLI GTX1080Ti Aorus Gigabyte Xtreme, 16GB G Skill 2400hrz, 3*PG258Q in 3D surround.

Posted 04/17/2016 04:44 PM   
Hi Helifax, thank you very much for your great work. The game looks now impressive in 3D and the performance is the best I have seen around. It's a real pity that it was such a lot of work and you are now demotivated to keep fixing it (lighting and shading keep being pretty problematic, for example in Irithyll). Seems to me you are pretty close to finish a perfect 3D fix. Hopefully you will finish it at some point. Thanks man.
Hi Helifax, thank you very much for your great work. The game looks now impressive in 3D and the performance is the best I have seen around. It's a real pity that it was such a lot of work and you are now demotivated to keep fixing it (lighting and shading keep being pretty problematic, for example in Irithyll).

Seems to me you are pretty close to finish a perfect 3D fix. Hopefully you will finish it at some point.

Thanks man.

Posted 04/18/2016 09:24 AM   
[quote="Rocquito"]Hi Helifax, thank you very much for your great work. The game looks now impressive in 3D and the performance is the best I have seen around. It's a real pity that it was such a lot of work and you are now demotivated to keep fixing it (lighting and shading keep being pretty problematic, for example in Irithyll). Seems to me you are pretty close to finish a perfect 3D fix. Hopefully you will finish it at some point. Thanks man.[/quote] Hi, I didn't get to Irithyll yet. When I get there and if things are terribly wrong I will try to fix it and update the current fix. I might pick up fixing the game more after I actually beat it. I started playing it and I can understand why people would want a perfect fix;) (I understand and want one too;) but every time I look at one screen...DAMN demotivating:))
Rocquito said:Hi Helifax, thank you very much for your great work. The game looks now impressive in 3D and the performance is the best I have seen around. It's a real pity that it was such a lot of work and you are now demotivated to keep fixing it (lighting and shading keep being pretty problematic, for example in Irithyll).

Seems to me you are pretty close to finish a perfect 3D fix. Hopefully you will finish it at some point.

Thanks man.


Hi,
I didn't get to Irithyll yet. When I get there and if things are terribly wrong I will try to fix it and update the current fix.

I might pick up fixing the game more after I actually beat it. I started playing it and I can understand why people would want a perfect fix;) (I understand and want one too;) but every time I look at one screen...DAMN demotivating:))

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


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

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

Posted 04/18/2016 09:30 AM   
Dark Souls is one of my favorite series. DS2 Sotfs looks amazing in 3D. Thanks again masterotaku. And thanks for working at DS3.
Dark Souls is one of my favorite series.
DS2 Sotfs looks amazing in 3D. Thanks again masterotaku.
And thanks for working at DS3.

Win 10, SSD
i7-6700k@4,5Ghz, 16GBRam, Gigabyte G1 GTX1080 oc
Asus ROG Swift PG278QR
Oculus Rift

Posted 04/18/2016 12:22 PM   
Apparently a Solution has been found for US Surround users :) [url]http://www.wsgf.org/forums/viewtopic.php?f=95&t=30954&p=165327#p165327[/url] I know the description is crap there but I think we can basically understand what we need to do;) If anyone has doubts or doesn't understand let me know and I'll post a detailed variant when I get home (also need to test it ^_^). So, it might look like I am going to pick up working on the fix soon:)
Apparently a Solution has been found for US Surround users :)

http://www.wsgf.org/forums/viewtopic.php?f=95&t=30954&p=165327#p165327
I know the description is crap there but I think we can basically understand what we need to do;)

If anyone has doubts or doesn't understand let me know and I'll post a detailed variant when I get home (also need to test it ^_^).
So, it might look like I am going to pick up working on the fix soon:)

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


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

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

Posted 04/18/2016 03:39 PM   
May the flames guide thee, Helifax!
May the flames guide thee, Helifax!

Posted 04/18/2016 04:46 PM   
Sooo I have this pixel shader that I think it is responsible for casting the shadows: [code] // ---- Created with 3Dmigoto v1.2.35 on Mon Apr 18 19:30:52 2016 cbuffer cbSceneParam : register(b8) { float4 FC_FarClipInfo : packoffset(c0); float4 FC_ScreenSize : packoffset(c1); float4 FC_DepthComputeParam : packoffset(c2); float4 SC_CameraPos : packoffset(c3); float4 VC_ClipPlane : packoffset(c4); float4x3 FC_MatrixView : packoffset(c5); float4x4 FC_MatrixInvViewProj : packoffset(c8); float4x4 FC_MatrixInvProj : packoffset(c12); float4x4 FC_MatrixProj : packoffset(c16); float4x4 FC_MatrixInvView : packoffset(c20); float4x4 VC_MatrixViewProj : packoffset(c24); float4 FC_ShadowMapParam : packoffset(c28); float4 FC_ShadowColor : packoffset(c29); float4 FC_ShadowDir : packoffset(c30); float4x4 VC_ShadowMapMatrix : packoffset(c31); float FC_ShadowDepthRate : packoffset(c35); float FC_ShadowDepthScale : packoffset(c35.y); float FC_ShadowKernelScale : packoffset(c35.z); float FC_ShadowRandTexInvScale : packoffset(c35.w); float FC_ShadowTexInvScaleX : packoffset(c36); float FC_ShadowTexInvScaleY : packoffset(c36.y); float FC_ShadowDepthOffsetScale : packoffset(c36.z); float4 FC_ShadowViewKernelScale : packoffset(c37); float4x4 FC_ProjSpaceToShadowMatrix[4] : packoffset(c38); float4 FC_CascadeSelectDist : packoffset(c54); float FC_FrustumNear : packoffset(c55); float FC_FrustumSliceScale : packoffset(c55.y); float FC_FrustumSliceBias : packoffset(c55.z); uint FC_LightTile_Width : packoffset(c56); uint FC_LightTile_NumCellX : packoffset(c56.y); float4 FC_CloudShadowParam0 : packoffset(c57); float4 FC_CloudShadowParam1 : packoffset(c58); float FC_ShadowScale0 : packoffset(c59); float FC_ShadowScale1 : packoffset(c59.y); } cbuffer cbLight : register(b5) { struct { float4 Vec_0; float4 Vec_1; float4 Vec_2; float4 Vec_3; float4 Col_0; float4 Col_1; float4 Col_2; float4 Col_3; float4 Spc_0; float4 Spc_1; float4 Spc_2; float4 Spc_3; float4 AmbientSH[3]; float4 AmbientReflection; uint4 bLocalLight; float4 FC_SsaoWeight; } FC_DirLight[2] : packoffset(c0); } cbuffer cbLightAccParam : register(b0) { float4x4 g_InvProjMatrix : packoffset(c0); float4x3 g_ViewMatrix : packoffset(c4); float4 g_ScreenSize : packoffset(c7); float4x4 g_CameraMatrix : packoffset(c8); float4 g_specPowerParam : packoffset(c12); float4x4 g_ProjMatrix : packoffset(c13); uint g_lightCount : packoffset(c17); bool g_visualizeLightCount : packoffset(c17.y); uint g_spotLightCount : packoffset(c17.z); uint g_lineLightCount : packoffset(c17.w); float g_frustumNear : packoffset(c18); float g_frustumFar : packoffset(c18.y); float g_frustumSliceScale : packoffset(c18.z); float g_frustumSliceBias : packoffset(c18.w); uint4 g_lightTileSize : packoffset(c19); } SamplerState SS_ClampPoint_s_s : register(s7); SamplerState SS_WrapLinear_s_s : register(s8); Texture2D<float4> g_LightPrepassAttrTexture : register(t0); Texture2D<float4> g_DepthTexture : register(t1); Texture2D<float4> g_GBuffer1Texture : register(t3); Texture2D<float4> g_GBuffer3Texture : register(t5); Texture2D<float4> g_ShadowTexture : register(t32); // 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, out float4 o0 : SV_TARGET0, out float4 o1 : SV_TARGET1) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; uint4 bitmask, uiDest; float4 fDest; r0.xyz = g_LightPrepassAttrTexture.Sample(SS_ClampPoint_s_s, v1.xy).xyz; r0.xyz = r0.xyz * float3(2,2,2) + float3(-1,-1,-1); r0.w = dot(r0.xyz, r0.xyz); r0.w = rsqrt(r0.w); r0.xyz = r0.xyz * r0.www; r1.z = g_DepthTexture.Sample(SS_ClampPoint_s_s, v1.xy).x; r1.xy = v2.xy; r1.w = 1; r2.x = dot(r1.xyzw, g_InvProjMatrix._m00_m10_m20_m30); r2.y = dot(r1.xyzw, g_InvProjMatrix._m01_m11_m21_m31); r2.z = dot(r1.xyzw, g_InvProjMatrix._m02_m12_m22_m32); r0.w = dot(r1.xyzw, g_InvProjMatrix._m03_m13_m23_m33); r1.xyz = r2.xyz / r0.www; // Here is strange since is using only Inv Proj and not InvViewProj... Hmm r1.w = 1; r2.x = dot(r1.xyzw, g_CameraMatrix._m00_m10_m20_m30); r2.y = dot(r1.xyzw, g_CameraMatrix._m01_m11_m21_m31); r2.z = dot(r1.xyzw, g_CameraMatrix._m02_m12_m22_m32); r1.xyzw = g_GBuffer3Texture.Sample(SS_ClampPoint_s_s, v1.xy).xyzw; r3.xyz = r1.xyz * r1.xyz; r4.xy = g_GBuffer1Texture.Sample(SS_ClampPoint_s_s, v1.xy).xy; r0.w = 255 * r1.w; r0.w = trunc(r0.w); r1.w = 13 * r4.x; r1.w = exp2(r1.w); r5.x = g_CameraMatrix._m30; r5.y = g_CameraMatrix._m31; r5.z = g_CameraMatrix._m32; r2.xyz = r5.xyz + -r2.xyz; r2.w = dot(r2.xyz, r2.xyz); r2.w = rsqrt(r2.w); r4.xzw = r2.xyz * r2.www; r5.xyz = g_ShadowTexture.Sample(SS_WrapLinear_s_s, v1.xy).xzw; r6.xyz = -FC_ShadowColor.xyz + float3(1,1,1); r7.xyz = float3(1,1,1) + -r6.xyz; r6.xyz = r5.zzz * r7.xyz + r6.xyz; r5.yzw = r6.xyz * r5.yyy; r0.w = (int)r0.w; r0.w = (int)r0.w * 18; r0.w = (int)r0.w; r3.w = -1 + r5.x; r0.w = (uint)r0.w; r0.w = (int)r0.w * 18; r6.xyzw = FC_DirLight[r0.w].FC_SsaoWeight.xyzw * r3.wwww + float4(1,1,1,1); r7.xyz = r6.xxx * r5.yzw; r7.xyz = FC_DirLight[r0.w].Col_0.xyz * r7.xyz; r8.xyz = FC_DirLight[r0.w].Col_1.xyz * r6.yyy; r9.x = dot(FC_DirLight[r0.w].Vec_0.xyz, r0.xyz); r9.y = dot(FC_DirLight[r0.w].Vec_1.xyz, r0.xyz); r9.zw = saturate(r9.xy); r1.xyz = -r1.xyz * r1.xyz + float3(1,1,1); r10.xyz = r9.zzz * r1.xyz; r11.xyz = r9.www * r1.xyz; r11.xyz = r11.xyz * r8.xyz; r7.xyz = r7.xyz * r10.xyz + r11.xyz; r3.w = cmp(0 < r4.y); if (r3.w != 0) { r3.w = 10 * r4.y; r10.xyz = FC_DirLight[r0.w].Col_0.xyz * r6.xxx; r4.y = saturate(dot(FC_DirLight[r0.w].Vec_0.xyz, -r4.xzw)); r5.x = dot(r4.xzw, r0.xyz); r5.x = 1 + r5.x; r5.x = max(0, r5.x); r5.x = 0.5 * r5.x; r4.y = log2(r4.y); r4.y = 32 * r4.y; r4.y = exp2(r4.y); r5.x = r5.x * r5.x; r4.y = r5.x * r4.y; r10.xyz = r10.xyz * r4.yyy; r4.y = saturate(dot(FC_DirLight[r0.w].Vec_1.xyz, -r4.xzw)); r4.y = log2(r4.y); r4.y = 32 * r4.y; r4.y = exp2(r4.y); r4.y = r4.y * r5.x; r8.xyz = r8.xyz * r4.yyy; r8.xyz = r8.xyz * r3.www; r8.xyz = r10.xyz * r3.www + r8.xyz; r7.xyz = r8.xyz + r7.xyz; } r5.xyz = FC_DirLight[r0.w].Spc_0.xyz * r5.yzw; r5.xyz = r5.xyz * r6.xxx; r8.xyz = FC_DirLight[r0.w].Spc_1.xyz * r6.yyy; r10.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_0.xyz; r3.w = dot(r10.xyz, r10.xyz); r3.w = rsqrt(r3.w); r10.xyz = r10.xyz * r3.www; r11.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_1.xyz; r3.w = dot(r11.xyz, r11.xyz); r3.w = rsqrt(r3.w); r11.xyz = r11.xyz * r3.www; r3.w = saturate(dot(r10.xyz, r0.xyz)); r4.y = saturate(dot(r11.xyz, r0.xyz)); r5.w = FC_DirLight[r0.w].Vec_0.w * r1.w; r6.x = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_0.w; r5.w = r5.w / r6.x; r6.x = max(1, r5.w); r5.w = FC_DirLight[r0.w].Vec_1.w * r1.w; r7.w = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_1.w; r5.w = r5.w / r7.w; r6.y = max(1, r5.w); r12.x = log2(r3.w); r12.y = log2(r4.y); r12.xy = r12.xy * r6.xy; r12.xy = exp2(r12.xy); r3.w = dot(r4.xzw, r0.xyz); r10.x = saturate(dot(r4.xzw, r10.xyz)); r10.y = saturate(dot(r4.xzw, r11.xyz)); r10.xy = float2(1,1) + -r10.xy; r10.zw = r10.xy * r10.xy; r10.zw = r10.zw * r10.zw; r10.xy = r10.xy * r10.zw; r10.xzw = r10.xxx * r1.xyz + r3.xyz; r11.xyz = r10.yyy * r1.xyz + r3.xyz; r9.xy = max(r9.xy, r3.ww); r9.xy = max(float2(9.99999975e-005,9.99999975e-005), r9.xy); r9.xy = r9.zw / r9.xy; r10.xyz = r10.xzw * r12.xxx; r9.xzw = r10.xyz * r9.xxx; r10.xyz = r11.xyz * r12.yyy; r10.xyz = r10.xyz * r9.yyy; r6.xy = r6.xy * float2(0.125,0.125) + float2(0.25,0.25); r5.xyz = r6.xxx * r5.xyz; r8.xyz = r6.yyy * r8.xyz; r8.xyz = r8.xyz * r10.xyz; r5.xyz = r5.xyz * r9.xzw + r8.xyz; if (FC_DirLight[r0.w].bLocalLight.x != 0) { r8.xyz = FC_DirLight[r0.w].Col_2.xyz * r6.zzz; r4.y = dot(FC_DirLight[r0.w].Vec_2.xyz, r0.xyz); r5.w = r4.y * 0.5 + 0.5; r5.w = r5.w * r5.w; r5.w = min(1, r5.w); r9.xyz = r5.www * r1.xyz; r7.xyz = r8.xyz * r9.xyz + r7.xyz; r6.xyz = FC_DirLight[r0.w].Spc_2.xyz * r6.zzz; r8.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_2.xyz; r5.w = dot(r8.xyz, r8.xyz); r5.w = rsqrt(r5.w); r8.xyz = r8.xyz * r5.www; r5.w = saturate(dot(r8.xyz, r0.xyz)); r7.w = FC_DirLight[r0.w].Vec_2.w * r1.w; r8.w = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_2.w; r7.w = r7.w / r8.w; r7.w = max(1, r7.w); r5.w = log2(r5.w); r5.w = r7.w * r5.w; r5.w = exp2(r5.w); r8.x = saturate(dot(r4.xzw, r8.xyz)); r8.x = 1 + -r8.x; r8.y = r8.x * r8.x; r8.y = r8.y * r8.y; r8.x = r8.x * r8.y; r8.xyz = r8.xxx * r1.xyz + r3.xyz; r8.w = saturate(r4.y); r4.y = max(r4.y, r3.w); r4.y = max(9.99999975e-005, r4.y); r4.y = r8.w / r4.y; r8.xyz = r8.xyz * r5.www; r8.xyz = r8.xyz * r4.yyy; r4.y = r7.w * 0.125 + 0.25; r6.xyz = r4.yyy * r6.xyz; r5.xyz = r6.xyz * r8.xyz + r5.xyz; } if (FC_DirLight[r0.w].bLocalLight.y != 0) { r6.xyz = FC_DirLight[r0.w].Col_3.xyz * r6.www; r4.y = dot(FC_DirLight[r0.w].Vec_3.xyz, r0.xyz); r5.w = r4.y * 0.5 + 0.5; r5.w = r5.w * r5.w; r5.w = min(1, r5.w); r8.xyz = r5.www * r1.xyz; r7.xyz = r6.xyz * r8.xyz + r7.xyz; r6.xyz = FC_DirLight[r0.w].Spc_3.xyz * r6.www; r2.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_3.xyz; r2.w = dot(r2.xyz, r2.xyz); r2.w = rsqrt(r2.w); r2.xyz = r2.xyz * r2.www; r0.x = saturate(dot(r2.xyz, r0.xyz)); r0.y = FC_DirLight[r0.w].Vec_3.w * r1.w; r0.z = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_3.w; r0.y = r0.y / r0.z; r0.y = max(1, r0.y); r0.x = log2(r0.x); r0.x = r0.x * r0.y; r0.x = exp2(r0.x); r0.z = saturate(dot(r4.xzw, r2.xyz)); r0.z = 1 + -r0.z; r0.w = r0.z * r0.z; r0.w = r0.w * r0.w; r0.z = r0.z * r0.w; r1.xyz = r0.zzz * r1.xyz + r3.xyz; r0.z = saturate(r4.y); r0.w = max(r4.y, r3.w); r0.w = max(9.99999975e-005, r0.w); r0.z = r0.z / r0.w; r1.xyz = r1.xyz * r0.xxx; r0.xzw = r1.xyz * r0.zzz; r0.y = r0.y * 0.125 + 0.25; r1.xyz = r0.yyy * r6.xyz; r5.xyz = r1.xyz * r0.xzw + r5.xyz; } o0.xyz = r7.xyz; o0.w = 1; o1.xyz = r5.xyz; o1.w = 1; return; } [/code] I added a comment where I tried to correct it but I am unsure I need to do it there as the ShadowMap is loaded further on... Any thoughts are highly appreciated;) Thanks in advance!
Sooo I have this pixel shader that I think it is responsible for casting the shadows:
// ---- Created with 3Dmigoto v1.2.35 on Mon Apr 18 19:30:52 2016

cbuffer cbSceneParam : register(b8)
{
float4 FC_FarClipInfo : packoffset(c0);
float4 FC_ScreenSize : packoffset(c1);
float4 FC_DepthComputeParam : packoffset(c2);
float4 SC_CameraPos : packoffset(c3);
float4 VC_ClipPlane : packoffset(c4);
float4x3 FC_MatrixView : packoffset(c5);
float4x4 FC_MatrixInvViewProj : packoffset(c8);
float4x4 FC_MatrixInvProj : packoffset(c12);
float4x4 FC_MatrixProj : packoffset(c16);
float4x4 FC_MatrixInvView : packoffset(c20);
float4x4 VC_MatrixViewProj : packoffset(c24);
float4 FC_ShadowMapParam : packoffset(c28);
float4 FC_ShadowColor : packoffset(c29);
float4 FC_ShadowDir : packoffset(c30);
float4x4 VC_ShadowMapMatrix : packoffset(c31);
float FC_ShadowDepthRate : packoffset(c35);
float FC_ShadowDepthScale : packoffset(c35.y);
float FC_ShadowKernelScale : packoffset(c35.z);
float FC_ShadowRandTexInvScale : packoffset(c35.w);
float FC_ShadowTexInvScaleX : packoffset(c36);
float FC_ShadowTexInvScaleY : packoffset(c36.y);
float FC_ShadowDepthOffsetScale : packoffset(c36.z);
float4 FC_ShadowViewKernelScale : packoffset(c37);
float4x4 FC_ProjSpaceToShadowMatrix[4] : packoffset(c38);
float4 FC_CascadeSelectDist : packoffset(c54);
float FC_FrustumNear : packoffset(c55);
float FC_FrustumSliceScale : packoffset(c55.y);
float FC_FrustumSliceBias : packoffset(c55.z);
uint FC_LightTile_Width : packoffset(c56);
uint FC_LightTile_NumCellX : packoffset(c56.y);
float4 FC_CloudShadowParam0 : packoffset(c57);
float4 FC_CloudShadowParam1 : packoffset(c58);
float FC_ShadowScale0 : packoffset(c59);
float FC_ShadowScale1 : packoffset(c59.y);
}

cbuffer cbLight : register(b5)
{

struct
{
float4 Vec_0;
float4 Vec_1;
float4 Vec_2;
float4 Vec_3;
float4 Col_0;
float4 Col_1;
float4 Col_2;
float4 Col_3;
float4 Spc_0;
float4 Spc_1;
float4 Spc_2;
float4 Spc_3;
float4 AmbientSH[3];
float4 AmbientReflection;
uint4 bLocalLight;
float4 FC_SsaoWeight;
} FC_DirLight[2] : packoffset(c0);

}

cbuffer cbLightAccParam : register(b0)
{
float4x4 g_InvProjMatrix : packoffset(c0);
float4x3 g_ViewMatrix : packoffset(c4);
float4 g_ScreenSize : packoffset(c7);
float4x4 g_CameraMatrix : packoffset(c8);
float4 g_specPowerParam : packoffset(c12);
float4x4 g_ProjMatrix : packoffset(c13);
uint g_lightCount : packoffset(c17);
bool g_visualizeLightCount : packoffset(c17.y);
uint g_spotLightCount : packoffset(c17.z);
uint g_lineLightCount : packoffset(c17.w);
float g_frustumNear : packoffset(c18);
float g_frustumFar : packoffset(c18.y);
float g_frustumSliceScale : packoffset(c18.z);
float g_frustumSliceBias : packoffset(c18.w);
uint4 g_lightTileSize : packoffset(c19);
}

SamplerState SS_ClampPoint_s_s : register(s7);
SamplerState SS_WrapLinear_s_s : register(s8);
Texture2D<float4> g_LightPrepassAttrTexture : register(t0);
Texture2D<float4> g_DepthTexture : register(t1);
Texture2D<float4> g_GBuffer1Texture : register(t3);
Texture2D<float4> g_GBuffer3Texture : register(t5);
Texture2D<float4> g_ShadowTexture : register(t32);


// 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,
out float4 o0 : SV_TARGET0,
out float4 o1 : SV_TARGET1)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12;
uint4 bitmask, uiDest;
float4 fDest;




r0.xyz = g_LightPrepassAttrTexture.Sample(SS_ClampPoint_s_s, v1.xy).xyz;
r0.xyz = r0.xyz * float3(2,2,2) + float3(-1,-1,-1);
r0.w = dot(r0.xyz, r0.xyz);
r0.w = rsqrt(r0.w);
r0.xyz = r0.xyz * r0.www;
r1.z = g_DepthTexture.Sample(SS_ClampPoint_s_s, v1.xy).x;
r1.xy = v2.xy;
r1.w = 1;

r2.x = dot(r1.xyzw, g_InvProjMatrix._m00_m10_m20_m30);
r2.y = dot(r1.xyzw, g_InvProjMatrix._m01_m11_m21_m31);
r2.z = dot(r1.xyzw, g_InvProjMatrix._m02_m12_m22_m32);
r0.w = dot(r1.xyzw, g_InvProjMatrix._m03_m13_m23_m33);
r1.xyz = r2.xyz / r0.www;

// Here is strange since is using only Inv Proj and not InvViewProj... Hmm

r1.w = 1;
r2.x = dot(r1.xyzw, g_CameraMatrix._m00_m10_m20_m30);
r2.y = dot(r1.xyzw, g_CameraMatrix._m01_m11_m21_m31);
r2.z = dot(r1.xyzw, g_CameraMatrix._m02_m12_m22_m32);
r1.xyzw = g_GBuffer3Texture.Sample(SS_ClampPoint_s_s, v1.xy).xyzw;
r3.xyz = r1.xyz * r1.xyz;
r4.xy = g_GBuffer1Texture.Sample(SS_ClampPoint_s_s, v1.xy).xy;
r0.w = 255 * r1.w;
r0.w = trunc(r0.w);
r1.w = 13 * r4.x;
r1.w = exp2(r1.w);
r5.x = g_CameraMatrix._m30;
r5.y = g_CameraMatrix._m31;
r5.z = g_CameraMatrix._m32;
r2.xyz = r5.xyz + -r2.xyz;
r2.w = dot(r2.xyz, r2.xyz);
r2.w = rsqrt(r2.w);
r4.xzw = r2.xyz * r2.www;
r5.xyz = g_ShadowTexture.Sample(SS_WrapLinear_s_s, v1.xy).xzw;
r6.xyz = -FC_ShadowColor.xyz + float3(1,1,1);
r7.xyz = float3(1,1,1) + -r6.xyz;
r6.xyz = r5.zzz * r7.xyz + r6.xyz;
r5.yzw = r6.xyz * r5.yyy;
r0.w = (int)r0.w;
r0.w = (int)r0.w * 18;
r0.w = (int)r0.w;
r3.w = -1 + r5.x;
r0.w = (uint)r0.w;
r0.w = (int)r0.w * 18;
r6.xyzw = FC_DirLight[r0.w].FC_SsaoWeight.xyzw * r3.wwww + float4(1,1,1,1);
r7.xyz = r6.xxx * r5.yzw;
r7.xyz = FC_DirLight[r0.w].Col_0.xyz * r7.xyz;
r8.xyz = FC_DirLight[r0.w].Col_1.xyz * r6.yyy;
r9.x = dot(FC_DirLight[r0.w].Vec_0.xyz, r0.xyz);
r9.y = dot(FC_DirLight[r0.w].Vec_1.xyz, r0.xyz);
r9.zw = saturate(r9.xy);
r1.xyz = -r1.xyz * r1.xyz + float3(1,1,1);
r10.xyz = r9.zzz * r1.xyz;
r11.xyz = r9.www * r1.xyz;
r11.xyz = r11.xyz * r8.xyz;
r7.xyz = r7.xyz * r10.xyz + r11.xyz;
r3.w = cmp(0 < r4.y);
if (r3.w != 0) {
r3.w = 10 * r4.y;
r10.xyz = FC_DirLight[r0.w].Col_0.xyz * r6.xxx;
r4.y = saturate(dot(FC_DirLight[r0.w].Vec_0.xyz, -r4.xzw));
r5.x = dot(r4.xzw, r0.xyz);
r5.x = 1 + r5.x;
r5.x = max(0, r5.x);
r5.x = 0.5 * r5.x;
r4.y = log2(r4.y);
r4.y = 32 * r4.y;
r4.y = exp2(r4.y);
r5.x = r5.x * r5.x;
r4.y = r5.x * r4.y;
r10.xyz = r10.xyz * r4.yyy;
r4.y = saturate(dot(FC_DirLight[r0.w].Vec_1.xyz, -r4.xzw));
r4.y = log2(r4.y);
r4.y = 32 * r4.y;
r4.y = exp2(r4.y);
r4.y = r4.y * r5.x;
r8.xyz = r8.xyz * r4.yyy;
r8.xyz = r8.xyz * r3.www;
r8.xyz = r10.xyz * r3.www + r8.xyz;
r7.xyz = r8.xyz + r7.xyz;
}
r5.xyz = FC_DirLight[r0.w].Spc_0.xyz * r5.yzw;
r5.xyz = r5.xyz * r6.xxx;
r8.xyz = FC_DirLight[r0.w].Spc_1.xyz * r6.yyy;
r10.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_0.xyz;
r3.w = dot(r10.xyz, r10.xyz);
r3.w = rsqrt(r3.w);
r10.xyz = r10.xyz * r3.www;
r11.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_1.xyz;
r3.w = dot(r11.xyz, r11.xyz);
r3.w = rsqrt(r3.w);
r11.xyz = r11.xyz * r3.www;
r3.w = saturate(dot(r10.xyz, r0.xyz));
r4.y = saturate(dot(r11.xyz, r0.xyz));
r5.w = FC_DirLight[r0.w].Vec_0.w * r1.w;
r6.x = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_0.w;
r5.w = r5.w / r6.x;
r6.x = max(1, r5.w);
r5.w = FC_DirLight[r0.w].Vec_1.w * r1.w;
r7.w = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_1.w;
r5.w = r5.w / r7.w;
r6.y = max(1, r5.w);
r12.x = log2(r3.w);
r12.y = log2(r4.y);
r12.xy = r12.xy * r6.xy;
r12.xy = exp2(r12.xy);
r3.w = dot(r4.xzw, r0.xyz);
r10.x = saturate(dot(r4.xzw, r10.xyz));
r10.y = saturate(dot(r4.xzw, r11.xyz));
r10.xy = float2(1,1) + -r10.xy;
r10.zw = r10.xy * r10.xy;
r10.zw = r10.zw * r10.zw;
r10.xy = r10.xy * r10.zw;
r10.xzw = r10.xxx * r1.xyz + r3.xyz;
r11.xyz = r10.yyy * r1.xyz + r3.xyz;
r9.xy = max(r9.xy, r3.ww);
r9.xy = max(float2(9.99999975e-005,9.99999975e-005), r9.xy);
r9.xy = r9.zw / r9.xy;
r10.xyz = r10.xzw * r12.xxx;
r9.xzw = r10.xyz * r9.xxx;
r10.xyz = r11.xyz * r12.yyy;
r10.xyz = r10.xyz * r9.yyy;
r6.xy = r6.xy * float2(0.125,0.125) + float2(0.25,0.25);
r5.xyz = r6.xxx * r5.xyz;
r8.xyz = r6.yyy * r8.xyz;
r8.xyz = r8.xyz * r10.xyz;
r5.xyz = r5.xyz * r9.xzw + r8.xyz;
if (FC_DirLight[r0.w].bLocalLight.x != 0) {
r8.xyz = FC_DirLight[r0.w].Col_2.xyz * r6.zzz;
r4.y = dot(FC_DirLight[r0.w].Vec_2.xyz, r0.xyz);
r5.w = r4.y * 0.5 + 0.5;
r5.w = r5.w * r5.w;
r5.w = min(1, r5.w);
r9.xyz = r5.www * r1.xyz;
r7.xyz = r8.xyz * r9.xyz + r7.xyz;
r6.xyz = FC_DirLight[r0.w].Spc_2.xyz * r6.zzz;
r8.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_2.xyz;
r5.w = dot(r8.xyz, r8.xyz);
r5.w = rsqrt(r5.w);
r8.xyz = r8.xyz * r5.www;
r5.w = saturate(dot(r8.xyz, r0.xyz));
r7.w = FC_DirLight[r0.w].Vec_2.w * r1.w;
r8.w = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_2.w;
r7.w = r7.w / r8.w;
r7.w = max(1, r7.w);
r5.w = log2(r5.w);
r5.w = r7.w * r5.w;
r5.w = exp2(r5.w);
r8.x = saturate(dot(r4.xzw, r8.xyz));
r8.x = 1 + -r8.x;
r8.y = r8.x * r8.x;
r8.y = r8.y * r8.y;
r8.x = r8.x * r8.y;
r8.xyz = r8.xxx * r1.xyz + r3.xyz;
r8.w = saturate(r4.y);
r4.y = max(r4.y, r3.w);
r4.y = max(9.99999975e-005, r4.y);
r4.y = r8.w / r4.y;
r8.xyz = r8.xyz * r5.www;
r8.xyz = r8.xyz * r4.yyy;
r4.y = r7.w * 0.125 + 0.25;
r6.xyz = r4.yyy * r6.xyz;
r5.xyz = r6.xyz * r8.xyz + r5.xyz;
}
if (FC_DirLight[r0.w].bLocalLight.y != 0) {
r6.xyz = FC_DirLight[r0.w].Col_3.xyz * r6.www;
r4.y = dot(FC_DirLight[r0.w].Vec_3.xyz, r0.xyz);
r5.w = r4.y * 0.5 + 0.5;
r5.w = r5.w * r5.w;
r5.w = min(1, r5.w);
r8.xyz = r5.www * r1.xyz;
r7.xyz = r6.xyz * r8.xyz + r7.xyz;
r6.xyz = FC_DirLight[r0.w].Spc_3.xyz * r6.www;
r2.xyz = r2.xyz * r2.www + FC_DirLight[r0.w].Vec_3.xyz;
r2.w = dot(r2.xyz, r2.xyz);
r2.w = rsqrt(r2.w);
r2.xyz = r2.xyz * r2.www;
r0.x = saturate(dot(r2.xyz, r0.xyz));
r0.y = FC_DirLight[r0.w].Vec_3.w * r1.w;
r0.z = r1.w * 0.00999999978 + FC_DirLight[r0.w].Vec_3.w;
r0.y = r0.y / r0.z;
r0.y = max(1, r0.y);
r0.x = log2(r0.x);
r0.x = r0.x * r0.y;
r0.x = exp2(r0.x);
r0.z = saturate(dot(r4.xzw, r2.xyz));
r0.z = 1 + -r0.z;
r0.w = r0.z * r0.z;
r0.w = r0.w * r0.w;
r0.z = r0.z * r0.w;
r1.xyz = r0.zzz * r1.xyz + r3.xyz;
r0.z = saturate(r4.y);
r0.w = max(r4.y, r3.w);
r0.w = max(9.99999975e-005, r0.w);
r0.z = r0.z / r0.w;
r1.xyz = r1.xyz * r0.xxx;
r0.xzw = r1.xyz * r0.zzz;
r0.y = r0.y * 0.125 + 0.25;
r1.xyz = r0.yyy * r6.xyz;
r5.xyz = r1.xyz * r0.xzw + r5.xyz;
}
o0.xyz = r7.xyz;
o0.w = 1;
o1.xyz = r5.xyz;
o1.w = 1;
return;
}


I added a comment where I tried to correct it but I am unsure I need to do it there as the ShadowMap is loaded further on...

Any thoughts are highly appreciated;)
Thanks in advance!

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


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

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

Posted 04/18/2016 06:59 PM   
Excellent, keep it up. Souls is my fav series but I've always managed to be patient enough to wait for the fixes.
Excellent, keep it up. Souls is my fav series but I've always managed to be patient enough to wait for the fixes.

Posted 04/18/2016 08:25 PM   
[quote="helifax"] Any thoughts are highly appreciated;) Thanks in advance![/quote] Try doing the fix before line 123. It's very similar to the shadows pixel shader of DS2:SOTFS. This is the DS2 pixel shader (comparing the two shaders may help you): [code]//Shadows PS. cbuffer cbBase : register(b0) { float4 FC_DifColMul : packoffset(c0); float FC_GlobalTime : packoffset(c1); row_major float3x4 FC_MatrixViewT : packoffset(c2); float4 FC_FarClipInfo : packoffset(c5); float4 FC_ShadowMapParam : packoffset(c6); float4 FC_ShadowColor : packoffset(c7); float4 FC_ScreenSize : packoffset(c8); float4 FC_FinalColorMult : packoffset(c9); } cbuffer cbScreenSpaceShadow : register(b6) { row_major float4x4 g_InvProjMatrixT : packoffset(c0); row_major float4x4 g_ProjSpaceToShadowMatrixT[4] : packoffset(c4); float4 g_CascadeSelectDist : packoffset(c20); float4 g_vDepthComputeParam : packoffset(c21); float4 g_avSampleOffsets[16] : packoffset(c22); } SamplerState g_DepthMapSampler_sampler_s : register(s1); SamplerState g_SSAOMap_sampler_s : register(s13); SamplerComparisonState g_ShadowMap_sampler_s : register(s12); Texture2D<float4> g_DepthMapSampler_texture : register(t1); Texture2D<float4> g_ShadowMap_texture : register(t12); Texture2D<float4> g_SSAOMap_texture : register(t13); Texture2D<float4> StereoParams : register(t125); Texture1D<float4> IniParams : register(t120); void main( float4 v0 : SV_Position0, float4 v1 : TEXCOORD0, float4 v2 : TEXCOORD1, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3,r4; uint4 bitmask, uiDest; float4 fDest; float4 stereo = StereoParams.Load(0); float separation = stereo.x; float convergence = stereo.y; r0.z = g_DepthMapSampler_texture.Sample(g_DepthMapSampler_sampler_s, v1.xy).x; r1.x = g_vDepthComputeParam.x + -r0.z; r1.x = -g_vDepthComputeParam.y / r1.x; //High quality shadow distance multiplier. Nope. //r2.xyzw = g_CascadeSelectDist.xyzw < r1.xxxx; r2.xyzw = (g_CascadeSelectDist.xyzw < r1.xxxx) ? -1 : 0; r1.x = FC_ShadowMapParam.x + -r1.x; r1.x = saturate(FC_ShadowMapParam.y * r1.x); r2.xyzw = r2.xyzw ? 1.00000 : 0; r1.y = dot(r2.xyzw, float4(1,1,1,1)); r1.y = (int)r1.y; r1.z = (int)r1.y == 4; r1.y = (uint)r1.y << 2; r1.y = r1.z ? 12 : r1.y; if (r1.z != 0) discard; r0.xy = v2.xy; r0.w = 1; float depth=dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m30_m31_m32_m33, r0.xyzw); r0.x+=separation*(depth*convergence-1); r2.x = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m00_m01_m02_m03, r0.xyzw); r2.y = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m10_m11_m12_m13, r0.xyzw); r2.z = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m20_m21_m22_m23, r0.xyzw); r2.w = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m30_m31_m32_m33, r0.xyzw); r0.xy = FC_ShadowMapParam.zw * r2.ww; r0.w = -r0.y; r0.z = 0; r3.xyzw = r2.xyzw + r0.xwzz; r0.w = 1 / r3.w; r1.yzw = r3.xyz * r0.www; r3.y = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r1.yz, r1.w).x; r4.xyzw = r2.xyzw + r0.xyzz; r0.w = 1 / r4.w; r1.yzw = r4.xyz * r0.www; r3.x = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r1.yz, r1.w).x; r4.xyzw = r0.xyzz * float4(-1,1,1,1) + r2.xyzw; r0.xyzw = r0.xyzz * float4(-1,-1,1,1) + r2.xyzw; r1.y = 1 / r4.w; r1.yzw = r4.xyz * r1.yyy; r3.z = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r1.yz, r1.w).x; r0.w = 1 / r0.w; r0.xyz = r0.xyz * r0.www; r3.w = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r0.xy, r0.z).x; r0.x = dot(r3.xyzw, float4(0.25,0.25,0.25,0.25)); o0.xyz = -r1.xxx * r0.xxx + float3(1,1,1); r0.x = g_SSAOMap_texture.Sample(g_SSAOMap_sampler_s, v1.xy).w; o0.w = r0.x; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 // // using 3Dmigoto v1.2.6 on Mon Nov 02 01:04:06 2015 // // // Buffer Definitions: // // cbuffer cbBase // { // // float4 FC_DifColMul; // Offset: 0 Size: 16 [unused] // float FC_GlobalTime; // Offset: 16 Size: 4 [unused] // row_major float3x4 FC_MatrixViewT; // Offset: 32 Size: 48 [unused] // float4 FC_FarClipInfo; // Offset: 80 Size: 16 [unused] // float4 FC_ShadowMapParam; // Offset: 96 Size: 16 // float4 FC_ShadowColor; // Offset: 112 Size: 16 [unused] // float4 FC_ScreenSize; // Offset: 128 Size: 16 [unused] // float4 FC_FinalColorMult; // Offset: 144 Size: 16 [unused] // // } // // cbuffer cbScreenSpaceShadow // { // // row_major float4x4 g_InvProjMatrixT;// Offset: 0 Size: 64 [unused] // row_major float4x4 g_ProjSpaceToShadowMatrixT[4];// Offset: 64 Size: 256 // float4 g_CascadeSelectDist; // Offset: 320 Size: 16 // float4 g_vDepthComputeParam; // Offset: 336 Size: 16 // float4 g_avSampleOffsets[16]; // Offset: 352 Size: 256 [unused] // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // g_DepthMapSampler_sampler sampler NA NA 1 1 // g_ShadowMap_sampler sampler_c NA NA 12 1 // g_SSAOMap_sampler sampler NA NA 13 1 // g_DepthMapSampler_texture texture float4 2d 1 1 // g_ShadowMap_texture texture float4 2d 12 1 // g_SSAOMap_texture texture float4 2d 13 1 // cbBase cbuffer NA NA 0 1 // cbScreenSpaceShadow cbuffer NA NA 6 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float // TEXCOORD 0 xy 1 NONE float xy // TEXCOORD 1 xyzw 2 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_5_0 dcl_globalFlags refactoringAllowed dcl_constantbuffer cb0[7], immediateIndexed dcl_constantbuffer cb6[22], dynamicIndexed dcl_sampler s1, mode_default dcl_sampler s12, mode_comparison dcl_sampler s13, mode_default dcl_resource_texture2d (float,float,float,float) t1 dcl_resource_texture2d (float,float,float,float) t12 dcl_resource_texture2d (float,float,float,float) t13 dcl_input_ps linear v1.xy dcl_input_ps linear v2.xy dcl_output o0.xyzw dcl_temps 5 sample_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t1.yzxw, s1 add r1.x, -r0.z, cb6[21].x div r1.x, -cb6[21].y, r1.x lt r2.xyzw, cb6[20].xyzw, r1.xxxx add r1.x, -r1.x, cb0[6].x mul_sat r1.x, r1.x, cb0[6].y and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) dp4 r1.y, r2.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) ftoi r1.y, r1.y ieq r1.z, r1.y, l(4) ishl r1.y, r1.y, l(2) movc r1.y, r1.z, l(12), r1.y discard_nz r1.z mov r0.xy, v2.xyxx mov r0.w, l(1.000000) dp4 r2.x, cb6[r1.y + 4].xyzw, r0.xyzw dp4 r2.y, cb6[r1.y + 5].xyzw, r0.xyzw dp4 r2.z, cb6[r1.y + 6].xyzw, r0.xyzw dp4 r2.w, cb6[r1.y + 7].xyzw, r0.xyzw mul r0.xy, r2.wwww, cb0[6].zwzz mov r0.w, -r0.y mov r0.z, l(0) add r3.xyzw, r0.xwzz, r2.xyzw div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w mul r1.yzw, r0.wwww, r3.xxyz sample_c_indexable(texture2d)(float,float,float,float) r3.y, r1.yzyy, t12.xxxx, s12, r1.w add r4.xyzw, r0.xyzz, r2.xyzw div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w mul r1.yzw, r0.wwww, r4.xxyz sample_c_indexable(texture2d)(float,float,float,float) r3.x, r1.yzyy, t12.xxxx, s12, r1.w mad r4.xyzw, r0.xyzz, l(-1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw mad r0.xyzw, r0.xyzz, l(-1.000000, -1.000000, 1.000000, 1.000000), r2.xyzw div r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w mul r1.yzw, r1.yyyy, r4.xxyz sample_c_indexable(texture2d)(float,float,float,float) r3.z, r1.yzyy, t12.xxxx, s12, r1.w div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w mul r0.xyz, r0.wwww, r0.xyzx sample_c_indexable(texture2d)(float,float,float,float) r3.w, r0.xyxx, t12.xxxx, s12, r0.z dp4 r0.x, r3.xyzw, l(0.250000, 0.250000, 0.250000, 0.250000) mad o0.xyz, -r1.xxxx, r0.xxxx, l(1.000000, 1.000000, 1.000000, 0.000000) sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t13.wxyz, s13 mov o0.w, r0.x ret // Approximately 43 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] Line 63 in my shader. In your case, it may have to be like this: [code]r1.z = g_DepthTexture.Sample(SS_ClampPoint_s_s, v1.xy).x; r1.xy = v2.xy; r1.w = 1; depth=dot(r1.xyzw, g_InvProjMatrix._m03_m13_m23_m33); r1.x+=separation*(depth*convergence-1); r2.x = dot(r1.xyzw, g_InvProjMatrix._m00_m10_m20_m30); r2.y = dot(r1.xyzw, g_InvProjMatrix._m01_m11_m21_m31); r2.z = dot(r1.xyzw, g_InvProjMatrix._m02_m12_m22_m32); r0.w = dot(r1.xyzw, g_InvProjMatrix._m03_m13_m23_m33); r1.xyz = r2.xyz / r0.www;[/code] Assuming that you have loaded the stereo parameters before. The "r1.x+=" formula may have to be different, because shadows were at screen depth by default in DS2. If the fix is needed elsewere, then epic fail for me :p.
helifax said:
Any thoughts are highly appreciated;)
Thanks in advance!


Try doing the fix before line 123. It's very similar to the shadows pixel shader of DS2:SOTFS. This is the DS2 pixel shader (comparing the two shaders may help you):

//Shadows PS.
cbuffer cbBase : register(b0)
{
float4 FC_DifColMul : packoffset(c0);
float FC_GlobalTime : packoffset(c1);
row_major float3x4 FC_MatrixViewT : packoffset(c2);
float4 FC_FarClipInfo : packoffset(c5);
float4 FC_ShadowMapParam : packoffset(c6);
float4 FC_ShadowColor : packoffset(c7);
float4 FC_ScreenSize : packoffset(c8);
float4 FC_FinalColorMult : packoffset(c9);
}

cbuffer cbScreenSpaceShadow : register(b6)
{
row_major float4x4 g_InvProjMatrixT : packoffset(c0);
row_major float4x4 g_ProjSpaceToShadowMatrixT[4] : packoffset(c4);
float4 g_CascadeSelectDist : packoffset(c20);
float4 g_vDepthComputeParam : packoffset(c21);
float4 g_avSampleOffsets[16] : packoffset(c22);
}
SamplerState g_DepthMapSampler_sampler_s : register(s1);
SamplerState g_SSAOMap_sampler_s : register(s13);
SamplerComparisonState g_ShadowMap_sampler_s : register(s12);
Texture2D<float4> g_DepthMapSampler_texture : register(t1);
Texture2D<float4> g_ShadowMap_texture : register(t12);
Texture2D<float4> g_SSAOMap_texture : register(t13);

Texture2D<float4> StereoParams : register(t125);
Texture1D<float4> IniParams : register(t120);

void main(
float4 v0 : SV_Position0,
float4 v1 : TEXCOORD0,
float4 v2 : TEXCOORD1,
out float4 o0 : SV_Target0)
{
float4 r0,r1,r2,r3,r4;
uint4 bitmask, uiDest;
float4 fDest;

float4 stereo = StereoParams.Load(0);
float separation = stereo.x;
float convergence = stereo.y;

r0.z = g_DepthMapSampler_texture.Sample(g_DepthMapSampler_sampler_s, v1.xy).x;
r1.x = g_vDepthComputeParam.x + -r0.z;
r1.x = -g_vDepthComputeParam.y / r1.x;
//High quality shadow distance multiplier. Nope.
//r2.xyzw = g_CascadeSelectDist.xyzw < r1.xxxx;
r2.xyzw = (g_CascadeSelectDist.xyzw < r1.xxxx) ? -1 : 0;
r1.x = FC_ShadowMapParam.x + -r1.x;
r1.x = saturate(FC_ShadowMapParam.y * r1.x);
r2.xyzw = r2.xyzw ? 1.00000 : 0;
r1.y = dot(r2.xyzw, float4(1,1,1,1));
r1.y = (int)r1.y;
r1.z = (int)r1.y == 4;
r1.y = (uint)r1.y << 2;
r1.y = r1.z ? 12 : r1.y;
if (r1.z != 0) discard;
r0.xy = v2.xy;
r0.w = 1;
float depth=dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m30_m31_m32_m33, r0.xyzw);
r0.x+=separation*(depth*convergence-1);
r2.x = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m00_m01_m02_m03, r0.xyzw);
r2.y = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m10_m11_m12_m13, r0.xyzw);
r2.z = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m20_m21_m22_m23, r0.xyzw);
r2.w = dot(g_ProjSpaceToShadowMatrixT[r1.y/4]._m30_m31_m32_m33, r0.xyzw);
r0.xy = FC_ShadowMapParam.zw * r2.ww;
r0.w = -r0.y;
r0.z = 0;
r3.xyzw = r2.xyzw + r0.xwzz;
r0.w = 1 / r3.w;
r1.yzw = r3.xyz * r0.www;
r3.y = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r1.yz, r1.w).x;
r4.xyzw = r2.xyzw + r0.xyzz;
r0.w = 1 / r4.w;
r1.yzw = r4.xyz * r0.www;
r3.x = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r1.yz, r1.w).x;
r4.xyzw = r0.xyzz * float4(-1,1,1,1) + r2.xyzw;
r0.xyzw = r0.xyzz * float4(-1,-1,1,1) + r2.xyzw;
r1.y = 1 / r4.w;
r1.yzw = r4.xyz * r1.yyy;
r3.z = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r1.yz, r1.w).x;
r0.w = 1 / r0.w;
r0.xyz = r0.xyz * r0.www;
r3.w = g_ShadowMap_texture.SampleCmp(g_ShadowMap_sampler_s, r0.xy, r0.z).x;
r0.x = dot(r3.xyzw, float4(0.25,0.25,0.25,0.25));
o0.xyz = -r1.xxx * r0.xxx + float3(1,1,1);
r0.x = g_SSAOMap_texture.Sample(g_SSAOMap_sampler_s, v1.xy).w;
o0.w = r0.x;
return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// using 3Dmigoto v1.2.6 on Mon Nov 02 01:04:06 2015
//
//
// Buffer Definitions:
//
// cbuffer cbBase
// {
//
// float4 FC_DifColMul; // Offset: 0 Size: 16 [unused]
// float FC_GlobalTime; // Offset: 16 Size: 4 [unused]
// row_major float3x4 FC_MatrixViewT; // Offset: 32 Size: 48 [unused]
// float4 FC_FarClipInfo; // Offset: 80 Size: 16 [unused]
// float4 FC_ShadowMapParam; // Offset: 96 Size: 16
// float4 FC_ShadowColor; // Offset: 112 Size: 16 [unused]
// float4 FC_ScreenSize; // Offset: 128 Size: 16 [unused]
// float4 FC_FinalColorMult; // Offset: 144 Size: 16 [unused]
//
// }
//
// cbuffer cbScreenSpaceShadow
// {
//
// row_major float4x4 g_InvProjMatrixT;// Offset: 0 Size: 64 [unused]
// row_major float4x4 g_ProjSpaceToShadowMatrixT[4];// Offset: 64 Size: 256
// float4 g_CascadeSelectDist; // Offset: 320 Size: 16
// float4 g_vDepthComputeParam; // Offset: 336 Size: 16
// float4 g_avSampleOffsets[16]; // Offset: 352 Size: 256 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_DepthMapSampler_sampler sampler NA NA 1 1
// g_ShadowMap_sampler sampler_c NA NA 12 1
// g_SSAOMap_sampler sampler NA NA 13 1
// g_DepthMapSampler_texture texture float4 2d 1 1
// g_ShadowMap_texture texture float4 2d 12 1
// g_SSAOMap_texture texture float4 2d 13 1
// cbBase cbuffer NA NA 0 1
// cbScreenSpaceShadow cbuffer NA NA 6 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float
// TEXCOORD 0 xy 1 NONE float xy
// TEXCOORD 1 xyzw 2 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[7], immediateIndexed
dcl_constantbuffer cb6[22], dynamicIndexed
dcl_sampler s1, mode_default
dcl_sampler s12, mode_comparison
dcl_sampler s13, mode_default
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t12
dcl_resource_texture2d (float,float,float,float) t13
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xy
dcl_output o0.xyzw
dcl_temps 5
sample_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t1.yzxw, s1
add r1.x, -r0.z, cb6[21].x
div r1.x, -cb6[21].y, r1.x
lt r2.xyzw, cb6[20].xyzw, r1.xxxx
add r1.x, -r1.x, cb0[6].x
mul_sat r1.x, r1.x, cb0[6].y
and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r1.y, r2.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
ftoi r1.y, r1.y
ieq r1.z, r1.y, l(4)
ishl r1.y, r1.y, l(2)
movc r1.y, r1.z, l(12), r1.y
discard_nz r1.z
mov r0.xy, v2.xyxx
mov r0.w, l(1.000000)
dp4 r2.x, cb6[r1.y + 4].xyzw, r0.xyzw
dp4 r2.y, cb6[r1.y + 5].xyzw, r0.xyzw
dp4 r2.z, cb6[r1.y + 6].xyzw, r0.xyzw
dp4 r2.w, cb6[r1.y + 7].xyzw, r0.xyzw
mul r0.xy, r2.wwww, cb0[6].zwzz
mov r0.w, -r0.y
mov r0.z, l(0)
add r3.xyzw, r0.xwzz, r2.xyzw
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w
mul r1.yzw, r0.wwww, r3.xxyz
sample_c_indexable(texture2d)(float,float,float,float) r3.y, r1.yzyy, t12.xxxx, s12, r1.w
add r4.xyzw, r0.xyzz, r2.xyzw
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w
mul r1.yzw, r0.wwww, r4.xxyz
sample_c_indexable(texture2d)(float,float,float,float) r3.x, r1.yzyy, t12.xxxx, s12, r1.w
mad r4.xyzw, r0.xyzz, l(-1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw
mad r0.xyzw, r0.xyzz, l(-1.000000, -1.000000, 1.000000, 1.000000), r2.xyzw
div r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w
mul r1.yzw, r1.yyyy, r4.xxyz
sample_c_indexable(texture2d)(float,float,float,float) r3.z, r1.yzyy, t12.xxxx, s12, r1.w
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
mul r0.xyz, r0.wwww, r0.xyzx
sample_c_indexable(texture2d)(float,float,float,float) r3.w, r0.xyxx, t12.xxxx, s12, r0.z
dp4 r0.x, r3.xyzw, l(0.250000, 0.250000, 0.250000, 0.250000)
mad o0.xyz, -r1.xxxx, r0.xxxx, l(1.000000, 1.000000, 1.000000, 0.000000)
sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t13.wxyz, s13
mov o0.w, r0.x
ret
// Approximately 43 instruction slots used

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


Line 63 in my shader.

In your case, it may have to be like this:

r1.z = g_DepthTexture.Sample(SS_ClampPoint_s_s, v1.xy).x;
r1.xy = v2.xy;
r1.w = 1;
depth=dot(r1.xyzw, g_InvProjMatrix._m03_m13_m23_m33);
r1.x+=separation*(depth*convergence-1);
r2.x = dot(r1.xyzw, g_InvProjMatrix._m00_m10_m20_m30);
r2.y = dot(r1.xyzw, g_InvProjMatrix._m01_m11_m21_m31);
r2.z = dot(r1.xyzw, g_InvProjMatrix._m02_m12_m22_m32);
r0.w = dot(r1.xyzw, g_InvProjMatrix._m03_m13_m23_m33);
r1.xyz = r2.xyz / r0.www;


Assuming that you have loaded the stereo parameters before. The "r1.x+=" formula may have to be different, because shadows were at screen depth by default in DS2. If the fix is needed elsewere, then epic fail for me :p.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

Posted 04/18/2016 08:58 PM   
Crap... Very funny, if I try to replace the original shader with either HLSL or ASM I get weird glitches... It goes AWAY if I remove the shader...../sigh Thanks for the help though;) Will try to see if I can change this... EDIT: Something FUNKY and weird is happening here... I select the Vertex Shader and DUMP it for some shadows. Then in 3DMigoto if I look at shaderUsage.txt I get this for that shader.... [code] <VertexShader hash="eb6c891a047c27b1"> <CalledPixelShaders></CalledPixelShaders> <Register id=120 handle=000000000DD505E0>00000000</Register> <Register id=125 handle=00000000094C69E0>00000000</Register> </VertexShader> [/code] No attached Pixel??? EDIT2: This is the VertexShader. If I apply the below correction the Shadows is SHIFTED to the right in both eyes... very very weird stuff! [code] cbuffer cbSceneParam : register(b8) { float4 FC_FarClipInfo : packoffset(c0); float4 FC_ScreenSize : packoffset(c1); float4 FC_DepthComputeParam : packoffset(c2); float4 SC_CameraPos : packoffset(c3); float4 VC_ClipPlane : packoffset(c4); float4x3 FC_MatrixView : packoffset(c5); float4x4 FC_MatrixInvViewProj : packoffset(c8); float4x4 FC_MatrixInvProj : packoffset(c12); float4x4 FC_MatrixProj : packoffset(c16); float4x4 FC_MatrixInvView : packoffset(c20); float4x4 VC_MatrixViewProj : packoffset(c24); float4 FC_ShadowMapParam : packoffset(c28); float4 FC_ShadowColor : packoffset(c29); float4 FC_ShadowDir : packoffset(c30); float4x4 VC_ShadowMapMatrix : packoffset(c31); float FC_ShadowDepthRate : packoffset(c35); float FC_ShadowDepthScale : packoffset(c35.y); float FC_ShadowKernelScale : packoffset(c35.z); float FC_ShadowRandTexInvScale : packoffset(c35.w); float FC_ShadowTexInvScaleX : packoffset(c36); float FC_ShadowTexInvScaleY : packoffset(c36.y); float FC_ShadowDepthOffsetScale : packoffset(c36.z); float4 FC_ShadowViewKernelScale : packoffset(c37); float4x4 FC_ProjSpaceToShadowMatrix[4] : packoffset(c38); float4 FC_CascadeSelectDist : packoffset(c54); float FC_FrustumNear : packoffset(c55); float FC_FrustumSliceScale : packoffset(c55.y); float FC_FrustumSliceBias : packoffset(c55.z); uint FC_LightTile_Width : packoffset(c56); uint FC_LightTile_NumCellX : packoffset(c56.y); float4 FC_CloudShadowParam0 : packoffset(c57); float4 FC_CloudShadowParam1 : packoffset(c58); float FC_ShadowScale0 : packoffset(c59); float FC_ShadowScale1 : packoffset(c59.y); } cbuffer cbInstanceData : register(b4) { struct { float4x3 mWorld; float4 atlasUvScaleOffset; float4 userClipPlane; uint4 matricesData; uint envData; bool dynamicLightDisable; uint2 envPad; float4 mulCol; float4 aSh[3]; float4 ShLightMask; float4 vDominantRotateParam; float4 parallaxCorrectedCubemapOrigin_envMapInterpRatio; float4 parallaxCorrectedCubemapAabbMin_envMapColorScale0; float4 parallaxCorrectedCubemapAabbMax_envMapColorScale1; float ditherFadeAlpha; } VC_InstanceData[2] : packoffset(c0); } cbuffer cbMatrixWVP : register(b0) { row_major float4x4 VC_View_MatrixCamera : packoffset(c0); float4x4 VC_View_MatrixViewProj : packoffset(c4); float4 VC_ViewFrustumPlanes[4] : packoffset(c8); } cbuffer cbObjMatrix : register(b5) { float4x3 VC_aObjMatrix[2] : packoffset(c0); } cbuffer cbClothCancelObjMatrix : register(b12) { float4x3 VC_aClothCancelObjMatrix[2] : packoffset(c0); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float3 v0 : POSITION0, uint4 v1 : NORMAL0, uint4 v2 : TANGENT0, uint4 v3 : BLENDINDICES0, float4 v4 : BLENDWEIGHT0, int4 v5 : TEXCOORD0, float4 v6 : TEXCOORD1, out float4 o0 : SV_POSITION0, out float o1 : SV_CLIPDISTANCE0, out float p1 : SV_CLIPDISTANCE1) { float4 r0,r1,r2,r3,r4,r5,r6; uint4 bitmask, uiDest; float4 fDest; r0.w = 1; r1.xyzw = (int4)v3.xyzw + (int4)VC_InstanceData[0].matricesData.xxxx; r1.xyzw = (int4)r1.xyzw * int4(3,3,3,3); r2.x = dot(float4(1,1,1,1), v4.xyzw); r2.x = max(0.00100000005, r2.x); r2.xyzw = v4.xyzw / r2.xxxx; r3.xyzw = VC_aObjMatrix[r1.y/3]._m00_m10_m20_m30 * r2.yyyy; r3.xyzw = VC_aObjMatrix[r1.x/3]._m00_m10_m20_m30 * r2.xxxx + r3.xyzw; r3.xyzw = VC_aObjMatrix[r1.z/3]._m00_m10_m20_m30 * r2.zzzz + r3.xyzw; r3.xyzw = VC_aObjMatrix[r1.w/3]._m00_m10_m20_m30 * r2.wwww + r3.xyzw; r4.xyz = v0.xyz; r4.w = 1; r5.xyzw = (int4)v3.xyzw * int4(3,3,3,3); r6.xyzw = VC_aClothCancelObjMatrix[v3.y]._m00_m10_m20_m30 * r2.yyyy; r6.xyzw = VC_aClothCancelObjMatrix[v3.x]._m00_m10_m20_m30 * r2.xxxx + r6.xyzw; r6.xyzw = VC_aClothCancelObjMatrix[v3.z]._m00_m10_m20_m30 * r2.zzzz + r6.xyzw; r6.xyzw = VC_aClothCancelObjMatrix[v3.w]._m00_m10_m20_m30 * r2.wwww + r6.xyzw; r0.x = dot(r4.xyzw, r6.xyzw); r6.xyzw = VC_aClothCancelObjMatrix[v3.y]._m01_m11_m21_m31 * r2.yyyy; r6.xyzw = VC_aClothCancelObjMatrix[v3.x]._m01_m11_m21_m31 * r2.xxxx + r6.xyzw; r6.xyzw = VC_aClothCancelObjMatrix[v3.z]._m01_m11_m21_m31 * r2.zzzz + r6.xyzw; r6.xyzw = VC_aClothCancelObjMatrix[v3.w]._m01_m11_m21_m31 * r2.wwww + r6.xyzw; r0.y = dot(r4.xyzw, r6.xyzw); r6.xyzw = VC_aClothCancelObjMatrix[v3.y]._m02_m12_m22_m32 * r2.yyyy; r6.xyzw = VC_aClothCancelObjMatrix[v3.x]._m02_m12_m22_m32 * r2.xxxx + r6.xyzw; r6.xyzw = VC_aClothCancelObjMatrix[v3.z]._m02_m12_m22_m32 * r2.zzzz + r6.xyzw; r5.xyzw = VC_aClothCancelObjMatrix[v3.w]._m02_m12_m22_m32 * r2.wwww + r6.xyzw; r0.z = dot(r4.xyzw, r5.xyzw); r3.x = dot(r0.xyzw, r3.xyzw); r4.xyzw = VC_aObjMatrix[r1.y/3]._m01_m11_m21_m31 * r2.yyyy; r4.xyzw = VC_aObjMatrix[r1.x/3]._m01_m11_m21_m31 * r2.xxxx + r4.xyzw; r4.xyzw = VC_aObjMatrix[r1.z/3]._m01_m11_m21_m31 * r2.zzzz + r4.xyzw; r4.xyzw = VC_aObjMatrix[r1.w/3]._m01_m11_m21_m31 * r2.wwww + r4.xyzw; r3.y = dot(r0.xyzw, r4.xyzw); r4.xyzw = VC_aObjMatrix[r1.y/3]._m02_m12_m22_m32 * r2.yyyy; r4.xyzw = VC_aObjMatrix[r1.x/3]._m02_m12_m22_m32 * r2.xxxx + r4.xyzw; r4.xyzw = VC_aObjMatrix[r1.z/3]._m02_m12_m22_m32 * r2.zzzz + r4.xyzw; r1.xyzw = VC_aObjMatrix[r1.w/3]._m02_m12_m22_m32 * r2.wwww + r4.xyzw; r3.z = dot(r0.xyzw, r1.xyzw); r0.xyz = -VC_View_MatrixCamera._m30_m31_m32 + r3.xyz; r0.w = 1; r1.x = dot(r0.xyzw, VC_View_MatrixViewProj._m00_m10_m20_m30); r1.y = dot(r0.xyzw, VC_View_MatrixViewProj._m01_m11_m21_m31); r1.z = dot(r0.xyzw, VC_View_MatrixViewProj._m02_m12_m22_m32); r1.w = dot(r0.xyzw, VC_View_MatrixViewProj._m03_m13_m23_m33); float4 stereo = StereoParams.Load(0); r1.x += stereo.x; o0.xyzw = r1.xyzw; o1.x = dot(r1.xyzw, VC_ClipPlane.xyzw); o1 = 0; p1.x = dot(r1.xyzw, VC_InstanceData[0].userClipPlane.xyzw); p1 = 0; return; } [/code]
Crap...
Very funny, if I try to replace the original shader with either HLSL or ASM I get weird glitches...
It goes AWAY if I remove the shader...../sigh

Thanks for the help though;) Will try to see if I can change this...

EDIT:
Something FUNKY and weird is happening here...
I select the Vertex Shader and DUMP it for some shadows.
Then in 3DMigoto if I look at shaderUsage.txt I get this for that shader....

<VertexShader hash="eb6c891a047c27b1">
<CalledPixelShaders></CalledPixelShaders>
<Register id=120 handle=000000000DD505E0>00000000</Register>
<Register id=125 handle=00000000094C69E0>00000000</Register>
</VertexShader>


No attached Pixel???

EDIT2:
This is the VertexShader. If I apply the below correction the Shadows is SHIFTED to the right in both eyes...
very very weird stuff!

cbuffer cbSceneParam : register(b8)
{
float4 FC_FarClipInfo : packoffset(c0);
float4 FC_ScreenSize : packoffset(c1);
float4 FC_DepthComputeParam : packoffset(c2);
float4 SC_CameraPos : packoffset(c3);
float4 VC_ClipPlane : packoffset(c4);
float4x3 FC_MatrixView : packoffset(c5);
float4x4 FC_MatrixInvViewProj : packoffset(c8);
float4x4 FC_MatrixInvProj : packoffset(c12);
float4x4 FC_MatrixProj : packoffset(c16);
float4x4 FC_MatrixInvView : packoffset(c20);
float4x4 VC_MatrixViewProj : packoffset(c24);
float4 FC_ShadowMapParam : packoffset(c28);
float4 FC_ShadowColor : packoffset(c29);
float4 FC_ShadowDir : packoffset(c30);
float4x4 VC_ShadowMapMatrix : packoffset(c31);
float FC_ShadowDepthRate : packoffset(c35);
float FC_ShadowDepthScale : packoffset(c35.y);
float FC_ShadowKernelScale : packoffset(c35.z);
float FC_ShadowRandTexInvScale : packoffset(c35.w);
float FC_ShadowTexInvScaleX : packoffset(c36);
float FC_ShadowTexInvScaleY : packoffset(c36.y);
float FC_ShadowDepthOffsetScale : packoffset(c36.z);
float4 FC_ShadowViewKernelScale : packoffset(c37);
float4x4 FC_ProjSpaceToShadowMatrix[4] : packoffset(c38);
float4 FC_CascadeSelectDist : packoffset(c54);
float FC_FrustumNear : packoffset(c55);
float FC_FrustumSliceScale : packoffset(c55.y);
float FC_FrustumSliceBias : packoffset(c55.z);
uint FC_LightTile_Width : packoffset(c56);
uint FC_LightTile_NumCellX : packoffset(c56.y);
float4 FC_CloudShadowParam0 : packoffset(c57);
float4 FC_CloudShadowParam1 : packoffset(c58);
float FC_ShadowScale0 : packoffset(c59);
float FC_ShadowScale1 : packoffset(c59.y);
}

cbuffer cbInstanceData : register(b4)
{

struct
{
float4x3 mWorld;
float4 atlasUvScaleOffset;
float4 userClipPlane;
uint4 matricesData;
uint envData;
bool dynamicLightDisable;
uint2 envPad;
float4 mulCol;
float4 aSh[3];
float4 ShLightMask;
float4 vDominantRotateParam;
float4 parallaxCorrectedCubemapOrigin_envMapInterpRatio;
float4 parallaxCorrectedCubemapAabbMin_envMapColorScale0;
float4 parallaxCorrectedCubemapAabbMax_envMapColorScale1;
float ditherFadeAlpha;
} VC_InstanceData[2] : packoffset(c0);

}

cbuffer cbMatrixWVP : register(b0)
{
row_major float4x4 VC_View_MatrixCamera : packoffset(c0);
float4x4 VC_View_MatrixViewProj : packoffset(c4);
float4 VC_ViewFrustumPlanes[4] : packoffset(c8);
}

cbuffer cbObjMatrix : register(b5)
{
float4x3 VC_aObjMatrix[2] : packoffset(c0);
}

cbuffer cbClothCancelObjMatrix : register(b12)
{
float4x3 VC_aClothCancelObjMatrix[2] : packoffset(c0);
}



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


void main(
float3 v0 : POSITION0,
uint4 v1 : NORMAL0,
uint4 v2 : TANGENT0,
uint4 v3 : BLENDINDICES0,
float4 v4 : BLENDWEIGHT0,
int4 v5 : TEXCOORD0,
float4 v6 : TEXCOORD1,
out float4 o0 : SV_POSITION0,
out float o1 : SV_CLIPDISTANCE0,
out float p1 : SV_CLIPDISTANCE1)
{
float4 r0,r1,r2,r3,r4,r5,r6;
uint4 bitmask, uiDest;
float4 fDest;

r0.w = 1;
r1.xyzw = (int4)v3.xyzw + (int4)VC_InstanceData[0].matricesData.xxxx;
r1.xyzw = (int4)r1.xyzw * int4(3,3,3,3);
r2.x = dot(float4(1,1,1,1), v4.xyzw);
r2.x = max(0.00100000005, r2.x);
r2.xyzw = v4.xyzw / r2.xxxx;
r3.xyzw = VC_aObjMatrix[r1.y/3]._m00_m10_m20_m30 * r2.yyyy;
r3.xyzw = VC_aObjMatrix[r1.x/3]._m00_m10_m20_m30 * r2.xxxx + r3.xyzw;
r3.xyzw = VC_aObjMatrix[r1.z/3]._m00_m10_m20_m30 * r2.zzzz + r3.xyzw;
r3.xyzw = VC_aObjMatrix[r1.w/3]._m00_m10_m20_m30 * r2.wwww + r3.xyzw;
r4.xyz = v0.xyz;
r4.w = 1;
r5.xyzw = (int4)v3.xyzw * int4(3,3,3,3);
r6.xyzw = VC_aClothCancelObjMatrix[v3.y]._m00_m10_m20_m30 * r2.yyyy;
r6.xyzw = VC_aClothCancelObjMatrix[v3.x]._m00_m10_m20_m30 * r2.xxxx + r6.xyzw;
r6.xyzw = VC_aClothCancelObjMatrix[v3.z]._m00_m10_m20_m30 * r2.zzzz + r6.xyzw;
r6.xyzw = VC_aClothCancelObjMatrix[v3.w]._m00_m10_m20_m30 * r2.wwww + r6.xyzw;
r0.x = dot(r4.xyzw, r6.xyzw);
r6.xyzw = VC_aClothCancelObjMatrix[v3.y]._m01_m11_m21_m31 * r2.yyyy;
r6.xyzw = VC_aClothCancelObjMatrix[v3.x]._m01_m11_m21_m31 * r2.xxxx + r6.xyzw;
r6.xyzw = VC_aClothCancelObjMatrix[v3.z]._m01_m11_m21_m31 * r2.zzzz + r6.xyzw;
r6.xyzw = VC_aClothCancelObjMatrix[v3.w]._m01_m11_m21_m31 * r2.wwww + r6.xyzw;
r0.y = dot(r4.xyzw, r6.xyzw);
r6.xyzw = VC_aClothCancelObjMatrix[v3.y]._m02_m12_m22_m32 * r2.yyyy;
r6.xyzw = VC_aClothCancelObjMatrix[v3.x]._m02_m12_m22_m32 * r2.xxxx + r6.xyzw;
r6.xyzw = VC_aClothCancelObjMatrix[v3.z]._m02_m12_m22_m32 * r2.zzzz + r6.xyzw;
r5.xyzw = VC_aClothCancelObjMatrix[v3.w]._m02_m12_m22_m32 * r2.wwww + r6.xyzw;
r0.z = dot(r4.xyzw, r5.xyzw);
r3.x = dot(r0.xyzw, r3.xyzw);
r4.xyzw = VC_aObjMatrix[r1.y/3]._m01_m11_m21_m31 * r2.yyyy;
r4.xyzw = VC_aObjMatrix[r1.x/3]._m01_m11_m21_m31 * r2.xxxx + r4.xyzw;
r4.xyzw = VC_aObjMatrix[r1.z/3]._m01_m11_m21_m31 * r2.zzzz + r4.xyzw;
r4.xyzw = VC_aObjMatrix[r1.w/3]._m01_m11_m21_m31 * r2.wwww + r4.xyzw;
r3.y = dot(r0.xyzw, r4.xyzw);
r4.xyzw = VC_aObjMatrix[r1.y/3]._m02_m12_m22_m32 * r2.yyyy;
r4.xyzw = VC_aObjMatrix[r1.x/3]._m02_m12_m22_m32 * r2.xxxx + r4.xyzw;
r4.xyzw = VC_aObjMatrix[r1.z/3]._m02_m12_m22_m32 * r2.zzzz + r4.xyzw;
r1.xyzw = VC_aObjMatrix[r1.w/3]._m02_m12_m22_m32 * r2.wwww + r4.xyzw;
r3.z = dot(r0.xyzw, r1.xyzw);
r0.xyz = -VC_View_MatrixCamera._m30_m31_m32 + r3.xyz;
r0.w = 1;



r1.x = dot(r0.xyzw, VC_View_MatrixViewProj._m00_m10_m20_m30);
r1.y = dot(r0.xyzw, VC_View_MatrixViewProj._m01_m11_m21_m31);
r1.z = dot(r0.xyzw, VC_View_MatrixViewProj._m02_m12_m22_m32);
r1.w = dot(r0.xyzw, VC_View_MatrixViewProj._m03_m13_m23_m33);

float4 stereo = StereoParams.Load(0);
r1.x += stereo.x;

o0.xyzw = r1.xyzw;
o1.x = dot(r1.xyzw, VC_ClipPlane.xyzw);


o1 = 0;

p1.x = dot(r1.xyzw, VC_InstanceData[0].userClipPlane.xyzw);

p1 = 0;
return;
}

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


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

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

Posted 04/18/2016 09:49 PM   
@masterotaku: Fixed the SHADOWS at last! Big thanks for the formula;) It would have taken some time to figure that one out;) As it turned out that wasn't the shader;) And I actually found the right shader BY MISTAKE:)) while looking for something else:)) How did you fix the HALOS around the FOG in DS2 by the way? Did you disable it or did you actually fix it?;))
@masterotaku:
Fixed the SHADOWS at last! Big thanks for the formula;) It would have taken some time to figure that one out;)
As it turned out that wasn't the shader;) And I actually found the right shader BY MISTAKE:)) while looking for something else:))

How did you fix the HALOS around the FOG in DS2 by the way? Did you disable it or did you actually fix it?;))

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


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

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

Posted 04/19/2016 12:40 AM   
Sorry to interject. But you guys rule. I can't wait to sink my teeth into this one.
Sorry to interject. But you guys rule. I can't wait to sink my teeth into this one.

i7-4790K CPU 4.8Ghz stable overclock.
16 GB RAM Corsair
ASUS Turbo 2080TI
Samsung SSD 840Pro
ASUS Z97-WS3D
Surround ASUS Rog Swift PG278Q(R), 2x PG278Q (yes it works)
Obutto R3volution.
Windows 10 pro 64x (Windows 7 Dual boot)

Posted 04/19/2016 01:00 AM   
  8 / 26    
Scroll To Top