Rise of the Tomb Raider (3D Vision Ready Support)
  22 / 41    
Well done fellas! Plz plz release this fix already, it has been the longest 3 weeks eva ;) Really appreciate your efforts here.
Well done fellas! Plz plz release this fix already, it has been the longest 3 weeks eva ;)

Really appreciate your efforts here.

Posted 02/19/2016 07:27 AM   
[quote="helifax"]Ok, managed to get the CS working! yey!!! (I'll come back to this a bit later on).[/quote]What was the issue with that?
helifax said:Ok, managed to get the CS working! yey!!!
(I'll come back to this a bit later on).
What was the issue with that?

2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit

Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD

Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword

Posted 02/19/2016 07:42 AM   
[quote="DarkStarSword"][quote="helifax"]Ok, managed to get the CS working! yey!!! (I'll come back to this a bit later on).[/quote]What was the issue with that?[/quote] Awesome JOB DarkStarSword! I'll wrap everything tonight and do some testing;) Can you please make a video recording (like you did the one for hunting shadows) but that shows how you used 3D Migoto to hunt down the CS shader responsible for the Tile Lighting? I read you post again and I gave it a try...but I didn't get that far... Do you think I might have missed a step of a setting in the ini file?? If is not too much hussle a quick, dirty video showing this would be awesome for all future games at it seems it becomes more and more main-stream to use TIle Lighting;) Back to the question: Initially I did like this: [code] ult r4.x, r3.y, r0.x ieq r4.yz, r3.wwww, l(0, 0, 1, 0) or r4.y, r4.z, r4.y and r4.x, r4.y, r4.x breakc_z r4.x // STiledLightData.vPosition: ld_indexable(texture2d)(float,float,float,float) r13.xyzw, l(0, 0, 0, 0), t125.xyzw ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r4.xyzw, r3.z, l(0), t4.xyzw add r13.w, r4.z, -r13.y mul r13.w, r13.w, r13.x mul r13.w, r13.w, l(0.5) add r4.x, r4.x, r13.w ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r5.xyz, r3.z, l(16), t4.xyzx ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r6.xy, r3.z, l(104), t4.xyxx ieq r5.w, r6.x, l(1) movc r5.w, r5.w, l(1), l(4) mov r6.x, r3.w mov r6.zw, l(0,0,0,0) loop [/code] Like I said before this had NO result. F10 reported the compilation was working, but no visual indication of anything actually fixed. But, when I did it like this, IT WORKED. I think the compiler might optimize the code and for some reason this doesn't work:( [code] ult r4.x, r3.y, r0.x ieq r4.yz, r3.wwww, l(0, 0, 1, 0) or r4.y, r4.z, r4.y and r4.x, r4.y, r4.x breakc_z r4.x // STiledLightData.vPosition: ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r4.xyzw, r3.z, l(0), t4.xyzw ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r5.xyz, r3.z, l(16), t4.xyzx ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r6.xy, r3.z, l(104), t4.xyxx // Move the stereo correction HERE after all "ld_structured_indexable" are executed ld_indexable(texture2d)(float,float,float,float) r13.xyzw, l(0, 0, 0, 0), t125.xyzw add r13.w, r4.z, -r13.y mul r13.w, r13.w, r13.x mul r13.w, r13.w, l(0.5) add r4.x, r4.x, r13.w ieq r5.w, r6.x, l(1) movc r5.w, r5.w, l(1), l(4) mov r6.x, r3.w mov r6.zw, l(0,0,0,0) loop [/code] Any ideas why this behaviour?? Best Regards, Helifax
DarkStarSword said:
helifax said:Ok, managed to get the CS working! yey!!!
(I'll come back to this a bit later on).
What was the issue with that?


Awesome JOB DarkStarSword! I'll wrap everything tonight and do some testing;) Can you please make a video recording (like you did the one for hunting shadows) but that shows how you used 3D Migoto to hunt down the CS shader responsible for the Tile Lighting? I read you post again and I gave it a try...but I didn't get that far... Do you think I might have missed a step of a setting in the ini file?? If is not too much hussle a quick, dirty video showing this would be awesome for all future games at it seems it becomes more and more main-stream to use TIle Lighting;)


Back to the question:

Initially I did like this:
ult r4.x, r3.y, r0.x
ieq r4.yz, r3.wwww, l(0, 0, 1, 0)
or r4.y, r4.z, r4.y
and r4.x, r4.y, r4.x
breakc_z r4.x

// STiledLightData.vPosition:
ld_indexable(texture2d)(float,float,float,float) r13.xyzw, l(0, 0, 0, 0), t125.xyzw
ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r4.xyzw, r3.z, l(0), t4.xyzw
add r13.w, r4.z, -r13.y
mul r13.w, r13.w, r13.x
mul r13.w, r13.w, l(0.5)
add r4.x, r4.x, r13.w


ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r5.xyz, r3.z, l(16), t4.xyzx
ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r6.xy, r3.z, l(104), t4.xyxx
ieq r5.w, r6.x, l(1)
movc r5.w, r5.w, l(1), l(4)
mov r6.x, r3.w
mov r6.zw, l(0,0,0,0)
loop

Like I said before this had NO result. F10 reported the compilation was working, but no visual indication of anything actually fixed.

But, when I did it like this, IT WORKED. I think the compiler might optimize the code and for some reason this doesn't work:(

ult r4.x, r3.y, r0.x
ieq r4.yz, r3.wwww, l(0, 0, 1, 0)
or r4.y, r4.z, r4.y
and r4.x, r4.y, r4.x
breakc_z r4.x

// STiledLightData.vPosition:

ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r4.xyzw, r3.z, l(0), t4.xyzw
ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r5.xyz, r3.z, l(16), t4.xyzx
ld_structured_indexable(structured_buffer, stride=384)(mixed,mixed,mixed,mixed) r6.xy, r3.z, l(104), t4.xyxx

// Move the stereo correction HERE after all "ld_structured_indexable" are executed
ld_indexable(texture2d)(float,float,float,float) r13.xyzw, l(0, 0, 0, 0), t125.xyzw
add r13.w, r4.z, -r13.y
mul r13.w, r13.w, r13.x
mul r13.w, r13.w, l(0.5)
add r4.x, r4.x, r13.w

ieq r5.w, r6.x, l(1)
movc r5.w, r5.w, l(1), l(4)
mov r6.x, r3.w
mov r6.zw, l(0,0,0,0)
loop


Any ideas why this behaviour??

Best Regards,
Helifax

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 02/19/2016 10:24 AM   
I checked the version you posted on pastebin and the problem was the tabs you used for indentation - Flugan's assembler was written to interpret only what the MS disassembler would produce, not all the variations that a human might do - and since the MS disassembler only ever uses spaces for indentation that's all that Flugan's assembler will accept. The _reasm.txt files we produce are there so you can check it's result and make sure it hasn't silently dropped an instruction. Ultimately I want to improve this situation (and the indentation issue is one that we should be able to solve relatively easily), but since it works as long as you are careful and since Flugan has verified it against shaders from a huge number of games and since any changes I make introduce the risk of breaking it in subtle ways it has been a lower priority. In the latest 3DMigoto release I included a command line decompiler, which also has Flugan's assembler hooked up (which took writing another 650 LOC and a whole new parser so that Flugan's assembler could work stand-alone, which it was not designed to do). Part of the motivation for that was so that I will be able to address issues like this more easily and add regression tests to minimise the risk of breaking anything. I'm tracking these issues here: https://github.com/bo3b/3Dmigoto/issues/36 For the video - sure, I'll try to find some time this weekend to record it.
I checked the version you posted on pastebin and the problem was the tabs you used for indentation - Flugan's assembler was written to interpret only what the MS disassembler would produce, not all the variations that a human might do - and since the MS disassembler only ever uses spaces for indentation that's all that Flugan's assembler will accept. The _reasm.txt files we produce are there so you can check it's result and make sure it hasn't silently dropped an instruction.

Ultimately I want to improve this situation (and the indentation issue is one that we should be able to solve relatively easily), but since it works as long as you are careful and since Flugan has verified it against shaders from a huge number of games and since any changes I make introduce the risk of breaking it in subtle ways it has been a lower priority.

In the latest 3DMigoto release I included a command line decompiler, which also has Flugan's assembler hooked up (which took writing another 650 LOC and a whole new parser so that Flugan's assembler could work stand-alone, which it was not designed to do). Part of the motivation for that was so that I will be able to address issues like this more easily and add regression tests to minimise the risk of breaking anything.

I'm tracking these issues here:

https://github.com/bo3b/3Dmigoto/issues/36


For the video - sure, I'll try to find some time this weekend to record it.

2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit

Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD

Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword

Posted 02/19/2016 12:47 PM   
[quote="DarkStarSword"]I checked the version you posted on pastebin and the problem was the tabs you used for indentation - Flugan's assembler was written to interpret only what the MS disassembler would produce, not all the variations that a human might do - and since the MS disassembler only ever uses spaces for indentation that's all that Flugan's assembler will accept. The _reasm.txt files we produce are there so you can check it's result and make sure it hasn't silently dropped an instruction. Ultimately I want to improve this situation (and the indentation issue is one that we should be able to solve relatively easily), but since it works as long as you are careful and since Flugan has verified it against shaders from a huge number of games and since any changes I make introduce the risk of breaking it in subtle ways it has been a lower priority. In the latest 3DMigoto release I included a command line decompiler, which also has Flugan's assembler hooked up (which took writing another 650 LOC and a whole new parser so that Flugan's assembler could work stand-alone, which it was not designed to do). Part of the motivation for that was so that I will be able to address issues like this more easily and add regression tests to minimise the risk of breaking anything. I'm tracking these issues here: https://github.com/bo3b/3Dmigoto/issues/36 For the video - sure, I'll try to find some time this weekend to record it.[/quote] Big awesome for the clarification! In any programming IDE I use tabs exactly to avoid any weird indentation if the source code is "moving" around:) I didn't realize that tabs are not ignored and the compiler just drops the lines;) Good to know now;) Only to use spaces;) Big thank you for the movie;) For me it will be very helpful for any future reference;) I have a few other games where I want to fix compute shaders and now that I understand the workflow it would be awesome if I would be able to do it;) Thank you again!
DarkStarSword said:I checked the version you posted on pastebin and the problem was the tabs you used for indentation - Flugan's assembler was written to interpret only what the MS disassembler would produce, not all the variations that a human might do - and since the MS disassembler only ever uses spaces for indentation that's all that Flugan's assembler will accept. The _reasm.txt files we produce are there so you can check it's result and make sure it hasn't silently dropped an instruction.

Ultimately I want to improve this situation (and the indentation issue is one that we should be able to solve relatively easily), but since it works as long as you are careful and since Flugan has verified it against shaders from a huge number of games and since any changes I make introduce the risk of breaking it in subtle ways it has been a lower priority.

In the latest 3DMigoto release I included a command line decompiler, which also has Flugan's assembler hooked up (which took writing another 650 LOC and a whole new parser so that Flugan's assembler could work stand-alone, which it was not designed to do). Part of the motivation for that was so that I will be able to address issues like this more easily and add regression tests to minimise the risk of breaking anything.

I'm tracking these issues here:
https://github.com/bo3b/3Dmigoto/issues/36

For the video - sure, I'll try to find some time this weekend to record it.


Big awesome for the clarification! In any programming IDE I use tabs exactly to avoid any weird indentation if the source code is "moving" around:) I didn't realize that tabs are not ignored and the compiler just drops the lines;)
Good to know now;) Only to use spaces;)

