Blender's rendering toolset has been seeing exponential growth as of late, and this latest addition is bound to make the renderheads among the Blenderheads very happy: Temporal denoising via the Optix denoiser.
"Traditional" spatial denoising techniques are great for single frame renders, with the more recent AI denoisers such as Nvidia's Optix Denoiser and Intel's Open Image Denoise doing wonders, even at very low sample rates. These great results however break down in animation, with the apparition of flickering denoising artifacts from one frame to the next, a symptom of the temporal instability of the algorithms: each frame is denoised without taking into consideration previous and next frames, causing the aforementioned flickering.
This is where temporal denoising comes in: typically making use of motion vector passes to relate pixels in different frames to one another, temporal denoising results in smoother denoising results over animations. The now-defunct NLM denoiser had temporal denoising functionality, which as of this commit has been replaced by the Optix denoiser's temporal implementation.
For now, the temporal denoising operator is not exposed in the UI and is only accessible via a python command. Here is how to use it according to Patrick Mours, the committer of this patch:
- Change Output File Format to OpenEXR MultiLayer
- Check the "Denoising Data" pass in the render layer settings
- Render Animation
- Afterwards, run bpy.ops.cycles.denoise_animation() in the Python console
- Done (the EXR images now contain the denoised image sequence)
Check out this feature's feedback thread on Devtalk for more information and tests courtesy of Cycles expert Alaska on the link below: