Outdated URP renderpass setup documentation

I tried to create a custom render pass following the guide on the official documentation. When I follow the exact steps I end up with a Script that looks like this:

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.Rendering.RenderGraphModule;
using Unity.VisualScripting;
using UnityEngine.Rendering.RenderGraphModule.Util;
using System;

public class CustomPixelPerfectPass : ScriptableRendererFeature
{
    class PixelPerfectRenderPass : ScriptableRenderPass
    {
        private RenderTextureDescriptor pixelPerfectTextureDescriptor;

        private CustomPixelPerfectPassSettings defaultSettings;
        private Material material;
        static readonly int pixelSizeID = Shader.PropertyToID("_PixelSize");
        private const string k_PixelPerfectTextureName = "_BlurTexture";

        public PixelPerfectRenderPass(Material material, CustomPixelPerfectPassSettings defaultSettings) {
            this.material = material;
            this.defaultSettings = defaultSettings;

            pixelPerfectTextureDescriptor = new RenderTextureDescriptor(Screen.width, Screen.height, RenderTextureFormat.Default, 0);
        }

        // RecordRenderGraph is where the RenderGraph handle can be accessed, through which render passes can be added to the graph.
        // FrameData is a context container through which URP resources can be accessed and managed.
        public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData)
        {
            const string k_pixelPerfectPassName = "Render Pixel Perfect Pass";

            // Use this scope to set the required inputs and outputs of the pass and to
            // setup the passData with the required properties needed at pass execution time.

            // Make use of frameData to access resources and camera data through the dedicated containers.
            // Eg:
            // UniversalCameraData cameraData = frameData.Get<UniversalCameraData>();
            UniversalResourceData resourceData = frameData.Get<UniversalResourceData>();
            UniversalCameraData cameraData = frameData.Get<UniversalCameraData>();

            if (resourceData.isActiveTargetBackBuffer)
                return;

            pixelPerfectTextureDescriptor.width = cameraData.cameraTargetDescriptor.width;
            pixelPerfectTextureDescriptor.height = cameraData.cameraTargetDescriptor.height;
            pixelPerfectTextureDescriptor.depthBufferBits = 0;

            TextureHandle srcCamColor = resourceData.activeColorTexture;
            TextureHandle dst = UniversalRenderer.CreateRenderGraphTexture(renderGraph, pixelPerfectTextureDescriptor, k_PixelPerfectTextureName, false);

            // Update the blur settings in the material
            UpdatePixelPerfectSettings();

            // This check is to avoid an error from the material preview in the scene
            if (!srcCamColor.IsValid() || !dst.IsValid())
                return;

            RenderGraphUtils.BlitMaterialParameters paraVertical = new(srcCamColor, dst, material, 0);
            renderGraph.AddBlitPass(paraVertical, k_pixelPerfectPassName);
        }

        private void UpdatePixelPerfectSettings() {
            if (material == null)
                return;

            var volumeComponent = VolumeManager.instance.stack.GetComponent<CustomPixelPerfectVolumeComponent>();
            float pixelSize = volumeComponent.pixelSize.overrideState ?
                volumeComponent.pixelSize.value : defaultSettings.pixelSize;

            material.SetFloat(pixelSizeID, pixelSize);
        }
    }

    [SerializeField] private CustomPixelPerfectPassSettings settings;
    [SerializeField] private Shader shader;
    private Material material;
    private PixelPerfectRenderPass pixelPerfectRenderPass;

    /// <inheritdoc/>
    public override void Create() {
        if (shader == null) {
            return;
        }
        material = new Material(shader);
        pixelPerfectRenderPass = new PixelPerfectRenderPass(material, settings);

        pixelPerfectRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
    }

    // Here you can inject one or multiple render passes in the renderer.
    // This method is called when setting up the renderer once per-camera.
    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        if (pixelPerfectRenderPass == null) {
            return;
        }
        if (renderingData.cameraData.cameraType == CameraType.Game) {
            renderer.EnqueuePass(pixelPerfectRenderPass);
        }
    }

    protected override void Dispose(bool disposing) {
        if (Application.isPlaying) {
            Destroy(material);
        } else {
            DestroyImmediate(material);
        }
    }
}

[System.Serializable]
public class CustomPixelPerfectPassSettings {
    public float pixelSize = 2;
}

[Serializable]
public class CustomPixelPerfectVolumeComponent : VolumeComponent {

    public ClampedFloatParameter pixelSize =
        new ClampedFloatParameter(2, 1, 32);
}

When you create a custom renderer feature you get a default script that looks like this though:

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.Rendering.RenderGraphModule;

public class ExamplePassFeature : ScriptableRendererFeature
{
    class CustomRenderPass : ScriptableRenderPass
    {
        // This class stores the data needed by the RenderGraph pass.
        // It is passed as a parameter to the delegate function that executes the RenderGraph pass.
        private class PassData
        {
        }

        // This static method is passed as the RenderFunc delegate to the RenderGraph render pass.
        // It is used to execute draw commands.
        static void ExecutePass(PassData data, RasterGraphContext context)
        {
        }

        // RecordRenderGraph is where the RenderGraph handle can be accessed, through which render passes can be added to the graph.
        // FrameData is a context container through which URP resources can be accessed and managed.
        public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData)
        {
            const string passName = "Render Custom Pass";

            // This adds a raster render pass to the graph, specifying the name and the data type that will be passed to the ExecutePass function.
            using (var builder = renderGraph.AddRasterRenderPass<PassData>(passName, out var passData))
            {
                // Use this scope to set the required inputs and outputs of the pass and to
                // setup the passData with the required properties needed at pass execution time.

                // Make use of frameData to access resources and camera data through the dedicated containers.
                // Eg:
                // UniversalCameraData cameraData = frameData.Get<UniversalCameraData>();
                UniversalResourceData resourceData = frameData.Get<UniversalResourceData>();

                // Setup pass inputs and outputs through the builder interface.
                // Eg:
                // builder.UseTexture(sourceTexture);
                // TextureHandle destination = UniversalRenderer.CreateRenderGraphTexture(renderGraph, cameraData.cameraTargetDescriptor, "Destination Texture", false);
                
                // This sets the render target of the pass to the active color texture. Change it to your own render target as needed.
                builder.SetRenderAttachment(resourceData.activeColorTexture, 0);

                // Assigns the ExecutePass function to the render pass delegate. This will be called by the render graph when executing the pass.
                builder.SetRenderFunc((PassData data, RasterGraphContext context) => ExecutePass(data, context));
            }
        }

        // NOTE: This method is part of the compatibility rendering path, please use the Render Graph API above instead.
        // This method is called before executing the render pass.
        // It can be used to configure render targets and their clear state. Also to create temporary render target textures.
        // When empty this render pass will render to the active camera render target.
        // You should never call CommandBuffer.SetRenderTarget. Instead call <c>ConfigureTarget</c> and <c>ConfigureClear</c>.
        // The render pipeline will ensure target setup and clearing happens in a performant manner.
        public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData)
        {
        }

        // NOTE: This method is part of the compatibility rendering path, please use the Render Graph API above instead.
        // Here you can implement the rendering logic.
        // Use <c>ScriptableRenderContext</c> to issue drawing commands or execute command buffers
        // https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.html
        // You don't have to call ScriptableRenderContext.submit, the render pipeline will call it at specific points in the pipeline.
        public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
        {
        }

        // NOTE: This method is part of the compatibility rendering path, please use the Render Graph API above instead.
        // Cleanup any allocated resources that were created during the execution of this render pass.
        public override void OnCameraCleanup(CommandBuffer cmd)
        {
        }
    }

    CustomRenderPass m_ScriptablePass;

    /// <inheritdoc/>
    public override void Create()
    {
        m_ScriptablePass = new CustomRenderPass();

        // Configures where the render pass should be injected.
        m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
    }

    // Here you can inject one or multiple render passes in the renderer.
    // This method is called when setting up the renderer once per-camera.
    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        renderer.EnqueuePass(m_ScriptablePass);
    }
}

Now, the first one I tried just does nothing while when I try to combine them like this:

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.Rendering.RenderGraphModule;
using Unity.VisualScripting;
using UnityEngine.Rendering.RenderGraphModule.Util;
using System;

public class CustomPixelPerfectPass : ScriptableRendererFeature
{
    class PixelPerfectRenderPass : ScriptableRenderPass
    {
        // This class stores the data needed by the RenderGraph pass.
        // It is passed as a parameter to the delegate function that executes the RenderGraph pass.
        private class PassData
        {
        }

        private RenderTextureDescriptor pixelPerfectTextureDescriptor;

        private CustomPixelPerfectPassSettings defaultSettings;
        private Material material;
        static readonly int pixelSizeID = Shader.PropertyToID("_PixelSize");
        private const string k_PixelPerfectTextureName = "_BlurTexture";

        public PixelPerfectRenderPass(Material material, CustomPixelPerfectPassSettings defaultSettings) {
            this.material = material;
            this.defaultSettings = defaultSettings;

            pixelPerfectTextureDescriptor = new RenderTextureDescriptor(Screen.width, Screen.height, RenderTextureFormat.Default, 0);
        }

