古い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に移行できそうです。