2016-09-17 35 views
-1

gouraud-shader计算每个三角形拐角处的照明,并对由三角形覆盖的每个像素生成的颜色进行线性插值。如何在Gouraud-shaderscript中插入颜色值?

你会怎样编程这个特定的插值(在GLSL代码中)?

你甚至不得不自己编写代码吗?还是OpenGL插入(内部)单手?

回答

3

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

插值限定符

某些输入和输出可以使用内插限定符。这些适用于任何可以作为光栅化结果插值的值。这些包括:

  • 顶点着色器输出
  • 镶嵌控制着色器输入(以匹配从 VS输出)
  • 镶嵌评估着色器输出
  • 几何着色器输入(以匹配从TES输出/ VS)和 输出
  • 片段着色器输入

插值限定符控制如何在三角形或其他基元上插值。有三个基本插值限定符。

平坦

的值将不进行内插。赋给片段着色器的值是来自该原语的激发顶点的值。

noperspective

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

光滑

的值将在透视-正确的方式进行内插。如果没有限定符存在,这是默认值。


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

flat vec3 color;