3

如何将递归数据结构(如八叉树)发送到 OpenGL GLSL 着色器?我想,我可以将它作为节点数组发送并使用索引而不是指针,这是个好主意吗?还有其他选择吗?

4

2 回答 2

2

GPU 光线追踪通常使用递归数据结构,例如 kd 树中的三角形或稀疏体素八叉树。

在着色器中,您可以像使用数组一样使用 1D 纹理采样器,从而可以轻松地四处跳转。

但是,性能受到影响。批处理中的所有着色器(warp 或任何您的卡术语)通常以锁步方式工作,因此如果一个片段需要在树中递归十个步骤,则批处理中的其他片段必须等待该片段执行其十个随机 -内存访问,然后才能继续。

当给定要光栅化的三角形列表时,GPU 工作得最好。

于 2013-05-14T10:17:13.867 回答
0

结帐这个问题:将值列表传递给片段着色器

在这里:http ://blog.icare3d.org/2010/07/opengl-40-abuffer-v20-linked-lists-of.html

于 2013-05-14T10:10:31.957 回答