Big thank you for the movie;) For me it will be very helpful for any future reference;) I have a few other games where I want to fix compute shaders and now that I understand the workflow it would be awesome if I would be able to do it;)
Thank you again!

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 02/19/2016 01:23 PM   
Hi guys, I found a shader for the HAIR but I am having trouble trying to stereorize it: [code] //1178b86b2be88a68-ps.txt HAIR PS // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.2.30 on Fri Feb 19 18:53:25 2016 // // // Note: shader requires additional functionality: // Early depth-stencil // // // Buffer Definitions: // // cbuffer cbPerScene // { // // row_major float4x4 g_mViewProj; // Offset: 0 Size: 64 [unused] // row_major float4x4 g_mInvViewProj; // Offset: 64 Size: 64 [unused] // float3 g_vEye; // Offset: 128 Size: 12 [unused] // float g_FiberAlpha; // Offset: 140 Size: 4 [unused] // float2 g_WinSize; // Offset: 144 Size: 8 // float g_FiberRadius; // Offset: 152 Size: 4 [unused] // float g_fvFov; // Offset: 156 Size: 4 [unused] // float2 g_zMinMax; // Offset: 160 Size: 8 [unused] // float g_zWriteValue; // Offset: 168 Size: 4 [unused] // float g_NoiseScale; // Offset: 172 Size: 4 [unused] // float4 g_ScreenExtents; // Offset: 176 Size: 16 // float3 g_dirtColor; // Offset: 192 Size: 12 // float g_dirtLevel; // Offset: 204 Size: 4 // uint g_baseGroupId; // Offset: 208 Size: 4 // uint g_dirtGroupId; // Offset: 212 Size: 4 // float g_widthCurveOverride; // Offset: 216 Size: 4 [unused] // float g_alphaCurveOverride; // Offset: 220 Size: 4 [unused] // float3 g_SlaveOffsetsReferencePosition;// Offset: 224 Size: 12 [unused] // float g_SlaveOffsetsScale; // Offset: 236 Size: 4 [unused] // // } // // Resource bind info for GroupRenderData // { // // struct HairGroupRenderData // { // // float noiseFrequency; // Offset: 0 // float noiseIntensity; // Offset: 4 // // struct curve // { // // float4 samples03; // Offset: 8 // float4 samples47; // Offset: 24 // // } thicknessCurve; // Offset: 8 // // struct curve // { // // float4 samples03; // Offset: 40 // float4 samples47; // Offset: 56 // // } alphaCurve; // Offset: 40 // // } $Element; // Offset: 0 Size: 72 // // } // // Resource bind info for HairElementsUAV // { // // struct ABufferNode // { // // uint uPackedData0; // Offset: 0 // uint uPackedData1; // Offset: 4 // uint uPackedData2_Next; // Offset: 8 // float fDepth; // Offset: 12 // // } $Element; // Offset: 0 Size: 16 // // } // // Resource bind info for HairElementsCounterUAV // { // // uint $Element; // Offset: 0 Size: 4 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // g_sTrilinear sampler NA NA 1 1 // g_txNoise texture float 2d 3 1 // g_txDirt texture float 2d 4 1 // GroupRenderData texture struct r/o 5 1 // HairPixelHeadUAV UAV byte r/w 1 1 // HairElementsUAV UAV struct r/w 2 1 // HairElementsCounterUAV UAV struct r/w 3 1 // cbPerScene cbuffer NA NA 8 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float xyz // TANGENT 0 xyzw 1 NONE float xyzw // TEXCOORD 0 xyzw 2 NONE float xyzw // TEXCOORD 1 xyz 3 NONE float xyz // COLOR 0 xyzw 4 NONE float xyzw // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_5_0 dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil dcl_constantbuffer cb8[14], immediateIndexed dcl_sampler s1, mode_default dcl_resource_texture2d (float,float,float,float) t3 dcl_resource_texture2d (float,float,float,float) t4 dcl_resource_structured t5, 72 dcl_uav_raw u1 dcl_uav_structured u2, 16 dcl_uav_structured u3, 4 dcl_input_ps_siv linear noperspective v0.xyz, position dcl_input_ps linear v1.xyzw dcl_input_ps linear v2.xyzw dcl_input_ps linear v3.xyz dcl_input_ps linear v4.xyzw dcl_output o0.xyzw //dcl_temps 4 dcl_temps 32 dcl_resource_texture2d (float,float,float,float) t125 dp2 r0.x, cb8[11].zzzz, v0.xxxx add r0.xz, r0.xxxx, l(-1.000000, 0.000000, -1.000000, 0.000000) dp2 r1.x, cb8[11].wwww, v0.yyyy add r0.yw, -r1.xxxx, l(0.000000, 1.000000, 0.000000, 1.000000) mul r1.xyzw, v2.xyzw, cb8[9].xyxy mad r0.xyzw, -r0.xyzw, cb8[9].xyxy, r1.xyzw dp2 r0.x, r0.xyxx, r0.xyxx dp2 r0.y, r0.zwzz, r0.zwzz mad r0.zw, v2.xxxy, cb8[9].xxxy, -r1.zzzw dp2 r0.z, r0.zwzz, r0.zwzz sqrt r0.xyz, r0.xyzx //View space correction, therefore need the InvProj._m00 ld_indexable(texture2d)(float,float,float,float) r31.xyzw, l(0, 0, 0, 0), t125.xyzw add r31.w, r0.z, -r31.y mul r31.w, r31.w, r31.x //mul r31.w, r31.w, cb2[81].x add r0.x, r0.x, -r31.w ge r0.w, r0.x, r0.z ge r0.z, r0.y, r0.z and r1.xy, r0.wzww, l(0x3f800000, 0x3f800000, 0, 0) dp2 r0.z, r1.xyxx, r1.xyxx ne r0.z, r0.z, l(0.000000) movc r0.z, r0.z, l(-1.000000), l(1.000000) min r0.x, r0.y, r0.x min r0.x, r0.x, l(1.000000) mad r0.x, r0.z, r0.x, l(1.000000) mul r0.x, r0.x, v3.z lt r0.y, l(0.00776470592), r0.x mov r1.x, v1.w mov r1.y, l(0.500000) sample_indexable(texture2d)(float,float,float,float) r0.z, r1.xyxx, t3.yzxw, s1 if_nz r0.y sample_indexable(texture2d)(float,float,float,float) r0.y, v3.xyxx, t4.yxzw, s1 ftou r0.w, v4.w add r1.x, l(1.000000), -cb8[12].w add r0.y, r0.y, -r1.x add r1.x, l(0.001000), cb8[12].w div_sat r0.y, r0.y, r1.x mad r1.xyz, r0.yyyy, cb8[12].xyzx, -v4.xyzx mad_sat r1.xyz, r0.yyyy, r1.xyzx, v4.xyzx dp3 r1.w, v1.xyzx, v1.xyzx rsq r1.w, r1.w mul r2.xyz, r1.wwww, v1.xyzx ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx mul r0.z, r0.z, r0.w lt r0.y, l(0.500000), r0.y utof r3.xy, cb8[13].yxyy add r0.w, r3.y, v4.w movc r0.y, r0.y, r3.x, r0.w mad_sat r2.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) mul r2.xyz, r2.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) ftou r2.xyz, r2.xyzx ishl r2.yz, r2.yyzy, l(0, 16, 8, 0) imad r0.w, r2.x, l(0x01000000), r2.y iadd r0.w, r0.w, r2.z mad_sat r0.x, -r0.x, l(0.500000), l(1.000000) mul r0.x, r0.x, l(255.000000) ftou r0.xy, r0.xyxx iadd r2.x, r0.w, r0.x mul r1.xyz, r1.xyzx, l(127.000000, 127.000000, 63.000000, 0.000000) ftou r1.xyz, r1.xyzx ishl r0.xw, r1.yyyz, l(18, 0, 0, 12) imad r0.x, r1.x, l(0x02000000), r0.x iadd r0.x, r0.x, r0.w mul_sat r0.z, r0.z, l(4.000000) mul r0.z, r0.z, l(63.000000) ftou r0.z, r0.z ishl r0.z, r0.z, l(6) iadd r0.x, r0.x, r0.z bfi r2.y, l(6), l(0), r0.y, r0.x ftou r0.xy, v0.yxyy imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1) utof r0.xy, r0.xyxx mad r0.x, r0.x, cb8[9].x, r0.y mul r0.x, r0.x, l(4.000000) ftou r0.x, r0.x imm_atomic_exch r0.x, u1, r0.x, r1.x bfi r2.z, l(26), l(0), r0.x, l(0xfc000000) mov r2.w, v0.z store_structured u2.xyzw, r1.x, l(0), r2.xyzw endif mov o0.xyzw, l(1.000000,0,0,1.000000) ret // Approximately 77 instruction slots used [/code] And this is the HLSL output: [code] // ---- Created with 3Dmigoto v1.2.30 on Fri Feb 19 18:53:25 2016 cbuffer cbPerScene : register(b8) { row_major float4x4 g_mViewProj : packoffset(c0); row_major float4x4 g_mInvViewProj : packoffset(c4); float3 g_vEye : packoffset(c8); float g_FiberAlpha : packoffset(c8.w); float2 g_WinSize : packoffset(c9); float g_FiberRadius : packoffset(c9.z); float g_fvFov : packoffset(c9.w); float2 g_zMinMax : packoffset(c10); float g_zWriteValue : packoffset(c10.z); float g_NoiseScale : packoffset(c10.w); float4 g_ScreenExtents : packoffset(c11); float3 g_dirtColor : packoffset(c12); float g_dirtLevel : packoffset(c12.w); uint g_baseGroupId : packoffset(c13); uint g_dirtGroupId : packoffset(c13.y); float g_widthCurveOverride : packoffset(c13.z); float g_alphaCurveOverride : packoffset(c13.w); float3 g_SlaveOffsetsReferencePosition : packoffset(c14); float g_SlaveOffsetsScale : packoffset(c14.w); } SamplerState g_sTrilinear_s : register(s1); Texture2D<float> g_txNoise : register(t3); Texture2D<float> g_txDirt : register(t4); StructuredBuffer<GroupRenderData> GroupRenderData : register(t5); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_POSITION0, float4 v1 : TANGENT0, float4 v2 : TEXCOORD0, float3 v3 : TEXCOORD1, float4 v4 : COLOR0, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3; uint4 bitmask, uiDest; float4 fDest; r0.x = dot(g_ScreenExtents.zz, v0.xx); r0.xz = float2(-1,-1) + r0.xx; r1.x = dot(g_ScreenExtents.ww, v0.yy); r0.yw = float2(1,1) + -r1.xx; r1.xyzw = g_WinSize.xyxy * v2.xyzw; r0.xyzw = -r0.xyzw * g_WinSize.xyxy + r1.xyzw; r0.x = dot(r0.xy, r0.xy); r0.y = dot(r0.zw, r0.zw); r0.zw = v2.xy * g_WinSize.xy + -r1.zw; r0.z = dot(r0.zw, r0.zw); r0.xyz = sqrt(r0.xyz); r0.w = cmp(r0.x >= r0.z); r0.z = cmp(r0.y >= r0.z); r1.xy = r0.wz ? 1.000000 : 0; r0.z = dot(r1.xy, r1.xy); r0.z = cmp(r0.z != 0.000000); r0.z = r0.z ? -1 : 1; r0.x = min(r0.x, r0.y); r0.x = min(1, r0.x); r0.x = r0.z * r0.x + 1; r0.x = v3.z * r0.x; r0.y = cmp(0.00776470592 < r0.x); r1.x = v1.w; r1.y = 0.5; r0.z = g_txNoise.Sample(g_sTrilinear_s, r1.xy).x; if (r0.y != 0) { r0.y = g_txDirt.Sample(g_sTrilinear_s, v3.xy).x; r0.w = (uint)v4.w; r1.x = -g_dirtLevel + 1; r0.y = -r1.x + r0.y; r1.x = g_dirtLevel + 0.00100000005; r0.y = saturate(r0.y / r1.x); r1.xyz = r0.yyy * g_dirtColor.xyz + -v4.xyz; r1.xyz = saturate(r0.yyy * r1.xyz + v4.xyz); r1.w = dot(v1.xyz, v1.xyz); r1.w = rsqrt(r1.w); r2.xyz = v1.xyz * r1.www; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx r0.w = g_sTrilinear[]..swiz; r0.z = r0.w * r0.z; r0.y = cmp(0.5 < r0.y); r3.xy = g_dirtGroupId; r0.w = v4.w + r3.y; r0.y = r0.y ? r3.x : r0.w; r2.xyz = saturate(r2.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5)); r2.xyz = float3(255,255,255) * r2.xyz; r2.xyz = (uint3)r2.xyz; r2.yz = (uint2)r2.yz << int2(16,8); r0.w = mad((int)r2.x, 0x01000000, (int)r2.y); r0.w = (int)r0.w + (int)r2.z; r0.x = saturate(-r0.x * 0.5 + 1); r0.x = 255 * r0.x; r0.xy = (uint2)r0.xy; r2.x = (int)r0.w + (int)r0.x; r1.xyz = float3(127,127,63) * r1.xyz; r1.xyz = (uint3)r1.xyz; r0.xw = (uint2)r1.yz << int2(18,12); r0.x = mad((int)r1.x, 0x02000000, (int)r0.x); r0.x = (int)r0.x + (int)r0.w; r0.z = saturate(4 * r0.z); r0.z = 63 * r0.z; r0.z = (uint)r0.z; r0.z = (uint)r0.z << 6; r0.x = (int)r0.x + (int)r0.z; bitmask.y = ((~(-1 << 6)) << 0) & 0xffffffff; r2.y = (((uint)r0.y << 0) & bitmask.y) | ((uint)r0.x & ~bitmask.y); r0.xy = (uint2)v0.yx; // Needs manual fix for instruction: imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1) InterlockedAdd?(dest, value, orig_value); r0.xy = (uint2)r0.xy; r0.x = r0.x * g_WinSize.x + r0.y; r0.x = 4 * r0.x; r0.x = (uint)r0.x; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [/code] Anyone has any idea?:) what I might do wrong? Doing the correction there makes absolutely no difference...
Hi guys,

