古いURPをURP14にしたらエラーが出た

昔々の技術書典に向けて書いたURPのプロジェクトをURP14に移行を試みたらエラーが出たのでメモを残しておきたいと思います。

URP本

技術書典 https://techbookfest.org/product/5752788585807872?productVariantID=6047890145280000

Booth https://smartphone-games.booth.pm/items/2372771

以下の2点の修正を入れて動くようになりました。

  • ScriptableRenderer.cameraColorTagetが非推奨の対応
  • ‘CameraData.isStereoEnabled’ is obsoleteの対応

ありがたい参考サイトはこちら
https://zenn.dev/sakutaro/articles/convert_blitter

ScriptableRenderer.cameraColorTagetが非推奨の対応

以下のようなエラーが出ます。
Chapter2.UIEffectRenderPassFeatureは独自に追加したレンダーパスです。

You can only call cameraColorTarget inside the scope of a ScriptableRenderPass. Otherwise the pipeline camera target texture might have not been created or might have already been disposed.
UnityEngine.Rendering.Universal.ScriptableRenderer:get_cameraColorTarget ()
Chapter2.UIEffectRenderPassFeature:AddRenderPasses (UnityEngine.Rendering.Universal.ScriptableRenderer,UnityEngine.Rendering.Universal.RenderingData&) (at Assets/Chapter2/Scripts/CustomRenderPass/UIEffectRenderPassFeature.cs:22)

該当コードに飛ぶと、ScriptableRenderer.cameraColorTagetが非推奨になっていました。
対応は、SetupRenderPassesを追加して、currentPass.SetRenderTargetをそちらに移動します。

ずばり変更差分

         public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
         {
-            currentPass.SetRenderTarget(renderer.cameraColorTarget);
             renderer.EnqueuePass(currentPass);
         }
+
+        public override void SetupRenderPasses(ScriptableRenderer renderer, in RenderingData renderingData)
+        {
+            base.SetupRenderPasses(renderer, renderingData);
+            currentPass.SetRenderTarget(renderer.cameraColorTargetHandle);
+        }

‘CameraData.isStereoEnabled’ is obsoleteの対応

‘CameraData.isStereoEnabled’ is obsoleteのエラーが出たので、xr.enabled insteadを使うように変更しました

Assets/Chapter6/Scripts/CustomRenderPass/DepthNormalsRenderPass.cs(58,21): error CS0619: 'CameraData.isStereoEnabled' is obsolete: 'Please use xr.enabled instead.'

暫定対応で以下の修正にしました。正しいかは不明。

-       if (cameraData.isStereoEnabled)
+       if (XRGraphics.enabled)
		{
			context.StartMultiEye(cam);
		}

技術書典向けに書いたURP関係のものをURP14に移行できそうです。