Games101-现代计算机图形学入门-Rasterization
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
光和相机都能看到的点 = 不在阴影里的点
从光源看,记录深度
从摄像机看,计算点到light的深度并和从light看这个点的深度对比,相等则无阴影,不相等则有遮挡
问题:
只能表示点光源,硬阴影
深度比较很困难
质量取决于shadow map分辨率
可用Ray Tracing解决