我要投稿您的位置:星际争霸2 >> 新闻中心
[翻译] 星际2中的效果与技术
[已跟帖0条,共0人参与]作者:翻译:Slauter 文章来源:SigGraph 更新时间:2008-11-20 10:07:16
[重口味技术文章粗略翻译]星际2图形引擎全解密
本文版权属于其作者,翻译者Slauter@ngacn.com(Zhoukaituo@UVA.com).
本文欢迎转载,但是请注明原作者和bbs.sc2.cc/bbs.ngacn.cc
原文刊载于SigGraph第五期-2008
由于原文非常之长,涉及大量术语,翻译难度较大,所以翻译者仅翻译了他认为重要的部分,也就是大多数人关心的
部分.
标题:星际2中的效果与技术
作者Dominic Filion;Rob McNaughton
5.0摘要:
在本文中我们将展现用于星际2剧情部分的图像技术与算法.我们将展现为实现艺术效果而制定的一系列目标,同时我们也将告诉大家暴雪的艺术风格对我们的引擎设计产生了什么样的影响.通过延迟缓冲技术---他们被大量用于景深,法线,色彩元素---的介绍,我们将揭开大量的技术细节,包括光线管道,全屏闭塞,景深效果.此外,关于影子的一些成果也将在本文中被介绍。
5.1介绍:
设计星际2的挑战首先在于这是一款非常成功大作的续集,此外,图形引擎的选择也是非常挑剔的,我们很快就会看到,暴雪的艺术风格对我们的引擎产生了什么影响.
5.2引擎的设计目标:
早在研发的初期,我们就确定引擎会有这样一些特性:可塑性(或者说可伸缩性可适应性),这是第一位的
引擎的可适应性是我们考量的首要因素.暴雪的游戏从来以较广的硬件适应性而闻名---即使在较老式的机器上也能够运行--同时又能提供优异不俗的性能表现.而今,我们希望将这一传统发扬光大,我们将为所有的现存硬件进行优化,不管是镭9800,Geforce5xxx还是最新的GT200和HD4800.我们的目标是在所有的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中,你能够生成并控制几百个单位---比如说蛉虫或者海军陆战队,在多人游戏中,比如8人的游戏中,同一个屏幕内的单位可能达到近千的峰值。在这种情形下,我们很难平衡CPU的负载。(意思就是CPU的处理能力会导致一些难以解决的问题,使我们很难兼顾所有硬件。)而对于GPU来说,恰恰相反,因为在RTS游戏中,预渲染任务较轻,所以相应的像素渲染负载趋向于常数。尽管多边形数量方面可能会在某些场景出现较大的波动,但是现代GPU的计算能力已经可以解决这个问题。所以我们尽量地把艺术家的构思通过象素shader来表达,同时尽量降低向量shader的压力。
在SC2中,绝大多数情况下,我们都是在一个比较远的距离观察单位,所以在实际游戏中,增加单位的多边形对游戏体验的边际收益很低。正因此,我们避免任何使用过多多边形的艺术元素。
引擎的双重特性
SC2的引擎必须具有双重的特性。因为一方面,在实际游戏中,我们专注于动作而不是画面细节,毕竟我们是在一个很远的距离上看大量的单位。但是同时,我们的引擎也将用于剧情模式,在这个模式中,玩家将通过引擎生成的动画来体验游戏中的故事、角色、传奇,并和某些角色进行互动。在这种环境下,恰恰相反地,含有较少的实体,拥有和较近的镜头和更多的视觉。从某种程度上来说,更接近于FPS游戏的环境。
现在,我们就来展示,这些目标如何地影响了我们的算法选择和引擎设计。我们将通过一些游戏画面和游戏内的剧情电影来阐述这些技术细节。


最新评论
暂时没有新评论,快来抢沙发...