[AD] #14 Amplify Impostors — 筆記

River Wang
二流遊戲開發
Published in
5 min readOct 13, 2020

前一篇介紹我們使用 MTree 工具製作樹木物件,並且 MTree 本身就提供自動產生 LOD0 ~ LOD4 的模型資源,但後來我們對於此自動產生的模型資源不夠滿意,主要在於每個 LOD 層級之間的模型外觀變化過於明顯,在我們的使用情境中很難不發現切換 LOD 層級時的視覺差異問題。

事實上除此之外,HDRP 本身不再支援內建的 GPU Instancing 技術,所以既使使用 MTree 自動產生的 Billboards (LOD4) 也無法進行 GPU instancing 加速繪圖 (要正確使用 GPU instancing 需仰賴開發者使用 DrawMeshInstanced / DrawMeshInstancedIndirect APIs 自行開發與管理)。這樣對我來說等同於品質與效能都無法優化。

此 Demo 中可以看到遠方的 Billboard 效果與近方的原始樹木模型外觀差異甚大,並且 LOD 之間切換時有採用 Cross Fade 效果,雖然可修飾 LOD0 ~ LOD3 之間的變化視覺差異,但也同時會影響效能表現。

因此經過 Survey 後鎖定了 Amplify Impostors 這個工具,為 Unity Assetstore 界當中技術最強大之一的 Amplify 公司開發出來之強大 Impostor 工具包。

左邊是 Billboard 版本

簡單的說 Impostor 就是升級版的 Billboard。原本的 Billboard 僅使用平面或是交叉的多個平面來代表遠方的物件投影外觀,因此近距離觀看就會出現破綻,或是遠距離在某些視角觀察也會有很大的破綻 (如由上往下視角)。

Impostor 做法則是改用隆起的 8 面體或是更複雜一些的半圓球面體來代表偽裝用的幾何,並且使用預先準備好的 360 度個視角拍攝貼圖,用以在即時繪圖時內插計算找到對應的視角貼圖內容 (如此講解很籠統,有興趣的人還是直接看下方 Reference 連結說明比較清楚)。

現在我可以使用 Amplify Impostor 工具迅速達成這個功能,針對要烘培製作 Impostor 的物件增加 “Amplify Impostor” Component,在 "References” 欄位中增加主要參考的 “Mesh Renderers” 對象,按下 "Bake Impostor” 就完成!

左邊是 Impostor 版本,太過近距離觀察 Impostor 還是會有明顯的破綻
LOD Group:50% ~ 100% 為原本 LOD0 模型,2% ~ 50% 為 Impostor 物件

配合 Impostor 物件我調整 “LOD Group” 設定,只留下原始 LOD0 模型與 Impostor 版本,改用這個版本去安排地表上的森林環境,效果如下,整體偽裝效果是有明顯改善的。

Impostor 樹木出現的紅色 Glitch 不確定是否是 HDRP 5.16.1 環境中存在的 Bug,如果我取消 Impostor Material 中的 “Specular & Smoothness” 貼圖該現象便消失

--

--

River Wang
二流遊戲開發

學生時代就跳入 Computer Grpahics 領域,其他技術好像都不想學/學不來,工作也找 Graphics 相關內容,但幾年後第二份工作才真的投入遊戲產業,不過也是個失敗的經驗。目前雖然逃離遊戲慘業,但也沒混出什麼出息,仍然在混口飯吃,並幻想著某天自己終於有時間開始完成自己想做的遊戲作品。