TU-Clausthal-Rendering / ReSTIR-FG

ReSTIR FG: Real-Time Reservoir Resampled Photon Final Gathering
Other
43 stars 2 forks source link

[Visual bug] Caustics don't show when other surface is with low roughness #1

Open ladna373 opened 1 month ago

ladna373 commented 1 month ago

based on the name itself, the problem is that there is no caustic on another surface like this

ladna373 commented 1 month ago

low high

SirKero commented 1 month ago

That is expected behavior, as caustics cannot be displayed on surfaces where the roughness is too low, as the BRDF lobes get too thin and the BRDF evaluates to 0. Because we use a fixed surface definition, a surface is either classified as diffuse or specular, Photons are only stored and collected on diffuse surfaces. The photons use the same definition, as we used to determine the first hit point. The values can be changed in this setting: screen1

However, it should be noted, that a roughness value lower than 0.08 uses delta functions (perfect mirror), so BRDF for caustics is always 0 at that point. Falcors BSDF can also be a bit weird at times, especially with low-roughness materials that have no metallic parts. Also, this scene uses spotlights, with emissive lights the path tracer would hit the light source at the caustic spots, as now the reflection is pretty well defined.

Still, if the cutoff is set down, caustics are visible as long as the wall has a roughness of >=0.08. However, correlation artifacts will appear for resampling if the cutoff is set that low. Here is an example where the roughness of the wall is set to 0.08 with the cutoff settings from above: rough0_08 (Note that, indirect light is now pretty noisy for these surfaces)

To handle such low-roughness surfaces better, we would probably need to implement Hybrid Shift Mapping from the GRIS paper to acquire the first diffuse surface

ladna373 commented 1 month ago

@SirKero thank you very much for the answer and for your help! The result may be “noisy”, but even so, it’s very impressive! I wanted to ask how long it will take to implement HSM in RESTIR FG?

SirKero commented 1 month ago

Thanks!

We currently have no ETA for HSM as I am currently busy with other research. But it would be highly interesting how well it actually works and how much it affects performance, as HSM involves tracing more rays.

ladna373 commented 2 days ago

maybe it's too late to write something, but I wanted to ask - if the renderer is real time, then how to implement hsm? i heard its working only on "interactive" renderers

SirKero commented 2 days ago

HSM is not necessarily "interactive", but is definitely slower than tracing a random ray. In our case, we would only use temporal HSM to the first diffuse hit (similar to SuffixReSTIR). While this will be slower, as now two paths need to be traced per pixel, the increase should not be so drastic that real-time is no longer possible.

ladna373 commented 2 days ago

Thank you very much for your answer! And how will temporal differ from regular?

SirKero commented 2 days ago

You can use HSM to resample spatiotemporally (as used in ReSTIR PT). However, this is for one more costly (one or more spatial samples that need to be retraced) and is very prone to correlations. One additional temporal sample to trace to the first diffuse surface should be sufficient, as spatiotemporal ReSTIR FG would be used on the first diffuse hit.

ladna373 commented 1 day ago

Thanks again for the answer, I really appreciate it! I would also like to ask: will there be an update soon with this feature added?

SirKero commented 1 day ago

Probably not anytime soon. Adding HSM is not that simple and it is currently not that high on our priority list.

ladna373 commented 1 day ago

can I find out what is your priority for adding to the restir or will you not update the restir fg at all?

SirKero commented 1 day ago

ReSTIR FG is mostly in maintenance mode, so don't expect any huge feature updates. Big features like HSM will only be added if circumstances allow it (e.g. needed or of interest for future research) and I cannot promise if they will ever happen.