[All this related only to “Performance” mode of ray traced GI]
While Unity’s GI denoiser way better than one in Unreal Engine 4.x it’s still has a lot to wish for. In small scenes with low view distances (like for interior render) it’s possible to tweak denoiser for small radius that preserves not per pixel but relatively small details… in scenes with large view distances denoiser is barely acceptable. Here are some reference screenshots to illustrate current GI denoiser state:
1)Denoiser radius maxed out to smooth noise on objects located on medium distance from camera:
Price - noise on medium range objects becomes more noticeable; distant objects still messy, not so much difference.
3)Personally I use settings from first example (optimized for middle-range objects) + AO to recover some small details (not in color but at least in shape/silhouette):
Price - AO affects many areas where actually should not be any AO + it’s also cost some performance. Distant objects still messy, not so much difference from previous two examples…
4)Ground truth reference - path tracing (limited to single bounce GI):
Per-pixel awesomeness + better emission color handling ).
So, current GI denoiser can work only for nearby objects or only on middle distance; no way to tweak it for whole scene range. If someday somehow GI denoiser can be improved (make denoiser radius rise with scene depth? and/or screen-space GI in mixed mode can try to cast some short radius rays for GI on small details) - it will be nice!
Here is this project if needed (all models here are my own (and almost 10 years old) except human - it was made in HumanMaker so also free, all published with CC0 license).
@Lex4art First there is indeed an issue with the emissive parts in your scene, it has nothing to do with color management, but that should be easy to fix (it works fine in quality mode and now in performance)
Can’t really see much on youtube-compressed 720p video (with RTAO enabled on top) - but it seems to be completely noise free. Thanks!
Upd: after commenting out
error that prevents compiling com.unity.render-pipelines.high-definition\Runtime\RenderPipeline\HDRenderPipelineAsset.cs(114,34): error CS0115: ‘HDRenderPipelineAsset.prefixedRenderingLayerMaskNames’: no suitable method found to override and all following errors it’s possible to do live tests with this PR. Updated denoiser is so much better:
Upd2: seems that lowering camera min and max view distances helps to increase denoiser details preservation, but even at my 0.01m as minimum and 100 000 m as maximum (for volumetric clouds) its good enough trade-off. More live tests needed.
Also i cannot remember which of you asked for better performance for the Upscale (in the case or VR, or in general) @m0nsky or @Lex4art this PR will also significantly improve that
@auzaiffe Sounds good! I’m currently preparing to test this in VR. Something short I would like to add in the subject of the diffuse denoiser, I have had really good results with a second denoiser pass + jitter for RTAO (with both HF + LF buffer like RTGI) when testing this a few weeks ago, maybe this would be a good addition for the official repo?
No issues in VR so far, seems to be a great improvement in noise, details and performance.
Only feedback for room for improvement I can provide is this:
On a sidenote, is there any chance RTAO can be converted to the RaytracingDeferredLightLoop so all DispatchRays are equal (and so it can benefit from ray binning + 1 dimensional array trick)