super sampling vs hmd quality

hi folks. new to VR so apologies if this has been asked before.
can i just ask what the difference is between super sampling settings and HMD Image Quality?

i've got super sampling set to 2 and hmd quality to 1. runs smooth, but wondering if it's best to flip it (IE hmd quality up while keeping ss at 1)?

thanks!
 
Elite in game super sampling setting is an application native render scale multiplier. The application initially renders to an intermediate texture buffer and then scales it down to the target device resolution and submits the rectilinear texture to the VR Api for distortion. Don't use this - set it to 1 and forget about it forever.

Elite in game HMD quality setting is a render scale multiplier for the size of the intermediate texture buffer used by the VR Api before it performs the barrel distortion and scales the texture to the device resolution. This is equivalent to setting the SteamVR application resolution or Oculus pixel per display pixel setting. Better to set this in Steam/Oculus/Pitool as you can set more granular values than the .25 step options offered in the game options.

TLDR; set both to 1 in Elite and set the intermediate render scale in Steam/Oculus/Pitool.
 
Last edited:
Yes, flip it.

HMD Quality increases the bitmap size of the pictures the game renders, and hands them over to the VR headset runtime, which then use them as source when creating the ones that goes to the headset, and that has distortion applied, that counters that of the HMD lenses. It is essentially the same as increasing "supersampling", or "render target multiplier", or "pixel density", or whatever they may call it, in the VR runtime settings for your HMD.

Elite's in-game-settings "Supersampling" also renders larger images, but scales them down to 1.0 size, before giving them over to the VR runtime. This means that while you have gained detail, it has already been "baked" into the output from the game, and the VR runtime's distortion shader can not make use of it in the same way - a generation of spatial resolution has been lost. This also comparatively reduces the ability you have to perceive more detail than the screen resolution allows, by moving your head around, so that you pick up more impressions over time.



This said: The way texture filtering works, in order to keep workload from avalanching, past 2.0 any supersampling has diminishing returns (on top of the matter of what the physical resolution of the HMD can reproduce), since the algorithm will begin to skip samples, and you'll begin to get more aliasing again. If you want to go past that point, then you can add ED supersampling, on top of the already maxed out HMD Quality, although with such large render targets, one can not expect many frames per minute. :7


As it happens; Right this minute (On a 1080Ti, which has the amount of VRAM to contain it), I've got both hmd_q=2.0 and ss=2.0, and have modified the game's graphics configuration for 8k skybox and planet textures, and this makes the milky way look really, really nice -- less like something crudely painted on a wall, and more like something volumetric out there in space. I find I can even tolerate the resulting reduction in frame rate, as long as I'm not on a planet surface. (Not long ago this would result in the game kicking down a few mipmap levels, but it seems that no longer happens with 3.3 (...nor does the bug that used to throw us the occasional patch of ground of deviating brightness) :).)

EDIT: If you want to try that last thing, and are using a Rift, you may want to disable Asynchonous SpaceWarp, which produces unsightly artefacts and hitches at the best of times, but especially so when really pushing the boundaries.
 
Last edited:
Pretty much agree with HeavyGroovez.

I have SS on 1 and HMD on 1.75. HMD at 2 works but the frame rate hit is obvious, even on a 1080 ti (which I have).

Don't agree with Jojon. Running both SS and HMD at 2 is counter-intuitive. The GPU will be under load as it is doing the job twice purely from the pixel pushing point of view. In general terms you can think of SS as a poor man's antialising and HMD as fairly expensive sharpening, so they should not be fighting each other. Pick a winner for your rig.

If you are interested there are some videos on YouTube that compare both effects (not specifically for ED though).
 
Last edited:
thank you all for the replies and excellent explanation Good People.
I'll have a play around with it and see what works.
 
...The GPU will be under load as it is doing the job twice purely from the pixel pushing point of view.

Twice? -No, 16 times, plus 2x resampling, and ooh-ho-ho yes!: That's a ton of load, that really bogs you down. Looks gorgeous, though. :7


In general terms you can think of SS as a poor man's antialising…


Well, rich man's antialiasing. It's more that the sort of antialiasing methods we have is poor man's supersampling; Limiting (or in some cases faking (blurring instead)) sub-pixel rendering, to where it is most needed, instead of doing it full-screen. :p
 
Little bit off topic, is there a way to take video and pics of what you are seeing thru your headset. So to help diagnose problems or different settings.
 
Last edited:
Last edited:
Pretty much agree with HeavyGroovez.

I have SS on 1 and HMD on 1.75. HMD at 2 works but the frame rate hit is obvious, even on a 1080 ti (which I have).

Don't agree with Jojon. Running both SS and HMD at 2 is counter-intuitive. The GPU will be under load as it is doing the job twice purely from the pixel pushing point of view. In general terms you can think of SS as a poor man's antialising and HMD as fairly expensive sharpening, so they should not be fighting each other. Pick a winner for your rig.

If you are interested there are some videos on YouTube that compare both effects (not specifically for ED though).


