中EN
概念页

TSR 与抗锯齿方案

Temporal Super Resolution & Anti-Aliasing

更新于 2026-10-13 约 8 分钟UE5TSRTAA抗锯齿时间性上采样FXAAMSAA

UE5 提供四种抗锯齿:时间超分辨率 (Temporal Super Resolution, TSR,默认)、时间抗锯齿上采样 (TAAU)、快速近似抗锯齿 (FXAA) 和仅前向渲染可用的多重采样抗锯齿 (MSAA)。TSR 是与平台无关的时间性上采样器,用低内部分辨率渲染,借助历史帧累积细节输出接近原生的画面,把节省的 GPU 时间留给 Nanite 与 Lumen。

方法对比

方法类型可用渲染器特点
TSR时间性上采样桌面/主机 延迟与前向默认;低内部分辨率;抗鬼影、抗闪烁;SM5 以上全平台同质量
TAAU时间性桌面/主机,移动端延迟UE4 时代默认;每帧在不同子像素位置采样并与过去帧混合
FXAA纯空间后处理桌面/主机,移动端延迟高对比度滤波找边缘再混合;快、适合低端;保真度损失
MSAA几何边缘多重采样仅前向渲染器(桌面与移动)只处理几何边缘;对材质、纹理、半透明产生的走样无效;不受可伸缩性控制

来源:(Anti-Aliasing and Upscaling)。各方法的通用原理见 抗锯齿:MSAA 对应多重采样,FXAA 对应基于图像的边缘检测,TAA/TSR 对应时间性抗锯齿与 时间重投影。前向渲染器文档补充:多数情况下 TAA 更好,因为它同时去除几何走样和高光走样;但在 VR 中头部追踪的持续亚像素运动使 TAA 发糊,MSAA 更合适,且 MSAA 代替 TAA 约增加 25% GPU 帧时间。(Forward Shading Renderer)

第三方 DLSS 2+、FSR 2.0+、XeSS 与 TAAU、TSR 在 UE 中走同一个"时间性上采样器 (Temporal Upscaler)"接口。(Anti-Aliasing and Upscaling)

TSR 的原理

TSR 把一部分昂贵渲染计算"分摊到多帧",渲染比 UE4 TAAU 更低的内部分辨率。官方示例:原生 4K 帧时间 57.50 ms,1080p 渲染再上采样到 4K 为 33.37 ms,画质接近 4K,帧时间约减半。(Temporal Super Resolution)

TSR 由多个算法组成:(Temporal Super Resolution)

flowchart LR
    I["本帧: 低分辨率颜色+深度+速度"] --> P["视差启发式<br/>重投影+去遮挡检测"]
    H[("历史: 显示分辨率或 200%")] --> P
    R[("复活帧: 更早的持久帧")] --> P
    P --> S["着色拒绝<br/>手写卷积网络判断历史可用性"]
    F["闪烁亮度快照"] --> S
    S --> U["历史更新<br/>最贵的通道"]
    S --> A["空间抗锯齿器<br/>历史不足时 FXAA 式搜索"]
    U --> O["输出 → 运动模糊/泛光/色调映射"]
    U --> H
组件作用
历史 (History)以显示分辨率累积细节;历史更新是 TSR 最贵的通道
视差去遮挡 (Parallax Disocclusion)只依赖本帧深度和速度缓冲,找出从前景后面新露出的区域
着色拒绝 (Shading Rejection)判断本帧与历史是否匹配、复用还是拒绝;内部是"手写的卷积网络"
闪烁时间分析监测亮度振荡,对摩尔纹等闪烁放宽拒绝以稳定画面(只看亮度,省 2/3 开销)
历史复活 (Resurrection)被遮挡后又重新出现的内容可以从更早的持久帧取回,减少鬼影
空间抗锯齿器镜头切换或新物体出现、只有一帧数据时,用 FXAA 式算法遮掩走样
重投影场每像素嵌入 2×2 雅可比矩阵,使运动中的几何边缘保持锐利

这是 时间重投影 的工业级实现:重投影历史 + 拒绝/钳制无效历史 + 处理去遮挡。TSR 文档专门讨论了时间性上采样的通病——重投影时要在前一帧像素间插值,造成模糊,运动中的 1080p 输出"看起来像 540p"。Epic/Cinematic 级把历史存为显示分辨率的 200%,依据奈奎斯特-香农采样定理配合 Mitchell-Netravali 下采样核消除重投影模糊,代价是历史更新贵 4 倍。(Temporal Super Resolution)

收敛速度:分辨率 × 帧率

时间性方法的质量不仅取决于每帧分辨率,还取决于帧率。官方给出两个指标(stat tsr):(Temporal Super Resolution)

TSR feed=Wrender×Hrender×FPS\text{TSR feed} = W_{render} \times H_{render} \times \text{FPS}

