OpenDLSS-NR es una reimplementación basada en Vulkan de la red de renderizado neuronal DLSS 5 de NVIDIA, publicada bajo la licencia MIT, que logra compatibilidad bit-exacta con la implementación propietaria original. Replica con precisión la arquitectura de Swin-Transformer/Vision-Transformer de 71 bloques utilizada en la compilación 310.8.0 de DLSS-NR, empleando activaciones FP8 (E4M3) con acumulación FP16 en GPUs de la generación Ada de NVIDIA a través de las extensiones VK_KHR_cooperative_matrix, VK_NV_cooperative_matrix2, VK_EXT_shader_float8 y VK_NV_cuda_kernel_launch. El repositorio incluye scripts de compilación que automatizan la descarga de una herramienta portátil (glslang, Vulkan-Headers, volk, CMake, Ninja) y la compilación del ejecutable dlss5vk junto con una demostración basada en Filament.

Funcionando como una red de renderizado neuronal generativa, OpenDLSS procesa los fotogramas renderizados por el motor para mejorar la calidad visual sin aumentar la resolución. El sistema recibe cuatro entradas: un proxy de rango dinámico bajo del fotograma actual, tres canales de ruido gaussiano, la salida del fotograma anterior reproyectada utilizando vectores de movimiento y cinco escalares de condicionamiento que representan parámetros como exposición, distancia de enfoque y intensidad del estilo. A partir de ellos, genera cuatro canales f32 por píxel—tres canales para los residuos de color RGB y un canal para el logit de mezcla temporal—que el motor del juego combina con el fotograma original para sintetizar la salida final. Los benchmarks de rendimiento en una RTX 4070 SUPER muestran tiempos mínimos de ejecución por fotograma de 2,8 milisegundos a una resolución de 768×768, 7,8 ms a 1920×1080, 12,6 ms a 2560×1440 y 29,3 ms a 3840×2160, medidos sobre ventanas de 40 fotogramas.

Comparación de un fotograma con el renderizado neuronal desactivado (izquierda) y activado (derecha) que muestra la mejora visual
Renderizado neuronal desactivado (izquierda) vs activado (derecha) demostrando el efecto de OpenDLSS-NR en la calidad de la imagengithub.com

Esta imagen ilustra la mejora visual lograda por la red de renderizado neuronal, que procesa los fotogramas renderizados por el motor para mejorar la calidad sin aumentar la resolución, como se describe en el artículo.

Para verificar la corrección independientemente del hardware específico de NVIDIA, el proyecto proporciona un puerto WebGPU independiente en el directorio ports/browser-webgpu que produce resultados intermedios idénticos a nivel de byte en cada capa de la red sin utilizar núcleos tensor ni precisión FP8. Como complemento, un puerto Three.js/WebGPU (three-dlss-nr) empaqueta la implementación WebGPU para una integración directa con escenas de three.js, ejecutando la arquitectura de 71 bloques como núcleos de cálculo TSL dentro de un WebGPURenderer. La validación muestra que toda la red (451 despachos de cálculo por fotograma) produce una salida idéntica a nivel de bit frente a la referencia en resoluciones que incluyen 64×64 y 512×512 al utilizar pesos sintéticos, con consistencia numérica confirmada mediante pruebas exhaustivas de las operaciones FP8, el redondeo f16 y las operaciones elemento a elemento frente a los fixtures numéricos de la referencia.

Vista dividida del escaneo de la cabeza de Lee Perry-Smith renderizado normalmente (izquierda) y a través de la red TSL (derecha) en la demostración de Three.js
Puerto Three.js/WebGPU de OpenDLSS-NR que muestra el escaneo de la cabeza con y sin la red TSL aplicadagithub.com

Esta imagen demuestra el puerto Three.js/WebGPU mencionado en el artículo, que empaqueta la implementación WebGPU para una integración directa con escenas de three.js, ejecutando la arquitectura de 71 bloques como núcleos de cálculo TSL.