Skip to content

Conversation

@JMS55
Copy link
Contributor

@JMS55 JMS55 commented Dec 30, 2025

Currently solari's specular GI conditionally terminates in the world cache based on the roughness of a surface.

This PR changes that. Now, solari tracks the spread of the full path to the camera, and terminates in the world cache once the spread is wide enough.

On the plus side this gives

  • A good bit better performance
  • More stable / higher quality lighting sometimes

On the downside:

  • Transitions between world cache LODs tend to show up in rough reflections. Unlike ReSTIR GI, there's currently no temporal reservoirs to hide it.
  • Slightly more light leaks / less accuracy sometimes

Overall I think it's a worthwhile change.

@JMS55 JMS55 added this to the 0.18 milestone Dec 30, 2025
@JMS55 JMS55 added A-Rendering Drawing game state to the screen C-Performance A change motivated by improving speed, memory usage or compile times labels Dec 30, 2025
@JMS55 JMS55 requested a review from SparkyPotato December 30, 2025 02:00
Copy link
Contributor

@ChristopherBiscardi ChristopherBiscardi left a comment

Choose a reason for hiding this comment

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

Before: (a8f19a2)

image image image

after

image image image

@JMS55 JMS55 requested a review from SparkyPotato December 30, 2025 03:33
@JMS55 JMS55 added the S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it label Dec 30, 2025
@alice-i-cecile alice-i-cecile added this pull request to the merge queue Dec 30, 2025
@alice-i-cecile alice-i-cecile added the C-Refinement Improves output quality, without fixing a clear bug or adding new functionality. label Dec 30, 2025
Merged via the queue into bevyengine:main with commit e6b7a12 Dec 30, 2025
42 checks passed
mockersf pushed a commit that referenced this pull request Dec 30, 2025
Currently solari's specular GI conditionally terminates in the world
cache based on the roughness of a surface.

This PR changes that. Now, solari tracks the spread of the full path to
the camera, and terminates in the world cache once the spread is wide
enough.

On the plus side this gives
* A good bit better performance
* More stable / higher quality lighting sometimes

On the downside:
* Transitions between world cache LODs tend to show up in rough
reflections. Unlike ReSTIR GI, there's currently no temporal reservoirs
to hide it.
* Slightly more light leaks / less accuracy sometimes

Overall I think it's a worthwhile change.
mockersf pushed a commit that referenced this pull request Dec 30, 2025
Currently solari's specular GI conditionally terminates in the world
cache based on the roughness of a surface.

This PR changes that. Now, solari tracks the spread of the full path to
the camera, and terminates in the world cache once the spread is wide
enough.

On the plus side this gives
* A good bit better performance
* More stable / higher quality lighting sometimes

On the downside:
* Transitions between world cache LODs tend to show up in rough
reflections. Unlike ReSTIR GI, there's currently no temporal reservoirs
to hide it.
* Slightly more light leaks / less accuracy sometimes

Overall I think it's a worthwhile change.
mockersf pushed a commit that referenced this pull request Dec 30, 2025
Currently solari's specular GI conditionally terminates in the world
cache based on the roughness of a surface.

This PR changes that. Now, solari tracks the spread of the full path to
the camera, and terminates in the world cache once the spread is wide
enough.

On the plus side this gives
* A good bit better performance
* More stable / higher quality lighting sometimes

On the downside:
* Transitions between world cache LODs tend to show up in rough
reflections. Unlike ReSTIR GI, there's currently no temporal reservoirs
to hide it.
* Slightly more light leaks / less accuracy sometimes

Overall I think it's a worthwhile change.
mockersf pushed a commit that referenced this pull request Dec 30, 2025
Currently solari's specular GI conditionally terminates in the world
cache based on the roughness of a surface.

This PR changes that. Now, solari tracks the spread of the full path to
the camera, and terminates in the world cache once the spread is wide
enough.

On the plus side this gives
* A good bit better performance
* More stable / higher quality lighting sometimes

On the downside:
* Transitions between world cache LODs tend to show up in rough
reflections. Unlike ReSTIR GI, there's currently no temporal reservoirs
to hide it.
* Slightly more light leaks / less accuracy sometimes

Overall I think it's a worthwhile change.
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-Performance A change motivated by improving speed, memory usage or compile times C-Refinement Improves output quality, without fixing a clear bug or adding new functionality. S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants