OpenDLSS-NR is a Vulkan-based reimplementation of NVIDIA's DLSS 5 Neural Rendering network, released under the MIT license, that achieves bit-exact compatibility with the original proprietary implementation. It precisely replicates the 71-block Swin-Transformer/Vision-Transformer architecture used in DLSS-NR build 310.8.0, employing FP8 (E4M3) activations with FP16 accumulation on NVIDIA Ada-generation GPUs through the VK_KHR_cooperative_matrix, VK_NV_cooperative_matrix2, VK_EXT_shader_float8 and VK_NV_cuda_kernel_launch extensions. The repository includes build scripts that automate downloading a portable toolchain (glslang, Vulkan-Headers, volk, CMake, Ninja) and compiling the dlss5vk executable alongside a Filament-based demonstration.
Operating as a generative neural rendering network, OpenDLSS processes engine-rendered frames to enhance visual quality without increasing resolution. The system takes four inputs: a low dynamic range proxy of the current frame, three channels of Gaussian noise, the previous frame's output reprojected using motion vectors, and five conditioning scalars representing parameters like exposure, focus distance, and style strength. From these, it generates four f32 channels per pixel—three channels for RGB color residuals and one channel for a temporal blend logit—which the game engine combines with the original frame to synthesize final output. Performance benchmarks on an RTX 4070 SUPER show minimum per-frame execution times of 2.8 milliseconds at 768×768 resolution, 7.8 ms at 1920×1080, 12.6 ms at 2560×1440, and 29.3 ms at 3840×2160, measured over 40-frame windows.

This image illustrates the visual improvement achieved by the neural rendering network, which processes engine-rendered frames to enhance quality without increasing resolution, as described in the article.
To verify correctness independent of NVIDIA-specific hardware, the project provides a standalone WebGPU port in the ports/browser-webgpu directory that produces byte-identical intermediate results at every network layer without utilizing tensor cores or FP8 precision. Complementing this, a Three.js/WebGPU port (three-dlss-nr) packages the WebGPU implementation for direct integration with three.js scenes, running the 71-block architecture as TSL compute kernels within a WebGPURenderer. Validation shows the entire network (451 compute dispatches per frame) produces bit-identical output to the reference at resolutions including 64×64 and 512×512 when using synthetic weights, with numerical consistency confirmed through exhaustive testing of FP8 operations, f16 rounding, and element-wise operations against the reference's numerics fixtures.

This image demonstrates the Three.js/WebGPU port mentioned in the article, which packages the WebGPU implementation for direct integration with three.js scenes, running the 71-block architecture as TSL compute kernels.