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

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

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

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

【问题讨论】:

    标签: opengl glsl fragment-shader vertex-shader gouraud


    【解决方案1】:

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

    插值限定符

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

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

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

    平坦​

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

    非透视​

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

    流畅​

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


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

    flat vec3 color;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 2011-08-17
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多