我所理解的Havok、PhysX

声明:
本人N卡3块(2独立+1集成)、A卡2块(1独立+1集成),无A/N倾向;
本人非A/N饭,非A/N枪;
反正打游戏的时候只觉得游戏好玩,没觉的A/N那个不好。
          格式太难调整


Havok简史
2000年  Havok公司发布了1.0版本
2003年  在的GDC大会上,发布2.0版本
...
2007年3月   4.5版本发布    
2007-09 Havok公司被Intel收购     
2009-12 Havok SDK 7.1版本   
PhysX简史     
2006年  Ageia公司推出了PhysX P1物理加速卡和PhysX物理引擎     
2008年2月   Nvidia收购了Ageia     
2008年8月   nvidia推出了支持PhysX的GeForce 8系列显卡    

PhysX与Nvidia是什么关系?     
原来PhysX是用PhysX卡 计算的,nvidia收购了ageia公司后,并用cuda计算框架实现了PhysX物理计算 引擎。说白了就是API基本不变,内部实现完全改变 了。
现在PhysX产权归PhysX。

PhysX、CUDA、Havok、Stream、OpenCL、Direct Compute之间是什么关系?
    CUDA和Stream分别是N卡和A卡提供的通用计算接口,是硬件相关的。
    OpenCL和DC都是通用计算的API,是编程用的API,是硬件无关的;
    PhysX、Havok是物理计算引擎,是编程用的API。
    Nvidia:显卡有cuda接口,然后以cuda为基础实现了opencl、dc、physx的API。也就是程序里面调用了physx,那么nv的驱动 程序就调用cuda完成计算。
    AMD类似:显卡有stream接口,然后以stream为基础实现了opencl、dc的API。也就是程序里面调用了 opencl,那么amd的驱动程序就调用steam完成计算。
    等等,havok呢?
    最新版本的havok 是用opencl实现了用GPU加速的物理引擎,也就是说havok在n卡、a卡上都没问题。

    以Java对比:
         a/n的显卡好比操作系统,linux、windows各种各样的。
         cuda/stream好 比操作系统的API也 是不同的。
         显卡驱动提供了opencl、dc接口,好比java虚拟机提供了java基本api.
         havok好比java程序,随便什么操作系统,只要有java虚拟机就可以执行。
         当然physX类似java程序, 但是因为调用了操作系统的api的程序,换了操作系统就不能执行了。

从Havok的历史上看,跟ATI/AMD没啥关系啊,两者是怎么扯上的呢?    
Havok使用了GPU的Shader Model 3.0计算特效。也就是说用了amd/nvidia的GPU加速。
用了就得展示,但是nvidia已经有了physX了,再用就没啥优势,而ati/amd没有自己搞一套物理加速。     
所以havok选择ati显卡作为展示显卡,同时ati/amd也提供开发支持,所以就被大家视为"ati/amd的 物理加速引擎"了。     


目前现在Havok进展如何?     
曾经有一个Havok FX项目,该项目是使用nvidia和ati的显卡来实现物理计算的。     
但havok被intel收购后,intel一度想让CPU做物理计算,也就是在CPU中加上PPU(物理计算单元),所以 Havok FX项目被取消了。     
不过在GDC09展览中,Havok演示了使用了ATI的显示核心作为加速,但该引擎是基于OpenCL架构进行开发。也就是说同时支持 nvidia的显卡。  

Havok有游戏支持吗?     
不仅有,而且相当的多,特别是那些老牌游戏开发商用的多。     
Assassin's Creed II,The Saboteur,Resident Evil 5 ,Halo 2,Far Cry 2,Fallout3 、。。。     
PC版本的清单:http://www.havok.com/index.php?page=pc     
还有很多支持Havok的平 台,Xbox 360, Xbox, PlayStation 3, PlayStation 2, Wii, PSP

