Fix #22574: fix volumetric fog back-face intersection artifacts#23588
Fix #22574: fix volumetric fog back-face intersection artifacts#23588joaoconceicao12 wants to merge 1 commit intobevyengine:mainfrom
Conversation
|
Follow up target branch correction from PR #23406 |
mate-h
left a comment
There was a problem hiding this comment.
This change breaks the fogvolume during my testing (no longer visible.)
|
The issue was happening on the release-0.18.0 branch(that is why my target branch was this branch in the other PR) and so was my solution for this based on it. In the older branch the atmosphere display a fog box volume that made the bug appear clearly. |
…acts Fixes angle-dependent volumetric fog artifacts in the atmosphere example (shadow flipping and hard edges while rotating the camera). Root cause was inconsistent back-face intersection setup: far-plane construction in CPU code and ray-plane intersection in WGSL shader code. This patch corrects both calculations and adds a regression test for far-plane positioning in volumetric fog (get_far_planes). Signed-off-by: João Conceição <joao.conceicao@tecnico.ulisboa.pt>
8486bdb to
56aead8
Compare
|
Thanks for the due dilligence - we never modified the example to remove the fog. Here are the lines in the example that add it to the scene: https://github.com/joaoconceicao12/bevy/blob/fix-fogvolume-22574-main/examples/3d/atmosphere.rs#L231-L235 So there must be something with this change set in this pull requests that makes it not work anymore. The render pass executes (checked this with xcode debugger) but the location of the rendered fogvolume is wrong. |
Objective
Fixes #22574.
This PR fixes angle-dependent volumetric fog artifacts in the atmosphere example ([--features free_camera], where rotating the camera caused shadow flipping and hard edges.
Solution
The root cause was inconsistent back-face intersection setup between CPU and shader paths:
CPU side: far-plane construction for fog volume traversal.
WGSL side: ray-plane intersection math.
This PR:
Corrects far-plane setup in the volumetric fog CPU path.
Corrects the WGSL ray-plane intersection calculation.
Adds a regression unit test for [get_far_planes]) to prevent this from regressing.
Testing
cargo test -p bevy_pbr --lib passes (including the new regression test).
Manual visual test:
cargo run -r --example atmosphere --features free_camera
Rotating the camera no longer shows the previous flipping/hard-edge artifacts. (see video)
video1.mov
Platform tested:
macOS (Metal backend).
No additional untested platform-specific behavior is currently known.Fixes angle-dependent volumetric fog artifacts in the atmosphere example (shadow flipping and hard edges while rotating the camera).