哪个着色器阶段必须写入gl_ClipDistance[x]



除片段着色器外,它在所有着色器中都可用作输出变量。那么,哪个着色器阶段必须编写它呢?它的值是否取自编写它的上一个着色器阶段?

此外,请说明在片段着色器中设置gl_ClipDistance值的目的是什么?

只要只使用顶点着色器和片段着色器,就可以将其写入顶点着色器。根据GLSL规范,几何体和镶嵌着色器也可以编写它。

片段着色器可以读取该值。根据我阅读文档的方式,它将为您提供片段的片段距离的插值。

考虑到它实际上只对剪裁有用。。。您需要在GLSL程序中顶点处理的最后阶段编写它。目前,只有一个阶段不属于顶点处理的类别,因此片段着色器之前的任何阶段都需要输出该阶段。

如果你使用的是几何着色器,那就是你写它的地方。现在,通常在这种情况下,你也可以把它写在几何着色器之前运行的顶点着色器中,让它通过。你不必做那样的事,但这是典型的。由于它是gl_PerVertex的一部分,因此它被设计为以这种方式通过多个顶点处理阶段。

名称

gl_ClipDistance——为顶点裁剪提供了一种前向兼容机制

说明

[…]

如果相应的着色器可执行文件未写入gl_ClipDistance,则在顶点、镶嵌控制和镶嵌评估着色阶段之后,gl_ClipDistance(或gl_out[]阵列的gl_ClipDistance成员,在镶嵌控制着色器的情况下)的值未定义。

如果在最后的顶点处理阶段没有写入,则在剪切发生之前,它将立即变为未定义。

相关内容

  • 没有找到相关文章