Gitpedia
NVIDIA-RTX

NVIDIA-RTX/NRD

NVIDIA Real-time Denoising (NRD) library

30 Releases
Latest: 1mo ago
v4.17.3Latest
dzhdanNVdzhdanNV·1mo ago·April 30, 2026
GitHub

📋 Changes

  • REBLUR: fixed a critical bug leading to visual artefacts on some AMD configs, including SteamDeck (it was initially reported as Linux-exclusive issue). Special thanks to @Ganaboy2k and @Aeternitae for triaging! Consoles were not affected (problematic code was PC only)
  • RELAX/SH: improved performance in SH mode `5.05 => 4.80 ms` on RTX 4080 @ 1440p
  • INTEGRATION: added support for resource residency priority, which is a game changer in VIDMEM-heavy scenarios
  • improved robustness (sensitivity to "bad" data)
  • IQ improvements and bug fixes
  • NRD/SH: removed leftover `NRD_SG_ExtractRoughnessAA`, which could cause material demodulation issues
  • NRD/SH: fixed numerical imprecision issues for `~0` roughness in `NRD_SG_ResolveSpecular`
  • RELAX/SH: removed dead code responsible for never used and problematic `roughnessAA` and replaced `float4` with `float3` for SH data
  • + 8 more
v4.17.2
dzhdanNVdzhdanNV·2mo ago·March 20, 2026
GitHub

