Minor GC because of closure in ShapesRenderPass using Render Graph API

Avatar

There is a 128 Byte memory allocation each frame in the ShapesRenderPass when running Unity 6 with Render Graph API. The reason for this is the reference to the drawCommand field. This can be fixed by adding drawCommand as a field to the PassData and access that in the RenderFunc instead:

private class PassData 
{
    public DrawCommand drawCommand;
}

public override void RecordRenderGraph( RenderGraph renderGraph, ContextContainer frameData ) {
    using IRasterRenderGraphBuilder builder = renderGraph.AddRasterRenderPass( "Render Shapes", out var data );
    builder.AllowPassCulling( false );
    UniversalResourceData resourceData = frameData.Get();
    builder.SetRenderAttachment( resourceData.cameraColor, 0, AccessFlags.Write );
    data.drawCommand = drawCommand;
    builder.SetRenderFunc(
        ( PassData data, RasterGraphContext context ) => {
            data.drawCommand.AppendToBuffer( context.cmd );
        }
    );
}
Reporting a bug? please specify Unity version:
Unity 6000.0.33f1
Reporting a bug? please specify Shapes version:
Shapes 4.5.0
Reporting a bug? please specify Render Pipeline:
URP