欢迎来到天天文库
浏览记录
ID:18924180
大小:211.50 KB
页数:36页
时间:2018-09-21
《游戏引擎剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、游戏引擎剖析原文作者:JakeSimpsonApril12,2002第1部分:游戏引擎介绍,渲染和构造3D世界渲染器 让我们从渲染器来开始游戏引擎设计的探讨吧,我们将从游戏开发者(本文作者的背景)的角度来探讨这些问题。事实上,在本文的各个段落,我们将常常从游戏开发者的角度探讨,也让您像我们一样思考问题! 什么是渲染器,为什么它又这么重要呢?好吧,如果没有它,你将什么也看不到。它让游戏场景可视化,让玩家/观众可以看见场景,从而让玩家能够根据屏幕上所看到的东西作出适当的决断。 当构造一个游戏引擎的时候,你通常想做的第一件事情就是建造渲染器。因为如果看不见任何东西–那么你又如何知道你的程序
2、代码在工作呢?超过50%的CPU处理时间花费在渲染器上面;通常也是在这个部分,游戏开发者将会受到最苛刻的评判。 在一般意义上,渲染器的工作就是要创造出游戏的视觉闪光点,实际上达到这个目标需要大量的技巧。3D图形本质上是用最少的努力创造出最大效果的一门艺术,因为额外的3D处理在处理器时间和和內存带宽方面都是极为昂贵的。它也是一种预算,要弄清楚你想在什么地方花费处理器时间,而你宁愿在什么地方节省一些从而达到最好的整体效果。接下来我们将会介绍一些这方面的工具,以及怎样更好的用它们让游戏引擎工作。建造3D世界 3D物体(对象)被储存成3D世界中的一系列点(被称为顶点),彼此之间有相互关系,
3、所以计算机知道如何在世界中的这些点之间画线或者是填充表面。一个立方体由8个点组成,每个角一个点。立方体有6个表面,分别代表它的每一个面。这就是3D对象储存的基础。对于一些比较复杂的3D物体,比如说一个Quake的关卡,将有数以千计(有时数以十万计)的顶点,和数以千计的多边形表面。 参见上图的线框表示。本质上与上面的立方体例子类似,Quake的关卡仅仅是由许许多多的小多边形组成的一些复杂场景。模型和世界如何储存是渲染器的一部份功能,而不属于应用程序/游戏部份。游戏不需要知道对象在內存中如何表示,也不需要知道渲染器将怎样把他们显示出来。游戏只是需要知道渲染器将使用正确的视野去表示对象,并将在正
4、确的动画幀中把正确的模型显示出来。 在一个好的引擎中,渲染器应该是可以完全被一个新的渲染器替换掉,并且不需要去改动游戏的一行代码。许多跨平台引擎,而且许多自行开发的游戏机引擎就是这样的,如Unreal引擎,――举例来说,这个游戏GameCube版本的渲染器就可以被你任意的替换掉。 让我们再看看内部的表示方法—除了使用坐标系统,还有其他方法可以在计算机內存里表示空间的点。在数学上,你可以使用一个方程式来描述直线或曲线,并得到多边形,而几乎所有的3D显示卡都使用多边形来作为它们的最终渲染图元。一个图元就是你在任何显示卡上面所能使用的最低级的绘制(渲染)单位,几乎所有的硬件都是使用三个顶点的
5、多边形(三角形)。新一代的nVidia和ATI显卡可以允许你以数学方式渲染(被称为高次表面),但因为这不是所有图形卡的标准,你还不能靠它作为渲染策略。 从计算的角度来看,这通常有些昂贵,但它时常是新的实验技术的基础,例如,地表的渲染,或者对物件锐利的边缘进行柔化。我们将会在下面的曲面片小节中更进一步介绍这些高次表面。剔除(Culling) 问题来了。我现在有一个由几十万个顶点/多边形描述的世界。我以第一人称视角位于我们这个3D世界的一边。在视野中可以看见世界的一些多边形,而另外一些则不可见,因为一些物体,比如一面看得见的墙壁,遮挡住了它们。即使是最好的游戏编码人员,在目前的3D显卡上,
6、在一个视野中也不能处理300,000个三角形且仍然维持60fps(一个主要目标)。显卡不能处理它,因此我们必须写一些代码,在把它们交给显卡处理之前除去那些看不见的多边形。这个过程被称为剔除。 如果全部多边形都在屏幕上,相同的纹理,相同的尺寸大小,正在往显示卡上传送多边形的应用程序除了传送多边形以外什么也不做,这时显卡能处理多少多边形数量,就是图形芯片厂商呈现给你的数字。 然而,在真实的游戏情形中,应用程序时常在后台做着许多其他的事情――多边形的3D变换,光照计算,拷贝较多的纹理到显卡內存,等等。不仅纹理要送到显示卡,而且还有每个多边形的细节。一些比较新的显卡允许你实际上在显卡內存本
7、身里面储存模型/世界几何细节,但这可能是昂贵的,将会耗光纹理正常可以使用的空间,所以你最好能确定每一幀都在使用这些模型的顶点,否则你只是在浪费显示卡上的存储空间。基本的图形管线流程 一个简单的例子,从游戏到多边形绘制的图形管线过程大致是这样: ·游戏决定在游戏中有哪些对象,它们的模型,使用的纹理,他们可能在什么动画幀,以及它们在游戏世界里的位置。游戏也决定照相机的位置和方向。 ·游戏把这些信息传递给渲染器。
此文档下载收益归作者所有