Skip to content

v.1.9.0

Latest

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 23 Oct 23:38
303b408

Summary

  • Performance optimizations (~20% perf gain over 1.8.1 with comparable or better quality), including optional sub-sampling (sub-1spp), async compute overlap of DLSS-RR with the next frame's path tracing, GPU-side TLAS instance generation and large CPU-side savings
  • New Design document describing the real-time path tracing pipeline
  • SHaRC radiance cache is now part of the real-time path tracer and on by default, bringing more indirect lighting into DLSS-RR at about the same cost
  • NEE-AT now handles up to 2 million lights (was 512K), and clusters emissive triangles into light LODs for scenes with dense emissive geometry
  • Windows on ARM64 is now supported (see README)
  • Updated Streamline (2.14.16), NRD (4.17.3), RTXDI (3.0), OMM (1.10) and DirectX Agility SDK (1.619.6); CMake 4.1 is now required
  • Various code fixes, optimizations and improvements

Details

  • Real-time sub-sampling traces three quarters, half or a quarter of the pixels per frame in the main path tracing pass, weighting traced pixels by 1/rate; Sobol (0,2) per-block pattern by default, with random, stochastic and block stratified alternatives (--overrideSubSamplingMode, --subSamplingPattern, --subSamplingBlockSize; not used with ReSTIR DI/GI or more than 1 spp)
  • Performance presets retuned: they now include sub-sampling (three quarters for Balanced and higher, half for Performance and Ultra Performance), lower bounce limits in faster presets (Balanced 18 to 14, Performance 12 to 10, Ultra Performance 10 to 6) and 2-state Opacity Micromaps in Performance and Ultra Performance
  • Async compute prefix (DirectX 12 with enhanced barriers, DLSS-RR mode, on by default): all work up to the DLSS-RR inputs runs on the async compute queue and overlaps the previous frame's DLSS-RR and post-processing; works with Reflex and DLSS-FG, falls back to the graphics queue automatically, toggle with "AsyncPrefix" in the UI or --asyncPrefix=false
  • TLAS instance descriptors are now generated on the GPU each frame, with optional frustum and distance culling (off by default); on DirectX 12 static BLASes are pooled and compacted, lowering acceleration structure memory
  • Large CPU frame time reductions for instance-heavy scenes (per-frame scene render cache, parallelized TLAS and instance processing, sparse GPU updates, a cheaper light baker setup), and support for larger scenes (up to 262,144 resident geometries, was 65,536)
  • Opacity Micromap memory reductions (bakes shared between meshes with identical inputs, baking scratch released when idle, debug data kept only while the OMM debug view is on, default "Max subdivision level" lowered from 12 to 6)
  • Intro Sample (IntroSample, a work in progress in 1.8.1) is now complete: a separate executable with a hybrid deferred architecture that adds ray-traced lighting one component at a time over 9 runtime-selectable steps, from image-based lighting with screen-space AO and reflections to ReSTIR DI, a unified path-traced indirect pass and SHaRC; see the Intro Sample documentation
  • New bistro_with_mirrors-rtxdi scene, and new bar and archway mirrors in bistro-programmer-art
  • SHaRC: new "SHaRC (radiance cache)" settings and debug panel, --overrideRadianceCacheMode, real-time mode only; the SHaRC SDK (1.8.3) is now a submodule
  • NEE-AT: runtime-selectable quality preset (Low/Medium/High, Low by default), faster response to new or changing lights (feedback from BSDF rays now fixed and on by default, light importance boosts now also strengthen NEE-AT feedback), fewer environment map proxies, a fix for GPUs with wave sizes below 32 and several stability fixes; NEE-AT shared code and settings moved into the Rtxpt/Shaders/Libraries/NEE-AT shader library, and the light baker shaders now hot-reload with Ctrl+R
  • DLSS: fixed vertical FOV and projection passed to Streamline (FOV was converted to radians twice), fixed pinhole camera jitter sign, Halton jitter by default with the DLSS-recommended phase count, DLSS-RR Preset F by default, proper HUD-less color for DLSS-FG, Reflex Low Latency by default and Reflex "On + Boost" now honored; more accurate DLSS-RR albedo guides on dark surfaces and better specular motion vectors on moving reflectors
  • Exposure rework: auto and manual exposure are now computed once and applied identically by the tone mapper and the path tracer, clamped to +-6 stops, with an exposure readout in the UI; the firefly filter is now exposure-invariant, and reference mode uses a stronger default threshold (5.0 to 2.5)
  • Self-intersection fix: ray origins are offset along the geometric normal using a per-hit position error scale, fixing light leaks at corners and creases far from the world origin; minimum GGX roughness lowered from 0.08 to 0.04; new per-material "Disable light sampling" option
  • New Shader Model 6.6 bindless resources (ResourceDescriptorHeap) on DirectX 12 and Vulkan; this requires Resource Binding Tier 3 on DirectX 12 and VK_EXT_mutable_descriptor_type on Vulkan
  • Breaking for integrations: "stable planes" are now called "denoising layers" everywhere (PATH_TRACER_MODE_* macros are now PT_REFERENCE / PT_DENOISING_LAYERS_BUILD / PT_DENOISING_LAYERS_FILL, shader files, render targets, UI); the path tracer shader tree was reorganized (Rendering/Materials/ and Scene/ replaced by BSDFs/, Surface/ and Utils/, surface loading split into its own bridge), and the BSDF type is now a per-material shader permutation macro (ActiveBSDF, currently always StandardBSDF)
  • Tracy profiler (v0.14.1) integration with CPU and DirectX 12 GPU zones (on demand; compiled out with -DTRACY_ENABLE=OFF)
  • Image regression testing scripts and new --captureSuffix, --perfLog (per-frame path tracing GPU timings to CSV; disables the async compute prefix), --gpuValidation, --borderless and --overrideDLSSMode options; --noWindow is no longer supported; --scene is now case-insensitive and prefers exact name matches; Cancel on a shader compile error now exits the app, and with --nonInteractive shader errors exit with code 1
  • Ctrl+Shift+C / Ctrl+Shift+V shortcuts to copy and paste the camera (position, direction, up) via the clipboard
  • Vulkan: building no longer needs the Vulkan SDK (SPIR-V is compiled with the bundled DXC), plus various fixes; SER, Opacity Micromaps and the new async compute prefix are DirectX 12 only
  • SDK and tool versions: Streamline 2.9.0 to 2.14.16, DirectX Agility SDK 1.619.0 to 1.619.6, DXC 1.9.2602.17 to 1.9.2609.5, NRD 4.15.2 to 4.17.3, OMM 1.8 to 1.10, NVAPI R575 to R615, RTXDI 2.3 to 3.0, SHaRC 1.8.3 (new), latest Donut/NVRHI; the OptiX denoiser used for photo-mode screenshots (3.0) is now downloaded by CMake
  • Upgrading an existing build folder: the Agility SDK version is kept in the CMake cache, so a build folder configured for 1.8.1 stays on Agility SDK 1.619.0; set RTXPT_D3D_AGILITY_SDK_VERSION_NAME to 1.619.6 or delete the CMake cache to pick up the update (Streamline and DXC update automatically)
  • Many other fixes and tweaks