![]()
Adaptive Probe System (APS)
![]()
流式自適應(yīng)光照探針——為開放世界而生的全平臺高質(zhì)量間接光照。 無限場景規(guī)模 · 零開銷按需特性 · 無需 RTX 烘焙 · URP/HDRP 雙管線統(tǒng)一
![]()
為什么我們需要 APS?告別傳統(tǒng)光照的妥協(xié)
![]()
間接光照是賦予場景真實感的關(guān)鍵,但在傳統(tǒng)光照方案中,開發(fā)者往往要在質(zhì)量與性能之間艱難取舍:
Light Probes:性能開銷低,但依賴手動放置,精度和功能都受限。
Probe Volume:效果雖有提升,但顯存隨場景規(guī)模線性增長,手動布置及漏光問題需要較多精力解決。
Lightmap:能呈現(xiàn)細膩的光影,但僅適用于靜態(tài)物體;切換時容易出現(xiàn)加載延遲,增量更新的成本也較高。
實時 GI:動態(tài)效果極佳,但每幀迭代的計算開銷偏高,對移動端及部分基礎(chǔ)設(shè)備的兼容性構(gòu)成不小挑戰(zhàn)。
![]()
原始場景
![]()
只有直接光照
![]()
補充間接光照
無論是陽光穿透帳篷形成的自然暖光,還是讓陰影中的動態(tài)角色自然受光,間接光照都不可或缺,這里拿 URP Sample 綠洲場景舉例:
![]()
傳統(tǒng)Ambient補充統(tǒng)一光照, 場景顯平而且色調(diào)不正確
![]()
APS 補充陽光穿透帳篷自然的暖光環(huán)境, 而且能讓動態(tài)角色受光
面對開放世界和跨平臺發(fā)布的嚴苛要求,“大規(guī)模 + 低開銷 + 全平臺”似乎成了不可能完成的三角任務(wù)。為此,團結(jié)引擎傾力打造了自適應(yīng)光照探針系統(tǒng)(Adaptive Probe System),APS 的核心特點是:
烘焙換性能
流式換規(guī)模
自適應(yīng)換效率
按需剝離換零開銷擴展
在URP Garden Demo中啟用APS
![]()
APS的三大核心優(yōu)勢
![]()
1. 顯存恒定,從容應(yīng)對廣闊世界
傳統(tǒng)探針的顯存占用會隨著場景面積線性增加,給大規(guī)模場景開發(fā)帶來極大壓力。為了解決這一痛點,APS 創(chuàng)新性地采用了 Sector 烘焙結(jié)合流式加載的架構(gòu)。
在這種架構(gòu)下,顯存占用僅取決于開發(fā)者配置的 Page 數(shù)量,成功與場景總面積完全解耦。引擎每幀動態(tài)決定加載相機附近的 Sector,遠景區(qū)域可以占用極小顯存或者完全不占用顯存。只要磁盤容量允許,場景規(guī)模就能實現(xiàn)無縫、平滑的擴展。
![]()
StreamerSystem 整體架構(gòu)(完善中)
2. 密度自適應(yīng),好鋼用在刀刃上
傳統(tǒng)均勻密度的 3D 紋理探針方案往往會在空曠區(qū)域浪費大量資源,而在幾何復(fù)雜的區(qū)域又顯得精度不足。APS 引入了智能的自適應(yīng)密度機制,能夠根據(jù)場景的幾何密度自動調(diào)整探針分布。在室內(nèi)等復(fù)雜環(huán)境中,系統(tǒng)會自動加密探針以捕捉細膩光影;而在平原等開闊地帶,則會自動減少探針數(shù)量。這意味著探針的總量完全由幾何復(fù)雜度決定,而非單純的場景面積。
![]()
場景切分成Sectors
![]()
各個Sector獨立烘焙不同密度的probes
3. 特性按需啟用,雙管線統(tǒng)一工作流
APS 的所有子特性均支持獨立開關(guān),賦予了開發(fā)者極大的自由度。未啟用的特性會在 Shader 編譯階段被完全剝離,從而在運行時實現(xiàn)真正的零采樣、零顯存與零分支開銷。
同時,APS支持 URP 與 HDRP統(tǒng)一工作流,雙管線共享同一套數(shù)據(jù)格式、烘焙流程和烘焙結(jié)果,并兼容 Forward、Forward+、Deferred、Deferred+等多種渲染路徑。開發(fā)者只需完成一次接入,即可覆蓋不同管線與平臺配置,大幅降低項目遷移與維護成本。
![]()
Deferred+ 管線/APS 關(guān)閉
![]()
APS打開后, 霧/VFX/半透均可受光
![]()
更多高級特性
![]()
場景即時切換
面對晝夜交替、天氣變化等多套烘焙光照場景,APS 可以在運行時實現(xiàn)流暢切換, 所有的插值混合均在 GPU 端高效完成,確保了視覺上的平滑過渡。
更重要的是,混合后的數(shù)據(jù)依然僅占用一份顯存,插值就地完成。開發(fā)者完全不用擔(dān)心因為多套環(huán)境方案的疊加而增加額外的內(nèi)存負擔(dān),進一步節(jié)省性能。
APS調(diào)試器中切換多套Scenario
運行時動態(tài)調(diào)整
為了賦予美術(shù)團隊極大的創(chuàng)作自由度,APS 支持在不重新烘焙的情況下,于運行時可對多項采樣參數(shù)進行實時動態(tài)微調(diào)。開發(fā)者不僅可以隨時縮放SH 整體強度 (Intensity)和天光強度 (Sky Factor/Scale)來精準把控場景的明暗氛圍;還能通過微調(diào)法線偏移 (Normal Offset)與視角偏移 (View Offset),有效消除模型表面的自陰影和視差偽影。此外,系統(tǒng)還開放了噪聲縮放系數(shù)(Noise Scale)以及采樣位置偏移(Sample Position Offset)等豐富的細節(jié)參數(shù),確保畫面能契合美術(shù)預(yù)期。
![]()
APS 提供的Volume Override參數(shù)
在廣袤的開放世界中,難免存在大片缺乏建筑或物體的空曠區(qū)域。為了避免在這些地方密集排布探針浪費顯存,StreamerSystem 中引入了Sector Root 機制, 作為根節(jié)點容器,同時能夠提供光照底托,在這些空曠地帶為動態(tài)角色和場景提供穩(wěn)定低開銷的保底光照。
![]()
高維度的SectorRoot
多重漏光治理
光泄漏是探針方案中常見的問題。APS 提供了多種可獨立開啟或組合使用的治理能力,幫助開發(fā)者根據(jù)不同場景靈活處理漏光:
Virtual Offset:通過射線檢測預(yù)修正探針嵌入幾何體內(nèi)部,減少出現(xiàn)暗斑問題。
Dilation:烘焙期間自動膨脹無效或采樣不足探針,避免采樣到無效探針。
MRD(MinRayDistance):預(yù)計算多個方向碰撞距離,為可能穿墻的探針提供更合理的方向性權(quán)重衰減。
Voxel Occlusion:通過體素化遮擋信息,改善植被、柵欄等細碎幾何體帶來的光照穿透。
Rendering Layers:通過渲染層區(qū)分室內(nèi)外環(huán)境,減少不同空間之間的光照串?dāng)_。
![]()
出現(xiàn)漏光-顏色穿透Probe間的墻壁
![]()
預(yù)計算MRD(黃色線)-自動阻擋
多平臺烘焙
在烘焙效率方面,APS 同樣做足了優(yōu)化。我們推薦在 DX12 環(huán)境下開啟 DXR 進行硬件加速,大幅縮短大規(guī)模切分地塊的烘焙時間。同時,系統(tǒng)也完美兼容 DX11 與 Metal 平臺上的 UniversalRayTracing,確保不同硬件環(huán)境下的開發(fā)體驗同樣順暢。
烘焙完成后, 會自動拆分編輯器數(shù)據(jù), 只用于烘焙的幾何數(shù)據(jù)確保不進入Shipping,多套光照共享數(shù)據(jù)(幾何固定數(shù)據(jù)、防漏光數(shù)據(jù)),只加載用到的,充分利用每一個比特,確保運行時效率。
調(diào)試可視化
APS 內(nèi)置了強大的可視化調(diào)試工具。開發(fā)者可以在面板中直觀查看SH系數(shù)、光照遮擋情況、MRD軸以及各個區(qū)塊的加載狀態(tài),讓整個光照調(diào)試過程真正做到所見即所得。
![]()
APS Voxel - 檢查空間分布密度
![]()
APS Probe - 檢查具體烘焙顏色, 漏光
![]()
性能表現(xiàn):全平臺流暢運行的堅實后盾
![]()
數(shù)據(jù)實測
APS 在設(shè)計之初充分考慮了不同平臺的性能預(yù)算,目標是在控制內(nèi)存與顯存占用的同時,為多端項目提供穩(wěn)定的間接光照表現(xiàn)。實測結(jié)果顯示:
PC 平臺:支持 DX11 / DX12,在 RTX 3060 設(shè)備上,即便使用動態(tài)條件分支,仍可穩(wěn)定運行在約77 FPS。
iOS /MacOS 平臺:基于 Metal,在 iPhone 14 上運行復(fù)雜綠洲大場景時,可穩(wěn)定保持60 FPS。
Android 平臺:支持 GLES 3.1+ / Vulkan,在小米 14 設(shè)備上實測可達到約80 FPS。
WebGL / 小游戲平臺:當(dāng)前會自動回退至傳統(tǒng)探針方案,以保證兼容性,后續(xù)將擴展CPU混合與尋址能力。
為了適應(yīng)復(fù)雜的跨平臺硬件生態(tài),APS 內(nèi)置了精細的性能分級系統(tǒng),讓開發(fā)者能夠根據(jù)目標設(shè)備的算力,游刃有余地調(diào)配系統(tǒng)資源。
在顯存管理方面,系統(tǒng)提供了極具彈性的顯存預(yù)算控制。開發(fā)者可以根據(jù)設(shè)備的實際規(guī)格,將顯存占用最小從 12MB 起步。這確保了即便是在內(nèi)存吃緊的基礎(chǔ)機型上,依然能穩(wěn)定運行高質(zhì)量的間接光照。為了保障在開放世界中高速移動時的幀率平穩(wěn),APS 引入了分幀加載量控制機制。通過合理規(guī)劃每幀的 IO 與實例化任務(wù),有效避免了場景漫游時可能出現(xiàn)的性能峰值與卡頓。
![]()
APS設(shè)置面板
采樣策略與精度選擇
在底層采樣模塊上,系統(tǒng)支持在 3D Texture 與 Buffer Based 兩種采樣模式間靈活切換,并涵蓋了對 SH L1/L2 數(shù)據(jù)的精細調(diào)度,確保在不同圖形 API 下都能最大化利用硬件帶寬與緩存。
針對極致的移動端優(yōu)化需求,APS 還特別支持在頂點著色器(Vertex Shader)階段完成探針插值運算(VertexShader Interpolation)。這一策略能夠大幅釋放像素片段著色器的計算壓力,在畫質(zhì)與發(fā)熱之間找到完美的平衡點。
![]()
![]()
極速入門:輕松開啟自適應(yīng)光照
![]()
1. 激活 StreamerSystem
從 Package Manager 中安裝 Streamer System。
![]()
2.RenderPipeline Lighting 中激活 APS
在渲染設(shè)置中激活 APS。
![]()
3. 指定 Sector Root
指定 Sector Root, 即要處理的場景根節(jié)點。
![]()
4. Sector 切分地塊
設(shè)置場景 Sector 單塊的切分大小。
![]()
5. 設(shè)置烘焙密度
可以設(shè)置場景 Probe 的自動最小擺放密度。
![]()
6. Sector & Bake
參數(shù)配置好了后, 只需要一次性 Sector Scene 將場景切分, 光照有調(diào)整的話, 重新 Bake 即可, 有需要中斷可以點擊 Cancel。
![]()
詳細文檔各部分參數(shù)詳細解釋可以查看引擎文檔
[1] APS 概述:
https://docs.unity.cn/cn/tuanjiemanual/Manual/APS-overview.html
[2] 如何使用 APS:
https://docs.unity.cn/cn/tuanjiemanual/Manual/APS-usage.html
[3] APS Runtime API:
https://docs.unity.cn/cn/tuanjiemanual/Manual/APS-api.html
![]()
未來展望
![]()
團結(jié)引擎對光影技術(shù)的探索仍在繼續(xù)。APS 團隊已規(guī)劃清晰的演進路線:
移動端性能突破
引入 SH Pool 神經(jīng)網(wǎng)絡(luò)壓縮技術(shù),進一步優(yōu)化移動端顯存與幀率,讓大型場景在手機上運行得更流暢。
渲染核心升級
持續(xù)優(yōu)化 UniversalRayTracing(URT)與 BVH 結(jié)構(gòu),為運行時動態(tài)追蹤打下基礎(chǔ);同時加入更多光照子特性,豐富美術(shù)調(diào)光手段。
全平臺覆蓋
推進 CPU 混合與尋址方案,擴展對小游戲、Web 端的支持,讓輕量級應(yīng)用也能獲得高質(zhì)量間接光照。
Unity 官方微信
第一時間了解Unity引擎動向,學(xué)習(xí)進階開發(fā)技能
每一個“點贊”、“在看”,都是我們前進的動力
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.