片段着色器将覆盖栅格化产生的片段颜色



根据我的理解,片段着色器取回了栅格化的结果。但是,根据计算机图形:原理和实践(第三版),栅格化将根据各个方向的照明计算片段颜色:

for each pixel position (x, y):
closest[x, y] = ∞
for each triangle T:
   for each pixel position (x, y):
   let R be the ray through (x, y) from the eye
   let P be the intersection of R and T
   if P exists:
      sum = 0
      for each direction:
          sum += . . .
          if the distance to P is less than closest[x, y]:
             pixel[x, y] = sum
             closest[x, y] = |P − O|

因此,片段颜色像素[x,y]是在场景中的照明上计算出的。因此,此后,片段着色器将对每个碎片应用颜色,纹理等。碎片着色器或纹理中的颜色如何与栅格化计算的颜色混合?

片段着色器是您的栅格化过程的实现,描述的栅格化是由固定管道中的着色器在固定管道中完成的,灵活管道使用您提供的着色器程序。

来自OpenGL文档:片段着色器是着色器阶段,它将处理通过将therasterizated化为一组颜色和单个深度值生成的片段。

片段着色器是栅格化后的OpenGL管道阶段。对于原始覆盖的像素的每个样品,都会生成"片段"。每个片段都有Awindow空间位置,其他几个值,并且包含从上一个顶点处理阶段的所有插值每个Vertex输出值。

片段着色器的输出是一个深度值,可能的模板值(未经片段着色器未修改),而零或更多颜色值可能会在当前框架缓冲器中的缓冲液中写入。

如果未提供碎片的片段着色器,则片段中的像素将保持未修改

您的理解是正确的,阴影发生后发生。

这是栅格化和输出合并(混合)之间的可编程步骤。栅格化插值(非静电)每个vertex属性,并使用其计算的值生成一个或多个样本。

在栅格化过程中计算出的值将传递到片段着色阶段,该阶段决定如何处理它们(例如,在特定坐标处采样纹理),以产生颜色和深度。阴影后,通过设置混合方程式将通过深度/模具测试的片段与框架板中已经存在的任何内容合并(混合)。

相关内容

  • 没有找到相关文章

最新更新