Skip to content

Releases: NVIDIA-RTX/RTXPT

v.1.9.0

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

v.1.8.1

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 05 Mar 16:33
62b7d5c

Summary

  • Performance optimizations (25-30%+ perf gain over 1.7.x with comparable or better quality)
  • New performance/quality presets in "Display and performance" allow for better scaling from low end to high end GPUs
  • New modes in bistro-programmer-art scene for stress testing animation and dynamic lighting scenarios (see 1, 2, 3, 4)
  • Fixes for a number of DLSS-RR denoising stability issues in reflected/refracted surfaces
  • DirectX SER and Opacity Micromaps are now available when Agility SDK 1.619 is enabled (default, requires DXR 1.2 driver support; to disable, remove Agility SDK 1.619 from CMake settings)

Details

  • Main path tracer has been cleaned up and optimized to reduce register pressure (reducing spill/fill) and divergence (increasing active thread %)
  • 5 different performance settings have been added, and a number of different features connected to them, allowing for almost 10x perf scaling at same resolution
  • A number of the settings are now baked into shaders as macros, allowing shader compiler to better optimize code, eliminate loops and etc.
  • Bistro has more emissive materials, more mirrors and specular materials, more lights (up to 400k, a lot of which dynamic) and moving objects
  • Multiple material permutations now supported to allow for completely different BSDF/material handling in ClosestHit
  • Significant NEE-AT and general lighting improvements both on simplification, bug fixing, performance and quality
  • Improvements to multi-layer DLSS-RR denoising with better handling of motion vectors on curved surfaces
  • Significant reduction to memory use - we're now under 7.5GB of VRAM in Bistro at 4k with DLSS-RR Balanced
  • Grand refactor to allow for future addition of multiple code samples (and parts of one that is already in the works)
  • Basic scripting to allow automatic screenshot output with plethora of parameters for automated testing
  • SER and OMM are now first class citizens via DirectX Agility SDK 1.619
  • Many other unaccounted fixes and tweaks

v.1.7.0

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 22 Oct 13:37
5e02871

Summary

  • New scene (bistro-programmer-art.scene.json) for stress testing animation and dynamic lighting scenarios
  • Performance optimizations (~10% perf gain over v.1.6.0)
  • DirectX (Preview Agility SDK) Opacity Micromaps

Details

  • New bistro-programmer-art.scene.json scene set up for stress testing animation and dynamic lighting scenarios such as moving objects, dynamic lighting and environment.
  • Native DirectX Opacity Micromaps (available with Preview Agility SDK)
  • Reference image accumulation: fixed bugs related to consistency between runs, added "pre-warm caches" so that temporal techniques can produce full quality from 1st accumulated frame
  • Experimental: analytical lights now support proxy geometry so they can have physical representation
  • Procedural sky bugfixes
  • Reworked spec/diff radiance codepaths - they're mostly merged now to reduce live state and memory use
  • Experimental: NEE-AT guided light sampling upgrades and fixes
  • Few fixes for SPIR-V shaders and Vulkan
  • isThinSurface now disables refraction during transmission to (roughly) approximate ray entering and immediately leaving a very thin surface
  • NRD, Donut, NVRHI & other submodule updates
  • Skinned meshes now properly updated instead of being rebuilt from scratch every frame.
  • Streamline now works with Vulkan
  • Assets submodule now relies on LFS, and should only checkout a shallow copy
  • PathPayload reduced from 96 to 80 bytes
  • Misc path tracer refactoring

v.1.6.0

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 31 May 00:59

Summary

  • Quality and performance (10-15%) improvements
  • DirectX Shader Execution Reordering preview example
  • Refactoring, bug fixes, optimizations

Details

  • Updated to latest Streamline v2.7.30, which among other things brings DLSS-RR Preset E with significant improvements to image stability and quality
  • Updated to latest DirectX Shader Compiler v1.8.2505, which is now downloaded via CMake script
  • Added ability to optionally download and integrate DirectX AgilitySDK via CMake script
  • Added DirectX Shader Execution Reordering code path example - this requires DirectX AgilitySDK 717-preview and special graphics driver, see README.md for details
  • All ray tracing shaders are now compiled at runtime, allowing for a higher number of permutations, which allows shader specialization based on settings and enabled features; this helps with performance, complexity and unlocks future upgrades
  • New material saving/loading to support sharing of materials between scenes and future work
  • Various performance and quality improvements with NEE-AT light importance sampling
  • Various image quality & correctness bugfixes
  • Bloom effect & placeholders for post-process effects
  • Minor tweaks to scene materials
  • UI upgrades, zoom-tool for zooming in screen region (Ctrl+Z) and few other debugging improvements
  • Various misc optimizations for a total combined performance boost of around 10-15%

v.1.5.1

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 21 Mar 15:06
7d07c8c

Summary

Critical bugfix and a couple of minor upgrades

Details

  • Fix for NRD-related submodule related compile errors caused by unwanted Cmake-fetch library update
  • Update to "DX Compiler release for February 2025"; unfortunately this update breaks HLSL printf string support so that is disabled until alternatives found.
  • Added screenshot helpers ("grab screenshot with a delay", "grab sequence"). W.I.P.
  • Added jitter support for NEE-AT tiles to avoid DLSS-RR blocky artifacts; few other minor optimizations and tweaks

v.1.5.0

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 14 Mar 20:00

