如今,在屏幕上生成像素,涉及到 3D 加速卡, API ,三維空間數學, 對 3D 硬件如何工作的理解等等。對於主機(游戲機)游戲來說,也需要相同類型的知識,但是至少對于主機, 你不必去嘗試擊中一個移動中的目標。 因為一臺主機的硬件配置是固定的 "時間快照", 和PC(個人計算機)不同, 在一臺主機的生命期中,它的硬件配置不會改變。
在一般意義上,渲染器的工作就是要創造出游戲的視覺閃光點,實際上達到這個目標需要大量的技巧。3D圖形本質上是用最少的努力創造出最大效果的一門藝術, 因為額外的 3D 處理在處理器時間和和內存帶寬方面都是極為昂貴的。 它也是一種預算, 要弄清楚你想在什么地方花費處理器時間,而你寧愿在什么地方節省一些從而達到最好的整體效果。 接下來我們將會介紹一些這方面的工具,以及怎樣更好的用它們讓游戲引擎工作。
建造3D世界
最近,當我和一位從事計算機圖形方面工作長達數年之久的人會談時,她向我吐露道, 當她第一次看到實時操縱計算機 3D 圖象時, 她不知道這是怎么實現的, 也不知道計算機如何能夠存儲 3D 圖象。 今天這對于在大街上的普通人來說或許是真實的,即使他們時常玩 PC 游戲, 游戲機游戲, 或街機游戲。
下面我們將從游戲設計者的角度討論創造 3D 世界的一些細節,你也應該看一看 Dave Salvator 所寫的“3D 管線導論“,以便對3D 圖象生成的主要過程有一個整體的了解。
3D 物體(對象)被儲存成 3D 世界中的一系列點(被稱為頂點), 彼此之間有相互關系,所以計算機知道如何在世界中的這些點之間畫線或者是填充表面。 一個立方體由8個點組成,每個角一個點。立方體有6個表面, 分別代表它的每一個面。 這就是 3D 對象儲存的基礎。 對于一些比較復雜的 3D 物體, 比如說一個 Quake 的關卡,將有數以千計(有時數以十萬計)的頂點, 和數以千計的多邊形表面。
事實上現在的 ATI 顯卡具有 TruForm, 它能帶一個以三角形為基礎的模型,并將該模型轉換為基于高次表面的模型,使其平滑 — 接著再用十倍三角形數量把模型轉換回基于大量三角形的模型 (被稱為retesselation)。然后模型送往管線做進一步的處理。 實際上 ATI 僅僅在 T & L 引擎之前增加了一個階段來處理這個過程。這里的缺點是,要控制哪些模型需要被平滑處理而哪些又不需要。你經常想要一些邊緣比較尖銳, 比如鼻子,但它卻被不恰當的平滑過了。 這仍然是一種很好的技術,而且我能預見它在將來會被更多的應用。