An update to a prior guide (thread now locked), including a lot of details regarding VSYNC, Refresh Rates, etc. I’m using this method almost all of the time now when pushing flat titles to my HMD:
Guide for Clear 3D on HMD from flat games (written for Pimax, but mostly applicable to other HMDs as well.)
This is a guide for getting as much clarity as possible in a 3D display on your HMD out of flat non-VR games. This does not provide a full VR experience. Personally, I’ve found that the quality concessions I have to make for full-VR makeover experiences are far too great for me to do so in anything but the least-demanding older titles. Most of the time I’m happier playing a title while seated, without head-tracking, and just utilizing my Xbox controller.
Equipment and Software:
A variable (or at the very least high) refresh rate monitor of at least 1080p resolution.
Virtual Desktop (available on STEAM)
Reshade
SuperDepth 3D/VR (Reshade)
General process overview:
We will be using the correct hardware and software to drive your monitor at the same refresh-rate as your HMD, or at exactly 1/2 refresh of your HMD. Then we will push a lot of pixels to your HMD, in order to achieve clarity in the games you will be running. Finally we will use Virtual Desktop, combined with SuperDepth3D or SuperDepthVR, to push the game to your HMD in 3D.
Important considerations:
a) You must hit your HMD refresh (or half the refresh) as your absolute minimum frame-rate. The HMD is not a variable-sync device, so dropping even a single frame below your target refresh/FPS will induce terrible stuttering. You must also lock this as your maximum frame rate (generally by using vsync.)
b) The resolution you push to the HMD is just as important as the internal game-rendering resolution.
c) You must leave some GPU overhead. I generally shoot for maxing out the GPU at around 85% to 90%. However, do NOT bother doing much optimizing of your settings until after you get everything working at conservative resolution and quality settings. There simply isn’t any point tuning performance until all the other elements are in place and working. Then, and only then, begin testing how far you can push a title.
d) Be very cautious adding texture mods to modern games. Even with 24GB of VRAM in my 4090 I can eat up that VRAM fast. As soon as you start swapping textures in and out of VRAM you’ll introduce stuttering and hitching and can initiate a performance death-spiral (where performance will continue to stutter even when all texture swapping has concluded). For example, in Cyberpunk, without any high-resolution texture packs, I’m pushing 22GB all the time. If I try to use texture packs I quickly introduce stuttering even though my GPU usage increases not a bit (only VRAM usage.)
e) I have tinkered with frame-gen a lot, and they are clearly designed for variable-refresh displays. You can force it to work if you limit your FPS manually through your driver software or via. other methods for doing so. This will then work OK (there is so much GPU overhead that it’s hard to justify) if you do not want stereoscopic rendering. However, at this point every method I have tried results in considerable additional issues with stereoscopic rendering. If anyone finds something that works please post your solution.
Steps:
-
Use CRU (Custom Resolution Utility) to add refresh rates to your primary display. These refresh rates should exactly match those of your HMD, or should be exactly half of your HMD’s refresh. For example, for my 8K-X I have added these refresh rates: 45hz, 60hz, 75hz, and 90hz, none of which were supported as selectable-fixed-rate-refresh rates on my 165hz variable-sync display. These custom resolutions need to be added in the “Detailed Resolutions” section of CRU. Simply open CRU and add these resolutions to the top section; it’s very straightforward.
-
Install your game and get everything working properly on your flat screen. Don’t bother optimizing anything at this point as the performance on your HMD will be considerably lower.
-
Create an entry in PiTool for Virtual Desktop if it is not there.
-
In PiTool set the HMD FOV to potato, and the quality to 2. Leave this quality at 2 unless you absolutely need that last 1% or so of GPU performance. Quality gains are considerable up to 1.5, so I would consider that to be the absolute minimum you should use, but use 2 if you can.
-
Set your Dynamic Super Resolution (or equivalent depending on GPU brand), so that you can access resolutions up to at least 4k.
-
Run Virtual Desktop and get your game running “flat” on your HMD. Adjust the Virtual Desktop prefs to your liking (I prefer a curved display). Set hotkeys for the stereoscopic options and screen centering (plus other stuff if you wish.) You can increase the SS even further using Virtual Desktop’s settings with minimal GPU usage impact, but quality gains are not substantial. Still, for older games that are not demanding this is a viable option to squeeze a tiny bit more clarity to your HMD. Shoot for a output resolution of 4K if you can. This is true even if you are forced to use DLSS or other upscaling. For example, a game running at 4k, with DLSS Quality (so actually rendering at about 2560x1440) will look vastly better than game running natively at 2560x1440, even though this seems counter-intuitive. It will also take more GPU power, as DLSS has overhead. Ultimately you’ll have play around depending on the title. Clarity gains up to 4K are tremendous, but drop-off considerably at resolutions above that. So, shoot for 4K if you can get there, dropping by small increments if you can’t. Choose DLSS (or other) upscaling methods before dropping your output resolution much below 4k.
-
For the best possible performance and sync run your display and HMD at the same refresh, with VSync (I usually use Adaptive, see below) on and a title configured to never (or at least very rarely) dropping below that. For example, Display 75hz/ HMD 75hz / Game 75 fps minimum. If you have an Nvidia card I’ve found that setting a title to use either Adaptive or Adaptive (Half Refresh Rate) ultimately provides the best experience. If you can do that then you’ll set VSync off in the game itself. Unfortunately, this is also an area where you may have to play around, as different titles seem to like different methods.
-
Alternatively you can push a game at 1/2 the refresh, especially at 90/45, and still get good results. The only downside is some blurring on fast movement (mostly rotation). This is fantastic for demanding titles. I’m pushing Cyberpunk at extremely high quality, including Psycho RT. It looks down-right fantastic. To do this, set your HMD to your desired refresh rate, then set the HMD VSYNC to 1/2. Also set your primary Display to Half your HMD refresh, and your VSYNC on (or Adaptive). For example: Display 45hz / HMD 90 hz set to 1/2 / Game 45fps minimum. (NOTE: This is one of the few scenarios where the PiTool Smart Smoothing still functions OK and will never try to drop to 1/3 rate. Use it if you wish. Personally I find the warping and distortions to be too much to tolerate, and prefer the slight blurring on movement that comes with Smart Smoothing off. But it is there and works OK if you want to try it. You’ll need to leave a little extra GPU overhead however.) NOTE 2: You can also also lock to fractional VSYNC rates this way: Use Nvidia’s Adaptive (Half Refresh Rate) option, and then set your HMD and Main display to your desired refresh: For example, if you do this: Display 75hz / HMD 75hz / Game 37.5 fps, locked to that using the Adaptive (Half Refresh Rate) option. I do not know if this option exists on AMD or Intel cards. (In that scenario also try Display 75hz, HMD 75hz set to 1/2, Game 37.5 and see how it works. Limiting your HMD to 1/2 refresh will reduce GPU usage but I think it introduces some micro-stuttering when the display is set to double the HMD refresh in that way.)
-
Finally you can add ReShade and whatever options you wish. Note that at these high resolutions Reshade can have a fair amount of impact upon performance. You’ll want to install the base shaders plus the SuperDepth suite.
I prefer to use the SuperDepth3D version, as it has significantly less GPU overhead than the SuperDepthVR(it looks like the latest updates have resolved this issue: AFAICT performance between the two is now close to identical) version and does just as good as job as far as I can tell (maybe even a bit better in some ways). But you can use whichever one you wish. You’ll have to sharpen using your preferred sharpening filter, and you can use any number of other basic shaders to saturate colors, etc. Personally, I find that I like pushing a lot of “AMD” sharpening and then also pushing a fair amount of FXAA. This sounds a bit counter-intuitive, but at least on my 8k-x it works well in most titles. Avoid demanding shaders such as AO shaders, unless you are running an older title and have plenty of power to spare. Note that if you are using the SuperDepthVR version of the shader you will find built-in sharpening and saturations controls, meaning you may be able to do everything you wish using that one shader. -
SuperDepth has a LOT of options and can feel a bit overwhelming to understand. However, it works extremely well and in some titles approaches G3D quality. I find that the Pimax HMD provides a lot more depth than a traditional flat 3D display, and I can therefore drop the 3D amount quite a bit, which really helps to reduce the halo artifacts that Z3D solutions produce. Be patient and play with the options until you get a good idea what each one does. Note that SuperDepth detects your game and sets many options to the author’s suggested values. These values are extremely good and unless something is very wrong you’ll just want to leave them and possibly adjust the overall depth a bit. I’ve also found that I generally prefer the “Reiteration” or “Stamp” (halo management) methods more than the defaults.
-
Z3D often causes issue with full-screen UI elements. For example, it can distort Inventory screens. To work around this create a second Reshade profile which still includes an active Superdepth, but in which you have set the Superdepth depth to 0 (you can also play with a few of the other settings if you wish). Then set a hotkey for Reshade to rotate between presets. You can now swap to a “flat” screen whenever you wish using that hot-key, and then swap back into 3D mode using that same key. Works great.
-
Don’t forget to set “performance mode” on in Reshade unless you are actively adjusting settings.
-
Every once in a while your HMD and primary display will get out of sync. You’ll know this has happened because your FPS won’t drop, but you’ll get stuttering anyway. Tabbing out of the game and back in generally fixes this. If you get it a lot you probably haven’t left enough GPU overhead. Try reducing quality just slightly until it happens less frequently or resolves entirely.
I think that’s it. Hopefully this generalized guide will help some others. After trying, and failing, to get the clarity I wanted out of various “full VR conversion” methods (vorpX, dedicated single-title mods, etc.), I’ve come to rely on this method to get the quality I want. Not that those other methods aren’t good in their own way, especially on older/lower resolutions HMDs, but pushing low-resolutions to our high-resolution HMDs looks absolutely terrible, whereas this method can look amazing, even in extremely demanding titles.