Skip to content

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

Open
joaoconceicao12 wants to merge 1 commit intobevyengine:mainfrom
joaoconceicao12:fix-fogvolume-22574-main
Open

Fix #22574: fix volumetric fog back-face intersection artifacts#23588
joaoconceicao12 wants to merge 1 commit 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).

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

@mate-h mate-h left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change breaks the fogvolume during my testing (no longer visible.)

@joaoconceicao12
Copy link
Copy Markdown
Author

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.
Since then the example has been modified and no longer shows fog. Im modifying the example to making it possible to see the fog box volume as it appeared on the issue.

…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 joaoconceicao12 force-pushed the fix-fogvolume-22574-main branch from 8486bdb to 56aead8 Compare April 5, 2026 16:53
@mate-h
Copy link
Copy Markdown
Contributor

mate-h commented Apr 5, 2026

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.

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.

3 participants