隨著 2022.2 Tech Stream 版本發(fā)布,Progressive Lightmapper 光照烘焙功能迎來了大幅提升,將做為 Enlighten 的升級解決方案為廣大開發(fā)者帶來更高效、穩(wěn)定的使用體驗。
隨著 2022.2 Tech Stream 版本發(fā)布,Progressive Lightmapper 光照烘焙功能迎來了大幅提升,將做為 Enlighten 的升級解決方案為廣大開發(fā)者帶來更高效、穩(wěn)定的使用體驗。在降噪功能方面,我們不僅在新版本中增加了 HDRP(高清渲染管線) 路徑追蹤降噪功能,可實現(xiàn)無噪點的路徑追蹤圖像,還發(fā)布了 Optix 第 7 版降噪器和 Unity Denoising 軟件包及公共 API,降低了降噪功能的內(nèi)存占用,增加了不同降噪后端的適配性。Adaptive Probe Volume(自適應(yīng)探針體積) 中也增加了多個關(guān)鍵功能,包括光泄露防護(hù)功能、GPU 內(nèi)存流式傳輸功能及預(yù)覽功能,讓開發(fā)者能更好地處理多個場景的光照數(shù)據(jù)。本文將一覽以上重大更新,并和大家分享全局光照未來將推出的關(guān)鍵功能。Enlighten Baked GI 的棄用將不會影響 Enlighten Realtime GI,我們將繼續(xù)支持 Enlighten Real-time GI,直到 Unity 2024 LTS 結(jié)束,下圖中簡要介紹了 Enlighten Baked GI 的棄用計劃。在計劃中我們將增加 Enlighten Real-time GI 對 URP(通用渲染管線) 的支持,并將啟用對 HDRP 的支持。此外,該 GI 將擴(kuò)展支持 Apple Silicon, Sony PlayStation(R) 5 和 Microsoft Xbox Series X|S 平臺。Enlighten Baked GI 計劃概覽
Enlighten Real-time GI 計劃概覽對于全局光照烘焙,我們著重于提高 GPU Lightmappper 的穩(wěn)定性和兼容范圍,希望為開發(fā)者提供一款高效、穩(wěn)定的解決方案。我們正按計劃逐漸棄用 Enlighten,首先將會從 Enlighten Baked GI 開始。Lightmapper 已經(jīng)作為該 GI 的替代方案被使用了數(shù)個版本。如果您正使用 Enlighten Baked GI,并且打算升級至 2022.2 及以上版本,推薦您在新版本中使用 Lightmapper。短期內(nèi)仍支持 Enlighten Baked GI,供開發(fā)者在過渡期間使用。通過打開 Edit > Project Settings > Graphics,即可勾選并重新啟用 Enlighten Baked GI,該功能將會在 2023.1 版本中移除。在 2022.2 版本,API 內(nèi)的 Enlighten Baked GI 已被標(biāo)注成“obsolete(廢棄)”。如果項目內(nèi)使用了 Enlighten Baked GI,且已升級至 2022.2 版本,在項目中會看到 Lighting 里的相關(guān)設(shè)定會自動切換到 Progressive CPU 烘焙(Apple silicon 設(shè)備中則會自動切換到 Progressive GPU)。在這一步中可以選擇使用 CPU 或 GPU Progressive Lightmapper。Adaptive Probe Volume(自適應(yīng)探針體積)
隨著 2022.2 的發(fā)布,我們將持續(xù)優(yōu)化 Adaptive Probe Volume 的各項功能,首先將實現(xiàn)光泄露防護(hù)功能,光泄露防護(hù)功能是向探針光靜態(tài)幾何形(probe-lit static geometry)的一個重大邁進(jìn)。這樣在某些情況下,光照探針就能替換靜態(tài)對象的一些光照貼圖。目前 Adaptive Probe Volume 已支持 GPU 內(nèi)存流式傳輸,可以在光照探針數(shù)據(jù)不兼容 GPU 內(nèi)存的情況下構(gòu)建并運(yùn)行場景。Adaptive Probe Volume 的調(diào)試視圖展示了探針的密度隨場景元素密度的增加而增加(圖中資產(chǎn)源自資源商店的 ArchVizPRO Interior Vol.8)
我們還推出了烘焙多個探針光場景的預(yù)覽功能,讓開發(fā)者能快速編輯、烘焙并融合多個場景的光照數(shù)據(jù)。探針光的場景示例,包含日間和夜間光照場景(圖中資產(chǎn)源自資源商店的ArchVizPRO Interior Vol.8)
HDRP Path Tracing Denoising(路徑追蹤降噪)
HDRP Path Tracing Denoising(路徑追蹤降噪) 可輸出無噪點的路徑追蹤圖像,無需再消耗大量時間合并未過濾樣本。注意該功能與離線及非交互渲染降噪相關(guān)聯(lián),所以不支持游戲內(nèi)的實時路徑追蹤降噪。HDRP 模板中帶降噪(右)和不帶降噪(左)的路徑追蹤對比在 2022.2 中,Lightmapper 的 Optix 降噪器升級到了第 7 版,最新版中使用了平鋪法來減少內(nèi)存消耗。現(xiàn)在,高分辨率的光照貼圖在烘焙和降噪時將占用更少內(nèi)存。Unity Denoising 軟件包及公共 API
隨 2022.2 的發(fā)布,我們將內(nèi)部使用的圖像降噪功能組合成了 Unity Denoising 軟件包,現(xiàn)在可通過 C# 公共 API 進(jìn)行訪問。開發(fā)者可以根據(jù)目標(biāo)平臺和硬件的處理能力,使用該 API 選擇不同的降噪后端,例如 Optix 或 OIDN。我們在錯誤報告里看到有部分用戶在使用 Light Probe 時,遇到編輯器在運(yùn)行模式下加載和卸載部分場景時崩潰的現(xiàn)象。這些崩潰背后有許多原因,其中最常見的一個原因是:引擎不清楚當(dāng)前場景的光照探針組是否做好了渲染準(zhǔn)備,這有可能導(dǎo)致光照探針組的狀態(tài)被損壞。在 2022.2 中,改進(jìn)后的代碼能清楚定義光照探針組是否做好了渲染準(zhǔn)備,修復(fù)了可能導(dǎo)致崩潰的光照探針組狀態(tài)損壞問題。此前,當(dāng)受探針光對象被移出四面體外殼,需要搜索整個光照探針的四面體外殼并找到最近的光照探針,隨著殼外對象愈復(fù)雜,這一搜索過程所需的時間也就越長。為了優(yōu)化新項目里的默認(rèn)行為,Graphics 設(shè)置中將包含一個新屬性用于設(shè)定放置在殼外的探針光照對象的采樣行為,通過使用環(huán)境探針取代全面搜索,為殼外對象新添了一條加速路徑。這一功能在舊版本中也將能使用。修復(fù)了在某些情況下(如場景未經(jīng)烘焙時),構(gòu)建好的應(yīng)用中會缺少環(huán)境光照的問題。為了解決新項目加載 OpenCL 著色器過慢的問題,我們在 GICache 緩存了二進(jìn)制文件,加快了 OpenCL 著色器的加載。在測試中,當(dāng) OpenCL 著色器從 GICache 讀取時,我們在 GPU 光照貼圖烘焙耗時方面看到了可觀的改進(jìn)。不過,因為編輯器在首次啟動時需要建立這些緩存文件,所以初次啟動的速度并不會改變。測試環(huán)境中烘焙編譯耗時的改進(jìn)在 2022.2 中,還有幾處提升用戶體驗的改進(jìn): 改進(jìn)了 Lighting 窗口中的字段與屬性的對齊 New 和 Clone 按鍵在同一行,方便 Lighting Settings Assets 的創(chuàng)建 Min 和 Max Bounces 字段合并成 Max Bounces 改進(jìn) Gaussian 濾鏡精度至 0.1 紋素(此前鎖定在 1 紋素) 重新組織了 Lightmap Parameters Asset 的 UI,以提高可讀性在全局光照的未來發(fā)展計劃中,還有一些值得關(guān)注的關(guān)鍵功能:Adaptive Probe Volumes(自適應(yīng)探針體積)
至 2023.1,Adaptive Probe Volumes 的核心功能和用戶體驗會得到進(jìn)一步改進(jìn),最終達(dá)到“experimental(實驗版)/preview(預(yù)覽版)”標(biāo)簽的移除。我們還在增加 URP 對該功能的支持。注意最初版功能將不支持 Lighting Scenario Blending(光照場景混合),也難以保證在低端平臺上有明顯的性能優(yōu)化。Precomputed Realtime GI(預(yù)計算實時 GI)
我們將提供一種實時全局光照解決方案 Precomputed Realtime Global Illumination(預(yù)計算實時全局光照),相比于 Ray Traced Global Illumination(光線追蹤全局光照,RTGI) 或 Screen Space Global Illumination(屏幕空間全局光照,SSGI),這種解決方案可擴(kuò)展至更多平臺。它所采用的預(yù)烘焙光照探針數(shù)據(jù)會在運(yùn)行時動態(tài)地更新探針光照對象的間接光照,讓開發(fā)者能采用墻壁、屋頂、地面等靜態(tài)對象傳來的動態(tài)光照,來制作、構(gòu)建和運(yùn)行實時 GI。為了快速預(yù)覽烘焙出的光線,我們?yōu)楹姹汗庹諗?shù)據(jù)提供了一條專門的預(yù)覽路徑以加快迭代效率。我們使用“反向”路徑追蹤(光線路徑從攝像機(jī)出發(fā))來計算可見部分的光照,讓開發(fā)者能隨時預(yù)覽場景光照。該功能可以利用硬件加速光追,也可以通過一種備用計算著色器,支持在非硬件光追在 GPU 上工作。隨著 GPU Lightmapper 的基礎(chǔ)性工作持續(xù)推進(jìn),我們將為開發(fā)者帶來更高效穩(wěn)定、可預(yù)覽的光照解決方案。我們希望將這些公共 API 做成強(qiáng)大、實用且擁有廣泛支持的 C# API。您可以用它來定義影響 GI 烘焙的輸入,比如 Mesh、Transform、Material、Light 等等;以及所生成的輸出,比如光照貼圖和探針及其單獨(dú)組件,包括輻照度(irradiance)、方向性(directionality)、遮擋(occlusion)和八面體深度(octahedral depth)等。
立即登錄,閱讀全文