Skip to content

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

Open
joaoconceicao12 wants to merge 2 commits intobevyengine:mainfrom
joaoconceicao12:fix-fogvolume-22574-main
Open

Fix #22574: fix volumetric fog back-face intersection artifacts#23588
joaoconceicao12 wants to merge 2 commits intobevyengine:mainfrom
joaoconceicao12:fix-fogvolume-22574-main

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.Fixes angle-dependent volumetric fog artifacts in the atmosphere example (shadow flipping and hard edges while rotating the camera).

…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>
@joaoconceicao12
Copy link
Copy Markdown
Author

Follow up target branch correction from PR #23406

@alice-i-cecile alice-i-cecile 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 30, 2026
@github-project-automation github-project-automation bot moved this to Needs SME Triage in Rendering Mar 30, 2026
@alice-i-cecile alice-i-cecile added X-Uncontroversial This work is generally agreed upon D-Straightforward Simple bug fixes and API improvements, docs, test and examples labels Mar 30, 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 X-Uncontroversial This work is generally agreed upon

Projects

Status: Needs SME Triage

Development

Successfully merging this pull request may close these issues.

FogVolume is glitchy at distances and certain angles on example.

2 participants