At the moment, we do not have an ironclad solution for guaranteeing noise-free results. This has been on a lot of our minds as the tech has been used since the 4.22 release for our FNBR cinematics; they require this also. There have been several improvements in this regard coming to 4.24 and there are more in active development.
Diagnosing and suppressing noise will take some experimentation. There are general “tips and tricks,” but every shot is different. My usual workflow when I drop in to help FNBR is to start soloing effects to understand where the noise is coming from. You can use the Post Process Volume to tick on and off effects to see how the noise manifests. Shadow noise is not controlled by this panel, but is controlled by the individual light source.
Each pass is optimized a bit differently, but in general, you can expect that increasing samples-per-pixel (SPP) will improve the noise quality for a particular effect. This is something that definitely drives the frame-time down, but it will ultimately be something that triggers the Windows “Timeout Detection and Recovery” system and cause a driver crash. There are a few tutorials out there to guide you on increasing TDR time, and I would suggest looking into one of them if you are burning out high-quality (slow) renders: Timeout Detection & Recovery (TDR)
As far as some of the nuances to the individual passes:
- Reflections: this pass only casts reflection on pixels which have a roughness value below the threshold in the Post Process Volume. Rougher surfaces need more rays and may cause more noise. Increase SPP or lower the threshold to operate on smoother surfaces.
- Global Illumination: The main cause of noise here is a light whose irradiance estimate is very far from the actual irradiance value at a given shading point. Usually this is because of occlusion, as it is not currently considered for estimation. A way to validate this is to navigate to the light panel and uncheck “Affects Global Illumination.” This is also the suggested “fix” to these kinds of problems. In these instances, it is best to come up with an alternative proxy light to contribute to the missing GI (if desired). Baked lighting is always worth bringing up here if your workflow supports it and you aren’t relying on dynamic GI for a particular shot.
In 4.24, both Reflections and Global Illumination passes respect a rendering tile size (controlled via CVar) which chop up the pass into multiple iterations. This allows you to bump up the samples-per-pixel to very high values (16-64 SPP) and not trigger TDR. Your machine will be mostly unresponsive if you do this, so I would only do this to get a final burn out. This is currently the workflow we use to render finals frames (an artist is usually working at a much lower, and interactive, frame rate).
A last thing to say is that the denoising tech relies heavily on temporal anti-aliasing to do its job. This is pretty much where the 3-4 frame run-up time comes from. For cinematics, it is very useful to have run-up frames in Sequencer before starting a shot, so that the TAA buffers are primed with data. This will help beginning of shots, but ghosting is still possible due to the nature of how TAA operates. We have been discussing these limitations internally and are looking at ways to address this particular problem.