        // This static method is passed as the RenderFunc delegate to the RenderGraph render pass.
        // It is used to execute draw commands.
        static void ExecutePass(PassData data, RasterGraphContext context)
        {
        }

        // RecordRenderGraph is where the RenderGraph handle can be accessed, through which render passes can be added to the graph.
        // FrameData is a context container through which URP resources can be accessed and managed.
        public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) {
            const string k_pixelPerfectPassName = "Render Pixel Perfect Pass";

            // Use this scope to set the required inputs and outputs of the pass and to
            // setup the passData with the required properties needed at pass execution time.
            using (var builder = renderGraph.AddRasterRenderPass<PassData>(k_pixelPerfectPassName, out var passData))
            {
                    // Make use of frameData to access resources and camera data through the dedicated containers.
                    // Eg:
                    // UniversalCameraData cameraData = frameData.Get<UniversalCameraData>();
                    UniversalResourceData resourceData = frameData.Get<UniversalResourceData>();
                UniversalCameraData cameraData = frameData.Get<UniversalCameraData>();

                if (resourceData.isActiveTargetBackBuffer)
                    return;

                pixelPerfectTextureDescriptor.width = cameraData.cameraTargetDescriptor.width;
                pixelPerfectTextureDescriptor.height = cameraData.cameraTargetDescriptor.height;
                pixelPerfectTextureDescriptor.depthBufferBits = 0;

                TextureHandle srcCamColor = resourceData.activeColorTexture;
                TextureHandle dst = UniversalRenderer.CreateRenderGraphTexture(renderGraph, pixelPerfectTextureDescriptor, k_PixelPerfectTextureName, false);

                // Update the blur settings in the material
                UpdatePixelPerfectSettings();

                // This check is to avoid an error from the material preview in the scene
                if (!srcCamColor.IsValid() || !dst.IsValid())
                    return;

                RenderGraphUtils.BlitMaterialParameters paraVertical = new(srcCamColor, dst, material, 0);
                renderGraph.AddBlitPass(paraVertical, k_pixelPerfectPassName);

                builder.SetRenderAttachment(resourceData.activeColorTexture, 0);

                // Assigns the ExecutePass function to the render pass delegate. This will be called by the render graph when executing the pass.
                builder.SetRenderFunc((PassData data, RasterGraphContext context) => ExecutePass(data, context));
            }
        }

        private void UpdatePixelPerfectSettings() {
            if (material == null)
                return;

            var volumeComponent = VolumeManager.instance.stack.GetComponent<CustomPixelPerfectVolumeComponent>();
            float pixelSize = volumeComponent.pixelSize.overrideState ?
                volumeComponent.pixelSize.value : defaultSettings.pixelSize;

            material.SetFloat(pixelSizeID, pixelSize);
        }
    }

    [SerializeField] private CustomPixelPerfectPassSettings settings;
    [SerializeField] private Shader shader;
    private Material material;
    private PixelPerfectRenderPass pixelPerfectRenderPass;

    /// <inheritdoc/>
    public override void Create() {
        if (shader == null) {
            return;
        }
        material = new Material(shader);
        pixelPerfectRenderPass = new PixelPerfectRenderPass(material, settings);

        pixelPerfectRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
    }

    // Here you can inject one or multiple render passes in the renderer.
    // This method is called when setting up the renderer once per-camera.
    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        if (pixelPerfectRenderPass == null) {
            return;
        }
        if (renderingData.cameraData.cameraType == CameraType.Game) {
            renderer.EnqueuePass(pixelPerfectRenderPass);
        }
    }

    protected override void Dispose(bool disposing) {
        if (Application.isPlaying) {
            Destroy(material);
        } else {
            DestroyImmediate(material);
        }
    }
}

[System.Serializable]
public class CustomPixelPerfectPassSettings {
    public float pixelSize = 2;
}

[Serializable]
public class CustomPixelPerfectVolumeComponent : VolumeComponent {

    public ClampedFloatParameter pixelSize =
        new ClampedFloatParameter(2, 1, 32);
}

I get the following errors:

