gouraud-shader计算每个三角形角落的光照,并对三角形所覆盖的每个像素进行线性插值。
你如何编程这个特定的插值(在GLSL代码中)?
您是否需要自己编写代码或单手执行OpenGL插值(内部)?
答案 0 :(得分:3)
来自https://www.opengl.org/wiki/Type_Qualifier_(GLSL):
插值限定符
某些输入和输出可以使用插值限定符。这些是针对任何可以通过光栅化进行插值的值。其中包括:
插值限定符控制值在三角形或其他基元中的插值方式。有三种基本的插值限定符。
<强>平强>
该值不会被插值。赋予片段着色器的值是来自该原语的Provoking Vertex的值。
<强> noperspective 强>
该值将在窗口空间中线性插值。这通常不是你想要的,但它可以有它的用途。
<强>光滑强>
该值将以透视校正的方式进行插值。如果不存在限定符,则这是默认值。
由于smooth是默认值,OpenGL会为您插入。如果您不想进行插值,则可以使用关键字flat在着色器中定义颜色,如下所示:
flat vec3 color;