Reduce StereoSeparation below 1%
Is there a way to adjust StereoSeparation below 1 (not 0 which is 2D)? In Witcher 3 I'm currently using 3DMigoto to get a full SBS output which I display directly (not a virtual cinema screen) on my Oculus display (with Virtual Desktop v1.7) I can't reduce the stereo separation value lower than 1, which is greater than my interpupillary distance. This limits my natural focus range. At 1 StereoSeparation, when I adjust convergence to focus on Geralt, my eyes can still focus as far as the ground, further away than that I start seeing double. I can play with the convergence to focus on specific distances (it looks amazing), but due to the separation my natural focus range is very limited. EDIT: I forgot to mention when I try to set the value to something like 0.8 or 0.1 it gets rounded up to 1 All help appreciated.
Is there a way to adjust StereoSeparation below 1 (not 0 which is 2D)?

In Witcher 3 I'm currently using 3DMigoto to get a full SBS output which I display directly (not a virtual cinema screen) on my Oculus display (with Virtual Desktop v1.7)

I can't reduce the stereo separation value lower than 1, which is greater than my interpupillary distance. This limits my natural focus range. At 1 StereoSeparation, when I adjust convergence to focus on Geralt, my eyes can still focus as far as the ground, further away than that I start seeing double. I can play with the convergence to focus on specific distances (it looks amazing), but due to the separation my natural focus range is very limited.

EDIT: I forgot to mention when I try to set the value to something like 0.8 or 0.1 it gets rounded up to 1

All help appreciated.

#1
Posted 09/15/2018 05:20 PM   
This is the setting that unlocks 0 separation: [url]http://wiki.bo3b.net/index.php?title=Driver_Profile_Settings#StereoFullHKConfig[/url] It has to be set in the registry. To do it quickly, you can download my Final Fantasy XII fix: https://helixmod.blogspot.com/2018/02/final-fantasy-xii-zodiac-age.html Execute the registry key. But it also includes alt+numpad hotkeys that modify several stereo cutoff settings on the fly. You can delete those if you edit the registry key file.
This is the setting that unlocks 0 separation: http://wiki.bo3b.net/index.php?title=Driver_Profile_Settings#StereoFullHKConfig

It has to be set in the registry. To do it quickly, you can download my Final Fantasy XII fix: https://helixmod.blogspot.com/2018/02/final-fantasy-xii-zodiac-age.html

Execute the registry key. But it also includes alt+numpad hotkeys that modify several stereo cutoff settings on the fly. You can delete those if you edit the registry key file.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#2
Posted 09/16/2018 07:04 AM   
Thank you so very much, masterotaku! :D It works, now I can fine-tune the separation below 1
Thank you so very much, masterotaku! :D

It works, now I can fine-tune the separation below 1

#3
Posted 09/16/2018 09:32 AM   
Wow, there are a ton of registry "hacks" it looks like we can make on that page. Is there "hack" that'll enable 3D Vision at 144 Hz and the glasses at 72 hz/eye?
Wow, there are a ton of registry "hacks" it looks like we can make on that page. Is there "hack" that'll enable 3D Vision at 144 Hz and the glasses at 72 hz/eye?

#4
Posted 10/20/2018 07:56 AM   
[quote="spin*1"]Is there "hack" that'll enable 3D Vision at 144 Hz and the glasses at 72 hz/eye?[/quote] Yes. - Using a custom resolution with only the refresh rate you want (or another reliable method of forcing that refresh rate without a custom resolution. Maybe Special K). - Then modifying "nvstres64.dll" and "nvstres.dll" in "C:\Program Files (x86)\NVIDIA Corporation\3D Vision" with "resource_hacker" (replacing "201.bmp" with a black image) to remove the red warning. http://www.angusj.com/resourcehacker/ - After that, using your glasses upside down or using 3Dmigoto to invert 3D Vision (this has lag between eyes). The result will be generally worse than just using 120Hz. The glasses will flicker faster so it will be less noticeable and games will be smoother, but you won't have Lightboost te get good image quality. Instead you will rely on having ULMB or similar techniques (if you have them), which will be worse for crosstalk than Lightboost. Or just not having any kind of strobing, which will make 3D almost as bad as not using your glasses.
spin*1 said:Is there "hack" that'll enable 3D Vision at 144 Hz and the glasses at 72 hz/eye?


Yes.

