Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: You can only call cameraColorTarget inside the scope of a ScriptableRenderPass

I am trying to set up a Volumetric Light Scattering as a Custom Renderer Feature in URP by following this tutorial.

public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) {
    renderer.EnqueuePass(m_ScriptablePass);
    m_ScriptablePass.SetCameraColorTarget(renderer.cameraColorTarget);
}

Calling SetCameraColorTarget(renderer.cameraColorTarget) results in this error message

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 ()
VolumetricLightScattering:AddRenderPasses (UnityEngine.Rendering.Universal.ScriptableRenderer,UnityEngine.Rendering.Universal.RenderingData&) (at Assets/VolumetricLightScattering.cs:139)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

How can I refactor my code to circumvent this error?

like image 548
niklaswort Avatar asked Dec 06 '25 07:12

niklaswort


1 Answers

I was able to fix the issue with this upgrade guide from Unity.

The new code looks like this

public override void SetupRenderPasses(ScriptableRenderer renderer, in RenderingData renderingData) {
    m_ScriptablePass.SetCameraColorTarget(renderer.cameraColorTargetHandle);

}

public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) {
    renderer.EnqueuePass(m_ScriptablePass);
}
like image 117
niklaswort Avatar answered Dec 08 '25 20:12

niklaswort



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!