Releases: NVIDIAGameWorks/RayTracingDenoiser
Releases · NVIDIAGameWorks/RayTracingDenoiser
v3.5.0
NRD v3.5.0:
HIGHLIGHTS:
- REBLUR: important follow up bug & regression fixes
- REBLUR: fixed broken DIRECTIONAL_OCCLUSION denoiser
- REBLUR: significantly reduced memory usage of OCCLUSION & DIRECTIONAL_OCCLUSION denoisers
- REBLUR: improved internal anti-firefly suppressor
- REBLUR: more stable specular tracking
- REBLUR: improved IQ
- REBLUR: temporal stabilization is now less important for IQ (but still needed for antilag)
DETAILS:
- NRD: SH simplifications
- NRD: prepass rotator now scales blur radius by +/- 25%
- NRD: added cutoffs for non-exponential weights to minimize FP precision drifting
- NRD: added optional "NONE" mode for kernel rotation
- NRD: fixed strangely-looking code for texture clearing
- NRD: tweaked hit distance weight to be not stricter than 3%
- NRD: introduced NRD_EPS
- NRD: reduced code entropy
- REBLUR OCCLUSION and DIRECTIONAL_OCCLUSION: switched internal processing to 16-bit UNORM/SNORM instead of 16-bit FLOAT to fix darkening effects when history length is very long
- REBLUR OCCLUSION: significantly reduced memory usage
- REBLUR OCCLUSION: simplified code to be closer to non-occlusion mode
- REBLUR DIRECTIONAL_OCCLUSION: fixed! (was broken after recent changes)
- REBLUR DIRECTIONAL OCCLUSION & SH: fixed internal anti-firefly suppressor
- REBLUR SH: advanced prepass made always on since direction and PDF is available
- REBLUR: rotators now scale blur radius by +/- 25%
- REBLUR: exposed "historyFixFrameNum" and "historyFixStrideBetweenSamples" instead of "historyFixStrength"
- REBLUR: min PDF check moved to encoding phase
- REBLUR: tuned fractions
- REBLUR: fixed "darkening" bias (old regression)
- REBLUR: massaged blur radius calculation
- REBLUR: blur radius boost adjusted by roughness (regression)
- REBLUR: tuned blur radius in spatial passes if number of accumulated frames is low
- REBLUR: massaged curvature angle
- REBLUR: switched to symmetrical kernel
- REBLUR: improved virtual parallax based confidence calculation (less history drops for glossy specular)
- REBLUR: simplified checkerboard resolve & accum speeds interpolation
- REBLUR: relaxed parallax check if history length is short
- REBLUR: fixed potentially numerically unstable direction normalization (regression)
- REBLUR: fixed virtual motion based history accumulation acceleration (regression)
- REBLUR: tweaked plane distance sensitivity after history reset
- REBLUR: switched anti-firefly to 3x3 instead of 5x5
- REBLUR: anti-firefly and fast history clamping improvements
- REBLUR: fixed lost after refactoring scale in "GetSensitivityToDarkness" (regression)
- REBLUR: returned not affecting main history anti-firefly for hitT in temporal stabilization pass (regression)
- REBLUR: fixed ancient code preventing anti-lag from resetting history to 0 (was only 1 frame)
- REBLUR: improved checkerboard resolve for fast history
- REBLUR: matched surface- and virtual- based motion footprint quality calculations
- REBLUR: spatial filtering now follows specular lobe better
- REBLUR: improved behavior in disocclusions
- REBLUR: improved anti-firefly suppressor
- REBLUR: disocclusion check simplification
- REBLUR: used averaged instead of normalized previous normal for backfacing check
- REBLUR: resolved some TODOs
- REBLUR: improved code reuse
- REBLUR: refactoring
- RELAX: unification related renamings
- updated README & UPDATE
- updated MathLib
v3.4.3
NRD v3.4.3:
HIGHLIGHTS:
- bug fixes & improvements
DETAILS:
- fixed lost after refactoring scale in "GetSensitivityToDarkness" (regression)
- returned not affecting main history anti-firefly for hitT in temporal stabilization pass (regression)
- fixed ancient code preventing antilag from resetting history to 0 (was only 1 frame)
- fixed potential black outlines introduced by temporal stabilization pass
- improved checkerboard resolve for fast history
v3.4.2
NRD v3.4.2:
HIGHLIGHTS:
- bug fixes & improvements
DETAILS:
- REBLUR: fixed broken resource bindings in REBLUR_DIRECTIONAL_OCCLUSION denoiser
- REBLUR: tweaked plane distance sensitivity after history reset to minimize overblur
- REBLUR: tuned blur radius in spatial passes if number of accumulated frames is low (gives IQ and performance)
- REBLUR: switched anti-firefly to 3x3 instead of 5x5
- REBLUR: anti-firefly and fast history clamping improvements
v3.4.1
NRD v3.4.1:
HIGHLIGHTS:
- bug fixes
DETAILS:
- NRD: reduced code entropy (no functional changes)
- REBLUR: relaxed parallax check if history length is short
- REBLUR: accelerate hitT accumulation for low roughness (resolved TODO)
- REBLUR: fixed insane blur radius boost for low roughness (regression)
- REBLUR: fixed potentially numerically unstable direction normalization (regression)
- REBLUR: fixed virtual motion based history accumulation acceleration (regression)
- updated MathLib
- updated README
v3.4.0
NRD v3.4.0:
HIGHLIGHTS:
- NRD: anisotropic curvature estimation
- REBLUR/RELAX: improved specular reprojection on curved surfaces
- REBLUR: added fast history
- REBLUR: introduced denoisers working in spherical harmonic (SH) space
- REBLUR: reduced memory usage
- REBLUR: temporal stabilization pass can be turned off eliminating associated overhead
- REBLUR: specular tracking improvements
- REBLUR: better history reconstruction in disoccluded regions
- RELAX: improved performance
- RELAX: improved anti-firefly filtering
- RELAX: improved history confidence usage
DETAILS:
- NRD: anisotropic curvature estimation
- NRD: exposed helper "GetMethodString"
- NRD: gDebug is now available in Common.hlsli
- NRD: updated README and UPDATE
- REBLUR: added SH denoisers
- REBLUR: switched to YCoCg
- REBLUR: added fast history
- REBLUR: rewritten HistoryFix (no mips anymore)
- REBLUR: reduced memory usage
- REBLUR: improved error compensation and reduced bias
- REBLUR: fix for checkerboard resolve in advanced prepass mode
- REBLUR: removed virtual history amount correction which is not needed anymore
- REBLUR: reduced bias in pre-pass
- REBLUR: fixed laggy specular reprojection on bumpy surfaces
- REBLUR: specular confidence doesn't affect hit distance weight
- REBLUR: specular prepass setting should not affect diffuse only denoiser (and vice versa)
- REBLUR: improved reprojection on curved surfaces
- REBLUR: simplified temporal stabilization params
- REBLUR: fixed wrong output in DIFFUSE_DIRECTIONAL_OCCLUSION
- REBLUR: simplified roughness weight in temporal accumulation pass
- REBLUR: removed gFramerateScale based acceleration
- REBLUR: tuned "GetSpecAccumSpeed" (consistent parallax usage)
- REBLUR: tuned prepass parameters
- REBLUR: fixed & optimized hitT for specular tracking
- REBLUR: fixed (corrected) curvature if its sign is oscillating
- REBLUR: fixed (returned) virtual motion based normal weight in temporal accumulation
- REBLUR: added prev-prev test for roughness
- REBLUR: improved firefly suppression
- REBLUR: removed clamping to noisy input for specular
- REBLUR: dropped unnecessary output for sky pixels
- REBLUR: tweaked surface based motion accumulation
- REBLUR: hitT check for virtual motion in temporal accumulation replaced with parallax check
- REBLUR: improved prev-prev test
- REBLUR: prev-prev test checks surface similarity
- REBLUR: performance optimizations
- REBLUR: tweaked hit distance weight
- REBLUR: fixed regressions
- REBLUR: improved virtual motion roughness confidence in temporal accumulation
- REBLUR: maximized code reuse
- REBLUR: refactoring
- RELAX: removed geometry weights in firefly filter
- RELAX: switched from disocclusion threshold to spatial filtering threshold in disocclusion fix
- RELAX: added prev-prev test for roughness
- RELAX: improved confidence buffers handling
- RELAX: performance optimizations
- NRD integration: now computes memory usage
v3.3.1
v3.3.0
NRD v3.3.0:
HIGHLIGHTS:
- NRD: exposed HitDistanceReconstructionMode
- REBLUR: removed residual noise level setting
- REBLUR: diffuse pre pass is on by default (as a recommended setting in most cases)
DETAILS:
- NRD: better weights standardization
- NRD: exposed internal macro to use exponential weights for non-noisy data (current behavior preserved)
- REBLUR: exposed 3x3 and 5x5 hitT reconstruction modes
- REBLUR: improved hitT reconstruction pass
- REBLUR: hitT reconstruction pass gets implicitly disabled in checkerboard mode
- REBLUR: prepass IQ and performance improvements
- REBLUR: removed "is hitT valid?" checks (assuming hitT reconstruction is always enabled in case of probabilistic sampling)
- REBLUR: checkerboard resolve IQ and performance improvements
- REBLUR: better hitT accumulation
- REBLUR: improved specular tracking
- REBLUR: improved history fix pass
- REBLUR: tweaked how accumulated frames affect antilag and error estimation
- REBLUR: tweaked / simplified error estimation
- RELAX: exposed 3x3 and 5x5 hitT reconstruction modes
- RELAX: improved hitT reconstruction pass
- RELAX: hitT reconstruction pass gets implicitly disabled in checkerboard mode
- RELAX: prepass IQ and performance improvements
- RELAX: returned back to 1.0e-4 for min PhiLuminance to fix black patches if signal is very sparse
v3.2.3
NRD v3.2.3:
HIGHLIGHTS:
- RELAX / REBLUR: added probabilistic sampling support
- RELAX / REBLUR: improved performance by ~13% (REBLUR) and ~17% (RELAX)
- RELAX / REBLUR: specular tracking improvements
- RELAX / REBLUR: better ortho projection support
- RELAX / REBLUR: less blurry & leaky pre-pass
- NRD: exposed optional "prev world" to "world" matrix to simplify use of "virtual space" normals
- NRD: LibraryDesc exposes supported material bits and normal encoding
- NRD: exposed "convenient" function to convert "ResourceType" to string
- NRD: improved compatibility with POSIX-compliant systems
DETAILS:
- NRD: default disocclusion threshold reduced to 0.5%
- NRD: maximized code reuse
- NRD: optimized matrix usage
- NRD: clarified "denoising range" limits
- NRD: exposed optional world-prev to world transform for normals
- NRD: fixed script for NRD SDK generation
- NRD: improved compatibility with POSIX-compliant systems
- NRD: fixed and improved curvature calculations
- NRD: fixed and improved parallax calculations
- NRD: fixed bug in SMEM preloader not affecting current use cases
- NRD: added API function to convert "ResourceType" to string
- NRD: LibraryDesc exposes supported material bits and normal encoding
- NRD: GitHub automation support
- NRD: updated MathLib
- NRD: updated and improved docs
- RELAX: added hit distance reconstruction pass
- RELAX: more stability and less biasing in specular, especially on surfaces with low roughness
- RELAX: better specular reprojection for low-mid roughness
- RELAX: decreased surface motion based reprojection weight for specular for ortho case
- RELAX: minHitT3x3 and minHitT5x5 calculation bug fix
- RELAX: set specular variance boost to 0 by default
- RELAX: improved per-pass in case of contact reflections
- RELAX: clamping of specular based on virtual motion doe not depend on surface roughness anymore
- RELAX: clamping strength significantly decreased
- RELAX: reflection HitT check now affects fast history length
- RELAX: switched to single channel history length for all denoisers
- RELAX: removed diffuseHistoryRejectionNormalThreshold
- RELAX: moved to BicubicFilterNoCornersWithFallbackToBilinearFilterWithCustomWeights in temporal accumulation shader
- RELAX: bicubic is used everywhere
- RELAX: memory usage optimization
- RELAX: decreased influence of back-back normal weight in reprojection
- RELAX: improved curvature handling in specular
- RELAX: added separate diffuse and specular minLuminanceWeight
- RELAX: tiny bugfix in Atrous
- RELAX: various performance optimizations
- RELAX: max history length increased to 255
- RELAX: refactoring, bug fixes & code cleanup
- REBLUR: added hit distance reconstruction pass
- REBLUR: better code unification between "common" and "occlusion-only" denoisers
- REBLUR: better ortho projection support
- REBLUR: disocclusion threshold doesn't depend on NoV (led to rare problems on edges)
- REBLUR: removed internal sanitization (was OFF all the time)
- REBLUR: improved per-pass in case of contact reflections
- REBLUR: refactored CatRom functions
- REBLUR: improved advanced pre-pass
- REBLUR: virtual hitT accumulated similarly to radiance
- REBLUR: increased blur radius in HistoryFix pass
- REBLUR: 4x4 disocclusion test simplified to 12 taps
- REBLUR: improved disocclusion check (now works better in ortho mode)
- REBLUR: footprint quality affects history based on accumulated frames
- REBLUR: hit distance based specular confidence uses not accelerated hitT
- REBLUR: temporal stabilization improvements
- REBLUR: footprint stretching test now works in ortho mode
- REBLUR: removed error recalculation in spatial passes
- REBLUR: improved surface based disocclusion test for virtual motion
- REBLUR: tuned radius boost
- REBLUR: less aggressive TS after disocclusion
- REBLUR: simplified backface-normal test
- REBLUR: better "no spatial" support
- REBLUR: exposed diff / spec pre-pass blur radius
- REBLUR: more stable specular reprojection
- REBLUR: fixed insane pre-pass blur radius
- REBLUR: improved specular reprojection on high FPS
- REBLUR: improved hit distance based specular confidence calculations
- REBLUR: fixed "miscommunication" between some parameters
- REBLUR: simplified fade calculations for anisotropic kernel
- REBLUR: reworked HistoryFix - now uses 1 mip instead of 4
- REBLUR: getting rid of Nflat (almost)
- REBLUR: made anti-firefly roughness-independent
- REBLUR: tuned default hit distance antilag settings
- REBLUR: tuned interpolation of accumulation speeds
- REBLUR: auto disocclusion threshold correction
- REBLUR: tweaked virtual history amount in temporal stabilization
- REBLUR: fixed re-packing issue when input normals are more precise than internal ones
- REBLUR: removed clamping for virtual history
- REBLUR: removed color compression (real exposure is needed)
- REBLUR: polished debug visualization
- REBLUR: various performance optimizations
- REBLUR: refactoring, bug fixes & code cleanup
- CMAKE: fixed shader compilation if WinSDK is older than 22000
- CMAKE: exposed NRD_STATIC_CPP_RUNTIME for Linux
v3.1.0
v3.1.0:
- NRD: refactoring of Reflection & Delta MV methods
- NRD: reduced code entropy in .resources files
- NRD: added ability to control normal encoding via Cmake
- NRD: fixes for SLANG
- REBLUR: improved error compensation in areas with low specular reprojection confidence
- REBLUR: moved anti-firefly filter to work better with signals with high energy fireflies
- REBLUR: removed IsInScreen2x2
- REBLUR: introduced always-active firefly suppressor
- REBLUR: improved roughness weight in temporal reprojection
- REBLUR: disabled specular-related code for diffuse-only denoisers
- REBLUR: reference mode doesn't change parameters under the hood
- REFLECTION_MV: fixed number of constants
- NRD INTEGRATION: added mode without descriptors caching
- CMAKE: refactoring
- updated UPDATE.md
v3.0.0
v3.0.0:
HIGHLIGHTS:
- RELAX / REBLUR: improved compatibility with path tracing
- RELAX / REBLUR: improved IQ and performance
- RELAX / REBLUR: reworked settings, exposed new settings
- REBLUR: exposed performance mode
- NRD: improved compatibility with PS5, UE and LINUX
NRD:
- NRD: improved modularization of denoisers
- NRD: shared more code between denoisers
- NRD: introduced SPECULAR_REFLECTION_MV method
- NRD: introduced DELTA_OPTIMIZATION_MV method
- NRD: improved checkerboard resolve if pre-pass is on
- NRD: minimized values in NRD_ENCODING_ERRORS
- NRD: limiting PDF to sane values, improved packing
- NRD: shaders moved into per-denoiser sub-folders
- NRD: simplified normal encoding variants to UNORM and OCT
- NRD: added UPDATE.md simplifying understanding of changes in the API and settings
- NRD: introduced NRD_HEADER_ONLY for NRD.hlsli
- NRD: added missing prefixes for COMPILER macro in NRD.hlsli
- NRD: clarified "roughness" in NRD.hlsli
- NRD: added include guards into NRD.hlsli
- NRD: updated .gitignore
REBLUR:
- REBLUR: added performance mode with real-time switch
- REBLUR: added REBLUR_RESPONSIVE_ACCUMULATION_ROUGHNESS_THRESHOLD knob
- REBLUR: added footprint stretching test
- REBLUR: exposed "ReblurSettings::inputMix"
- REBLUR: exposed "ReblurSettings::minConvergedStateBaseRadiusScale"
- REBLUR: exposed "ReblurSettings::responsiveAccumulationRoughnessThreshold"
- REBLUR: fixed specular reprojection issues for low roughness
- REBLUR: fixed imprecision problems affecting weights in temporal accumulation
- REBLUR: fixed curvature in ortho mode
- REBLUR: improved performance
- REBLUR: improved compatibility with path tracing
- REBLUR: improved "materialID" support
- REBLUR: improved prev-prev normal test for specular reprojection
- REBLUR: improved curvature angle estimation
- REBLUR: improved error estimation
- REBLUR: improved precision of internal normals
- REBLUR: improved behavior in disocclusions
- REBLUR: improved error compensation if specular confidence is low
- REBLUR: reduced mip number to 4
- REBLUR: squeezed more normal and shadow details
- REBLUR: virtual parallax taken into account
- REBLUR: compressed hit distances used for hit distance confidence
- REBLUR: removed normal weight for virtual motion (prev-prev does the same)
- REBLUR: allowed small blur for low roughness if accumulation doesn't go well
- REBLUR: reprojection improvements
- REBLUR: tuned hitT weight & virtual history acceleration
- REBLUR: standardized settings
- REBLUR: simplified debug
- REBLUR: refactoring, standardization, simplification and unification
RELAX:
- RELAX: added footprint stretching test
- RELAX: shader modularization
- RELAX: fixed quarter resolution
- RELAX: fixed variance calculation in A-trous shaders
- RELAX: fixed potentially problematic function overloading for "Get*WorldPos"
- RELAX: improved performance
- RELAX: improved compatibility with path tracing
- RELAX: improved "materialID" support
- RELAX: improved prev-prev normal test for specular reprojection
- RELAX: improved "skip reprojection" logic
- RELAX: improved handling of normal imprecision in reprojection
- RELAX: removed spatial variance estimation pass
- RELAX: combined spatial variance estimation and Atrous_shmem
- RELAX: implemented specular reprojection for surfaces with negative surface curvature
- RELAX: refactoring
- RELAX: minor luminance weights fixes & updates
- RELAX: refactoring, standardization, simplification and unification
OTHER:
- REFERENCE: introduced dedicated input / output slots
- LINUX: updated SDK generation script
- NRD INTEGRATION: updated and fixed
- CMAKE: create shader output directory during deployment
- MATHLIB: updated
- README: updated