既然有这么多游戏支持Havok,为什么没看到关于Havok宣传?     
确切的说不是“支持”,而是“使用到”。     
Havok是一个物理计算的解决方案,可以用CPU计算也可以用GPU计算。
Havok只是个物理引擎,更硬件无关、操作系统无关,也就是“没后台”,没人愿意打广告(东家intel不生产最终成品,不最终收钱,所以也不愿意)。
况且游戏里面用到Havok计算一些物理场景,没必要在启动画面上贴上一个偌大的图标。havok都贴上去了,还不如开个广告位放广告 呢。
至于为什么PhysX会有一个图标....那就说不清楚了,图标太多了(intel的、杜比的、windows的、发行商的、开发小组的、成人委员会 的……) 

ATI/AMD为什么不自己搞一套物理引擎?     
以上的问题已经能回答了。     
ati/amd已经有了通用计算接口,谁要用就用呗,为何要自己搞一套呢。况且物理引擎那么多,应该由游戏开发商自己选择。
最重要的是如果要挖PhysX的墙角,最好的办法就是支持第三方开发物理引擎(这个第三方包括Intel的Havok)。
如果一个物理引擎能在N卡、A卡或者将来的X卡上运行,那开发商当然会选择通用的。
AMD的付出的代价也小,也就是提供技术支持,指导一下程序开发。对比Nvidia的维护physx的代价就高了。 

Havok与PhysX哪个好些?     
游戏开发商在选择物理引擎的时候,熟悉哪个就用哪个,哪个支持的多就用哪个,也没什么特定的标准。反正都是C/C++,没啥限制,基本上 PC/XBOX/PS...上的游戏通吃
Havok的历史悠久,使用的开发商比较多,特别是游戏都是PS3XBOX360PC三版本同时出,用Havok的优势更明显(从支 持Havok的游戏清单里面就能看出来)     
Nvidia推广PhysX的力度比较大(比较明显,intel是否在推Havok就不清楚了)
不过对比起通用性,那就PhysX就要差一截了,千辛万苦开发出一个游戏,居然是只支持NV显卡的,首先在投资商那里就过不去。
除非nvidia开发通用版本的physX,不过那是不可能的……nvidia宁可把physX开源了,也不会给amd出一点儿力;   

为什么有人讨厌N的PhysX?
    最主要的就是通用性差:
        游戏的开发商、投资方不喜欢:开发一个游戏居然只能用n卡?不是明摆告诉用a卡的人不要买吗。
        正在用a卡的人不喜欢:肯定不会喜欢的。
    相比Havok,大家的态度就是“没态度”。

既然有这么好的引擎,为什么“有物理的游戏”那么少?     
用到“物理的引擎”的游戏多的是,只不过“有复杂物理场景”的游戏极少(满地的箱子一炸一大片的那种)。     
玩家与NCP、玩家与环境的交换已经够复杂了。     
如果还要加上玩家与动态环境、NCP与动态环境、环境与环境……太难太难了     
现在游戏里面扔几个箱子,炸几个房子,飘几面旗子……已经很普及了,而且效果也不错,玩家也不会太注重物理场景的复杂度的。

本人对N、A的态度
    N、A只有在合理竞争的情况下对消费者有利(价格、质量、性能)。
    N当初买PhysX是明智的,但现在是包袱,N总是在PhysX的问题上被人指责(贿赂游戏商、限制第三方发展)
    N应该趁着opencldirect compute没有成熟,快把PhysX甩掉,留着是个累赘。
    A、N都犯过错,但是A纠正比较快,N的反应就慢的多。
    而且从各种访谈中看,N的企业内部风气比A 要差,居然会有“因提反对意见而影响职场前景”的情况。
    N、A都是生意人,有58505870的现有价格在,480470的价格不会低,顶多给销售商的回扣多一点儿,玩家是不容易尝到甜头的。

你可能感兴趣的:(其它文章,物理引擎,游戏引擎,GPU,Havok,PhysX,游戏开发,引擎开发)