TSR 1spp (ms)=1000s2×FPS\text{TSR 1spp (ms)} = \frac{1000}{s^2 \times \text{FPS}}

其中 ss 是屏幕百分比 (Screen Percentage)。例:4K、50%、60 Hz 的 feed 为 124.4 MP/s,与 1080p、100%、60 Hz 相同;50%、60 Hz 时去遮挡区域需要约 66.6 ms(4 帧)才累积到每像素 1 个样本,100% 时为 16.6 ms。(Temporal Super Resolution) 实际含义:CPU 瓶颈或垂直同步拉低帧率时,TSR 画质也会下降——这把 帧时间预算与渲染性能 与画质直接挂钩。

在管线中的位置与隐藏成本

TSR 位于景深之后,其后的运动模糊、泛光、色调映射等都运行在显示分辨率上,不再随屏幕百分比缩放;因此官方为运动模糊做了半分辨率等优化。(Temporal Super Resolution) 这与 景深、运动模糊、图像处理与后处理 中后处理链的顺序问题直接相关:后处理材质的 Blendable Location 决定它在渲染分辨率还是显示分辨率上运行。(Temporal Super Resolution)

TSR 的视差启发式只依赖深度与速度缓冲,而它们在 GPU 上完成得较早,所以可用 r.TSR.AsyncCompute 放到异步计算上;Fortnite 第 4 章在 PS5/XSX 上 TSR 有效成本 1.5 ms,关键路径 1.1 ms。(Temporal Super Resolution)

项目中的配置

  • 可伸缩性组 sg.AntiAliasingQuality(0 Low – 4 Cinematic),具体 CVar 在 BaseScalability.ini 的 [AntiAliasingQuality@N]。屏幕百分比低于 50% 的极端上采样只适合 4K 以上输出或主机动态分辨率。(Temporal Super Resolution)
  • 竞技类游戏可牺牲一点运动稳定性换锐度:Fortnite 把 r.TSR.Velocity.WeightClampingSampleCount 从 4 降到 2。(Temporal Super Resolution)
  • 闪烁调优:把 r.TSR.ShadingRejection.Flickering.FrameRateCap 设为目标帧率,用 t.MaxFPS 锁定后调 Flickering.Period。(Temporal Super Resolution)

鬼影排查与常见坑

官方的排查顺序:(Temporal Super Resolution)

  1. 先确认是不是 TSR 的问题:用 Temporal Upscaler I/O 可视化看输入是否已经有鬼影,或换其他抗锯齿方法对比;
  2. 检查运动矢量 (Motion Vector):用 VisualizeMotionBlur、VisualizeReprojection;动画化 WPO 材质需要 Previous Frame Switch 节点提供上一帧的值;实例变换运动没有自动速度向量;
  3. 平移纹理等像素动画的不透明材质会被误判为"闪烁"而产生鬼影 → 勾选材质的 Has Pixel Animation;
  4. 半透明默认不写速度,After DOF 半透明的着色拒绝更严格 → 可开启 Output Depth and Velocity,并注意 Opacity Mask Clip Value。

工具:r.TSR.Visualize 0–7、DumpGPU(r.DumpGPU.Root *TemporalSuperResolution* 连续抓 30 帧)、RenderDoc/PIX。(Temporal Super Resolution)

取舍

TSR 用"历史 + 启发式"换取约一半的 GPU 时间,是 Nanite 微多边形细节与 Lumen 预算能同时成立的前提(Lumen Epic 级的 8 ms 目标即假定 1080p 内部分辨率 + TSR,见 Lumen 全局光照与反射)。代价是:依赖正确的运动矢量、对低帧率敏感、半透明和无速度效果容易鬼影、显示分辨率上的后处理成为隐藏成本。MSAA 画面锐利但只在前向渲染器可用且不处理着色走样;FXAA 最便宜但最糊。

  1. Anti-Aliasing and Upscaling UE 5.8 文档
  2. Temporal Super Resolution UE 5.8 文档
  3. Forward Shading Renderer UE 5.8 文档

相关页面