- Using a custom resolution with only the refresh rate you want (or another reliable method of forcing that refresh rate without a custom resolution. Maybe Special K).
- Then modifying "nvstres64.dll" and "nvstres.dll" in "C:\Program Files (x86)\NVIDIA Corporation\3D Vision" with "resource_hacker" (replacing "201.bmp" with a black image) to remove the red warning. http://www.angusj.com/resourcehacker/
- After that, using your glasses upside down or using 3Dmigoto to invert 3D Vision (this has lag between eyes).

The result will be generally worse than just using 120Hz. The glasses will flicker faster so it will be less noticeable and games will be smoother, but you won't have Lightboost te get good image quality. Instead you will rely on having ULMB or similar techniques (if you have them), which will be worse for crosstalk than Lightboost. Or just not having any kind of strobing, which will make 3D almost as bad as not using your glasses.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#5
Posted 10/20/2018 11:47 AM   
[quote="Dravoc"]Thank you so very much, masterotaku! :D It works, now I can fine-tune the separation below 1 [/quote] Sorry for my ignorance, but what does this do and what are the benefits?
Dravoc said:Thank you so very much, masterotaku! :D

It works, now I can fine-tune the separation below 1


Sorry for my ignorance, but what does this do and what are the benefits?

#6
Posted 10/21/2018 06:17 AM   
[quote="sebastatu"] Sorry for my ignorance, but what does this do and what are the benefits?[/quote] The benefit is more for me as a fixer. Let's use Tokyo Xanadu Ex+ as an example: There is an HUD shader with icons that appear in the game world. Some of them are at screen depth and some of them are in correct 3D space. If I apply a stereoization formula, the previous screen depth icons are now correct, but the ones that were correct are now double stereoized. How to fix that? By forcing 0 separation and convergence in that shader (using a ShaderOverride) and then using the manual stereoization. It works perfectly. But this needs that registry key to work properly. For example, if you don't use it, shadows and HUD can look a bit out of place in my Final Fantasy XII fix, because instead of 0, it applies the lowest separation it can for the shaders: 1%.
sebastatu said:
Sorry for my ignorance, but what does this do and what are the benefits?


The benefit is more for me as a fixer. Let's use Tokyo Xanadu Ex+ as an example:

There is an HUD shader with icons that appear in the game world. Some of them are at screen depth and some of them are in correct 3D space. If I apply a stereoization formula, the previous screen depth icons are now correct, but the ones that were correct are now double stereoized.

How to fix that? By forcing 0 separation and convergence in that shader (using a ShaderOverride) and then using the manual stereoization. It works perfectly.

But this needs that registry key to work properly. For example, if you don't use it, shadows and HUD can look a bit out of place in my Final Fantasy XII fix, because instead of 0, it applies the lowest separation it can for the shaders: 1%.

CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com

#7
Posted 10/21/2018 09:27 AM   
[quote="masterotaku"]There is an HUD shader with icons that appear in the game world. Some of them are at screen depth and some of them are in correct 3D space. If I apply a stereoization formula, the previous screen depth icons are now correct, but the ones that were correct are now double stereoized. How to fix that? By forcing 0 separation and convergence in that shader (using a ShaderOverride) and then using the manual stereoization. It works perfectly.[/quote]In most cases you can fix this by normalising the output coordinate such that the W component equals the current convergence, so that the nvidia formula will have no further effect: [code] // Whatever stereo adjustment you are applying, e.g. the standard stereo correction: o0.x += stereo.x * (o0.w - stereo.y); // Only normalise objects in front of the camera & when stereo is enabled: if (stereo.y && o0.w > 0) { o0 = o0 / o0.w * stereo.y; } [/code] There are some rare cases where scaling the output coordinate like that breaks the object being normalised. In this case you can neutralise the driver's stereo correction by declaring constant buffer 12 (or whatever DX10VSCBNumber is set to). For assembly shaders this is as simple as adding this line to the declarations: [code] // Driver stereo parameters - declaring this neutralises the driver's stereo // correction (even if it is not used): dcl_constantbuffer cb12[1], immediateIndexed [/code] The same works for HLSL shaders, but it is critical that you use cb12 in some way that the HLSL compiler cannot optimise out (e.g. by using it as part of a calculation or decision that feeds into an output), such as (from WATCH_DOGS2): [code] cbuffer DriverStereoParams : register(b12) { float driver_neg_sep_conv; float driver_sep; } ... // Fix the light shaft depth and neutralise the driver's inconsistent stereo // correction by accessing cb12 _if_ it has passed it in: if (driver_sep) { o1.x += driver_sep * o1.w + driver_neg_sep_conv; } else { float4 migoto_stereo_params = StereoParams.Load(0); o1.x += migoto_stereo_params.x * (o1.w - migoto_stereo_params.y); } [/code]
masterotaku said:There is an HUD shader with icons that appear in the game world. Some of them are at screen depth and some of them are in correct 3D space. If I apply a stereoization formula, the previous screen depth icons are now correct, but the ones that were correct are now double stereoized.