I've been using the Oculus Tray Tool with Super Sampling at 1.5, with in-game SS set to .5 and HMD set to 2.0. Should I not be using the SS with OTT, or should I boost the in-game SS back to 1.0? I haven't had really any issues, except maybe an occasional hiccup her or there (1080ti FTW3), but I'm trying to think of what might provide the best image.

Granted, I'm pretty happy with what I have thus far, but it'd be nice to hear thoughts on the Oculus Tray Tool specifically! [smile]
 
The Oculus tray tool is doing the exact same job as the HMD setting - setting the pixelsPerDisplayPixel variable in the Oculus Api.

Code:
float pixelsPerDisplayPixel = GetPixelsPerDisplayFromApplicationSettings();

Sizei recommendedTexSize = ovr_GetFovTextureSize(session, ovrEye_Left,  fovLeft,
                                                   pixelsPerDisplayPixel);

In your case you are setting this value twice - once to 2.0 (in Elite) and once to 1.5 (in the tray tool).

In a nominal order of precedence (Elite sets it after the tray tool) - you are setting pixelsPerDisplayPixel to 2.0

The fact that you have already dramatically reduced your internal render scale in Elite (0.5 SS) means that the rectilinear texture presented to the Api is missing a huge amount of rasterization detail for a 1:1 mapping to the physical device resolution, let alone an intermediate frame buffer with a 2x scale multiplier. Simply translated, you are losing a lot of texture detail.

To echo my original post, set both to 1 in Elite. For a 1080Ti set your pixelsPerDisplayPixel to 1.5 in the tray tool/debug tool and disable ASW (This was the setting i used with a 1080Ti and Rift) . You can probably squeeze 1.6 or even 1.7 but you will on occasion be unable to hit the frametime and will then need to rely on ASW. The choice is yours.
 
Last edited:
The Oculus tray tool is doing the exact same job as the HMD setting - setting the pixelsPerDisplayPixel variable in the Oculus Api.

Code:
float pixelsPerDisplayPixel = GetPixelsPerDisplayFromApplicationSettings();

Sizei recommendedTexSize = ovr_GetFovTextureSize(session, ovrEye_Left,  fovLeft,
                                                   pixelsPerDisplayPixel);

In your case you are setting this value twice - once to 2.0 (in Elite) and once to 1.5 (in the tray tool).

In a nominal order of precedence (Elite sets it after the tray tool) - you are setting pixelsPerDisplayPixel to 2.0

The fact that you have already dramatically reduced your internal render scale in Elite (0.5 SS) means that the rectilinear texture presented to the Api is missing a huge amount of rasterization detail for a 1:1 mapping to the physical device resolution, let alone an intermediate frame buffer with a 2x scale multiplier. Simply translated, you are losing a lot of texture detail.

To echo my original post, set both to 1 in Elite. For a 1080Ti set your pixelsPerDisplayPixel to 1.5 in the tray tool/debug tool and disable ASW (This was the setting i used with a 1080Ti and Rift) . You can probably squeeze 1.6 or even 1.7 but you will on occasion be unable to hit the frametime and will then need to rely on ASW. The choice is yours.

Ahhh, that's where I was confused. I thought the Oculus PPD was the same as Super Sampling, hence why I took down the quality of the in-game one. Cool, so I'll tweak it a bit and set both at 1, then set the Oculus 1 at 1.5 (maybe 1.6 or 1.7). I'll also take ASW off, as I've been playing with it on AUTO the entire time.

Thanks for the insight on how these settings work. Do you think it is better to use OTT for tweaking to 1.5, the in-game HMD to 1.5, or is there really no difference, so long as I do one or the other? Just trying to gain the best understanding of this and want my game looking as good as it can while maintaining playable FPS.

Thanks!
 
Ahhh, that's where I was confused. I thought the Oculus PPD was the same as Super Sampling, hence why I took down the quality of the in-game one. Cool, so I'll tweak it a bit and set both at 1, then set the Oculus 1 at 1.5 (maybe 1.6 or 1.7). I'll also take ASW off, as I've been playing with it on AUTO the entire time.

Thanks for the insight on how these settings work. Do you think it is better to use OTT for tweaking to 1.5, the in-game HMD to 1.5, or is there really no difference, so long as I do one or the other? Just trying to gain the best understanding of this and want my game looking as good as it can while maintaining playable FPS.

Thanks!

Best to use the Oculus Tray Tool as it will enable you to set the multiplier to values (such as 1.6) in between the limited .25 step HMD settings available in Elite.
 
Sorry to necro this thread but I am just beginning to learn the various supersamplings. This thread finally helped me to begin to understand something.

I use SteamVR, am I correct in assuming that the Supersampling setting under "General" is SS in game, whereas the supersampling in the "Per application" setting is analogous to HMD in game?
 
As far as I know they both do the same thing, they are applied to the HMD. The general one is applied to all steamVR applications. I use 100% in that setting and change the "per application setting" for each game. Some are at 150%, others at 200% and so on. Like this there is no need to change the setting every time I switch games.
 
