MCPLive > 杂志文章 > NVIDIA和AMD不同的游戏优化道路

NVIDIA和AMD不同的游戏优化道路

2014-10-10张平《微型计算机》2014年9月下

在之前的一个新闻中,AMD和业界一部分开发人员,对NVIDIA的GameWorks进行了不太正面的讨论,焦点集中在NVIDIA的GameWorks比较封闭、没有源代码以及非NVIDIA平台难以优化等……这里有了一个新的概念:NVIDIA GameWorks。什么是GameWorks?GameWorks带来了哪些变化呢?它又和AMD的Mantle有什么差异呢?

NVIDIA和AMD不同的游戏优化道路
NVIDIA和AMD不同的游戏优化道路

什么是NVIDIA的GameWorks?

在2013年蒙特利尔的一次会议上,NVIDIA推出了一个全新的游戏开发包GameWorks,它整合了NVIDIA的PhysX、TXAA、曲面细分、HBAO+以及FlameWorks、FaceWorks等工具,可以帮助开发者使用NVIDIA的各种3D技术,简化开发流程。在GameWorks中,NVIDIA不但将自己所有的新技术打包加入,更为重要的是,NVIDIA还给出了一整套性能调试、Bug去除、功能验证等解决方案,整个GameWorks横跨Android和Windows平台,并且同时兼容OpenGL和DirectX。这个开发包的作用就像其名称那样—为游戏而生,能为游戏开发者节省时间,还能为游戏带来更好的特效和运行效率。

在早期的游戏开发阶段,游戏开发都是由少数几位主要程序员来完成的。游戏公司或许会在多款游戏上使用同一种引擎技术,随着这些游戏项目越来越大,焦点则变成了制作游戏内容,对开发者来说,更多的特效意味着更优秀的画质,也意味着可以吸引到更多的玩家。由于工期紧迫,开发全新的游戏技术所带来的风险是开发商负担不起的。当今游戏业的技术进步在很大程度上是由供应商把最新的游戏引擎技术许可给各个开发商使用。开发商只需要很好地平衡游戏的性能以及新技术在游戏中的比例,同时确保新技术不会出现问题,就能更快、更轻松地打造新游戏。

GameWorks是基于软件层面优化开发的技术,而非优化现成游戏运行效率或者渲染画质的技术,由此看来它和Mantle就是完全不一样的。至于GameWorks到底优化了些什么,怎么实现优化“襁褓”中的新游戏,则在后面慢慢道来……

GameWorks有哪些秘密?

NVIDIA在自己的开发者网站上公布了有关GameWorks的内容:
1. VisualFX:视觉特效解决方案
2. PhysX:大名鼎鼎的物理特效解决方案
3. CoreSDK:部分和游戏有关的功能实现的代码和接口
4. OptiX:光线追踪引擎
5. Samples:一些实际的案例展示
6. Tools:开发调试工具
下面,本文就为大家简单介绍这六个部分的内容。

VisualFX:NVIDIA视觉技术大合集

NVIDIA将之前开发的有关视觉效果的技术组合起来形成了VisualFX。本文着重介绍其中几个新奇好看的技术。

NVIDIA FlameWorks
NVIDIA FlameWorks

NVIDIA FlameWorks

FlameWorks的实际效果展示中可见和物体有明显的交互。这是因为FlameWorks中的火焰都是真实的粒子,有自己的运动状态。不过,FlameWorks本身需要较高的计算资源,计算网格数量是可伸缩的,在性能较低的产品上可以缩减粒子数量。FlameWorks是完全基于DirectX 11的,AMD的产品同样有可能运行它。

NVIDIA HairWorks
NVIDIA HairWorks

NVIDIA HairWorks

HairWorks不仅仅局限在头发效果的展示中,对动物的毛皮效果也有相当出色的呈现。HairWorks中的毛发计算技术拥有形状和样式控制、自动形态调整、毛发投射阴影、风力相互作用以及可调级别等诸多优势。HairWorks是基于DirectX 11的技术,AMD显卡也可以运行。

NVIDIA WaveWorks
NVIDIA WaveWorks

NVIDIA WaveWorks

