2016年12月26日 星期一

Unity預計算即時GI - 1.介紹

原文
翻譯:Kelvin Lo

Unity版本:5.5 - 難度:中度

在Unity裡,可以用兩種不同的技術來計算全域光照GI或光源反射,就是烘焙全域光照(Baked GI)和預計算即時全域光照(Precomputed Realtime GI),這份教學文章主要是說明預計算即時GI-本文將以PRGI作為簡稱。

當啟用PRGI時,一個光照預計算就是用來計算靜態幾何物件周圍光的反射,並存成資料給Runtime執行使用的一個過程。這個過程減少了原本必須在Runtime執行時的光照計算數量,讓專案得以在保持FPS的穩定之下還能計算光的反射

當啟用烘焙GI(Baked GI)時,預計算的過程會計算並產生傳統的光照貼圖(Lightmap),這些貼圖會以資源(Assets)的形式存在專案中,而且無法再Runtime執行時更改。PRGI並非用一樣的方法產生光照貼圖,相反的,PRGI算好的結果會被存成一個光照資料檔(Lighting Data Asset),這個資料檔存的資料能讓專案在Runtime執行時能即時產生一組低解析度的光照圖。

除非場景已經為了PRGI計算優化過,否則完成這些計算所需要的時間可能會很長。在本文我們將學習如何針對Enlighten系統(Unity用來計算全域光照的系統)來優化一個場景,讓預計算只需要幾分鐘而非幾小時。

過程將會涵蓋:
  • 如何定義一個適合場景的光照解析度
  • 何謂光照圖(Charts),它如何影響到計算的時間
  • 如何開始一個預計算
  • 使用光照探針來降低光照方案的複雜度
  • 改進Unity PRGI的自動拆解UV結果
  • 何謂叢集,如何用它來產生GI照明
  • 以物件為基礎使用光照貼圖參數微調光照
一旦我們學習並了解這些技術,我們就可以利用PRGI的優點:快速迭代的時間,針對預計算光照或遊戲裡的即時光照反射就能更快進行不同實驗測試的能力。


將預計算的時間從幾小時降低到幾分鐘


這個教學所用到的場景裡,用沒有優化過的預設設定在我們的測試機上計算光照大約花了7.5個小時。對於這種複雜場景顯然這是無法接受的時間。
無優化場景(上圖):預計算7.5小時,有優化場景(下圖):預計算2.25分鐘。

使用本教學所介紹的技術進行大約30分鐘的場景準備後,這個場景的預計算花了2.25分鐘得到一個產品等級的結果。考慮到我們可以在遊戲過程中快速迭代場景照明而不需要重新計算GI和改變GI照明,這個技術的好處是顯而易見的。

下載本教學的素材包

本教學採用Asset Store上的官方光照優化素材包
本教學所用的是Scenes/Article目錄底下的範例場景: LightingTutorialOptimal, LightingTutorialNonOptimal 以及 LightingTutorialStart.
  • LightingTutorialOptimal已經根據這個教學設定好,用來展示PRGI如何設定能用最短的時間呈現出產品等級的結果。
  • LightingTutorialNonOptimal呈現了我們在專案中常看到的問題,要嘛造成無法烘焙,要嘛花費無法接受的時間烘焙,這是一個很好的錯誤示範。
  • LightingTutorialStart將會是我們在教學過程中用到的場景,我們會按照步驟一步一步將它變成一個產品等級的結果

-----------------------------------------------------------------------------
Unity預計算即時GI全文超連結
Unity預計算即時GI - 9.總結
Unity預計算即時GI - 8.微調光照參數
Unity預計算即時GI - 7.了解叢集
Unity預計算即時GI - 6.拆解與減少光照圖
Unity預計算即時GI - 5.光照探測
Unity預計算即時GI - 4.開始預計算
Unity預計算即時GI - 3.了解光照圖
Unity預計算即時GI - 2.即時解析度
Unity預計算即時GI - 1.介紹


沒有留言:

張貼留言

著作人

網誌存檔