专业游戏论文!《星际争霸2》图像技术全解析

2008-09-01 11:11:45 来源:不详 作者:佚名 编辑:dsgames568 浏览:loading

透明物体渲染

  前面我们已经提过延迟渲染比较严重的缺陷就是不支持透明物体,而且目前也没有什么有效的修正办法,星际2引擎的开发人员发现,就算彻底修正延迟渲染在这方面的缺陷,整个引擎的渲染管线在处理透明物体的时候又会产生新的问题。所以开发人员并不打算这么做,他们发现在整个游戏场景中,只有少数的透明或半透明物体会对画面效果产生比较明显的影响,因为这些物体的透明属性会让背面物体的阴影透过而影响自己身上的打光效果。所以程序员先把场景中受到光照效果明显的透明物体挑选出来,然后再对其进行手工标识,命令引擎对这些物体采用forward rendering的方式进行光照运算,虽然这种处理方式需要多个pass才能完成,增加了部分开销,但这样就巧妙地避开了延迟渲染模式下的缺陷,而不用对引擎做大规模手术改造。而且拆分多个pass还有另一个优点,那就是在渲染阴影贴图的时候不用开辟多个阴影缓冲,不同光源对应的阴影贴图可以依次连续渲染到对应的物体上。

电脑游戏

屏空间环境光遮蔽

  随着容积阴影与阴影贴图等先进投影技术的相继引入,3D游戏中的光影效果在过去几年里有了翻天覆地的改进。尽管如此,几乎当前所有的游戏在光影处理上都存在一个重大缺陷——那就是缺乏对“间接光照”的表现。比如当年以出色的光影效果而闻名的DOOM 3,虽然其光影效果令玩家们印象深刻,但当时仍有很多人发现了该游戏在处理光照效果上存在一个重大缺陷:游戏中的场景处于光源之内的就“灯火通明”,而光源之外就是“漆黑一片”,明亮区域与黑暗区域之间缺乏过渡,完全没有所谓的“半影区域”,这样整个环境看起来就显得相当生硬突兀。实际上这就是由于DOOM 3缺乏对“间接光照”的计算所造成的,在现实环境中,光束的行程并非只局限于从光源出发然后到接收物体处结束,事实上由于自然界中的大部分物体对于光线都存在不同程度的反射率,所以光束在到达接收物体表面之后又有一部分被反射到周围的物体上,这时光线的接收体已经变成了“环境光源”,对其周围的物体跟场景能够产生光照效果。光线的跳转、转移使得“直接光照”以外的区域也能受到一定程度的光照,从而产生一种“半亮半影”的自然过渡区域,而这种效果正是“间接光照”所要表现的。

  事实上不仅仅是DOOM3,后来发布的Riddick、FEAR、SCCT、Quake 4等光影效果出众的游戏同样缺乏对间接光照的支持。只有HL2采用Radiosity Normal Maps技术在一定程度上实现了间接光照,但由于HL2中动态光源太少加上蹩脚的投影技术,最终出来的效果并不出众。而跳票王STALKER也秘密内置了对间接光照的支持,虽然效果比HL2要好许多,但由于性能代价太大以及算法还不够完善等问题而被开发商隐藏起来,玩家只能通过控制台来打开。

  Real-Time Ambient Map(实时环境光遮蔽贴图,近来开始走红的实时间接光照实现算法,STALKER在室外场景就采用了该技术来实现环境光照,下文简称RAM),跟之前的做法相比,采用RAM每象素只需保存一个标量环境遮蔽值,该数值可以通过向所有方向发射光线来计算,而且最终得出的数值还可以反复使用。RAM在着色程序中根据带有遮蔽值的象素、相对于表面的光照位置以及光照颜色和表面法线等信息来计算物体表面对光线的接收程度。值得一提的是,这里计算得出的结果只是一个近似值,精确度不高,但是对于欺骗人眼还是没有问题的。

  为了提高RAM的效率跟适用范围,Crytek曾对该算法进行了改进,并将其纳入CryEngine 2用于模拟全局光照效果,改进后的算法称为“Screen-Space Ambient Occlusion” (屏空间环境光遮蔽,下文简称SSAO)。SSAO通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以表现出物体身上在环境光照下产生的轮廓阴影。由于可以CryEngine2“逐象素场景深度计算”技术计算得出的深度值直接参与运算,所以SSAO的效率相比RAM有了显著的提高。

  SSAO让Crysis在光棚化渲染下模拟全局光照方面取得了突破性成功,以致于近来许多新游戏(比如跟CRYSIS有莫大渊源的《FarCry 2》和XB360的赛车移植大作《Burnout》)不约而同纷纷仿效!而《星际争霸2》也不例外,暴雪更是坦诚之所以采用SSAO真是收到Crysis成功范例的启发。当然星际2引擎也不是完全照搬Crysis的算法,而是作了一些改进,而且前面提到的保存于G-Buffer中的深度值也有效提高了SSAO的效率,这点跟CryEngine 2 的做法也非常相似。

上一页 1 2 3 4
友情提示:支持键盘左右键“← →”翻页
游民星空APP
随时掌握游戏情报
code
休闲娱乐
综合热点资讯
单机游戏下载
好物推荐
游民星空联运游戏