I found a shader for the HAIR but I am having trouble trying to stereorize it:
//1178b86b2be88a68-ps.txt HAIR PS
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.2.30 on Fri Feb 19 18:53:25 2016
//
//
// Note: shader requires additional functionality:
// Early depth-stencil
//
//
// Buffer Definitions:
//
// cbuffer cbPerScene
// {
//
// row_major float4x4 g_mViewProj; // Offset: 0 Size: 64 [unused]
// row_major float4x4 g_mInvViewProj; // Offset: 64 Size: 64 [unused]
// float3 g_vEye; // Offset: 128 Size: 12 [unused]
// float g_FiberAlpha; // Offset: 140 Size: 4 [unused]
// float2 g_WinSize; // Offset: 144 Size: 8
// float g_FiberRadius; // Offset: 152 Size: 4 [unused]
// float g_fvFov; // Offset: 156 Size: 4 [unused]
// float2 g_zMinMax; // Offset: 160 Size: 8 [unused]
// float g_zWriteValue; // Offset: 168 Size: 4 [unused]
// float g_NoiseScale; // Offset: 172 Size: 4 [unused]
// float4 g_ScreenExtents; // Offset: 176 Size: 16
// float3 g_dirtColor; // Offset: 192 Size: 12
// float g_dirtLevel; // Offset: 204 Size: 4
// uint g_baseGroupId; // Offset: 208 Size: 4
// uint g_dirtGroupId; // Offset: 212 Size: 4
// float g_widthCurveOverride; // Offset: 216 Size: 4 [unused]
// float g_alphaCurveOverride; // Offset: 220 Size: 4 [unused]
// float3 g_SlaveOffsetsReferencePosition;// Offset: 224 Size: 12 [unused]
// float g_SlaveOffsetsScale; // Offset: 236 Size: 4 [unused]
//
// }
//
// Resource bind info for GroupRenderData
// {
//
// struct HairGroupRenderData
// {
//
// float noiseFrequency; // Offset: 0
// float noiseIntensity; // Offset: 4
//
// struct curve
// {
//
// float4 samples03; // Offset: 8
// float4 samples47; // Offset: 24
//
// } thicknessCurve; // Offset: 8
//
// struct curve
// {
//
// float4 samples03; // Offset: 40
// float4 samples47; // Offset: 56
//
// } alphaCurve; // Offset: 40
//
// } $Element; // Offset: 0 Size: 72
//
// }
//
// Resource bind info for HairElementsUAV
// {
//
// struct ABufferNode
// {
//
// uint uPackedData0; // Offset: 0
// uint uPackedData1; // Offset: 4
// uint uPackedData2_Next; // Offset: 8
// float fDepth; // Offset: 12
//
// } $Element; // Offset: 0 Size: 16
//
// }
//
// Resource bind info for HairElementsCounterUAV
// {
//
// uint $Element; // Offset: 0 Size: 4
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_sTrilinear sampler NA NA 1 1
// g_txNoise texture float 2d 3 1
// g_txDirt texture float 2d 4 1
// GroupRenderData texture struct r/o 5 1
// HairPixelHeadUAV UAV byte r/w 1 1
// HairElementsUAV UAV struct r/w 2 1
// HairElementsCounterUAV UAV struct r/w 3 1
// cbPerScene cbuffer NA NA 8 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyz
// TANGENT 0 xyzw 1 NONE float xyzw
// TEXCOORD 0 xyzw 2 NONE float xyzw
// TEXCOORD 1 xyz 3 NONE float xyz
// COLOR 0 xyzw 4 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil
dcl_constantbuffer cb8[14], immediateIndexed
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_structured t5, 72
dcl_uav_raw u1
dcl_uav_structured u2, 16
dcl_uav_structured u3, 4
dcl_input_ps_siv linear noperspective v0.xyz, position
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyzw
dcl_output o0.xyzw
//dcl_temps 4

