DX9压榨专家 半条命2神奇渲染引擎揭
编者按:本篇文章系PCPOP特约作者刘宏春供稿。刘宏春现正攻读软件工程硕士学位,他从大学本科期间开始研究计算机图形学以及DirectX编程,2004年他作为队长和3D渲染引擎主程序员,率领【北京工业大学放飞技术网】共4名队员参加微软“创新杯”大赛DirectX 9渲染项目,从全世界几十个参赛队中脱颖而出参加在巴西进行的决赛,并且在决赛中以富有民族气息的作品《龙之传说》一举夺得全球总冠军。与很多玩家一样,刘宏春平时酷爱FPS类游戏,这次PCPOP在FPS超级大作《半条命2》发布之际所做的【相关专题】大受读者欢迎,因此特约他写出一篇专业性、权威性很强的《半条命2》核心渲染技术分析以回报广大读者们的支持,同时为我们的专题划上一个圆满的句号。
本篇文章力图深入浅出的分析讲解《半条命2》使用的核心渲染技术,以及革命性的Source引擎是如何创造性的将DirectX 9的优势发挥到极至。我们的目标绝对不是让所有人都看不懂而大喊深奥,而是让游戏玩家、DirectX程序员以及3D建模人员等不同层次和领域的读者都能够有所收获。因此我建议大家慢慢看完本篇文章,你们一定会有所收获!
今年冬天,Valve给我们带来了2004年最令人期待的游戏大作之一——《半条命2》。相信玩过该游戏的玩家都对其中自然的光影效果、丰富的细节有着很深的印象,下面就让我们来看一看《半条命2》 的世界是如何呈现在大家的屏幕上的吧。
1. 《半条命2》中的创新理念-光能传递凹凸贴图 (Radiosity Normal Mapping)
使光影效果更加真实自然——“光能传递(Radiosity)”
为了使场景中的光照效果真实自然,《半条命2》 中对光影的处理使用了一种叫“光能传递”的技术。光能传递简单来说就是光的能量通过不断反射、折射,而在各个物体的表面间互相传递的过程。
各位读者都知道,我们所在的真实世界中,不仅仅是像镜子这样表面光滑的物体能够反射光线,而是基本上所有的物体的表面都会或多或少的把照射到上面的光线反射出去,这些光线就可以再照亮附近的其他物体。
所以一个物体表面被照亮的时候,它接受到的光不仅来自于各种光源,而且还来自于由其他物体表面反射过来的光线;这样我们就可以把照射到物体表面的光线分为两类:直接光照和间接光照。直接光照是从光源直接来的光照,而间接光照就是指从其他物体的表面反射过来的光照。
由于物体表面会被附近其他的物体遮挡住,根据遮挡程度不同,所受到的间接光照的光能也不均匀,造成角落里比较暗,平面的地方比较亮的效果。这就是光能传递最明显的特点。
不要小看这个光能传递过程,它是在真实的漫反射光照中最为复杂的一个过程,也是在渲染计算机动画时提升画面真实度的极为重要的一个因素。<