Intel Open Image Denoise

This is actually something extremely interesting since Intel makes really good libraries. They already did the same with Embree which became the raytracing backbone of most production renderers over night. I would say this library has as much potential. And the greatest thing about it is that it's not limited to certain GPU vendors and therefore it works on all Macs.
Just the size of the library worries me a little bit since it is almost 40 MByte big and therefore the file size of Cheetah3D would explode. I also couldn't find any macOS system requirements yet.
 
Thanks Martin for responding!

Regarding file size, at least it is way less than the 230MB of the nVidia Optix denoiser which is less effective, slower and not suitable for Macs with AMD graphics.

In order to work really well like in the Sponza example in their gallery it needs an albedo pass in the g-buffer, I think albedo is when the scene is rendered with an ambient light only, without shading (Or change all material diffuse components into emissive and render without lights).
Also a normal pass is needed for the bump info that is not caught in the albedo.

It would get even more effective with adjusted adaptive sampling when the rendering is not stopped when clean but at the noise level the denoiser can deal with.

Sadly I don't understand how to compile stuff from GitHub and have no info about MacOS requirements either.
 
They already did the same with Embree which became the raytracing backbone of most production renderers over night. I would say this library has as much potential.
Indeed it looks like many other renderers are going to get this implemented (sparing their developers from working out their own solutions) and apparently it is also easy to do, it took the devs at LuxCore one week to make it work, and it works great, with deep albedo pass even stuff behind glass or seen through mirrors gets properly denoised (Only on Win and Linux latest builds yet).
 
The fourth image in the gallery looks incredible. Even humans could barely make out the gaps between the bricks on the left side. If that would be incorporated with Cheetah3D, I would totally forgive a 50MB download size increase (or perhaps an option to download the additional feature from within Cheetah).

I assume, if it is based on machine learning, it might contain some pre-trained data, which can get quite big.
 

Attachments

  • Screen Shot 2019-02-07 at 12.00.59 PM.png
    Screen Shot 2019-02-07 at 12.00.59 PM.png
    109.7 KB · Views: 569
When its implemented, please put or implement it as an option - for me it's to much filtering on it...
 
for me it's to much filtering on it...
That's right, and while Cheetah3D has no post editor yet it would be important to have a percentage input (or slider from 0 to 1) for mixing primary and denoised output.
In LuxCore I use about 75% (via Blender compositor).
 
This is actually something extremely interesting since Intel makes really good libraries. They already did the same with Embree which became the raytracing backbone of most production renderers over night. I would say this library has as much potential. And the greatest thing about it is that it's not limited to certain GPU vendors and therefore it works on all Macs.
Just the size of the library worries me a little bit since it is almost 40 MByte big and therefore the file size of Cheetah3D would explode. I also couldn't find any macOS system requirements yet.

its available here oidn-0.8.1.x86_64.macos.tar.gz

and is also round about 40MB in size :)
 
While integrating Intel OIDN into Falcon seemed like a no-brainer at the time Apple has now started transition to their own silicon, in two years no more Intel Macs will be sold.
OIDN denoiser needs SSE4.1 instruction set on the CPU so it won't run on Apple's M1 chip.
From what I've googled, the mobile chips from Apple have also a "neural net" engine that does image refinement (including denoising), apparently for iPhone camera RAW output.
Making a 3D-render-ready denoising module from that is probably a huge task.

Intel providing a free denoiser on GitHub for everyone was a great gift to the 3D render community, I'm not sure anyone will do something similar on the Apple silicon side.
 
That looks promising!
It works with info passes, even across animation frames and seems easy to implement.
If the quality is ok, Intel denoiser implementation could be skipped as it will become obsolete anyways and the Metal denoiser will work for Apple and Intel architectures as well (but only in a future Metal version of Cheetah3D, not the current one which is very suitable for OIDN).
 
When Rosetta apparently can emulate SSE4.1 this means Martin can implement Intel OIDN in the current version 7 already (which will be the version for every Mac that won't run Catalina) and keep it for a coming M1 adaptation, the emulated denoiser will be a bit slower there but that's no problem.
Only when Apple ditches Rosetta2 which they won't do in the next years as there are still current Intel Macs sold, OIDN needs to be replaced by the Apple denoiser or else.
 
Last edited:
I see, you want a denoiser now :)

(for me it's a mixed bag. Intel denoiser is more or less on par with optix, they say, but it kills detail (for example bump maps) and I do use it very seldom. But it's crazy fast to use a denoiser as you know from Blender)
 
I have been using the Intel Denoiser it helps for my use case, can render Falcon at 40 samples and get results close to 400 samples. It least for animated UI transitions it works great. I have a fill 400 sample render for first and last frame. Means about 1 min a frame for 4k vs 20min a frame so big time saver.

Screen-Shot-2021-01-06-at-4.56.32-PM.jpg

Before and After

In case it is any help I thought I would share the Automater Quick Action I made so I can just right click on the set of PNG frame files in Cheetah output folder and it will make a folder of de-noised versions.

Screen-Shot-2021-01-06-at-5.52.39-PM.jpg


to make it work you need to install, ImageMagick and Intel Denoiser using brew.

Bash:
brew install imagemagick
brew install open-image-denoise

Then you can just create the automator action and then right click on any PNG and select "Quick Actions > Denoise".

To create a movie from the resulting PNG files the best results I have had using Quicktime Player file menu and "Open Image Sequence..." as it gives me better color representation VS using FMMPEG

Hope it is useful :)

Here is the code to copy and paste.
Bash:
while read line
do
    if [[ ${line: -4} == ".png" ]]; then
        TMP_DIR="`dirname "${line}"`/Denoised"
        mkdir -p ${TMP_DIR}
        FILE_NAME=`basename "${line}" .png`
        /usr/local/bin/convert ${line} -endian LSB PFM:${TMP_DIR}/a_${FILE_NAME}.pfm
        /usr/local/bin/oidnDenoise --ldr ${TMP_DIR}/a_${FILE_NAME}.pfm -o ${TMP_DIR}/b_${FILE_NAME}.pfm
        rm ${TMP_DIR}/a_${FILE_NAME}.pfm
        /usr/local/bin/convert ${TMP_DIR}/b_${FILE_NAME}.pfm ${TMP_DIR}/${FILE_NAME}.png
        rm ${TMP_DIR}/b_${FILE_NAME}.pfm
    fi
done < "${1:-/dev/stdin}"
 
Back
Top