Exception: Please finish building the previous pass first by disposing the pass builder object before adding a new pass.
UnityEngine.Rendering.RenderGraphModule.RenderGraphBuilders.Setup (UnityEngine.Rendering.RenderGraphModule.RenderGraphPass renderPass, UnityEngine.Rendering.RenderGraphModule.RenderGraphResourceRegistry resources, UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphBuilders.cs:47)
UnityEngine.Rendering.RenderGraphModule.RenderGraph.AddUnsafePass[PassData] (System.String passName, PassData& passData, UnityEngine.Rendering.ProfilingSampler sampler, System.String file, System.Int32 line) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs:1079)
UnityEngine.Rendering.RenderGraphModule.RenderGraph.AddUnsafePass[PassData] (System.String passName, PassData& passData, System.String file, System.Int32 line) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs:1043)
UnityEngine.Rendering.RenderGraphModule.Util.RenderGraphUtils.AddBlitPass (UnityEngine.Rendering.RenderGraphModule.RenderGraph graph, UnityEngine.Rendering.RenderGraphModule.Util.RenderGraphUtils+BlitMaterialParameters blitParameters, System.String passName, System.String file, System.Int32 line) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphUtilsBlit.cs:706)
CustomPixelPerfectPass+PixelPerfectRenderPass.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ContextContainer frameData) (at Assets/Settings/CustomPixelPerfectPass.cs:72)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordCustomRenderGraphPassesInEventRange (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.Universal.RenderPassEvent eventStart, UnityEngine.Rendering.Universal.RenderPassEvent eventEnd) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1222)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordCustomRenderGraphPasses (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.Universal.RenderPassEvent startInjectionPoint, UnityEngine.Rendering.Universal.RenderPassEvent endInjectionPoint) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1241)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordCustomRenderGraphPasses (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.Universal.RenderPassEvent injectionPoint) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1246)
UnityEngine.Rendering.Universal.UniversalRenderer.OnMainRendering (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:1350)
UnityEngine.Rendering.Universal.UniversalRenderer.OnRecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:796)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1175)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:10)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordAndExecuteRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer, UnityEngine.Rendering.CommandBuffer cmd, UnityEngine.Camera camera, System.String cameraName) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:24)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.UniversalCameraData cameraData) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:857)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderCameraStack (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera baseCamera) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:1082)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List`1[T] cameras) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:469)
UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List`1[T] cameras) (at <44f3679c53d1477a9c6e72f269e3a3a9>:0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipelineAsset, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at <44f3679c53d1477a9c6e72f269e3a3a9>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)



InvalidOperationException: The previously scheduled job ZBinningJob writes to the Unity.Collections.NativeArray`1[System.UInt32] ZBinningJob.bins. You must call JobHandle.Complete() on the job ZBinningJob, before you can write to the Unity.Collections.NativeArray`1[System.UInt32] safely.
Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckWriteAndThrowNoEarlyOut (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <44f3679c53d1477a9c6e72f269e3a3a9>:0)
Unity.Collections.LowLevel.Unsafe.NativeArrayUnsafeUtility.GetUnsafePtr[T] (Unity.Collections.NativeArray`1[T] nativeArray) (at <44f3679c53d1477a9c6e72f269e3a3a9>:0)
UnityEngine.Rendering.Universal.Internal.ForwardLights.PreSetup (UnityEngine.Rendering.Universal.UniversalRenderingData renderingData, UnityEngine.Rendering.Universal.UniversalCameraData cameraData, UnityEngine.Rendering.Universal.UniversalLightData lightData) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs:200)
UnityEngine.Rendering.Universal.UniversalRenderer.OnBeforeRendering (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:871)
UnityEngine.Rendering.Universal.UniversalRenderer.OnRecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:792)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1175)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:10)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordAndExecuteRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer, UnityEngine.Rendering.CommandBuffer cmd, UnityEngine.Camera camera, System.String cameraName) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:24)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.UniversalCameraData cameraData) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:857)
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/Runtime/UniversalRenderPipeline.cs:690)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:665)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List`1[T] cameras) (at ./Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:482)
UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List`1[T] cameras) (at <44f3679c53d1477a9c6e72f269e3a3a9>:0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipelineAsset, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at <44f3679c53d1477a9c6e72f269e3a3a9>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)


So, my question is, what are you supposed to do with the execute pass function and the PassData so it doesn’t cause any errors?

Hello,
For the first script it does nothing I think it is because the pass is being culled. The pass writes to TextureHandle dst and this dst texture is not being read or used in later render passes.

AddBlitPass is a helper function that if you want to do a simple blit, you just need the BlitMaterialParameters and AddBlitPass() lines. If you want to achieve the same thing without using the helper function, you have to do things like what the default script does, i.e. take care of the

            using (var builder = renderGraph.AddRasterRenderPass<PassData>(passName, out var passData))
            {
                bla bla bla
            }

and also the PassData and ExecutePass().
For the combined script, it is giving error because it is missing the using (var builder bla bla bla) statement.

There are many simple RenderGraph examples that might help you to learn the API. You can download it from the Package Manager. Open Package Manager, select “Universal RP”, click on “Samples” tab, and then click “Import” on “URP RenderGraph Samples”.