在使用 Unity 的 URP 渲染管線開發 XR 應用(如 Pico Neo、Pico 4、Quest 2/3 等一體機)時,很多開發者遇到一個奇怪的問題:
打包后,Skybox(天空盒)在某些角度下突然變黑,只在轉動頭部后才恢復正常。
這個問題在編輯器和 PC 運行時完全看不出來,只有打包部署到 XR 設備上才會復現,尤其是在 URP 渲染管線 + 自定義 Skybox 材質 + 開啟 Single-Pass Instanced 或 Multiview 渲染模式 的場景中尤為常見。
根因解析:URP Skybox Pass 在 XR 中未正確處理 Stereo 宏
它的真實根因是:
Unity URP 的 Skybox 渲染 Pass 在 XR 模式下,仍使用了一套舊的、依賴 Stereo 宏的方式處理雙眼渲染(Instancing/Multiview),而如果你的 Shader(比如自定義的 ASE Shader)沒有包含這些宏,就只能渲染一個眼睛或直接跳過該 pass。
詳見 Unity 官方 Issue 跟蹤:
Unity Issue Tracker: Skybox missing in right eye when using URP + XR
Unity 將此問題在 2022 LTS 標記為 Won’t Fix,但在 2023.2+ 新版本中已重構 URP XR 渲染路徑修復此問題。
解決方案
1、Shader 中加入
#pragma multi_compile _ STEREO_INSTANCING_ON STEREO_MULTIVIEW_ON
2、升級 Unity 至 2023.2+ 或 2024.1+
3、或者臨時改用 Multi-Pass 模式