Developer : ft-lab (Yutaka Yoshisaka).
06/13/2021 - 03/01/2022.
UnityのバージョンやBuilt-in/URP/HDRPのバージョンによる差異に関するメモです。
「
動作検証」の検証の補足になります。
表示でDepthが暗くなる
BuiltInでの実行時に、デモシーン"Editor/distanceDepthTest.unity"でDepthが暗くなる場合は、
Project Settingsの"Player"-"Other Settings"-"Color Space"が"Linear"になっていることを確認してください。
以下は"Color Space"が"Gamma"の場合の表示です。
下に表示されるDepthが暗くなっています。
Depthテクスチャは、RenderTextureFormat.ARGBFloatのフォーマットが使用されています。
これはディスプレイに表示する際にsRGBの影響を受けないテクスチャになります。
以下は"Color Space"が"Linear"の場合の表示です。
Editor実行時に画面に収まらない
Editor上でデモシーンを実行した場合、画面より大きくはみ出るときはVRとしての実行になっている可能性があります。
Panorama180 RenderのEditor向けのデモシーンはVRに対応していません。
この場合は、Project Settingsの"XR Plug-in Management"で"Initialize XR on Startup"チェックボックスをOffにし、
"Plug-in Providers"もOffにするようにしてください。
OnGUIの描画でGUI.DrawTextureを使った描画が白くなる
Unity2018 BuiltIn/URP時、OnGUIの描画でGUI.DrawTextureが白くなる現象が起きていました。
これは、デモシーンの"Runtime/blocks"でUnity2018でColor Spaceが"Linear"時にのみ発生していました。
Unity 2019/2020では発生していません。
"Runtime/Sample_Capture.cs"でGUI.DrawTexture使用時に、一時的に"GL.sRGBWrite = false;"とすることでこの問題を回避しています。
bool oldSRGBWrite = GL.sRGBWrite;
if (rc.sRGB) GL.sRGBWrite = false;
GUI.DrawTexture(new Rect(Screen.width - pWidth, 0, pWidth, pHeight), rc, ScaleMode.ScaleToFit, true);
GL.sRGBWrite = oldSRGBWrite;
Unity2020 + HDRPでDX12にしてビルドして実行すると不定期にクラッシュ
HDRP + DX12だとビルドして実行時に不安定になることがありました。
不正なメモリにアクセスしてクラッシュする現象が発生します。
これはPanorama180Render使用時に限らず起きていました。RenderTextureを複数使うと発生するようでした。
Unity Editor上での実行時は問題ありません。
HDRP + DX11にすればRuntime時も安定しています。
Unity 2021 + HDRP(DX12)では安定して動作していました。
HDRPでPanorama180/360を切り替えたときに重い
URPでOculus Quest2のネイティブビルドした場合、カラースペース変換が不正 ?
Oculus Integration ver.29.0を使用しました。
Unity 2020.3.6 + URPでOculus Quest2のネイティブビルドした場合、
パノラマテクスチャをマテリアルのテクスチャとして割り当てたときにテクスチャが白くなります。
これは、デモシーン"Runtime/blocks_sync_RenderTexture"をOculus Quest2用にAndroidビルドを行い、
Oculus Quest2で実行した場合に発生していました。
Unity 2019.4.28 + URPでOculus Quest2でネイティブ実行した場合も発生。
Unity 2020.3.6 + URPのPCでのRuntime実行/PC-VR実行では問題なし。
Unity 2020.3.6 + Built-inでOculus Quest2でネイティブ実行した場合は問題なし。
Unity 2019.4.16 + URPでOculus Quest2でネイティブ実行した場合は問題なし。
Unityバージョンにより発生しているようです。解決策は見つけていません。
Unity Editorでデモシーンを読み込んで実行した場合、Panorama180 Renderの反映がされない場合がある
Unityのバージョンによっては、Unity Editorでデモシーンを読み込んで実行した場合、Panorama180 Renderの反映がされない場合がありました。
この場合は、一度MainCameraのInspectorを表示してから再度Playするとうまく動作するようです。
Unity 2020.3 + URPでビルドしOculus Quest2でネイティブ実行したとき全体的にノイズが出てちらつく
Oculus Integration ver.29.0を使用しました。
Panorama180 Renderの使用する/しないに限らず、
Unity 2020.3.6 + URPでAndroidビルドしてOculus Quest2でネイティブ実行したときに細かいノイズが発生していました。
描画も若干遅延があるようにも見えます。
Unity 2020.3.6 + Built-inでは問題なし。
Unity 2019.4 + URPでは問題なし。
Unity 2020.3 + URPでのOculus Quest2のネイティブ実行は安定しないように見えます。
Oculus Integration ver.35.0 + Unity 2021.2(URP)ではこの問題は発生せず、安定していました。
Unity 2019.4.16 + URPのとき、VR実行するとDepthテクスチャが正しく取得できない
Oculus Integration ver.29.0を使用しました。
Unity 2019.4.16/2019.4.28 + URPのVR実行時に、
Project Settingsの"XR Plug-in Management"の"Oculus"-"Stereo Rendering Mode"を"Single Pass Instanced"にしないとDepthが正しく取得できないようです。
Oculus Quest(Android)時は、
Project Settingsの"XR Plug-in Management"の"Oculus"-"Stereo Rendering Mode"を"Multiview"にしないとDepthが正しく取得できないようです。
Unity 2019.4.16/2019.4.28ともにBuilt-inでのVR実行は問題なし。
Unity 2020.3.6 + URPでは本件は発生していません。
そのため、特定バージョンで発生する問題と思われます。
copyDepth_srp.shaderがコンパイルエラー
Built-in/URP環境で「copyDepth_srp.shader」がコンパイルエラーになります。
HDRP以外ではこのShaderは使用されないため、Panorama180 Renderの動作に問題はありません。