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

Posted

技术标签:

【中文标题】如何在 Gouraud-shaderscript 中插入颜色值?【英文标题】:How are colour-values interpolated in a Gouraud-shaderscript? 【发布时间】:2016-09-17 14:45:17 【问题描述】:

gouraud-shader 计算每个三角形角处的光照,并线性插值三角形覆盖的每个像素的结果颜色。

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

您甚至必须自己编写代码还是 OpenGL 单独插入 (内部)

【问题讨论】:

【参考方案1】:

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

插值限定符

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

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

插值限定符控制值的插值如何在三角形或其他图元中发生。有三个基本的插值限定符。

平坦​

该值不会被插值。给片段着色器的值是来自该图元的 Provoking Vertex 的值。

非透视​

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

流畅​

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


因为平滑是默认的,OpenGL 会为你插值。如果您不想要插值,您可以在着色器中使用关键字 flat 定义颜色,如下所示:

flat vec3 color;

【讨论】:

以上是关于如何在 Gouraud-shaderscript 中插入颜色值?的主要内容,如果未能解决你的问题,请参考以下文章