Hello, I played around with the VR Core Template in Unity 2022.3.23 + .24. After a short time, like going three times into playmode and clicking on things in the Editor, the console log is spamming with Exceptions.
Turns out, in XRPass.GetViewPort, that m_Views.Count is zero.
Anybody else seeing this ? I already filed a bug report.
The exception:
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
System.Collections.Generic.List1[T].get_Item (System.Int32 index) (at <b11ba2a8fbf24f219f7cc98532a11304>:0) UnityEngine.Experimental.Rendering.XRPass.GetViewport (System.Int32 viewIndex) (at ./Library/PackageCache/com.unity.render-pipelines.core@14.0.10/Runtime/XR/XRPass.cs:195) UnityEngine.Rendering.Universal.Internal.DrawObjectsPass.ExecutePass (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.Internal.DrawObjectsPass+PassData data, UnityEngine.Rendering.Universal.RenderingData& renderingData, System.Boolean yFlip) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/Passes/DrawObjectsPass.cs:186) UnityEngine.Rendering.Universal.Internal.DrawObjectsPass.Execute (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/Passes/DrawObjectsPass.cs:156) UnityEngine.Rendering.Universal.ScriptableRenderer.ExecuteRenderPass (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderPass renderPass, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/ScriptableRenderer.cs:1507) UnityEngine.Rendering.Universal.ScriptableRenderer.ExecuteBlock (System.Int32 blockIndex, UnityEngine.Rendering.Universal.ScriptableRenderer+RenderBlocks& renderBlocks, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData, System.Boolean submit) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/ScriptableRenderer.cs:1463) UnityEngine.Rendering.Universal.ScriptableRenderer.Execute (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/ScriptableRenderer.cs:1223) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.CameraData& cameraData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/UniversalRenderPipeline.cs:664) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera, UnityEngine.Rendering.Universal.UniversalAdditionalCameraData& additionalCameraData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/UniversalRenderPipeline.cs:549) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/UniversalRenderPipeline.cs:532) UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List1[T] cameras) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/Runtime/UniversalRenderPipeline.cs:384)
UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List`1[T] cameras) (at :0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipe, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at :0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)
With 2022.3.26 the log spamming has become unrelated to the Inspector, it’s constant in Playmode. Using OpenXR and Valve Index.
Each Exception is now accompanied by a warning:
Render Pipeline error : the XR layout still contains active passes. Executing XRSystem.EndLayout() right now.
UnityEngine.GUIUtility:processEvent (int,intptr,bool&)
I found the following workaround, by changing a line in the URP package:
Move the folder “com.unity.render-pipelines.universal@14.0.10” from the folder Library\PackageCache to the folder Packages instead, so it can be modified.
Add an “xr.enabled” check in the method ExecutePass in the file DrawObjectsPass.cs, to read in line 184-187:
if (data.m_RenderingData.cameraData.xrRendering && data.m_RenderingData.cameraData.xr.enabled && data.m_IsActiveTargetBackBuffer)
{
cmd.SetViewport(data.m_RenderingData.cameraData.xr.GetViewport());
}
I have the exact same problem. For me it happens whenever I inspect/open the XR Origin (XR Rig) and select the Main Camera object during playmode, but if I deselect the Main Camera the error message stops. Here’s how I get the error:
During Play mode, open the XR Origin (XR Rig) object in your scene
Open the Camera Offset object
Select the Main Camera Object
the error message should appear in the Console
The exception:
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
System.Collections.Generic.List1[T].get_Item (System.Int32 index) (at <b11ba2a8fbf24f219f7cc98532a11304>:0) UnityEngine.Experimental.Rendering.XRPass.GetViewport (System.Int32 viewIndex) (at ./Library/PackageCache/com.unity.render-pipelines.core@14.0.11/Runtime/XR/XRPass.cs:195) UnityEngine.Rendering.Universal.Internal.DrawObjectsPass.ExecutePass (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.Internal.DrawObjectsPass+PassData data, UnityEngine.Rendering.Universal.RenderingData& renderingData, System.Boolean yFlip) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/Passes/DrawObjectsPass.cs:186) UnityEngine.Rendering.Universal.Internal.DrawObjectsPass.Execute (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/Passes/DrawObjectsPass.cs:156) UnityEngine.Rendering.Universal.ScriptableRenderer.ExecuteRenderPass (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderPass renderPass, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/ScriptableRenderer.cs:1507) UnityEngine.Rendering.Universal.ScriptableRenderer.ExecuteBlock (System.Int32 blockIndex, UnityEngine.Rendering.Universal.ScriptableRenderer+RenderBlocks& renderBlocks, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData, System.Boolean submit) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/ScriptableRenderer.cs:1463) UnityEngine.Rendering.Universal.ScriptableRenderer.Execute (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/ScriptableRenderer.cs:1223) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.CameraData& cameraData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/UniversalRenderPipeline.cs:664) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera, UnityEngine.Rendering.Universal.UniversalAdditionalCameraData& additionalCameraData) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/UniversalRenderPipeline.cs:549) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/UniversalRenderPipeline.cs:532) UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List1[T] cameras) (at ./Library/PackageCache/com.unity.render-pipelines.universal@14.0.11/Runtime/UniversalRenderPipeline.cs:384)
UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List`1[T] cameras) (at <55fbbbd17b724c15b6abe8c1a3e3289c>:0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipe, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at <55fbbbd17b724c15b6abe8c1a3e3289c>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)
Hi there, quick question. When trying to change the code in DrawObjectPass, the code is automatically changed back and I receive the following error:
The package cache was invalidated and rebuilt because the following immutable asset(s) were unexpectedly altered:
Packages/com.unity.render-pipelines.universal/Runtime/Passes/DrawObjectsPass.cs
Step 1 is important:
Move the folder “com.unity.render-pipelines.universal@14.0.10” from the folder Library\PackageCache to the folder Packages instead, so it can be modified.
Thanks for the response! I realised I had moved a file with a different name, oops! I dont seem to have a file with exact that name, could it be one of these?
I also have the same problem here. And it seems that the code-changing workaround of DrawObjectsPass.cs doesn’t work for the particle effects. There will be no messages in Console but the particles don’t appear in the game view.