Skip to content

Solari MetalFX Denoising support - #26306

Open
mate-h wants to merge 3 commits into
bevyengine:mainfrom
mate-h:m/solari-metalfx
Open

mate-h wants to merge 3 commits into
bevyengine:mainfrom
mate-h:m/solari-metalfx

Conversation

@mate-h

@mate-h mate-h commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Objective

In my last PR #25123 I got bevy_solari running on Metal, but I still didn't have a denoiser. Now a couple of people have implemented it and I have consolidated them to this branch.

On Apple, the DLSS equivalent for denoising is MetalFX.

Solution

Mostly a copy of how the dlss integration works:

  1. Feature gated
  2. Separate crate for metalfx_wgpu
  3. Share bevy_solari's RR guides between DLSS and MetalFX

The integration lives in bevy_anti_alias and depends on mate-h/metalfx_wgpu.

The scale check and input crop follow what showed up in archonic/metalfx_denoiser. The dispatch-buffer size is from haydenflinner/bevy-solari-metalfx-only.

Testing

Ran the Solari example on my device (Mac M5).

cargo run --example solari --features bevy_solari,metal_fx,https,free_camera

This PR was partly produced with the assistance of AI Coding tools: Cursor IDE (Grok 4.7)

mate-h added 3 commits August 9, 2026 22:13
Bring MetalFX ray reconstruction in line with Solari's current guide buffers and primary-surface replacement.
MetalFX reads the R32Float guide, including virtual mirror depth, so the camera depth attachment no longer takes MetalFX usages. The world-cache dispatch buffer is 16 bytes so Metal can bind the vec3<u32>.
@mate-h
mate-h requested review from JMS55, kfc35 and stuartparmenter and removed request for JMS55 and stuartparmenter October 25, 2026 02:10
@stuartparmenter stuartparmenter added C-Feature A new feature, making something new possible A-Rendering Drawing game state to the screen O-MacOS Specific to the MacOS (Apple) desktop operating system S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Oct 25, 2026
@github-project-automation github-project-automation Bot moved this to Needs SME Triage in Rendering Oct 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

You added a new feature but didn't update the readme. Please run cargo run -p build-templated-pages -- update features to update it, and commit the file change.

@mate-h

mate-h commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

CC @haydenflinner and @archonic feel free to leave feedback on this PR as well!

@mate-h mate-h added O-Metal Specific to the Metal render API and removed O-MacOS Specific to the MacOS (Apple) desktop operating system labels Oct 25, 2026
@haydenflinner

Copy link
Copy Markdown

CC @haydenflinner and @archonic feel free to leave feedback on this PR as well!

Looks great! I had my agent review it too and it only called out 'specular_motion_vectors' being calculated but unused, but that doesn't seem worth the effort to fix just yet!

@alice-i-cecile alice-i-cecile added the M-Release-Note Work that should be called out in the blog due to impact label Oct 25, 2026

This branch has not been deployed

No deployments
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-Feature A new feature, making something new possible M-Release-Note Work that should be called out in the blog due to impact O-Metal Specific to the Metal render API 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.

4 participants