dcl_temps 32
dcl_resource_texture2d (float,float,float,float) t125

dp2 r0.x, cb8[11].zzzz, v0.xxxx
add r0.xz, r0.xxxx, l(-1.000000, 0.000000, -1.000000, 0.000000)
dp2 r1.x, cb8[11].wwww, v0.yyyy
add r0.yw, -r1.xxxx, l(0.000000, 1.000000, 0.000000, 1.000000)
mul r1.xyzw, v2.xyzw, cb8[9].xyxy
mad r0.xyzw, -r0.xyzw, cb8[9].xyxy, r1.xyzw
dp2 r0.x, r0.xyxx, r0.xyxx
dp2 r0.y, r0.zwzz, r0.zwzz
mad r0.zw, v2.xxxy, cb8[9].xxxy, -r1.zzzw
dp2 r0.z, r0.zwzz, r0.zwzz
sqrt r0.xyz, r0.xyzx

//View space correction, therefore need the InvProj._m00
ld_indexable(texture2d)(float,float,float,float) r31.xyzw, l(0, 0, 0, 0), t125.xyzw
add r31.w, r0.z, -r31.y
mul r31.w, r31.w, r31.x
//mul r31.w, r31.w, cb2[81].x
add r0.x, r0.x, -r31.w

ge r0.w, r0.x, r0.z
ge r0.z, r0.y, r0.z
and r1.xy, r0.wzww, l(0x3f800000, 0x3f800000, 0, 0)
dp2 r0.z, r1.xyxx, r1.xyxx
ne r0.z, r0.z, l(0.000000)
movc r0.z, r0.z, l(-1.000000), l(1.000000)
min r0.x, r0.y, r0.x
min r0.x, r0.x, l(1.000000)
mad r0.x, r0.z, r0.x, l(1.000000)
mul r0.x, r0.x, v3.z
lt r0.y, l(0.00776470592), r0.x
mov r1.x, v1.w
mov r1.y, l(0.500000)
sample_indexable(texture2d)(float,float,float,float) r0.z, r1.xyxx, t3.yzxw, s1
if_nz r0.y
sample_indexable(texture2d)(float,float,float,float) r0.y, v3.xyxx, t4.yxzw, s1
ftou r0.w, v4.w
add r1.x, l(1.000000), -cb8[12].w
add r0.y, r0.y, -r1.x
add r1.x, l(0.001000), cb8[12].w
div_sat r0.y, r0.y, r1.x
mad r1.xyz, r0.yyyy, cb8[12].xyzx, -v4.xyzx
mad_sat r1.xyz, r0.yyyy, r1.xyzx, v4.xyzx
dp3 r1.w, v1.xyzx, v1.xyzx
rsq r1.w, r1.w
mul r2.xyz, r1.wwww, v1.xyzx
ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx
mul r0.z, r0.z, r0.w
lt r0.y, l(0.500000), r0.y
utof r3.xy, cb8[13].yxyy
add r0.w, r3.y, v4.w
movc r0.y, r0.y, r3.x, r0.w
mad_sat r2.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
mul r2.xyz, r2.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000)
ftou r2.xyz, r2.xyzx
ishl r2.yz, r2.yyzy, l(0, 16, 8, 0)
imad r0.w, r2.x, l(0x01000000), r2.y
iadd r0.w, r0.w, r2.z
mad_sat r0.x, -r0.x, l(0.500000), l(1.000000)
mul r0.x, r0.x, l(255.000000)
ftou r0.xy, r0.xyxx
iadd r2.x, r0.w, r0.x
mul r1.xyz, r1.xyzx, l(127.000000, 127.000000, 63.000000, 0.000000)
ftou r1.xyz, r1.xyzx
ishl r0.xw, r1.yyyz, l(18, 0, 0, 12)
imad r0.x, r1.x, l(0x02000000), r0.x
iadd r0.x, r0.x, r0.w
mul_sat r0.z, r0.z, l(4.000000)
mul r0.z, r0.z, l(63.000000)
ftou r0.z, r0.z
ishl r0.z, r0.z, l(6)
iadd r0.x, r0.x, r0.z
bfi r2.y, l(6), l(0), r0.y, r0.x
ftou r0.xy, v0.yxyy
imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1)
utof r0.xy, r0.xyxx
mad r0.x, r0.x, cb8[9].x, r0.y
mul r0.x, r0.x, l(4.000000)
ftou r0.x, r0.x
imm_atomic_exch r0.x, u1, r0.x, r1.x
bfi r2.z, l(26), l(0), r0.x, l(0xfc000000)
mov r2.w, v0.z
store_structured u2.xyzw, r1.x, l(0), r2.xyzw
endif
mov o0.xyzw, l(1.000000,0,0,1.000000)
ret
// Approximately 77 instruction slots used