📋 Changes

  • REBLUR: improved performance
  • REBLUR: less noise/pixelation on specular lobe boundaries
  • REBLUR: generic improvements and simplifications
  • REBLUR: hit distances are spatially unprocessed to minimize bias and better preserve shadows (occlusion-only denoisers are not affected)
  • REBLUR: more good stuff for (or tested in) Dark Souls 2: PT (#100)
  • removed `IN_BASECOLOR_METALNESS` with all dependencies (was largely misunderstood, "specular MV export" feature will be added in the future)
  • removed `ReblurHitDistanceParameters::D`, which was a leftover from the antient times, `smc` is used instead under the hood (it's a remapped roughness)
  • NRD: `NRD_REJITTER_AMPLITUDE` default value reduced from `PI` to `2` (was "too much")
  • + 14 more
v4.17.1
dzhdanNVdzhdanNV·3mo ago·February 25, 2026
GitHub

📋 Changes

  • REBLUR: many tiny quality improvements and bug fixes requested or inspired by and tested in _Dark Souls 2: PT_
  • improved robustness
  • updated docs
  • NRD: folder `Shader/Include` moved into `Shaders` for more convenient navigation
  • NRD: disabled `NRD_BORDER`, `GROUP_X` and `GROUP_Y` macros in C++ code (refactoring)
  • NRD: used `NRD_BORDER` explicitly (refactoring)
  • NRD: improved grouping of functions in `NRD.hlsli` (no functional changes)
  • REBLUR: fixed accessing potentially garbage data in SMEM calculations (properly ignored INF pixels). It was a time-bomb bug, which could fire up if NRD got a non-cleared resource used else-where (for example, a render graph texture reuse)
  • + 9 more
v4.17.0
dzhdanNVdzhdanNV·3mo ago·February 5, 2026
GitHub

📋 Changes

  • improved history confidence support essential for responsive dynamic lighting (see [History confidence](https://github.com/NVIDIA-RTX/NRD?tab=readme-ov-file#history-confidence) section to README and #100)
  • significantly improved "SG resolve and re-jittering" essential for maintaining high-quality results when paired with upscalers (DLSS/FSR/XESS/TAAU)
  • overhauled curvature calculations: concave mirrors are functional again, convex mirrors look better, wavy surfaces now behave more predictably
  • REBLUR: anti-firefly logic is now almost free and enabled by default
  • `HitDistanceParameters` renamed to `ReblurHitDistanceParameters` (no changes in meaning)
  • `ReblurResponsiveAccumulationSettings` renamed to `ReblurReblurResponsiveAccumulationSettings` (no changes in meaning)
  • removed `float3 Rf0` from `NRD_SG_ReJitter`
  • added `float3 V, float roughness` to `NRD_SG_ResolveDiffuse`
  • + 19 more
v4.16.1
dzhdanNVdzhdanNV·6mo ago·November 10, 2025
GitHub

📋 Changes

  • NRD: improved `10_10_10_2` precision utilization (implemented #97)
  • bug fixes and improvements
  • NRD: improved `10_10_10_2` precision utilization
  • NRD: hair (strand) denoising tweaks
  • REBLUR: internal hair (strand) denoising tweaks
  • REBLUR: reviewed `NRD_NORMAL_ENCODING_ERROR` usage
  • REBLUR: fixed wrong delivery of "allow CatRom" flag to "TemporalStabilization" pass in diffuse-only denoisers (fixed #96)
  • REBLUR: fixed `NRD_NORMAL_ENCODING` not delivered to REBLUR files causing "curr-prev" normal comparisons less accurate (regression)
  • + 3 more
v4.16.0
dzhdanNVdzhdanNV·7mo ago·October 22, 2025
GitHub

📋 Changes

  • removed 160+ hand-crafted shader permutations, generation is done via [ShaderMake](https://github.com/NVIDIA-RTX/ShaderMake)
  • improved support of custom shader build systems, see [UPDATE.md/Custom shader compilation](https://github.com/NVIDIA-RTX/NRD/blob/master/UPDATE.md#custom-shader-compilation)
  • added an option to get history length in the output `.w` channel (read comments for `OUT_` resources):
  • REBLUR: use `ReblurSettings::returnHistoryLengthInsteadOfOcclusion`
  • RELAX: returns history length by default (instead of squared variance)
  • REBLUR: improved behavior in disocclusions
  • REBLUR: increased flexibility of responsive accumulation (see `ResponsiveAccumulationSettings`)
  • improvements and bug fixes
  • + 20 more
v4.15.1-fixed
dzhdanNVdzhdanNV·9mo ago·August 20, 2025
GitHub

Same as v4.15.1, but resolved CMake's inability to shallow-clone a commit hash.

v4.15.1
dzhdanNVdzhdanNV·9mo ago·August 19, 2025
GitHub

📋 Changes

  • improvements and bug fixes
  • Slightly improved performance by compile-time specialization (see new CMake options, no breaking changes)
  • Integration: banned `ResourceSnapshot` copying to immediately reveal invalid usage (the structure stores pointers to itself)
  • GitHub actions: fixed always successful build
  • REBLUR: dynamic `enablePerformanceMode` setting replaced with static `REBLUR_PERFORMANCE_MODE` macro and corresponding CMake option (low run-time value and high maintenance cost)
  • CMake: updated ShaderMake and tagged the specific hash to prevent regressions
  • CMake: added Arm64 support, including cross compilation
  • NRI updated to v174
  • + 1 more
v4.15.0
dzhdanNVdzhdanNV·12mo ago·June 2, 2025
GitHub

📋 Changes

  • NRD: bug fixes and improvements
  • NRD INTEGRATION: reworked, improved and simplified usage (added support for auto-wrapping of native objects)
  • NRD: samplers moved to a separate set (space) for sharing
  • NRD: reworked `DescriptorPoolDesc` (and improved filling)
  • NRD: reduced binding insanity
  • NRD INTEGRATION: reworked and improved:
  • `Destroy + Create` simplified to `Recreate` (`Destroy` is still there)
  • added support for D3D11/D3D12/VK native objects (i.e. wrapping to NRI objects implemented "under the hood")
  • + 18 more
v4.14.3
dzhdanNVdzhdanNV·1y ago·March 20, 2025
GitHub

📋 Changes

  • tagged a specific MathLib release
v4.14.2
dzhdanNVdzhdanNV·1y ago·March 19, 2025
GitHub

📋 Changes

  • fixed compilation with GCC
  • updated MathLib
v4.14.1
dzhdanNVdzhdanNV·1y ago·March 7, 2025
GitHub

📋 Changes

  • resolved issue #87
  • bug fixes and improvements
  • REBLUR: fixed broken `OCCLUSION` denoisers if `HitDistanceReconstructionMode != OFF`
  • REBLUR: `DIRECTIONAL_OCCLUSION` memory usage reduced by 5%
v4.14.0-fixed
dzhdanNVdzhdanNV·1y ago·March 4, 2025
GitHub

📋 Changes

  • REBLUR: fixed wrong order of arguments breaking `virtualHistoryAmount` delivery to the Temporal Stabilization pass
  • same as v4.14.0
v4.14.0
dzhdanNVdzhdanNV·1y ago·March 3, 2025
GitHub

📋 Changes

  • REBLUR: improved performance (+6% in non-SH mode, +10% in SH mode)
  • REBLUR: reduced memory usage (-10% in all modes)
  • REBLUR: outputs are not used as history buffers anymore! (removed inter-frame dependencies)
  • REBLUR: improved IQ by regaining more contact shadows
  • RELAX/REBLUR: more flexible `material ID` support
  • RELAX/REBLUR: improved specular motion calculation:
  • less dependent on curvature related hacks
  • better IQ on bumpy and wavy surfaces (common) in exchange of worsened IQ on concave mirrors (rare)
  • + 14 more
v4.12.0
dzhdanNVdzhdanNV·1y ago·February 6, 2025
GitHub

📋 Changes

  • RELAX/REBLUR: returned back `historyFixBasePixelStride` to maximize flexibility (the default matches old behavior)
  • CMake: various improvements
  • NRD: improved `NRD_STATIC_LIBRARY` support
  • GIT: removed `MathLib` and `ShaderMake` submodules (conditionally downloaded via `FetchContent`)
  • CMake: made `Include` folder PUBLIC for comfortable use in the parent project linking NRD
  • CMake: adjustments
  • CMake: added INTERFACE target `NRDIntegration`
  • RELAX/REBLUR: returned back `historyFixBasePixelStride`
  • + 3 more
v4.11.4 (fixed)v4.11.4-fixed
dzhdanNVdzhdanNV·1y ago·February 3, 2025
GitHub

REBLUR/RELAX: fixed a critical regression breaking the Pre-pass logic

v4.11.4
dzhdanNVdzhdanNV·1y ago·January 21, 2025
GitHub

📋 Changes

  • improved robustness
  • NRD: GLSL-related replacements come into play if not already defined
  • NRD: improved robustness
  • RELAX: fixed touching of pixels outside of denoising range (can be garbage) in "HistoryClamping" pass
  • RELAX/REBLUR: fixed touching of wrong data (can be garbage) in "checkerboard" mode on the left side of the screen
  • REBLUR: pedantic IQ changes in "TemporalStabilization" pass if "split screen" mode is active
  • Integration: NRI updated to v1.161
  • updated docs
v4.11.3
dzhdanNVdzhdanNV·1y ago·January 3, 2025
GitHub

📋 Changes

  • various improvements
  • NRD: improved performance by reusing data already stored in caches, ~3% for REBLUR/RELAX (reversed CTA order for consumers following after producers)
  • NRD: added `NRD_MaterialFactors` to `NRD.hlsli` for "no-brain" material demodulation on the application side (without a need to look-copy-paste sample code)
  • NRD: improved roughness details by embedding roughness demodulation into `NRD_MaterialFactors`
  • NRD: improved constant data reuse between a series of dispatches (significantly reduced constant data traffic)
  • Integration: fixed a "non-issue" bug blocking optimizations for constant data reuse between dispatches
  • Integration: added ability to restore initial state of resources in `UserPool`
  • RELAX/REBLUR: improved curvature calculations for high parallax
  • + 6 more
v4.11.2
dzhdanNVdzhdanNV·1y ago·November 14, 2024
GitHub

📋 Changes

  • NRD: improved robustness
  • REBLUR: improvements
  • NRD: clarified importance and valid usage of `CommonSettings::frameIndex`
  • NRD: added more debug checks for user provided `CommonSettings`
  • NRD: `SetCommonSettings` returns `INVALID_ARGUMENT` if validation of user provided settings fails. It happens only at the end of the function. The return code is informational and doesn't affect function body. In debug builds a failed check invokes `assert` with a description of the problem
  • REBLUR: HistoryFix-ed data should not sneak into fast history for low roughness specular (test 115)
  • REBLUR: roughness based confidence should affect "vmb" max accumulated frames (actually it's a NOP due to fallback to "smb" logic)
  • Integration: logging goes into files instead of `stdout`
  • + 1 more
v4.11.1
dzhdanNVdzhdanNV·1y ago·November 11, 2024
GitHub

📋 Changes

  • improvements
  • REBLUR: cleaner specular disocclusions (tests 65, 66)
  • REBLUR: reduced fluffiness and boily look (tests 216, 205)
  • REBLUR: reduced overall specular "fatty look" bias, observed under glancing angles (tests 12, 186)
  • REBLUR: tweaked antilag default settings (to be more on the safe side, no changes in the logic)
  • REBLUR: more flexible `cameraAttachedReflectionMaterialID` support, allowing relative camera motion
  • RELAX: hooked up `CommonSettings::cameraAttachedReflectionMaterialID`
v4.11.0
dzhdanNVdzhdanNV·1y ago·November 5, 2024
GitHub

📋 Changes

  • NRD: added `GetMaxAccumulatedFrameNum` helper, emphasizing the importance of time-based accumulation, also added `DEFAULT_ACCUMULATION_TIME` constants for all denoisers
  • NRD: added `cameraAttachedReflectionMaterialID` to `CommonSettings` (currently used by REBLUR only), helping to deal with mirror reflections of objects attached to the camera. It's a suboptimal solution, future releases will address this problem better
  • REBLUR/SIGMA: `stabilizationStrength` replaced with `maxStabilizedFrameNum` for consistency with other accumulation related settings and `GetMaxAccumulatedFrameNum` helper. The progression `0, 1, 2, 3... 9` is more understandable than `1.00, 0.50, 0.33, 0.25... 0.10`
  • improvements and bug fixes
  • settings related (please, read `UPDATE.md`)
  • `NRD_FrontEnd_UnpackNormalAndRoughness` returns `materialID` in the same range, as it was passed to `NRD_FrontEnd_PackNormalAndRoughness`
  • NRD: added `GetMaxAccumulatedFrameNum` helper to the main header
  • NRD: added `cameraAttachedReflectionMaterialID` to `CommonSettings` (currently used by REBLUR only, WIP longer term)
  • + 36 more
v4.10.0
dzhdanNVdzhdanNV·1y ago·October 9, 2024
GitHub

📋 Changes

  • SIGMA: notable IQ improvements (less flickering in motion, better responsiveness)
  • REBLUR / RELAX: improvements and bug fixes
  • NRD integration: API changes, dictated by new optional features
  • no changes in NRD \O/
  • Integration: read UPDATE.md
  • NRD: deleted unnecessary curvature flattening if delta between normals is close to normal ULP
  • REBLUR: eliminated repacking for normal-roughness
  • REBLUR: improved specular tracking
  • + 15 more
v4.9.4
dzhdanNVdzhdanNV·1y ago·September 20, 2024
GitHub

📋 Changes

  • Cmake: minor improvements
  • updated deps
v4.9.3
dzhdanNVdzhdanNV·1y ago·September 6, 2024
GitHub

📋 Changes

  • bug fixes and improvements
  • REBLUR: fixed potential edge smoothing
  • updated docs
  • updated deps
v4.9.2
dzhdanNVdzhdanNV·1y ago·August 23, 2024
GitHub

📋 Changes

  • improvements and bug fixes
  • `MemoryAllocatorInterface` renamed to `AllocationCallbacks`
  • NRD: fixed `NRD_STATIC_LIBRARY`
  • REBLUR: improved MV patching (if enabled)
  • updated docs
v4.9.1
dzhdanNVdzhdanNV·1y ago·August 14, 2024
GitHub

📋 Changes

  • improvements and bug fixes
  • NRD: improved per-frame random rotations offer better distribution of samples across frames (barely visible in OCCLUSION and SIGMA)
  • REFERENCE: split-screen and resolution scaling related bug fixes
v4.9.0fix
dzhdanNVdzhdanNV·1y ago·August 5, 2024
GitHub

📋 Changes

  • GCC: fixed compilation
  • updated GitHub workflow
v4.9.0
dzhdanNVdzhdanNV·1y ago·August 1, 2024
GitHub

📋 Changes

  • NRD: exposed `CommonSettings::strandMaterialID` and `CommonSettings::strandThickness` to improve denoising on hair and grass
  • REBLUR: improved IQ without stabilization pass
  • REBLUR: improved behavior in disocclusions and in case of a short history
  • REBLUR: improved specular tracking
  • REBLUR: exposed new settings `hitDistanceStabilizationStrength` and `fireflySuppressorMinRelativeScale`
  • improvements and bug fixes
  • REBLUR: changed usage of `maxBlurRadius` and its default value, old values should be multiplied by `2`
  • NRD: improved comments in main headers, added missing info
  • + 24 more
v4.8.2
dzhdanNVdzhdanNV·1y ago·June 14, 2024
GitHub

📋 Changes

  • SIGMA improvements
  • SIGMA: fixed 1 pixel wide blur on shadows with penumbra size < 1 pixel
  • SIGMA: better behavior for multi-layered shadows (a narrow penumbra inside a wide penumbra)
  • SIGMA: reduced potential flickering
  • SIGMA: fixed suboptimal output of the blur pass affecting TS pass
  • SIGMA: improved weights for moments calculations in TS pass
  • NRD: resolved some TODOs
  • updated deps
  • + 1 more
v4.8.1
dzhdanNVdzhdanNV·2y ago·May 16, 2024
GitHub

📋 Changes

  • Bug fixes and improvements
  • REBLUR_SH: fixed mis-normalized weighted sum for `diffSh` and `specSh` in `HistoryFix` pass (the regression appeared after finding a better initial weight for the center pixel)
  • REBLUR_SH: minor performance optimization in "Temporal Stabilization" pass
  • REBLUR_SH: fixed "touching" of `specSh.w` in `HistoryFix` pass, which is "modified roughness" and must not be processed in any way