来源:SIGGRAPH 2026《Advances in Real-Time Rendering in Games》course — Upgrading PSSR on PS5 Pro(Daniel Craig, Sony Interactive Entertainment)
面向读者: 图形程序员
PS5 Pro 首发的 PSSR 把整个 TAAU 塞进了一张神经网络:模型直接吐颜色,history rejection、rectification、blending 全部隐式学。它成了 —— 约百款游戏落地,60fps 档跑出了 30fps 档的画质。
然后升级版把这个决定推翻了一半:能用闭式解的地方全部还给 GPU,模型只留下决策。画质、GPU 时间、显存、训练时长四项同时改善。
值得看的不是结论,是理由 —— 「全交给 ML」输给「只让 ML 做决策」,输在梯度路径上,不在模型容量上。
目录
- ML 该接管 TAA 的哪一块
- 高倍率下,输入正在变成噪声
- Launch PSSR:成功的产品,四笔技术债
- 架构反转:把数学还给 GPU
- 梯度流:KPN 赢在结构,不在容量
- 输入侧:Color Distance
- 输出侧:Kernel Reach 与各向异性高斯
- 结果与代价
- 能带走什么,带不走什么
- 参考链接
一、ML 该接管 TAA 的哪一块
演讲开场给了一条重建算法的谱系:经典滤波(Lanczos / Bicubic)→ 越来越多利用空间信息(FXAA / MLAA / SMAA / FSR1)→ 各种整合时域信息的手段(TAAU / Checkerboard / TSR)。ML 被放在这条线的末端,是延续而不是另起炉灶。
顺着这条线,TAA 被拆成三个逻辑阶段:
- Reproject / Resample —— 用 MV 和 Z 重投影上一帧,从输入色中去 jitter
- Validate / Rectify —— 拒绝或修正无效的 history
- Accumulate / Blend —— 时域与空域混合
关键判断在这里:三步里绝大部分只是 resampling 和 filtering,GPU 干这些又快又准;真正困难的只有中间那一小块 —— history rejection 与 rectification,Yang 等人的 TAA 综述称之为 ill-posed。
手调启发式确实撑起了很多款游戏,但它依赖的前提正在瓦解。这一节把「哪里该上 ML」精确圈到了三阶段的中间那块决策上 —— 后面的架构回退,就是照着这条线切的。
二、高倍率下,输入正在变成噪声
两个方向同时在恶化。
分辨率维度:3x upscale 意味着 720p → 2160p,空间像素差 9 倍。单帧内的高频内容已经难以与噪声区分。TAAU 当初根本不是为 3x 设计的。
管线维度:jitter、stochastic alpha 本来就是 TAA 要收拾的;更麻烦的是越来越多原本放在 TAA 之后的效果,为了省 GPU 时间被挪到了 TAA 之前,进一步污染输入。
作者给了一个概念叫 temporal incidence rate:上采样倍率越高,同一处细节的相关信息出现的频率越低。所需细节被摊到非连续的多帧上,pre-upscale 的效果又把它们推得更远。规律没有消失,只是变得极其复杂,而且必须同时在空间和时间两个维度上 scale。
这个重新定义很关键 —— 「画面糊、边缘抖」被从「空间分辨率不够」改述成了一个时域问题:信息不是不够,是散得太开、隔得太远。它直接指向第五节的梯度流。
三、Launch PSSR:成功的产品,四笔技术债
立项在五年前,当时连 PC 侧方案都还很早期。没有去适配现成硬件,而是为这个模型专门设计了硬件架构和指令集。
兑现的承诺:PS5 基础机型 quality mode(30fps)的画质,跑在 performance mode(60fps)的速度上 —— 约 2 倍性能,画质持平或更好。约 100 款游戏落地。
模型形态是多分辨率 CNN(U-Net):4K → 1080p → 540p 逐级下采样,输入侧是 encoder,最低层是 bottleneck,输出侧是 decoder。它被称作 CPN(Color Predicting Network):直接输出颜色,等于一口吞掉了 TAA 三阶段里的后两块。
留下的粗糙边缘有四处:RTGI 这类低频光照更新的时域稳定性;2.5x–3x 高倍率下的锐度(2.5x 的实际出现频率远超预期);HDR 颜色表达;以及约 4 GPU 月的训练时长 —— 最后这条严重拖慢迭代。
Freedom Became Debt
这个复盘框架比结论本身更值钱:给一个 runtime 尺寸的小模型过大的优化自由度,事后看是负债 —— 因为其中好几件事,根本不适合它的指令集。
| # | 债 | 具体表现 |
|---|---|---|
| 1 | Quantization | 输入输出是 11:11:10 float,模型跑 8-bit → 模型被迫自己学一套多通道 HDR 编码。副作用:大部分训练必须在量化下进行;高对比边缘偶发 color fringing |
| 2 | Storage / Recall | 工作过程中模型要在 8-bit 寄存器里隐式存储并复现 HDR frame buffer。无论走寄存器还是走可逆编码,都是对资源的浪费 |
| 3 | Learning Classical Math | 模型要用受限指令集隐式学会 accumulate/blend 的全部数学:rejection、rectification、blending、anti-aliasing、firefly rejection。它学得会,但值不值得是另一回事 |
| 4 | Gradients | 纯数学问题,同时拖累模型和 trainer |
前三笔债是同一件事:让 ML 去干 GPU 本来就擅长的活。第四笔性质不同 —— 它是网络结构本身挡住了学习信号,❗ 加大模型解决不了它。
四、架构反转:把数学还给 GPU
外部对照先摆清楚:PC 端 ML 超分这几年质量在涨,成本也在同步涨。主机上这条路走不通,关键指标必须是 quality per cost。
落地形态是 Project Amethyst(与 AMD 的研究合作)之上的 PlayStation 定制实现,两种用法:直接调用新库拿到最佳画质与性能;或者走系统级 override,已发售游戏不用打补丁就地升级 —— 这是平台方独有的分发杠杆。
架构上,升级版主动往回走了一部分:能用闭式解的地方就用闭式解,让模型把注意力集中在模式检测与决策上。理由很直接 —— GPU 指令集跑闭式数学高效,ML 指令集是为模式检测造的,各用所长。结果是 TAA 的三块逻辑结构基本被恢复了,模型只占中间那块。
flowchart LR IN[Inputs] --> RP[Reproject / Resample] RP --> M[Model] IN -- 绕过 Model 的直连 --> AB[Accumulate / Blend] M -- Blend Weights --> AB AB -- Recurrent State --> RP AB --> OUT[Outputs] --> PP[Post Process]
两个结构要点:
Reproject / Resample 在 Model 之前,不是 blend 时才做的事。 它做的就是标准 TAA 那套:采 MV、算上一帧 UV、用抗模糊滤波器重采样、处理出屏与 disocclusion。这是硬约束 —— 第六节的 Color Distance 需要对齐后的 history 才能算,Model 前面没有 reproject,这个输入通道就不存在。Act I 里说「TAA 大部分步骤只是 resampling 和 filtering」的那部分,升级版原样留在了闭式解一侧。
循环状态与输出是两个不同的东西。 Accumulate / Blend 一路输出 Recurrent State 给下一帧,一路输出 Outputs 给 post process。
五、梯度流:KPN 赢在结构,不在容量
核心改动一句话:把「预测颜色」换成「预测怎么混合颜色」。模型不再输出像素值,而是输出混合权重(kernel),混合动作由 shader 显式执行。
| 维度 | CPN(Launch) | KPN(Upgraded) |
|---|---|---|
| 模型输出 | 直接输出 RGB 颜色 | 输出 blend weights |
| Blend 执行者 | 隐含在模型内部 | Shader 显式执行 |
| 8-bit 适配 | 必须自学 HDR 多通道编码 | 权重天然适合 8-bit |
| Encoder/Decoder 负担 | 大量算力花在存储与搬运颜色 | 算力回归模式检测本职 |
这一个改动就拆掉了量化债、存储债和数学债。而它真正的杀招是第四笔 —— 梯度。
问题:梯度是路径上每个 op 局部项的乘积
梯度从 loss 走到参数,每经过一个 op 就被局部雅可比缩小一次。在 CPN 里,第 N 帧的历史要串行穿过模型 N 次,衰减累积成 vanishing gradient,模型被系统性地偏向短程关联。Residual / skip connection 只能缓解,消不掉。
这就是为什么 Launch PSSR 能处理少数几帧、明显好过 TAAU,但再往远就完全吃力。
解法:把显式 blend 加回来,并让它重新连回输入
因为 blend 是一个加权和,对 history color 的梯度就是一次乘法。
上:CPN 中颜色的每一步都由模型中介,梯度回传必须逐帧穿透整个网络。下:KPN 把混合改成显式加权和,模型退到旁路只产出权重,颜色路径上留下一条不含网络层的直通梯度路径。
逐像素标量视角下的推导
记号: 是第 t 帧输出(同时是下一帧 history 的来源), 是重投影后的历史, 是空间滤波后的当前输入, 是模型输出的时域门, 是模型参数。
CPN:唯一路径就是模型
是整个网络的雅可比 —— 每一层局部项的连乘。梯度从第 T 帧传回第 t 帧要走:
每一个因子都是一次完整的网络反传。 的谱半径几乎必然小于 1(否则训练会爆),N 次连乘必然指数衰减。加大模型只会让每次穿透的链条更长、衰减更狠 —— ❗ 这是结构问题,不是容量问题。
KPN:雅可比裂成两项
对 求导时注意 本身也依赖 ,链式法则要展开:
第二项确实穿过模型;但第一项 是个纯标量,路径上没有任何网络层。跨 N 帧连乘时把括号展开:
展开式里存在一条纯标量路径。只要模型在信任历史( 小),,这条路径的梯度几乎不衰减。CPN 里根本不存在这个直通项 —— 对 的依赖百分之百由网络中介,展开式每一项都带 。
所以准确的说法不是「梯度不碰模型」(权重那一路显然要过模型),而是:跨帧的时域信用分配路径上不含网络雅可比;模型只在每帧的门控产生路径上被求导一次。
这个结构就是 GRU
作者点破了一件事:这个 gating 结构在 ML 术语里就是一个 GRU。
- Vanilla RNN: → 是矩阵连乘 → 梯度消失。≈ CPN
- GRU: → 存在加性直通路径(LSTM 论文里的 constant error carousel)→ 梯度存活。≈ KPN
一个从图形工程直觉出发的修复,恰好落在 1997 年 LSTM 解决梯度消失所用的同一个机制上。
参数分布:架构改动的量化证据
| 层级 | CPN | KPN |
|---|---|---|
| 4K | ~20% | ~0.3% |
| 1080p | ~50% | ~10% |
| 540p | ~30% | ~30% |
| 新增更低层 | — | ~60% |
| 540p 及以下合计 | ~30% | ~90% |
CPN 的容量被迫堆在高分辨率层去做搬运和编解码;KPN 卸掉这些负担后,九成参数下沉到 540p 及以下,才真正花在「大范围模式检测」这个本职工作上。4K 层从 20% 掉到 0.3%,这一层现在基本只负责把结果铺开。
六、输入侧:Color Distance
CPN 必须拿到完整颜色才能重建颜色;KPN 只输出权重,输入可以更灵活。
先试的是「只喂 luma」—— ghosting 严重,光靠亮度不足以判断 history 有没有失效。
最终方案是把颜色从绝对量改成相对量:luma 直接传入,chroma 传距离 —— 当前输入与 history 在 (Cb, Cr) 上的欧氏距离。
模型因此获得了「颜色变了没有」的感知,却不需要知道「颜色是什么」。训练收敛更好、与最终画质相关性更强、泛化更好,同时规避了训练集的绝对颜色偏见(“particles are orange”、“sky is blue”)。
这是个很值得抄的设计思路:传相对量而非绝对量,既给了模型判据,又切断了它记住训练集捷径的路。泛化能力在这里是设计出来的,不是靠数据堆出来的。
❓ 等亮度异色边界(例如同亮度的红绿交界)上 ΔCbCr 的行为,演讲没有讨论。
七、输出侧:Kernel Reach 与各向异性高斯
改成输出权重之后,最直接的形态是每个输出像素吐 9 个 tap 权重(3×3)。这一版能训练,也确实优于 CPN,但有两个问题。
输出相关性:9 个权重彼此高度相关,高倍率下泛化差 —— 说明存在更精简、能随输入 scale 的表示。
Kernel Reach(更致命):canonical kernel 是在输出分辨率上应用的。倍率越高,它覆盖到的输入像素越少。3x 时,一个 3×3 的输出域窗口在输入空间只对应 1×1 个输入像素 —— 9 个 tap 采的是同一格,等于什么也没混合。
左:输出空间的固定核在 3x 下退化,9 个 tap 落进同一个输入像素。右:核改到输入空间求值,永远覆盖 9 个不同的采样,并沿局部边缘方向拉伸;虚线椭圆是相邻输出像素拿到的另一组核参数。
解法是回到经典的椭圆滤波(elliptical filter),改用各向异性高斯,把 9 个输出压缩成 3 个,并且解相关、落进一个连贯的特征空间。二维高斯的协方差矩阵对称,独立自由度正好是 3,和「9 → 3」对得上。❓ 具体参数化 —— 逆协方差的三个元素,还是方向加长短轴 —— 演讲没有给。
三重收益:
| 收益 | 说明 |
|---|---|
| 沿边缘混合 | 椭圆核可以沿有向边缘拉伸,由局部特征的强度和方向驱动,对构建并保留细节特别有效 |
| 尺度不变 | 核在输入空间应用,永远拿到 9 个不同的输入采样。1x 和 3x 都在做真正的混合,reach 随输入分辨率缩放 —— 高倍率细节增益的主要来源 |
| 保留艺术意图 | 高斯权重天然非负,归一化后构成 partition of unity,输出在数学上不可能超出 9 个输入采样的凸包,因此模型可证明是重建式而非生成式 |
最后这条别只当技术细节看。ML 超分要过制作团队那一关,「它不会编造原始输入里没有的东西」是一句能落到纸面上的承诺,比任何画质对比都管用。而且早期担心的质量代价并没有出现。
八、结果与代价
| 指标 | Launch PSSR | Upgraded PSSR |
|---|---|---|
| 画质 | 基准 | 全输入分辨率提升,低分辨率尤其明显 |
| 时间稳定性 | RTGI 等低频光照会闪 | 明显改善 |
| GPU 时间 | 基准 | 下降 |
| 显存 | 基准 | 下降 |
| 训练时间 | ~4 GPU 月 | < 1 GPU 周 |
训练时间是全篇唯一量化到倍率的指标(约 16 倍),作者明确归因于量化改动 —— KPN 让模型不必再在 8-bit 里编解码 HDR,训练可以脱离量化约束进行。
顺带解决的还有 color fringing:它本来就源自那套 8-bit HDR 编码,量化债一消,它跟着消失。
对比场景集中在四类:高频细节区、细天线与线状物(锐度 + fringing)、植被配闪烁光照(时域稳定)、霓虹灯(脉动 vs 稳定)。
⚠️ 除训练时间外,演讲全程没有给出任何绝对数值 —— 没有 ms,没有 MB,没有 PSNR/SSIM,只给方向。这是主机厂商公开演讲的惯例,但也意味着「降低多少」无法横向对比。对比素材也全部是第一方 demo,作者明确说明不展示第三方素材。
九、能带走什么,带不走什么
可迁移的是判断标准和三个结构性洞见:
1. 「把全部交给 ML」是可以走回头路的,而且回头是对的。 判断依据不是「ML 能不能做」,而是「这件事适不适合它的指令集」。三段式 TAA 里只有中间那块是 ill-posed 的,其余都是 GPU 的主场。
2. KPN 优于 CPN 的根本原因是梯度路径,不是表达能力。 输出权重而非颜色,让 blend 成为显式加权和,history color 的梯度退化为一次乘法,学习信号绕过模型直达上一帧。任何带时域循环的 ML 组件 —— 超分、降噪、时域滤波 —— 都适用这条:先看梯度要穿几层,再考虑加不加参数。
3. Kernel Reach 是高倍率重建里被长期忽视的陷阱。 在输出分辨率上应用固定尺寸核,其输入空间覆盖随倍率衰减,3x 时形同虚设。这个坑跟 ML 无关 —— 任何在输出分辨率上做邻域滤波的高倍率上采样都会踩到。
带不走的是硬件。指令集是为这个模型定制的,8-bit runtime 和显式 blend 的执行效率都依赖专用硬件。⚠️ 架构思想本身是平台无关的,但性能收益里有多大比例来自定制硬件,演讲完全没有拆分 —— 这是移植到别的平台时最大的未知数。
想对着自家管线比一比的话,TSR 的三阶段划分和第一节是同一套骨架,history rejection 那一块正好是这里判定「该交给 ML」的位置,可以逐块对照,看手调启发式在哪几个点上做了同样的权衡。
十、参考链接
演讲直接引用的:
🔗 Learning Phrase Representations using RNN Encoder–Decoder(Cho et al., EMNLP 2014) —— GRU 原始论文,理解「显式 blend 为什么修好了梯度流」的必读项
🔗 A Survey of Temporal Antialiasing Techniques(Yang, Liu, Salvi, Eurographics 2020) —— TAA 三阶段划分与 ill-posed 论断的出处
🔗 High-Quality Temporal Supersampling(Karis, SIGGRAPH Advances 2014) —— 现代 TAA 的奠基之作,「手调启发式」指的就是这一路
🔗 Temporal Super Resolution in Unreal Engine 5(Abadie, SIGGRAPH Advances 2021) —— 谱系里唯一的 UE 方案,最适合拿来逐块对照
🔗 Improved Spatial Upscaling through FidelityFX Super Resolution(Lottes & Garcia, SIGGRAPH Advances 2021) —— FSR1,空间侧的对照组
🔗 4K Checkerboard in Battlefield 1 and Mass Effect Andromeda(Wihlidal, GDC 2017) —— 主机端高倍率重建的前 ML 时代代表作
🔗 SIGGRAPH Advances in Real-Time Rendering in Games 课程主页 —— 历年 slides 与讲稿的集散地
值得顺藤摸下去的:
🔗 Fundamentals of Texture Mapping and Image Warping(Heckbert, 1989) —— EWA(Elliptical Weighted Average)椭圆加权平均,第七节「回归经典滤波」回归的正是这条线
Kernel-Predicting Convolutional Networks for Denoising Monte Carlo Renderings(Bako et al., SIGGRAPH 2017)—— KPN 这个名字和「输出权重而非颜色」的思想出自离线降噪领域,这次是它在实时超分上的落地
Long Short-Term Memory(Hochreiter & Schmidhuber, Neural Computation 1997)—— constant error carousel 的原始论述,第五节那条直通路径的理论源头