显卡 频道

微星9800GTX+ 让你忘了4850

  四、微星9800GTX+支持PhysX物理加速,让游戏更逼真

  游戏中的物理引擎越来越受到重视,因为玩家和开发者都意识到,想要让游戏更加好玩,仅仅只有出色的图形引擎是不够的,只有物理引擎才能增强游戏中的互动,进一步的提高游戏的可玩性。在早期的游戏中,物理运算一般会简化到不可想象的地步,在2D游戏里,大部分的物理被定义为“离开地面的时候,就往下掉”这样简单易行(比如爱吃金币的马里奥)。现在的3D游戏已经大抵脱离简单的物理运算而更讲求真实,但缺憾之处也是无所不在,也就是我们称之为“脚本化”的物理运算。

  可以举很多真实的游戏经历来说明:在《使命召唤:联合进攻》中,当你正驾驶坦克在不断获得一次次胜利,争取更大战果的时候,你却被前面的一片灌木丛挡住了去路,这在真实世界,会有问题吗?我们完全可以驾驶这辆重型坦克碾压过去。同样的情况在很多游戏中都会出现,玩家会发现,如果我们想炸塌一堵墙壁,必须在游戏中“指定”的位置进行爆破,而同样材质的墙壁,你却无法在另一个位置对其造成任何的伤害。

  这就是所谓的“脚本化”物理运算,游戏引擎已经定义了某种物理效果的完整流程,玩家只能被动的接受这种物理效果,而不能有任何其它的改变,一旦这种改变出现,就表明游戏遇到了Bug。而NVIDIA PhysX物理引擎首先会改变这一状况,让“脚本化”的物理运算完全变为真实化的物理运算。玩家可以与更多的物体发生互动,互动的方式不同也会产生不同的结果,你用不同的武器、不同的角度射击某幢房子,房子坍塌的速度和角度也会发生变化,这一切都会让游戏产生更多的随机状况,也让游戏更加真实。

  NVIDIA PhysX专门为游戏中可能遇到的很多复杂物理效果模拟进行了非常好的的支持和优化,这些效果都是现有游戏最难处理的部分。主要包括以下几种:流体的处理,虽然水面渲染的效果已经非常出色,但是在游戏中我们极少看到流动的水与物体发生互动,流体运动的运算难度很高,而PhysX物理引擎则能很好的支持流体运动与物体发生互动的计算;粒子的运算,爆炸的碎片、烟雾等在游戏中都是以最基本的粒子形式进行运算,碎片的掉落、烟雾的飘向和逐渐散去运算对CPU的负载极大,是现有游戏极难做好的一种效果,借助PhysX物理引擎和NVIDIA GPU则可以轻松运算。

  大量刚体的运动:与粒子的运算相似,现有游戏处理少量刚体的互动(比如赛车的碰撞)尚能接受,但是大量刚体的真实运动(比如泥石流中大量石块的滑落和相互碰撞)则会造成很重的负载。骨骼肌肉表情等的模拟:人物的行动模拟也是物理效果中非常复杂的一种运算,比如面部表情的变化会连带骨骼和肌肉的形变,这在当前的游戏中很难实现。衣物布料的运动:我们在游戏中看到的大都是身着紧身衣的战士,这就是因为衣物布料随人物和外界环境的影响导致的运动是一个极其复杂的运算,PhysX物理引擎同样为此做出了相应的基本运算模块。

  如果玩家细心,都会注意到上述效果在游戏中都是“低调处理”的,因为这些效果的运算过于复杂,实现起来会导致机器的不堪重负,而PhysX物理引擎专门为这些常用而且难于处理的运算进行了支持和优化,让这些处理不再成为今后游戏的瓶颈,从而让游戏更为真实。

  NVIDIA的显卡是目前唯一支持硬件加速的GPU,虽然收购PhysX技术并没有多久,但是NVIDIA已经高效的在市售GPU上实现了完全的硬件加速,而且在未来的驱动中,NVIDIA将会不断完善物理加速的能力和方式,包括多GPU的加速模式等等。

  PhysX物理引擎让未来的游戏具备更佳的真实性和互动性,对当前游戏难以模拟的最为复杂的物理运算:比如流体的运动、粒子的运动等的支持,让PhysX成为高效和优秀的物理引擎。目前已经有数百款游戏支持PhysX物理引擎,游戏机三大平台也全盘支持这款引擎,相信在未来的游戏中,借助GPU的物理运算,游戏可以实现更为复杂和逼真的物理效果,让玩家更有融入感和实际体验。

  PhysX物理引擎对各种硬件接口都具备良好的支持,其中NVIDIA GPU对其直接的加速最具效率,凭借强大的并行处理能力,NVIDIA的GPU成为非常好的的运算基础,在性能上大幅度超越和领先处理器以及竞争对手的物理运算能力。

  五、微星9800GTX+支持CUDA,让显卡应用渗透到更多领域

  CUDA,如今这个名词越来越多的出现在了我们的眼里。虽然说,目前来看,CUDA可能和我们目前的电脑应用并没有太明显的关系,不过相信随着未来越来越多的软件支持,CUDA最终将会走入我们每个人的电脑应用当中。前面我们说的那个例子,虽然现时来看并不太可能实现,不过,我们却很有可能在下一代的PhotoShop当中看到这一功能付诸实践。

  在Photoshop CS4上通过GPU支持,Photoshop打开一个2GB、4.42亿像素的图像文件将非常简单,对图片进行缩放、旋转也不会存在任何延迟。这就是GPU的强大运算能力的体现,而想要实现这一功能,则需要借助于一个接口——CUDA。

  CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

  在传统的发展路线中,电脑显示卡一直在为游戏和3D应用程序服务,但是竞争的激烈、技术的飞速前进客观的成就了GPU的爆炸式发展。GPU的运算能力已经达到了非常高的水平,甚至在浮点运算能力上已经大幅度超越较高级别的处理器产品。研究表明,从1993年开始,GPU的性能以每年2.8倍的速度增长,这个数字大大超过了PC其他子系统的发展速度。一块工作频率为3.0GHz的Pentium 4处理器,其晶体管数目为1.25亿个,即使算上SSE指令集的SIMD(单指令并发多数据流,这种情况是浮点吞运算下吐能力的最理想状况),也只有6GFlops的峰值浮点处理能力,而同期的一块NV40 GPU就有2.22亿个晶体管,峰值浮点运算能力很轻易超过40GFlops,而时间发展的今日,GPU的峰值浮点运算能力已经接近甚至超过了TFlops(1000GFlops)级别,GPU的性能可想而知。

  于是,由这个问题就导致了两方面的考量:一、GPU拥有如此强大的性能,它能否为其它非游戏类的应用程序进行加速,发挥其性能的优势;二、GPU的浮点运算能力虽然强大,但是其架构一直是专有的,无法和目前的x86处理器相比拟,通过什么方法去使用GPU,通过什么方法去让应用程序利用GPU加速。

  上述所讲就是NVIDIA最新的理论构想,那就是让GPU超越游戏,去拓展更为广阔的空间。而超越游戏,让GPU为其它应用程序服务,NVIDIA很早就进行了尝试,比如:NVIDIA早就与Adobe公司合作,为其Adobe Acrobat 8及Adobe Reader 8系列产品提供全新的页面显示着色技术,利用GPU来加速PDF格式下的绘图及显示功能,除了在效能上有所增进外,还可以利用GPU的可编程特性,进一步加强PDF文件中的2D内容展示效果,包括平移、卷动、缩放等,实际上Adobe Reader 8每一项运用到GPU的功能都有着显著的效能增进。使用者过去避免使用的一些应用,例如可进行极精细比例缩放的地图,现在都可以轻易地显示。

  而想要实现这些功能,必然需要显卡与应用程序之间有一个良好的程序接口,这就是CUDA。其时早在G80时代,NVIDIA就提出了CUDA的概念,只不过因为那时候CUDA还未成型,所以没有公布,而现在,基于CUDA的应用程序越来越多,因此到了GTX200系列芯片的发布,CUDA才同时正式大范围的推广并介绍给普通消费者。

  GPU辅助计算机进行并行运算在近两年来得到了非常迅猛的发展,其实借助GPU进行非图形运算早就有之。而CUDA不同于以往的图形处理技术地方就是它能够抛开原有的图形接口Direct3D或者OpenGL,而直接调用GPU的硬件资源,从这一点上来说,这要比最初的GPGPU技术更为先进。开放性标准使得OpenGL更加具有便携性和普遍性,它们允许不同的图形芯片能够采用完全相同的代码。虽然如此,不过这种方法同样拥有它们的弊端,那就是在提高了编程的灵活性同时,他们不能使用某些显卡上的特殊功能,例如快速共享内存等。

  这就是为何NVIDIA公司推出了像CUDA这样的东西,采用C语言编程,拥有自己的编译器来实现调用GPU进行辅助并行计算的功能。当然,为图形处理器编写程序代码并非易事,这是一项非常耗费体力的工作。不过CUDA能够实现更多的功能,让程序员更加轻松的驾驭GPU的性能。最重要的是,NVIDIA的CUDA能够支持G8x、G9x以及GT2xx系列图形核心,也就是说,只要用户或者程序员拥有一块GeForce 8、GeForce 9或者GeForce GT200系列的显卡就可以实现。并且在最新的CUDA 2.0版本当中,还加入了双精度浮点运算功能。另外,CUDA能够支持的操作系统也更为广泛,包括了Windows XP 32/64bit、Windows VISTA 32/64bit、Linux以及MacOS的各种操作系统。

  由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。虽然现在更多的应用在游戏、图形动画、科学计算、地质、生物、物理模拟等领域,但是由于GPU本身的通用特性和CUDA提供的方便的开发环境,我们可以放开思维的束缚,想象任何可能的应用场景。

0
相关文章