And this is the HLSL output:
// ---- Created with 3Dmigoto v1.2.30 on Fri Feb 19 18:53:25 2016

cbuffer cbPerScene : register(b8)
{
row_major float4x4 g_mViewProj : packoffset(c0);
row_major float4x4 g_mInvViewProj : packoffset(c4);
float3 g_vEye : packoffset(c8);
float g_FiberAlpha : packoffset(c8.w);
float2 g_WinSize : packoffset(c9);
float g_FiberRadius : packoffset(c9.z);
float g_fvFov : packoffset(c9.w);
float2 g_zMinMax : packoffset(c10);
float g_zWriteValue : packoffset(c10.z);
float g_NoiseScale : packoffset(c10.w);
float4 g_ScreenExtents : packoffset(c11);
float3 g_dirtColor : packoffset(c12);
float g_dirtLevel : packoffset(c12.w);
uint g_baseGroupId : packoffset(c13);
uint g_dirtGroupId : packoffset(c13.y);
float g_widthCurveOverride : packoffset(c13.z);
float g_alphaCurveOverride : packoffset(c13.w);
float3 g_SlaveOffsetsReferencePosition : packoffset(c14);
float g_SlaveOffsetsScale : packoffset(c14.w);
}

SamplerState g_sTrilinear_s : register(s1);
Texture2D<float> g_txNoise : register(t3);
Texture2D<float> g_txDirt : register(t4);
StructuredBuffer<GroupRenderData> GroupRenderData : register(t5);


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


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

