10年如何创造辉煌? 《星际争霸2》图形技术深入解读

时间:2022-08-01 12:59:41

10年如何创造辉煌? 《星际争霸2》图形技术深入解读

《星际争霸2》游戏的基石,延续DirectX9辉煌!(注:苹果系统的引擎是基于OpenGL接口)

DX9可以说是图形学上一个辉煌的时期,它带来的变革至今影响深远,同时也是寿命最长的图形学API之一。DX9的巅峰在于DX9c中,它使用了SM3.0着色语言,同时为oxgc的硬件提供了划时代的参考,不过《星际争霸2》依然使用PS2.0像素着色程序。

作为一款历经10多年开发的巨作,游戏有两个重中之重,其一是游戏性,其二是游戏图形技术。作为当时开发的游戏,图形引擎采用DX9是已经具备应有的超前性。同时可以更好地兼容DX9标准的硬件。

相对于DX10/DX11大行其道的今天,几乎所有游戏都会同时兼容DX9模式。这有几个方面的考量,一是硬件的兼容性问题,想想。游戏开发者不会顾广大使用DX9显卡的用户不理!另外一个就是性能表现更优异!由于DX9软件API,编程代码以及硬件发展历经的时间较成熟,所以对其优化的效果更加出色,这也表现在我们测试当中。即使同一游戏在同样设定当中,DX9模式拥有更好的性能。

相对于DX10/DX11,最大的不同就是DX9硬件仍然采用像素着色器和定点着色器分离的设计。当然,采用不同的着色器模型对于开发者来说有着不同的开发技巧,不过这并不影响写出优秀的图形代码,就如JAVA,c#等语言有着高效的开发效率,不过用C/C++同样可以写出大量高效的程序。

多年的等待成就图形巅峰?

《星际争霸2》并没有采用激进的图像特效,采用的是SM2.0着色器模型编写。在实际体验当中,可以了解到游戏和同期的基于DX10标准的RTS有一定的风格相异。游戏引擎在设计上采用了高度的扩展性,因此并不排除往后会加入新的图形元素。在当前游戏画面实测的角度看,游戏画质偏向胶质感,表面材质和粒子效果只能用华丽表述,和真实的视觉有一定的差距。相对于图形技术,游戏更多地精力放在与平衡性以及可玩性等方面。

《星际争霸2》图形引擎的设计目标分析

1 引擎的扩展性为重:

编辑解读:由于游戏开发持续了10多年,因此图形技术在期间已经经历了翻天覆地的变化,由当时DX9 SM2.0模型,到DX9c、DX10,DX10.1再到DX11。因此,引擎具备足够的扩展性,随时为游戏提供最新的图形特效。同时,由于游戏要适应广泛的硬件性能,因此既要让入门级配置的玩家提供足够的流畅性同时,也要为顶级发烧配置的玩家提供出色的视觉效果,所以在游戏中,可以看到显示效果设定当十分丰富。

从游戏设计上看,引擎具备极高的效率,代码开发的时候首先经过3DMAX渲染器渲染出原型后再由程序员对其做出改良和优化。游戏由8千个线性无关的渲染代码组成,同时配分到70个文件当中,笔者认为这样可以提高代码的执行效率以及增加代码的复用性,同时也让图形渲染更加精炼。

2 榨干GPU性能、CPU配合运算:

编辑解读:衡量一个游戏的高效性,首先就是考验程序对GPU利用率。《星际争霸2》的游戏引擎偏向把负载推向GPU。游戏中由于拥有大量的操作单位,加上复杂的光照,CPU是远远应付不了的。当在8人混战的时候,一个屏幕里可以容纳500个峰值单位,因此要求把把大量渲染在GPU上实现。并且在GPU的实现上,它可以提供更多的光照特效。

《星际争霸2》的光影效果主要由像素着色提供。当然,为了要容纳大量的单位,因此相对于像素渲染,模型的几何特征会相对简单(基于像素渲染的纹理技术和几何性能讨论可以参考本刊《Tesselation深入解析》)。采用了简单模型策略,在中低画质的大型对战场面渲染中,会出现上百万个三角形吞吐量,不过相对于现代的GPU来说这可以轻松应对的。相对于单位的几何特征,引擎更加专注于像素渲染,这主要依靠真实的光照模型。

3 游戏引擎的两个渲染模型:

编辑解读:游戏采用一个引擎同时渲染出两种画质模型,一种是实际游戏渲染模式另一种是故事模式的动画。从画质风格上看两者渲染的模式一样,只是模型精细程度以及光照的精确度不同。在游戏场景中,由于涉及到大量的单元,所以要求简化的模型以及近似的光照模型。而在故事模式的时候,由于只有少量的近景模型,因此模型的精细度可以调节到很高,同时也可以用上复杂真实的光照技术。

光照模型比拼

《星际争霸2》采用了的一个关键技术是延时渲染。延时渲染很早就被提出,不过由于当时的硬件局限性而没有很好地实现。随着GPU编程能力的目渐加强,基于复杂光照模型的延时技术被完美地应用到当下主流的GPU体系当中。由于游戏中支持广阔环境以及巨量的单位,因此同时渲染带来的性能压力是非常之大,并非一般主流硬件可以支撑。因此,延时渲染技术在一些设计较大的渲染范围中被提出使用。当下采用了延时渲染技术中,除了《星际争霸2》外,还有《S.T.A.L.K.E.R.》《killzone2》《Dead Space》以及《Crysis2》。

关键技术之延时渲染详解

在提前渲染中,要模拟环境中的所用光作用,渲染每个模型的时候,需要对每束光进行逐个像素的计算。这种模式存在缺陷,当光照只是局部的时候,要计算整个模型的运算量是十分巨大的。在复杂的光照环境中,光作用可能呈N次方增长,因此对于低端入门的硬件配置来说是不可承受的负担。

为了解决这个问题,游戏使用了延时渲染技术。延时渲染技术是把复杂的渲染,分开到几何,深度,颜色缓冲区当中各自渲染,最后把它们的效果叠加。不过,延时渲染有个明显的缺点就是需要大量的渲染缓存区以及高速带宽(大显存以及高带宽的显卡运行游戏有较好优势)。当然,延时渲染最大的优势是可以容易地操作多光源渲染。要知道,战斗场景中同时存在数百个单位以及数量极多的光源,要在这样多变复杂的场景当中实现真实的光照模型,所耗费的硬件资源是惊人的。其中,延时渲染可以很好地把效果质量和硬件消耗控制在线性函数上,相对于超前渲染技术,后者的效果质量是和硬件消耗呈指数性爆炸增长。

为了实现延时渲染,游戏采用MRTs(多重渲染目标)来代替以往分离式的渲染通道。多重渲染目标将绑定自身相关的信息,例如颜色,深度、像素的几何特征,环境光遮蔽信息,材料散射色泽,材质的反泽等。

鉴于延时光照所带来巨大的缓冲容量以及较高的数据带宽,因此延时技术只在局部光照环境中使用,而全局平行光照则继续采用超前渲染技术。相比之下,其实超前渲染和延时渲染的效果是一样的,但是它们在不同的环境下执行的效率有巨大差异。譬如在复杂光照以及大量渲染单元的时候,延时技术起到很好的效能优势。

为提升渲染效率,游戏采用Stenciltng,Early z和Early Stencil等测试模

上一篇:国货当自强 国产80PLUS电源推荐 下一篇:声霸归位? 创新X-Fi Titanium HD