![]() |
VOOZH | about |
Evermotion 15th Anniversary Collection scene rendered with Chaos Corona and denoised with Intel® Open Image Denoise using prefiltered albedo and normal buffers. Hover over the image (or tap on it) to move the slider between the original and denoised versions.
Intel Open Image Denoise is an open source library of high-performance, high-quality denoising filters for images rendered with ray tracing. Intel Open Image Denoise is part of the Intel® Rendering Toolkit and is released under the permissive Apache 2.0 license. It has been recognized with a Technical Achievement Award by the Academy of Motion Picture Arts and Sciences in 2025 for its contribution to the motion picture industry.
The purpose of Intel Open Image Denoise is to provide an open, high-quality, efficient, and easy-to-use denoising library that allows one to significantly reduce rendering times in ray tracing based rendering applications. It filters out the Monte Carlo noise inherent to stochastic ray tracing methods like path tracing, reducing the amount of necessary samples per pixel by even multiple orders of magnitude (depending on the desired closeness to the ground truth). A simple but flexible C/C++ API ensures that the library can be easily integrated into most existing or new rendering solutions.
At the heart of the Intel Open Image Denoise library is a collection of efficient deep learning based denoising filters, which were trained to handle a wide range of samples per pixel (spp), from 1 spp to almost fully converged. Thus it is suitable for both preview and final-frame rendering. The filters can denoise images either using only the noisy color (beauty) buffer, or, to preserve as much detail as possible, can optionally utilize auxiliary feature buffers as well (e.g. albedo, normal). Such buffers are supported by most renderers as arbitrary output variables (AOVs) or can be usually implemented with little effort.
Although the library ships with a set of pre-trained filter models, it is not mandatory to use these. To optimize a filter for a specific renderer, sample count, content type, scene, etc., it is possible to train the model using the included training toolkit and user-provided image datasets.
Intel Open Image Denoise supports a wide variety of CPUs and GPUs from different vendors:
Intel® 64 architecture compatible CPUs (with at least SSE4.1)
ARM64 (AArch64) architecture CPUs (e.g. Apple silicon CPUs)
Intel Xe, Xe2, and Xe3 architecture dedicated and integrated GPUs, including Intel® Arc™ B-Series Graphics, Intel® Arc™ A-Series Graphics, Intel® Arc™ Pro Series Graphics, Intel® Data Center GPU Flex Series, Intel® Data Center GPU Max Series, Intel® Iris® Xe Graphics, Intel® Core™ Ultra Processors with Intel® Arc™ Graphics, 11th-14th Gen Intel® Core™ processor graphics, and related Intel Pentium® and Celeron® processors (Xe-LP, Xe-LPG, Xe-LPG+, Xe-HPG, Xe-HPC, Xe2-LPG, Xe2-HPG, Xe3-LPG, and Xe3p-XPC microarchitectures)
NVIDIA GPUs with Turing, Ampere, Ada Lovelace, Hopper, and Blackwell architectures
AMD GPUs with RDNA 2, RDNA 3, RDNA 3.5, and RDNA 4 architectures
Apple silicon GPUs (M1 and newer)
It runs on most machines ranging from laptops to workstations and compute nodes in HPC systems. It is efficient enough to be suitable not only for offline rendering, but, depending on the hardware used, also for interactive or even real-time ray tracing.
Intel Open Image Denoise exploits modern instruction sets like SSE4, AVX2, AVX-512, Intel® Advanced Matrix Extensions (Intel® AMX), and NEON on CPUs, Intel® Xe Matrix Extensions (Intel® XMX) on Intel GPUs, and various other AI acceleration capabilities on NVIDIA, AMD, and Apple GPUs.
You need an Intel® 64 (with SSE4.1) or ARM64 architecture compatible CPU to run Intel Open Image Denoise, and you need a 64-bit Windows, Linux, or macOS operating system as well.
For Intel GPU support, please also install the latest Intel graphics drivers:
Windows: Intel® Graphics Driver 31.0.101.4953 or newer
Linux: Intel® software for General Purpose GPU capabilities release 20230323 or newer
Using older driver versions is not supported and Intel Open Image Denoise might run with only limited capabilities, have suboptimal performance or might be unstable. Also, Resizable BAR must be enabled in the BIOS for Intel dedicated GPUs if running on Linux, and strongly recommended if running on Windows.
For NVIDIA GPU support, please also install the latest NVIDIA graphics drivers:
Windows: Version 528.33 or newer
Linux: Version 525.60.13 or newer
For AMD GPU support, please also install the latest AMD graphics drivers:
Windows: AMD Software: Adrenalin Edition 25.30.02.01 or newer
Linux: Radeon Software for Linux version 25.30.1 or newer
For Apple GPU support, macOS Ventura or newer is required.
Intel Open Image Denoise is under active development, and though we do our best to guarantee stable release versions a certain number of bugs, as-yet-missing features, inconsistencies, or any other issues are still possible. Should you find any such issues please report them immediately via the Intel Open Image Denoise GitHub Issue Tracker (or, if you should happen to have a fix for it, you can also send us a pull request); for missing features please contact us via email at openimagedenoise@googlegroups.com.
Join our mailing list to receive release announcements and major news regarding Intel Open Image Denoise.
If you use Intel Open Image Denoise in a research publication, please cite the project using the following BibTeX entry:
@misc{OpenImageDenoise,
author = {Attila T. {\'A}fra},
title = {{Intel\textsuperscript{\textregistered} Open Image Denoise}},
year = {2026},
note = {\url{https://www.openimagedenoise.org}}
}OIDN_EXTERNAL_MEMORY_TYPE_FLAG_DEDICATED flag which must be combined with the handle type flag when importing external memory with dedicated allocationoidnDenoise example application)OIDN_DEPENDENTLOADFLAG CMake option for setting the DEPENDENTLOADFLAG linker flag on WindowsOIDN_LIBRARY_VERSIONED CMake option for toggling versioning in the Open Image Denoise library filesoidnNewSharedBuffer*) that overlap in memoryv2.3.0systemMemorySupported device parameter)RT filter in high quality mode for HDR denoising with prefiltering, i.e., the following combinations of input features and parameters: - HDR color + albedo + normal + cleanAux - albedo - normal In these cases a much more complex filter is used, which results in lower performance than before (about 2x). To revert to the previous performance behavior, please switch to the balanced quality mode.OIDN_QUALITY_FAST) for even higher performance (about 1.5-2x) interactive/real-time previews and lower default memory usage at the cost of somewhat lower image quality. Currently this is implemented for the RT filter except prefiltering (albedo, normal). In other cases denoising implicitly falls back to balanced mode.Async functions asynchronously on CPU devices as welloidnIsCPUDeviceSupported, oidnIsSYCLDeviceSupported, oidnIsCUDADeviceSupported, oidnIsHIPDeviceSupported, and oidnIsMetalDeviceSupported API functions for checking whether a physical device of a particular type is supportedOIDN_LIBRARY_NAME CMake option for setting the base name of the Open Image Denoise library filesoidnNewDevice when the default device of the specified type (e.g. CUDA) is not supported but there are other supported non-default devices of that type in the systemoidnNewCUDADevice and oidnNewHIPDevice no longer accept negative device IDs. If the goal is to use the current device, its actual ID needs to be passed.--compile option--quality option (high, balanced, fast) for selecting the size of the model to train, changed the default from balanced to high--model option (unet_small, unet_large, unet_xl)--aux_results to preprocess.py and train.pyz)OIDN_DEVICE_CUDA_API CMake option for manually selecting between the driver and runtime APIsOIDN_FORMAT_FLOAT3 for color but OIDN_FORMAT_HALF3 for albedo)OIDN_STATIC_LIB CMake option which enables building as a static (CPU support only) or a hybrid static/shared (GPU support as well) libraryrelease() method to C++ API objects (DeviceRef, BufferRef, FilterRef)D3D12_RESOURCE, D3D11_RESOURCE, D3D11_RESOURCE_KMT, D3D11_TEXTURE and D3D11_TEXTURE_KMT external memory types on CUDA and HIP devicesoidnMapBuffer and oidnUnmapBuffer functionsoidnExecuteFilterAsync, oidnSyncDevice functions)oidnNewDeviceByID)oidnNewSYCLDevice, oidnExecuteSYCLFilterAsync)type device parameter for querying the device typesystemMemorySupported and managedMemorySupported device parameters for querying memory allocations supported by the deviceexternalMemoryTypes device parameter for querying the supported external memory handle typesquality filter parameter for setting the filtering quality mode (high or balanced quality)oidn(Get|Set)(Device|Filter)(Bool|Int|Float) functions and deprecated oidn(Get|Set)(Device|Filter)(1b|1i|1f) functionsoidnUnsetFilter(Image|Data) functions and deprecated oidnRemoveFilter(Image|Data) functionsalignment and overlap filter parameters to tileAlignment and tileOverlap but the old names remain supportedOIDN_STATIC_LIB and OIDN_STATIC_RUNTIME CMake options due to technical limitationsDNNL_ENABLE_JIT_PROFILING and DNNL_ENABLE_ITT_TASKS)oidnGetBufferData and oidnGetBufferSize functionscleanAux filter parameter for further improving quality when the auxiliary feature (albedo, normal) images are noise-freecleanAux parameter for improving quality when the auxiliary images are noisy (recommended for final frame denoising)oidnUpdateFilterData function which must be called when the contents of an opaque data parameter bound to a filter (e.g. weights) has been changed after committing the filteroidnRemoveFilterImage and oidnRemoveFilterData functions for removing previously set image and opaque data parameters of filtersoidnCommitFilter to zero in some cases (e.g. when changing already set image buffers/pointers or the inputScale parameter)OIDN_FILTER_RT and OIDN_FILTER_RTLIGHTMAP CMake options for excluding the trained filter weights from the build to significantly decrease its sizeoidnBenchmark option for setting custom resolutionsRTLightmap filterinputScale filter parameter which generalizes the existing (and thus now deprecated) hdrScale parameter for non-HDR imagesOIDN_NEURAL_RUNTIME CMake option for setting the neural network runtime libraryOIDN_STATIC_LIB option)oidnDenoise, oidnTest)oidnBenchmark)OIDN_STATIC_RUNTIME CMake option (for Windows only)RTLightmap filter optimized for lightmapshdrScale filter parameter for manually specifying the mapping of HDR color values to luminance levelsmaxMemoryMB filter parameter for limiting the maximum memory consumption regardless of the image resolution, potentially at the cost of lower denoising speed. This is internally implemented by denoising the image in tilesalignment and overlap filter parameters that can be queried for manual tiled denoisingverbose device parameter for setting the verbosity of the console output, and disabled all console output by defaultOIDN_STATIC_LIB CMake option for building as a static library (requires CMake 3.13.0 or later)