r0.x = dot(g_ScreenExtents.zz, v0.xx);
r0.xz = float2(-1,-1) + r0.xx;
r1.x = dot(g_ScreenExtents.ww, v0.yy);
r0.yw = float2(1,1) + -r1.xx;
r1.xyzw = g_WinSize.xyxy * v2.xyzw;
r0.xyzw = -r0.xyzw * g_WinSize.xyxy + r1.xyzw;
r0.x = dot(r0.xy, r0.xy);
r0.y = dot(r0.zw, r0.zw);
r0.zw = v2.xy * g_WinSize.xy + -r1.zw;
r0.z = dot(r0.zw, r0.zw);
r0.xyz = sqrt(r0.xyz);
r0.w = cmp(r0.x >= r0.z);
r0.z = cmp(r0.y >= r0.z);
r1.xy = r0.wz ? 1.000000 : 0;
r0.z = dot(r1.xy, r1.xy);
r0.z = cmp(r0.z != 0.000000);
r0.z = r0.z ? -1 : 1;
r0.x = min(r0.x, r0.y);
r0.x = min(1, r0.x);
r0.x = r0.z * r0.x + 1;
r0.x = v3.z * r0.x;
r0.y = cmp(0.00776470592 < r0.x);
r1.x = v1.w;
r1.y = 0.5;
r0.z = g_txNoise.Sample(g_sTrilinear_s, r1.xy).x;
if (r0.y != 0) {
r0.y = g_txDirt.Sample(g_sTrilinear_s, v3.xy).x;
r0.w = (uint)v4.w;
r1.x = -g_dirtLevel + 1;
r0.y = -r1.x + r0.y;
r1.x = g_dirtLevel + 0.00100000005;
r0.y = saturate(r0.y / r1.x);
r1.xyz = r0.yyy * g_dirtColor.xyz + -v4.xyz;
r1.xyz = saturate(r0.yyy * r1.xyz + v4.xyz);
r1.w = dot(v1.xyz, v1.xyz);
r1.w = rsqrt(r1.w);
r2.xyz = v1.xyz * r1.www;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx
r0.w = g_sTrilinear[]..swiz;
r0.z = r0.w * r0.z;
r0.y = cmp(0.5 < r0.y);
r3.xy = g_dirtGroupId;
r0.w = v4.w + r3.y;
r0.y = r0.y ? r3.x : r0.w;
r2.xyz = saturate(r2.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5));
r2.xyz = float3(255,255,255) * r2.xyz;
r2.xyz = (uint3)r2.xyz;
r2.yz = (uint2)r2.yz << int2(16,8);
r0.w = mad((int)r2.x, 0x01000000, (int)r2.y);
r0.w = (int)r0.w + (int)r2.z;
r0.x = saturate(-r0.x * 0.5 + 1);
r0.x = 255 * r0.x;
r0.xy = (uint2)r0.xy;
r2.x = (int)r0.w + (int)r0.x;
r1.xyz = float3(127,127,63) * r1.xyz;
r1.xyz = (uint3)r1.xyz;
r0.xw = (uint2)r1.yz << int2(18,12);
r0.x = mad((int)r1.x, 0x02000000, (int)r0.x);
r0.x = (int)r0.x + (int)r0.w;
r0.z = saturate(4 * r0.z);
r0.z = 63 * r0.z;
r0.z = (uint)r0.z;
r0.z = (uint)r0.z << 6;
r0.x = (int)r0.x + (int)r0.z;
bitmask.y = ((~(-1 << 6)) << 0) & 0xffffffff;
r2.y = (((uint)r0.y << 0) & bitmask.y) | ((uint)r0.x & ~bitmask.y);
r0.xy = (uint2)v0.yx;
// Needs manual fix for instruction:
imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1)
InterlockedAdd?(dest, value, orig_value);
r0.xy = (uint2)r0.xy;
r0.x = r0.x * g_WinSize.x + r0.y;
r0.x = 4 * r0.x;
r0.x = (uint)r0.x;
}

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


