2016年12月26日 星期一

Unity預計算即時GI - 3.了解光照圖

原文
翻譯:Kelvin Lo

版本:5.5 難度:中等

在Unity PRGI裡,一個光照圖(Chart)是表示一個光照貼圖的區域,用來映射場景物件的光照貼圖UV。你可以想像是能影響物件的一張小磁磚圖,一張光照圖由兩部分組成:輻照度(照明)和方向性(主要光線方向編碼)。

當產生PRGI資料時,圖表裡的每個單位都會被計算光照。換句話說,場景裡面有大量的光照圖可能會是PRGI耗時的原因之一,因此了解光照圖的運作原理以及如何管理它們來優化光照計算的時間是很重要的。


如圖所示一個最小4x4單位的UV光照圖,為了防止貼圖過濾造成的滲色,UV貼圖始終被光照圖包住並隔出一半單位(本例是0.5)的大小。

在預設的情況下,每張光照圖最少要有4x4單位大小,所以說不管世界中的物體大小或對應的UV大小,一張圖表至少需要16個貼圖像素(texels)。因此如果有一個1x1米的物件並帶有一個圖表,間接解析度是1,那這個物件就會需要16 texels來表現。最後Unity會將這些圖表縫合再一起,作為模型邊緣的光線取樣參考。Unity需要每張圖表的邊緣至少有4個像素單位,方便在縫合不同光照圖時有對照的依據。

要注意的是使用即時GI時是不需要自己去填這些UV的邊,因為Unity在處理網格匯入的流程時會自動將光照UV圖往內擠出一個邊框的空間。這樣就能讓相鄰的圖表不用做滲色處裡還能保持雙線性內插(bilinearly interpolated),能節省寶貴的光照貼圖空間。

試想我們之前說的1x1物件如果帶有50張光照圖,Unity會為它產生800個貼圖像素,就算它聽起來沒很大,但這說明了當圖表的量一大就會快速拉高貼圖像素的量。越多的貼圖像素代表更重的光照運算要處裡,更多的光照資料要計算、壓縮和儲存,這些要素都會讓場景更複雜,並導致漫長的計算時間和低落的效能。

不當的光照圖規劃是導致計算耗時太久或無法完成的主因,也因為如此,我們許多減少計算時間的方向大多都是思考如何降低場景內光照圖的數量。


---------------------------------------------------------------------------------

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




沒有留言:

張貼留言

著作人

網誌存檔