WaveWorks是一项海洋交互模拟的新技术,它可以带来非常逼真的波浪以及波浪和船体运动、碰撞的实时情况,从微风徐徐的平静海面到暴风雨下的狂猛巨浪都能非常真实的再现。

NVIDIA Turbulence
NVIDIA Turbulence

NVIDIA Turbulence

NVIDIA Turbulence主要的目的在于模拟大规模的粒子在各种力场下的运动状态。比如大量的火花在受到风力吹动、大量的粒子在不规则的力作用下的相互状态等。Turbulence和FlameWorks有类似的地方,他们都是大规模粒子计算,不过其粒子规模和约束条件不同,算法方面也应该有比较大的差异。

NVIDIA FaceWorks

NVIDIA FaceWorks
NVIDIA FaceWorks

除了上述四个比较有趣、精彩的技术外,VisualFX中还带来了其它技术。NVIDIA FaceWorks,就是大家都很熟悉的“光头大叔”,其皮肤处理技术和表情合成技术依旧是业内首屈一指的。NVIDIA GI Works全局光照技术包含了比较出色的实时全局照明算法、镜面效果、完全动态的计算以及可调节的计算精度等。NVIDIA ShadowWorks就是包含了HBAO+和高级软边阴影两项优化方案。最后的NVIDIA PostWorks则是后处理技术的大集合,目前包含了TXAA和景深效果两个比较常用的后处理特效。

PhysX:NVIDIA继续开拓

PhysX对NVIDIA来说已经非常传统了。但是在NVIDIA GameWorks的PhysX包中,还是看到了很多的新技术介绍。

GameWorks的PhysX分类中包含了五个部分,其中PhysX SDK是作为PhysX技术的SDK开发包存在,本身没有太多可看的地方。

PhysX布料
PhysX布料

PhysX破坏的优势在于有无限可拆分的破坏能力,能够模拟现实物体的破碎情况,尤其是玻璃、建筑等表面破碎。PhysX布料是目前最先进的布料模拟方案,可以实现各种不同类型的布料模拟以及目前其它替代技术尚无法实现的多层布料的模拟等。PhysX粒子也是模拟大规模粒子计算的技术,它主要被用在破坏、爆炸等粒子模拟上,也有部分游戏使用了PhysX粒子来丰富战斗场景。PhysX FleX则是一个比较有趣的新技术,它的主要方向是计算软体和黏体的物理状态。

GameWorks其它部分

GameWorks剩下的部分大多数都属于开发和技术性内容,本文只做简单介绍。

CoreSDK部分主要是涉及到有关NVIDIA的一些API和工具内容。包括NVAPI、GeForce Experience的相关API、跨平台游戏控制器API以及OpenAutomate。这部分内容主要和开发人员有关,普通玩家基本不会遇到。

NVIDIA Samples
 NVIDIA Samples

接下来的OptiX是基于NVIDIA硬件的可编程光线追踪技术。NVIDIA提供OptiX技术的目的在于为有需要的开发人员提供一整套完整的光线追踪加速服务。相比传统的CPU计算光线追踪,NVIDIA的OptiX可以在GPU上执行,对CUDA、Direct3D和OpenGL都有很好的适应性,不但速度更快,灵活度也更高。

PhysX FleX
PhysX FleX

在NVIDIA Samples部分,有大量已经成熟技术的实例可供用户观看。Samples分为OpenGL和DirectX两种,DirectX的绝大部分案例都是之前已经出现过多次或者比较成熟的案例,新意不多。倒是OpenGL部分有很多有趣的内容,乐于探索的用户可以进一步研究。

最后部分Tools工具包可以算是对开发人员最为重要的部分。因为Tools就是帮助开发人员分析图形部分的内容、调试图形性能甚至帮助追踪、解决Bug。在Tools中,包含NVIDIA专门为图形用户推出的调试工具Nsight,它可以实时分析每一帧画面的渲染情况,方便了调试人员的工作。

Mantle对比GameWorks,殊途但是同归

说了这么多GameWorks的内容,最根本的问题来了。NVIDIA的GameWorks和AMD的Mantle有什么差别呢?谁更出色一些呢?

首先,GameWorks和Mantle虽然都宣称改善游戏体验,但是他们的做法和方向是截然不同的。

