the denoising in Cycles works pretty great but the way it’s implemented really limits its usability. In other renderers, denoising has one very powerful feature - it is not destructive. If you choose to denoise your render, you have either an option to blend the denoiser result with the undenoised one, or you have an option to store denoised result in a separate VFB buffer, and do the blending yourself in post.
Having an ability to blend denoised result with undenoised one has several benefits:
Denoiser produces ultra clean surfaces, which often look to uncanny and unrealistic. Cameras usually capture images with at least a little bit of noise, so super clean images just look uncanny. Blending fixes this
Due to the threshold-based nature of denoiser, at certain places, it often generates small pools of noise in the areas under the threshold, which neighbour with completely denoised, super clean areas. These transitions are very unnatural. Blending fixes this as well.
Denoiser occasionally removes too much detail on some fine geometry or textures, blending just a little bit of original render back onto the denoised result usually reintroduces enough of high frequency detail to make the area believable.
Blending in the original noisy render often helps to cover up slight splotchiness/smudges caused by denoising.
Denoising is no longer a destructive decision
Here are some examples:
Render without denoising (a bit noisy but fast):
Denoised render (too artificially clean, some detail loss on the structure of floor texture):
Blended result - 70% denoise influence (a right balance):
The only way to achieve the result right now, unfortunately, is to render twice, once with the denoiser and once without, which effectively negates most of the speed benefit introduced by the denoiser.
From what I understand, this would not be that hard to implement and would have tremendous impact on the usability of the denoiser. Ideal scenario would be ability to have a 0-1 blend value in the denoiset rollout, where 0 is not applied and 1 is fully applied, but if that’s too much to ask, then at least a simple ability to store undenoised result as another render pass, so I can do the blend in compositor myself. It would be a worse workflow, but better than nothing.
Thanks in advance.