3DVisionActivator - shuttering without Nvidia

Post Reply
User avatar
Flint Eastwood
One Eyed Hopeful
Posts: 36
Joined: Thu Oct 17, 2019 3:29 pm

3DVisionActivator - shuttering without Nvidia

Post by Flint Eastwood »

Program to drive the Nvidia 3D Vision Shutter glasses without the Nvidia 3D Vision driver.
Initially made by "cms": viewtopic.php?p=23830#p23830

Source and binary:
https://github.com/FlintEastwood/3DVisionActivator
3DVisionActivator_.JPG
Keys:
F1 - toggles stereo
F2 - swaps eyes
F3 - next Monitor profile(or loops to the first)
F5 / F6 - modifies the separation
X / S - modifies the x timing (Delay from Monitor-Refresh-Start to Shutter open ??)
Y / A - modifies the y timing (Shutter open time)
W / Q - modifies the w timing (No effect??)
I - toggle timing increment (1000/100/10/1)
ESC - Close App

The controller driver for the IR emitter is still needed. You can find it in the Nvidia graphics driver 425.31 (The installer can be unpacked with 7zip for example).
In theory it can run on any GPU.
!!! Don't start the app when IR-emitter is in sleep-mode !!!

!!! G-Sync has to be off - very important !!!

Known Bugs:
When Nvidia IR emitter goes to sleep-mode and the app is started, Win10 will crash with the BSOD "SYSTEM_SERVICE_EXEPTION" "ucx01000.sys" ! (Workaround is to unplug and plug the IR emitter)
When the IR emitter is woken up from sleep-mode by another 3D-Vision app (NvStTest.exe for example) and the app is started, it hangs on initializing the IR emitter. (Workaround is to unplug and plug the IR emitter)
The cube sometimes flickers - mostly with a lot of background activity- FBO flipping seems to miss the VSync sporadically.

How it works:
There are two rendering contexts (in separate threads). The offscreen thread is not bound by vsync and continually renders the scene to a set of frame buffer objects (one for each eye). The visible context is bound by vsync and has access to these fbos. It renders the appropriate eye fbo to the window and toggles the 3dVision's "eye." The IR-emitter Init sequence is now borrowed from "libnvstusb" and works really good.

