我最近比较一些物理引擎在那里进行模拟和游戏开发。有些是免费的,有些是开源的,有些是商业(1甚至是很商业化$$$$)。 的Havok,欧帝,牛顿(又名oxNewton),子弹,的PhysX和 “原始” 集结在物理学在一些3D引擎。

在某个阶段,我来到结论或问题: 为什么要使用什么不过NVIDIA的PhysX如果我能利用自己惊人的表现(如果我需要的话)由于GPU处理?未来随着NVidia显卡我可以期待进一步独立于常规CPU生成步骤改善。该SDK是免费的,它可用于Linux以及。当然,这是一个有点厂商锁定的,它不是开源。

什么是您的视图或经验?如果你想与发展,现在开始,你会同意上述?

欢呼声

有帮助吗?

解决方案

免责声明:我从来没有使用PhysX物理,我的专业经验仅限于子弹,牛顿,ODE。这三个的,ODE是远和我最喜欢的;它是最稳定的数值,另外两个具有到期的问题(有用关节不执行,法律关节/电机组合未定义的方式表现,& C)。

您提到您的问题供应商锁定的问题,但它是值得重复:如果您使用的PhysX作为独家的物理解决方案,采用了AMD显卡的人将无法运行游戏(是的,我知道这进行工作,但它不是正式的或NVIDIA支持)。解决此问题的方法是定义一个故障发动机,采用ODE或东西与AMD显卡的系统。这工作,但它加倍你的工作量。这是诱人认为你就可以躲在一个公共接口的两个引擎之间的差异,一旦编写大量的游戏物理代码,但大多数与游戏中的物理你的困难会在处理您的特定的特质物理引擎,决定等许多事情上的接触摩擦和归还值。这些值不通过实验具有跨物理引擎和(主要是)不能正式得到,所以你坚持找到好看的,可玩的价值观相一致的含义。随着PhysX物理再加上你正在做两次一切枯燥粗活,故障转移

在一个较高的水平,我不认为任何流的处理的API是完全成熟着呢,我很不愿意承诺一个,直到达到最起码,我们已经将如何反应客户英特尔的Larrabee形状人民设计。

因此,从看到的PhysX作为高端游戏发展的必然选择远,我会说这应该避免,除非要么你不认为人们与AMD显卡弥补玩家群的显著分数(可能性很小),或者你有足够的编码和QA人力测试两个物理引擎(更合理的,但如果你的公司是富裕的我听说过Havok的好东西)。或者,我想,如果你设计了一个物理游戏性能的需求如此强烈,只有物理流能够满足你 - 但在这种情况下,我建议你开始一个乐队,让摩尔定律做它的事了一年或两个。

其他提示

这是2013年初更新的答案:我开发什么,我认为三大操作系统:Linux,OS X,MS。我还与三大物理库来开发:PhysX物理,Havok的,子弹

关于PhysX的,我最近做了一些测试了最新的化身是3.2.2为写这篇文章的时间。在我看来,真正的nVidia减少库的有效性。跌幅最大的是缺乏刚体加速。的lib只加速粒子和布。即使是那些不符合一般刚体接口。我完全被nVidia的疑惑这样做,因为他们有一个庞大的营销驱动推动GPU加速的应用程序,注重科学计算与大驱动力是物理模拟。

所以,当我的物理学王的期望SIM是PhysX物理,Havok的和子弹的顺序我看到在现实相反。子弹已经发布的lib 2.8.1与支持OpenCL采样。子弹是一个相对较小的lib慷慨授权。他们的目标是具有释放3完全集成的OpenCL刚体加速度。

评价说说多个代码路径的一部分。我的看法是,这是没有太大的交易。我已经可以支持三个操作系统用最少的硬编码的支持(线程大部分不使用操作系统特定的代码;使用C ++和标准库模板)。它是物理库相似。我使用的是共享库和抽象的通用接口。这是很好的,因为物理变化不大;),你仍然需要建立一个模拟环境,管理对象,在环境渲染迭代,完成后清理。其余的是闪光灯,在闲暇实现。

使用的OpenCL的主流库的出现(NVIDIA CUDA非常接近 - 见子弹的OpenCL演示)。物理插件的工作将收缩

因此,从头开始,只关注物理建模?你不能去错子弹。小巧灵活的许可证(免费),非常接近生产就绪的OpenCL,这将是跨平台跨三大操作系统和GPU解决方案。

祝您好运!

您可能会发现这个有趣的:

http://www.xbitlabs.com/news/video/display /20091001171332_AMD_Nvidia_PhysX_Will_Be_Irrelevant.html

有偏见......它基本上与AMD的采访......但它使一些观点,我认为是值得考虑你的情况。

由于的问题,大卫·塞勒指出,切换物理引擎一段时间,在未来可能是一个巨大的/不可逾越的问题......特别是如果该游戏是紧密结合的物理过程。

所以,如果你真的想在你的发动机硬件加速的物理现在,去PhysX物理,但如果如由AMD本文假定的解决方案变得可用意识到,(他们绝对的的,但他们还没有实现),你将面临不愉快的选择:

1)重写引擎使用(插入的新的跨平台硬件加速的物理引擎名称),潜在地改变你的游戏的动态在一个坏的方式

2)继续使用仅PHYSX,完全忽略AMD用户

3)试图让PhysX物理上的GPU AMD工作(BLECH ...)

除了使用了一个CPU的物理引擎作为备用的大卫的想法(在做两倍的工作和生产2个引擎不相同的行为),你唯一的另一种选择是使用纯CPU物理。

不过,像OpenCL的东西成为主流,我们可能会看到ODE /子弹/健开始为并入...... IOW如果你现在ODE /子弹/代码时,你的亲戚可能(或许最终会)获得了GPU加速“自由”以后(没有更改您的密码)。它仍然会表现略有不同与GPU版本(一个无法回避的问题,因为蝴蝶效应和浮点实现差异),但至少你将有ODE /子弹/亲属社区与您合作,缩小这种差距

这是我的建议:使用目前仅使用CPU的开源物理库,并等待它通过的OpenCL,CUDA,ATI的流语言等性能会尖叫快速发生这种情况时使用的GPU,以及你可以节省自己的麻烦。

这是未来的GFX卡假设的好处是一切都很好,但也将是额外的CPU内核太未来收益。你可以肯定,未来的GFX卡总会有余力为你的物理?

不过,也许最好的理由,尽管在这种情况下,一点点模糊,是性能不是一切。与任何第三方库,您可能需要支持和升级代码,几年来,你会想,以确保该接口是合理的,该文件是好的,它有能力,你需要。

也可以有更多的数学问题,如一些API,提供更稳定的方程求解之类的,但我会在该留下评论给专家。

我已经使用 ODE 现在使用的的PhysX PhysX物理的建设,使场面更加容易和(我的个人意见)似乎更为现实,但是,没有足够的文档的的PhysX 的;事实上几乎没有任何文件都没有。在另一方面, ODE 是开源的,有大量的文件,教程等 PS:使用GPU accelaration是显著帮助我和我的同事;我们使用的 APEX 销毁和的PhysX 颗粒。

PhysX物理工程与非nVidia显卡,它只是没有得到加速。在同一位置的其他引擎都开始离开它。问题是如果有物理模拟,其仅与硬件物理加速可行的。

如果所有的代码是大量paralelizable,然后去了!

有一切,GPU是远远不够。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top