Anyone has any idea?:) what I might do wrong? Doing the correction there makes absolutely no difference...

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 02/19/2016 07:03 PM   
Actually I think the HAIR shader is this: http://pastebin.com/fhA5Yrzx (Shader was too long to post here) But have no idea how to make it stereo...hmmm.. Any idea? DarkStarSword, a helping hand pretty please? ^_^
Actually I think the HAIR shader is this:
http://pastebin.com/fhA5Yrzx
(Shader was too long to post here)
But have no idea how to make it stereo...hmmm.. Any idea? DarkStarSword, a helping hand pretty please? ^_^

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 02/19/2016 07:23 PM   
Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :( Damn!
Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :(
Damn!

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 02/20/2016 12:51 AM   
[quote="DarkStarSword"]All fixed. The remaining clipping was coming from LightMinMaxBuffer, which was generated from yet another shader that I tracked down in the same way as before. I also moved the correction in the shader I looked at last night as once I got into the game it was clear that it wasn't quite right. [img]http://darkstarsword.net/rottr/ROTTR%20-%202016-02-19%20-%20173926.0.jps[/img] [img]http://darkstarsword.net/rottr/ROTTR%20-%202016-02-19%20-%20172053.0.jps[/img] And using a custom shader on the [Present] call to show the output of the tile lighting pixel shader in real time ;-) [img]http://darkstarsword.net/rottr/ROTTR%20-%202016-02-19%20-%20173036.0.jps[/img] Here's the shaders: [url]http://darkstarsword.net/rottr/f72d0d363421b2a2-cs.txt[/url] (LightMinMaxBuffer) [url]http://darkstarsword.net/rottr/7f7bfaf4107cba4e-cs.txt[/url] (LightIndexBuffer) Plus the pixel shader Mike fixed that consumes LightIndexBuffer. [/quote] Great news! I am somewhat confused at what I was doing wrong though - I had identified the two CS's and vPosition as the variable to fix, but nothing ever happened when I made a correction. Absolutely nothing. I'd even figured out it was view space due to the way the coords were combined elsewhere in the shader. I wonder if it was the same issue that Helifax reported with tabs/spaces or whatnot? Grrrrr.... lol. Anyway, it's sorted now so that is fantastic :-) **EDIT Actually looks like I missed shader f72... afterall (at least I can't find any attempt to fix it) so that would explain why I never got it working ;-)
DarkStarSword said:All fixed. The remaining clipping was coming from LightMinMaxBuffer, which was generated from yet another shader that I tracked down in the same way as before. I also moved the correction in the shader I looked at last night as once I got into the game it was clear that it wasn't quite right.

Image

Image


And using a custom shader on the [Present] call to show the output of the tile lighting pixel shader in real time ;-)

Image

Here's the shaders:
http://darkstarsword.net/rottr/f72d0d363421b2a2-cs.txt (LightMinMaxBuffer)
http://darkstarsword.net/rottr/7f7bfaf4107cba4e-cs.txt (LightIndexBuffer)

Plus the pixel shader Mike fixed that consumes LightIndexBuffer.

Great news! I am somewhat confused at what I was doing wrong though - I had identified the two CS's and vPosition as the variable to fix, but nothing ever happened when I made a correction. Absolutely nothing. I'd even figured out it was view space due to the way the coords were combined elsewhere in the shader. I wonder if it was the same issue that Helifax reported with tabs/spaces or whatnot? Grrrrr.... lol. Anyway, it's sorted now so that is fantastic :-)

**EDIT Actually looks like I missed shader f72... afterall (at least I can't find any attempt to fix it) so that would explain why I never got it working ;-)

Rig: Intel i7-8700K @4.7GHz, 16Gb Ram, SSD, GTX 1080Ti, Win10x64, Asus VG278

Posted 02/20/2016 04:27 AM   
[quote="helifax"]Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :( Damn![/quote] Hi Helifax - what's not right?
helifax said:Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :(
Damn!

Hi Helifax - what's not right?

Rig: Intel i7-8700K @4.7GHz, 16Gb Ram, SSD, GTX 1080Ti, Win10x64, Asus VG278

Posted 02/20/2016 04:28 AM   
I'll take a look at the hair [quote="helifax"]Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :( Damn![/quote]Would you mind sending me a copy of the script? I can't promise anything in the short term, but at some point I'd like to add scripting support to 3DMigoto and this seems to be the game that will most benefit from it.
I'll take a look at the hair

helifax said:Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :(
Damn!
Would you mind sending me a copy of the script? I can't promise anything in the short term, but at some point I'd like to add scripting support to 3DMigoto and this seems to be the game that will most benefit from it.

2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit

Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD

Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword

Posted 02/20/2016 04:40 AM   
Hair fixed: [img]http://darkstarsword.net/rottr/ROTTR%20-%202016-02-20%20-%20184529.0.jps[/img] Two shaders for this - one is used when the game is paused, the other while the physics are live: [url]http://darkstarsword.net/rottr/28847888d80b0843-vs.txt[/url] [url]http://darkstarsword.net/rottr/609b69e7ffa478fa-vs.txt[/url] There might still be a problem with physics - it looks fine where I am in the game, but the UAV 4 output (VelocityBuffer) from the corresponding pixel shader looks very wrong in 3D. 2D VelocityBuffer (delta before / after draw call): [img]http://darkstarsword.net/rottr/2016-02-20_00001.jpg[/img] 3D VelocityBuffer (delta before / after draw call): [img]http://darkstarsword.net/rottr/ROTTR%20-%202016-02-20%20-%20190658.0.jps[/img] If the hair behaves fine then whatever, but if there are any issues with it, or if it seems to affect other physics in the game we might revisit that.
Hair fixed:

Image

Two shaders for this - one is used when the game is paused, the other while the physics are live:
http://darkstarsword.net/rottr/28847888d80b0843-vs.txt
http://darkstarsword.net/rottr/609b69e7ffa478fa-vs.txt

There might still be a problem with physics - it looks fine where I am in the game, but the UAV 4 output (VelocityBuffer) from the corresponding pixel shader looks very wrong in 3D.

2D VelocityBuffer (delta before / after draw call):
Image

3D VelocityBuffer (delta before / after draw call):
Image

If the hair behaves fine then whatever, but if there are any issues with it, or if it seems to affect other physics in the game we might revisit that.

2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit

Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD

Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword

Posted 02/20/2016 08:03 AM   
You guys are amazing! Whenever this patch is released, I will finally buy this game. Have been postponing it till it's 3D Vision ready...
You guys are amazing! Whenever this patch is released, I will finally buy this game. Have been postponing it till it's 3D Vision ready...

Posted 02/20/2016 08:59 AM   
DAMN! Big thanks DarkStarSword! I swear to God I tried to correct it in the VS before (as normally would go when geometry is rendered in 2D), but nothing seemed to work:( I know where are 2 VS for the hair but for some reason it didn't work:( Maybe I had to correct both of them in the same time, rather than 1 at a time and look for results:)) Regarding the PhysX I wouldn't care too much. There is some flickering in SLI on tessellated geometry and grass in some parts of the game. And the PhysX seems to be a bit funky at times... [quote="DarkStarSword"]I'll take a look at the hair [quote="helifax"]Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :( Damn![/quote]Would you mind sending me a copy of the script? I can't promise anything in the short term, but at some point I'd like to add scripting support to 3DMigoto and this seems to be the game that will most benefit from it.[/quote] Sure! I can send you the script I have from Mike;) Nothing to worry about regarding the other 28K shader pass;) Already fixed it yesterday;) Basically Mike's script generated a lot of FALSE positives;) A double correction is needed for decals and other elements;) However, the script was too broad and it also affecting geometry Rendering shaders;) Applying the second correction made the Ambient occlusion cast on the geometry to look wrong (like a HALO) effect. Now, per scene are around 600 shaders PS and 100+ VS. Each object has at least 2PS (one for geometry and one for reflections/other VFX). From these 2 PS per object the geometry one doesn't need the double correction;) Having all the shaders double-corrected made the image look very wrong the moment you moved. You couldn't say exactly what was wrong (as the effect was so subtle) but ENOUGH that your brain said "something" is wrong;) To be fair, I didn't noticed it too much on a single screen until I started the game on Surround (where due to the huge screen size everything that is not properly "align" gets even more miss-aligned) and there I saw it plain as day;) I fixed all the problems using Regex regular expressions and found very handy tool to mass process multi-line regex expressions. I can send you the regular expression that I used to run another pass:) I think if you will add support to 3DMigoto for mass replacement you should use regular expressions. I haven't look to see if there is a library for C/C++ that does this BUT I know Python has support. I expect a library on C/C++ will exist though;)
DAMN! Big thanks DarkStarSword!

I swear to God I tried to correct it in the VS before (as normally would go when geometry is rendered in 2D), but nothing seemed to work:( I know where are 2 VS for the hair but for some reason it didn't work:( Maybe I had to correct both of them in the same time, rather than 1 at a time and look for results:))

Regarding the PhysX I wouldn't care too much. There is some flickering in SLI on tessellated geometry and grass in some parts of the game. And the PhysX seems to be a bit funky at times...

DarkStarSword said:I'll take a look at the hair

helifax said:Something is not quite rights... Hmm... I think I need to run the script again through all 28k shaders.... :(
Damn!
Would you mind sending me a copy of the script? I can't promise anything in the short term, but at some point I'd like to add scripting support to 3DMigoto and this seems to be the game that will most benefit from it.


Sure! I can send you the script I have from Mike;)

Nothing to worry about regarding the other 28K shader pass;) Already fixed it yesterday;) Basically Mike's script generated a lot of FALSE positives;) A double correction is needed for decals and other elements;)
However, the script was too broad and it also affecting geometry Rendering shaders;)
Applying the second correction made the Ambient occlusion cast on the geometry to look wrong (like a HALO) effect.
Now, per scene are around 600 shaders PS and 100+ VS. Each object has at least 2PS (one for geometry and one for reflections/other VFX). From these 2 PS per object the geometry one doesn't need the double correction;)
Having all the shaders double-corrected made the image look very wrong the moment you moved. You couldn't say exactly what was wrong (as the effect was so subtle) but ENOUGH that your brain said "something" is wrong;)
To be fair, I didn't noticed it too much on a single screen until I started the game on Surround (where due to the huge screen size everything that is not properly "align" gets even more miss-aligned) and there I saw it plain as day;)