图形学抗锯齿Antialiasing渲染本质上是采样,采样频率不足就会混叠(锯齿、闪烁的"萤火虫"、车轮倒转)。屏幕空间抗锯齿在每个像素取多个样本并加权求和:超采样最直接但最贵,MSAA 每像素只着色一次,时间抗锯齿 (TAA) 把样本分散到多帧,形态学方法 (FXAA/SMAA) 作为后处理重建边缘。没有一种方法在所有方面最好。图形学时间重投影Temporal Reprojection重投影是在新的视点和朝向下复用前几帧已计算的样本。目的一是利用时间相干把渲染开销摊到多帧(与时间抗锯齿相关),二是当前帧来不及完成时快速生成近似帧(对 VR 防止晕动尤其重要)。分为反向重投影(从上一帧收集)和正向重投影(把上一帧散布到当前帧)(RTR4 12.2 节)。图形学运动模糊Motion Blur运动模糊可看作时间域的抗锯齿:快门打开期间物体或相机的相对运动在画面上拖出模糊,没有它快速运动的物体会在帧间"跳跃"。实时做法以速度缓冲为核心,用"边收集边散布"思路:按瓦片求最大速度、扩展到邻域,再沿速度方向对每个像素采样并处理遮挡。游戏中还需考虑玩家控制下的视角,常只对物体或平移做模糊(RTR4 12.5 节)。图形学景深Depth of Field相机在给定设置下只有一段深度范围清晰,范围外的物体越远离越模糊。实时渲染默认是完美对焦的针孔相机,所以"景深"指对近景和远景做模糊。实用算法从单张图像出发,按深度算出每像素的弥散圆半径,分离近景与其余部分分别模糊再合成;"边收集边散布"和对高亮像素单独溅射散景是游戏中的常见做法(RTR4 12.4 节)。图形学图像处理与后处理Image Processing & Post-Processing后处理是在渲染出图像后再用 GPU 对其做图像处理:把离屏缓冲当纹理,用全屏 pass 让像素着色器(或计算着色器)对每个像素采样邻域并加权求和。核心技巧包括可分离滤波、利用双线性插值减少采样、降采样、以及借助深度/法线保持边缘的(联合)双边滤波(RTR4 12.1 节)。综合帧时间预算与渲染性能Frame Budget & Rendering Performance本页把 wiki 中分散在 RTR4 第 18~23 章的性能知识串成一条线:一帧的时间预算由最慢的管线阶段决定,先用毫秒帧时间度量并定位瓶颈,再按瓶颈所在位置——CPU/驱动、几何、像素、带宽/内存——选用对应手段;最后从 GPU 硬件机制(占用率、HiZ/early-z、压缩、分块架构)理解这些手段为何有效。各结论的细节与出处见所链接的概念页。游戏开发 · UE5UE5 渲染架构UE5 Rendering ArchitectureUE5 的渲染器是独立的 Renderer 模块,在渲染线程 (Rendering Thread) 上以「场景代理」镜像游戏线程的组件状态,每帧按固定顺序执行深度预通道、G-buffer 基础通道、光照、雾、半透明和后处理。现代渲染代码用渲染依赖图 (Render Dependency Graph, RDG) 声明通道与资源,由 RDG 自动排屏障、复用瞬态内存、并行录制;最终命令经 RHI 线程翻译成 D3D12/Vulkan 等图形 API 调用。默认走延迟着色 (Deferred Shading),也可切换前向着色 (Forward Shading)。游戏开发 · UE5Nanite 虚拟化几何体Nanite Virtualized GeometryNanite 是 UE5 的虚拟化几何体 (Virtualized Geometry) 系统:导入时把网格切成分层的三角形簇 (Cluster),渲染时按相机视角逐簇选择细节层次并无缝拼接,按需从磁盘流送,并在绕过传统绘制调用 (Draw Call) 的独立通道中渲染,使帧预算不再受多边形数、绘制调用和网格内存约束。游戏开发 · UE5Lumen 全局光照与反射Lumen Global Illumination & ReflectionsLumen 是 UE5 默认的全动态全局光照 (Global Illumination, GI) 与反射系统:先做屏幕空间追踪,未命中再对"Lumen 场景"做软件光追(有符号距离场)或硬件光追,命中点的光照从按网格离线放置的卡片 (Card) 构成的表面缓存 (Surface Cache) 中查询,表面缓存的直接与间接光照分摊到多帧更新,从而得到无限次漫反射弹射和全粗糙度范围的反射。游戏开发 · UE5UE5 性能分析UE5 ProfilingUE5 性能分析的基本流程是:先用 stat unit 判断瓶颈在游戏线程、渲染线程还是 GPU,再用对应的 stat 组、profilegpu/GPU 统计或 Unreal Insights 的 Timing/Memory 等视图向下钻取;渲染特性(RDG、VSM、TSR)各自提供作用域和可视化。测量时要避开会扭曲数据的设置(调试构建、异步计算、可视化模式)。游戏开发 · UE5后处理体积与效果Post Process Volumes & EffectsUE 的后处理效果(调色、色调映射、泛光、曝光、景深、运动模糊等)通过后处理体积 (Post Process Volume) 或相机设置来指定,即使关卡里没有体积,引擎也有默认的后处理设置。多个体积重叠时按优先级 (Priority) 覆盖,用混合半径 (Blend Radius) 和混合权重 (Blend Weight) 平滑过渡;Infinite Extent (Unbound) 让体积作用于整个场景。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原