以下为个人学习笔记整理,课程官网传送门,作业传送门,会议系统传送门。
# Practical Industrial Solutions
# Temporal Anti-Aliasing(TAA)
光栅化阶段由于采样数量有限导致最终的结果出现了「Aliasing」,因此需要使用更多的样本。于是乎基于「Temporal」的采样便应运而生。
- 跨越时间线进行采样。
- 原理和 RTRT 几乎完全一样。
假设一个格子内的四个点(红、橙、黄、绿)分别表示连续四帧内针对同一个像素,采样不同位置得到的结果。那么每帧采样的结果依据时间线进行「filtering」得到的值,就等效于一口气进行了四次的采样。
# Notes on Anti-Aliasing
# Multisample「MSAA」
「MASS」把每个像素做了拆分然后计算像素内图形的覆盖率,对像素颜色深浅进行插值。
- MASS 优化:
假设一个像素拆分成四块,相当于是原来四倍的采样,那么以往的「MASS」会记录下四个点的结果留到后面进行计算。而 「MASS 优化」只保留会被渲染的点「1」(在三角形内)以及通过「1、2、3、4」四个点计算出的某个代表整个像素颜色的值。相当于少了一倍的存储和渲染。
对于边界上的采样点,可以进行复用,分别计算左右两个格子,这样相当于采样了六个点实际有八个点的效果。
# Supersampling「SSAA」
「SSAA」先对场景进行几倍分辨率的渲染,之后在压缩回原来的分辨率。
结果会很正确,但是非常的耗
# Image Based Anti-Aliasing Solution
基于图像替换的反走样解决方案:GAME101 关于 FXAA 介绍
Fast Approximate AA「FXAA」 -> Morphological AA「MLAA」-> Enhanced subpixel morphological「SMAA」
# Enhanced subpixel morphological「SMAA」
- 通过一些办法去识别图像的边界。
- 把边界处的图像处理成矢量图。
- 计算矢量边界在像素内的占比。
- 再用占比率对整个像素的颜色深度进行插值填充。
对于 G-buffer 里的锯齿,不应该做任何的反走样处理,因为这本来就是图像本身的性质。
# Temporal Super Resolution
- 超级采样:通过一些手段,增加图像的分辨率。
- 【DLSSv1.0】:拉伸画面,一些不确定的像素采用一定策略(神经网络)填充(基本全靠猜)。
- 【DLSSv2.0】:通过时间线进行采样,提高采样率来提高分辨率。
- 由于放大像素的结果需要很精确,如果放大后的结果依然很模糊,那么放大的意义就没了。
- 这会使得「DLSS」不能像「RTRT」和「SVGF」那样对于差距过大的点进行 Clamping。
- 「DLSS」神经网络内部针对不同帧的采样结果做了其他的操作(不像「RTRT」和「SVGF」那样直接做「filtering」),使其更加近似真实情况。
# Deferred Shading
回想以下光栅化过程:
顶点 > 三角形 > 片段 > 深度测试 > 着色 > 输出到屏幕
正常情况下,只有通过了深度测试的片段,才会被着色。但由于我们不能对所有片段的深度进行排序,因此最坏的情况下,可能输入的片段深度是由远及近的,那么相当于对所有的片段都进行了着色,但是实际显示在屏幕上的片段只有很少一部分。
# Key observation
我们能不能只渲染那些会被显示的片段呢?
# Modifying the rasterization process
「Deferred Shading」会对场景进行两次光栅化。
- 【pass1】:no shading,只是更新深度缓存「depth buffer」。
- 【pass2】:剩下能通过深度测试的片段,再来做 shading。
# Deferred Shading Notes
- Difficult to do anti-aliasing:由于渲染结果依赖于 G-buffer 内的深度值,而又由于 G-buffer 本身不支持 AA。因此「Deferred Shading」的 AA 操作非常困难。
- But almost completely sloved by TAA:但是可以和上一帧的结果做「TAA」或者基于图像的处理「SMAA」。
# Tiled Shading
「Tiled Shading」在「Deferred Shading」的基础上,把屏幕分成了若干个小块,然后单独做「shading」。
# Key observation
- 3D 空间内并非所有光源都能作用在任何位置,因此,切分出多个小块单独考虑光照的时候,就可以忽略掉大部分光源。
- 不用过多的处理光源的光照强度和距离平方衰减的计算。
# Clustered Shading
在「Tiled Shading」的基础上,再对深度进行划分。这样能够更少考虑光源。
# Level Of Detail Solutions(LOD)
核心思想:在不同的层级上,应用不同分辨率细节的「MIPMAP」进行显示。这种处理方式也被称为「cascaded」。
# LOD Example
- Cascaded shadow maps
- Cascaded LPV
# Global Illumination Solutions
# Software ray tracing
# Hardware ray tracing
- 用简化后的低模代替高模来进行 tracing
- Probes —— RTXGI
标注颜色的几点被用在 UE5 的 Lumen