#Advanced Render Graph issue with RWStructuredBuffer (Unity 6.3)

1 messages · Page 1 of 1 (latest)

lapis folio
#

Hi. I'm trying advanced RenderGraph techniques. For example I wanna use transient RWStructuredBuffer in raster pass and use that buffer later in compute pass. According RenderGraph Viewer my RenderFeature is fine. But FrameDebugger and RenderDoc show that RWStructuredBuffer is not assigned. I tried many things already. The first things which I did is read

  • Manual
  • Scripting manual
  • Scripting manual at com.unity.render-pipelines.core manual

I'm using Unity 6.3 and shader model 5.0. Could you help to fix the issue?

Recording stage

TextureDesc desc = renderTarget.GetDescriptor(renderGraph);
int elementSize = Marshal.SizeOf<SamplePixel>();

BufferHandle buffer = builder.CreateTransientBuffer(
    new BufferDesc()
    {
        count = desc.width * desc.height * elementSize,
        stride = elementSize,
        name = "Sample",
        target = GraphicsBuffer.Target.Structured,
        usageFlags = GraphicsBuffer.UsageFlags.None,
    }
);

var contextItem = context.GetOrCreate<SampleContextItem>();
contextItem._samplePixels = buffer;

passData._samplePixels = buffer;

builder.AllowGlobalStateModification(true);
builder.UseBufferRandomAccess(buffer, 1, AccessFlags.ReadWrite);

Executing stage

RasterCommandBuffer cb = context.cmd;
cb.SetGlobalBuffer("g_samplePixels", data._samplePixels);
cb.DrawRendererList(data._renderList);

Shader

RWStructuredBuffer<SamplePixel>     g_samplePixels:     register(u1);

float4 RunPS(in VertexToPixel inputData, in float4 color, in uint rasterWidth)
{
    const uint2 c = (uint2)inputData._vertexH.xy;
    g_samplePixels[c.y * rasterWidth + c.x]._coord = c;
    return color;
}