Releases: NVIDIAGameWorks/RayTracingDenoiser
Releases · NVIDIAGameWorks/RayTracingDenoiser
v4.11.3
HIGHLIGHTS:
- various improvements
DETAILS:
- 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
toNRD.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
- RELAX: reduced amount of explicit typecasts
uint2
toint2
- REBLUR: patched
smbNavg
ifsmb
motion is invalid (improved IQ in a corner case) - REBLUR: improved fallback to surface motion, which now works in both directions (improved IQ in some corner cases)
- REBLUR: added debug visualization for rotators & frame index
- improved comments in main headers
- updated deps
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