HIGHLIGHTS

  • DLSS-RR now integrated, with multi-layer denoising guide buffers, offering both performance and quality improvements
  • Lighting refactor: all light sources (local - analytic, emissive triangle, etc, distant - analytic, environment) are now importance sampled together in NEE as a single (polymorphic) type, with correct MIS vs direct path hits on emissive triangles or environment map
  • New work-in-progress light importance sampling approach (NEE-AT)
  • Across the board optimizations to the path tracer and refactoring of many subsystems such as materials, as well as updates to most external libraries

v.1.3.0

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 25 Jan 20:44

HIGHLIGHTS

  • Environment map refactor: dynamic procedural skies, higher resolutions, runtime texture compression and baking of directional lights now supported.
  • SDK updates bringing feature, image quality improvements and bug fixes.
  • Various smaller path tracer updates and features.

DETAILS

Features and changes

  • Grand environment map refactor:
    • Switched to cubemaps as the backing & sampling format (was previously equirectangular 2D texture).
    • Added support for dynamic update and added a procedural environment example based on https://github.com/NVIDIA/Q2RTX sky & clouds.
    • Upgraded importance sampling and RTXDI bridge code to support cubemaps and dynamic environments.
    • Support for importing high res pre-baked .dds cubemap environments (in addition to equirectangular).
    • Support for dynamic GPU-based BC6U compression.
    • All positionless directional-only analytical lights are now automatically baked into environment map, simplifying the lighting code.
    • Added variants of existing scenes with enabled procedural sky.
    • Added a large number of high resolution example environment maps in cubemap format (4096 x 4096 x 6, BC6U) to the media repository.
  • Shader compiler now using ShaderMake.
  • Updated to DXC HLSL compiler v1.7.2308 and fixed & switched all shaders to HLSL 2021.
  • Updated to Streamline v2.2.1 with various performance optimizations and bug fixes.
  • Updated to latest RTXDI sdk-only branch which includes various fixes and refactoring from v2.1.0.
  • Updated to newer NRD version v4.3.6 with a number of image quality upgrades and fixes.
  • Added optional shadow rays NoL fadeout (exposed as part of material options) useful in hiding self-shadowing artifacts with low-poly geometry.
  • Added support for the new Bounded VNDF sampling.
  • Added ability to boost NEE light sampling for primary surface (exposed as UI option).
  • Experimental automated image based regression testing.
    ​

Bug fixes

  • Vulkan stability fixes.
  • OMM memory leak and stability fixes.
  • Various UI and other smaller fixes.
  • Fixed tangent space being wrong with normalmaps in certain cases, causing incorrect lighting.
    ​

Known issues

  • Vulkan port has some missing features such as SER and BC6U runtime compression for environment maps

v.1.2.0

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 24 Aug 21:38

HIGHLIGHTS

  • Significant core path tracer light sampling improvements - reduced noise and artifacts.
  • Various features, bug fixes, improvements and SDK updates.
    ​

DETAILS

Features and changes

  • NEE (Next Event Estimation) light importance sampling was refactored and support was added for local light importance sampling (uniform, power, ReGIR). NEE in general is now better separated from the rest of the codebase and supports adjustable number of light samples for distant and local lights. This provides much higher core path tracer lighting quality at the expense of some added cost.
  • ReGIR (world space grid mode) now works in both NEE and RTXDI ReSTIR DI modes.
  • Added ability to do per-pixel supersampling in realtime mode for higher quality & better reference output.
  • Added low discrepancy sampling (only on path BSDF for now), based on Practical Hash-based Owen Scrambling.
  • Upgraded to NRD 4.2.2 (see https://github.com/NVIDIAGameWorks/RayTracingDenoiser) and improved denoising default settings.
  • General code cleanup & refactoring.
  • Upgraded Streamline and OMM submodules.
    ​

Optimizations

  • Environment map presampling implemented for NEE importance sampling - it saves enough compute to allow for doing 2 samples instead of one!
  • Various other minor upgrades.
    ​

Bug fixes

  • Fix for NEE and RTXDI lighting bugs with diffuse or rough transparent surfaces.
  • Analytic spotlight light type now works.
  • Various UI fixes.
  • Various smaller fixes.
    ​

Known issues

  • Distant analytic lights are non-functional in some cases.

v1.1.0

Choose a tag to compare

@fstrugar-nv fstrugar-nv released this 20 Jun 14:38
a0da071

HIGHLIGHTS

  • Significant baseline performance (~30%) improvements
  • Added DLSS Super Resolution, DLSS Frame Generation and Reflex
  • Various bug fixes, Vulkan improvements and SDK updates

DETAILS

Optimizations

  • Path tracer performance pass: better RR, removing redundant BSDF math, removing SER from non-random (stable) path decomposition pre-pass, etc.
  • Texture MIP computation is now precomputed
  • RTXDI now uses compressed GBuffer to significantly reduce memory bandwidth required as well as the size
  • RTXDI now uses fused ReSTIR DI and ReSTIR GI apply pass to reduce unnecessary loading & processing
  • Using tiled-swizzled packing for GBuffer and stable planes for more cache-friendly access patterns
  • various other shader optimizations

Bug fixes

  • fix for autoexposure bug causing overdarkening at certain resolutions
  • fix for RTXDI bug causing blocky artifacts from low probability samples in disoccluded areas (i.e. when quickly turning camera)
  • fix for RTXDI bug causing incorrect light resampling resulting in overly sharp shadows
  • various Vulkan-related fixes
  • various denoising (NRD) fixes
  • various path decomposition fixes
  • fix for random number generator seed being same on vertex 0 and 1 in some cases
  • OMM fix for crash/hang when loading Sponza (#6)

Features and changes