如何在 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 中插入颜色值?的主要内容,如果未能解决你的问题,请参考以下文章

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?