首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从顶点到碎片着色器的插值过程可以操作吗?

从顶点到碎片着色器的插值过程可以操作吗?
EN

Stack Overflow用户
提问于 2015-11-13 22:47:40
回答 2查看 381关注 0票数 1

我对glsl编程很陌生。据我所知,片段着色器中的变量是从顶点着色器给出的线性插值值。这就是为什么当你把不同的颜色设置到不同的顶点时,你有一个颜色梯度。

假设我想渲染一个多边形数较低的曲面,例如一个立方体,并且我定义了顶点法线。我希望每个表面都有相同的法线,因为当法线被内插时,照明可能看起来很糟糕。

它真的像这样工作吗?是否有可能干涉这一插值过程?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-13 22:53:23

如果将法线赋值为“每个顶点”,则会对其进行内插。但这不是你为立方体所做的。立方体包含8个顶点,但你需要24个法线,这取决于你的脸。因此,对于左-下前顶点,你会为下脸,左脸和前脸指定一个自己的法线。

这和给立方体着色一样。如果希望对立方体的每个角落进行内插颜色,则只为每个顶点指定颜色。如果你想让每一面都以自己的方式着色,你需要给每个脸分配颜色。

对于操纵的部分:你可以操纵你得到的每一个输入。如果这是有意义的话是值得怀疑的。例如,为了防止插值,您可以为0..1之间的每个值设置一个if条件,并将负值设置为1.相同,如果正好为0,则设置为1。那么它应该适用于每个顶点的分配。可能需要一些尝试和错误。

为了更清楚:着色器从3个顶点的值中画出三角形。每一个都包含位置,正常,颜色,你想要的。因此,对于着色器来说,在不同的三角形中,具有相同位置的顶点是否有不同的颜色值等并不重要。插值只发生在三角形内部,因此,如果每个三角形中顶点的法线是相同的,则整个三角形具有这个法线。但要小心:使用其他绘图风格,如三角形条,使这更困难,因为他使用一个顶点定义的多个三角形。

票数 0
EN

Stack Overflow用户

发布于 2015-11-13 22:57:55

你有两个选择:

第一种方法是复制每个顶点,并赋予它一个不同的法线;每个人脸都有自己的顶点和法线,因此对每个顶点进行插值得到相同的结果。

第二种是在顶点着色器的正常输出上使用内插量词;法线将从原语的发端点中选择。这比复制每个顶点更有效,但是您需要注意呈现的顺序,这样脸才能被指定为正确的法线。

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

https://stackoverflow.com/questions/33702991

复制
相关文章

相似问题

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