gpt4 book ai didi

opengl - 使用每个三角形/面的纯色编写 GLSL 片段着色器的方法

转载 作者:行者123 更新时间:2023-12-04 16:48:59 24 4
gpt4 key购买 nike

我有顶点和三角形数据,其中包含每个三角形(面)的颜色,而不是每个顶点的颜色。即单个顶点由多个面共享,每个面可能具有不同的颜色。

我应该如何在 GLSL 中解决这个问题以获得每个被渲染的面的纯色分配?通过平均顶点的相邻多边形的颜色来计算和分配“顶点颜色”缓冲区很容易,但这当然会产生模糊的结果,其中颜色在片段着色器中内插。

我真正需要的根本不应该是内插颜色值,一旦按预期工作,我将有大约 40k 个三角形用大约 15 种可能的纯色着色。

最佳答案

虽然您可能可以在高端 GLSL 中执行此操作,但进行实体着色的正确方法是为每个三角形制作独特的顶点。这是一个微不足道的循环。对于每个顶点,计算有多少三角形共享它。这就是您必须复制它的频率。确保你的循环是 O(n)。然后只需将每个顶点颜色或法线设置为三角形的颜色。又是一个直线循环。不要费心优化共享颜色,这是不值得的。

稍后再编辑,因为这是一个流行的答案:

要对每个面进行平面着色,您可以在世界或 View 空间中插入顶点位置。然后在片段着色器中计算该变量的 ddx(dFdx) 和 ddy(dFdy)。取这两个向量的叉积并将其归一化 - 您得到了平坦的法线!根本不需要网格更改或每个顶点数据。

关于opengl - 使用每个三角形/面的纯色编写 GLSL 片段着色器的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com