渲染管道(3)光栅阶段五“逐片元操作”

1. 逐片元操作(Per-Fragment Operations)/合并阶段(Output-Merger)

主要就是对片元进行测试(Test)以及合并(Merge)。

不可编程,但可通过参数高度可配置性

OpenGL称为逐片元操作(对每一个片元进行操作)
Direct X 称为输出合并

  • 渲染管线的最后一步

1.1 测试

决定每个片元的可见性。可通过参数配置来控制,涉及到很多测试。为什么要进行测试呢?因为屏幕上的一个像素可能存在多个片元进行竞争,通过测试等规则,可以决定哪个片元最终能够渲染到屏幕上

  • 裁剪测试(Scissor Test)
  • 透明度测试(Alpha Test)
  • 模板测试(Stencil Test)
  • 深度测试(Depth Test)

1.2 合并过程

step1. 没有经过测试的片段会被丢弃,不需要进行混合阶段;
step2. 经过测试的片段会进入混合阶段,可以将其转变为像素了(需要注意的是此时像素已经包含了深度信息,之前这部分信息被保存在深度缓冲里),需要把这个片元的颜色值和已经储存的颜色缓冲中的颜色进行合并,或者说混合。
step3. 一切完成之后,片元就会被送往颜色缓冲区。

1.2.1 两种合并方式

  • 完全不透明的像素:可直接进行颜色替换。
  • 透明的像素:根据不透明度(Alpha)进行混合(Blend),混合操作可配置,添加混合系数加减乘除。

猜你喜欢

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