2014年9月24日 星期三

【GMGDC】Unity 5光照貼圖技術分享


來自Unity大中華區的報導
原文章:http://forum.china.unity3d.com/thread-603-1-1.html


2014年9月24日,第三屆全球移動遊戲開發者大會GMGDC在成都市高新區世紀城國際會議中心隆重開幕。在第一天的會議中,Unity大中華區技術總監劉鋼出席了Imagination開發者日,並為現場的開發者分享了Unity 5 光照貼圖烘焙的相關知識。

劉鋼個人簡介:
  浙江大學理學博士,目前擔任Unity Technologies大中華區技術總監職務。主要成就有:3D圖形架構師參與DirectX10.0世代GPU的架構設計工作、帶領團隊研發了一款應用於Autodesk公司大多數旗艦產品的通用3D圖形引擎等。


演講記錄:

今天簡單地跟大家分享一下Unity5.0裡面的光照貼圖烘焙技術。由於時間只有20分鐘,所以只能給大家一些概要性的介紹,沒有辦法深入,等到Unity5版本正式推出之後,我會給大家一些更詳細的介紹。

接下來我會分3個部分跟大家講解。
第一部分講解一下在以往的Unity版本中所採用的光照烘焙方法,以及Unity5.0中為什麼會採用一套全新的光照貼圖烘焙方法。
第二部分講解Imagination的PowerVR Ray Tracing方法。第三部分講解Geomerics的Enlighten方法。後兩種方法都會被引入到Unity 5版本當中去。

首先我們來介紹Unity在4.X版本裡面使用光照烘焙的方法。

我們採用的是Autodesk的Beast,而我們在5.0版本中可能會把它徹底移除。這是為什麼呢?

我們先介紹一下Beast的弱點吧。Beast只能烘焙靜態的光照貼圖,而不支援動態光照。一般而言,使用Beast的工作流程是:先建造一個場景,然後在場景中佈置各種光源,進而點擊Bake操作鍵,接下來大家就可以喝喝咖啡,或者直接下班回家了,因為整個烘焙過程可能需要幾分鐘、幾小時,甚至是更長的時間。這樣的過程還不一定得到正確的結果,如果發現前面的烘焙結果存在問題,還要重新返回到第一步,直至得到滿意的烘焙結果。這樣的過程對於廣大開發者來說肯定是一個不太友好的過程,勢必會影響大家的工作效率。

那麼既然我們說原來的方法存在著一定的問題,那麼理想的光照方案是什麼樣的呢?

第一,理想的方法不需要任何的預計算時間;

第二,它能夠讓場景中所有與光照有關的資訊都能夠實現動態改變,比如說動態改變光源、改變材質、改變環境光照,甚至改變場景中幾何體的形狀;第三,這樣的一套方法還需要做到即時渲染,這不僅包括Console設備,也包括我們手中的移動設備。可惜的是,這樣一套理想的方案在目前是不存在的。很多的遊戲開發廠商,甚至是硬體開發廠商,都做過一些實踐或者嘗試,但是最終都失敗了,都沒能同時實現剛才所說的這幾個目標。

但是有一種繞行的方式,可以達到近似的效果。這就是Unity5.0當中所採用的方法,我們會捨棄掉Beast,取而代之的是兩種方案的結合,這就是PowerVR Ray Tracing和Enlighten的結合。

為什麼要使用這兩個方案的結合呢?

我先給大家一個簡要的概括:這兩種方案都可以實現全域的GI,但是相比較而言的話,PowerVR Ray
Tracing的特點是不需要烘焙過程,速度非常快,但是它的效果不是非常理想;而Enlighien的特點仍然需要一定的烘焙過程,但是效果非常好。更具體一點說,我們會在Unity編輯器環境下採用PowerVRRay Tracing方案,從而利用它快速即時的特點,你可以在場景中隨時動態調整任何的東西,都能及時地看到調整的效果;一旦你把這個效果調整到了一個比較理想的狀態之後,就可以採用Enlighten來進行預處理和烘焙,從而達到更好的即時渲染效果。特別地,Enlighten具有很好的跨平臺特性,能夠在從移動到Console等多個平臺上即時地運行。

在Unity 5.0中,PowerVR Ray Tracing還有一個特點,就是它能夠實現漸進式的效果過渡,一開始顯示比較粗糙的、類似於馬賽克式的效果,然後逐步反覆運算求精,可能在若干毫秒之後,就會呈現出非常完美的效果。大家可能還會有一個問題,如果說我在Editor的模式下,採用PowerVR Ray Tracing調整出了一個比較好的效果,那麼我怎麼保證它和Enlighten最終取得的效果是近似相同的,如果完全不同,那我們就白花時間調整了!這個肯定是大家不希望見到的結果。所以我們在Unity中引入PowerVR Ray Tracing時是進行了調整和改變的,使PowerVR Ray Tracing和Enlighten的輸入是一致的,然後儘量使他們的輸出也是一樣的。

接下來我們來看一段視頻,來看看PowerVR Ray Tracing在Unity編輯器中的使用方法。大家可以看到,我們可以動態地改變沙發的材質,並即時地預覽到調整效果。此外,還可以動態調整場景中的體積光源,也可以動態調整方向光的照射方向,以及聚光燈的位置,都可以即時地觀看到調整結果。

再說一下Enlighten,它能夠實現動態光照,也支援傳統的烘焙過程,並能把兩者無縫的拼接起來,最終保證在畫面上面不會有任何的走樣效果。這裡,我們也可以通過一個視頻看看光照效果。這個場景中是一個太空艙,太空艙外面有一個環境光照,還有一個探視口,從外面有光線射進來。這個場景總的光照條件是非常非常複雜的,有來自於窗外的環境光照,有一些直接的方向光源,有動態材質還有一些粒子效果,所有這些東西都可以動態地疊加起來,對於周圍環境的影響也是即時的。

我們剛才簡單地介紹了Unity5.0中將會採用的光照貼圖烘焙方法,最後我來做一個簡單的總結:在Unity的以往版本中,我們使用了Beast;在Unity5版本中,我們會捨棄Beast,進而採用PowerVR Ray Tracing和Enlighten的結合;PowerVR負責編輯器中的編輯模式,即所見即所得的模式;而Enlighten會負責遊戲內的即時渲染。最後,大家可能還有一個疑問,就是Enlighten會問會不會有效率問題。

我們說,在一些相對中高端的設備上,Enlighten的運行效率是非常高的;而在一些低端的設備上,Enlighten同時支援與Beast相似的靜態光照貼圖方式,因而也可以保證運行效率。

因為時間有限,今天就和大家分享這麼多,謝謝大家!

沒有留言:

張貼留言

著作人