【发布时间】:2016-09-17 14:45:17
【问题描述】:
gouraud-shader 计算每个三角形角处的光照,并线性插值三角形覆盖的每个像素的结果颜色。
你会如何编程这个特定的插值(在 GLSL 代码中)?
您甚至必须自己编写代码还是 OpenGL 单独插入 (内部)?
【问题讨论】:
标签: opengl glsl fragment-shader vertex-shader gouraud
gouraud-shader 计算每个三角形角处的光照,并线性插值三角形覆盖的每个像素的结果颜色。
你会如何编程这个特定的插值(在 GLSL 代码中)?
您甚至必须自己编写代码还是 OpenGL 单独插入 (内部)?
【问题讨论】:
标签: opengl glsl fragment-shader vertex-shader gouraud
来自https://www.opengl.org/wiki/Type_Qualifier_(GLSL):
插值限定符
某些输入和输出可以使用插值限定符。这些适用于可以作为光栅化结果进行插值的任何值。其中包括:
插值限定符控制值的插值如何在三角形或其他图元中发生。有三个基本的插值限定符。
平坦
该值不会被插值。给片段着色器的值是来自该图元的 Provoking Vertex 的值。
非透视
该值将在窗口空间中线性插值。这通常不是你想要的,但它可以有它的用途。
流畅
该值将以透视正确的方式进行插值。如果没有限定符,这是默认值。
因为平滑是默认的,OpenGL 会为你插值。如果您不想要插值,您可以在着色器中使用关键字 flat 定义颜色,如下所示:
flat vec3 color;
【讨论】: