HDRP Confusion

Sorry for the pretty blunt thread title and I might just be misunderstanding something quite simple, but even after watching this, a few other videos and reading this, I am still quite confused on how HDRP settings fully work. I also haven’t used Unity very often in quite some time, so maybe that is affecting me haha.

Anyway, lets start with the most confusing one for me. Lets say I want to use Contact Shadows, well first you need to enable “Use Contact Shadows” in your HDRP settings. You check that and then you are presented with “Low”, “Medium”, “High” which is kind of confusing because the scalability in hdrp specifies creating a specific HDRP asset per-platform with the settings for that platform.

As such, I’m assuming that Low, Medium, High are referring to the “Supported Quality Levels” of Contact Shadows themselves which could then be changed in the volume settings. If that is the case, what if you don’t have Medium selected, but your Volume specifies Contact Shadows as Medium quality? Will it default to one of the available ones?

This seems to be a common thing for a bunch of the post processing effects, where they all have Low, Medium, High quality settings individually which can be set by a volume. As such, I assume if you want to keep a “consistent” look its best to select one of those settings as your default one on your global volume and only modify local volumes if you come into performance issues?

I’m also assuming, specifically for PC users, if a feature is enabled then the quality settings can be changed at runtime and everything just works? However, if a feature is disabled entirely then it cannot be enabled? If that is the case, can features be turned off at runtime? I’d assume setting their intensity to zero would have the same effect, but I can’t be too sure.

I quite understand your confusion, it does take a while to wrap your head around the concept of HDRP assets and frame settings and volumes.

I’ll try to explain a bit:
First, HDRP asset (or any SRP asset) define what features are available to you on a quality level. These quality levels are available here (Project Settings/Quality):
7565278--936394--upload_2021-10-12_10-31-55.png
So, when this quality level is selected then only those features would be available which are enabled on this asset. You could have a URP asset in one of these quality levels as well.

Next, in HDRP at least we have quality setting in each asset.
Say, for example we take example of Contact shadows:
7565278--936397--upload_2021-10-12_10-37-24.png
Now we could select one of these presets in our volume settings instead of manually defining the settings,

7565278--936406--upload_2021-10-12_10-47-6.png
We have multiple quality level in a single HDRP asset because we may have different lights using (say) different Shadow resolution in the same scene. For ex, main sunlight could be using “Ultra” shadow resolution, but the small decorative lights could be using “low” shadow resolution (with shadow caching preferably).

What this allows us to do is have say a HDRP asset named “High Fidelity” which we could use for cinematic shots where we use higher values for all the quality (low med, high and ultra) and all the volumes/components will automatically use this value when in cinematic mode. But when you switch back to gameplay you could just switch back to “Medium/Performant Quality” HDRP asset (using Project Settings/Quality) to create smoother gameplay.

This allows for scalability and control project wide using preset values (low/mid/high for example) instead of custom values for each component which you may need to change manually whenever you want to change a quality level on project wide basis.

Hope this clears up some doubt. :stuck_out_tongue:

2 Likes

I appreciate you, that pretty much confirms what I thought to be the case. I just want to double check on one specific area.

7565611--936463--Screenshot 2021-10-12 033107.png
Does clicking “Low”, “Medium”, “High” grant this individual HDRP asset access to those three individual settings? If so, what if the current HDRP asset doesn’t have “Medium” selected, but the volume is listed as Medium quality?

Additionally, if all those checkboxes do is grant you the ability to use those setting options then why are they even there? Doesn’t make sense when there isn’t checkbox options like that for every other setting haha.

Yep, say you don’t want a decorative light to have contact shadow in gameplay and you set its level to low.
Then you could unselect this option in lower/gameplay HDRP quality asset and enable it for medium or low settings in Cinematic HDRP asset.

No, isn’t needed for things like post processing if you think about it. For things that need they have a checkbox next to them, if you can give some examples to show your opinion then maybe I could help with that.:slight_smile:

1 Like

Similar to the regular settings, it’d make more sense to just have the three quality levels always available rather then having to toggle them on and off in the HDRP asset individually.

Then, just like with every other setting, I could just change the values accordingly.
Its a minor thing, but I kind of feel like it is an oversight on the side of the developers unless there is still something I’m missing.

For example, just like how enabling SSAO works. You enable it, you’re given 3 quality settings to tinker with. No need to make individual check marks for “Low”, “Medium”, “HIgh.”

I attempted to add on this little statement before you replied, but it seems I was a little slow:

Sorry, had to add another addon here. How about disabling features? For example, I might set my global volume up to have Ambient Occlusion enabled, but PC users might want to “manually” tune performance and turn that off. You wouldn’t be able to do this by just “swapping” out hdrp assets unless you made a permutation for every variation of setting you want PC users to be able to tune and that would not be okay.

Sorry for the confusion :p, the settings are always available to be selected on the affected component (lights in this case) the toggle just enables or disables the effect as enabling them even if you don’t use it have an inherent performance cost(it would indeed make no sense to remove the option itself from the components)

EDIT: Having toggle for shadows make sense if you think about it

For enabling or disabling certain effects we could just enable or disable them using “Custom Frame Settings” toggle on the camera (I don’t think this is the best way to approach this though)

As for tuning the settings like we have for PC games I honestly have no idea :sweat_smile:, would love to hear someone’s opinion on this myself.:slight_smile:

I appreciate your info thus far, it seems you can manually adjust certain settings in the current HDRP asset through

HDRenderPipelineAsset HDRP = GraphicsSettings.renderPipelineAsset as HDRenderPipelineAsset;
HDRP.currentPlatformRenderPipelineSettings

As for removing effects, it’d seem that using frame settings is the only available route from what I see. However, it appears quite cumbersome and not even sure how you could guarantee project wide management of it.

Almost all the HDRP classes that manage the defaults are inaccessible in code. Thus, you’d have to do a custom script per-camera that just listens to events that you manage in custom settings class. Guess you could save it using playerprefs for ease of use though.

Still seems quite error prone.