使用硬件生成的基元进行碰撞检测

时间:2009-01-18 18:00:33

标签: graphics collision-detection shader

有很多关于碰撞检测的文献,我至少阅读了足够大部分内容来熟悉大多数技术。然而,有一段时间我已经找不到了,我想,由于StackOverflow可以同时访问一大群聪明的头脑,所以我先问这里,然后再在书架上挖掘。

在这个时代,越来越多的工作被委托给GPU而不是CPU,在很多情况下,这是一件好事。例如,有几何着色器可以创建新的几何体,或者(稍微不那么新,但仍然非常迷人)顶点着色器,您可以通过它们在一堆顶点处,并且优雅的东西会从中出现。我考虑的是,因为这些原语仅存在于图形硬件上,您如何使用这些原语执行可靠的碰撞检测?让我们假设我有一种非常简化的网格,它在顶点着色器中移位(我没有具体问题,我更喜欢这个想法,我还没有深入到几何着色器中)。

我到目前为止所考虑的是从适当的角度单独'渲染'传递,阴影或多或少关闭,也许是较低分辨率的网格,渲染我的第二个基元的内部(面向内翻转)以及网格我想测试并执行网格的遮挡查询。如果网格完全被遮挡,则没有交叉点。这当然要求我的第二个原语是凸的。

不知怎的,我觉得这种测试会因为基元数量的增加而非常昂贵(即使很大一部分可以直接剔除)。还有其他人有其他想法或技术吗?我对opengl和cg比对directx更熟悉,但如果你在directx中有一些左右的例子,我想我将能够找出opengl对应物。

所有的想法都受到赞赏,所以请集思广益。 :)

1 个答案:

答案 0 :(得分:2)

听起来像{H霍尔'的GPU Gems 2中的文章“GPGPU应用程序的流减少操作”正是您想要的。像所有章节一样,它是自由available online