Thank you again, DSS, that was exactly what I was looking for! However, despite that, things have gotten even worse for me because now something I've added/changed is causing the game to crash each time I reload the shaders, which is preventing me from being able to do any experimentation without restarting EVERY time, and needless to say that's not efficient at all. I'm sorry to keep asking for help, but I feel like I'm getting so close to getting this, yet am almost at my wits end and about to have a mental breakdown due to frustration, so could someone please help me figure out what's causing the crashing so I can at least get back to experimenting?
Here is the contents of PS36ECF708 where I found the mProjectionMatrix register. I've made no changes to it (besides adding the comment at the top), so you don't have to scan the code for anything I may have done in it. One question I have is do I need to have this file in my ShaderOverride folder, or be doing anything else at all besides that addition in the dx9settings.ini file to be able to grab the matrix values from it?
// approximately 427 instruction slots used (19 texture, 408 arithmetic)
Here is the PS5C027D7F, which is the shadow I'm trying to fix. There's still a bit of experimentation I'm looking to do, so I'm not expecting anyone to actually figure out the fix for me (but I am welcome to input and suggestions on that), but again, if there's something I'm doing wrong that's causing the crashes it would be appreciated to point that out.
// approximately 88 instruction slots used (17 texture, 71 arithmetic)
And finally, here is VS6AF7D606, which is the VS with 2D lights that I fixed. This works with the fixed value that I found through guesswork, but I'm not sure if that will work for other setups, so I'd like to try to multiple by FOV, which I read is achieved by dividing by the view projection m00 value. I tried to implement this in the commented out code, but that didn't work. Did I do this correctly?
//Mostly standard stereo adjustment
texldl r30, c200.z, s0
add r30.w, r0.w, -r30.y
mul r30.z, r30.x, r30.w
mul r30.z, r30.z, c200.w //Additional adjustment to reduce separation
//rcp r30.w, c154.x
//mul r30.z, r30.z, r30.w
add r0.x, r0.x, -r30.z
add o10, r0, c11
mov o0.xy, v2
mov o8, v1
// approximately 6 instruction slots used
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
[quote="DJ-RK"]Thank you again, DSS, that was exactly what I was looking for! However, despite that, things have gotten even worse for me because now something I've added/changed is causing the game to crash each time I reload the shaders, which is preventing me from being able to do any experimentation without restarting EVERY time, and needless to say that's not efficient at all. I'm sorry to keep asking for help, but I feel like I'm getting so close to getting this, yet am almost at my wits end and about to have a mental breakdown due to frustration, so could someone please help me figure out what's causing the crashing so I can at least get back to experimenting?[/quote]Oh, yeah - the constant crashes in Helix mod can be frustrating as hell. Since you're hitting a crash on reload I suggest trying OverrideMethod=1 or OverrideMethod=2 in the DX9Settings.ini to see if either of them work better.
[quote]Here is the contents of PS36ECF708 where I found the mProjectionMatrix register. I've made no changes to it (besides adding the comment at the top), so you don't have to scan the code for anything I may have done in it. One question I have is do I need to have this file in my ShaderOverride folder, or be doing anything else at all besides that addition in the dx9settings.ini file to be able to grab the matrix values from it?[/quote]It will need to be in ShaderOverride, but you shouldn't need to do anything else to it.
[quote]Here is the PS5C027D7F, which is the shadow I'm trying to fix. There's still a bit of experimentation I'm looking to do, so I'm not expecting anyone to actually figure out the fix for me (but I am welcome to input and suggestions on that), but again, if there's something I'm doing wrong that's causing the crashes it would be appreciated to point that out.
[code]
ps_3_0
def c0, 0.5, 0.999989986, 0, 1
def c1, -0, -1, -2, -3
def c2, 0.0625, 0, 0, 0
[/code][/quote]Have you added or changed any of those constants? I ask because you are using c0 and c2, but I can see that the shader was already using them so they might have been intended to be passed from the game and if that is the case defining them would override that.
[quote]And finally, here is VS6AF7D606, which is the VS with 2D lights that I fixed. This works with the fixed value that I found through guesswork, but I'm not sure if that will work for other setups, so I'd like to try to multiple by FOV, which I read is achieved by dividing by the view projection m00 value. I tried to implement this in the commented out code, but that didn't work. Did I do this correctly?[/quote]Well, the division looks right, but I don't think that's quite the right spot, and I don't think that it's in view-space, so you shouldn't be using the view-space formula. If you say you were able to get the right result by multiplying by 0.25, than assuming this is in view space the horizontal FOV would be degrees(atan(1 / 0.25) * 2) = 151.92751306414706 degrees, which seems rather high. Whenever you use a fudge factor like that it's worth checking if it looks correct from a range of distances, and after adjusting the convergence.
I also notice that you have performed this adjustment in the middle of a matrix multiply (c8-c11 is matMVP and you have adjusted it after c8, c9 and c10 was used, but before c11 was used). It's more likely that you would need to perform the adjustment after (or before) the multiply. This is effectively adjusting o10, which doesn't seem like the right thing to adjust unless the driver has neglected to stereo correct it when it should have. Still, if it works go for it.
DJ-RK said:Thank you again, DSS, that was exactly what I was looking for! However, despite that, things have gotten even worse for me because now something I've added/changed is causing the game to crash each time I reload the shaders, which is preventing me from being able to do any experimentation without restarting EVERY time, and needless to say that's not efficient at all. I'm sorry to keep asking for help, but I feel like I'm getting so close to getting this, yet am almost at my wits end and about to have a mental breakdown due to frustration, so could someone please help me figure out what's causing the crashing so I can at least get back to experimenting?
Oh, yeah - the constant crashes in Helix mod can be frustrating as hell. Since you're hitting a crash on reload I suggest trying OverrideMethod=1 or OverrideMethod=2 in the DX9Settings.ini to see if either of them work better.
Here is the contents of PS36ECF708 where I found the mProjectionMatrix register. I've made no changes to it (besides adding the comment at the top), so you don't have to scan the code for anything I may have done in it. One question I have is do I need to have this file in my ShaderOverride folder, or be doing anything else at all besides that addition in the dx9settings.ini file to be able to grab the matrix values from it?
It will need to be in ShaderOverride, but you shouldn't need to do anything else to it.
Here is the PS5C027D7F, which is the shadow I'm trying to fix. There's still a bit of experimentation I'm looking to do, so I'm not expecting anyone to actually figure out the fix for me (but I am welcome to input and suggestions on that), but again, if there's something I'm doing wrong that's causing the crashes it would be appreciated to point that out.
Have you added or changed any of those constants? I ask because you are using c0 and c2, but I can see that the shader was already using them so they might have been intended to be passed from the game and if that is the case defining them would override that.
And finally, here is VS6AF7D606, which is the VS with 2D lights that I fixed. This works with the fixed value that I found through guesswork, but I'm not sure if that will work for other setups, so I'd like to try to multiple by FOV, which I read is achieved by dividing by the view projection m00 value. I tried to implement this in the commented out code, but that didn't work. Did I do this correctly?
Well, the division looks right, but I don't think that's quite the right spot, and I don't think that it's in view-space, so you shouldn't be using the view-space formula. If you say you were able to get the right result by multiplying by 0.25, than assuming this is in view space the horizontal FOV would be degrees(atan(1 / 0.25) * 2) = 151.92751306414706 degrees, which seems rather high. Whenever you use a fudge factor like that it's worth checking if it looks correct from a range of distances, and after adjusting the convergence.
I also notice that you have performed this adjustment in the middle of a matrix multiply (c8-c11 is matMVP and you have adjusted it after c8, c9 and c10 was used, but before c11 was used). It's more likely that you would need to perform the adjustment after (or before) the multiply. This is effectively adjusting o10, which doesn't seem like the right thing to adjust unless the driver has neglected to stereo correct it when it should have. Still, if it works go for it.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
[quote="DarkStarSword"]
This is the type of code you will see from the decompiler to do a matrix multiply, but I don't personally recommend using this style when using DX11 and HLSL - it will work, but requires more effort to experiment with since there's a bunch of redundant text there. Instead, I suggest:
[code]
result = mul(coord, matrix);
[/code]
Why do it this way? Because you may need to experiment with a few variations, such as:
[code]
1. Use if game uses dot();dot();dot();dot() for matrix multiply:
result = mul(matrix, coord);
2. Use if game uses mul(); mad(); mad(); add/mad(); for matrix multiply:
result = mul(coord, matrix);
[/code][/quote]
Looking back through my notes I've over-simplified these two cases - which order you need here also depends on whether the game has used the "row_major" keyword or not.
So I think that the four combinations to consider are (always worth just trying both ways since it doesn't take long):
- Game uses dot(); dot(); dot(); dot() for matrix multiply
- Matrix is in column-major order
= mul(coord, matrix)
- Game uses dot(); dot(); dot(); dot() for matrix multiply
- Matrix was declared with "row_major" keyword
= mul(matrix, coord)
- Game uses mul(); mad(); mad(); add/mad(); for matrix multiply
- Matrix is in column-major order
= mul(coord, matrix)
- Game uses mul(); mad(); mad(); add/mad(); for matrix multiply
- Matrix was declared with "row_major" keyword
= mul(matrix, coord)
... So given that and the fact I used tmp.z instead of tmp.w for a projection-space adjustment, I'd like to revise my guess as to how to fix this game (vertex shader same as before):
[code]
<snip>
// We need to apply the correction in the *middle* of this instruction before
// adding the camera position, so split it into two separate instructions:
// r1.xyz = r1.yzw * r1.xxx + camera_pos.xyz;
r1.xyz = r1.yzw * r1.xxx;
float4 stereo = StereoParams.Load(0);
float4 tmp;
tmp = mul(float4(r1.xyz, 1), camera_view); // If 1 doesn't work, try 0
tmp = mul(tmp, camera_projection);
// Also removed normalisation and changed tmp.z to tmp.w:
tmp.x -= stereo.x * (tmp.w - stereo.y);
tmp = mul(tmp, camera_inv_projection);
tmp = mul(tmp, camera_inv_view);
r1.xyz = tmp.xyz / tmp.w; // Divide by w may or may not be necessary
// This is the final part of the original instruction we split up:
r1.xyz = r1.xyz + camera_pos.xyz;
<snip>
[/code]
It might also be worth trying the adjustment after the +camera_pos.xyz, since we don't know if the game has included the camera position in the view matrix or not.
Whenever doing these transformations to another coordinate system and back again it's worth trying it with only the conversions but no correction to make sure that nothing is being changed by the conversions. Only once have successfully achieved that should you add the correction in.
[quote]Similarly, I could not determine what would have been different in the world space options vs what I had tried in the viewspace options, so didn't do any of those. [/quote]
The world space options are similar, but need to use the view and projection matrices instead of just the projection matrix - either by multiplying by one then the other (like I attempted before), or using a combined view-projection matrix if the game gave you one.
[quote]I did not understand the 4th viewspace option to test that.[/quote]
The 4th viewspace option would be similar to this example of the 2nd worldspace option (except without using the camera_inv_view matrix) like this:
[code]
<snip>
r0.xy = v0.xy / back_buffer_size.xy;
r1.xyzw = __tex_linear_depth.Sample(__samp_linear_depth_s, r0.xy).xyzw;
// The game has handed us the depth value, so take a note of it:
float depth = r1.x;
r1.yzw = v1.xyz / v1.www;
//r1.xyz = r1.yzw * r1.xxx + camera_pos.xyz;
r1.xyz = r1.yzw * r1.xxx;
float4 stereo = StereoParams.Load(0);
float4 tmp = float4(stereo.x * (depth - stereo.y), 0, 0, 1); // If 1 doesn't work try 0
tmp = mul(tmp, camera_inv_projection);
tmp = mul(tmp, camera_inv_view);
r1.xyz -= tmp.xyz / tmp.w; // Divide by w may or may not be necessary
r1.xyz += camera_pos.xyz;
[/code]
Or alternatively (e.g. if you didn't already have depth and needed to derive it, or if it turned out that the depth value the game handed you wasn't scaled right):
[code]
float4 stereo, tmp;
stereo = StereoParams.Load(0);
tmp = mul(float4(r1.xyz, 1), camera_view);
tmp = mul(tmp, camera_projection);
tmp = float4(stereo.x * (tmp.w - stereo.y), 0, 0, 1); // If 1 doesn't work try 0
tmp = mul(tmp, camera_inv_projection);
tmp = mul(tmp, camera_inv_view);
r1.xyz -= tmp.xyz / tmp.w; // Divide by w may or may not be necessary
[/code]
DarkStarSword said:
This is the type of code you will see from the decompiler to do a matrix multiply, but I don't personally recommend using this style when using DX11 and HLSL - it will work, but requires more effort to experiment with since there's a bunch of redundant text there. Instead, I suggest:
result = mul(coord, matrix);
Why do it this way? Because you may need to experiment with a few variations, such as:
1. Use if game uses dot();dot();dot();dot() for matrix multiply:
result = mul(matrix, coord);
2. Use if game uses mul(); mad(); mad(); add/mad(); for matrix multiply:
result = mul(coord, matrix);
Looking back through my notes I've over-simplified these two cases - which order you need here also depends on whether the game has used the "row_major" keyword or not.
So I think that the four combinations to consider are (always worth just trying both ways since it doesn't take long):
- Game uses dot(); dot(); dot(); dot() for matrix multiply
- Matrix is in column-major order
= mul(coord, matrix)
- Game uses dot(); dot(); dot(); dot() for matrix multiply
- Matrix was declared with "row_major" keyword
= mul(matrix, coord)
- Game uses mul(); mad(); mad(); add/mad(); for matrix multiply
- Matrix is in column-major order
= mul(coord, matrix)
- Game uses mul(); mad(); mad(); add/mad(); for matrix multiply
- Matrix was declared with "row_major" keyword
= mul(matrix, coord)
... So given that and the fact I used tmp.z instead of tmp.w for a projection-space adjustment, I'd like to revise my guess as to how to fix this game (vertex shader same as before):
<snip>
// We need to apply the correction in the *middle* of this instruction before
// adding the camera position, so split it into two separate instructions:
// r1.xyz = r1.yzw * r1.xxx + camera_pos.xyz;
r1.xyz = r1.yzw * r1.xxx;
// Also removed normalisation and changed tmp.z to tmp.w:
tmp.x -= stereo.x * (tmp.w - stereo.y);
tmp = mul(tmp, camera_inv_projection);
tmp = mul(tmp, camera_inv_view);
r1.xyz = tmp.xyz / tmp.w; // Divide by w may or may not be necessary
// This is the final part of the original instruction we split up:
r1.xyz = r1.xyz + camera_pos.xyz;
<snip>
It might also be worth trying the adjustment after the +camera_pos.xyz, since we don't know if the game has included the camera position in the view matrix or not.
Whenever doing these transformations to another coordinate system and back again it's worth trying it with only the conversions but no correction to make sure that nothing is being changed by the conversions. Only once have successfully achieved that should you add the correction in.
Similarly, I could not determine what would have been different in the world space options vs what I had tried in the viewspace options, so didn't do any of those.
The world space options are similar, but need to use the view and projection matrices instead of just the projection matrix - either by multiplying by one then the other (like I attempted before), or using a combined view-projection matrix if the game gave you one.
I did not understand the 4th viewspace option to test that.
The 4th viewspace option would be similar to this example of the 2nd worldspace option (except without using the camera_inv_view matrix) like this:
float4 tmp = float4(stereo.x * (depth - stereo.y), 0, 0, 1); // If 1 doesn't work try 0
tmp = mul(tmp, camera_inv_projection);
tmp = mul(tmp, camera_inv_view);
r1.xyz -= tmp.xyz / tmp.w; // Divide by w may or may not be necessary
r1.xyz += camera_pos.xyz;
Or alternatively (e.g. if you didn't already have depth and needed to derive it, or if it turned out that the depth value the game handed you wasn't scaled right):
Still no go with the new code. Before I get into details about it I wanted to first mention an new observation I've made, which may or may not be significant to the fix approach, but these light/shadow effects break/correct themselves based on convergence values & distance. Strangely enough, though, the 2 examples I've provided react in opposite fashions.
The light on the table (the example we've been working with mainly), when standing close to it, looks fine with a really low convergence, but then separates too much as you increase convergence.
The light on the bridge (viewable at post #580, and code available in 579) looks broken with low/medium convergence, but when I crank my convergence really high (so much that the character's hands and weapons diverge) it looks perfect.
As for the details with trying your code, what I found was that as was that, in it's original form, it would separate the effect too much in negative direction while up close (so image in left eye would be far to the right and right image would be far to the left). If I added the stereo correction rather than subtract, it would still be way too much, but at least in the correct eyes. I found that if I multiplied the correction by 0.1 and subtract, it would look correct up close, but then look incorrect from further.
Some variations I tried were with and without the camera adjustment, and with the camera adjustment it still wasn't right, but not quite as overly separated. I made adjustments to the code, switched tmp.w with tmp.z in the stereo adjustment, without dividing by tmp.w, etc. None of which got it all working correctly.
Oh, and just to make matters even worse, an update was released today which changed the shader CRC's, so I had to relocate and dump the shaders again... which means if I do continue to work on this, will need to update the fix with every game update. Yay!
Not sure if any of this info is useful, and I don't want to keep taking up your time (especially while the focus is on getting FO4 fixable), so if this is getting to be too burdensome for you guys, I'm willing to let it go for now.
Still no go with the new code. Before I get into details about it I wanted to first mention an new observation I've made, which may or may not be significant to the fix approach, but these light/shadow effects break/correct themselves based on convergence values & distance. Strangely enough, though, the 2 examples I've provided react in opposite fashions.
The light on the table (the example we've been working with mainly), when standing close to it, looks fine with a really low convergence, but then separates too much as you increase convergence.
The light on the bridge (viewable at post #580, and code available in 579) looks broken with low/medium convergence, but when I crank my convergence really high (so much that the character's hands and weapons diverge) it looks perfect.
As for the details with trying your code, what I found was that as was that, in it's original form, it would separate the effect too much in negative direction while up close (so image in left eye would be far to the right and right image would be far to the left). If I added the stereo correction rather than subtract, it would still be way too much, but at least in the correct eyes. I found that if I multiplied the correction by 0.1 and subtract, it would look correct up close, but then look incorrect from further.
Some variations I tried were with and without the camera adjustment, and with the camera adjustment it still wasn't right, but not quite as overly separated. I made adjustments to the code, switched tmp.w with tmp.z in the stereo adjustment, without dividing by tmp.w, etc. None of which got it all working correctly.
Oh, and just to make matters even worse, an update was released today which changed the shader CRC's, so I had to relocate and dump the shaders again... which means if I do continue to work on this, will need to update the fix with every game update. Yay!
Not sure if any of this info is useful, and I don't want to keep taking up your time (especially while the focus is on getting FO4 fixable), so if this is getting to be too burdensome for you guys, I'm willing to let it go for now.
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
[quote="DJ-RK"][quote="helifax"]Now I am puzzled...
I'm downloading this game just for the kicks:))
Can you post me the location where I can find your fix so far? And can you also please tell me what are the shaders that you found related to the shadows?
I'll try to give a quick look;))
Cheers![/quote]
The window lighting on the table is in the inn, which is the hub for the game, so the first place you start in. The 2nd set of photos with the lights on the bridge are the first set of broken lights you come across in the first level.
I can give you the shader CRC's or attach the files on here if you want. Not too hard to find them, though.
Edit: Oh, I just realized you asked where my existing fix is, so here's the link: http://www.mediafire.com/download/mp146z24ofkzao1/Warhammer_Vermintide_Fix_v0.2.zip
Doesn't contain any of the shaders that I haven't fixed yet, ie. the ones in these examples I've posted.
@Mike: I gave that other last suggestion a try as well, on all the different variations and still nothing. Indeed, back to experimenting more.[/quote]
Thanks;)
Do you remember the hashes for the shadow pixel/vertex? I guess I can look for it on my own though ^_^
helifax said:Now I am puzzled...
I'm downloading this game just for the kicks:))
Can you post me the location where I can find your fix so far? And can you also please tell me what are the shaders that you found related to the shadows?
I'll try to give a quick look;))
Cheers!
The window lighting on the table is in the inn, which is the hub for the game, so the first place you start in. The 2nd set of photos with the lights on the bridge are the first set of broken lights you come across in the first level.
I can give you the shader CRC's or attach the files on here if you want. Not too hard to find them, though.
Doesn't contain any of the shaders that I haven't fixed yet, ie. the ones in these examples I've posted.
@Mike: I gave that other last suggestion a try as well, on all the different variations and still nothing. Indeed, back to experimenting more.
Thanks;)
Do you remember the hashes for the shadow pixel/vertex? I guess I can look for it on my own though ^_^
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
The update that came out yesterday just changed all the CRC's (well, not all, my HUD fix still works, but the few additional things I fixed like the moons are broken again), so even I gotta get back to grabbing them again.
The update that came out yesterday just changed all the CRC's (well, not all, my HUD fix still works, but the few additional things I fixed like the moons are broken again), so even I gotta get back to grabbing them again.
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
[quote="DJ-RK"]The update that came out yesterday just changed all the CRC's (well, not all, my HUD fix still works, but the few additional things I fixed like the moons are broken again), so even I gotta get back to grabbing them again.[/quote]
I am looking at the shadows/lights. So far no idea what to do...
However, I noticed that if you do this in the Vertex Shader the shadows will be 2D:
[code]
void main(
float4 v0 : POSITION0,
out float4 o0 : SV_POSITION0,
out float4 o1 : TEXCOORD1)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;
r0.xyz = light_proxy_scale.xyz * v0.xyz;
r0.w = 1;
r1.x = dot(r0.xyzw, world_view_proj._m00_m10_m20_m30);
r1.y = dot(r0.xyzw, world_view_proj._m01_m11_m21_m31);
r1.z = dot(r0.xyzw, world_view_proj._m02_m12_m22_m32);
r1.w = dot(r0.xyzw, world_view_proj._m03_m13_m23_m33);
float4 stereo = StereoParams.Load(0);
o0.xyzw = r1.xyzw;
r0.x = dot(r1.xyzw, camera_inv_projection._m00_m10_m20_m30);
r0.y = dot(r1.xyzw, camera_inv_projection._m01_m11_m21_m31);
r0.z = dot(r1.xyzw, camera_inv_projection._m02_m12_m22_m32);
// This will make the shadows/lights be 2D
r0.x += stereo.x * (r1.w - stereo.y) / camera_projection._m00;
o1.w = r1.w;
o1.x = dot(r0.xyz, camera_inv_view._m00_m10_m20);
o1.y = dot(r0.xyz, camera_inv_view._m01_m11_m21);
o1.z = dot(r0.xyz, camera_inv_view._m02_m12_m22);
return;
}
[/code]
And should now be corrected in the PS, however this proves difficult...
What I tried so far:
[code]
void main(
float4 v0 : SV_POSITION0,
float4 v1 : TEXCOORD1,
out float4 o0 : SV_TARGET0)
{
float4 r0,r1,r2,r3,r4,r5,r6,r7;
uint4 bitmask, uiDest;
float4 fDest;
r0.xy = v0.xy / back_buffer_size.xy;
r1.xyzw = __tex_linear_depth.Sample(__samp_linear_depth_s, r0.xy).xyzw;
// Not Working here
float tempDepth = r1.w;
r1.yzw = v1.xyz / v1.www;
float4 stereo = StereoParams.Load(0);
// Not Working here
//r1.x += stereo.x * (r1.w - stereo.y) / camera_projection._m00;
// Split on 2 lines
r1.xyz = r1.yzw * r1.xxx;
// NOT working here...
r1.xyz += camera_pos.xyz;
r2.xyz = light_position.xyz + -r1.xyz;
r0.z = dot(r2.xyz, r2.xyz);
r0.z = sqrt(r0.z);
r0.z = 9.99999975e-006 + r0.z;
r0.w = -light_falloff.x + r0.z;
r1.w = light_falloff.y * r0.w;
r2.w = 1 < r1.w;
if (r2.w != 0) {
[/code]
And all fails... Thing is is not even remotely close to what it should be;)) Is broken on all stages....
DJ-RK said:The update that came out yesterday just changed all the CRC's (well, not all, my HUD fix still works, but the few additional things I fixed like the moons are broken again), so even I gotta get back to grabbing them again.
I am looking at the shadows/lights. So far no idea what to do...
However, I noticed that if you do this in the Vertex Shader the shadows will be 2D:
And all fails... Thing is is not even remotely close to what it should be;)) Is broken on all stages....
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
@DJ_RK Helifax has probably hit on the solution here. I was not aware before that the shadows were not starting out at screen depth. All the PS fix patterns you went through before require this as a starting point. So you could go back and try all the combinations again...
@DJ_RK Helifax has probably hit on the solution here. I was not aware before that the shadows were not starting out at screen depth. All the PS fix patterns you went through before require this as a starting point. So you could go back and try all the combinations again...
Hello, this may seem like a stupid question but how do I view Bo3b's videos. I understand that they must be viewed in 3D but I can't get them to work via YouTube so I have downloaded them and installed 3D Vision Player. The player gives an error (could not render all streams) when I open a video. Thanks in advance for the solution.
Hello, this may seem like a stupid question but how do I view Bo3b's videos. I understand that they must be viewed in 3D but I can't get them to work via YouTube so I have downloaded them and installed 3D Vision Player. The player gives an error (could not render all streams) when I open a video. Thanks in advance for the solution.
Thanks D-man11, that worked, I can now view the videos. How do people view the screenshots in the forum, all I get is SBS screenshots. The same problem was in HelixBlog although now I am getting vibrating screenshots suddenly. It seems very difficult to get the emitter on my monitor to turn on when it is not a game even setting the Nvidia stereoscopic setting to 'Always'.
Thanks D-man11, that worked, I can now view the videos. How do people view the screenshots in the forum, all I get is SBS screenshots. The same problem was in HelixBlog although now I am getting vibrating screenshots suddenly. It seems very difficult to get the emitter on my monitor to turn on when it is not a game even setting the Nvidia stereoscopic setting to 'Always'.
The screenshots in the forum are meant to be viewed using cross eyed viewing.
I've never been able to use the technique, I've tried repeatedly. I think my eye muscles will not allow it or something. Anyways, these links will explain the technique.
http://www.3dphoto.net/text/viewing/technique.html
http://www.starosta.com/3dshowcase/ihelp.html
I'm on driver 358.87, using it I find that 3D is not enabled until I hit ctrl+t when viewing HelixBlog or Gaming.
It's kinda nice, since the checkbox for the feature that disables 3D when the game initially launches isn't there.
[quote="D-Man11"]The screenshots in the forum are meant to be viewed using cross eyed viewing.
I've never been able to use the technique, I've tried repeatedly. I think my eye muscles will not allow it or something. Anyways, these links will explain the technique.
http://www.3dphoto.net/text/viewing/technique.html
http://www.starosta.com/3dshowcase/ihelp.html
I'm on driver 358.87, using it I find that 3D is not enabled until I hit ctrl+t when viewing HelixBlog or Gaming.
It's kinda nice, since the checkbox for the feature that disables 3D when the game initially launches isn't there.
[/quote]
You can also use StereoPhotoMaker to show side-by-side downloaded photos using shutter glasses. The 3D Vision Photo Viewer will also generally work, and has the benefit of being in a window.
For doing cross-eye viewing, you might try relaxing your eyes as much as possible, and giving it some time, like 2 or 3 minutes. When you first do it your eyes don't want to do the 'accommodation', but this is what you use with shutter glasses, so it's only a matter of how far you can go. With practice, just like with 3D originally, you can go further.
I like your reference pages, haven't seen those before. I think this video is helpful as well. A key aide is to have the black dot at the bottom, so you can unify the images to start with.
https://www.youtube.com/watch?v=zBa-bCxsZDk
For these, I recommend starting with a very small image, no more than 4 inches wide. Smaller is easier, requires less accommodation.
Use your finger tip as a reference. With a 4 inch image width, normal sitting distance from monitor, put up a finger at 10-12 inches away and focus on your fingertip. This should be totally natural, as your eyes naturally cross to look at stuff this close.
The paused video gives a great double dot reference for when you see a single dot. Focusing on your fingertip, in your peripheral vision you can see the double dots. Move your finger toward you or away from you to get the double dot to converge to a single dot. Still focused upon your finger tip, this is all background.
Keep focused on the fingertip, and relax your eyes, and wait for maybe 2 minutes. You might eventually be able to move your focus to the now single dot, and the image there.
D-Man11 said:The screenshots in the forum are meant to be viewed using cross eyed viewing.
I've never been able to use the technique, I've tried repeatedly. I think my eye muscles will not allow it or something. Anyways, these links will explain the technique.
I'm on driver 358.87, using it I find that 3D is not enabled until I hit ctrl+t when viewing HelixBlog or Gaming.
It's kinda nice, since the checkbox for the feature that disables 3D when the game initially launches isn't there.
You can also use StereoPhotoMaker to show side-by-side downloaded photos using shutter glasses. The 3D Vision Photo Viewer will also generally work, and has the benefit of being in a window.
For doing cross-eye viewing, you might try relaxing your eyes as much as possible, and giving it some time, like 2 or 3 minutes. When you first do it your eyes don't want to do the 'accommodation', but this is what you use with shutter glasses, so it's only a matter of how far you can go. With practice, just like with 3D originally, you can go further.
I like your reference pages, haven't seen those before. I think this video is helpful as well. A key aide is to have the black dot at the bottom, so you can unify the images to start with.
For these, I recommend starting with a very small image, no more than 4 inches wide. Smaller is easier, requires less accommodation.
Use your finger tip as a reference. With a 4 inch image width, normal sitting distance from monitor, put up a finger at 10-12 inches away and focus on your fingertip. This should be totally natural, as your eyes naturally cross to look at stuff this close.
The paused video gives a great double dot reference for when you see a single dot. Focusing on your fingertip, in your peripheral vision you can see the double dots. Move your finger toward you or away from you to get the double dot to converge to a single dot. Still focused upon your finger tip, this is all background.
Keep focused on the fingertip, and relax your eyes, and wait for maybe 2 minutes. You might eventually be able to move your focus to the now single dot, and the image there.
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, thanks very much for the school which I completed in 2 days without the homework. I have learnt a lot and now I am trying to fix the DX11 Unity5 game Vapour. I managed to hide three artifacts, probably shadows, but am now stuck at a large fire which reflects on the whole scene.
I have enabled exclusive full screen via 3DMiToGo but unfortunately the game crashes when using Alt-Tab so experimentation is very difficult. Do you have any ideas how to go about this ?
Bo3b, thanks very much for the school which I completed in 2 days without the homework. I have learnt a lot and now I am trying to fix the DX11 Unity5 game Vapour. I managed to hide three artifacts, probably shadows, but am now stuck at a large fire which reflects on the whole scene.
I have enabled exclusive full screen via 3DMiToGo but unfortunately the game crashes when using Alt-Tab so experimentation is very difficult. Do you have any ideas how to go about this ?
Take a look at darkstarsword's site, he has Unity templates.
https://github.com/DarkStarSword/3d-fixes
It'd probably be a good idea to start a Vapour thread, maybe?
[quote="DarkStarSword"]If you wanted to take a crack at fixing it yourself, I have templates that can often fix Unity lights/shadows in my 3d-fixes repository, and my shadertool.py script can fix most of the other serious problems (but if you switched profile the driver may be doing that part already - if you get flickering return to the original profile and use my script instead).[/quote]
Also Darkstarsword fixed a 3Dmigoto crash for Fallout 4, who knows, maybe it'll work for you?
[url]https://forums.geforce.com/default/topic/839133/3d-vision/fallout-4/post/4727579/#4727579[/url]
It'd probably be a good idea to start a Vapour thread, maybe?
DarkStarSword said:If you wanted to take a crack at fixing it yourself, I have templates that can often fix Unity lights/shadows in my 3d-fixes repository, and my shadertool.py script can fix most of the other serious problems (but if you switched profile the driver may be doing that part already - if you get flickering return to the original profile and use my script instead).
Also Darkstarsword fixed a 3Dmigoto crash for Fallout 4, who knows, maybe it'll work for you?
Here's the contents of my DX9Settings.ini
Here is the contents of PS36ECF708 where I found the mProjectionMatrix register. I've made no changes to it (besides adding the comment at the top), so you don't have to scan the code for anything I may have done in it. One question I have is do I need to have this file in my ShaderOverride folder, or be doing anything else at all besides that addition in the dx9settings.ini file to be able to grab the matrix values from it?
Here is the PS5C027D7F, which is the shadow I'm trying to fix. There's still a bit of experimentation I'm looking to do, so I'm not expecting anyone to actually figure out the fix for me (but I am welcome to input and suggestions on that), but again, if there's something I'm doing wrong that's causing the crashes it would be appreciated to point that out.
And finally, here is VS6AF7D606, which is the VS with 2D lights that I fixed. This works with the fixed value that I found through guesswork, but I'm not sure if that will work for other setups, so I'd like to try to multiple by FOV, which I read is achieved by dividing by the view projection m00 value. I tried to implement this in the commented out code, but that didn't work. Did I do this correctly?
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
Like my fixes? Dontations can be made to: www.paypal.me/DShanz or rshannonca@gmail.com
Like electronic music? Check out: www.soundcloud.com/dj-ryan-king
It will need to be in ShaderOverride, but you shouldn't need to do anything else to it.
Have you added or changed any of those constants? I ask because you are using c0 and c2, but I can see that the shader was already using them so they might have been intended to be passed from the game and if that is the case defining them would override that.
Well, the division looks right, but I don't think that's quite the right spot, and I don't think that it's in view-space, so you shouldn't be using the view-space formula. If you say you were able to get the right result by multiplying by 0.25, than assuming this is in view space the horizontal FOV would be degrees(atan(1 / 0.25) * 2) = 151.92751306414706 degrees, which seems rather high. Whenever you use a fudge factor like that it's worth checking if it looks correct from a range of distances, and after adjusting the convergence.
I also notice that you have performed this adjustment in the middle of a matrix multiply (c8-c11 is matMVP and you have adjusted it after c8, c9 and c10 was used, but before c11 was used). It's more likely that you would need to perform the adjustment after (or before) the multiply. This is effectively adjusting o10, which doesn't seem like the right thing to adjust unless the driver has neglected to stereo correct it when it should have. Still, if it works go for it.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
Looking back through my notes I've over-simplified these two cases - which order you need here also depends on whether the game has used the "row_major" keyword or not.
So I think that the four combinations to consider are (always worth just trying both ways since it doesn't take long):
- Game uses dot(); dot(); dot(); dot() for matrix multiply
- Matrix is in column-major order
= mul(coord, matrix)
- Game uses dot(); dot(); dot(); dot() for matrix multiply
- Matrix was declared with "row_major" keyword
= mul(matrix, coord)
- Game uses mul(); mad(); mad(); add/mad(); for matrix multiply
- Matrix is in column-major order
= mul(coord, matrix)
- Game uses mul(); mad(); mad(); add/mad(); for matrix multiply
- Matrix was declared with "row_major" keyword
= mul(matrix, coord)
... So given that and the fact I used tmp.z instead of tmp.w for a projection-space adjustment, I'd like to revise my guess as to how to fix this game (vertex shader same as before):
It might also be worth trying the adjustment after the +camera_pos.xyz, since we don't know if the game has included the camera position in the view matrix or not.
Whenever doing these transformations to another coordinate system and back again it's worth trying it with only the conversions but no correction to make sure that nothing is being changed by the conversions. Only once have successfully achieved that should you add the correction in.
The world space options are similar, but need to use the view and projection matrices instead of just the projection matrix - either by multiplying by one then the other (like I attempted before), or using a combined view-projection matrix if the game gave you one.
The 4th viewspace option would be similar to this example of the 2nd worldspace option (except without using the camera_inv_view matrix) like this:
Or alternatively (e.g. if you didn't already have depth and needed to derive it, or if it turned out that the depth value the game handed you wasn't scaled right):
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 light on the table (the example we've been working with mainly), when standing close to it, looks fine with a really low convergence, but then separates too much as you increase convergence.
The light on the bridge (viewable at post #580, and code available in 579) looks broken with low/medium convergence, but when I crank my convergence really high (so much that the character's hands and weapons diverge) it looks perfect.
As for the details with trying your code, what I found was that as was that, in it's original form, it would separate the effect too much in negative direction while up close (so image in left eye would be far to the right and right image would be far to the left). If I added the stereo correction rather than subtract, it would still be way too much, but at least in the correct eyes. I found that if I multiplied the correction by 0.1 and subtract, it would look correct up close, but then look incorrect from further.
Some variations I tried were with and without the camera adjustment, and with the camera adjustment it still wasn't right, but not quite as overly separated. I made adjustments to the code, switched tmp.w with tmp.z in the stereo adjustment, without dividing by tmp.w, etc. None of which got it all working correctly.
Oh, and just to make matters even worse, an update was released today which changed the shader CRC's, so I had to relocate and dump the shaders again... which means if I do continue to work on this, will need to update the fix with every game update. Yay!
Not sure if any of this info is useful, and I don't want to keep taking up your time (especially while the focus is on getting FO4 fixable), so if this is getting to be too burdensome for you guys, I'm willing to let it go for now.
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
Like my fixes? Dontations can be made to: www.paypal.me/DShanz or rshannonca@gmail.com
Like electronic music? Check out: www.soundcloud.com/dj-ryan-king
Thanks;)
Do you remember the hashes for the shadow pixel/vertex? I guess I can look for it on my own though ^_^
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
Like my fixes? Dontations can be made to: www.paypal.me/DShanz or rshannonca@gmail.com
Like electronic music? Check out: www.soundcloud.com/dj-ryan-king
I am looking at the shadows/lights. So far no idea what to do...
However, I noticed that if you do this in the Vertex Shader the shadows will be 2D:
And should now be corrected in the PS, however this proves difficult...
What I tried so far:
And all fails... Thing is is not even remotely close to what it should be;)) Is broken on all stages....
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
Rig: Intel i7-8700K @4.7GHz, 16Gb Ram, SSD, GTX 1080Ti, Win10x64, Asus VG278
http://3dvision-blog.com/8619-how-to-always-keep-your-nvidia-3d-vision-video-player-up-to-date/
I've never been able to use the technique, I've tried repeatedly. I think my eye muscles will not allow it or something. Anyways, these links will explain the technique.
http://www.3dphoto.net/text/viewing/technique.html
http://www.starosta.com/3dshowcase/ihelp.html
I'm on driver 358.87, using it I find that 3D is not enabled until I hit ctrl+t when viewing HelixBlog or Gaming.
It's kinda nice, since the checkbox for the feature that disables 3D when the game initially launches isn't there.
You can also use StereoPhotoMaker to show side-by-side downloaded photos using shutter glasses. The 3D Vision Photo Viewer will also generally work, and has the benefit of being in a window.
For doing cross-eye viewing, you might try relaxing your eyes as much as possible, and giving it some time, like 2 or 3 minutes. When you first do it your eyes don't want to do the 'accommodation', but this is what you use with shutter glasses, so it's only a matter of how far you can go. With practice, just like with 3D originally, you can go further.
I like your reference pages, haven't seen those before. I think this video is helpful as well. A key aide is to have the black dot at the bottom, so you can unify the images to start with.
For these, I recommend starting with a very small image, no more than 4 inches wide. Smaller is easier, requires less accommodation.
Use your finger tip as a reference. With a 4 inch image width, normal sitting distance from monitor, put up a finger at 10-12 inches away and focus on your fingertip. This should be totally natural, as your eyes naturally cross to look at stuff this close.
The paused video gives a great double dot reference for when you see a single dot. Focusing on your fingertip, in your peripheral vision you can see the double dots. Move your finger toward you or away from you to get the double dot to converge to a single dot. Still focused upon your finger tip, this is all background.
Keep focused on the fingertip, and relax your eyes, and wait for maybe 2 minutes. You might eventually be able to move your focus to the now single dot, and the image there.
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 have enabled exclusive full screen via 3DMiToGo but unfortunately the game crashes when using Alt-Tab so experimentation is very difficult. Do you have any ideas how to go about this ?
https://github.com/DarkStarSword/3d-fixes
It'd probably be a good idea to start a Vapour thread, maybe?
Also Darkstarsword fixed a 3Dmigoto crash for Fallout 4, who knows, maybe it'll work for you?
https://forums.geforce.com/default/topic/839133/3d-vision/fallout-4/post/4727579/#4727579