Metal gear solid V: The panthom pain
  4 / 15    
But this is a good start. according to bo3b fix like that was very hard to do.
But this is a good start. according to bo3b fix like that was very hard to do.

CPU: Intel Core i7 4770 @ 3.4GHz (8 CPUs) 8MB cache Motherboard: Gigabyte GA-B85M Memory: 8GB DDR3 1600MHz RAM Operation System : Windows 7 Ultimate 64-bit English Video card : Geforce GTX 680 Zotac 2048MB Monitor : Alienware AW2310 Power-supply: Seasonic SSP-650RT 650W Active PFC

#46
Posted 09/10/2015 11:47 PM   
[quote="dekgol"]But this is a good start. according to bo3b fix like that was very hard to do.[/quote] There is NO FIX, just low Depth and High Convergence! You can do it as well..../sigh (using the nvidia shortcut keys) The poster just took some screenshots without giving any usable information... just some screenshot.
dekgol said:But this is a good start. according to bo3b fix like that was very hard to do.


There is NO FIX, just low Depth and High Convergence! You can do it as well..../sigh (using the nvidia shortcut keys)
The poster just took some screenshots without giving any usable information... just some screenshot.

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)

#47
Posted 09/11/2015 08:44 AM   
(don't know if you have same "issue" but takes very long time to load those pics...)
(don't know if you have same "issue" but takes very long time to load those pics...)

i5 4670K 4.4 Ghz H2O, G.skill 16GB @2.4 Ghz C10, 2xGTX970 G1 SLI, AOC G2460PG, G-sync+3D Vision 2, Win 7x64(ssd), Games on RAID-0

#48
Posted 09/11/2015 11:58 AM   
Man, there have been so many scenes where I was thinking how magnificent it would look in 3D.
Man, there have been so many scenes where I was thinking how magnificent it would look in 3D.

#49
Posted 09/11/2015 02:22 PM   
[quote="spanian77"](don't know if you have same "issue" but takes very long time to load those pics...)[/quote] Agree
spanian77 said:(don't know if you have same "issue" but takes very long time to load those pics...)


Agree

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

#50
Posted 09/11/2015 03:59 PM   
I [quote=""][quote="spanian77"](don't know if you have same "issue" but takes very long time to load those pics...)[/quote] Agree [/quote] I thought it was my internet access. They loaded fine before
I
said:
spanian77 said:(don't know if you have same "issue" but takes very long time to load those pics...)


Agree



I thought it was my internet access. They loaded fine before

Intel Core i9-9820x @ 3.30GHZ
32 gig Ram
2 EVGA RTX 2080 ti Gaming
3 X ASUS ROG SWIFT 27 144Hz G-SYNC Gaming 3D Monitor [PG278Q]
1 X ASUS VG278HE
Nvidia 3Dvision
Oculus Rift
HTC VIVE
Windows 10

#51
Posted 09/11/2015 04:52 PM   
They're 5MB 3840x1080 lossless PNG files from a slow host. Yeah it takes a long time to load
They're 5MB 3840x1080 lossless PNG files from a slow host.

Yeah it takes a long time to load

#52
Posted 09/11/2015 08:33 PM   
This is how the game looks for me, I have hunted both VS and PS not finding anything causing it. Dumped shaders and found 5 compute shaders I have yet to play around with. No fixes applied and can't say the game looks good. [img]http://www.flugan.net/mgsvtpp01_50.jpg[/img]
This is how the game looks for me, I have hunted both VS and PS not finding anything causing it. Dumped shaders and found 5 compute shaders I have yet to play around with. No fixes applied and can't say the game looks good.

Image

Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?

donations: ulfjalmbrant@hotmail.com

#53
Posted 09/12/2015 08:19 AM   
That image looks like a fairly common halo fix, where the texture for a given surface has not been stereoized by 3D Vision Automatic properly. Might be possible to improve that with profile bits. You should be able to narrow down the VertexShader for the doctor for example. The halo happens because the texture for his face and coat is misaligned with the actual vertices in the model. So, the normal fix is to stereoize (Prime Directive) the texture output in the VS. When hunting, are you seeing the doctor wink out? For normal style hunting, you'll want to SetVertexShader(null).
That image looks like a fairly common halo fix, where the texture for a given surface has not been stereoized by 3D Vision Automatic properly. Might be possible to improve that with profile bits.

You should be able to narrow down the VertexShader for the doctor for example. The halo happens because the texture for his face and coat is misaligned with the actual vertices in the model. So, the normal fix is to stereoize (Prime Directive) the texture output in the VS.

When hunting, are you seeing the doctor wink out?

For normal style hunting, you'll want to SetVertexShader(null).

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

#54
Posted 09/13/2015 01:10 AM   
I have not played around with profiles yet. I'm unable to hunt the halo VS
I have not played around with profiles yet.

I'm unable to hunt the halo VS

Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?

donations: ulfjalmbrant@hotmail.com

#55
Posted 09/13/2015 09:33 AM   
[quote="Flugan"]I have not played around with profiles yet. I'm unable to hunt the halo VS[/quote] How does your code go about doing the hunting? Is it similar to the 3Dmigoto approach, or something different? If you aren't seeing the shader blink off while hunting, that suggests something is wrong with the hunting code, like maybe not all shaders are being added to a 'recent' or 'frame' map. Or the shader is created before your code is running and thus not in the complete set of shaders. There must be a vertex shader associated with that effect, it would be extremely unlikely to draw something so prosaic with a computer shader. Still unlikely, but possible that they are using tesselation to round out his head. Still need a VS to start the pipeline though.
Flugan said:I have not played around with profiles yet.

I'm unable to hunt the halo VS

How does your code go about doing the hunting? Is it similar to the 3Dmigoto approach, or something different?

If you aren't seeing the shader blink off while hunting, that suggests something is wrong with the hunting code, like maybe not all shaders are being added to a 'recent' or 'frame' map. Or the shader is created before your code is running and thus not in the complete set of shaders.

There must be a vertex shader associated with that effect, it would be extremely unlikely to draw something so prosaic with a computer shader.

Still unlikely, but possible that they are using tesselation to round out his head. Still need a VS to start the pipeline though.

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

#56
Posted 09/14/2015 04:44 AM   
Something is clearly wrong with my wrapper and hunting. Not sure what the problem is but the hunting code is rewritten using Present to cull the active shaders list. Also weird shaders end up in my log with 0 hash and is untraceable. Used my old wrapper and I could hunt fine. I don't know what is wrong and will likely not figure it out soon. Happy to have something working.
Something is clearly wrong with my wrapper and hunting.
Not sure what the problem is but the hunting code is rewritten using Present to cull the active shaders list.
Also weird shaders end up in my log with 0 hash and is untraceable.

Used my old wrapper and I could hunt fine.

I don't know what is wrong and will likely not figure it out soon.
Happy to have something working.

Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?

donations: ulfjalmbrant@hotmail.com

#57
Posted 09/14/2015 06:55 AM   
[quote="Flugan"]Something is clearly wrong with my wrapper and hunting. Not sure what the problem is but the hunting code is rewritten using Present to cull the active shaders list. Also weird shaders end up in my log with 0 hash and is untraceable. Used my old wrapper and I could hunt fine. I don't know what is wrong and will likely not figure it out soon. Happy to have something working. [/quote] Sounds good. The culling of only active shaders is just a convenience, not a requirement. If you can find the VS for that doctor image with your old wrapper and post it here, we can help you fix it.
Flugan said:Something is clearly wrong with my wrapper and hunting.
Not sure what the problem is but the hunting code is rewritten using Present to cull the active shaders list.
Also weird shaders end up in my log with 0 hash and is untraceable.

Used my old wrapper and I could hunt fine.

I don't know what is wrong and will likely not figure it out soon.
Happy to have something working.

Sounds good. The culling of only active shaders is just a convenience, not a requirement. If you can find the VS for that doctor image with your old wrapper and post it here, we can help you fix it.

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

#58
Posted 09/14/2015 10:25 AM   
I have not found the doctor halo yet but here is an example of a shader: The binary shader is 195k and this ASM version is 10k. I never learned how to handle comments in bin/asm. A lot more comments and code is stored in the bin file. I ran into this problem when working on the assembler but never solved it. [code]// // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 // // // Buffer Definitions: // // cbuffer cVSScene // { // // struct VSScene // { // // float4x4 m_projectionView; // Offset: 0 // float4x4 m_projection; // Offset: 64 // float4x4 m_view; // Offset: 128 // float4x4 m_shadowProjection; // Offset: 192 // float4x4 m_shadowProjection2; // Offset: 256 // float4 m_eyepos; // Offset: 320 // float4 m_projectionParam; // Offset: 336 // float4 m_viewportSize; // Offset: 352 // float4 m_exposure; // Offset: 368 // float4 m_fogParam[3]; // Offset: 384 // float4 m_fogColor; // Offset: 432 // float4 m_cameraCenterOffset; // Offset: 448 // float4 m_shadowMapResolutions; // Offset: 464 // // } g_vsScene; // Offset: 0 Size: 480 // // } // // cbuffer cVSObject // { // // struct VSObject // { // // float4x4 m_viewWorld; // Offset: 0 // float4x4 m_world; // Offset: 64 // float4 m_useWeightCount; // Offset: 128 // float4 m_localParam[4]; // Offset: 144 // // } g_vsObject; // Offset: 0 Size: 208 // // } // // cbuffer VSBones // { // // struct VSBone // { // // float4x3 m_boneMatrices[32]; // Offset: 0 // // } g_vsBone; // Offset: 0 Size: 1536 // // struct VSBone // { // // float4x3 m_boneMatrices[32]; // Offset: 1536 // // } g_vsPrevBone; // Offset: 1536 Size: 1536 [unused] // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // cVSScene cbuffer NA NA 2 1 // cVSObject cbuffer NA NA 5 1 // VSBones cbuffer NA NA 6 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xyzw // NORMAL 0 xyzw 1 NONE float xyz // COLOR 0 xyzw 2 NONE float xyz // TANGENT 0 xyzw 3 NONE float xyzw // BLENDINDICES 0 xyzw 4 NONE uint xyzw // BLENDWEIGHT 0 xyzw 5 NONE float xyzw // TEXCOORD 0 xy 6 NONE float xy // TEXCOORD 1 xy 7 NONE float xy // TEXCOORD 2 xy 8 NONE float // TEXCOORD 3 xy 9 NONE float // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Position 0 xyzw 0 POS float xyzw // COLOR 0 xyzw 1 NONE float xyzw // TEXCOORD 0 xyzw 2 NONE float xyzw // TEXCOORD 1 xy 3 NONE float xy // TEXCOORD 4 xyz 4 NONE float xyz // TEXCOORD 5 xyz 5 NONE float xyz // TEXCOORD 6 xyz 6 NONE float xyz // TEXCOORD 7 xyz 7 NONE float xyz // vs_5_0 dcl_globalFlags refactoringAllowed dcl_constantbuffer cb2[8], immediateIndexed dcl_constantbuffer cb5[9], immediateIndexed dcl_constantbuffer cb6[96], dynamicIndexed dcl_input v0.xyzw dcl_input v1.xyz dcl_input v2.xyz dcl_input v3.xyzw dcl_input v4.xyzw dcl_input v5.xyzw dcl_input v6.xy dcl_input v7.xy dcl_output_siv o0.xyzw, position dcl_output o1.xyzw dcl_output o2.xyzw dcl_output o3.xy dcl_output o4.xyz dcl_output o5.xyz dcl_output o6.xyz dcl_output o7.xyz dcl_temps 11 dcl_indexableTemp x0[3], 4 #line 265 "d:\work\master\git_clone\_intermediate\win64\GrModelShaders_dx11_win64\Release\fox3ddf_skin_layer_dirty_nu_vs.hlsl" mov r0.xyz, v2.xyzx // inColor<0,1,2> #line 375 mov r1.xyz, v0.xyzx // NTransformInput_transform_inPosition<0,1,2> mov r2.xyz, v1.xyzx // NTransformInput_transform_inNormal<0,1,2> mov r3.xyzw, v3.xyzw // NTransformInput_transform_inTangent<0,1,2,3> mov r4.xyzw, v5.xyzw // NTransformInput_transform_inBlendWeights<0,1,2,3> #line 382 nop mov r1.xyz, r1.xyzx // inPosition<0,1,2> mov r2.xyz, r2.xyzx // inNormal<0,1,2> mov r3.xyzw, r3.xyzw // inTangent<0,1,2,3> mov r4.xyzw, r4.xyzw // inBlendWeights<0,1,2,3> #line 77 mov r1.xyz, r1.xyzx // pos<0,1,2> #line 83 ne r0.w, cb5[8].x, l(0.000000) if_nz r0.w nop mov r4.xyzw, r4.xyzw // blendWeights<0,1,2,3> #line 22 imul null, r0.w, v4.x, l(3) mul r5.xyzw, r4.xxxx, cb6[r0.w + 0].xyzw // blendMatrix<0:Inf,3:Inf,6:Inf,9:Inf> mul r6.xyzw, r4.xxxx, cb6[r0.w + 1].xyzw // blendMatrix<1:Inf,4:Inf,7:Inf,10:Inf> mul r7.xyzw, r4.xxxx, cb6[r0.w + 2].xyzw // blendMatrix<2:Inf,5:Inf,8:Inf,11:Inf> imul null, r0.w, v4.y, l(3) mul r8.xyzw, r4.yyyy, cb6[r0.w + 0].xyzw mul r9.xyzw, r4.yyyy, cb6[r0.w + 1].xyzw mul r10.xyzw, r4.yyyy, cb6[r0.w + 2].xyzw add r5.xyzw, r5.xyzw, r8.xyzw // blendMatrix<0:NaN:Inf,3:NaN:Inf,6:NaN:Inf,9:NaN:Inf> add r6.xyzw, r6.xyzw, r9.xyzw // blendMatrix<1:NaN:Inf,4:NaN:Inf,7:NaN:Inf,10:NaN:Inf> add r7.xyzw, r7.xyzw, r10.xyzw // blendMatrix<2:NaN:Inf,5:NaN:Inf,8:NaN:Inf,11:NaN:Inf> imul null, r0.w, v4.z, l(3) mul r8.xyzw, r4.zzzz, cb6[r0.w + 0].xyzw mul r9.xyzw, r4.zzzz, cb6[r0.w + 1].xyzw mul r10.xyzw, r4.zzzz, cb6[r0.w + 2].xyzw add r5.xyzw, r5.xyzw, r8.xyzw // blendMatrix<0:NaN:Inf,3:NaN:Inf,6:NaN:Inf,9:NaN:Inf> add r6.xyzw, r6.xyzw, r9.xyzw // blendMatrix<1:NaN:Inf,4:NaN:Inf,7:NaN:Inf,10:NaN:Inf> add r7.xyzw, r7.xyzw, r10.xyzw // blendMatrix<2:NaN:Inf,5:NaN:Inf,8:NaN:Inf,11:NaN:Inf> imul null, r0.w, v4.w, l(3) mul r8.xyzw, r4.wwww, cb6[r0.w + 0].xyzw mul r9.xyzw, r4.wwww, cb6[r0.w + 1].xyzw mul r4.xyzw, r4.wwww, cb6[r0.w + 2].xyzw add r5.xyzw, r5.xyzw, r8.xyzw // blendMatrix<0:NaN:Inf,3:NaN:Inf,6:NaN:Inf,9:NaN:Inf> add r6.xyzw, r6.xyzw, r9.xyzw // blendMatrix<1:NaN:Inf,4:NaN:Inf,7:NaN:Inf,10:NaN:Inf> add r4.xyzw, r4.xyzw, r7.xyzw // blendMatrix<2:NaN:Inf,5:NaN:Inf,8:NaN:Inf,11:NaN:Inf> nop #line 416 dp4 r1.x, v0.xyzw, r5.xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r1.y, v0.xyzw, r6.xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r1.z, v0.xyzw, r4.xyzw // ApplyMatrixT<2:NaN:Inf> #line 27 mov r1.xyz, r1.xyzx // position<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> nop #line 420 mov r7.w, l(0) mov r7.xyz, v1.xyzx dp4 r2.x, r7.xyzw, r5.xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r2.y, r7.xyzw, r6.xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r2.z, r7.xyzw, r4.xyzw // ApplyMatrixT<2:NaN:Inf> #line 28 mov r2.xyz, r2.xyzx // normal<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> nop #line 420 mov r7.w, l(0) mov r7.xyz, v3.xyzx dp4 r5.x, r7.xyzw, r5.xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r5.y, r7.xyzw, r6.xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r5.z, r7.xyzw, r4.xyzw // ApplyMatrixT<2:NaN:Inf> #line 29 mov r5.xyz, r5.xyzx // tangent<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> #line 85 mov r1.xyz, r1.xyzx // pos<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> mov r2.xyz, r2.xyzx // inNormal<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> mov r5.xyz, r5.xyzx // inTangent<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> else mov r5.xyz, r3.xyzx // inTangent<0,1,2> endif #line 98 nop #line 145 nop #line 408 mov r1.w, v0.w dp4 r4.x, r1.xyzw, cb5[0].xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r4.y, r1.xyzw, cb5[1].xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r4.z, r1.xyzw, cb5[2].xyzw // ApplyMatrixT<2:NaN:Inf> dp4 r4.w, r1.xyzw, cb5[3].xyzw // ApplyMatrixT<3:NaN:Inf> mov r1.x, r4.x // ApplyMatrixT<0:NaN:Inf> mov r1.y, r4.y // ApplyMatrixT<1:NaN:Inf> mov r1.z, r4.z // ApplyMatrixT<2:NaN:Inf> #line 145 mov r1.xyz, r1.xyzx // onCameraRelative<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> nop #line 408 dp4 r6.x, r4.xyzw, cb2[4].xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r6.y, r4.xyzw, cb2[5].xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r6.z, r4.xyzw, cb2[6].xyzw // ApplyMatrixT<2:NaN:Inf> dp4 r6.w, r4.xyzw, cb2[7].xyzw // ApplyMatrixT<3:NaN:Inf> #line 146 mov r6.xyzw, r6.xyzw // hPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf> nop mov r1.xyz, r1.xyzx // viewPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> #line 98 mov r6.xyzw, r6.xyzw // outProjectionPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf> mov r1.xyz, r1.xyzx // outViewPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> nop nop dp3 r0.w, r1.xyzx, r1.xyzx rsq r0.w, r0.w mul r1.xyz, r0.wwww, r1.xyzx // outViewDir<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> #line 105 nop nop #line 113 nop #line 412 mov r2.w, l(0) dp4 r3.x, r2.xyzw, cb5[0].xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r3.y, r2.xyzw, cb5[1].xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r3.z, r2.xyzw, cb5[2].xyzw // ApplyMatrixT<2:NaN:Inf> #line 113 dp3 r0.w, r3.xyzx, r3.xyzx rsq r0.w, r0.w mul r2.xyz, r0.wwww, r3.xyzx // outNormalOnView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> nop #line 412 mov r5.w, l(0) dp4 r3.x, r5.xyzw, cb5[0].xyzw // ApplyMatrixT<0:NaN:Inf> dp4 r3.y, r5.xyzw, cb5[1].xyzw // ApplyMatrixT<1:NaN:Inf> dp4 r3.z, r5.xyzw, cb5[2].xyzw // ApplyMatrixT<2:NaN:Inf> #line 114 dp3 r0.w, r3.xyzx, r3.xyzx rsq r0.w, r0.w mul r3.xyz, r0.wwww, r3.xyzx // outTangentOnView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> mul r4.xyz, r2.yzxy, r3.zxyz mul r5.xyz, r2.zxyz, r3.yzxy mov r5.xyz, -r5.xyzx add r4.xyz, r4.xyzx, r5.xyzx dp3 r0.w, r4.xyzx, r4.xyzx rsq r0.w, r0.w mul r4.xyz, r0.wwww, r4.xyzx mul r4.xyz, r3.wwww, r4.xyzx // outBinormalOnView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> #line 382 mov r6.xyzw, r6.xyzw // NTransformInput_transform_outProjectionPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf> mov r1.xyz, r1.xyzx // NTransformInput_transform_outViewDir<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> #line 432 mov r5.xy, v7.xyxx // NAdjustUVSub_adjustUVSub_inUV1<0,1> nop mov r5.xy, r5.xyxx // inUV1<0,1> #line 37 mov r5.xy, r5.xyxx // outUV<0,1> #line 433 mov r5.xy, r5.xyxx // NAdjustUVSub_adjustUVSub_outUV<0,1> #line 428 mov r5.zw, v6.xxxy // NAdjustUVBase_adjustUVBase_inUV<0,1> nop mov r5.zw, r5.zzzw // inUV<0,1> #line 172 mov r5.zw, r5.zzzw // outUV<0,1> #line 429 mov r5.zw, r5.zzzw // NAdjustUVBase_adjustUVBase_outUV<0,1> #line 408 mov o0.xyzw, r6.xyzw // outPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf> #line 429 mov o2.xy, r5.zwzz // outBaseUV<0,1> #line 433 mov o3.xy, r5.xyxx // outSubUV<0,1> #line 473 mov o4.xyz, -r1.xyzx // outViewDir<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> #line 481 mov x0[0].xyz, r3.xyzx // outTangentToView<0,1,2> mov x0[1].xyz, r4.xyzx // outTangentToView<3,4,5> mov x0[2].xyz, r2.xyzx // outTangentToView<6,7,8> #line 454 mov o2.zw, v7.xxxy // outBaseUV<2,3> #line 459 mov o1.xyz, r0.xyzx // outColor<0,1,2> #line 467 mov o1.w, cb5[8].w // outColor<3> #line 245 mov r0.xyz, x0[0].xyzx // outTangentToView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> mov r1.xyz, x0[1].xyzx // outTangentToView<3:NaN:Inf,4:NaN:Inf,5:NaN:Inf> mov r2.xyz, x0[2].xyzx // outTangentToView<6:NaN:Inf,7:NaN:Inf,8:NaN:Inf> mov o5.xyz, r0.xyzx // outTangentToView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf> mov o6.xyz, r1.xyzx // outTangentToView<3:NaN:Inf,4:NaN:Inf,5:NaN:Inf> mov o7.xyz, r2.xyzx // outTangentToView<6:NaN:Inf,7:NaN:Inf,8:NaN:Inf> ret // Approximately 146 instruction slots used [/code]
I have not found the doctor halo yet but here is an example of a shader:
The binary shader is 195k and this ASM version is 10k.
I never learned how to handle comments in bin/asm.

A lot more comments and code is stored in the bin file.

I ran into this problem when working on the assembler but never solved it.
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer cVSScene
// {
//
// struct VSScene
// {
//
// float4x4 m_projectionView; // Offset: 0
// float4x4 m_projection; // Offset: 64
// float4x4 m_view; // Offset: 128
// float4x4 m_shadowProjection; // Offset: 192
// float4x4 m_shadowProjection2; // Offset: 256
// float4 m_eyepos; // Offset: 320
// float4 m_projectionParam; // Offset: 336
// float4 m_viewportSize; // Offset: 352
// float4 m_exposure; // Offset: 368
// float4 m_fogParam[3]; // Offset: 384
// float4 m_fogColor; // Offset: 432
// float4 m_cameraCenterOffset; // Offset: 448
// float4 m_shadowMapResolutions; // Offset: 464
//
// } g_vsScene; // Offset: 0 Size: 480
//
// }
//
// cbuffer cVSObject
// {
//
// struct VSObject
// {
//
// float4x4 m_viewWorld; // Offset: 0
// float4x4 m_world; // Offset: 64
// float4 m_useWeightCount; // Offset: 128
// float4 m_localParam[4]; // Offset: 144
//
// } g_vsObject; // Offset: 0 Size: 208
//
// }
//
// cbuffer VSBones
// {
//
// struct VSBone
// {
//
// float4x3 m_boneMatrices[32]; // Offset: 0
//
// } g_vsBone; // Offset: 0 Size: 1536
//
// struct VSBone
// {
//
// float4x3 m_boneMatrices[32]; // Offset: 1536
//
// } g_vsPrevBone; // Offset: 1536 Size: 1536 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// cVSScene cbuffer NA NA 2 1
// cVSObject cbuffer NA NA 5 1
// VSBones cbuffer NA NA 6 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// NORMAL 0 xyzw 1 NONE float xyz
// COLOR 0 xyzw 2 NONE float xyz
// TANGENT 0 xyzw 3 NONE float xyzw
// BLENDINDICES 0 xyzw 4 NONE uint xyzw
// BLENDWEIGHT 0 xyzw 5 NONE float xyzw
// TEXCOORD 0 xy 6 NONE float xy
// TEXCOORD 1 xy 7 NONE float xy
// TEXCOORD 2 xy 8 NONE float
// TEXCOORD 3 xy 9 NONE float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xyzw
// COLOR 0 xyzw 1 NONE float xyzw
// TEXCOORD 0 xyzw 2 NONE float xyzw
// TEXCOORD 1 xy 3 NONE float xy
// TEXCOORD 4 xyz 4 NONE float xyz
// TEXCOORD 5 xyz 5 NONE float xyz
// TEXCOORD 6 xyz 6 NONE float xyz
// TEXCOORD 7 xyz 7 NONE float xyz
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb2[8], immediateIndexed
dcl_constantbuffer cb5[9], immediateIndexed
dcl_constantbuffer cb6[96], dynamicIndexed
dcl_input v0.xyzw
dcl_input v1.xyz
dcl_input v2.xyz
dcl_input v3.xyzw
dcl_input v4.xyzw
dcl_input v5.xyzw
dcl_input v6.xy
dcl_input v7.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xy
dcl_output o4.xyz
dcl_output o5.xyz
dcl_output o6.xyz
dcl_output o7.xyz
dcl_temps 11
dcl_indexableTemp x0[3], 4

#line 265 "d:\work\master\git_clone\_intermediate\win64\GrModelShaders_dx11_win64\Release\fox3ddf_skin_layer_dirty_nu_vs.hlsl"
mov r0.xyz, v2.xyzx // inColor<0,1,2>

#line 375
mov r1.xyz, v0.xyzx // NTransformInput_transform_inPosition<0,1,2>
mov r2.xyz, v1.xyzx // NTransformInput_transform_inNormal<0,1,2>
mov r3.xyzw, v3.xyzw // NTransformInput_transform_inTangent<0,1,2,3>
mov r4.xyzw, v5.xyzw // NTransformInput_transform_inBlendWeights<0,1,2,3>

#line 382
nop
mov r1.xyz, r1.xyzx // inPosition<0,1,2>
mov r2.xyz, r2.xyzx // inNormal<0,1,2>
mov r3.xyzw, r3.xyzw // inTangent<0,1,2,3>
mov r4.xyzw, r4.xyzw // inBlendWeights<0,1,2,3>

#line 77
mov r1.xyz, r1.xyzx // pos<0,1,2>

#line 83
ne r0.w, cb5[8].x, l(0.000000)
if_nz r0.w
nop
mov r4.xyzw, r4.xyzw // blendWeights<0,1,2,3>

#line 22
imul null, r0.w, v4.x, l(3)
mul r5.xyzw, r4.xxxx, cb6[r0.w + 0].xyzw // blendMatrix<0:Inf,3:Inf,6:Inf,9:Inf>
mul r6.xyzw, r4.xxxx, cb6[r0.w + 1].xyzw // blendMatrix<1:Inf,4:Inf,7:Inf,10:Inf>
mul r7.xyzw, r4.xxxx, cb6[r0.w + 2].xyzw // blendMatrix<2:Inf,5:Inf,8:Inf,11:Inf>
imul null, r0.w, v4.y, l(3)
mul r8.xyzw, r4.yyyy, cb6[r0.w + 0].xyzw
mul r9.xyzw, r4.yyyy, cb6[r0.w + 1].xyzw
mul r10.xyzw, r4.yyyy, cb6[r0.w + 2].xyzw
add r5.xyzw, r5.xyzw, r8.xyzw // blendMatrix<0:NaN:Inf,3:NaN:Inf,6:NaN:Inf,9:NaN:Inf>
add r6.xyzw, r6.xyzw, r9.xyzw // blendMatrix<1:NaN:Inf,4:NaN:Inf,7:NaN:Inf,10:NaN:Inf>
add r7.xyzw, r7.xyzw, r10.xyzw // blendMatrix<2:NaN:Inf,5:NaN:Inf,8:NaN:Inf,11:NaN:Inf>
imul null, r0.w, v4.z, l(3)
mul r8.xyzw, r4.zzzz, cb6[r0.w + 0].xyzw
mul r9.xyzw, r4.zzzz, cb6[r0.w + 1].xyzw
mul r10.xyzw, r4.zzzz, cb6[r0.w + 2].xyzw
add r5.xyzw, r5.xyzw, r8.xyzw // blendMatrix<0:NaN:Inf,3:NaN:Inf,6:NaN:Inf,9:NaN:Inf>
add r6.xyzw, r6.xyzw, r9.xyzw // blendMatrix<1:NaN:Inf,4:NaN:Inf,7:NaN:Inf,10:NaN:Inf>
add r7.xyzw, r7.xyzw, r10.xyzw // blendMatrix<2:NaN:Inf,5:NaN:Inf,8:NaN:Inf,11:NaN:Inf>
imul null, r0.w, v4.w, l(3)
mul r8.xyzw, r4.wwww, cb6[r0.w + 0].xyzw
mul r9.xyzw, r4.wwww, cb6[r0.w + 1].xyzw
mul r4.xyzw, r4.wwww, cb6[r0.w + 2].xyzw
add r5.xyzw, r5.xyzw, r8.xyzw // blendMatrix<0:NaN:Inf,3:NaN:Inf,6:NaN:Inf,9:NaN:Inf>
add r6.xyzw, r6.xyzw, r9.xyzw // blendMatrix<1:NaN:Inf,4:NaN:Inf,7:NaN:Inf,10:NaN:Inf>
add r4.xyzw, r4.xyzw, r7.xyzw // blendMatrix<2:NaN:Inf,5:NaN:Inf,8:NaN:Inf,11:NaN:Inf>
nop

#line 416
dp4 r1.x, v0.xyzw, r5.xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r1.y, v0.xyzw, r6.xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r1.z, v0.xyzw, r4.xyzw // ApplyMatrixT<2:NaN:Inf>

#line 27
mov r1.xyz, r1.xyzx // position<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
nop

#line 420
mov r7.w, l(0)
mov r7.xyz, v1.xyzx
dp4 r2.x, r7.xyzw, r5.xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r2.y, r7.xyzw, r6.xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r2.z, r7.xyzw, r4.xyzw // ApplyMatrixT<2:NaN:Inf>

#line 28
mov r2.xyz, r2.xyzx // normal<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
nop

#line 420
mov r7.w, l(0)
mov r7.xyz, v3.xyzx
dp4 r5.x, r7.xyzw, r5.xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r5.y, r7.xyzw, r6.xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r5.z, r7.xyzw, r4.xyzw // ApplyMatrixT<2:NaN:Inf>

#line 29
mov r5.xyz, r5.xyzx // tangent<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>

#line 85
mov r1.xyz, r1.xyzx // pos<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
mov r2.xyz, r2.xyzx // inNormal<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
mov r5.xyz, r5.xyzx // inTangent<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
else
mov r5.xyz, r3.xyzx // inTangent<0,1,2>
endif

#line 98
nop

#line 145
nop

#line 408
mov r1.w, v0.w
dp4 r4.x, r1.xyzw, cb5[0].xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r4.y, r1.xyzw, cb5[1].xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r4.z, r1.xyzw, cb5[2].xyzw // ApplyMatrixT<2:NaN:Inf>
dp4 r4.w, r1.xyzw, cb5[3].xyzw // ApplyMatrixT<3:NaN:Inf>
mov r1.x, r4.x // ApplyMatrixT<0:NaN:Inf>
mov r1.y, r4.y // ApplyMatrixT<1:NaN:Inf>
mov r1.z, r4.z // ApplyMatrixT<2:NaN:Inf>

#line 145
mov r1.xyz, r1.xyzx // onCameraRelative<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
nop

#line 408
dp4 r6.x, r4.xyzw, cb2[4].xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r6.y, r4.xyzw, cb2[5].xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r6.z, r4.xyzw, cb2[6].xyzw // ApplyMatrixT<2:NaN:Inf>
dp4 r6.w, r4.xyzw, cb2[7].xyzw // ApplyMatrixT<3:NaN:Inf>

#line 146
mov r6.xyzw, r6.xyzw // hPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf>
nop
mov r1.xyz, r1.xyzx // viewPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>

#line 98
mov r6.xyzw, r6.xyzw // outProjectionPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf>
mov r1.xyz, r1.xyzx // outViewPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
nop
nop
dp3 r0.w, r1.xyzx, r1.xyzx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r1.xyzx // outViewDir<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>

#line 105
nop
nop

#line 113
nop

#line 412
mov r2.w, l(0)
dp4 r3.x, r2.xyzw, cb5[0].xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r3.y, r2.xyzw, cb5[1].xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r3.z, r2.xyzw, cb5[2].xyzw // ApplyMatrixT<2:NaN:Inf>

#line 113
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r3.xyzx // outNormalOnView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
nop

#line 412
mov r5.w, l(0)
dp4 r3.x, r5.xyzw, cb5[0].xyzw // ApplyMatrixT<0:NaN:Inf>
dp4 r3.y, r5.xyzw, cb5[1].xyzw // ApplyMatrixT<1:NaN:Inf>
dp4 r3.z, r5.xyzw, cb5[2].xyzw // ApplyMatrixT<2:NaN:Inf>

#line 114
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul r3.xyz, r0.wwww, r3.xyzx // outTangentOnView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
mul r4.xyz, r2.yzxy, r3.zxyz
mul r5.xyz, r2.zxyz, r3.yzxy
mov r5.xyz, -r5.xyzx
add r4.xyz, r4.xyzx, r5.xyzx
dp3 r0.w, r4.xyzx, r4.xyzx
rsq r0.w, r0.w
mul r4.xyz, r0.wwww, r4.xyzx
mul r4.xyz, r3.wwww, r4.xyzx // outBinormalOnView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>

#line 382
mov r6.xyzw, r6.xyzw // NTransformInput_transform_outProjectionPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf>
mov r1.xyz, r1.xyzx // NTransformInput_transform_outViewDir<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>

#line 432
mov r5.xy, v7.xyxx // NAdjustUVSub_adjustUVSub_inUV1<0,1>
nop
mov r5.xy, r5.xyxx // inUV1<0,1>

#line 37
mov r5.xy, r5.xyxx // outUV<0,1>

#line 433
mov r5.xy, r5.xyxx // NAdjustUVSub_adjustUVSub_outUV<0,1>

#line 428
mov r5.zw, v6.xxxy // NAdjustUVBase_adjustUVBase_inUV<0,1>
nop
mov r5.zw, r5.zzzw // inUV<0,1>

#line 172
mov r5.zw, r5.zzzw // outUV<0,1>

#line 429
mov r5.zw, r5.zzzw // NAdjustUVBase_adjustUVBase_outUV<0,1>

#line 408
mov o0.xyzw, r6.xyzw // outPosition<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf>

#line 429
mov o2.xy, r5.zwzz // outBaseUV<0,1>

#line 433
mov o3.xy, r5.xyxx // outSubUV<0,1>

#line 473
mov o4.xyz, -r1.xyzx // outViewDir<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>

#line 481
mov x0[0].xyz, r3.xyzx // outTangentToView<0,1,2>
mov x0[1].xyz, r4.xyzx // outTangentToView<3,4,5>
mov x0[2].xyz, r2.xyzx // outTangentToView<6,7,8>

#line 454
mov o2.zw, v7.xxxy // outBaseUV<2,3>

#line 459
mov o1.xyz, r0.xyzx // outColor<0,1,2>

#line 467
mov o1.w, cb5[8].w // outColor<3>

#line 245
mov r0.xyz, x0[0].xyzx // outTangentToView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
mov r1.xyz, x0[1].xyzx // outTangentToView<3:NaN:Inf,4:NaN:Inf,5:NaN:Inf>
mov r2.xyz, x0[2].xyzx // outTangentToView<6:NaN:Inf,7:NaN:Inf,8:NaN:Inf>
mov o5.xyz, r0.xyzx // outTangentToView<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf>
mov o6.xyz, r1.xyzx // outTangentToView<3:NaN:Inf,4:NaN:Inf,5:NaN:Inf>
mov o7.xyz, r2.xyzx // outTangentToView<6:NaN:Inf,7:NaN:Inf,8:NaN:Inf>
ret
// Approximately 146 instruction slots used

Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?

donations: ulfjalmbrant@hotmail.com

#59
Posted 09/14/2015 09:38 PM   
Oh wow, that's a weird mistake for them to make. Those extra lines in the assembly are because they shipped the shaders with debug mode turned on. The only other game I saw this on was Defense Grid 2. This caused the Decompiler to crash outright as well, because that stuff is not expected to be there. For this game, you'll want to skip the blank lines and # commented lines. Save off a copy of these shaders, in case they figure it out and remove them in the future, as the extra debug information includes the comments from their source code, which can be super helpful when trying to fix a game. Even better than well named variables.
Oh wow, that's a weird mistake for them to make. Those extra lines in the assembly are because they shipped the shaders with debug mode turned on. The only other game I saw this on was Defense Grid 2.

This caused the Decompiler to crash outright as well, because that stuff is not expected to be there. For this game, you'll want to skip the blank lines and # commented lines.

Save off a copy of these shaders, in case they figure it out and remove them in the future, as the extra debug information includes the comments from their source code, which can be super helpful when trying to fix a game. Even better than well named variables.

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

#60
Posted 09/15/2015 07:43 AM   
  4 / 15    
Scroll To Top