That's right. That's the basic idea behind 'scope'. You can have as many constants as you like at the shader code level (well, up to 256), but only two specified by the register at the DX9Settings level. The PS and VS versions can be different numbers, but don't really qualify as being at the same scope.
The real key there is that you can only define eight of the consts like: [code]Const3 = 0x00000000[/code]
You can USE those in multiple places, but only define the eight.
I'm surprised that setting the output to zero isn't working, but killing the code is. I don't have a good answer for that. Helix always deleted the code for his fixes, so it's always possible that is a better way to go. The Microsoft documentation says that not assigning the output can lead to undefined results including pipeline exceptions and stalls, but it's always possible Helix knows more about it in the real world than they do.
For this sort of problem, you may or may not be interested in what is happening. If you don't really care and just want to get it working, you've got a workaround that seems to be fine, and can go with that. If you want to try to understand why, you can do more experiments, like commenting out successfully smaller chunks of code to find which lines might be causing the problem.
That's right. That's the basic idea behind 'scope'. You can have as many constants as you like at the shader code level (well, up to 256), but only two specified by the register at the DX9Settings level. The PS and VS versions can be different numbers, but don't really qualify as being at the same scope.
The real key there is that you can only define eight of the consts like:
Const3 = 0x00000000
You can USE those in multiple places, but only define the eight.
I'm surprised that setting the output to zero isn't working, but killing the code is. I don't have a good answer for that. Helix always deleted the code for his fixes, so it's always possible that is a better way to go. The Microsoft documentation says that not assigning the output can lead to undefined results including pipeline exceptions and stalls, but it's always possible Helix knows more about it in the real world than they do.
For this sort of problem, you may or may not be interested in what is happening. If you don't really care and just want to get it working, you've got a workaround that seems to be fine, and can go with that. If you want to try to understand why, you can do more experiments, like commenting out successfully smaller chunks of code to find which lines might be causing the problem.
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
Back from vacation - now I've got decent Internet again it's time to get back to shaderhacking!
[quote="Pirateguybrush"]I'm trying to improve the fix for A Story About Your Uncle.[/quote]Cool - I was thinking about taking a shot at that one as well, but I played through it while my 3D laptop was in for repair and I'm not likely to replay it for some time.
For disabling shadows in a pixel shader I'd also try setting the output to all 1s instead of 0s to see if it makes a difference - I found that was necessary to remove the broken shadows in the Book of Unwritten Tales 2, as setting the output to all 0s either put the entire scene into shadow (title screen), or just made the shadows darker (in game).
That said, I'm wondering if the shaders you identified are the correct ones - they look a bit simpler than the shadow shaders I've looked at so far. I did find a couple of shaders in BoUT2 that appeared to disable the shadows while cycling through in the Helix debugger, but turned out to be the wrong ones and disabling their outputs had no effect. Like the ones you found they were also suspiciously simple - they basically just copied one of their inputs to their output, which is all yours appears to be doing as well.
[quote="bo3b"]You can only define the 4 constants Const1, Const2, Const3, Const4.[/quote]I haven't got around to testing this and it's a bit off-topic, but from digging around inside the DLL it looks like it might be possible to define a second set of constants for a total of 8 (Const5, Const6, Const7, Const8, DefVSConst2 & DefPSConst2).
Back from vacation - now I've got decent Internet again it's time to get back to shaderhacking!
Pirateguybrush said:I'm trying to improve the fix for A Story About Your Uncle.
Cool - I was thinking about taking a shot at that one as well, but I played through it while my 3D laptop was in for repair and I'm not likely to replay it for some time.
For disabling shadows in a pixel shader I'd also try setting the output to all 1s instead of 0s to see if it makes a difference - I found that was necessary to remove the broken shadows in the Book of Unwritten Tales 2, as setting the output to all 0s either put the entire scene into shadow (title screen), or just made the shadows darker (in game).
That said, I'm wondering if the shaders you identified are the correct ones - they look a bit simpler than the shadow shaders I've looked at so far. I did find a couple of shaders in BoUT2 that appeared to disable the shadows while cycling through in the Helix debugger, but turned out to be the wrong ones and disabling their outputs had no effect. Like the ones you found they were also suspiciously simple - they basically just copied one of their inputs to their output, which is all yours appears to be doing as well.
bo3b said:You can only define the 4 constants Const1, Const2, Const3, Const4.
I haven't got around to testing this and it's a bit off-topic, but from digging around inside the DLL it looks like it might be possible to define a second set of constants for a total of 8 (Const5, Const6, Const7, Const8, DefVSConst2 & DefPSConst2).
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
[quote="DarkStarSword"][quote="bo3b"]You can only define the 4 constants Const1, Const2, Const3, Const4.[/quote]I haven't got around to testing this and it's a bit off-topic, but from digging around inside the DLL it looks like it might be possible to define a second set of constants for a total of 8 (Const5, Const6, Const7, Const8, DefVSConst2 & DefPSConst2).[/quote]Yep, I went ahead and edited the earlier posts, but this syntax is not very good so I think it makes it more confusing than anything. I also edited the HelixModFeatureList on the wiki to add those details.
Unless you have problems or need more than 4 constants, it's best to stick with the first set of 4.
bo3b said:You can only define the 4 constants Const1, Const2, Const3, Const4.
I haven't got around to testing this and it's a bit off-topic, but from digging around inside the DLL it looks like it might be possible to define a second set of constants for a total of 8 (Const5, Const6, Const7, Const8, DefVSConst2 & DefPSConst2).
Yep, I went ahead and edited the earlier posts, but this syntax is not very good so I think it makes it more confusing than anything. I also edited the HelixModFeatureList on the wiki to add those details.
Unless you have problems or need more than 4 constants, it's best to stick with the first set of 4.
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="DarkStarSword"]Like the ones you found they were also suspiciously simple - they basically just copied one of their inputs to their output, which is all yours appears to be doing as well.[/quote]I've had a bit of a think about what these simple shaders might be, and I realise that it probably is part of the shadows - there are a whole bunch of different techniques to render shadows in games, one of which uses the stencil buffer (OpenGL term - not sure if it's called the same thing in DirectX).
This technique uses two passes to draw the shadows - the first pass is the complex one that projects shadows onto the stencil buffer by projecting planes and playing some tricks to make surfaces facing the camera draw the shadow, and surfaces facing away from the camera erase it. The second stage is much simpler - it copies the resulting shadow onto the back buffer by setting the stencil buffer as the mask and simply drawing a rectangle over the whole screen in the colour and opacity of the shadows.
I'm thinking that the vertex and pixel shaders involved in that second stage would be pretty trivial since the hard work has already been done and they only need to draw in screen space - my guess is that's probably the shader you have identified.
I'm not entirely sure why disabling the output of these pixel shaders wouldn't remove the shadows, but I suppose it might be to do with the rendering mode while this second stage is being drawn...?
In one case in BoUT2 when I found the correct shader to disable in the debugger the entire scene changed: instead of the shadows disappearing the whole scene appeared to be in shadow, but it looked kind of weird in that it was textured instead of solid - almost like someone had rubbed charcoal over the screen. Setting the output of this shader to 1,1,1,1 did the trick for me.
DarkStarSword said:Like the ones you found they were also suspiciously simple - they basically just copied one of their inputs to their output, which is all yours appears to be doing as well.
I've had a bit of a think about what these simple shaders might be, and I realise that it probably is part of the shadows - there are a whole bunch of different techniques to render shadows in games, one of which uses the stencil buffer (OpenGL term - not sure if it's called the same thing in DirectX).
This technique uses two passes to draw the shadows - the first pass is the complex one that projects shadows onto the stencil buffer by projecting planes and playing some tricks to make surfaces facing the camera draw the shadow, and surfaces facing away from the camera erase it. The second stage is much simpler - it copies the resulting shadow onto the back buffer by setting the stencil buffer as the mask and simply drawing a rectangle over the whole screen in the colour and opacity of the shadows.
I'm thinking that the vertex and pixel shaders involved in that second stage would be pretty trivial since the hard work has already been done and they only need to draw in screen space - my guess is that's probably the shader you have identified.
I'm not entirely sure why disabling the output of these pixel shaders wouldn't remove the shadows, but I suppose it might be to do with the rendering mode while this second stage is being drawn...?
In one case in BoUT2 when I found the correct shader to disable in the debugger the entire scene changed: instead of the shadows disappearing the whole scene appeared to be in shadow, but it looked kind of weird in that it was textured instead of solid - almost like someone had rubbed charcoal over the screen. Setting the output of this shader to 1,1,1,1 did the trick for me.
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
Just a heads up, that I've run into a showstopper for the current Lesson 7, so I won't be able to make it available for a bit.
The next lesson will be about how to move the HUD to any depth that you prefer.
In The Ball, I cannot find the HUD shader, so it puts a bit of crimp on the lesson.
For people who just can't wait or want to experiment, the basic premise of the lesson will be a single formula:
x += separation * percentage
Where you use a constant to define how big a percentage of maximum depth to use.
Commenting out dcl_texcoord4 v0.x seems to have no significant effects.
Commenting out mov oC0, v0.x kills the shadow.
Setting the output to 1,1,1,1 seems to have no effect.
Any suggestions as to where to go from here? I'd like to figure out why this is happening.
Commenting out dcl_texcoord4 v0.x seems to have no significant effects.
Commenting out mov oC0, v0.x kills the shadow.
Setting the output to 1,1,1,1 seems to have no effect.
Any suggestions as to where to go from here? I'd like to figure out why this is happening.
OK, interesting. The commenting out of the "mov oC0, v0.x" would be the same as the deleted code method, because the output register oC0 would not be assigned. So it's good to see that works, with the other pieces of code there. (I assume that the "mov oC0.xyzw, c219.xxxx" is also commented out.)
That tells us that the problem is that line of code.
Since it assembles with no errors in the LOG, that also suggests that we are doing something that doesn't work on the hardware, but is not strictly illegal.
The input is defined as a single parameter, that v0.x, as opposed to a v0.xyzw, or v0.xy. Which suggests that it might have only a single parameter for output, and thus we might be confusing it by setting all 4 fields.
Try setting the output with a single 0 instead of all four, like:
[code]//Character dynamic shadows
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
ps_3_0
def c219, 0, 0, 0, 0
dcl_texcoord4 v0.x
// mov oC0, v0.x
mov oC0, c219.x
[/code]
That will be closer to matching the original statement.
OK, interesting. The commenting out of the "mov oC0, v0.x" would be the same as the deleted code method, because the output register oC0 would not be assigned. So it's good to see that works, with the other pieces of code there. (I assume that the "mov oC0.xyzw, c219.xxxx" is also commented out.)
That tells us that the problem is that line of code.
Since it assembles with no errors in the LOG, that also suggests that we are doing something that doesn't work on the hardware, but is not strictly illegal.
The input is defined as a single parameter, that v0.x, as opposed to a v0.xyzw, or v0.xy. Which suggests that it might have only a single parameter for output, and thus we might be confusing it by setting all 4 fields.
Try setting the output with a single 0 instead of all four, like:
//Character dynamic shadows
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
ps_3_0
def c219, 0, 0, 0, 0
dcl_texcoord4 v0.x
// mov oC0, v0.x
mov oC0, c219.x
That will be closer to matching the original statement.
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
I just have managed to complete lesson 6 so I don't mind if I have to wait for lesson 7 ;)
As the water in the demo level already was fixed I decided to have a look at an area in the full game with several halo issues caused by water surfaces and waterfalls. It was easy to fix these issues (3 VS) as the relevant PS and VS shaders could be clearly identified and had a structure very similar to the lava shader (dcl_texcoord5). See [url]http://wiki.bo3b.net/index.php?title=User:3d4dd#Lesson_6[/url]
So thank You very much for Your great lesson that allowed me to do the first real fix by myself!
Nevertheless I have some questions. I'm sorry if they were already answered and I just didn't notice it ;)
- Regarding the strategy to find the right spot to use the prime directive: For my fix I hunted the PS and the VS that removed the issue when I disabled it. Then I had a look at the input the PS uses (v0, v1,...) and identified the dcl_texcoord which had 3 dimensions (e.g. v1.xyw, v2.xyz). Then I checked if the VS has these dcl_texcoords as output and tried the prime directive fix on the output. Is this the common way to do this kind of fixes? Is experimenting with texld only usefull if I want to disable parts of a shader or does this also help me to identify which part of the VS I should try to fix? Do I have to identify both PS and VS or can I just hunt the VS and try the prime directive on the dcl_texcoord outputs one after another?
- Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6? Or would it be a waste of time as the prime directive is limited to certain issues?
- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
[code]dp3 o3.x, r2, r4
...
dp3 o3.y, r0, r4
...
dp3 o3.z, r1, r4
...
mov o3.w, c5.z[/code]
I tried this code at the end of the shader:
[code]mov r0, o3
(prime directive used on r0)
mov o3, r0[/code]
But the shader seemed to be ignored then (no change when reloaded)...
So I replaced o3 with r29 (unused register):
[code]dp3 r29.x, r2, r4
...
dp3 r29.y, r0, r4
...
dp3 r29.z, r1, r4
...
mov r29.w, c5.z[/code]
and at the end
[code]mov r0, r29
(prime directive used on r0)
mov o3, r0[/code]
This didn't fix the issue but at least the image changed when I reloaded the shader. So is this code per se correct?
I just have managed to complete lesson 6 so I don't mind if I have to wait for lesson 7 ;)
As the water in the demo level already was fixed I decided to have a look at an area in the full game with several halo issues caused by water surfaces and waterfalls. It was easy to fix these issues (3 VS) as the relevant PS and VS shaders could be clearly identified and had a structure very similar to the lava shader (dcl_texcoord5). See http://wiki.bo3b.net/index.php?title=User:3d4dd#Lesson_6
So thank You very much for Your great lesson that allowed me to do the first real fix by myself!
Nevertheless I have some questions. I'm sorry if they were already answered and I just didn't notice it ;)
- Regarding the strategy to find the right spot to use the prime directive: For my fix I hunted the PS and the VS that removed the issue when I disabled it. Then I had a look at the input the PS uses (v0, v1,...) and identified the dcl_texcoord which had 3 dimensions (e.g. v1.xyw, v2.xyz). Then I checked if the VS has these dcl_texcoords as output and tried the prime directive fix on the output. Is this the common way to do this kind of fixes? Is experimenting with texld only usefull if I want to disable parts of a shader or does this also help me to identify which part of the VS I should try to fix? Do I have to identify both PS and VS or can I just hunt the VS and try the prime directive on the dcl_texcoord outputs one after another?
- Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6? Or would it be a waste of time as the prime directive is limited to certain issues?
- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
[quote="3d4dd"]Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6?[/quote]
You can try. There are effects that look like shadow or reflection issues that are actually haloing issues. This could also be the issue you're having with the the Sims 4. Post the vertex shader code here.
[quote="3d4dd"]- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
[code]dp3 o3.x, r2, r4
...
dp3 o3.y, r0, r4
...
dp3 o3.z, r1, r4
...
mov o3.w, c5.z[/code]
I tried this code at the end of the shader:
[code]mov r0, o3
(prime directive used on r0)
mov o3, r0[/code]
But the shader seemed to be ignored then (no change when reloaded)...
So I replaced o3 with r29 (unused register):
[code]dp3 r29.x, r2, r4
...
dp3 r29.y, r0, r4
...
dp3 r29.z, r1, r4
...
mov r29.w, c5.z[/code]
and at the end
[code]mov r0, r29
(prime directive used on r0)
mov o3, r0[/code]
This didn't fix the issue but at least the image changed when I reloaded the shader. So is this code per se correct?[/quote]
If you're trying to fix haloing issues, I don't think the shader code you posted is the correct one. Can you post the whole code and/or the vertex shader CRC?
3d4dd said:Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6?
You can try. There are effects that look like shadow or reflection issues that are actually haloing issues. This could also be the issue you're having with the the Sims 4. Post the vertex shader code here.
3d4dd said:- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
mov r0, r29
(prime directive used on r0)
mov o3, r0
This didn't fix the issue but at least the image changed when I reloaded the shader. So is this code per se correct?
If you're trying to fix haloing issues, I don't think the shader code you posted is the correct one. Can you post the whole code and/or the vertex shader CRC?
[quote="3d4dd"]I just have managed to complete lesson 6 so I don't mind if I have to wait for lesson 7 ;)
As the water in the demo level already was fixed I decided to have a look at an area in the full game with several halo issues caused by water surfaces and waterfalls. It was easy to fix these issues (3 VS) as the relevant PS and VS shaders could be clearly identified and had a structure very similar to the lava shader (dcl_texcoord5). See [url]http://wiki.bo3b.net/index.php?title=User:3d4dd#Lesson_6[/url]
So thank You very much for Your great lesson that allowed me to do the first real fix by myself![/quote]Awesome! Very glad to hear it, and congratulations! It's surprisingly rewarding, don't you think?
[quote="3d4dd"]Nevertheless I have some questions. I'm sorry if they were already answered and I just didn't notice it ;)
- Regarding the strategy to find the right spot to use the prime directive: For my fix I hunted the PS and the VS that removed the issue when I disabled it. Then I had a look at the input the PS uses (v0, v1,...) and identified the dcl_texcoord which had 3 dimensions (e.g. v1.xyw, v2.xyz). Then I checked if the VS has these dcl_texcoords as output and tried the prime directive fix on the output. Is this the common way to do this kind of fixes? Is experimenting with texld only usefull if I want to disable parts of a shader or does this also help me to identify which part of the VS I should try to fix? Do I have to identify both PS and VS or can I just hunt the VS and try the prime directive on the dcl_texcoord outputs one after another?[/quote]I wanted to emphasize that the experimentation is good for all of the above. When you are trying to figure it out, doing experiments of any form is good. The goal is to get a rough idea of what different pieces of the shader code, what they effect, so anything that helps you understand a piece is good.
Sometimes I'll just add or multiply the x value by some random values like 10, 100, 1000 to see what happens, see what is affected.
Commenting out the texld is not always the best approach, but it's one of the simplest. In general when I'm trying these things, I actually try to make the output the hot-pink color (1.0, 0, 1.0= RgB) as it's more obvious, but takes more code. The texld is also easy to recognize. But, there is nothing particularly significant about that strategy, so don't hesitate to branch out.
[quote="3d4dd"]- Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6? Or would it be a waste of time as the prime directive is limited to certain issues?[/quote]No, the prime directive is pretty prime. It's used for nearly all fixes where we are trying to make something stereo when it isn't already. It's not always applicable, because some things need other changes, not stereoization, but it is certainly worth trying in nearly all cases, as experiments.
For skybox or HUD for example, we wouldn't stereoize those, because we want to move them to a specific depth, so we wouldn't use the canonical code in those cases.
[quote="3d4dd"]- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
...
So I replaced o3 with r29 (unused register):
[code]dp3 r29.x, r2, r4
...
dp3 r29.y, r0, r4
...
dp3 r29.z, r1, r4
...
mov r29.w, c5.z[/code]
and at the end
[code]mov r0, r29
(prime directive used on r0)
mov o3, r0[/code]
This didn't fix the issue but at least the image changed when I reloaded the shader. So is this code per se correct?[/quote]The last way is the right way.
The problem with using the o3 is that is a write-only register, so you cannot read values back from it. So, putting interim values into a temporary register like r29 is the only way to get that to work.
This is why I put the comments like "// At this point r0 has the output", so that you can easily add a "mov r0, location" before the canonical code, and thus don't need to edit the code all the time, with the attendant edit risks.
The code DOES support rewriting the value in output registers, so you can always add code at the bottom to reset registers like o3 to whatever you want, as long as you have the correct, un-stereoized value available to run through the prime directive.
3d4dd said:I just have managed to complete lesson 6 so I don't mind if I have to wait for lesson 7 ;)
As the water in the demo level already was fixed I decided to have a look at an area in the full game with several halo issues caused by water surfaces and waterfalls. It was easy to fix these issues (3 VS) as the relevant PS and VS shaders could be clearly identified and had a structure very similar to the lava shader (dcl_texcoord5). See http://wiki.bo3b.net/index.php?title=User:3d4dd#Lesson_6
So thank You very much for Your great lesson that allowed me to do the first real fix by myself!
Awesome! Very glad to hear it, and congratulations! It's surprisingly rewarding, don't you think?
3d4dd said:Nevertheless I have some questions. I'm sorry if they were already answered and I just didn't notice it ;)
- Regarding the strategy to find the right spot to use the prime directive: For my fix I hunted the PS and the VS that removed the issue when I disabled it. Then I had a look at the input the PS uses (v0, v1,...) and identified the dcl_texcoord which had 3 dimensions (e.g. v1.xyw, v2.xyz). Then I checked if the VS has these dcl_texcoords as output and tried the prime directive fix on the output. Is this the common way to do this kind of fixes? Is experimenting with texld only usefull if I want to disable parts of a shader or does this also help me to identify which part of the VS I should try to fix? Do I have to identify both PS and VS or can I just hunt the VS and try the prime directive on the dcl_texcoord outputs one after another?
I wanted to emphasize that the experimentation is good for all of the above. When you are trying to figure it out, doing experiments of any form is good. The goal is to get a rough idea of what different pieces of the shader code, what they effect, so anything that helps you understand a piece is good.
Sometimes I'll just add or multiply the x value by some random values like 10, 100, 1000 to see what happens, see what is affected.
Commenting out the texld is not always the best approach, but it's one of the simplest. In general when I'm trying these things, I actually try to make the output the hot-pink color (1.0, 0, 1.0= RgB) as it's more obvious, but takes more code. The texld is also easy to recognize. But, there is nothing particularly significant about that strategy, so don't hesitate to branch out.
3d4dd said:- Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6? Or would it be a waste of time as the prime directive is limited to certain issues?
No, the prime directive is pretty prime. It's used for nearly all fixes where we are trying to make something stereo when it isn't already. It's not always applicable, because some things need other changes, not stereoization, but it is certainly worth trying in nearly all cases, as experiments.
For skybox or HUD for example, we wouldn't stereoize those, because we want to move them to a specific depth, so we wouldn't use the canonical code in those cases.
3d4dd said:- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
...
So I replaced o3 with r29 (unused register):
mov r0, r29
(prime directive used on r0)
mov o3, r0
This didn't fix the issue but at least the image changed when I reloaded the shader. So is this code per se correct?
The last way is the right way.
The problem with using the o3 is that is a write-only register, so you cannot read values back from it. So, putting interim values into a temporary register like r29 is the only way to get that to work.
This is why I put the comments like "// At this point r0 has the output", so that you can easily add a "mov r0, location" before the canonical code, and thus don't need to edit the code all the time, with the attendant edit risks.
The code DOES support rewriting the value in output registers, so you can always add code at the bottom to reset registers like o3 to whatever you want, as long as you have the correct, un-stereoized value available to run through the prime directive.
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
Thank You both for Your helpful information!
Yes, it is very satisfying to be able not only to deactivate issues but fix them :) But it also makes eager to remove the remaining issues ;) ATM I have several problems with water refraction (The Ball, Mind, The Hunter...). I have tried to fix it using the prime directive without success. As refractions are already 3D but at wrong depth stereoization doesn't help in this case?
@4everAwake: I have described my issue with The Sims 4 here: https://forums.geforce.com/default/topic/513190/3d-vision/how-to-fix-disable-shaders-in-games-dll-guide-and-fixes-/158/ I have also uploaded the PS and VS: http://www12.zippyshare.com/v/33085941/file.html The VS are 2_0 not 3_0. Do I have to convert them to 3_0 to be able to use it with helixmod?
Thank You both for Your helpful information!
Yes, it is very satisfying to be able not only to deactivate issues but fix them :) But it also makes eager to remove the remaining issues ;) ATM I have several problems with water refraction (The Ball, Mind, The Hunter...). I have tried to fix it using the prime directive without success. As refractions are already 3D but at wrong depth stereoization doesn't help in this case?
[quote="3d4dd"]Thank You both for Your helpful information!
Yes, it is very satisfying to be able not only to deactivate issues but fix them :) But it also makes eager to remove the remaining issues ;) ATM I have several problems with water refraction (The Ball, Mind, The Hunter...). I have tried to fix it using the prime directive without success. As refractions are already 3D but at wrong depth stereoization doesn't help in this case?[/quote]Anything at wrong depth can be moved to a different depth. Whether you use the prime-directive or not, depends upon how it is broken, but in general, you will always use it somehow or another. Take a look further up in this thread at the example of the halo problem. It's not immediately obvious that the problem is because a texture needs stereoization, and does not get it by default.
[quote="3d4dd"]@4everAwake: I have described my issue with The Sims 4 here: https://forums.geforce.com/default/topic/513190/3d-vision/how-to-fix-disable-shaders-in-games-dll-guide-and-fixes-/158/ I have also uploaded the PS and VS: http://www12.zippyshare.com/v/33085941/file.html The VS are 2_0 not 3_0. Do I have to convert them to 3_0 to be able to use it with helixmod?[/quote]Try the SkipSetScissorRect=true for that one. Haven't talked about that, but it's most likely.
If you want to use the Helix load of stereo texture to get separation and convergence, it does need to be SM3.0. Here is a cool converter made by Mana84 long ago: [url]http://helixmod.blogspot.com/2013/05/vs11vs20-vs30-converter.html[/url]
3d4dd said:Thank You both for Your helpful information!
Yes, it is very satisfying to be able not only to deactivate issues but fix them :) But it also makes eager to remove the remaining issues ;) ATM I have several problems with water refraction (The Ball, Mind, The Hunter...). I have tried to fix it using the prime directive without success. As refractions are already 3D but at wrong depth stereoization doesn't help in this case?
Anything at wrong depth can be moved to a different depth. Whether you use the prime-directive or not, depends upon how it is broken, but in general, you will always use it somehow or another. Take a look further up in this thread at the example of the halo problem. It's not immediately obvious that the problem is because a texture needs stereoization, and does not get it by default.
[quote="bo3b"]eqzitara has been updating the game list, so it's best to let him keep doing that at present. I looked, and this was one he simply overlooked, as there are newer ones already on the list. Later on, I expect to make an automated TOC page that will pick up every blog page without having to manage it.[/quote]
I've gone ahead and made an automated TOC page - it's currently a draft on the blog (with a JS hack to remove Blogger's draft click trap so you can try the links). I was hoping to get eqzitara's ok and some feedback before making it live.
If you have post permissions on the blog you should be able to preview it here... what do you think?
EDIT: It's now live, with a 2013 date set so it doesn't show up on the front page:
http://helixmod.blogspot.com.au/2013/10/game-list-automatically-updated.html
bo3b said:eqzitara has been updating the game list, so it's best to let him keep doing that at present. I looked, and this was one he simply overlooked, as there are newer ones already on the list. Later on, I expect to make an automated TOC page that will pick up every blog page without having to manage it.
I've gone ahead and made an automated TOC page - it's currently a draft on the blog (with a JS hack to remove Blogger's draft click trap so you can try the links). I was hoping to get eqzitara's ok and some feedback before making it live.
If you have post permissions on the blog you should be able to preview it here... what do you think?
[quote="DarkStarSword"][quote="bo3b"]eqzitara has been updating the game list, so it's best to let him keep doing that at present. I looked, and this was one he simply overlooked, as there are newer ones already on the list. Later on, I expect to make an automated TOC page that will pick up every blog page without having to manage it.[/quote]
I've gone ahead and made an automated TOC page - it's currently a draft on the blog (with a JS hack to remove Blogger's draft click trap so you can try the links). I was hoping to get eqzitara's ok and some feedback before making it live.
If you have post permissions on the blog you should be able to preview it here... what do you think?
https://www.blogger.com/post-preview-auth.g?postID=2908298589811970379&blogID=5003459283230164005[/quote]
Briliant. Has everything in it, and I like the clarity of multiple fixes being under one title (e.g. Splinter Cell Conviction). If it's possible to list *who* did the fix that would give some recognition, especially for new people who start to make fixes based on bo3b's shaderhacker school. Not sure how easy it is to work that out since not every game was posted by the fixer (e.g. some of Helix's great fixes were posted by eqzitara), but on the whole they were. Just a thought though.
bo3b said:eqzitara has been updating the game list, so it's best to let him keep doing that at present. I looked, and this was one he simply overlooked, as there are newer ones already on the list. Later on, I expect to make an automated TOC page that will pick up every blog page without having to manage it.
I've gone ahead and made an automated TOC page - it's currently a draft on the blog (with a JS hack to remove Blogger's draft click trap so you can try the links). I was hoping to get eqzitara's ok and some feedback before making it live.
If you have post permissions on the blog you should be able to preview it here... what do you think?
Briliant. Has everything in it, and I like the clarity of multiple fixes being under one title (e.g. Splinter Cell Conviction). If it's possible to list *who* did the fix that would give some recognition, especially for new people who start to make fixes based on bo3b's shaderhacker school. Not sure how easy it is to work that out since not every game was posted by the fixer (e.g. some of Helix's great fixes were posted by eqzitara), but on the whole they were. Just a thought though.
Yeah, super great, thanks for doing that. Saved me from having to learn a whole bunch more arcane blogger stuff. :->
Let me double check with eqzitara. He might be happier to do this to avoid the task of updating the list.
Couple of things:
1) How does the update mechanism work? How often does it run, and how?
2) Doesn't have a sort for the 'marginal' fixes like disabled effects, but that's probably OK as long as we make it clear on each actual post.
Yeah, super great, thanks for doing that. Saved me from having to learn a whole bunch more arcane blogger stuff. :->
Let me double check with eqzitara. He might be happier to do this to avoid the task of updating the list.
Couple of things:
1) How does the update mechanism work? How often does it run, and how?
2) Doesn't have a sort for the 'marginal' fixes like disabled effects, but that's probably OK as long as we make it clear on each actual post.
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
The real key there is that you can only define eight of the consts like:
You can USE those in multiple places, but only define the eight.
I'm surprised that setting the output to zero isn't working, but killing the code is. I don't have a good answer for that. Helix always deleted the code for his fixes, so it's always possible that is a better way to go. The Microsoft documentation says that not assigning the output can lead to undefined results including pipeline exceptions and stalls, but it's always possible Helix knows more about it in the real world than they do.
For this sort of problem, you may or may not be interested in what is happening. If you don't really care and just want to get it working, you've got a workaround that seems to be fine, and can go with that. If you want to try to understand why, you can do more experiments, like commenting out successfully smaller chunks of code to find which lines might be causing the problem.
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
Cool - I was thinking about taking a shot at that one as well, but I played through it while my 3D laptop was in for repair and I'm not likely to replay it for some time.
For disabling shadows in a pixel shader I'd also try setting the output to all 1s instead of 0s to see if it makes a difference - I found that was necessary to remove the broken shadows in the Book of Unwritten Tales 2, as setting the output to all 0s either put the entire scene into shadow (title screen), or just made the shadows darker (in game).
That said, I'm wondering if the shaders you identified are the correct ones - they look a bit simpler than the shadow shaders I've looked at so far. I did find a couple of shaders in BoUT2 that appeared to disable the shadows while cycling through in the Helix debugger, but turned out to be the wrong ones and disabling their outputs had no effect. Like the ones you found they were also suspiciously simple - they basically just copied one of their inputs to their output, which is all yours appears to be doing as well.
I haven't got around to testing this and it's a bit off-topic, but from digging around inside the DLL it looks like it might be possible to define a second set of constants for a total of 8 (Const5, Const6, Const7, Const8, DefVSConst2 & DefPSConst2).
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
Unless you have problems or need more than 4 constants, it's best to stick with the first set of 4.
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 technique uses two passes to draw the shadows - the first pass is the complex one that projects shadows onto the stencil buffer by projecting planes and playing some tricks to make surfaces facing the camera draw the shadow, and surfaces facing away from the camera erase it. The second stage is much simpler - it copies the resulting shadow onto the back buffer by setting the stencil buffer as the mask and simply drawing a rectangle over the whole screen in the colour and opacity of the shadows.
I'm thinking that the vertex and pixel shaders involved in that second stage would be pretty trivial since the hard work has already been done and they only need to draw in screen space - my guess is that's probably the shader you have identified.
I'm not entirely sure why disabling the output of these pixel shaders wouldn't remove the shadows, but I suppose it might be to do with the rendering mode while this second stage is being drawn...?
In one case in BoUT2 when I found the correct shader to disable in the debugger the entire scene changed: instead of the shadows disappearing the whole scene appeared to be in shadow, but it looked kind of weird in that it was textured instead of solid - almost like someone had rubbed charcoal over the screen. Setting the output of this shader to 1,1,1,1 did the trick for me.
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
The next lesson will be about how to move the HUD to any depth that you prefer.
In The Ball, I cannot find the HUD shader, so it puts a bit of crimp on the lesson.
For people who just can't wait or want to experiment, the basic premise of the lesson will be a single formula:
x += separation * percentage
Where you use a constant to define how big a percentage of maximum depth to use.
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
Commenting out mov oC0, v0.x kills the shadow.
Setting the output to 1,1,1,1 seems to have no effect.
Any suggestions as to where to go from here? I'd like to figure out why this is happening.
That tells us that the problem is that line of code.
Since it assembles with no errors in the LOG, that also suggests that we are doing something that doesn't work on the hardware, but is not strictly illegal.
The input is defined as a single parameter, that v0.x, as opposed to a v0.xyzw, or v0.xy. Which suggests that it might have only a single parameter for output, and thus we might be confusing it by setting all 4 fields.
Try setting the output with a single 0 instead of all four, like:
That will be closer to matching the original statement.
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
As the water in the demo level already was fixed I decided to have a look at an area in the full game with several halo issues caused by water surfaces and waterfalls. It was easy to fix these issues (3 VS) as the relevant PS and VS shaders could be clearly identified and had a structure very similar to the lava shader (dcl_texcoord5). See http://wiki.bo3b.net/index.php?title=User:3d4dd#Lesson_6
So thank You very much for Your great lesson that allowed me to do the first real fix by myself!
Nevertheless I have some questions. I'm sorry if they were already answered and I just didn't notice it ;)
- Regarding the strategy to find the right spot to use the prime directive: For my fix I hunted the PS and the VS that removed the issue when I disabled it. Then I had a look at the input the PS uses (v0, v1,...) and identified the dcl_texcoord which had 3 dimensions (e.g. v1.xyw, v2.xyz). Then I checked if the VS has these dcl_texcoords as output and tried the prime directive fix on the output. Is this the common way to do this kind of fixes? Is experimenting with texld only usefull if I want to disable parts of a shader or does this also help me to identify which part of the VS I should try to fix? Do I have to identify both PS and VS or can I just hunt the VS and try the prime directive on the dcl_texcoord outputs one after another?
- Regarding the sort of issues that can be fixed with the prime directive: Can I try to use this fix with "every" issue I find in a game (shadows, refraction, reflection, etc.) or is it per se limited to certain issues like halos? I'm asking as I wondered if I should try this fix on my Sims 4 issue ("gaps" at the edges of lots)? Or remaining issues caused by the refraction of water in the level of The Ball I have fixed for lesson 6? Or would it be a waste of time as the prime directive is limited to certain issues?
- Regarding proper code: In our examples we had to use the fix on a code like:
mov o4, r4
We commented that out, moved r4 to r0, changed r0 and finally moved r0 to o4.
What is the best way to include the fix if there isn't only one mov for an output but the output is partially changed several times in the shader like:
I tried this code at the end of the shader:
But the shader seemed to be ignored then (no change when reloaded)...
So I replaced o3 with r29 (unused register):
and at the end
This didn't fix the issue but at least the image changed when I reloaded the shader. So is this code per se correct?
My original display name is 3d4dd - for some reason Nvidia changed it..?!
You can try. There are effects that look like shadow or reflection issues that are actually haloing issues. This could also be the issue you're having with the the Sims 4. Post the vertex shader code here.
If you're trying to fix haloing issues, I don't think the shader code you posted is the correct one. Can you post the whole code and/or the vertex shader CRC?
Dual boot Win 7 x64 & Win 10 (1809) | Geforce Drivers 417.35
I wanted to emphasize that the experimentation is good for all of the above. When you are trying to figure it out, doing experiments of any form is good. The goal is to get a rough idea of what different pieces of the shader code, what they effect, so anything that helps you understand a piece is good.
Sometimes I'll just add or multiply the x value by some random values like 10, 100, 1000 to see what happens, see what is affected.
Commenting out the texld is not always the best approach, but it's one of the simplest. In general when I'm trying these things, I actually try to make the output the hot-pink color (1.0, 0, 1.0= RgB) as it's more obvious, but takes more code. The texld is also easy to recognize. But, there is nothing particularly significant about that strategy, so don't hesitate to branch out.
No, the prime directive is pretty prime. It's used for nearly all fixes where we are trying to make something stereo when it isn't already. It's not always applicable, because some things need other changes, not stereoization, but it is certainly worth trying in nearly all cases, as experiments.
For skybox or HUD for example, we wouldn't stereoize those, because we want to move them to a specific depth, so we wouldn't use the canonical code in those cases.
The last way is the right way.
The problem with using the o3 is that is a write-only register, so you cannot read values back from it. So, putting interim values into a temporary register like r29 is the only way to get that to work.
This is why I put the comments like "// At this point r0 has the output", so that you can easily add a "mov r0, location" before the canonical code, and thus don't need to edit the code all the time, with the attendant edit risks.
The code DOES support rewriting the value in output registers, so you can always add code at the bottom to reset registers like o3 to whatever you want, as long as you have the correct, un-stereoized value available to run through the prime directive.
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
Yes, it is very satisfying to be able not only to deactivate issues but fix them :) But it also makes eager to remove the remaining issues ;) ATM I have several problems with water refraction (The Ball, Mind, The Hunter...). I have tried to fix it using the prime directive without success. As refractions are already 3D but at wrong depth stereoization doesn't help in this case?
@4everAwake: I have described my issue with The Sims 4 here: https://forums.geforce.com/default/topic/513190/3d-vision/how-to-fix-disable-shaders-in-games-dll-guide-and-fixes-/158/ I have also uploaded the PS and VS: http://www12.zippyshare.com/v/33085941/file.html The VS are 2_0 not 3_0. Do I have to convert them to 3_0 to be able to use it with helixmod?
My original display name is 3d4dd - for some reason Nvidia changed it..?!
Try the SkipSetScissorRect=true for that one. Haven't talked about that, but it's most likely.
If you want to use the Helix load of stereo texture to get separation and convergence, it does need to be SM3.0. Here is a cool converter made by Mana84 long ago: http://helixmod.blogspot.com/2013/05/vs11vs20-vs30-converter.html
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
I've gone ahead and made an automated TOC page - it's currently a draft on the blog (with a JS hack to remove Blogger's draft click trap so you can try the links). I was hoping to get eqzitara's ok and some feedback before making it live.
If you have post permissions on the blog you should be able to preview it here... what do you think?
EDIT: It's now live, with a 2013 date set so it doesn't show up on the front page:
http://helixmod.blogspot.com.au/2013/10/game-list-automatically-updated.html
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
Briliant. Has everything in it, and I like the clarity of multiple fixes being under one title (e.g. Splinter Cell Conviction). If it's possible to list *who* did the fix that would give some recognition, especially for new people who start to make fixes based on bo3b's shaderhacker school. Not sure how easy it is to work that out since not every game was posted by the fixer (e.g. some of Helix's great fixes were posted by eqzitara), but on the whole they were. Just a thought though.
Rig: Intel i7-8700K @4.7GHz, 16Gb Ram, SSD, GTX 1080Ti, Win10x64, Asus VG278
Let me double check with eqzitara. He might be happier to do this to avoid the task of updating the list.
Couple of things:
1) How does the update mechanism work? How often does it run, and how?
2) Doesn't have a sort for the 'marginal' fixes like disabled effects, but that's probably OK as long as we make it clear on each actual post.
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