渲染管道(3)光栅阶段三“三角形遍历”

1. 三角形遍历(Triangle Traversal)/扫描转换(scan conversion)

不可编程且不可配置,GPU固定实现。

将变换到屏幕空间的图元离散化为片元的过程,输出一个片元序列。根据上一个阶段的计算结果来判断一个三角网格覆盖了哪些像素,会检查每个像素是否被一个三角形网格所覆盖。如果屏幕上某个像素点被判断为被图元覆盖,则会生成对应像素大小的片元(fragment)。并使用三角网格3个顶点的顶点信息对整个覆盖区域的像素进行插值。

在这里插入图片描述

1.1

step1. 进行逐像素检查操作, 即检查每个图元(三角形, 点, 线)覆盖了哪些像素(采样点)
step2. 对于有三角形部分重合的像素, 在重合部分生成片段(fragment)
step3. 每个三角形片段属性(片段的深度, 着色数据)均由其三个顶点插值生成
step4. 判断像素是否属于该图元, 通过设置多个采样点定位

1.2 片元

片元不一定会最终成为像素,片元也不等于像素。片元是一个状态的集合,这些状态就是由三个顶点插值而来的。这些状态包括了(但不限于)它的屏幕坐标、深度信息,以及其他从集合阶段就传输下来的顶点信息,例如法线、纹理坐标等等。

1.3 图元覆盖像素点的3种判断方式

. Standard Rasterization(判断中心点若被图元覆盖,则生成对应片元)
. Outer-conservative Rasterization(像素只要被图元挨着了,就生成对应片元)
. Inner-conservative Rasterization(像素点需要完全被图元覆盖,才生成对应片元)

因为像素点离散性质,会导致不可避免的锯齿存在,所以需要抗锯齿(Anti-aliasing)。 eg. 多重采样抗锯齿(MultiSampling Anti-Aliasing,MSAA)。

猜你喜欢

转载自blog.csdn.net/thefist11cc/article/details/124139280
今日推荐