Library / SDK
RenderKit/oidn avatar
RenderKit/oidn

Intel Open Image Denoise: what albedo inputs and driver floors decide

Intel® Open Image Denoise library

2,110 stars197 forksC++Apache-2.0

At a glance

What is it?
Intel Open Image Denoise removes Monte Carlo noise from ray traced frames and cuts the samples per pixel a renderer needs, but what you gain depends on whether you can feed it albedo and normal buffers and whether your GPU drivers clear fixed version floors.
Who is it for?
Intel Open Image Denoise earns a place in a renderer that already emits albedo and normal AOVs and that can hold its users above a fixed driver floor. It is the wrong dependency for a pipeline shipping to unknown machines, where Resizable BAR and driver versions are outside your control.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 18 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why Monte Carlo noise dictates the sample budget

Ray tracing estimators are noisy by construction. Stochastic methods such as path tracing converge towards a clean image only as samples per pixel climb, and the count needed for a chosen closeness to the ground truth is exactly what makes an offline render expensive. Intel Open Image Denoise attacks that cost directly: it filters out the Monte Carlo noise inherent to stochastic ray tracing and reduces the number of necessary samples per pixel by even multiple orders of magnitude, with the size of the reduction depending on how close to ground truth you want to land.

That is a claim about sampling budgets, not about frame rates. The audience is renderer developers. Integration runs through a C/C++ API, and the filters are trained to handle input from 1 spp up to almost fully converged, so one code path can serve an interactive preview and a final frame. Intel was recognised with a Technical Achievement Award by the Academy of Motion Picture Arts and Sciences in 2025 for the contribution to the motion picture industry.

Albedo and normal buffers set the detail ceiling

The filters work on the color (beauty) buffer alone, and that is the mode with the fewest moving parts on the renderer side. When more detail matters, the library can also read auxiliary feature buffers, with albedo and normal named as the examples. Renderers expose these as arbitrary output variables (AOVs) already, so the work amounts to wiring existing outputs into the denoiser rather than writing new shading passes.

The trade-off runs one way and is worth stating plainly. A beauty-only filter cannot tell whether a bright or dark pixel is a lighting feature or a sampling artefact, so it smooths detail it has no evidence for. Auxiliary buffers supply that evidence, and the project's own wording for the gain is to preserve as much detail as possible. If your renderer emits no AOVs, you are accepting that smoothing as the price of the cheaper sampling budget.

Pre-trained weights versus the bundled training toolkit

Shipping models does not bind you to them. The library arrives with a set of pre-trained filters, and using them is not mandatory. The bundled training toolkit accepts user-provided image datasets and lets you optimize a filter for a specific renderer, sample count, content type or scene, which is the path for a studio whose look or lighting rig differs from whatever the shipped models were trained on.

The repository layout backs that up. `training/` sits at the top level next to `weights`, the model store, and the README's tree lists that single entry without a trailing slash while every other directory carries one. That inconsistency is easy to misread as a typo. Filter logic lives under `core/`, hardware back ends under `devices/`, public headers under `include/` and the interface description under `api/`. Three dependency manifests ship beside them, `third-party-programs.txt`, `third-party-programs-DPCPP.txt` and `third-party-programs-oneTBB.txt`, naming a oneAPI DPC++ path and oneTBB as separate configurations. The library itself ships under the permissive Apache 2.0 license as part of the Intel Rendering Toolkit, and no per-application or per-seat terms appear anywhere in the README.

SSE4.1 on CPUs, AMX and XMX on GPUs

The CPU floor is low and the GPU reach is wide. On the processor side you need an Intel 64 architecture CPU with at least SSE4.1, or an ARM64 (AArch64) CPU such as Apple silicon, running on a 64-bit Windows, Linux or macOS system. Past that floor the library takes whatever the chip offers: SSE4, AVX2, AVX-512, Intel Advanced Matrix Extensions (AMX) and NEON on CPUs, Intel Xe Matrix Extensions (XMX) on Intel GPUs, and vendor AI acceleration paths on NVIDIA, AMD and Apple hardware.

The Intel GPU list is the longest, spanning Xe, Xe2 and Xe3 across Arc B-Series, Arc A-Series, Arc Pro, Data Center GPU Flex and Max, Iris Xe graphics, Core Ultra integrated graphics and 11th to 14th Gen Core processor graphics, down to Xe-LP through Xe3p-XPC microarchitectures. NVIDIA covers Turing, Ampere, Ada Lovelace, Hopper and Blackwell. AMD covers RDNA 2, RDNA 3, RDNA 3.5 and RDNA 4, and Apple silicon GPUs start at M1. Run on anything from a laptop to an HPC compute node, and treat real-time use as a property of the machine in front of you, since the README ties that claim to the hardware used.

Driver floors and a BIOS switch the library cannot flip

Every GPU path is gated by a driver version, and older drivers are explicitly out of support: the library may then run with only limited capabilities, give suboptimal performance, or become unstable. For Intel GPUs the floors are driver 31.0.101.4953 or newer on Windows and dated software 20230323 or newer on Linux. NVIDIA needs Version 528.33 or newer on Windows and 525.60.13 or newer on Linux. AMD needs AMD Software: Adrenalin Edition 25.30.02.01 or newer on Windows and version 25.30.1 or newer on Linux, while Apple GPU support requires macOS Ventura or newer.

