Repository navigation
vk_oidn 0.1.0
First release of vk_oidn: the Intel Open Image Denoise RT filter running on Vulkan. Your application records cmdDenoise() into its own command buffers, in the same style as DLSS. The library never submits work or waits on the host.
Highlights
- Kernels written in Slang. They use the tensor cores through
VK_KHR_cooperative_matrix, with a fallback kernel for other GPUs. - Each U-Net layer runs as a single fused kernel: convolution, bias, ReLU, pooling, upsampling and concatenation. Upsampling layers use a sub-pixel decomposition.
- Inputs and outputs can be buffers (device addresses) or storage image views.
- Supports HDR, LDR and sRGB input, with albedo and normal guides (noisy or clean), Fast, Balanced and High quality, and automatic exposure on the GPU. Large images are processed in tiles.
- 11 networks from Open Image Denoise 2.5 are embedded in the library.
Performance
GPU time on an NVIDIA RTX PRO 4500 Blackwell, HDR color with albedo and normal:
| Resolution | Quality | vk_oidn | OIDN 2.5.1 CUDA |
|---|---|---|---|
| 1920x1080 | high | 6.72 ms | 8.10 ms |
| 1920x1080 | fast | 3.65 ms | 5.55 ms |
| 3840x2160 | high | 27.83 ms | 34.65 ms |
| 3840x2160 | fast | 14.63 ms | 23.41 ms |
Validation
- In every configuration, the output matches the Open Image Denoise CPU device about as closely as OIDN's CUDA backend does. The configurations cover:
- HDR, LDR and sRGB color
- albedo and normal guides, noisy and clean
- all three quality levels
- half-precision images
- fixed input scale
- tiling
- buffers and image views
- The Khronos validation layer reports no errors.
- CI builds every push on Windows and Linux. On Linux, it also checks the results against the official Open Image Denoise release, using lavapipe (Mesa's CPU Vulkan driver).
The measurements and how they were made are in docs/validation_and_performance.md. How the library works is in docs/architecture.md.
Using it
include(FetchContent)
FetchContent_Declare(vk_oidn
GIT_REPOSITORY https://github.com/mklefrancois/vk_oidn.git
GIT_TAG v0.1.0
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(vk_oidn)
target_link_libraries(my_app PRIVATE vk_oidn::vk_oidn)A complete example is the oidn_denoiser sample of vk_mini_samples: a path-traced Cornell box with its color, albedo and normal images, a denoiser toggle and image thumbnails.
Requirements and known limitations
- Building requires CMake 3.21+, a C++17 compiler, Python 3 and the Vulkan SDK, which provides
slangc. It is tested with SDK 1.4.363.0 and Slang 2026.17. Theslangcfrom some Linux distribution packages is too old; CMake detects this and says so. - The library is optimized and measured on NVIDIA GPUs. On other GPUs, tensor cores are not used by default and the fallback kernel runs instead.
- On Linux, the denoising has been validated on lavapipe only; no Linux GPU driver has been tested yet.
- The API may still change in 0.x versions.
- The README status checklist in this tag is outdated: all its steps are done.
License
Apache License 2.0. The network weights come from RenderKit/oidn-weights (Apache 2.0, Copyright Intel Corporation); see NOTICE.