v4.11.0
HIGHLIGHTS:
- NRD: added
GetMaxAccumulatedFrameNumhelper, emphasizing the importance of time-based accumulation, also addedDEFAULT_ACCUMULATION_TIMEconstants for all denoisers - NRD: added
cameraAttachedReflectionMaterialIDtoCommonSettings(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:
stabilizationStrengthreplaced withmaxStabilizedFrameNumfor consistency with other accumulation related settings andGetMaxAccumulatedFrameNumhelper. The progression0, 1, 2, 3... 9is 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_UnpackNormalAndRoughnessreturnsmaterialIDin the same range, as it was passed toNRD_FrontEnd_PackNormalAndRoughness
DETAILS:
- NRD: added
GetMaxAccumulatedFrameNumhelper to the main header - NRD: added
cameraAttachedReflectionMaterialIDtoCommonSettings(currently used by REBLUR only, WIP longer term) - NRD:
NRD_FrontEnd_UnpackNormalAndRoughnessreturnsmaterialIDin 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
gStrandThicknessconstant (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
lobeAngleFractiondefault value to squeeze more normal details (using the old default is OK) - REBLUR:
lobeHalfAngleuses 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:
GetGeometryWeightParamsshould not become more strict if history is long (the rest is handled by normal weights) - REBLUR: minimized deprecated
GetBilateralWeightusage - 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