文章摘要
4倍MSAA通过在像素内设置4个采样点实现抗锯齿。光栅化时单独检测每个采样点的覆盖情况,深度/模板数据需4倍存储,但颜色数据通常只需存一份(边缘像素例外)。像素着色器一般执行一次,结果分配给被覆盖的采样点,最后混合采样点颜色得到平滑边缘。关键点在于区分"像素"与"采样点"概念,避免将4个采样点误解为4个像素,颜色存储也非固定4倍。这种机制以较低成本显著提升图形边缘质量。
1. 采样点与存储代价
- 每个像素内部有4个采样点,所以深度(Z值)和模板(Stencil)确实是4倍存储代价。
- 颜色数据:实际存储上,只有在边缘像素(即三角形边界穿过的像素)才可能为每个采样点存不同的颜色。大多数像素(完全在三角形内或外)只需要一份颜色数据。
2. 采样点的作用
- 这4个采样点在像素内部有不同的位置(比如正方形四角、对角线等)。
- 光栅化时,分别对每个采样点做覆盖测试,判断它是否被三角形覆盖。
- 这样可以更精细地判断边缘像素的“覆盖比例”,从而实现抗锯齿。
3. 像素着色器执行
- 像素着色器(Fragment Shader)通常只执