Origin
zhuanlan.zhihu.com
Tags
简悦
项目
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述
一、环境光遮蔽 AO
由于遮挡导致的光照衰减:
输出 AO 贴图:
1. SSAO:
屏幕后处理 SSAO(当年项目中用过,然后 FPS 直线下降。。。这也是我觉得前向渲染不太行的主要原因之一。人家延迟渲染直接拿 G-Buffer 的数据就行了。前向渲染还得巴拉巴拉的构建 View)
2. HBAO:
3. GTAO:
4. Ray-Tracing AO
二、雾效
1. Depth Fog
最简单的雾:
2. Height Fog
3. Volumetric Fog
基于体素的体积雾!!!
把相机的整个空间进行体素化,密度是不均匀的,是根据近平面和远平面进行划分的。然后进行 Ray-Marching 计算。(渲染计算跟上一节的云计算一样的原理)
预计算出的 3D 纹理数据,比率要和屏幕相同,例如都是 16:9 的比率。
三、抗锯齿
1. Anti-aliasing
2. SSAA & MSAA
SSAA:尺寸翻倍进行超采样,然后降。现在没人这么奢侈的用超采样。
MSAA:对一个点进行 4 倍采样,如果 4 个 subsamp 都落在同一个就只 shading 一次,如果不是就按照权重进行 shading。
3. FXAA
快速近似抗锯齿:当前主流抗锯齿技术。
通过一个核进行卷积操作,就能拿到边缘:
核心精妙算法:
4. TAA
拿到过去帧,然后进行加权平均。 核心思想是拿时序上的数据和当前帧进行运算。
四、后处理
1. Bloom:
原理很简单:拿到亮度区域,填充到一个纹理中,然后对这个纹理进行高斯模糊,然后把这个模糊的纹理和原来的区域合并即可。
对图像纹理进行降采样,在最低的一阶进行模糊,然后放大。
模糊操作时降采样是个很有用的操作。
2. Tone Mapping:
平衡画面内的光暗强度。主要应用在 HDR 标准中,将 HDR 映射到 SDR 标准中,让暗处不发黑有细节,让亮处不曝光过渡。
ACES 懂的都懂:
3. Color Grading (率镜效果)
95% 的工作都在美术同学上。。。
五、渲染管线
渲染管道是所有渲染操作执行和资源分配的管理顺序
1. Forward Rendering
天空离我们最远,所以最后绘制。
需要严格保证渲染顺序,先绘制远的透明物体,然后是近处的。
2. Deferred Rendering:
最大的缺点是显存占用高带宽高:
G-Buffer Size:19201080, 32bit192010804 = 63MB
G-Buffer Size:19201080, 32bit192010804 = 63MB
G-Buffer Size:19201080, 32bit192010804 = 63MB
3. Forward+:
前向渲染,但是按照 Tile 一个一个渲染。对移动端很友好。
4. Tile-based Rendering:
5. Visibility Buffer:
延迟渲染就是把材质信息写到 G-Buffer 里了。但是现在大家意识到可以把几何信息和材质信息剥离开,在一个新的 V-Buffer 里,填写对应像素属于哪个几何体也就是 PrimID 以及 TriangleID。
可以反向查出来这个点对应的材质和法线粗糙度等等信息。
所以只要一个存储了几何信息的 Buffer,就能直接进行 Shading。
六、Frame Graph
略
七、V-Sync & G-Sync
八、Piccolo
略
九、Q&A
Q:在开放世界中 cluster 怎么划分呢?
A:按照相机的视锥来划分。
Q:TAA 怎么去除鬼影?
A:手动跳过差异性过大的帧。
▎本文由 简悦 SimpRead 转码。