首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL、C++、In Out变量

OpenGL、C++、In Out变量
EN

Stack Overflow用户
提问于 2018-03-18 02:26:10
回答 1查看 385关注 0票数 1

我需要将一些变量直接从顶点着色器传递到片段着色器,但我的流水线也包含一个TCS、一个TES和一个简单的透传内容的GS。

我已经知道fragment着色器期望从程序的最后一个链接着色器(在我的例子中是Geometry Shader )接收其" in“变量的值,但我不想在那里进行MVP和普通计算。

如何将变量从顶点着色器直接输出到片段着色器?(跳过中间的其余材质球)

这有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-18 04:16:11

如何将变量从顶点着色器直接输出到片段着色器?(跳过中间的其余材质球)

你没有。

每个阶段只能访问流水线中前一个活动阶段提供的值。如果您想要从VS到FS进行通信,那么它们之间的每个阶段都必须通过它们自己来引导这些值。毕竟:

我的管道还包含TCS和TES

如果你在做镶嵌,那么VS如何与FS直接通信呢?片段着色器输入是通过对要渲染的基本体执行光栅化而生成的每个片段的值。但由于镶嵌处于活动状态,因此VS操作的基本体不再存在;只有镶嵌后的基本体存在。

那么,如果VS的原语都消失了,那么镶嵌的原语如何获得值呢?对于在镶嵌器激活之前不存在的顶点,它将从哪里获得要栅格化的顶点值,并在生成的图元中进行插值?

弄清楚这一点的工作交给了工商业污水附加费。它将使用从VS输出的值(如果存在,则通过TCS发送),并根据其编码所用的镶嵌插值方案对它们进行插值/生成。这就是工商业污水附加费的作用。

GS也大同小异。几何体着色器可以采用一个基本体并将其转换为二十个基本体。它可以丢弃整个原语。VS如何通过GS将顶点信息传递给片段着色器,GS可能只是将图元放在地板上或创建30个单独的图元?或者将三角形转换为直线?

因此,VS甚至没有通过其他着色器管道向FS提供值的概念性方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49340405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档