How to fix that? By forcing 0 separation and convergence in that shader (using a ShaderOverride) and then using the manual stereoization. It works perfectly.
In most cases you can fix this by normalising the output coordinate such that the W component equals the current convergence, so that the nvidia formula will have no further effect:

// Whatever stereo adjustment you are applying, e.g. the standard stereo correction:
o0.x += stereo.x * (o0.w - stereo.y);

// Only normalise objects in front of the camera & when stereo is enabled:
if (stereo.y && o0.w > 0) {
o0 = o0 / o0.w * stereo.y;
}

There are some rare cases where scaling the output coordinate like that breaks the object being normalised. In this case you can neutralise the driver's stereo correction by declaring constant buffer 12 (or whatever DX10VSCBNumber is set to). For assembly shaders this is as simple as adding this line to the declarations:

// Driver stereo parameters - declaring this neutralises the driver's stereo
// correction (even if it is not used):
dcl_constantbuffer cb12[1], immediateIndexed

The same works for HLSL shaders, but it is critical that you use cb12 in some way that the HLSL compiler cannot optimise out (e.g. by using it as part of a calculation or decision that feeds into an output), such as (from WATCH_DOGS2):

cbuffer DriverStereoParams : register(b12)
{
float driver_neg_sep_conv;
float driver_sep;
}

...

// Fix the light shaft depth and neutralise the driver's inconsistent stereo
// correction by accessing cb12 _if_ it has passed it in:
if (driver_sep) {
o1.x += driver_sep * o1.w + driver_neg_sep_conv;
} else {
float4 migoto_stereo_params = StereoParams.Load(0);
o1.x += migoto_stereo_params.x * (o1.w - migoto_stereo_params.y);
}

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

#8
Posted 10/21/2018 11:31 AM   
[quote="masterotaku"][quote="sebastatu"] Sorry for my ignorance, but what does this do and what are the benefits?[/quote] The benefit is more for me as a fixer. Let's use Tokyo Xanadu Ex+ as an example: There is an HUD shader with icons that appear in the game world. Some of them are at screen depth and some of them are in correct 3D space. If I apply a stereoization formula, the previous screen depth icons are now correct, but the ones that were correct are now double stereoized. How to fix that? By forcing 0 separation and convergence in that shader (using a ShaderOverride) and then using the manual stereoization. It works perfectly. But this needs that registry key to work properly. For example, if you don't use it, shadows and HUD can look a bit out of place in my Final Fantasy XII fix, because instead of 0, it applies the lowest separation it can for the shaders: 1%.[/quote] Ah got it. I was wondering why me as user would want to use this. Thanks for the explanation.
masterotaku said:
sebastatu said:
Sorry for my ignorance, but what does this do and what are the benefits?


The benefit is more for me as a fixer. Let's use Tokyo Xanadu Ex+ as an example:

There is an HUD shader with icons that appear in the game world. Some of them are at screen depth and some of them are in correct 3D space. If I apply a stereoization formula, the previous screen depth icons are now correct, but the ones that were correct are now double stereoized.

How to fix that? By forcing 0 separation and convergence in that shader (using a ShaderOverride) and then using the manual stereoization. It works perfectly.

But this needs that registry key to work properly. For example, if you don't use it, shadows and HUD can look a bit out of place in my Final Fantasy XII fix, because instead of 0, it applies the lowest separation it can for the shaders: 1%.


Ah got it. I was wondering why me as user would want to use this. Thanks for the explanation.

#9
Posted 10/22/2018 03:51 AM   
Uggh, two weeks of looking off and on for this thread and it doesn't contain the info I was looking for. lol, if only I tried searching stereo separation as one word :( Anyway, bump for exposure, in case anyone finds this information useful.
Uggh, two weeks of looking off and on for this thread and it doesn't contain the info I was looking for. lol, if only I tried searching stereo separation as one word :(

Anyway, bump for exposure, in case anyone finds this information useful.

#10
Posted 05/16/2019 08:53 AM   
Scroll To Top