Origin
zhuanlan.zhihu.com
Tags
简悦
项目
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述

一、环境光遮蔽 AO

notion image
由于遮挡导致的光照衰减:
notion image
输出 AO 贴图:
notion image

1. SSAO:

屏幕后处理 SSAO(当年项目中用过,然后 FPS 直线下降。。。这也是我觉得前向渲染不太行的主要原因之一。人家延迟渲染直接拿 G-Buffer 的数据就行了。前向渲染还得巴拉巴拉的构建 View)
notion image
notion image

2. HBAO:

notion image

3. GTAO:

notion image
notion image

4. Ray-Tracing AO

notion image

二、雾效

notion image

1. Depth Fog

最简单的雾:
notion image

2. Height Fog

notion image

3. Volumetric Fog

基于体素的体积雾!!!
把相机的整个空间进行体素化,密度是不均匀的,是根据近平面和远平面进行划分的。然后进行 Ray-Marching 计算。(渲染计算跟上一节的云计算一样的原理)
预计算出的 3D 纹理数据,比率要和屏幕相同,例如都是 16:9 的比率。
notion image

三、抗锯齿

1. Anti-aliasing

notion image

2. SSAA & MSAA

SSAA:尺寸翻倍进行超采样,然后降。现在没人这么奢侈的用超采样。
MSAA:对一个点进行 4 倍采样,如果 4 个 subsamp 都落在同一个就只 shading 一次,如果不是就按照权重进行 shading。
notion image

3. FXAA

快速近似抗锯齿:当前主流抗锯齿技术。
notion image
通过一个核进行卷积操作,就能拿到边缘:
notion image
核心精妙算法:
notion image
notion image
notion image

4. TAA

拿到过去帧,然后进行加权平均。 核心思想是拿时序上的数据和当前帧进行运算
notion image

四、后处理

notion image

1. Bloom:

原理很简单:拿到亮度区域,填充到一个纹理中,然后对这个纹理进行高斯模糊,然后把这个模糊的纹理和原来的区域合并即可。
notion image
notion image
对图像纹理进行降采样,在最低的一阶进行模糊,然后放大。
模糊操作时降采样是个很有用的操作。
notion image
notion image

2. Tone Mapping:

平衡画面内的光暗强度。主要应用在 HDR 标准中,将 HDR 映射到 SDR 标准中,让暗处不发黑有细节,让亮处不曝光过渡。
notion image
ACES 懂的都懂:
notion image
notion image

3. Color Grading (率镜效果)

95% 的工作都在美术同学上。。。
notion image
notion image
notion image

五、渲染管线

渲染管道是所有渲染操作执行和资源分配的管理顺序
notion image

1. Forward Rendering

天空离我们最远,所以最后绘制。
notion image
需要严格保证渲染顺序,先绘制远的透明物体,然后是近处的。
notion image

2. Deferred Rendering:

notion image
最大的缺点是显存占用高带宽高:
G-Buffer Size:19201080, 32bit192010804 = 63MB
G-Buffer Size:19201080, 32bit192010804 = 63MB
G-Buffer Size:19201080, 32bit192010804 = 63MB
notion image

3. Forward+:

前向渲染,但是按照 Tile 一个一个渲染。对移动端很友好。
notion image

4. Tile-based Rendering:

notion image
notion image

5. Visibility Buffer:

延迟渲染就是把材质信息写到 G-Buffer 里了。但是现在大家意识到可以把几何信息和材质信息剥离开,在一个新的 V-Buffer 里,填写对应像素属于哪个几何体也就是 PrimID 以及 TriangleID。
可以反向查出来这个点对应的材质和法线粗糙度等等信息。
所以只要一个存储了几何信息的 Buffer,就能直接进行 Shading。
notion image

六、Frame Graph

七、V-Sync & G-Sync

notion image
notion image
notion image

八、Piccolo

九、Q&A

Q:在开放世界中 cluster 怎么划分呢?
A:按照相机的视锥来划分。
Q:TAA 怎么去除鬼影?
A:手动跳过差异性过大的帧。

▎本文由 简悦 SimpRead 转码。