Week7¶
渲染¶
图形管线¶
- GPU管线(光栅化管线)
- 光线追踪管线
工作原理:
- 顶点着色器:将顶点坐标从模型空间转换到裁剪空间
- 细分着色器:将顶点细分为更多的顶点
- 几何着色器:将顶点转换为图元
- 投影:将图元投影到屏幕空间,分为正交投影和透视投影
- 裁剪:将超出视锥体的部分裁剪掉
- 屏幕映射:将图元映射到屏幕上
- 光栅化:将图元转换为像素
- 片段着色器:计算像素的颜色
- 像素操作:深度测试、模板测试、混合等
GPU硬件¶
NVIDIA Fermi架构是NVIDIA公司推出的一种GPU架构。架构包含:
- 多处理器:每个多处理器包含多个CUDA核心
- 共享内存:每个多处理器包含共享内存
- 寄存器文件:每个多处理器包含寄存器文件
移动端硬件特殊性:
- Tile Based Rendering:先将图元渲染到Tile中,再将Tile渲染到屏幕,减少内存的访问带宽
- Dual-pass Vertex Shading:做两遍顶点着色,尽量减少不可见的顶点的计算
模型和纹理¶
模型¶
模型是由顶点和索引组成的。顶点包含位置、法线、纹理坐标等信息。索引是顶点的索引。
纹理¶
纹理是一种二维数组,包含颜色信息。纹理坐标是纹理上的坐标。
LOD(level of detail):距离越远,模型越粗略
SDF:根据与边缘距离来确定,存储每个点到图形的最近距离,即将模型划出一个表面,在模型表面外侧的点数值大于0,在模型表面内侧的点数值小于0
Nanite:虚拟化几何体、Cluster(group、VBH)、Sub-linear scaling、软光栅小三角形(VisBuffer)
光照¶
- 环境光:所有方向的光照
- 漫反射光:光线与表面法线的夹角越大,光照越弱
- 镜面反射光:光线与视线的夹角越小,光照越强
阴影¶
Shadow Map:将场景从光源视角渲染到纹理中,然后在渲染场景时,将纹理中的深度值与当前像素的深度值进行比较,判断当前像素是否在阴影中
后处理¶
- bloom:高亮部分扩散
- Gaussian Kernel:高斯核
- Tone Mapping:色调映射
- Gamma Correction:伽马校正
渲染调试¶
- 可视化:显示法线、深度、纹理坐标等信息
- 统计命令:显示帧率、三角形数量等信息