All times are UTC + 2 hours



Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Helix's DX9 DLL Wrapper for fixing/disabling shaders in game
PostPosted: 01 Mar 2012, 16:50 
Site Admin
User avatar

Joined:
29 Apr 2010, 17:51
Posts: 3146
Location: Sofia, Bulgaria
This is a DirectX 9 wrapper DLL file that can give you the ability to modify the pixel and vertex shaders in games using DirectX 9 to get them to work better in stereoscopic 3D mode when using 3D Vision or 3DTV Play. The wrapper comes in two versions, one a Debug to find and save the problematic shaders and another Release version for when you just need to run a game with the modified shaders. Now, the idea is that when running a game in stereo 3D mode using the Debug wrapper and you find something not rendered properly in stereo 3D, you would be able to save the problematic shader and then you have two options – either fixing the shader yourself (not something most people can do) or deleting the contents of the shader, so the next time you run the game via the Release wrapper you will either have the shader rendered properly or it will not be shown anymore and the game will look better in stereo 3D mode, and after finding the few pixel and vertex shaders that are causing the issues in the game it might become much more stereoscopic 3D friendly. Thanks for Helix for making this possible and now comes your turn to help making games working better in stereo 3D mode by using the tool that he has provided, and don't forget to share your work and findings..

To disable or fix shaders you should use the Debug version of the wrapper, just download it and copy the d3d9.dll file in the folder where the game executable file is located, then run the game as you would normally do.

Use these keys for shaders search/dump when you run the game with the Debug DLL wrapper:
NUMPAD1 - disable previous pixel shader
NUMPAD2 - disable next pixel shader
NUMPAD3 - save currently disabled pixel shader
NUMPAD7 - adds current pixel shader to the skip list (you can disable more than one shader)
NUMPAD8 - removes current pixel shader from skip list
NUMPAD9 - clear whole pixel shader skip list

NUMPAD4 - disable previous vertex shader
NUMPAD5 - disable next vertex shader
NUMPAD6 - save currently disabled vertex shader
HOME - adds current vertex shader to the skip list (you can disable more than one shader)
END - removes current vertex shader from skip list
INSERT - clear whole vertex shader skip list

F11 - show hide text info
F10 - reloads shaders from ShadersOverride folder (you can edit shaders without closing application)
NUMPAD MULTIPLY - save all shaders from both skip lists

Dumped shader are located in "Dumps" folder, "AllShaders" sub-folder stores every created shader by a game. And "SingleShaders" stores single dumped shaders by the user (by using the hotkeys above).

New (fixed) shaders should be placed in "ShaderOverride\PixelShaders" and "ShaderOverride\VertexShaders" folders (you need to create them manually). Name of the "fixed" shader file should contain only their CRC32 with .txt extension, i.e. 5584C043.txt. Make sure that name contain all 8 digits of CRC, because if fist digit in crc is 0, then file will be saved as VertexShader_42_CRC32_2C2C597.txt.
When renaming such files you should put zero in the beginning, i.e. you should get "02C2C597.txt".

Simple example how to disable some shaders.
1. Install Debug library.
2. Run a game you want to fix.
3. Search for problem shader (using keys described above).
Disabled effect means that you find correct shader you can save it.
4. After you've saved shader go to "\Dumps\SingleShaders\PixelShader" for pixel shader or "\Dumps\SingleShaders\VertexShader" for vertex.
5. You should see something like this "VertexShader_25_CRC32_750325D5.txt"
6. Create "ShaderOverride\VertexShaders"(or "ShaderOverride\PixelShaders" for pixel shader) folder (in the same dir where Dumps folder located).
7. Copy VertexShader_25_CRC32_750325D5.txt file to this folder.
8. Rename it to "750325D5.txt" , i.e. only CRC32 in file name.
9. Open "750325D5.txt" file (better to use something like Notepad++)
10. Ctrl + A - select all content and Del to delete everything.
11. add "vs_3_0" (without quotes) or "ps_3_0" for pixel shader.
i.e. your file should contain only vs_3_0 for vertex shader or ps_3_0 for pixel shader.
12. If you did everything right, then when you run a game next time this shader will be disabled.
13. For final fix(when you disable all shaders) you should use DLL from "Release" folder, it's running faster than Debug.

When you have prepared the modified or deleted shaders you can replace the Debug dll with the DLL file from the Release archive and run the game to have it with the disabled or modified shaders applied.

Packaging the Release DLL together with the folders containing the shaders that were modified/disabled you can distribute the fix you have made, so that other users will be able to take advantage from it.

- The original How to fix/disable shaders in games (DLL, guide and fixes) topic in Nvidia's forums...
- Helixmod Wiki with the list of user contributed game fixes based on this method...

Attachment:
Debug.zip [94.36 KiB]
Downloaded 645 times

Attachment:
Release.zip [89.11 KiB]
Downloaded 608 times


 Profile WWW  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC + 2 hours


Who is online

Registered users: Bing [Bot], Google [Bot]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: