Skip to content

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

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

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
Copy Markdown

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
Copy Markdown
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
@mate-h
Copy link
Copy Markdown
Contributor

mate-h commented Mar 29, 2026

Thanks for putting this fix together! It looks good at a glance, I'll give it a test. Can you make sure the CI is passing and the PR is against the main branch? We don't merge changes to release branches - any particular reason you set this?

@joaoconceicao12
Copy link
Copy Markdown
Author

Thanks for the heads-up, and sorry about that. It's my first time contributing. I'll retarget this to main and ensure CI is green there. I’ll post an updated PR link shortly.

@joaoconceicao12
Copy link
Copy Markdown
Author

joaoconceicao12 commented Mar 30, 2026

Here is the corrected PR #23588

@github-project-automation github-project-automation bot moved this from Needs SME Triage to Done in Rendering Mar 30, 2026
@github-project-automation github-project-automation bot moved this from Done to Needs SME Triage in Rendering Mar 30, 2026
@github-project-automation github-project-automation bot moved this from Needs SME Triage to Done in Rendering Mar 30, 2026
@github-actions
Copy link
Copy Markdown
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.

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: Done

Development

Successfully merging this pull request may close these issues.

4 participants