HDRP volumetric fog still runs - including perf cost - even when "fog" is disabled

If you disable “fog”, but volumetric fog is enabled, it will actually still run in the background and take a nice chunk of your GPU performance.

Of course, there will be no fog or volumetric fog on screen, just in the background running.
This could be Is this expected? it doesn’t make sense to me since without fog, there is no volumetric fog. It’s just consuming performance for no reason.
Also it’s a bit sneaky to notice without using the profiler or knowing about it.

In this picture, volumetric fog, while not being on-screen or visible, will cost you 13ms on the GPU (settings are set pretty high thus the cost).

You’d need to disable volumetric fog for it to stop running.
Volumetric fog looks like a separate addition so it might make sense from an HDRP perspective, but I feel volumetric fog should rely on fog, if that’s disabled, it doesn’t run

90% chance that you put another volume with an override

No, there’s only one volume and global setting post processing is disabled.
Even if there was an override, this one has higher priority so it would still not run.
also this one still has fog (the post process effect) enabled, since it’s ticked in the post processing but disabled from the inside, so it actually still has it enabled in a way

volumetric fog probably shouldn’t run if the main fog it relies on is disabled, unless there’s a use of it that I don’t know about

I think it works as intended. That’s why dynamic rendering pass culling was introduced. Do you have it enabled?

Yeah, render pass culling was enabled, but volumetric fog still runs and shows up on the profiler

When you have overrides with two enabled checks, this can be definitely the case.

Fog? Yes/no enabled? Yes/no
Sub functions with double enabled can still function but not be visible, this is likely because they’re also their own independent feature.

Is it intentional? probably not.

If I recall for mutli scene use the second enable check is important for calling in code

Also remember that your project “master” Render pipeline asset, would need any features enabled to have any cost effect, but in some almost all cases, if it’s enabled and not used, that cost is still present. This is similar to that effect.

There is also another situation where if a global asset setting is disabled but the loaded profile is enabled, you’ll still see the controls for it in the local inspector, they just won’t function.
Cost is likely still somewhere too.

if the global asset setting is enabled and the profile override disabled, you get the feature not enabled message in the local inspector.

I know unity Devs have mentioned a lot that they want to stream line the project settings Asset/profiles because things like these can easily be missed and rack up performance cost or UX without realising.

Just a case of keep providing feedback for it where possible.