godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.58k stars 20.31k forks source link

Volumetric fog's ambient suffers from massive ghosting and light can be seen through objects. #85472

Open viksl opened 10 months ago

viksl commented 10 months ago

Godot version

4.1.3, 4.2RC2

System information

Windows 11 - Vulkan - Nvidia RTX 4070 - intel i5 13600KF

Issue description

When using Ambient inject in Volumetric Fog's settings the lighting from the panorama sky has a lot of ghosting/bleeding and can be seen through objects - in the video I show the main light (sun) but the whole scene in motion has a lot of ghosting if you have more complex scenes (such as a forest in my case) basically everything that's light in the HDR will cause ghosting so the entire sky (it's really ugly :D but video compression just kills it so it's difficult to show in motion).

Video from MRP: https://youtu.be/SsE8wy9OGnQ Here's a video from my project of the visible ghosting from the rest of the scene not just the sun part to show it's not just an isolated part of the HDR which causes issues: https://youtu.be/WT5TFIq10pY

Steps to reproduce

Use panorama sky with volumetric fog enabled with ambient inject set to 1.0 or well any value, the higher the better to showcase it. Use this panorama for the MRP: https://polyhaven.com/a/autumn_forest_04 Test in the editor, I've not added camera since the issue is the same when you play the project.

Minimal reproduction project

TestvolumetricAmbient.zip

Calinou commented 10 months ago

Ambient Inject is constant ambient light injection based on the radiance map, so it's expected to bleed through objects. It has no knowledge of scene shadows; use GI Inject for this instead.

Also, some amount of ghosting is expected when volumetric fog temporal reprojection is enabled (how much ghosting depends on your FPS). Disable temporal reprojection, then check for any ghosting artifacts.

I suggest using a lower Ambient Inject value in your particular scene. We could clamp the HDR exposure in the volumetric fog's ambient injection, but this would make it look more flat and less realistic when using bright HDR skies. (Adding a new setting may not be feasible as the Environment struct is almost full already, and we need to keep space for other future additions.)

If you're only interested in a lens flare effect, use a lens flare shader or a good old Sprite3D + raycast combo. This will be more efficient than volumetric fog while giving you more control.

viksl commented 10 months ago

Thank you, I wasn't doing it for the lens flare, I just noticed it and it seemed too strong even at low settings and I know there's s similar report about this in fog from a different

Should I close this if this is fully in bounds?

Calinou commented 10 months ago

Should I close this if this is fully in bounds?

I wouldn't close it now, as it warrants better documentation at least.

Also, did you try enabling the HDR Clamp Exposure import option on the panorama sky texture?

viksl commented 10 months ago

Oki. Yes I did try clamping the exposure but it's the same, thank you :). (btw it happesn at about the same intensity even at 0.01 - the lowest value).