A second gate exists that no library update can open. Resizable BAR must be enabled in the BIOS for Intel dedicated GPUs when running on Linux, and is strongly recommended on Windows. A build can compile, load and report success while a user with that setting off sees degraded behaviour instead. Shipping this as a default means shipping a driver matrix and a firmware note, and treating both as part of the feature rather than as setup noise.

Cloning with Git LFS, and where the build steps stop

Sources come from the repository, and the clone needs the Git Large File Storage extension installed. The command as printed uses the recursive form so submodules arrive in the same pass:

bash
git clone --recursive https://github.com/OpenImageDenoise/oidn.git

The default `master` branch is meant to hold the latest tested bugfix build, so cloning the default branch is a safer start than chasing a tag. Beyond that, the README stops helping. Its compilation section breaks off mid-sentence after "Please note that", so no configure command, no build command and no install step can be copied from it. What the repository exposes instead is `CMakeLists.txt`, a `cmake/` directory, `apps/` for command line tools, `doc/` and `scripts/`, and the first build has to be reconstructed from those files plus the project site rather than from the page most readers arrive through. For a first real use, the integration walkthrough is simply not in that text; `include/` and `api/` are where the C/C++ entry points live, and those are what a renderer integrator reads first.

The clone URL and issue tracker use another name

The repository is listed as RenderKit/oidn, yet every address the README prints points to OpenImageDenoise/oidn, the clone URL above and the issue tracker given for bug reports both included. The citation key makes the same point from the other direction. Nothing breaks because of the mismatch and nothing needs translating, but anyone who types the account name from the project header into a clone command fails, and anyone filing an issue has to follow the printed link rather than guess a path.

Research users get a fixed BibTeX entry to cite:

bibtex
@misc{OpenImageDenoise,
  author = {Attila T. {\'A}fra},
  title  = {{Intel\textsuperscript{\textregistered} Open Image Denoise}},
  year   = {2026},
  note   = {\url{https://www.openimagedenoise.org}}
}

For missing features the README routes people to [email protected], and bug reports to the issue tracker, with pull requests accepted for fixes. `SECURITY.md`, `readme.pdf` and `.gitmodules` sit alongside `README.md` at the top level, so a downstream packager inherits vulnerability reporting and submodule handling along with the code. The last push was on 2026-10-05, and the project describes itself as under active development while stating that bugs, missing features and inconsistencies are still possible.

Four routes that trade quality against effort and hardware

The real alternative is arithmetic: keep sampling. The project frames itself in samples per pixel, and every order of magnitude removed has to be paid for somewhere, in convergence time or in detail the filter smooths away.

The second route is which inputs reach the filter. Beauty alone is one path; beauty plus albedo and normal is another, preserving more detail while asking the renderer for more AOV wiring. The third is where the weights come from, the pre-trained set that ships with the library or a model trained on your own datasets through the toolkit in `training/`.

The fourth is hardware, and it is where the trade-off bites. GPU execution carries the acceleration and with it the driver floors and the Resizable BAR requirement. A CPU-only deployment on an SSE4.1 or ARM64 machine has no such dependency, which makes it the dependable fallback for a product that cannot control the drivers on its users' machines, even though the GPU path is the one worth having once the floors are met.

Editorial conclusion

Intel Open Image Denoise earns a place in a renderer that already emits albedo and normal AOVs and that can hold its users above a fixed driver floor. It is the wrong dependency for a pipeline shipping to unknown machines, where Resizable BAR and driver versions are outside your control. Verify first that your renderer can export auxiliary buffers, that the GPU back end loads on your fleet, and how the API in `api/` and `include/` is reached, because the README compilation section stops after "Please note that" and documents no build step.

Frequently asked questions

Does Intel Open Image Denoise work without albedo and normal buffers?

Yes. The filters can denoise using only the noisy color (beauty) buffer, and auxiliary feature buffers such as albedo and normal are optional. Supplying them is the documented way to preserve as much detail as possible.

What are the system requirements for Intel Open Image Denoise?

You need an Intel 64 CPU with at least SSE4.1, or an ARM64 CPU, plus a 64-bit Windows, Linux or macOS system. Apple GPU support also requires macOS Ventura or newer.

Can I retrain Intel Open Image Denoise filters for my own renderer?

Yes. The library includes a training toolkit that takes user-provided image datasets, so a filter can be optimized for a specific renderer, sample count, content type or scene. Using the shipped pre-trained models is not mandatory.

Why does Intel Open Image Denoise run with limited capabilities on my Intel GPU?

Older graphics drivers are not supported, and the library may then have limited capabilities, suboptimal performance or instability. Intel GPUs also require Resizable BAR enabled in the BIOS on Linux, and strongly recommended on Windows.

Where do I report a bug in Intel Open Image Denoise?

Report it through the GitHub issue tracker linked in the README, or send a pull request if you already have a fix. Missing features go to the [email protected] address instead.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. RenderKit/oidn on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/renderkit-oidn.svg)](https://hysenlabs.com/projects/renderkit-oidn)

Was this useful?