渲染管道(4)像素阶段“Alpha混合”

1. Alpha混合 (Alpha Blending)

GPU会取出源颜色和目标颜色,将两种颜色进行混合,可以根据片段的alpha值进行混合,用来产生半透明的效果。

  • OpenGL可以通过glEnable(GL_BLEND)来开启混合
    在这里插入图片描述

1.1 混合方程

源颜色:该片元在片元着色器计算后得到的颜色
目标颜色:已经存在颜色缓冲中的颜色
在这里插入图片描述
其中,四个变量分别表示源颜色、源因子值、目标颜色和目标因子值。方程常常与透明通道(alpha 通道)相关。

eg.

  • 通过glBlendFuncSeparate()、glBlendFunc()和glBlendEquation()来设置各种混合效果
  • 根据透明通道的值进行 相加、相减、相乘等操作。eg. GL_ZERO、GL_ONE、GL_SRC_ALPHA、GL_FUNC_ADD等。

在这里插入图片描述

1.2 渲染顺序

step1. 先渲染不透明物体,渲染顺序为从前往后(Front-to-Back);(为了减少深度颜色缓冲器的写入操作,提升性能)

step2. 渲染半透明物体,渲染顺序为从后往前(Back-to-Front)。(透过半透明物体看到半透明物体背后的东西,所以对半透明物体进行渲染时需要后面图层的信息,才能够正确进行混合)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/thefist11cc/article/details/124162541