2016年12月26日 星期一

Unity預計算即時GI - 2.即時解析度

原文
翻譯:Kelvin Lo

版本:5.5 難度:中等

當使用PRGI來計算場景照明時,首先要做出的決定之一是確定場景的即時解析度(Realtime Resolution),它決定每個世界單位(World unit)所使用即時光照的貼圖像素(Texture pixels)數量。

Realtime Resolution設定可以從Lighting介面找到並調整,方法如下:

  • 開啟Lighting介面(Window > Lighting)並選擇Scene頁籤
  • 確保Precomputed Realtime GI旁的勾是打勾的
  • 在它下面找到Realtime Resolution屬性


Unity的Lighting介面主要顯示整個場景會用到的光照設定


選擇適當的解析度


當設定場景時,很重要的是要了解你的專案需要的單位比例,可能在你的專案裡一個單位等於現實世界的1米、一英尺或一公分,Unity沒有預設真實世界的單元,所以得由開發者自行決定。

在這個範例裡我們採用1 unit(單位) = 1 meter(米)。因為這和Unity的物理概念不謀而合,舉例來說Unity的重力預設就是以每秒多少單位來計算,因此設定1單位 = 1米就是一個很好的真實世界場景設定。

Realtime Resolution的值可以由你的遊戲規模來制定,例如,是否你的場景是一個小小的,卻有豐富光照變化的室內環境? 在這種情況下,高一點的值比如2-3,可以捕捉更詳細或"高頻"的光照。

如果你的場景是一個世界規模較大的大型戶外環境。可能有著幾千或幾百個物件表面幾乎不會去修改光照反射顏色。在這樣的情況下,把適合計算複雜室內場景的設定用在有大量相同特徵的室外環境是很浪費的。我們會浪費寶貴的CPU時間和記憶體儲存/更新那些對整體外觀貢獻不大的光照貼圖。為了教學目的,我們會提高PRGI期間必須考慮貼圖像素的量,這會對預計算的時間造成很大的影響。

場景裡有大物件的室外環境情況下,合適的設定可以設在0.5-1之間,針對地形可以設定0.1-0.5之間。


預計算即時GI解析度 VS 傳統光照貼圖


Unity PRGI所需要的Realtime Resolution值比傳統光照貼圖密度要小好幾個等級,這是因為我們只從這些光照圖裡擷取間接光源資料,這些資料通常解析度都很低。所以使用PRGI時,清晰的陰影通常都是即時運算而非從高解析度的光照圖來提供。

在這裡使用傳統光照慣用的值,例如:30 texels,可能會導致預計算失敗或無法計算。室內場景比較適合的值是2-3,室外場景則是0.5-1。這是假設我們用的單位是1單位 = 1米的前提下,如果單位大小不同這些值就需要調整。

場景與Realtime Resolution值對照表
室內:2-3 像素/單位
戶外:0.5-1 像素/單位
地形:0.1-0.5 像素/單位
*假設人類規模的世界,1單位代表1米適當的設定

當設定場景即時解析度時,Unity會指定給場景內的靜態物件。帶有Mesh Renderer且標有靜態光照標籤(Lightmap Static)的物件,會引用這個值一直到它被外力修改。

除了幫場景加上解析度設定外,我們還能針對每個物件調整光照貼圖的解析度,在需要高解析度來提供更高真實感的情況下,我們可以選擇性的提高這個值。通常是將場上最多的物件解析度設為預設值,然後手動調高需要更多照明細節物件的值。本章後面會說明如何修改每個物件解析度的方法。


設定場景的即時解析度

如果你想跟著做,可以打開教學素材包裡的LightingTutorialStart場景。
在範例場景裡,我們有一個戶外環境,中等大小的地形與相當一致的色調。所以我們設定Realtime Resolution為0.5像素/單位就足以處理從場景其他物件來的光照反射。然而,場景裡也有些貼圖細膩的木屋。由於場景裡有比地形物件還多的房子,我們應該把預設的解析度設定適合房子的數值。然後我們可以單獨修改地形物件的解析度,這樣可以降低場景準備的工作量。考慮到這點,我們用1作為我們的預設解析度。


  • 開啟Lighting介面(Window > Lighting) 然後選擇Scene頁籤
  • 設定Realtime Resolution值為1

有鑑於我們的世界單位設定為1單位 = 1米,這表示由PRGI所產生的光照圖將會是1x1米的大小,或許你看起來很低,那是因為我們只抓取間接光照。還會從場景裡的直接光源計算清晰的陰影和反光。


---------------------------------------------------------------------------------
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.介紹


沒有留言:

張貼留言

著作人

網誌存檔