A file named "MonitorTimings.ini" holds the Timing profiles. The program will initially use the top profile. (You may want to change this)
If you have a 3D-Vision certified Monitor, you can find this timings with NvTimingsEd (https://github.com/rajkosto/NvTimingsEd) if you know the EDID-ID of your monitor.
The EDID_ID can be found with CRU (Custom Resolution Utility).(https://www.monitortests.com/forum/Thre ... tility-CRU):
CRU_.png
NvTimingsEd_.png
Some older 3D Vision monitors (my Alienware2310 for example) need to be switched into 3D-mode to avoid ghosting. You can achieve this if you set a custom resolution in the GPU driver or with CRU - with exactly the values shown in NvTimingsEd. The important parameter here is the "total vertical lines", they increase to 1149 on the Aw2310 - triggering it to switch into 3D-mode.
That works with the last 3D Vision monitors too, but for my AsusPG248Q it was just neccessary to enable ULMB (backlight strobing) in the Monitor OSD . There is no difference between 3D-mode and ULMB I think.

If you don't have a 3D-Vision Monitor, you can try to find your own timings. X and Y are the important ones. Use CRU to find the exact RefreshRates of your monitor and calculate the Z from that (1000000 / RefreshRate = Z ).
So you can start a new MonitorProfile. If the monitor has a backlight strobing function, I would enable it.
X - seems to be the delay from VSync to shutter open
Y - time the shutter stays open
Z - should always be the exact frametime (8333.33us @ 120Hz) (But be careful. Most monitors dont work exactly with 120Hz, it's more like 119.983Hz for example)
W - unknown, mostly a bit more than half of the frametime. Seems to make no difference, but if you find something out - please let me know.

The Alienware2310 and the AsusPG248PG work really good @120Hz and @100Hz. I was able to watch 3D trailers with sView in EmulatedQuadBuffer-mode. Sometimes an Eye reversing occures - that could be a problem.
Flugans Geo3D works in FrameSequential mode too, but the GPU needs to maintain stable 120fps.
I would love to see this working with Geo11 .
I was able to shutter @144Hz on the AsusPG248Q with my own timings, but I can't enable Lightboost or ULMB @144Hz. That means a low Y-value to reduce ghosting. So I loose a lot of brightness compared to 120Hz with ULMB.
You can not shutter @60Hz !!! That seems to be out of range for the timers in the emitter.
You do not have the required permissions to view the files attached to this post.
Last edited by Flint Eastwood on Sat Apr 20, 2024 5:12 am, edited 3 times in total.
Ryzen 7800X3D // 32GB RAM // GTX 1070 // 3D-Vision glasses + Asus PG248Q // Win10 Home 64bit 22H2 // Nvidia Driver v546.29
lyanna
One Eyed Hopeful
Posts: 1
Joined: Thu Apr 04, 2024 3:49 am

Re: 3DVisionActivator - shuttering without Nvidia

Post by lyanna »

I'm intrigued to give this program a try and see how it performs with my setup. Retro Bowl
john105
Cross Eyed!
Posts: 131
Joined: Sun Oct 27, 2019 5:45 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by john105 »

Interesting project, thanks for sharing. If the eye reversing can be fixed somehow, my understanding is it can be a good replacement for nvidia_dx9 and nvidia_dx11 modes in geo-11 and Vk3DVision that wouldn't require the 3D Vision part of the driver. I guess increasing the thread priority can help a bit. Or maybe having quad buffer supported in the driver is the only way to completely get rid of it.
UnityBeing
Sharp Eyed Eagle!
Posts: 391
Joined: Fri Dec 20, 2019 1:03 am

Re: 3DVisionActivator - shuttering without Nvidia

Post by UnityBeing »

Congratulations! You cracked the egg and now you eat it. You just invented something that will allow many, including myself, to be free from Nvidia's grabby hands and fingers. Thank you so much, Godspeed.
“3D Vision did preserver in the hands of passionate geeks and lost support in the hands of the overbearing nerds” - UnityBeing
Lysander
Terrif-eying the Ladies!
Posts: 937
Joined: Fri May 29, 2020 3:28 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by Lysander »

Woooooow, this sounds really amazing! I'm curious to read other's experience and will check it out when I am on new drivers.

Would this in theory work with the new OLED monitors?
Ryzen 5 5600X, RTX2080Ti, 16GB ram, Windows 20H2, nVidia 452.06, SSD, Dell S2716DG.
User avatar
Flint Eastwood
One Eyed Hopeful
Posts: 36
Joined: Thu Oct 17, 2019 3:29 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by Flint Eastwood »

Lysander wrote: Fri Apr 05, 2024 8:42 pm Would this in theory work with the new OLED monitors?
You can give it a try.
I have no experience with OLED's and if they are fast enough.
Based on the true refresh rate (you can find it with CRU - for example 119.983Hz) you can calculate the frametime Z. Then set W a tad more than the half frametime. You write this values into the "MonitorTimings.ini".
With X (shutter open delay) and Y (shutter open time) you can play to reduce ghosting.

For me this is a test project, to see if we can break the dependency to the Nvidia 3D-Vision driver (because there will be a time this no longer works on latest cards, I assume).
And to learn more C++ . Did I tell you, that I know as much about C++ as a cow knows about flying? This is pretty new and difficult for me.
In theory this could work then on every GPU.
I have an old intel laptop with no dedicated GPU, and I can get the emitter to shutter. But I can't connect my monitors @120Hz to it, as the HDMI is limited to 1920x1080@60Hz. So I can't tell, if it would be in sync.
Ryzen 7800X3D // 32GB RAM // GTX 1070 // 3D-Vision glasses + Asus PG248Q // Win10 Home 64bit 22H2 // Nvidia Driver v546.29
EpsilonLyrae
Two Eyed Hopeful
Posts: 56
Joined: Tue Jun 21, 2022 9:32 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by EpsilonLyrae »

My experience with using 3dvision on OLED panels- it's not a question of "is the OLED fast enough", it's a question of how fast the glasses are. And they're slow, unfortunately. The only way to get reasonably clean stereoscopic 3d from an OLED display is if it supports BFI (ie, older LG OLED TVs). Trying it without BFI activated leads to a lot of crosstalk.
User avatar
Flint Eastwood
One Eyed Hopeful
Posts: 36
Joined: Thu Oct 17, 2019 3:29 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by Flint Eastwood »

EpsilonLyrae wrote: Sat Apr 06, 2024 8:28 am ... it's a question of how fast the glasses are. And they're slow, unfortunately.
...
Trying it without BFI activated leads to a lot of crosstalk.
I don't think the glasses are that slow. They switch in 2ms from dark to open.
But the display nearly needs 8ms to refresh from top to bottom.
https://www.youtube.com/watch?v=q_A-gAyBDGU
With ULMB the backlight will be on for only 3ms in a 8,33ms cycle!
https://www.youtube.com/watch?v=obM2THsfIWA
I don't know, how OLED's are driven, but I guess the refresh will still take its time from top to bottom. Maybe they can switch them all together off for a fast BlackFrameInsertion.

My guess for your problem is this:
There is no certified 3D Vision OLED screen, right? So you are using an EDID override to trick the 3D-Vision driver?
That means the driver gets an EDID-ID for a different monitor, and uses the shutter-timings based on that different monitor.
If that is a ULMB monitor, the shutter timings are very long. That means only with BFI or ULMB you will be able to get a nearly ghost free image.
(With NvTimingsEd you can see/edit the timings for all the different 3D-Vision monitors).
For my older Aw2310 without backlight strobing for example the timings are very much tighter compared to my AsusPG248Q with ULMB - resulting in a much darker picture on the Aw2310.
If you want a ghosting free image without BFI, you have to find the right timings for your monitor. But you will loose some brightness compared to BFI.
Ryzen 7800X3D // 32GB RAM // GTX 1070 // 3D-Vision glasses + Asus PG248Q // Win10 Home 64bit 22H2 // Nvidia Driver v546.29
KingSadra1234
One Eyed Hopeful
Posts: 2
Joined: Fri Apr 14, 2023 2:11 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by KingSadra1234 »

The only question that now remains is weather if this uses quad-buffering (meaning that if the GPU fails to render a frame in time, the last frame is displayed instead of everything going crazy/ out of sync) which is more or less the last point in breaking free from 3DVision...

Anywho, very vert well done. programming might look easy, but it's anything but...
EpsilonLyrae
Two Eyed Hopeful
Posts: 56
Joined: Tue Jun 21, 2022 9:32 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by EpsilonLyrae »

Flint Eastwood wrote: Sat Apr 06, 2024 5:07 pm My guess for your problem is this:
There is no certified 3D Vision OLED screen, right? So you are using an EDID override to trick the 3D-Vision driver?
That means the driver gets an EDID-ID for a different monitor, and uses the shutter-timings based on that different monitor.
If that is a ULMB monitor, the shutter timings are very long. That means only with BFI or ULMB you will be able to get a nearly ghost free image.
(With NvTimingsEd you can see/edit the timings for all the different 3D-Vision monitors).
For my older Aw2310 without backlight strobing for example the timings are very much tighter compared to my AsusPG248Q with ULMB - resulting in a much darker picture on the Aw2310.
If you want a ghosting free image without BFI, you have to find the right timings for your monitor. But you will loose some brightness compared to BFI.
You are correct, it was an EDID trick using CRU. I was also using nvtimingsed to customize the timings and eliminate crosstalk. The best I could muster was about a 90%~ clean image with 10% of it being crosstalk that you could move more of to the bottom or top area to taste, including a roughly even split - but only with BFI on. If you turned BFI off, no amount of settings changes to the timings helps to eliminate crosstalk and you end up with 50% or less of the screen in a clean state w/ zero crosstalk.

The thing about reducing the open time for the shutters is that the response time of the glasses changes - for the worse - any time it's not transitioning from a fully open or fully closed state. I'm not sure where your quoted 2ms response time measurement comes from, but in reality, carving the shutter time down much below 6~7ms is enough to reach the limit of how much crosstalk can be eliminated (Presumed 120hz refresh rate for a stereoscopic 60fps experience). Further reductions at that point work both to dim the perceived image and actually start cutting out areas of the frame entirely - replacing the crosstalk areas with black (at least, with BFI on - I didn't do any testing in this range with BFI off, but I presume it'd primarily dim the image and provide only marginal reductions in crosstalk)

Though I will concede, it's possible and perhaps even likely that this is on-par with or maybe even better than certified monitors performed back in the day. I never owned one, but I've read about them and am also acutely aware of how LCDs of the era performed. Not all of them had backlight strobing, and the response time of LCD compared to OLED is night and day, even when evaluating the currently fastest TN panels. Crosstalk you'd get from slow pixel transitions on the monitor itself are replaced with crosstalk from the shutters being incapable of fully completing their transitions in enough time to ensure each eye is only receiving the intended frame. My largest complaint wasn't with the crosstalk caused by the glasses, but the fact that the polarizers aren't aligned with what's in the LG OLED panels, which cuts the perceived brightness significantly.

Anyway. Kind of going off on a tangent. I think this is a cool project. If serious work ever resumes on geo-11 or it gets open sourced like they said it was going to, this could be one part of a truly GPU and operating system agnostic replacement for Nvidia 3d vision and all of the shader fixes made for it over the years.
User avatar
Flint Eastwood
One Eyed Hopeful
Posts: 36
Joined: Thu Oct 17, 2019 3:29 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by Flint Eastwood »

EpsilonLyrae wrote: Mon Apr 08, 2024 11:18 am ... The best I could muster was about a 90%~ clean image with 10% of it being crosstalk that you could move more of to the bottom or top area to taste, including a roughly even split - but only with BFI on. If you turned BFI off, no amount of settings changes to the timings helps to eliminate crosstalk and you end up with 50% or less of the screen in a clean state w/ zero crosstalk.
...
Further reductions at that point work both to dim the perceived image and actually start cutting out areas of the frame entirely - replacing the crosstalk areas with black (at least, with BFI on - I didn't do any testing in this range with BFI off, but I presume it'd primarily dim the image and provide only marginal reductions in crosstalk)
...
My largest complaint wasn't with the crosstalk caused by the glasses, but the fact that the polarizers aren't aligned with what's in the LG OLED panels, which cuts the perceived brightness significantly. ...
Interessting finds. As I sad I have no experience with OLED panels. Would love to see a extreme slow motion video of this panels.
Why does a OLED panel needs polarizers? Is it just for reflection reducing? The wrong polarization could really make this panels unusable for shutter glasses.
EpsilonLyrae wrote: Mon Apr 08, 2024 11:18 am I'm not sure where your quoted 2ms response time measurement comes from...
I did SlowMotion videos on my phone @960fps:

100Hz ULMB off: https://www.youtube.com/watch?v=q_A-gAyBDGU
You can see the shutters open or close within 2 frames = nearly 2ms.

With ULMB the backlight will be on for only 3ms in a 8,33ms cycle! But the shutters are open for nearly the entire frametime (Delay X = 50us , OpenShutterTime Y = 7334.50us)
120Hz ULMB on: https://www.youtube.com/watch?v=obM2THsfIWA

I did not make a video with my old Aw2310, but as it doesn't has Backlight Strobing, the timings are much tighter (Delay X = 2867.25us, OpenShutterTime Y = 2574.50us). Crazy long delay and very short open time to fight ghosting. (One of the first 3D-Vision Monitors)
Ryzen 7800X3D // 32GB RAM // GTX 1070 // 3D-Vision glasses + Asus PG248Q // Win10 Home 64bit 22H2 // Nvidia Driver v546.29
budda
Sharp Eyed Eagle!
Posts: 389
Joined: Thu May 22, 2008 9:13 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by budda »

Hi,

I always wondered if two shutter glasses can be placed in series so that one is normally open and the other is normally closed.

The trick is to use the fast off switching times of the glasses to effectively create a fast on and fast off shutter respectively.

This could be done by proper orthogonal orientation of the polarization in the series pair of shutters.

The double shutter would open with the normally closed shutter opening (power off) and end with the normally open shutter (powering off).

The shutters could be reset to (power on) in the combined dark shutter phase.

Anyway, I suspect theree may be issues of darkening because of two polarizers in series cutting out some light generally.

Also, as an aside, I would really like to see an OLED phone with 3D shutterglasses glasses capability - its only a matter of time.

Note: If the powering on the shutter is faster than powering it off - then reverse the logic of my argument to get the equivalent result. :? :idea:

Thanks.
User avatar
Flint Eastwood
One Eyed Hopeful
Posts: 36
Joined: Thu Oct 17, 2019 3:29 pm

Re: 3DVisionActivator - shuttering without Nvidia

Post by Flint Eastwood »

I updated the app on Github. ( https://github.com/FlintEastwood/3DVisionActivator )

The app now runs in High Priority (Should make the cube a little more flicker-stable). It still flickers sometimes but that doesn't affect the shuttering, as my tests showed with sView and Flugan's Geo3D .
This cube is still a heavy construction site and it definitely needs more work to do.

You can play with the timings a little bit better now if you want to try a monitor or refresh rates, that are not supported from the 3D-Vision driver.
You can switch the timing increment now between 1000/100/10/1us .

For example I was able now to shutter @ 85Hz on my AsusPG248Q. That would have never been possible with 3D-Vision drivers. :D
But: !!! Flicker Warning !!!
Shuttering @85Hz can be helpful if you have a weak GPU like mine, and you want to reach a relative stable Framerate in Geo3D.
Ryzen 7800X3D // 32GB RAM // GTX 1070 // 3D-Vision glasses + Asus PG248Q // Win10 Home 64bit 22H2 // Nvidia Driver v546.29
Post Reply

Return to “Nvidia 3D Vision Fixes, Solutions and Troubleshooting”