AMD Mantle是一个辅助性图形API,AMD声称,在一台CPU成为瓶颈的系统中,Mantle API能利用GPU减轻CPU工作负荷,新的API、新渲染技术可以让底层直接访问GPU资源,减小CPU开销,使PC平台的优化和效率达到游戏机的水平,从而大幅提升运行效能;而在一台GPU瓶颈的系统中,提升的效果比较有限。AMD最有竞争力的CPU产品在中低端,Mantle API可以让一颗中端CPU也能充分利用高端GPU的性能。GPU成为系统的关键部分,它的升级比以往更加重要。

GameWorks与这种强调硬件底层的优化方式完全不同,它并不针对API之类的底层的编程语言,而是面向高层开发语言。简单点理解,GameWorks更像是一个完整的、对NVIDIA硬件友好程度更高的、方便游戏开发商使用的游戏开发“加强辅助软件包”。最乐观的情况下,游戏开发商使用GameWorks不需要对API进行调整,甚至不需要对已经开发的游戏引擎做大的改动,就可以直接加入GameWorks中的技术,从而获得直接而鲜明的改变。此外,GameWorks带来的效果并非是游戏效能的提升,而是通过使用更多新的技术,带来游戏画面质量的升级,这也是GameWorks和Mantle最大的差别。

另外值得注意的是,无论是GameWorks还是Mantle都有相当大的排它性。

NVIDIA OptiX
NVIDIA OptiX

虽然AMD一再声明,自己的Mantle是开放的。但只要稍微认真分析,就会发现这句“开放”只是一句空话,是根本无法达到的。在目前的技术条件下,Mantle只能针对采用了GCN架构的AMD GPU优化,对之前的VLIW架构的产品几乎是无能为力的。只有使用GCN架构才能享受到Mantle,AMD并不会开放GCN架构设计的底层信息给对手。不仅如此,假使NVIDIA接受了Mantle,对自己的GPU做了一些改进后可以支持Mantle,且不说这样的效率如何,Mantle的制定权在AMD手中,一旦AMD作出改动,NVIDIA不跟进的话(跟进难度太大),那么AMD又可以宣称Mantle是开放的,只是对手不愿意而已,开放又毫无意义了。

NVIDIA对GameWorks有关技术开放的话题闭口不谈,甚至对开发商来说,GameWorks也是处于黑盒状态。这也就带来了本文一开始的那个话题:AMD和部分开发商认为,GameWorks属于黑盒操作,一旦游戏采用了GameWorks的技术,对AMD的产品来说就不够公平。NVIDIA的反唇相讥则是“没有源代码也一样可以优化”—这里问题的焦点在于采用了GameWorks技术的游戏在AMD显卡上运行出现的效率降低,可能使得AMD认为自己的产品受到了“劣化”。实际上和Mantle的排它性类似,GameWorks是基于NVIDIA的硬件开发的,专用于优化NVIDIA显示核心架构的技术,所以在NVIDIA产品上运行效率高是理所当然的。不同架构的AMD显示核心自然享受不到这种优化,甚至因为其设计差异反受其累,使得AMD的产品在采用了GameWorks技术的游戏中表现难以让人满意。

AMD Mande
AMD Mande

总的来说,无论是Mantle还是GameWorks,都不仅仅是一种优化技术,更具有战略布局的意味,是AMD和NVIDIA希望在游戏领域扩大话语权、拉拢更多厂商同时将影响力投射至硬件销售商的技术手段。虽然可能某些技术在NVIDIA和AMD的产品上可以共存,但运行效率的差异和补丁优化的纷争也会随之而来,这也是厂商吸引用户以及扩大影响力的好机会。对用户来说,无论是AMD还是NVIDIA的特色技术使得对方的产品在较低效率下运行,实际上都是对用户权益的一种损害,这意味着游戏厂商没有向支付了同样金钱的客户提供同样质量的服务。当然,目前这些事态都被控制在一个可控范围内,无论是NVIDIA、AMD还是游戏厂商也都只能打打口水仗,我们只能期待未来这样的事情尽可能少的发生,不要影响用户体验才好。

分享到:

用户评论

用户名:

密码: