游戏引擎剖析第2部分.docx

游戏引擎剖析第2部分.docx

ID:57828437

大小:17.92 KB

页数:4页

时间:2020-03-30

游戏引擎剖析第2部分.docx_第1页
游戏引擎剖析第2部分.docx_第2页
游戏引擎剖析第2部分.docx_第3页
游戏引擎剖析第2部分.docx_第4页
资源描述:

《游戏引擎剖析第2部分.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、世界的灯光  在变换过程中,通常是在称为观察空间的坐标空间中,我们遇到了最重要的运算之一:光照计算。它是一种这样的事情,当它工作时,你不关注它,但当它不工作时,你就非常关注它了。有很多不同的光照方法,从简单的计算多边形对于灯光的朝向,并根据灯光到多边形的方向和距离加上灯光颜色的百分比值,一直到产生边缘平滑的灯光贴图叠加基本纹理。而且一些API实际上提供预先建造的光照方法。举例来说,OpenGL提供了每多边形,每顶点,和每像素的光照计算。   在顶点光照中,你要决定一个顶点被多少个多边形共享,并计算出共享该顶点的所有多边形法向量的均值(称为法向量),并将该法向量赋顶点。一个给定多边形的每个

2、顶点会有不同的法向量,所以你需要渐变或插值多边形顶点的光照颜色以便得到平滑的光照效果。你没有必要用这种光照方式查看每个单独的多边形。这种方式的优点是时常可以使用硬件转换与光照(T&L)来帮助快速完成。不足之处是它不能产生阴影。举例来说,即使灯光是在模型的右侧,左手臂应该在被身体投影的阴影中,而实际上模型的双臂却以同样的方式被照明了。  这些简单的方法使用着色来达到它们的目标。当用平面光照绘制一个多边形时,你让渲染(绘制)引擎把整个多边形都着上一种指定的颜色。这叫做平面着色光照。(该方法中,多边形均对应一个光强度,表面上所有点都用相同的强度值显示,渲染绘制时得到一种平面效果,多边形的边缘不

3、能精确的显示出来)。  对于顶点着色(Gouraud着色),你让渲染引擎给每个顶点赋予特定的颜色。在绘制多边形上各点投影所对应的像素时,根据它们与各顶点的距离,对这些顶点的颜色进行插值计算。(实际上QuakeIII模型使用的就是这种方法,效果好的令人惊奇)。   还有就是Phong着色。如同Gouraud着色,通过纹理工作,但不对每个顶点颜色进行插值决定像素颜色值,它对每个顶点的法向量进行插值,会为每个顶点投影的像素做相同的工作。对于Gouraud着色,你需要知道哪些光投射在每个顶点上。对于Phong着色,你对每个像素也要知道这么多。   一点也不令人惊讶,Phong着色可以得到更加平滑

4、的效果,因为每个像素都需要进行光照计算,其绘制非常耗费时间。平面光照处理方法很快速,但比较粗糙。Phong着色比Gouraud着色计算更昂贵,但效果最好,可以达到镜面高光效果("高亮")。这些都需要你在游戏开发中折衷权衡。不同的灯光  接着是生成照明映射,你用第二个纹理映射(照明映射)与已有的纹理混合来产生照明效果。这样工作得很好,但这本质上是在渲染之前预先生成的一种罐装效果。如果你使用动态照明(即,灯光移动,或者没有程序的干预而打开和关闭),你得必须在每一幀重新生成照明映射,按照动态灯光的运动方式修改这些照明映射。灯光映射能够快速的渲染,但对存储这些灯光纹理所需的内存消耗非常昂贵。你可

5、以使用一些压缩技巧使它们占用较少的的内存空间,或减少其尺寸大小,甚至使它们是单色的(这样做就不会有彩色灯光了),等等。如果你确实在场景中有多个动态灯光,重新生成照明映射将以昂贵的CPU周期而告终。   许多游戏通常使用某种混合照明方式。以QuakeIII为例,场景使用照明映射,动画模型使用顶点照明。预先处理的灯光不会对动画模型产生正确的效果--整个多边形模型得到灯光的全部光照值--而动态照明将被用来产生正确的效果。使用混合照明方式是多数的人们没有注意到的一个折衷,它通常让效果看起来"正确"。这就是游戏的全部–做一切必要的工作让效果看起来"正确",但不必真的是正确的。   当然,所有这些在

6、新的Doom引擎里面都不复存在了,但要看到所有的效果,至少需要1GHZCPU和GeForce2显卡。是进步了,但一切都是有代价的。   一旦场景经过转换和照明,我们就进行裁剪运算。不进入血淋淋的细节而,剪断运算决定哪些三角形完全在场景(被称为观察平截头体)之内或部份地在场景之内。完全在场景之内的三角形被称为细节接受,它们被处理。对于只是部分在场景之内的三角形,位于平截头体外面的部分将被裁剪掉,余下位于平截头体内部的多边形部分将需要重新闭合,以便其完全位于可见场景之内。(更多的细节请参考我们的3D流水线指导一文)。  场景经过裁剪以后,流水线中的下一个阶段就是三角形生成阶段(也叫做扫描线转

7、换),场景被映射到2D屏幕坐标。到这里,就是渲染(绘制)运算了。纹理与MIP映射  纹理在使3D场景看起来真实方面异常重要,它们是你应用到场景区域或对象的一些分解成多边形的小图片。多重纹理耗费大量的内存,有不同的技术来帮助管理它们的尺寸大小。纹理压缩是在保持图片信息的情况下,让纹理数据更小的一种方法。纹理压缩占用较少的游戏CD空间,更重要的是,占用较少内存和3D显卡存储空间。另外,在你第一次要求显卡显示纹理的时候,压缩的(较小的)版

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。