Sorry to necro this thread but I am just beginning to learn the various supersamplings. This thread finally helped me to begin to understand something.

I use SteamVR, am I correct in assuming that the Supersampling setting under "General" is SS in game, whereas the supersampling in the "Per application" setting is analogous to HMD in game?

Ok, so just to make sure, first of all: It is not an Oculus headset then? (Because if it is an Oculus one, Elite does not go through SteamVR, but speaks directly with Oculus' software.)

Then: No, the two settings you find in Elite are on top of all the the supersampling options you have set in SteamVR settings.


There are also a few other things to bear in mind:

The render resolution percentages in SteamVR factor the total pixel count for the whole frame - not for its width and height, which means that 200% is a frame that is 141% as wide and tall as "normal" for your HMD.

The settings in Elite, meanwhile, factor the width and height, so 2.0 is the equivalent of 400% in SteamVR settings: Twice the width, twice the height, four times the number of pixels.

The Per Application custom render resolution setting in SteamVR is on top of what you have under General, and Video (those two are the same, just appearing in two places), so 400% general, and 400% per-app is a frame that is four times as wide and tall, and comprise 16 times as many pixels as normal.

The resolution produced by multiplying the "base" resolution for one's HMD by the general- and per-app- supersampling, is the resolution that SteamVR recommends to the game. It is just a recommendation, and the game can do anything it wants, and SteamVR will accept anything it gets back from it.

The Elite: "HMD Quality", and Elite: "Supersampling" multipliers are applied on that recommended resolution -- there is no interconnection where SteamVR controls any of them, or vice versa. (EDIT: but SteamVR 400% * Elite HDMQ 1.0, and SteamVR 100% * Elite HDMQ 2.0 produce the same result, so either will work.)

Elite: "HMD Quality", and Elite: "Supersampling" both make the game render larger frames, but with the latter, the game downsamples them to EliteSS 1.0 by itself, before giving them over to SteamVR.
With HMDQuality, that step does not occur, which is generally preferable, except:

There is little visual gain from having a combined SteamVR general/video SS * SteamVR per-app SS * Elite HMD Quality, that is higher than 500%, because at that point additional rendered pixels will have begun to be thrown away, instead of used in the pictures that goes up on the HMD screens.

The only time you would want to use the "supersampling" in Elite settings, is when you have already reached those 500% mentioned above, and still want to keep pushing a higher resolution, assuming you have a graphics card from the future, that can handle it. :7

There is a limit to the resolution that SteamVR will recommend to a game. If one's general * per-app SS produce a width or height that exceeds that limit, the frame size will be capped at it, even though the numbers above the SS sliders display the uncapped numbers.

This limit defaults to 4096, but can be increased by editing a SteamVR settings file.

Since Elite's two options are applied after the game has received the recommendation, they are not restricted by the limitation.

EDIT: There is also a SteamVR setting: "video/Advanced Supersampling Filtering", which you may want to experiment with: On will result in less jaggies, at the cost of making the image slightly softer, and Off will go the opposite way. I prefer it Off, but your mileage may vary. :7
 
Last edited:
Thank you very much for the replies! This will be immensely helpful.

I am using the Index, not the Ocolus hence SteamVR. I figured the afore mentioned settings for the OTT would be analogous to the corresponding settings in SteamVR.

On a side note, do you have experience using Dr Kaii's ED Profiler? I have one or two questions on that but the Profiler thread seems to be dead.
 
Last edited:
Hi Godryc, I'm leaving the in game SS and HMD at x1.0 each and only turn up the settings in SteamVR. I get good image quality but without the hit of doing it in game. This, however is on my Reverb - for your Index, I have no idea if you will get the benefit I do.
 
Yes this matches my experience. I've been playing around with the various settings quite a bit over the last few days, and it seems that changing the SteamVR resolution (per application) provides more bang for my buck for both performance and visual quality. Anti-Aliasing is noticeably better and my game performance takes far less of a hit.

On a side note and in regard to ED Profiler I've noticed that changing settings in-game have more of a negative performance impact than when changing the same settings in the Profiler. Not sure what's up with that since manipulating either should write to the same file. Not sure what's going on there.
 
Wow - now that's interesting. I would've thought there'd be no difference, using the Profiler. Thanks for the tip, I'll have a play with that this eve.
 
Have you ever noticed how when you change settings in the Profiler, and then go into the graphics settings in-game, how it won't show the settings you just applied in the Profiler? I never thought much of it until I started messing with the in-game settings in addition to the Profiler. But when I set certain settings in the Profiler, and then go into the in-game settings and change it to the exact same settings as in the Profiler, there is a noticeable performance impact. There is a possibility of course that the Profiler never worked for me to begin with for some odd reason, and that is why I am only noticing a difference when messing the in-game settings.

Do you or anyone else happen to know where ED Profiler and Elite write the graphical setting to? I am wondering if in my case the Profiler is writing the settings to a different file.

Edit: Well there is only one custom.fxcfg file on my PC so that theory is out the window. No idea wth.
 
Last edited:
Back
Top Bottom