← All ideas
  • Published 31 Jan 2024

Option on OIDN nodes to only denoise pixels with alpha greater than 0

sometimes you need to render a single element for vfx with alpha background (smoke, flames, etc), that only covers a small area of the rendered image.

To avoid denoising empty pixels, it would be aweseome if the denoising nodes could have an option to only denoise pixels whose alpha value is greater than 0, or if no alpha is present (diffuse pass etc), then it could accept a mask input where pixel value > 0 gets denoised.

This would speed up denoising monumentally.

100%

Development Status: Open

Upvote 3 Downvote 0
3di
31 Jan 2024

6 Comments

slowk1d

Agree, proposed the same some time ago blender.community/c/rightclickselect/bHgbbc/

1
zuorion

since OIDN is a node why not just make setup yourself? Is node version worse?

3di Author

the node itself needs modifying to accept a mask or auto create one if a mask isn't connected. After that the C++ code needs modifying to get OIDN to only denoise those pixels. It can't be done with the existing node, because it will always denoise the full render resolution.

zuorion

OIDN is external library, if OIDN does not support that "optimisation" then its up to OIDN developers to implement that

also take in account that skipping those pixels on SIMD could be more performance demanding that doing denoising itself, just like transparency culling on ARM, or branching on GPU.

If they are not doing that then its propably not worth it.

3di Author

I'm not sure, I haven't checked the OIDN release notes recently. Hopefully it's available, then it's just a case of being enabled in the Blender code.

zuorion

anyway, is a OIDN performance still a issue since they added GPU acceleration?