DLSS 5 Neural Rendering — model reconstruction

A PyTorch reconstruction of NVIDIA's DLSS 5 Neural Rendering (NR) model, recovered by static analysis of the unmodified, signature-verified runtime nvngx_dlssnr.dll 310.8.0.0 as shipped with NBA 2K27: the weight-container format and its parser, the 71-block Swin/ViT structure, the per-family tensor unpackers, numerical references for the FFN, ViT block, temporal pre/post stages and procedural noise, and the documents that explain each of them. No NVIDIA binary was patched; addresses in the documents are RVAs relative to image base 0x180000000, given as evidence rather than as anything to call.

No NVIDIA weights, GPU code or binaries are in this repository, and no experiment data. To use the readers you need your own copy of nvngx_dlssnr.dll 310.8.0.0 (SHA-256 e16bcf15e16e13f527491cdf7845b2fe6521a738d8f7c9c721866a8496e1fc8e). Extract PE resource 10/WEIGHTS_HT/1033 (147,695,410 bytes starting at file offset 18,129,248, SHA-256 836f445d06ecd2e59bb9f17b84b91c143396fd76ccda1c9dc7fe81d5edd548f4) to sdk-private/nr-model-inspection/weights_ht.bin inside a workspace laid out like the one the scripts expect (scripts/, sdk-private/, reports/), then run the unpack scripts in the order given in docs/nr-reverse-engineering.md.

Weight identifier of the analysed model (from the runtime's own inference log):

CC_Control_History_Blend_Quantize_With_Teacher_honest_tench_2026_07_04_22_30_weights

Contents

Folder Files Size
docs/ 6 0.1 MiB
model/ 2 0.1 MiB
tools/ 26 0.2 MiB

Total: 34 files. Every file's SHA-256 is in MANIFEST.json.

  • tools/nr_weight_format.py (container parser), nr_unpack_vit.py, nr_unpack_vit_remaining.py, nr_unpack_swin512.py, nr_unpack_fused_swin.py, nr_export_recovered.py (merged 851-tensor export with byte-exact repack check), nr_torch_inspect.py, nr_ffn_reference.py / nr_vit_reference.py / nr_temporal_reference.py / nr_noise_reference.py (numerical and differentiable references), nr_ffn_compare.py and nr_cuda_driver.py (native kernel comparison through the CUDA Driver API), extract_nr_ptx.py, the CPU unit tests, and the nr_workbench.ipynb walkthrough (outputs cleared).
  • docs/ — reverse engineering, numerical validation, temporal reconstruction, texture/noise contract, model access, and the Streamline NR options ABI. Links into the private workspace's report folders have been reduced to plain text.
  • model/ — the decoded 153-record container inventory and the native block-family listing.

What is and is not established

  • Architecture: 71 numbered blocks, a hierarchical Swin/ViT encoder–decoder with skips (C32 → C64 → C128 → C256 → split-Swin C512 → ViT-1D C1024, then back up), fused pre/post blocks. Structural reconstruction from the native descriptor builder, not a verified forward pass.
  • Container: a little-endian length-prefixed map of 153 named packed records (147,683,778 payload bytes); the runtime copies payload bytes directly, with no encryption or compression on the weight path. device_code is a device, not a dtype, and flat dimensions do not give logical matrix shapes.
  • Numerics: the ViT FFN-expansion operator (cc_vit_1d_ffn_expand_fp8) matches the original NVIDIA kernel byte for byte in 24 comparisons / 4,751,360 FP8 outputs (blocks 31 and 38). The recovered math is Y = z * (229/256 + c*(229/512 - (229/4096)*|c|)), c = clamp(z, -4, 4), with 32-channel half accumulation. No other operator has been compared.
  • Temporal envelope: 16-channel pre-block input (noise, current RGB, reprojected history, style, tone, structure, semantic controls), RGBA16F recurrent surface dlssnr_prev_output, residual output clamp(current + net/4) with a learned temporal gate. Recovered statically; not numerically validated.
  • Not established: a full forward pass; attention parity (the native attention is a clamped half-bit weighting, not softmax); texture-sampling and Gaussian-noise byte parity; UI composition; anything about training. The deployed values are NVIDIA's quantised weights, not a pre-quantisation checkpoint, and cannot be loaded into the runtime in place of the embedded resource.

Environment

Official PyTorch 2.14.0+cpu for parsing, references and tests. The native comparison drives the NVIDIA CUDA Driver API directly on a Blackwell GPU (sm_120) and keeps PyTorch on the CPU.

Licence

The code and documents here are ours. NVIDIA's model, runtime and GPU code remain NVIDIA's property and are not licensed by this repository. A licence for our own files has not been chosen yet.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support