Skip to content

Fix #22574: fix volumetric fog back-face intersection artifacts#23406

Open
joaoconceicao12 wants to merge 1 commit intobevyengine:release-0.18.0from
joaoconceicao12:clean-fix-fogvolume-22574
Open

Fix #22574: fix volumetric fog back-face intersection artifacts#23406
joaoconceicao12 wants to merge 1 commit intobevyengine:release-0.18.0from
joaoconceicao12:clean-fix-fogvolume-22574

Conversation

@joaoconceicao12
Copy link

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.

…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>
@github-actions
Copy link
Contributor

Your PR caused a change in the graphical output of an example or rendering test. This might be intentional, but it could also mean that something broke!
You can review it at https://pixel-eagle.com/project/B04F67C0-C054-4A6F-92EC-F599FEC2FD1D?filter=PR-23406

If it's expected, please add the M-Deliberate-Rendering-Change label.

If this change seems unrelated to your PR, you can consider updating your PR to target the latest main branch, either by rebasing or merging main into it.

@kfc35 kfc35 added C-Bug An unexpected or incorrect behavior A-Rendering Drawing game state to the screen S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Mar 18, 2026
@github-project-automation github-project-automation bot moved this to Needs SME Triage in Rendering Mar 18, 2026
@kfc35 kfc35 added the D-Straightforward Simple bug fixes and API improvements, docs, test and examples label Mar 18, 2026
@alice-i-cecile alice-i-cecile added this to the 0.19 milestone Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Rendering Drawing game state to the screen C-Bug An unexpected or incorrect behavior D-Straightforward Simple bug fixes and API improvements, docs, test and examples S-Needs-Review Needs reviewer attention (from anyone!) to move forward

Projects

Status: Needs SME Triage

Development

Successfully merging this pull request may close these issues.

3 participants