Lecture 14 Practical Industrial Solutions

Temporal Anti-Aliasing, TAA

Recall: why aliasing

  • 光栅化的采样数不够
  • 终极解决方案:加样本(MSAA)

TAA:应用Temporal信息,与RTRT的降噪思路一致

每四帧复用:

TAA

(如果不是4个固定位置而是是随机生成,引入了其他高频信息,效果并不好)

Notes on AA

  • MSAA vs SSAA
    • SSAA:按几倍分辨率渲染场景,再下变换,效果好开销大
    • MSAA:对SSAA的效率改进
      • 对一个像素内的一个Primitive,只采样一次(取中心或其他代表点) MSAA1
      • 空间上的Sample Reuse:样本分布上的Trick MSAA2
  • 基于图像的反走样方法
    • SMAA, Enhanced Subpixel Morphological AA
    • FXAA -> MLAA(Morphological AA) -> SMAA ImageBasedAA
  • G-Buffer一定不能反走样!(信息会出错)

Temporal Super Resolution

Super resolution == Super sampling

  • 提升分辨率
  • eg. DLSS
    • DLSS 1.0 全靠猜,每个游戏/场景单独训练一个网络
    • DLSS 2.0 利用Temporal信息
      • 应用类似TAA的思路
      • 重用Samples
      • 问题:Temporal failure时不能clamp——因为每一个像素需要一个明确的值
      • DL不输出图像,而是输出关于上一帧的Temporal信息如何利用

Deferred Shading 延迟渲染

  • 提高Shading效率
  • 传统管线
    • Triangles -> Fragments -> Depth Test -> Shading -> Pixel
    • 每一个Fragment都需要做Shading
    • 复杂度:\(O(\text{\#Fragment}*\text{\#Light})\)
  • 关键想法:有很多Fragment不会被看到 -> 只对被看到的Fragment做Shading
  • 修改管线
    • 光栅化两次场景
    • Pass 1 : 不做Shading,更新Depth Buffer
    • Pass 2 : 对可见的Fragment做Shading
    • 复杂度:\(O(\text{\#Vis.Fragment}*\text{\#Light})\)
    • 问题:难以做AA,可以用TAA/图像AA
  • 【疑惑:延迟渲染更广义地应该是指两次光栅化,一次记录G-Buffer,一次着色的渲染方式?这里闫老师只讲了深度Buffer的应用。】

Tiled Shading

  • 在Deferred Shading基础上,考虑减少光源的复杂度
  • 把屏幕分成Tile 减少了每一个Tile中光源的数量:光源强度距离平方衰减(设定半径范围内有效)
  • 复杂度:\(O(\text{\#Vis.Fragment}*\text{avg(\#Light per tile)})\)

TiledShading

Clustered Shading

  • 在Tiled Shading基础上,把空间分成网格
  • 进一步减少了需要计算的光源数量
  • 复杂度:\(O(\text{\#Vis.Fragment}*\text{avg(\#Light per cluster)})\)

ClusteredShading

LoD, Level of Detail Solutions

  • 在工业界,也称这种思路为“Cascaded”
  • eg. Cascaded Shadow Maps 离Camera越远的,用更粗糙的Shadow Map CSM
  • eg. Cascaded LPV 传播越远,用更粗的格子传播 CascadedLPV
  • Geometric LoD
  • 困难:过渡的Blending,可以用TAA
  • eg. Nanite in UE5

Global Illumination Solutions

  • SSR的问题(参考相关章节)
  • 用Ray Tracing解决
    • 软件Tracing
      • SDF Trace, HQ for individual obj, SQ for global
      • RSM 方向性/点光源
      • 空间网格中存储Irradiance的Probe(DDGI, Dynamic Diffuse GI)
    • 硬件Tracing
      • 用简化模型Tracing
      • RTXGI
    • eg. Lumen in UE5:加粗条

More Topics

  • Texturing an SDF
  • 透明材质,透明材质的渲染顺序
  • Particle Rendering
  • Post Processing
  • 随机数/蓝噪声
  • Foveated Rendering
  • Probe based GI (DDGI/RTXGI…)
  • ReSTIR, Neural Radiance Caching …
  • 多光源理论,Light Cuts
  • Participating Media, SSSSS
  • Hair