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?
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With