I fixed all the problems using Regex regular expressions and found very handy tool to mass process multi-line regex expressions. I can send you the regular expression that I used to run another pass:)

I think if you will add support to 3DMigoto for mass replacement you should use regular expressions. I haven't look to see if there is a library for C/C++ that does this BUT I know Python has support. I expect a library on C/C++ will exist though;)

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 02/20/2016 12:55 PM   
There is native support for regular expressions in C++, but I tried using it once and found that Microsoft's implementation is a total buggy mess for just about anything more sophisticated than .* (I don't recall exactly what I was trying to do, but it was relatively basic and the same regular expression worked fine in Python, so that didn't inspire me with much confidence to rely on their implementation for anything actually advanced). I'm sure there's other regular expression libraries I could integrate, but I'm leaning more towards integrating Python support since it's my favorite language and regular expressions work flawlessly in it, plus I already have a bunch of Python code for manipulating HLSL and assembly shaders, including some fairly advanced routines to handle halo fixes with all sorts of edge case (check auto_fix_vertex_halo() and scan_shader() implemented in both hlsltool.py and shadertool.py).
There is native support for regular expressions in C++, but I tried using it once and found that Microsoft's implementation is a total buggy mess for just about anything more sophisticated than .* (I don't recall exactly what I was trying to do, but it was relatively basic and the same regular expression worked fine in Python, so that didn't inspire me with much confidence to rely on their implementation for anything actually advanced).

I'm sure there's other regular expression libraries I could integrate, but I'm leaning more towards integrating Python support since it's my favorite language and regular expressions work flawlessly in it, plus I already have a bunch of Python code for manipulating HLSL and assembly shaders, including some fairly advanced routines to handle halo fixes with all sorts of edge case (check auto_fix_vertex_halo() and scan_shader() implemented in both hlsltool.py and shadertool.py).

2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit

Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD

Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword

Posted 02/20/2016 01:33 PM   
  22 / 41    
Scroll To Top