VimIy微民网,让世界倾听微民的声音! 设为首页 | 加入收藏 | 网站地图
当前位置:主页 > 游戏 >

【搬运】 主机游戏技术普及。三重缓冲(二)

整理时间: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拿走了!
    

    
    
    

关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系我们
Copyright © 2012年2月8日