Skip to content

Solari v7#24767

Open
JMS55 wants to merge 6 commits into
bevyengine:mainfrom
JMS55:solari7-unified-restir
Open

Solari v7#24767
JMS55 wants to merge 6 commits into
bevyengine:mainfrom
JMS55:solari7-unified-restir

Conversation

@JMS55

@JMS55 JMS55 commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

This is a major rewrite of Solari.

The old version did DI, diffuse GI, and specular GI / mirror DI in 3 separate passes. Only diffuse rays were resampled, and no rays were traced for cross-domain MIS weight, leading to bias.

This new version is one unified algorithm that handles diffuse and specular DI and GI all in one reservoir. Resampling takes the full BRDF into account, as well as cross-domain visibility in MIS weights.

Advantages:

  • Much more accurate
  • Much less prone to GI light-leaks
  • Improved specular GI quality
  • Improved DI quality for nearby lights thanks to BRDF sampling for DI
  • Somewhat noisier (don't think this is permanent, it has to do with how I prevent specular correlations)
  • Less memory usage

Disadvantage: A bit slower due to the extra rays traced

Showcase

Reference
image-6-fixed
This PR (with DLSS)
image-7-fixed
Main (with DLSS)
image-9-fixed
This PR
image-8-fixed
Main
image-10-fixed

@JMS55 JMS55 added this to the 0.20 milestone Jun 26, 2026
@JMS55 JMS55 added A-Rendering Drawing game state to the screen D-Complex Quite challenging from either a design or technical perspective. Ask for help! S-Needs-Review Needs reviewer attention (from anyone!) to move forward C-Refinement Improves output quality, without fixing a clear bug or adding new functionality. labels Jun 26, 2026
@github-project-automation github-project-automation Bot moved this to Needs SME Triage in Rendering Jun 26, 2026
@JMS55 JMS55 requested a review from SparkyPotato June 26, 2026 18:36
@JMS55 JMS55 requested a review from IceSentry June 28, 2026 02:56
@github-actions

Copy link
Copy Markdown
Contributor

You added a new example but didn't add metadata for it. Please update the root Cargo.toml file.

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-Refinement Improves output quality, without fixing a clear bug or adding new functionality. D-Complex Quite challenging from either a design or technical perspective. Ask for help! 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.

1 participant