logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·30.10.26
← Back to news

OpenDLSS: A Vulkan Reimplementation of Nvidia's DLSS 5 Neural Rendering Network

Original article
github.com|218 points|102 comments|by sagacity|Sep 30, 2026

OpenDLSS: A Vulkan-Based Recreation of Nvidia's DLSS 5 Neural Rendering

This project, hosted at maanHimself/OpenDLSS-NR, provides a high-fidelity Vulkan reimplementation of the DLSS 5 Neural Rendering (NR) network. The implementation is designed to be bit-exact compared to the original NVIDIA version.

🚀 Project Overview

The core of this project is a 71-block Swin/ViT network, mirroring the DLSS-NR build 310.8.0. It leverages tensor cores to execute using FP8\text{FP8}FP8 precision.

Note on Accuracy: This is not just a visual approximation. The intermediates are identical; all 75 block boundaries match the original byte-for-byte.

Implementation Variants

  1. Vulkan Path: The primary version utilizing tensor cores and FP8\text{FP8}FP8 for maximum performance.
  2. WebGPU Path: Located in ports/browser-webgpu/, this is a standalone implementation. It achieves the same bit-exact results in a browser environment without relying on FP8\text{FP8}FP8 or tensor cores.

🧠 Network Architecture

The system utilizes a U-net structure composed of shifted-window transformer blocks, anchored by a global ViT at the base.

Technical Specifications

  • Structure: 71 blocks distributed across six pooling levels.
  • Precision: FP8 (E4M3)\text{FP8 (E4M3)}FP8 (E4M3) activations with FP16\text{FP16}FP16 accumulation.
  • Weight Size: ≈141 MiB\approx 141 \text{ MiB}≈141 MiB.
  • Function: Upscaling →\rightarrow→ Generative Neural Rendering.

What is "Generative Neural Rendering"?

According to NVIDIA, this process re-renders a frame already produced by the engine. It injects noise to generate fine detail and modifies the skin, structure, and tone based on a specific style setting.

Input/Output Flow:

  • Inputs:
    • A low-dynamic-range (LDR) proxy of the rendered frame.
    • Three channels of Gaussian noise.
    • A reprojected version of the previous frame's output.
    • Five scalar conditioning values.
  • Outputs: Four f32\text{f32}f32 channels per pixel (consisting of an RGB residual and one temporal-blend logit).

DLSS 5 Comparison Example: WebGPU port at 2048×11522048 \times 11522048×1152 resolution.


🛠️ Build and Execution

Setup Checklist

  • Run fetch_tools.ps1 to get glslang, Vulkan-Headers, volk, CMake, and Ninja.
  • Run build.ps1 to compile shaders, PTX, and the dlss5vk.exe binary.
  • Run fetch_filament.ps1 and build_filament.ps1 to set up the demo environment.
  • Run build_demo.ps1 to generate dlss5-demo.exe.

Command Line Interface

You can interact with the tool using the following commands:

# Benchmark performance
build\dlss5vk.exe bench --model <dir> --width 768 --height 768

# Profile per-dispatch timings
build\dlss5vk.exe profile --model <dir> --width 768 --height 768

# Verify bit-exactness against a fixture
build\dlss5vk.exe parity --model <dir> --fixture <dir>

# Bisect kernels for block-0
build\dlss5vk.exe verify --model <dir> --fixture <dir>

The demo application can be launched via double-click, loading scenes from build\scenes or via a glTF command-line argument.


📈 Performance Metrics

Tested on an RTX 4070 SUPER (minimum values over 40 frames).

ResolutionExecution Time
768×768768 \times 768768×7682.8 ms
1920×10801920 \times 10801920×10807.8 ms
2560×14402560 \times 14402560×144012.6 ms
3840×21603840 \times 21603840×216029.3 ms

Note: Medians are slightly higher due to the GPU alternating between two clock states.


📂 Project Structure

ComponentLocationDetails
Hostsrc/C++20 logic: Vulkan context, weight re-layout, and CPU reference.
GLSL Kernelsshaders/Reference path: FP8 GEMMs, QKV window attention, and expert MLP.
PTX Kernelsscripts/ptx/Fast path: mma.sync E4M3, cp.async rings, and split-K GEMMs.
Demodemo/Integrated with Filament (Apache-2.0) and ImGui.
WebGPU Portports/browser-webgpu/Browser-based, bit-exact implementation without hardware acceleration.

📋 Requirements

Hardware & Software

  • OS: Windows.
  • GPU: NVIDIA Ada Lovelace or newer.
  • Vulkan Extensions:
    • VK_KHR_cooperative_matrix
    • VK_NV_cooperative_matrix2
    • VK_EXT_shader_float8
    • VK_NV_cuda_kernel_launch
  • Toolchain:
    • Visual Studio 2022+ (C++ x64 toolset).
    • Python 3 (for PTX generation).
    • Node.js + npm & Pillow (for scene conversion).
    • Git.

Tooling

The tools/ directory (git-ignored) manages:

  • glslang 16.6.0
  • Vulkan-Headers v1.4.363
  • CMake 3.31 & Ninja 1.13