gpt4 book ai didi

c++ - 在将包含非不透明纹素的模型中查找 Tris

转载 作者:行者123 更新时间:2023-11-28 00:26:47 26 4
gpt4 key购买 nike

我有一个在 Blender 中制作的角色模型,我正在使用 OpenGL 进行渲染。模型的纹理大量使用 alpha channel ,我需要处理特殊的半透明三角形(在这种情况下对它们进行深度排序)。

这意味着我需要发现这些是哪三个。我现在的做法是非常非常缓慢地遍历模型中的每个三角形,使用三个顶点的 UV 坐标,首先检查纹理中的像素是否落在三角形中,然后检查它们是否落在三角形中不透明。

对于 2500 tris 和纹理大小为 4096x4096 的单个模型,此过程大约需要一分钟。我认为实时甚至加载时间太长,因为有很多模型需要加载。

是否有更快的技术来确定透明三角形的位置,速度快到足以实时使用?还是只需要事先预编译结果?

最佳答案

这似乎是应该通过预先分解网格在运行时一起避免的事情。将所有包含包含半透明像素的 UV 坐标的三角形分离到它自己的网格中。然后在运行时仅对“半透明”网格的三角形进行深度排序。将模型从交换格式编译为运行时格式时,可以完成分离过程。

假设您可以在 GPU 上放置一个缓冲区,每个三角形都有一个 bool 值,并初始化为 false。然后编写一个检查当前片段 alpha 的片段着色器,如果它 < 1,则将相应三角形的 bool 设置为 true。这将需要绘制场景,从 GPU 读回缓冲区,对标记的三角形进行排序,然后重新绘制场景。这对于实时性能来说应该是可行的,但考虑到整个过程可以通过事先做所有事情来避免,这似乎是一种浪费。

关于c++ - 在将包含非不透明纹素的模型中查找 Tris,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24647527/

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