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