【搬运】 主机游戏技术普及。三重缓冲(二)
整理时间:2013-08-17 00:25 来源:www.vimiy.com 作者:编辑 点击:次
【楼主】2013-08-15 12:24
» 主机游戏技术普及。三重缓冲(二)
前情提要:http://bbs.ngacn.cc/read.php?tid=6461068
第十天 光照(Lighting)基础
首先,要跟大家说声抱歉。因为我前几天的难度没有把握好。
我这一系列文章的目的,是让普通的玩家对主机游戏的技术有所了解,并且产生兴趣。了解的程度完全是由读者来决定的。
基于这个目的,分析问题的方法就比知识重要多了。这也是为什么我讲解的都是普遍的原则,而比较少提到非常细节的知识。
比如说,现在大家都知道SS是不用三角形的,但是我还是坚持,在结论准确的情况下,统一标准使用三角形来计算和分析问题。互联网上流传的错误结论很多,只有掌握了分析的能力,才能去伪存真。
而前两天的文章有点本末倒置,细节太多,方法太少。我会注意回归正轨,更好的满足普通玩家的需求。
当然,也非常欢迎各位看管踊跃讨论和指正。
今天要开始聊最基础的光照(Lighting)。
首先我们来复习一下,之前学过哪几种数据?
顶点(Vertex),索引(Index),UV,纹理(Texture)。
而为了实现最基本的光照,我们还需要一种额外的数据,叫做法线(Normal)数据。
很多玩家肯定要说了:我听说过!法线贴图是吧!
我想他们指的是Normal Map,这跟我们的法线数据是两回事。
法线数据是用来记录每个三角形的指向的。它也是一个xyz三维坐标。
每个三角形都在一个平面上,它的法线的方向就是垂直于这个平面的方向。

不过,需要注意的是,游戏中的法线数据是跟顶点对应的。每一个顶点对应一个法线数据。
这个法线数据的值,是它周围所有三角形法线数据的平均值。
有了所有顶点的法线数据,显卡就可以计算出任意一个像素所属三角形的方向了。就像我们以前说过的,这也是插值运算(Interpolation),是属于显卡的工作。
有了法线数据,显卡就可以做最简单的光照效果了。
我们来想象一下最简单的一个平面,当光线的方向和法线的方向完全一致是,光线是垂直射入的。这时候平面最亮了。
当光线的方向慢慢变化,它跟法线的夹角越大,平面能接受的光线就越少,就会越来越暗。

当光线和这个平面完全平行时,就接受不到任何光照了。
再转下去,平面就会背对光线,还是没有任何光照。
合金装备1里面人物的光照就是基于这么简单的原理。

具体的计算方法,就是简单的向量的点乘。把法线向量和光线向量乘起来,再乘以光源本身的强度,就得到了能接受光照的量了。
当光照的量最大时,这个像素的颜色就是纹理本身的颜色。
当光照的量是0时,这个像素的颜色就是黑色。
任何的中间情况都是可能的。
细心的玩家肯定要问:光源的颜色不同怎么办?如果有好几个光源怎么办?
当光源不是纯白色的时候,我们再乘以光源的RGB值就是最终的像素值了。
多个光源就是把RGB值加起来。
这些就都是很细节的内容。
今天我们说的这种最最基础的光照叫方向光照(Directional Lighting),因为光照的强度只跟光线的方向有关。以后我们会逐渐提到更复杂的光照技术。
最后,我们来复习一下,光照需要哪一种数据?
大家明天见!来一张真三国无双系列的图,我收集的非常不全:

351买的psn上的数字版,357被zackxs拿走了!
LOL罗辑思维全国人大代表真三搞笑视频柳岩
Copyright © 2012年2月8日