I have recently started writing tools intended for 3D Vision from scratch.
The Project is about a week old and it's progressing better than expected.
The road ahead is long but the feeling of not being powerless is exciting.
I doubt many people can collaborate on the coding side.
I would really like to get in touch with the people experienced in making shader fixes.
Games have so many shaders nowadays that I would desire a productive environment for fixing shaders.
I do accept donations.
I could eventually work with game requests but due to the
nature of the beast success is not guaranteed.
Money can be used for encouragement, appreciation, steering what game to work on.
This is no kickstarter. The project cost very little to run but takes very much time instead.
Given that I recieve sick pension at age 31 this is preferable as I have low income but lots of time.
I manage with Visual Studio 2013 Express so software expenses are low so far.
Game costs does mount over time as almost all of my software valued at 100 000 SEK is computer games.
Money earned doing part time development at http://www.gluteus.se/
modifying TYPO3 creating what is now SITESPACE, demo.gluteus.se/typo3 username/password=demo
while completing my five year studies at CHALMERS.
Best wishes from Sweden
Ulf "Flugan" Jälmbrant
ulfjalmbrant@hotmail.com
I have recently started writing tools intended for 3D Vision from scratch.
The Project is about a week old and it's progressing better than expected.
The road ahead is long but the feeling of not being powerless is exciting.
I doubt many people can collaborate on the coding side.
I would really like to get in touch with the people experienced in making shader fixes.
Games have so many shaders nowadays that I would desire a productive environment for fixing shaders.
I do accept donations.
I could eventually work with game requests but due to the
nature of the beast success is not guaranteed.
Money can be used for encouragement, appreciation, steering what game to work on.
This is no kickstarter. The project cost very little to run but takes very much time instead.
Given that I recieve sick pension at age 31 this is preferable as I have low income but lots of time.
I manage with Visual Studio 2013 Express so software expenses are low so far.
Game costs does mount over time as almost all of my software valued at 100 000 SEK is computer games.
Money earned doing part time development at http://www.gluteus.se/
modifying TYPO3 creating what is now SITESPACE, demo.gluteus.se/typo3 username/password=demo
while completing my five year studies at CHALMERS.
Best wishes from Sweden
Ulf "Flugan" Jälmbrant
ulfjalmbrant@hotmail.com
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?
Tridef is a good software to look at for possible feature ideas, just because shader modification in general is extremely time consuming and it pretty much goes off automation "choices". Tridef's "matrix-name" feature in particular. http://www.tridef.com/user-guide/in-game-settings
Ive always thought it could inverse matrix's as well without modification but I cant find any information about it. Which would be a miracle to a modder.
Tridef is a good software to look at for possible feature ideas, just because shader modification in general is extremely time consuming and it pretty much goes off automation "choices". Tridef's "matrix-name" feature in particular. http://www.tridef.com/user-guide/in-game-settings
Ive always thought it could inverse matrix's as well without modification but I cant find any information about it. Which would be a miracle to a modder.
Co-founder of helixmod.blog.com
If you like one of my helixmod patches and want to donate. Can send to me through paypal - eqzitara@yahoo.com
DX11 is the starting goal but a likely extension would be down to dx10. DX11 is the primary reason behind the Project as the ratio of dx11 games is increasing especially among AAA.
My VG278H does not support Tridef. To the extent that it's possible inspiration can be taken from Tridef. The same is true for Chiri's wrapper and Helix wrapper. There is really no way to combine the available solutions. They are pretty much standalone.
I am very far behind existing solutions but then the project has just begun.
The big difference when moving to dx10/11 is that shaders are already compiled to binary when intercepted by the wrapper. I have begun work on a shader assembler/disassembler.
I will look at how feasable it is to convert the assembler code to HLSL to ease understanding.
Optimizing the process of fixing games will be an ongoing process.
Due to DX11's compiled shaders the current state of shader dumping and replacement is far from enough.
DX11 is the starting goal but a likely extension would be down to dx10. DX11 is the primary reason behind the Project as the ratio of dx11 games is increasing especially among AAA.
My VG278H does not support Tridef. To the extent that it's possible inspiration can be taken from Tridef. The same is true for Chiri's wrapper and Helix wrapper. There is really no way to combine the available solutions. They are pretty much standalone.
I am very far behind existing solutions but then the project has just begun.
The big difference when moving to dx10/11 is that shaders are already compiled to binary when intercepted by the wrapper. I have begun work on a shader assembler/disassembler.
I will look at how feasable it is to convert the assembler code to HLSL to ease understanding.
Optimizing the process of fixing games will be an ongoing process.
Due to DX11's compiled shaders the current state of shader dumping and replacement is far from enough.
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?
I might be able to help on the coding side, I've been looking fairly deeply into how to do proxydlls. I'm less useful on the shader side.
For example, years ago I wrote a parser for both Object Pascal and C++. That is the sort of thing you'll need to parse the DX11 shaders, to get them back into something you can compile. Both Helix and Chiri said this is necessary for DX11. Experience from that says that you'd be better off to use Bison or Yacc to create a more general parser, faster. I can possibly do this part.
Another example for Win programming that I figured out. For logging, when you create a log file, the common approach is to do:
[code]LogFile = fopen("nvapi_convergencelog.txt", "w");[/code]
Don't do it that way, do:
[code]LogFile = _fsopen("dinput8_log.txt", "w", _SH_DENYNO);
setbuf(LogFile, NULL);
[/code]
This allows you to open the log file while it is in use, which can be much more convenient than quitting and relaunching. The setbuf disables buffering so that it's always up to date, and not missing the last few lines.
Might be common knowledge, but HelixMod doesn't do this for example, which is why you cannot open LOG.txt while it's active. The reason this would be super helpful is that sometimes I bust a shader while fixing, and it no longer compiles. The only way to see that is to quit the game to open LOG.txt.
Not sure, I might be totally useless, Win32 is not my forte.
I might be able to help on the coding side, I've been looking fairly deeply into how to do proxydlls. I'm less useful on the shader side.
For example, years ago I wrote a parser for both Object Pascal and C++. That is the sort of thing you'll need to parse the DX11 shaders, to get them back into something you can compile. Both Helix and Chiri said this is necessary for DX11. Experience from that says that you'd be better off to use Bison or Yacc to create a more general parser, faster. I can possibly do this part.
Another example for Win programming that I figured out. For logging, when you create a log file, the common approach is to do:
This allows you to open the log file while it is in use, which can be much more convenient than quitting and relaunching. The setbuf disables buffering so that it's always up to date, and not missing the last few lines.
Might be common knowledge, but HelixMod doesn't do this for example, which is why you cannot open LOG.txt while it's active. The reason this would be super helpful is that sometimes I bust a shader while fixing, and it no longer compiles. The only way to see that is to quit the game to open LOG.txt.
Not sure, I might be totally useless, Win32 is not my forte.
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
bo3b,
Small Changes can make a big difference.
I'm not sure of the form for collaboration.
Dividing tasks can work but it depends on the circumstances and the need for Communication.
A more likely scenario is peer review with code cleanup and suggested improvements.
I'm still considering GPL unless someone has a better idea.
Dividing tasks can work but it depends on the circumstances and the need for Communication.
A more likely scenario is peer review with code cleanup and suggested improvements.
I'm still considering GPL unless someone has a better idea.
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?
Well I am hoping your efforts work out. It's nice to see members of the 3D community trying to do something that Nvidia seems to care less about anymore. Hopefully the negative people that post here occasionally won't deter you. It really ticks me off some of the sense of entitlement a few posters have here in regards to people like Helix, Chiri, or others are obligated to fix their games.
I have been learning to live in a 2D world again for amazing games like Assassin's Creed 4 but it would be nice to revisit that game in 3D again down the road. I have the same monitor as you and I am unable to make use of Tridef. I wish I could help out with the coding but that is beyond me. I am willing to donate to the wrapper work just like I did for Chiri's wrapper early on.
Well I am hoping your efforts work out. It's nice to see members of the 3D community trying to do something that Nvidia seems to care less about anymore. Hopefully the negative people that post here occasionally won't deter you. It really ticks me off some of the sense of entitlement a few posters have here in regards to people like Helix, Chiri, or others are obligated to fix their games.
I have been learning to live in a 2D world again for amazing games like Assassin's Creed 4 but it would be nice to revisit that game in 3D again down the road. I have the same monitor as you and I am unable to make use of Tridef. I wish I could help out with the coding but that is beyond me. I am willing to donate to the wrapper work just like I did for Chiri's wrapper early on.
1080 GTX 8GB SLI | I7-4770K@4.5GHz | 16GB RAM | Win10x64
Asus ROG Swift PG278Q | 3D Vision 2
Cool, yeah, I'm also not sure of good ways to collaborate. I think that in general there needs to be a champion/owner for a given thing to direct the work and avoid duplication and wasted effort. Clearly you'd be that guy.
Lots of different styles of development too. I come from the path of being far more interested in the end result, and I try not to build anything that I can borrow. As an example- the shader disassembler. You or I can make an opcode table that matches all the binary and dump out text files that are asm. But, there's no point in doing that if we can find something close that already does it, like:
[url]https://code.google.com/p/fxdis-d3d1x/[/url]
or maybe:
[url]https://github.com/tgjones/slimshader[/url]
It's not the interesting part of the project, so my inclination would be to borrow that instead of rolling a new one. For what it's worth, my rule of thumb is to Google for stuff for at least 4 hours or so before deciding to make my own of anything nowadays.
Counter example- I started with Chiri's Unlocker, and then also looked into the d3d9.dll wrappers that are on the net. Those all patch every vector so that they will load. This works OK, and might the way to go regardless, but seems to not work in all games, has overlay conflicts and the usual funniness.
So, I went ahead and rolled my own dinput8.dll proxy, since it only has 5 vectors, and allows me to gain control very early in most games. From there, I worked out how to use Microsoft's Detours library, which allows us to gain control at game launch, and thus to load and patch specific vectors out of any library we are interested in, including nvapi.dll and d3d11.dll.
All really guesswork on my part, I've not a lot of experience modding and there might be reasons to not use the Detours. In any case, if you want that I'm happy to share.
Looking a little more, I'd skip the Yacc approach. Depends on what you want, but with an asm version, you can always use fxc.exe to recompile it. Pretty sure that's the Helix approach. Chiri had some mechanism to convert it back to HLSL, maybe his own decompiler. I did a short look and cannot find any open source decompiler.
Anyway, I'd say go for it. If you think I can help in some way, let me know.
Cool, yeah, I'm also not sure of good ways to collaborate. I think that in general there needs to be a champion/owner for a given thing to direct the work and avoid duplication and wasted effort. Clearly you'd be that guy.
Lots of different styles of development too. I come from the path of being far more interested in the end result, and I try not to build anything that I can borrow. As an example- the shader disassembler. You or I can make an opcode table that matches all the binary and dump out text files that are asm. But, there's no point in doing that if we can find something close that already does it, like:
It's not the interesting part of the project, so my inclination would be to borrow that instead of rolling a new one. For what it's worth, my rule of thumb is to Google for stuff for at least 4 hours or so before deciding to make my own of anything nowadays.
Counter example- I started with Chiri's Unlocker, and then also looked into the d3d9.dll wrappers that are on the net. Those all patch every vector so that they will load. This works OK, and might the way to go regardless, but seems to not work in all games, has overlay conflicts and the usual funniness.
So, I went ahead and rolled my own dinput8.dll proxy, since it only has 5 vectors, and allows me to gain control very early in most games. From there, I worked out how to use Microsoft's Detours library, which allows us to gain control at game launch, and thus to load and patch specific vectors out of any library we are interested in, including nvapi.dll and d3d11.dll.
All really guesswork on my part, I've not a lot of experience modding and there might be reasons to not use the Detours. In any case, if you want that I'm happy to share.
Looking a little more, I'd skip the Yacc approach. Depends on what you want, but with an asm version, you can always use fxc.exe to recompile it. Pretty sure that's the Helix approach. Chiri had some mechanism to convert it back to HLSL, maybe his own decompiler. I did a short look and cannot find any open source decompiler.
Anyway, I'd say go for it. If you think I can help in some way, let me know.
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
[quote="Flugan"]
My VG278H does not support Tridef. To the extent that it's possible inspiration can be taken from Tridef. The same is true for Chiri's wrapper and Helix wrapper. There is really no way to combine the available solutions. They are pretty much standalone.
[/quote]
Its posssible to use Tridef still but "limited". If your interested in seeing how it works/profiling. Try the trial. Set it to 120hz framepacked method [I forget its actual name, you will see it]. Start any [u]DIRECT X 9 GAME[/u] and launch. You will have to have 3D Vision + tridef open at same time basically 3d visions frame packing lets it work so you turn depth+convergence to 0 with 3d vision. Of course this eats performance like mad but if your interested in seeing how it works. You add a game to its launcher [thats not already listed]. Then it will ask you to select a profile. You click generic. Then when game launches the OSD it shows its profiling methods.
-------------------------------------
Basically my only real suggestion is figuring out something that can be done automatic[with modifications and it might be hit/miss]. Games 3 years ago it was odd to find one with more then 1000 shaders [besides UE3]. Advanced games are very often triple that and I haven't seen DX11 games let alone "sponsored ones" but I really don't want to think about how many shaders they use. Its a not really a concern to helix since he can write his LUA script but I really can't imagine anyone besides him capable. Not to mention games which don't allow you to dump all in game shaders at once, just area of "loading time" which ironically the last game I dealt with had [The Bureau] means constant cherry picking and was the reason I dropped it the first time.
It sucks because this really falls into Nvidia's territory since my main problem is profiles doing jack. I don't think they updated 3d vision post DX11 ever [which is insane] and you literally have nothing working out of the box. If we were able to write "rules" it would just lighten the load an insane amount.
Flugan said:
My VG278H does not support Tridef. To the extent that it's possible inspiration can be taken from Tridef. The same is true for Chiri's wrapper and Helix wrapper. There is really no way to combine the available solutions. They are pretty much standalone.
Its posssible to use Tridef still but "limited". If your interested in seeing how it works/profiling. Try the trial. Set it to 120hz framepacked method [I forget its actual name, you will see it]. Start any DIRECT X 9 GAME and launch. You will have to have 3D Vision + tridef open at same time basically 3d visions frame packing lets it work so you turn depth+convergence to 0 with 3d vision. Of course this eats performance like mad but if your interested in seeing how it works. You add a game to its launcher [thats not already listed]. Then it will ask you to select a profile. You click generic. Then when game launches the OSD it shows its profiling methods.
-------------------------------------
Basically my only real suggestion is figuring out something that can be done automatic[with modifications and it might be hit/miss]. Games 3 years ago it was odd to find one with more then 1000 shaders [besides UE3]. Advanced games are very often triple that and I haven't seen DX11 games let alone "sponsored ones" but I really don't want to think about how many shaders they use. Its a not really a concern to helix since he can write his LUA script but I really can't imagine anyone besides him capable. Not to mention games which don't allow you to dump all in game shaders at once, just area of "loading time" which ironically the last game I dealt with had [The Bureau] means constant cherry picking and was the reason I dropped it the first time.
It sucks because this really falls into Nvidia's territory since my main problem is profiles doing jack. I don't think they updated 3d vision post DX11 ever [which is insane] and you literally have nothing working out of the box. If we were able to write "rules" it would just lighten the load an insane amount.
Co-founder of helixmod.blog.com
If you like one of my helixmod patches and want to donate. Can send to me through paypal - eqzitara@yahoo.com
[quote="eqzitara"]It sucks because this really falls into Nvidia's territory since my main problem is profiles doing jack. I don't think they updated 3d vision post DX11 ever [which is insane] and you literally have nothing working out of the box. If we were able to write "rules" it would just lighten the load an insane amount.[/quote]This is a really interesting thought. I know from looking at the nvapi.h that we can set or unset things like the NvAPI_Stereo_SetSurfaceCreationMode.
I've long wondered just how much value the profiles are adding, or whether they might actually be making things worse that then need to be fixed. What if we were able to drop in a proxy dll that would force the stereo into known modes, and bypass the profiles altogether? We might conceivably be able to make our own profile mechanism that isn't just completely a black box.
So for example, some tool that forces stereo to the default of always on for every surface and shape. Then some way to specify what should not get stereo that does. Not sure, just thinking out loud.
eqzitara said:It sucks because this really falls into Nvidia's territory since my main problem is profiles doing jack. I don't think they updated 3d vision post DX11 ever [which is insane] and you literally have nothing working out of the box. If we were able to write "rules" it would just lighten the load an insane amount.
This is a really interesting thought. I know from looking at the nvapi.h that we can set or unset things like the NvAPI_Stereo_SetSurfaceCreationMode.
I've long wondered just how much value the profiles are adding, or whether they might actually be making things worse that then need to be fixed. What if we were able to drop in a proxy dll that would force the stereo into known modes, and bypass the profiles altogether? We might conceivably be able to make our own profile mechanism that isn't just completely a black box.
So for example, some tool that forces stereo to the default of always on for every surface and shape. Then some way to specify what should not get stereo that does. Not sure, just thinking out loud.
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
This will be a really interesting project to follow!
I have come to consider you as a close friend over these last years and i have good faith in your abilities, you don't undervalue your skill and although i never understand anything of that [i]weird matrix stuff[/i] i know that it's pretty darn awesome!
Good luck my friend!
This will be a really interesting project to follow!
I have come to consider you as a close friend over these last years and i have good faith in your abilities, you don't undervalue your skill and although i never understand anything of that weird matrix stuff i know that it's pretty darn awesome!
Awesome news and awesome project! Most appreciated, many tahanks for tackling this. I will surely donate money once you made first little success. As for games, I think AC4 would be a natural born candidate.
Awesome news and awesome project! Most appreciated, many tahanks for tackling this. I will surely donate money once you made first little success. As for games, I think AC4 would be a natural born candidate.
Good project Flugan! and thanks!
I want to add that the wrapper MUST be 64bit compatible, last DX11 games are 64bits.
I'm not a coder (i'm very far from that)....but i can help contributing with ideas. I use helix wrapper for fixing games for about 1+ years and also using Tridef...One thig that Tridef don't have - helix wrapper does- is the one by one fixing shader, very usefull when you try to fix HUD/Crosshair elements and some particular effects.
[u]Tridef "Rules":[/u]
- "Rules" are the kind of stuff helix put in the DX##settings.ini...Example: SetSurfaceCreationMode, SkipSetScissorRect, others.
[u]Tridef "Row Matrix Detection":[/u]
- "Row Matrix Detection" are lua scripts....Matrix detection search and find some paterns in shaders and you can apply a mix of fixing algorithm to that group of shaders (you can do it through UI in tridef - on/off type - in real time). Normally you can find 10 or 15 Matrix Detection in a game. Example: AC4 have more than 30 Matrix Detection. The good thing about Tridef is you can try for example 1, 2 or 3 different algorithms (and combine to each other) for fixing that group of shaders....with lua script you use 1 fixing code for that group of shaders.
Also sometimes happens that 2, 3 or more shaders are grouped in the wrong group (due massive search), so the batch fix is apply in the wrong shader (= 3D issue), this happens with Tridef and also with Lua Script (with Helix wrapper you have to identify that shader and exclude from batching); with Tridef they have to open a little more the search feature (sub-groups) or deal with those 2 or 3 shaders broken (because is too hard to separate in sub-groups).
[u]Tridef "Profiles":[/u]
- Here Tridef is the winner (comparing to nvidia)...Tridef manage group of Rules and Row Matrix Detection depending on the "Game Engine", that's why you can use AC3 profile in AC4 and works just fine. Batch fixing (lua script or Tridef algorithms) HAVE to be "Game engine" dependent....that's because the search paterns in shaders; same engine normally use the same names matrix and the fixing method is always the same for that engine (example: unreal engine)...with some engine upgrades is neccesary to add more Row Matrix Detections (Example: AC4 with one particular lights/shadows group and one particular water reflection group...new version of tridef ignition is needed).
[u]Helix features that Tridef don't have:[/u]
- Texture detection for fixing depth and control separation/convergence in-game (very usefull feature)
- Key presets for separation/convergence
- One by One fixing shader (for more experienced users).
Hope this can help in someway.
Cheers!!!!
I want to add that the wrapper MUST be 64bit compatible, last DX11 games are 64bits.
I'm not a coder (i'm very far from that)....but i can help contributing with ideas. I use helix wrapper for fixing games for about 1+ years and also using Tridef...One thig that Tridef don't have - helix wrapper does- is the one by one fixing shader, very usefull when you try to fix HUD/Crosshair elements and some particular effects.
Tridef "Rules":
- "Rules" are the kind of stuff helix put in the DX##settings.ini...Example: SetSurfaceCreationMode, SkipSetScissorRect, others.
Tridef "Row Matrix Detection":
- "Row Matrix Detection" are lua scripts....Matrix detection search and find some paterns in shaders and you can apply a mix of fixing algorithm to that group of shaders (you can do it through UI in tridef - on/off type - in real time). Normally you can find 10 or 15 Matrix Detection in a game. Example: AC4 have more than 30 Matrix Detection. The good thing about Tridef is you can try for example 1, 2 or 3 different algorithms (and combine to each other) for fixing that group of shaders....with lua script you use 1 fixing code for that group of shaders.
Also sometimes happens that 2, 3 or more shaders are grouped in the wrong group (due massive search), so the batch fix is apply in the wrong shader (= 3D issue), this happens with Tridef and also with Lua Script (with Helix wrapper you have to identify that shader and exclude from batching); with Tridef they have to open a little more the search feature (sub-groups) or deal with those 2 or 3 shaders broken (because is too hard to separate in sub-groups).
Tridef "Profiles":
- Here Tridef is the winner (comparing to nvidia)...Tridef manage group of Rules and Row Matrix Detection depending on the "Game Engine", that's why you can use AC3 profile in AC4 and works just fine. Batch fixing (lua script or Tridef algorithms) HAVE to be "Game engine" dependent....that's because the search paterns in shaders; same engine normally use the same names matrix and the fixing method is always the same for that engine (example: unreal engine)...with some engine upgrades is neccesary to add more Row Matrix Detections (Example: AC4 with one particular lights/shadows group and one particular water reflection group...new version of tridef ignition is needed).
Helix features that Tridef don't have:
- Texture detection for fixing depth and control separation/convergence in-game (very usefull feature)
- Key presets for separation/convergence
- One by One fixing shader (for more experienced users).
The Project is about a week old and it's progressing better than expected.
The road ahead is long but the feeling of not being powerless is exciting.
I doubt many people can collaborate on the coding side.
I would really like to get in touch with the people experienced in making shader fixes.
Games have so many shaders nowadays that I would desire a productive environment for fixing shaders.
I do accept donations.
I could eventually work with game requests but due to the
nature of the beast success is not guaranteed.
Money can be used for encouragement, appreciation, steering what game to work on.
This is no kickstarter. The project cost very little to run but takes very much time instead.
Given that I recieve sick pension at age 31 this is preferable as I have low income but lots of time.
I manage with Visual Studio 2013 Express so software expenses are low so far.
Game costs does mount over time as almost all of my software valued at 100 000 SEK is computer games.
Money earned doing part time development at http://www.gluteus.se/
modifying TYPO3 creating what is now SITESPACE, demo.gluteus.se/typo3 username/password=demo
while completing my five year studies at CHALMERS.
Best wishes from Sweden
Ulf "Flugan" Jälmbrant
ulfjalmbrant@hotmail.com
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
Ive always thought it could inverse matrix's as well without modification but I cant find any information about it. Which would be a miracle to a modder.
Co-founder of helixmod.blog.com
If you like one of my helixmod patches and want to donate. Can send to me through paypal - eqzitara@yahoo.com
1080 GTX 8GB SLI | I7-4770K@4.5GHz | 16GB RAM | Win10x64
Asus ROG Swift PG278Q | 3D Vision 2
My VG278H does not support Tridef. To the extent that it's possible inspiration can be taken from Tridef. The same is true for Chiri's wrapper and Helix wrapper. There is really no way to combine the available solutions. They are pretty much standalone.
I am very far behind existing solutions but then the project has just begun.
The big difference when moving to dx10/11 is that shaders are already compiled to binary when intercepted by the wrapper. I have begun work on a shader assembler/disassembler.
I will look at how feasable it is to convert the assembler code to HLSL to ease understanding.
Optimizing the process of fixing games will be an ongoing process.
Due to DX11's compiled shaders the current state of shader dumping and replacement is far from enough.
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
For example, years ago I wrote a parser for both Object Pascal and C++. That is the sort of thing you'll need to parse the DX11 shaders, to get them back into something you can compile. Both Helix and Chiri said this is necessary for DX11. Experience from that says that you'd be better off to use Bison or Yacc to create a more general parser, faster. I can possibly do this part.
Another example for Win programming that I figured out. For logging, when you create a log file, the common approach is to do:
Don't do it that way, do:
This allows you to open the log file while it is in use, which can be much more convenient than quitting and relaunching. The setbuf disables buffering so that it's always up to date, and not missing the last few lines.
Might be common knowledge, but HelixMod doesn't do this for example, which is why you cannot open LOG.txt while it's active. The reason this would be super helpful is that sometimes I bust a shader while fixing, and it no longer compiles. The only way to see that is to quit the game to open LOG.txt.
Not sure, I might be totally useless, Win32 is not my forte.
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
Small Changes can make a big difference.
I'm not sure of the form for collaboration.
Dividing tasks can work but it depends on the circumstances and the need for Communication.
A more likely scenario is peer review with code cleanup and suggested improvements.
I'm still considering GPL unless someone has a better idea.
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
I have been learning to live in a 2D world again for amazing games like Assassin's Creed 4 but it would be nice to revisit that game in 3D again down the road. I have the same monitor as you and I am unable to make use of Tridef. I wish I could help out with the coding but that is beyond me. I am willing to donate to the wrapper work just like I did for Chiri's wrapper early on.
1080 GTX 8GB SLI | I7-4770K@4.5GHz | 16GB RAM | Win10x64
Asus ROG Swift PG278Q | 3D Vision 2
Lots of different styles of development too. I come from the path of being far more interested in the end result, and I try not to build anything that I can borrow. As an example- the shader disassembler. You or I can make an opcode table that matches all the binary and dump out text files that are asm. But, there's no point in doing that if we can find something close that already does it, like:
https://code.google.com/p/fxdis-d3d1x/
or maybe:
https://github.com/tgjones/slimshader
It's not the interesting part of the project, so my inclination would be to borrow that instead of rolling a new one. For what it's worth, my rule of thumb is to Google for stuff for at least 4 hours or so before deciding to make my own of anything nowadays.
Counter example- I started with Chiri's Unlocker, and then also looked into the d3d9.dll wrappers that are on the net. Those all patch every vector so that they will load. This works OK, and might the way to go regardless, but seems to not work in all games, has overlay conflicts and the usual funniness.
So, I went ahead and rolled my own dinput8.dll proxy, since it only has 5 vectors, and allows me to gain control very early in most games. From there, I worked out how to use Microsoft's Detours library, which allows us to gain control at game launch, and thus to load and patch specific vectors out of any library we are interested in, including nvapi.dll and d3d11.dll.
All really guesswork on my part, I've not a lot of experience modding and there might be reasons to not use the Detours. In any case, if you want that I'm happy to share.
Looking a little more, I'd skip the Yacc approach. Depends on what you want, but with an asm version, you can always use fxc.exe to recompile it. Pretty sure that's the Helix approach. Chiri had some mechanism to convert it back to HLSL, maybe his own decompiler. I did a short look and cannot find any open source decompiler.
Anyway, I'd say go for it. If you think I can help in some way, let me know.
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
Its posssible to use Tridef still but "limited". If your interested in seeing how it works/profiling. Try the trial. Set it to 120hz framepacked method [I forget its actual name, you will see it]. Start any DIRECT X 9 GAME and launch. You will have to have 3D Vision + tridef open at same time basically 3d visions frame packing lets it work so you turn depth+convergence to 0 with 3d vision. Of course this eats performance like mad but if your interested in seeing how it works. You add a game to its launcher [thats not already listed]. Then it will ask you to select a profile. You click generic. Then when game launches the OSD it shows its profiling methods.
-------------------------------------
Basically my only real suggestion is figuring out something that can be done automatic[with modifications and it might be hit/miss]. Games 3 years ago it was odd to find one with more then 1000 shaders [besides UE3]. Advanced games are very often triple that and I haven't seen DX11 games let alone "sponsored ones" but I really don't want to think about how many shaders they use. Its a not really a concern to helix since he can write his LUA script but I really can't imagine anyone besides him capable. Not to mention games which don't allow you to dump all in game shaders at once, just area of "loading time" which ironically the last game I dealt with had [The Bureau] means constant cherry picking and was the reason I dropped it the first time.
It sucks because this really falls into Nvidia's territory since my main problem is profiles doing jack. I don't think they updated 3d vision post DX11 ever [which is insane] and you literally have nothing working out of the box. If we were able to write "rules" it would just lighten the load an insane amount.
Co-founder of helixmod.blog.com
If you like one of my helixmod patches and want to donate. Can send to me through paypal - eqzitara@yahoo.com
I've long wondered just how much value the profiles are adding, or whether they might actually be making things worse that then need to be fixed. What if we were able to drop in a proxy dll that would force the stereo into known modes, and bypass the profiles altogether? We might conceivably be able to make our own profile mechanism that isn't just completely a black box.
So for example, some tool that forces stereo to the default of always on for every surface and shape. Then some way to specify what should not get stereo that does. Not sure, just thinking out loud.
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
46" Samsung ES7500 3DTV (checkerboard, high FOV as desktop monitor, highly recommend!) - Metro 2033 3D PNG screens - Metro LL filter realism mod - Flugan's Deus Ex:HR Depth changers - Nvidia tech support online form - Nvidia support: 1-800-797-6530
I have come to consider you as a close friend over these last years and i have good faith in your abilities, you don't undervalue your skill and although i never understand anything of that weird matrix stuff i know that it's pretty darn awesome!
Good luck my friend!
I want to add that the wrapper MUST be 64bit compatible, last DX11 games are 64bits.
I'm not a coder (i'm very far from that)....but i can help contributing with ideas. I use helix wrapper for fixing games for about 1+ years and also using Tridef...One thig that Tridef don't have - helix wrapper does- is the one by one fixing shader, very usefull when you try to fix HUD/Crosshair elements and some particular effects.
Tridef "Rules":
- "Rules" are the kind of stuff helix put in the DX##settings.ini...Example: SetSurfaceCreationMode, SkipSetScissorRect, others.
Tridef "Row Matrix Detection":
- "Row Matrix Detection" are lua scripts....Matrix detection search and find some paterns in shaders and you can apply a mix of fixing algorithm to that group of shaders (you can do it through UI in tridef - on/off type - in real time). Normally you can find 10 or 15 Matrix Detection in a game. Example: AC4 have more than 30 Matrix Detection. The good thing about Tridef is you can try for example 1, 2 or 3 different algorithms (and combine to each other) for fixing that group of shaders....with lua script you use 1 fixing code for that group of shaders.
Also sometimes happens that 2, 3 or more shaders are grouped in the wrong group (due massive search), so the batch fix is apply in the wrong shader (= 3D issue), this happens with Tridef and also with Lua Script (with Helix wrapper you have to identify that shader and exclude from batching); with Tridef they have to open a little more the search feature (sub-groups) or deal with those 2 or 3 shaders broken (because is too hard to separate in sub-groups).
Tridef "Profiles":
- Here Tridef is the winner (comparing to nvidia)...Tridef manage group of Rules and Row Matrix Detection depending on the "Game Engine", that's why you can use AC3 profile in AC4 and works just fine. Batch fixing (lua script or Tridef algorithms) HAVE to be "Game engine" dependent....that's because the search paterns in shaders; same engine normally use the same names matrix and the fixing method is always the same for that engine (example: unreal engine)...with some engine upgrades is neccesary to add more Row Matrix Detections (Example: AC4 with one particular lights/shadows group and one particular water reflection group...new version of tridef ignition is needed).
Helix features that Tridef don't have:
- Texture detection for fixing depth and control separation/convergence in-game (very usefull feature)
- Key presets for separation/convergence
- One by One fixing shader (for more experienced users).
Hope this can help in someway.
Cheers!!!!
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com