如何在Gouraud-shaderscript中插入颜色值?

时间:2016-09-17 14:45:18

标签: opengl glsl fragment-shader vertex-shader gouraud

gouraud-shader计算每个三角形角落的光照,并对三角形所覆盖的每个像素进行线性插值。

你如何编程这个特定的插值(在GLSL代码中)?

您是否需要自己编写代码或单手执行OpenGL插值(内部)

1 个答案:

答案 0 :(得分:3)

来自https://www.opengl.org/wiki/Type_Qualifier_(GLSL)

插值限定符

某些输入和输出可以使用插值限定符。这些是针对任何可以通过光栅化进行插值的值。其中包括:

  • 顶点着色器输出
  • 曲面细分控制着色器输入(以匹配来自的输出) VS)
  • 曲面细分评估着色器输出
  • 几何着色器输入(与TES / VS的输出匹配)和 输出
  • 片段着色器输入

插值限定符控制值在三角形或其他基元中的插值方式。有三种基本的插值限定符。

<强>平

该值不会被插值。赋予片段着色器的值是来自该原语的Provoking Vertex的值。

<强> noperspective

该值将在窗口空间中线性插值。这通常不是你想要的,但它可以有它的用途。

<强>光滑

该值将以透视校正的方式进行插值。如果不存在限定符,则这是默认值。

由于smooth是默认值,OpenGL会为您插入。如果您不想进行插值,则可以使用关键字flat在着色器中定义颜色,如下所示:

flat vec3 color;
相关问题