星际2图形引擎说明:SC2中的效果与技术
由于原文非常之长,涉及大量术语,翻译难度较大,所以翻译者仅翻译了他认为重要的部分,也就是大多数人关心的
5.0择要:
在本文中大家将展现用于星际2剧情部分的图像技术与算法.大家将展现为实现艺术效果而订定的一系列目标,同时大家也将告诉大家暴雪的艺术风格对大家的引擎设计产生了什么样的影响. 通过耽误缓冲技术---他们被大量用于景深,法线,色彩元素---的说明,大家将揭开大量的技术细节,包括光线管道,全屏闭塞,景深效果.别的,关于影子的一些成果也将在本文中被说明.
5.1说明:
设计星际2的挑战首先在于这是一款非常成功大作的续集,别的,图形引擎的选择也是非常挑剔的,大家很快就会看到,暴雪的艺术风格对大家的引擎产生了什么影响.
5.2引擎的设计目标:
早在研发的初期,大家就确定引擎会有这样一些特性:
可塑性(或者说可伸缩性可适应性),这是第一位的引擎的可适应性是大家考量的首要因素.暴雪的游戏从来以较广的硬件适应性而闻名---即使在较老式的机器上也能够运行--同时又能提供优秀不俗的性能表现. 而今,大家希望将这一传统发扬光大,大家将为所有的现存硬件举行优化,不管是镭9800,Geforce 5xxx还是最新的GT200和HD 4800.大家的目标是在所有的GPU平台上都能够获得最佳表现. 对可塑性的需求需求大家设计一个非常精妙的Shader框架.对此另有一个章节讨论,大家不会在这里睁开,只是会作一个简单的综述.
由于大家只有1~2位艺术家计划独立编写shader,所以大家并没有把精神放在开发一套精妙的shader原形开发工具上.与现代的业界潮流相反,大家的努力方向是让shader框架越发灵活,让编程越发轻松.因而,在大家的开发过程中,编写shader和在project里加入C++文档没什么区别.打个比方来说,大家处理shader代码就像在C++中调用库资源.所以,shader这个概念在SC2的开发中含义很广.每一个shader调用点都能转换为不同的shader,而在shader代码中你能随意调用每个调用点.因此你很难说大家到底用了多少个"独立的"shader。
因为针对不同的图像设置(也就是游戏中你选择的图像设置,译者注),都市有一整套调整后的shader效果与技术。 (这里做一个小的批注,也就是说,blizzard会根据你选择的图像设置,生成一套permutated的shader,相当于一种优化方式---译者注)
同时,得益于灵活的shader框架,大家的调试事情也变得非常轻松。艺术家有新的构思,只需要在3D-Max上画出来,然后程序员把生成的代码优化,就能加入大家的shader库中,这统统都非常快,而艺术家并不需要关心技术层面的问题。长话短说,SC2包罗了8000行独立、不重复的shader代码,包罗在70个文档中。那么好的,大家现在就该进入重点了。
将事情更多地交给GPU,而不是CPU
最早,大家就决定通过把更多任务交给GPU而不是CPU来榨取最多的游戏效能效果与技术。
在SC2中,绝大多数情况下,大家都是在一个比较远的距离观察单位,所以在实际游戏中,增加单位的多边形对游戏体验的边际收益很低。在这种情形下,大家很难平衡CPU的负载。
引擎的双重特性
SC2的引擎必须具有双重的特性。)
而对付GPU来说,恰恰相反,因为在RTS游戏中,预渲染任务较轻,所以相应的像素渲染负载趋向于常数。尽管多边形数量方面可能会在某些场景出现较大的颠簸,但是现代GPU的计算能力已经能解决这个问题。所以大家尽量地把艺术家的构思通过象素shader来表达,同时尽量降低向量shader的压力。
最主要的缘故原由是:在SC2中,你能够生成并控制几百个单位---比如说蛉虫或者水师陆战队,在多人游戏中,比如8人的游戏中,同一个屏幕内的单位可能达到近千的峰值。正因此,大家避免任何运用过多多边形的艺术元素。(意思就是CPU的处理能力会导致一些难以解决的问题,使大家很难兼顾所有硬件。因为一方面,在实际游戏中,大家专注于动作而不是画面细节,毕竟大家是在一个很远的距离上看大量的单位。但是同时,大家的引擎也将用于剧情模式,在这个模式中,玩家将通过引擎生成的动画来体验游戏中的故事、角色、传奇,并和某些角色举行互动。
现在,大家就来展示,这些目标怎么地影响了大家的算法选择和引擎设计。从某种程度上来说,更接近于FPS游戏的情况。
在这种情况下,恰恰相反地,含有较少的实体,拥有和较近的镜头和更多的视觉。大家将通过一些游戏画面和游戏内的剧情电影来阐述这些技术细节。(本文后面是大量的技术细节与算法,译者只选取其中的重要部分举行意译,此前为全文翻译)
1.动态光源
SC2将全面运用动态光源,你乃至能细致到,一队水师陆战队,他们身上闪烁的光源能影响到周围的情况贴图。并且运用了大量的HDR效果。
2.多层面地图渲染
SC2的地图全部都是多层的,也将通过多层面方式渲染
3.耽误光照技术
在剧情模式中,光照模型的复杂程度前所未有,而耽误光照技术使得这成为现实效果与技术。
4.SSAO技术,我不知道该怎么翻译这个名词,大意是全屏幕闭塞情况效果
大家从Crysis等优秀游戏中吸取了灵感,但是大家的SSAO是独立完成的,以下你能够看到一些效果图,这能让室 内的情况效果越发逼真,更有利于烘托气氛,这种技术大量地应用于大家的剧情模式中效果与技术。本论文用了长达6页来 阐述这一技术,具体细节说实话我也看不懂,但是能想象这将是剧情模式的招牌特效。
5景深效果
景深效果是电影级别渲染所不要缺少的要素。为了兼顾实时计算的需求,大家采用了不损失画质的一种近似算法 。大致就是在预期视野距离采用清晰图像,在偏离预期视野的地方运用blur效果(根据距离决定blur程度)。
6半透明渲染效果,和半透明阴影
由于耽误缓冲技术,大家能实现大量的半透明艺术元素。比如在游戏中,烟雾和爆炸也将具有阴影,并且根据半透明物体的颜色,阴影也具有本身的颜色!!