2016年10月18日 星期二

Progressive Lightmapper - 漸進光照貼圖介紹

作者:Jesper Mortensen 原文
潤稿:Kelvin Lo


自從今年三月份我們在GDC上首次展示了這個漸進光照貼圖技術(Progressive Lightmapper)之後,我們就一直在努力把它開發出來。你可以看這段影片就能了解這技術目前的發展:

What?漸進光照貼圖是甚麼?



那到底漸進光照貼圖是什麼?它是一種可以與Unity裡的全域光照GI搭配使用的無偏移蒙特卡羅路徑追蹤器(Monte Carlo path tracer),在過去的40年來,人們預估即時光跡追蹤運算技術將很快的出現在即時應用裡,在未來5年內就可能實現。因此目前為止漸進光照貼圖,只是作為烘焙光照(Baked Lighting)的替代方案。

那麼Enlighten裡的Baked GI怎麼辦?Enlighten目前還不會有什麼大變動。它提供了即時的全域光照,而且它還無法與路徑追蹤器(path tracer)搭配使用。

Why? 為什麼選擇它?


漸進光照貼圖的目標是最大化改善場景光照烘焙的流程。目前Unity對場景做任何修改都需要重新烘焙場景後,才能看到最後的結果。而Enlighten帶來的好處是能夠讓我們即時看到光照運算後的結果。但是當你修改任何參數、貼圖或模型時都需要對場景重新烘焙,烘焙期間你是無法針對結果有任何的資訊。

例如,在專案開發的迭代時期,需要不斷的調整陰影或光線反射等級,為了看到調整的結果通常都需要等上一段時間甚至更久,大大的降低了工作效率。有了漸進光照貼圖技術你就可以立刻看到調整結果。像這樣,一開始場景裡的渲染結果會有一些噪點,但隨後畫面品質會立刻提升。


此外我們還做了優化調整,優先對場景視圖先看到的範圍進行計算和烘焙。該範圍結束後再繼續對場景其餘部分計算和烘焙。

另外,大多數情況下漸進光照貼圖會比舊的更穩定,因為它是在全光照解析度之下進行間接光源烘焙,所以渲染結果中產生的瑕疵更少。設定容易,並提供一個展開的UV或讓Unity自己建立一個並可以自行設定烘焙的解析度。此外,開發者之前對於烘焙光照的相關知識在這裡仍然是適用的。我們還能預測渲染需要的時間,下圖的倒數計時能夠精確地告訴你還需要多少時間才能完成烘焙。


最後,如果您覺得渲染結果已經夠好了,還可以直接停止烘焙,此時場景就會保持在停止烘焙時的狀態。所以你可以隨時停止烘焙,或增加一些內容後繼續烘焙。

What Does it NOT DO?它無法做什麼?



它不是Realtime GI的替代品,它只能在Unity編輯器中進行烘焙,因此不能在Run time(遊戲中)進行烘焙。這代表你還沒辦法在遊戲中用程式即時烘焙一個Baked GI,或是無法根據特定時間更改光照並即時烘焙。我們打算先在Unity編輯器中的烘焙工作流逐步完善後再考慮其他的部分。

另外,它的渲染速度不一定比Enlighten(*註一)的快。如果你為Enlighten調整好了場景,則Enlighten的渲染速度也可以非常快。因此我們不能保證漸進光照貼圖在所有場景中烘焙都是最快的。但使用漸進光照貼圖的話,從開始烘焙到看到成果所需的時間還是最快。

最後,它目前還沒有像
PowerVR Ray Tracing支援特定GPU或一般GPU那樣針對任何硬體提供特殊支援。目前而言這個烘焙過程只會在CPU上執行。需要再次強調的是,最初的版本我們會將注意力放在烘焙本身的工作流程上。


When Can I Have It?我什麼時候能用?


我們目前還處在Alpha封測階段,已經有少數的開發者幫我們一起測試這個功能。當結果滿意的時候我們就會開放beta版本給各位。

以下是幾張用漸進光照烘焙出來的成果圖:



*註一:由於Enlighten提供了realtime GI和backed GI,本文裡的Enlighten指的是Unity Lighting介面裡的Baked GI功能。

沒有留言:

張貼留言

著作人