Scriptable Render Pass blit has no effect

I’ve been attempting to write a scriptable render pass that will take a texture from a previous render pass and blit it to the screen with a shader.

The previous render pass works fine, but this Blit pass does not. It is difficult to find where the problem is because there is simply no output. There are no errors and the screen does not change. The camera just displays what it is looking at.

I’m currently just trying to get the shader to display anything at all. The shader I’m using is very simple and should just return white for every pixel.

I have confirmed that the texture from the previous pass is being sent to this pass, both passes are queued and run every frame.

Here is the code for my render pass:

class OutlineRenderPass : ScriptableRenderPass
    {
        private Material outlineMaterial;
        private RenderTextureDescriptor outlineDescriptor;
        
        class PassData
        {
            
        }
        
        public OutlineRenderPass(Shader shader)
        {
            outlineMaterial = new Material(shader);
            outlineDescriptor = new RenderTextureDescriptor(Screen.width, Screen.height, RenderTextureFormat.Default, 0);
            
        }

        public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext)
        {
            UniversalResourceData resourceData = frameContext.Get<UniversalResourceData>();
            SimpleDrawData simpleDrawData = frameContext.Get<SimpleDrawData>();
            
            TextureHandle srcCamColor = resourceData.activeColorTexture;
            TextureHandle simpleTexture = simpleDrawData.simpleDrawTexture;

            if (!srcCamColor.IsValid())
                return;
            if (!simpleTexture.IsValid())
                return;
            
            RenderGraphUtils.BlitMaterialParameters blitPass = new(simpleTexture, srcCamColor, outlineMaterial, 0);
            renderGraph.AddBlitPass(blitPass, "Outline Pass");
        }
        
    }

And here is the shader I’m using to test:

Shader "Custom/Pure White"
{
    Properties
    {
        _MainTex("Main Texture",2D)="white"{}
    }
    SubShader
    {
    Blend One Zero
        Pass
        {
            CGPROGRAM
 
            sampler2D _MainTex;
 
            float2 _MainTex_TexelSize;
 
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
 
            struct v2f
            {
                float4 pos : SV_POSITION;
                float2 uvs : TEXCOORD0;
            };
 
            v2f vert (appdata_base v)
            {
                v2f o;
 
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uvs = v.texcoord;
 
                return o;
            }
 
            half4 frag(v2f i) : COLOR
            {
                return half4(1, 1, 1, 1);
            }
 
            ENDCG
 
        }
    }
}

And just for good measure here is the code that creates and enqueues the passes:

    public override void Create()
    {
        if (drawSimpleShader == null) return;
        if (outlineShader == null) return;
        
        _simpleDrawRenderPass = new SimpleDrawRenderPass(drawSimpleShader);
        _outlineRenderPass = new OutlineRenderPass(outlineShader);

        _simpleDrawRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
        _outlineRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
    }

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        renderer.EnqueuePass(_simpleDrawRenderPass);
        renderer.EnqueuePass(_outlineRenderPass);
    }

Any help would be appreciated, this new RenderGraph API is pretty difficult for me to understand.