Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CUDA纹理存储二维曲面_Cuda_Simulation_Mesh - Fatal编程技术网

使用CUDA纹理存储二维曲面

使用CUDA纹理存储二维曲面,cuda,simulation,mesh,Cuda,Simulation,Mesh,我目前正在使用CUDA在3D三角形网格(基本上是任何形状)上开发3D热流模拟 我想通过使用CUDA纹理或曲面来利用空间位置。因为我有一个3D网格,所以我认为3D纹理是合适的。但是,在看了不同的示例之后,我不再那么确定:3D纹理通常用于体积,而不是像我这样的曲面 我可以为多边形网格使用3D纹理吗?这有意义吗?如果没有,CUDA中还有其他方法或数据结构可用于我的案例吗?使用3D纹理存储曲面网格实际上是个好主意。为了更好地指出这一点,让我回顾一下 使用二维和三维网格存储八叉树并 使用3D纹理创建八叉

我目前正在使用CUDA在3D三角形网格(基本上是任何形状)上开发3D热流模拟

我想通过使用CUDA纹理或曲面来利用空间位置。因为我有一个3D网格,所以我认为3D纹理是合适的。但是,在看了不同的示例之后,我不再那么确定:3D纹理通常用于体积,而不是像我这样的曲面


我可以为多边形网格使用3D纹理吗?这有意义吗?如果没有,CUDA中还有其他方法或数据结构可用于我的案例吗?

使用3D纹理存储曲面网格实际上是个好主意。为了更好地指出这一点,让我回顾一下

使用二维和三维网格存储八叉树并

  • 使用3D纹理创建八叉树
  • 利用3D纹理的过滤特性快速遍历八叉树
  • 通过2D纹理存储曲面多边形
  • 通过3D纹理的过滤功能进行八叉树遍历

    树存储为单位立方体中映射的
    8
    位RGBA 3D纹理
    [0,1]x[0,1]x[0,1]
    ,称为间接池。树的每个节点都是一个间接网格。每个子节点由RGBA的前三个坐标标识,而第四个节点存储一些其他信息,例如,节点是否为叶或是否为空

    考虑论文中报告的四叉树示例(从论文中借用的图)

    A
    B
    C
    D
    节点(框)分别存储为纹理元素
    (0,0)
    (1,0)
    (2,0)
    (3,0)
    ,对于四叉树而言,包含
    4个
    元素,每个元素存储到子节点的链接。通过这种方式,可以通过利用纹理存储器的硬件过滤功能对树进行任何访问,如下图所示:

    通过以下代码(它是用Cg编写的,但我相信它可以很容易地移植到CUDA):

    通过2D纹理存储树元素

    树的元素可以通过利用
    (u,v)
    坐标的经典方法存储,请参阅。与上述相关的论文讨论了改进该方法的方法,但这超出了本答案的范围