Rasterization

Canonical Cube to Screen

经过之前的MVP变换,得到一个[-1,1]的平面,将该平面转化到屏幕[0,width],[0,height]上

Rasterizing Triangles into Pixels

Sampling

对每个像素点采样判断该点是否在三角形中(叉乘判断)

优化:取包围盒(接近等边的三角形)或只取三角形两条边之间的像素点(很尖的三角形)

Aliasing

  • 锯齿
  • 摩尔纹
  • 车轮效应:车轮逆转

采样速度跟不上信号变化速度

Antialiasing

  • Averaging
  • MSAA(Supersampling)

    每个像素点内设置多个采样点再平均

    DLSS(Deep Learning Super Sampling)深度学习进行插值

  • FXAA(Fast Approximate Antialiasing)

    先获得有锯齿的图,再后处理去除

  • TAA(Temporal Antialiasing)

    静态场景下,借助前面帧的信息

深度缓存-Zbuffering

Painter’s Algorithm

对每个三角形的深度排序,先画远再画进覆盖远

但也有无法排序的情况

Z-Buffer

对每个像素存最近的z值

frame buffer 存颜色

depth buffer 存深度

Shadow mapping

光和相机都能看到的点 = 不在阴影里的点

  1. 从光源看,记录深度

  2. 从摄像机看,计算点到light的深度并和从light看这个点的深度对比,相等则无阴影,不相等则有遮挡

问题:

  • 只能表示点光源,硬阴影

  • 深度比较很困难

  • 质量取决于shadow map分辨率

可用Ray Tracing解决