Releases: NVIDIAGameWorks/RayTracingDenoiser
Releases Β· NVIDIAGameWorks/RayTracingDenoiser
v4.11.2
HIGHLIGHTS:
- NRD: improved robustness
- REBLUR: improvements
DETAILS:
- NRD: clarified importance and valid usage of
CommonSettings::frameIndex
- NRD: added more debug checks for user provided
CommonSettings
- NRD:
SetCommonSettings
returnsINVALID_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 invokesassert
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
- Integration: added
frameIndex
validation
v4.11.1
HIGHLIGHTS:
- improvements
DETAILS:
- 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
HIGHLIGHTS:
- NRD: added
GetMaxAccumulatedFrameNum
helper, emphasizing the importance of time-based accumulation, also addedDEFAULT_ACCUMULATION_TIME
constants for all denoisers - NRD: added
cameraAttachedReflectionMaterialID
toCommonSettings
(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 withmaxStabilizedFrameNum
for consistency with other accumulation related settings andGetMaxAccumulatedFrameNum
helper. The progression0, 1, 2, 3... 9
is more understandable than1.00, 0.50, 0.33, 0.25... 0.10
- improvements and bug fixes
BREAKING CHANGES:
- settings related (please, read
UPDATE.md
) NRD_FrontEnd_UnpackNormalAndRoughness
returnsmaterialID
in the same range, as it was passed toNRD_FrontEnd_PackNormalAndRoughness
DETAILS:
- NRD: added
GetMaxAccumulatedFrameNum
helper to the main header - NRD: added
cameraAttachedReflectionMaterialID
toCommonSettings
(currently used by REBLUR only, WIP longer term) - NRD:
NRD_FrontEnd_UnpackNormalAndRoughness
returnsmaterialID
in the same range, it was passed toNRD_FrontEnd_PackNormalAndRoughness
- NRD: improved code reuse between REBLUR and RELAX, reduced divergence
- NRD: improved per frame rotators (better noise properties)
- NRD: interface polishing (no functional changes)
- RELAX: added clamping to user provided "max accumulated frame num" values
- RELAX: reduced memory usage of DIFFUSE denoiser (had a dummy allocation)
- RELAX: diff-spec lobe fraction replaced with one shared fraction (simplified settings)
- RELAX: partial refactoring to match overall NRD style
- REBLUR/RELAX: hot/cold branch sorting
- REBLUR/RELAX: improved parallax computations, affecting many aspects of specular tracking
- REBLUR/RELAX: improved curvature computations
- REBLUR/RELAX: added forgotten initialization of
gStrandThickness
constant (oops!) - REBLUR: minor performance opts
- REBLUR: fixed minor regressions related to migration to stochastic bilinear filter for RGBA1010102 oct-packed normals (since prev data repacking is gone)
- REBLUR: stochastic bilinear gets replaced with native bilinear if normals are interpolate-able
- REBLUR: slightly decreased hit distance sensitivity in case of 0 roughness
- REBLUR: slightly reduced
lobeAngleFraction
default value to squeeze more normal details (using the old default is OK) - REBLUR:
lobeHalfAngle
uses code fromGetNormalWeightParam
(reduced code entropy) - REBLUR: adjusted virtual parallax based confidence to be a bit more aggressive
- REBLUR: improved screen space sampling (now used in more shaders without IQ loss, improves perf, WIP)
- REBLUR:
GetGeometryWeightParams
should not become more strict if history is long (the rest is handled by normal weights) - REBLUR: minimized deprecated
GetBilateralWeight
usage - REBLUR: relaxed maximum value of slope scaling for disocclusion threshold
- REBLUR: improved antilag (which didn't do much last year), also made almost FPS independent, tuned to "not hurt"
- REBLUR: finally fixed ancient and ugly issue leading to "bright lighting crawling", caused by unbiased (bright) fast history selectively accelerating the biased (fireflies suppressed) main history
- REBLUR/SIGMA: "stabilization strength" settings replaced with "max stabilized frame num"
- SIGMA: removed unnecessary checks in spatial filters
- SIGMA: "closest viewZ" replaced with "longest MV" logic in the temporal stabilization pass
- SIGMA: history copying decoupled into a separate pass
- SIGMA: added disocclusion tracking to get rid of ghosting
- SIGMA: fixed ugly white outlines (suboptimal weighting scheme between dense and sparse passes)
- SIGMA: tuned defaults settings
- SIGMA: introduced screen space sampling to better respect low-discrepancy based per frame rotators
- updated docs
- updated dependencies
- refactoring
v4.10.0
HIGHLIGHTS:
- 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
BREAKING CHANGES:
- no changes in NRD \O/
- Integration: read UPDATE.md
DETAILS:
- NRD: deleted unnecessary curvature flattening if delta between normals is close to normal ULP
- REBLUR: eliminated repacking for normal-roughness
- REBLUR: improved specular tracking
- REBLUR: improved "vmb" specular tracking on moving objects
- REBLUR: fixed and improved logic for
ReblurSettings::responsiveAccumulationRoughnessThreshold
- RELAX: fixed lots of places without
UnpackViewZ
- RELAX: made
ViewZ
FP16 compatible - SIGMA: improved penumbra size weighting scheme
- SIGMA: TS - fixed rare potential 1 pixel leaks
- SIGMA: TS - proper early out in regions with hard shadows
- SIGMA: TS - less flickering in motion
- Integration: added a few checks to increase robustness
- Integration: the constructor replaced with an initialization struct
- Integration: exposed
demoteFloat32to16
option - Integration: exposed
promoteFloat16to32
option - Integration: removed the need to pass
format
(modern NRI allows to query it) - Integration: refactoring, rotating around replacing
Nrd
prefix withnrd::
namespace - updated docs
v4.9.4
v4.9.3
v4.9.2
v4.9.1
v4.9.0fix
v4.9.0
HIGHLIGHTS:
- NRD: exposed
CommonSettings::strandMaterialID
andCommonSettings::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
andfireflySuppressorMinRelativeScale
- improvements and bug fixes
BREAKING CHANGES:
- REBLUR: changed usage of
maxBlurRadius
and its default value, old values should be multiplied by2
DETAILS:
- NRD: improved comments in main headers, added missing info
- NRD: added optional
NRD_FrontEnd_TrimHitDistance
toNRD.hlsli
- NRD: added
NRD_GetNormalizedStrandThickness
helper toNRD.hlsli
- NRD: exposed
CommonSettings::strandMaterialID
andCommonSettings::strandThickness
- NRD: exposed
NRD_USE_HISTORY_CONFIDENCE
,NRD_USE_DISOCCLUSION_THRESHOLD_MIX
andNRD_USE_BASECOLOR_METALNESS
macro switches allowing to disable almost dead and rarely used code - SIGMA: fixed very rare 2 pixel wide bleeding (introduced by Temporal Stabilization pass under special conditions)
- RELAX: fixed disocclusion threshold scaling
- RELAX: added missing "rect origin" offsets to
IN_DIFF_CONFIDENCE
,IN_SPEC_CONFIDENCE
andIN_DISOCCLUSION_THRESHOLD_MIX
inputs - REBLUR / RELAX: slope scale should not make disocclusion threshold > 1
- REBLUR / RELAX: hooked up
strandMaterialID
and updated disocclusion threshold logic - REBLUR: exposed
ReblurSettings::hitDistanceStabilizationStrength
allowing to control AO/SO responsiveness in the temporal stabilization pass and to reach parity with OCCLUSION denoisers if set to "0" - REBLUR: exposed
ReblurSettings::fireflySuppressorMinRelativeScale
(was previously a macro) - REBLUR: relaxed temporal stabilization pass on
strandMaterialID
- REBLUR: improved specular tracking by optimizing "smb" based accumulation
- REBLUR: improved firefly suppressor (making REBLUR more usable without stabilization)
- REBLUR: improved validation (highlights hitT outside of [0; 1] range)
- REBLUR: removed error estimation used for blur radius correction (barely affected image since ~v4 release)
- REBLUR: reduced ghosting on variadic roughness (more roughness details)
- REBLUR: implemented linear progression of blur radius (much cleaner disocclusions)
- REBLUR_OCCLUSION: disabled firefly suppression for hit distances (could lead to bias in disocclusions)
- REBLUR_OCCLUSION: anti-firefly is disabled in DIRECTIONAL_OCCLUSION too
- REBLUR_OCCLUSION: minor fast history improvements
- updated MathLib
- updated docs
- polishing