PhysX技术,是指物理运算引擎的作用,简而言之,就是令虚拟世界中的物体运动符合真实世界的物理定律,以使游戏更加富有真实感。
概述
物理模拟计算需要非常强大的整数和浮点计算能力。更为重要的是,物理处理具有高度的
并行性,需要多线程计算,演算非常复杂,需要消耗很多资源。 PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(例如GPU和PPU)来计算,也正因为如此,它可以轻松完成像流体力学模拟那样的大计算量的物理模拟计算。 PhysX物理引擎可以在包括Windows,Linux,Xbox360,Playstation3,Mac等在内的全平台上运行。 AGEIA公司后来被Nvidia收购,PhysX引擎也就跟随划入Nvidia旗下。 2010年5月,AGEIA公司创始人、Nvidia主管PhysX技术副总裁Manju Hegde跳槽至AMD公司。外界猜测其跳槽原因是AGEIA被Nvidia收购后,PhysX并没有得到良好的发展。
AGEIA时代
PhysX物理运算引擎由五名年轻的技术人员开发,他们成立了AGEIA公司。PhysX最初称为NovodeX,
后改名为PhysX。
AGEIA曾为《虚幻竞技场3》开发几张加入PhysX引擎的MOD地图,物理效果非常出色。同时
AGEIA也自己开发一个免费的名为《好战者》的物理游戏。此后的一些PhysX游戏,也大都基于虚幻
3引擎。例如《镜之边缘》、《蝙蝠侠:阿卡姆疯人院》、《一舞成名》等。可以说
虚幻3引擎与
PhysX物理引擎已经成了一对黄金搭档。
[虚幻竞技场3 PhysX地图包]
虚幻竞技场3 PhysX地图包
AGEIA提供一流的PhysX软件开发包AGEIA PhysX SDK,它不仅可以应用于次世代PC游戏开发,还可
应用在Console游戏开发中。AGEIA声称,PhysX 将会使设计师在开发游戏的过程中使用复杂的物理
效果而不需要像以往那样耗费漫长的时间开发一套新的物理引擎,而且使用了物理引擎还会大量消
耗CPU资源使一些配置较低的电脑无法流畅运行。AGEIA 更宣称 PhysX 执行物理运算的效率比CPU
与物理处理软件的组合高出 100 倍。游戏设计语言 Dark Basic Pro 将会支持 PhysX,并允许其
用户利用 PhysX 执行物理运算。
加速卡
由于PhysX物理引擎在设计上就并不适合用CPU去计算,因此AGEIA公司还为PhysX引擎设计了专门的
运算硬件,PhysX
物理加速卡。PhysX
物理加速卡的核心被称为PPU,即物理处理器(Physicsprocessing Unit)。
PhysX
物理加速卡在运行游戏时不参与任何3D渲染,只计算PhysX引擎。按照AGEIA当初的设想
,未来的个人电脑将由CPU、GPU、PPU三大核心构成。其中CPU居中调度,GPU负责图形渲染,PPU则
做物理计算。
AGEIA当初设想的未来PC组成
2006年,AGEIA公司发布了第一张PhysX
物理加速卡,称为PhysX 100 Series。公版设计为搭载
128MB GDDR3显存,采用
PCI接口。生产PhysX 100 Series的包括华硕和BFG,其中华硕的PhysX物理
加速卡搭载了256MB GDDR3显存。
后来,AGEIA公司又开发了第二代PhysX
物理加速卡,称为PhysX 200 Series,与第一代产品最
大的不同在于采用了PCI-E插槽,增强了数据交换能力。
AGEIA公司被Nvidia收购后,PhysX
物理加速卡停止了开发。但有评测表明,PhysX 100 Series
的PhysX物理计算能力,超过了Geforce 9600GT,至少与Geforce 9800GT相当。[1]可见PhysX物理
加速卡在设计思路上是非常成功的。
基于PhysX SDK 2.8.1及其以下版本开发的游戏都支持AGEIA PhysX物理加速卡。需要说明的是
,部分基于PhysX SDK 2.8.1开发的游戏是被人为屏蔽
物理加速卡而造成物理加速卡无法工作的,
例如《一舞成名》和《蝙蝠侠:阿卡姆疯人院》,这种情况是可以通过修改驱动破解的。但是基于
PhysX SDK 2.8.3及其以上版本、基于PhysX APEX开发的游戏就无法支持AGEIA PhysX
物理加速卡了
。
nVIDIA时代的PhysX
1.nVIDIA PhysX物理加速技术
2008年,在Intel收购了物理引擎界的领军者Havok后,Nvidia也收购了排名第二的AGEIA。正
式将PhysX技术划入旗下。
PhysX by Nvidia
nVIDIA PhysX承袭自AGEIA PhysX,但Nvidia在此基础上推出了nVIDIA PhysX物理加速,并将PhysX
物理加速功能移植到nVIDIA GPU中,用户不必额外购买PhysX
物理加速卡就能享受到PhysX物理加速
功能。借助
CUDA架构,nVIDIA重新编写了PhysX物理加速程序,将PhysX物理加速引擎从AGEIA PPU
移植到了nVIDIA GPU上。
通过重新编写程序,nVIDIA GPU中的
线程调度器将承担原来PPU中“控制引擎”的工作,即负
责具体任务的指派工作;流处理器将承担原来PPU中“矢量处理引擎”的工作,即负责物理计算;
在物理计算完成后,由DME来负责输出;而后,GPU再通过
硬件抽象层实现布料模拟、毛发模拟、碰
撞侦测、流体力学等物理技术。简而言之,就是利用CUDA,将PhysX引擎中的计算指令,翻译给GPU
,让GPU去计算。这样做是因为GPU具有优秀的浮点计算能力和
并行处理能力。[2]
通过这种方法,Nvidia Geforce 8系列,9系列,GT200系列,GT300系列,GT400系列桌面
显卡;Geforce 8M系列,9M系列,GT100M系列,GT200M系列,GT300M系列,GT400M系列移动版显卡,只
要流处理器大于32个且显存大于256MB,都可以支持PhysX物理引擎的计算,也就是支持PhysX物理
加速。
所谓PhysX物理加速,是指相对于CPU来讲,GPU加快了PhysX物理引擎的计算速度。并不是说
PhysX引擎只能由nVIDIA GPU处理。
混合交火
使用
AMD显卡执行图形渲染、辅以NVIDIA显卡进行PhysX物理加速是个很不错的方案,不过NVIDIA在
新驱动中封杀了这种做法,会自动禁用PhysX。
由HD5970和GTX480组成的最强A/N
混合交火不过人民群众的智慧是无穷的,破解补丁已然出炉,来自一位名叫“Liandri / THETA”的国外高
手。根据说明文件,该
补丁可以在使用非N卡作为系统主显卡的时候开启N卡的物理加速,但是仅限
Windows 7操作系统(WDDM 1.1),而且不能让单独一块
AMD显卡支持PhysX。
但Nvidia表示,他们没有测试过A-N
混合交火的稳定性,最这种破解带来的一切后果,将由用
户自行承担。
Liandri / THETA还大声疾呼:不要让私有封闭标准为你选择硬件。一旦它们灭亡,这些硬件
就会成为废物。