DLSS 2.0 — 把 4K 实时渲染的一半工作量交给神经网络
是什么
DLSS(Deep Learning Super Sampling)2.0 是 NVIDIA 把游戏画面的一半像素交给神经网络去补 的方案。日常类比:你拍快递包裹,每次拍 1080p 省时间,但相册里要的是 4K 大图——DLSS 是那个翻译员,拿过去几帧的清晰区域 + 这一帧的低清,拼出一张 4K 画面。
输入端:
- 当前帧的低分辨率渲染(比如 1080p)
- 当前帧每个像素的 运动向量(motion vector,告诉它”这个像素上一帧在哪里”)
- 上一帧的高分辨率输出
输出端:当前帧的 4K 画面。整套推理在 Tensor Core(NVIDIA RTX 显卡里的矩阵运算单元)上跑,每帧约 1.5 ms。
为什么重要
不理解 DLSS 2.0,下面这些事都说不通:
- 为什么 2020 年之后 4K 60fps 在 RTX 2070 这种中端卡上突然变得可行
- 为什么 GPU 厂商从此都在堆”AI 算力 / NPU”——这些晶体管一开始是给训练的,现在要参与每一帧渲染
- 为什么 AMD 和 Intel 在 2021-2022 紧急做出 FSR / XeSS 跟进
- 为什么云游戏、VR、Switch 2、iPhone Metal FX 都借鉴了”低分辨率渲染 + 时序重建”的模式
它是 深度学习第一次大规模进入实时渲染管线——以前 ML 是离线工具,DLSS 让它进入每帧 16 ms 的硬实时预算。
核心要点
DLSS 2.0 做对了三件事:
-
不是脑补,是搬运——网络的工作不是凭空生成细节,而是用 motion vector 把上一帧已经渲好的高分辨率像素搬到当前帧对应位置,再融合当前帧的新信息。靠时间维度换分辨率维度。
-
autoencoder 网络替代 TAA + 超分两个手工模块——传统管线里 TAA(时序抗锯齿)和 spatial upscaler(空间超分)是两段写死的启发式代码。DLSS 把它们合成一个卷积网络(U-Net 风格),用 16K 离线渲染做 ground truth 训练。
-
单一通用模型——DLSS 1.0 每个游戏单独训练一个模型,效果差。2.0 改成一个通用网络夹在驱动里,所有支持 DLSS 的游戏共享。集成成本从”和 NVIDIA 联合训练数月”降到”游戏引擎多输出一个 motion vector”。
实践案例
案例 1:性能数字
RTX 2070 跑《Control》在 4K Ultra:
| 模式 | 渲染分辨率 | GPU 帧时间 | 观感 |
|---|---|---|---|
| 原生 4K | 3840×2160 | 33 ms (≈30 fps) | 卡 |
| DLSS Quality | 2560×1440 | 22 ms (≈45 fps) | 接近原生 |
| DLSS Performance | 1920×1080 | 16 ms (≈60 fps) | 略软但可接受 |
GPU 帧时间几乎砍半,但网络推理本身只占 1.5 ms——剩下省的全是渲染像素少了带来的红利。
案例 2:网络在做什么
低分辨率当前帧 (1080p RGB) ─┐当前帧 motion vector ─┼──> [卷积 U-Net] ──> 4K 输出上一帧 4K 输出 ─┘网络输出的不是直接像素,而是融合权重——告诉硬件”这个 4K 像素,70% 来自上一帧 warp 后的位置,30% 来自当前帧的低分辨率上采样”。这种”输出权重而非输出像素”的设计避免了网络幻觉,让结果可控。
案例 3:HUD 必须放在 DLSS 之后
游戏渲染管线要改成:
3D 场景 (1080p) → DLSS → 4K 主画面 → 叠加 HUD/UI (4K 原生绘制)如果 UI 在 1080p 就画好再被 DLSS 上采样,会糊和抖。这是接入 DLSS 时引擎最常踩的坑。
案例 4:训练数据怎么来
NVIDIA 不是用真实游戏画面训练,而是:
- 用游戏引擎离线渲染 16K 超采样(每像素 64 样本)的 ground truth 帧
- 同一场景再渲染配对的 1080p 抖动序列 + motion vector
- 网络学习”从 1080p 序列重建出 16K 下采样到 4K 的画面”
损失函数包含三项:
- L1 像素差(基础保真度)
- VGG 感知损失(保持视觉结构)
- 时序稳定性损失(相邻两帧输出不能跳动)
第三项是 DLSS 区别于普通超分模型的关键——它必须视频稳定而不只是单帧好看。
踩过的坑
-
Motion vector 不准 = ghosting(残影):透明物体、粒子特效、阴影投射器很容易算错运动向量,DLSS 拿错位置的旧像素补到当前帧,就会出现”前一帧的影子飘在新位置”。引擎要专门为 DLSS 输出更精确的 motion vector pass。
-
本身跑不动的场景开 DLSS 反而更糊:低于 30 fps 的输入意味着每帧的低分辨率信息变化太大,时序累积失败,重建模糊。Performance 模式(3x 放大)不适合救已经卡的卡。
-
以为 sharpening 是网络效果:DLSS 输出后游戏通常会再过一道 sharpener(锐化滤波)。很多人看到画面”清晰”以为是网络强,实际是后处理拉了对比度。关掉 sharpener 才看得到网络真实质量。
-
没 Tensor Core 跑不了:DLSS 推理 100% 走 Tensor Core。GTX 系列、AMD、Intel 显卡完全不能用。想跨硬件用 FSR(AMD,无 ML,纯算法)或 XeSS(Intel,有 ML,开源版本退化到通用 GPU)。
-
以为是空间超分:DLSS 是时序重建,必须有连续多帧才能工作。第一帧的 DLSS 输出几乎等于普通双线性上采样,要积累 4-8 帧之后才达到稳态质量。截图工具截的”DLSS 第一帧”看着糟,是测试方法不对。
适用 vs 不适用场景
适用:
- RTX 20/30/40/50 系显卡 + 游戏引擎能输出 motion vector
- 目标分辨率 1440p 或 4K,原生渲染 1080p 起步
- 需要稳定时间序列输出(游戏、实时影视预览、VR)
不适用:
- 无 Tensor Core 硬件 → 用 FSR / XeSS
- 单帧输入超分(修旧照片、放大单图) → 用 Real-ESRGAN 这类离线超分
- 科学可视化(要求每个像素物理正确) → DLSS 偶发 ghosting 不可接受
- 本身帧率 < 30 fps → 输入信噪比太差,应该先降画质再开 DLSS
历史小故事(可跳过)
- 2018 年 8 月:图灵架构发布,Tensor Core 进入消费卡。NVIDIA 用 Final Fantasy XV demo 演示 DLSS 1.0,画面模糊。
- 2019 年:DLSS 1.0 商用,仅少数游戏支持,玩家普遍评价”开了不如不开”。NVIDIA 内部承认范式有问题:每游戏单独训模型不可扩展。
- 2020 年 3 月:DLSS 2.0 随《Control》《MechWarrior 5》发布。改成单一通用网络 + 时序累积。画质口碑反转,开始被 AAA 游戏标配。
- 2020 年 8 月:Edward Liu 在 GTC 公开本技术(即本资料)。
- 2022:DLSS 3 加 frame generation(用 optical flow 网络插中间帧)。
- 2024:DLSS 3.5 加 ray reconstruction(光线追踪去噪也并入同一网络)。
学到什么
-
时间换分辨率——DLSS 的核心 idea 不是”AI 生成”而是”把过去几帧的真实像素搬到当前位置”。理解这个,才知道为什么 motion vector 是命门。
-
网络输出权重而非像素——这是控制网络幻觉的关键设计,让 ML 进入对正确性敏感的图形管线成为可能。值得迁移到其它”ML 替换启发式管线”的场景。
-
从专用模型到通用模型是工程拐点——DLSS 1.0 → 2.0 的最大变化不是网络结构,是训练范式从”每游戏单训”变成”一个模型全适配”。这个模式在很多 ML 落地里都重演(专用 → 通用)。
-
硬件与算法互锁——没有 Tensor Core 推不动,没有 DLSS 这种杀手级应用 Tensor Core 也不会从训练卡下放到游戏卡。算法和硬件协同推进的典型样本。
延伸阅读
- 官方技术页:NVIDIA Research — DLSS 2.0
- Edward Liu GTC 2020 talk 视频:搜索 “GTC 2020 DLSS Edward Liu” 在 NVIDIA on-demand 平台
- 评测对比:Digital Foundry DLSS 2.0 deep dive(用慢动作展示 ghosting 和细节)
- 开源对照:AMD FidelityFX Super Resolution(看无 ML 的同问题方案怎么做)
关联
- burgess-2020-turing-rt —— 同代 Turing 架构白皮书,提供 DLSS 推理所需的 Tensor Core
- nerf-2020 —— 同年神经渲染另一条路线,离线为主,与 DLSS 形成对照
- 3d-gaussian-splatting —— 后续实时神经渲染的另一种途径,DLSS 偏后处理路线
- kajiya-1986-rendering-equation —— 经典渲染方程,DLSS 是它在低采样率下的”近似器”
- resnet —— DLSS 卷积 backbone 谱系上游
- attention —— 后续 DLSS 3.5 引入注意力机制思路的源头
反向链接
- 3d-gaussian-splatting —— 3D Gaussian Splatting — 用一堆 3D 模糊光斑重建场景
- attention —— Attention Is All You Need
- kajiya-1986-rendering-equation —— Kajiya 渲染方程 — 把所有渲染算法统一成一个积分方程
- nerf-2020 —— NeRF — 用一个 MLP 把整个场景”背”下来
- resnet —— ResNet — 残差连接