【问题标题】:How send recursive data structure to OpenGL shader?如何将递归数据结构发送到 OpenGL 着色器?
【发布时间】:2013-05-14 10:06:21
【问题描述】:

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

【问题讨论】:

  • 你想用它做什么?在着色器中使用它后,您将其用于何种目的的上下文对于采取或避免的方法至关重要。
  • 通常情况下,一旦您处理了您想用它做什么,数据就会显示如何订购。

标签: opengl glsl recursive-datastructures octree


【解决方案1】:

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

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

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

GPU 在给定要栅格化的三角形列表时效果最佳。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2017-06-03
    • 2020-09-30
    • 2011-12-29
    • 2019-01-24
    相关资源
    最近更新 更多