URPでRenderPassを追加してBlitを使ったらエラーが出る場合 今回紹介するの方法は回避方法と思われます。
根本解決かは分からないです。
エラーは、CameraType.Previewの時に発生します。
そこで単純な回避方法として、RenderPass内でCameraType.Previewの時だけ描画をスキップします。
環境 次の環境でRenderPassを追加してSwapBuffersを使ったBlitでエラーが発生しました。
Unity2022.3.13f1 URP 14.0.9 該当コード Executeの中身は以下の通り。
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { if (material == null) { return; } var cmd = CommandBufferPool.Get(RenderPassName); Blit(cmd, ref renderingData, material); context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } エラー内容 表示されたエラーは以下の通り。
CameraType.Previewの時にBlitの内でAssertionで止まっています。
Assertion failed UnityEngine.Rendering.Universal.ScriptableRenderPass:Blit (UnityEngine.Rendering.CommandBuffer,UnityEngine.Rendering.Universal.RenderingData&,UnityEngine.Material,int) ... さらに、次のエラーも表示される。 Blitter.BlitTexture内のテクスチャ周りに問題がありそうなエラー。
ArgumentNullException: Value cannot be null. Parameter name: value UnityEngine.MaterialPropertyBlock.SetTexture (System.Int32 nameID, UnityEngine.Texture value) (at /Users/bokken/build/output/unity/unity/Runtime/Export/Shaders/MaterialPropertyBlock.cs:113) UnityEngine.Rendering.Blitter.BlitTexture (UnityEngine.Rendering.CommandBuffer cmd, UnityEngine.Rendering.RTHandle source, UnityEngine.Vector4 scaleBias, UnityEngine....