Repository navigation
Releases: NVIDIA-RTX/RTXPT
Releases · NVIDIA-RTX/RTXPT
Release list
v.1.9.0
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-rtxdiscene, and new bar and archway mirrors inbistro-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-ATshader 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 andVK_EXT_mutable_descriptor_typeon Vulkan - Breaking for integrations: "stable planes" are now called "denoising layers" everywhere (
PATH_TRACER_MODE_*macros are nowPT_REFERENCE/PT_DENOISING_LAYERS_BUILD/PT_DENOISING_LAYERS_FILL, shader files, render targets, UI); the path tracer shader tree was reorganized (Rendering/Materials/andScene/replaced byBSDFs/,Surface/andUtils/, surface loading split into its own bridge), and the BSDF type is now a per-material shader permutation macro (ActiveBSDF, currently alwaysStandardBSDF) - 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,--borderlessand--overrideDLSSModeoptions;--noWindowis no longer supported;--sceneis now case-insensitive and prefers exact name matches; Cancel on a shader compile error now exits the app, and with--nonInteractiveshader 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_NAMEto1.619.6or delete the CMake cache to pick up the update (Streamline and DXC update automatically) - Many other fixes and tweaks
v.1.8.1
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-artscene 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
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
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
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
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
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
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
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
- Streamline 2.1.0 integration (DLSS SR, DLSS FG, Reflex)
- Upgrade to NRD 4.2.1 (see https://github.com/NVIDIAGameWorks/RayTracingDenoiser)
- Various other RTXDI fixes & optimizations including upgrade to latest RTXDI sdk-only branch (https://github.com/NVIDIAGameWorks/RTXDI/commits/sdk-only)
- Path decomposition debug view (requires setting ENABLE_DEBUG_DELTA_TREE_VIZUALISATION to 1)
- Update to latest DXC compiler (https://github.com/microsoft/DirectXShaderCompiler/releases/tag/v1.7.2212.1)
- General code cleanup, dropping unused codepaths and etc.