在Unity中的HLSL中,是否可以在计算着色器中使用多个计算缓冲区



有没有办法在Unity中的HLSL中的计算着色器中使用两个缓冲区?我需要用一个在网格上输入一些标量值,用一个返回行进立方体生成的顶点数组。

您可以定义RWStructuredBuffer-RW表示Read+Write一个普通的StructuredBuffer是写保护的:你不能从着色器向它写入,而是在从C#传递它之后读取它。

可以在着色器中定义多个:

RWStructuredBuffer<float4> myFirstBuffer : register(u1); // index1 !
RWStructuredBuffer<float4> mySecondBuffer : register(u2); // index2 !

并在C#中这样访问它们:

Graphics.ClearRandomWriteTargets();
material.SetPass(0);
material.SetBuffer("myFirstBuffer", myFirstBuffer);
Graphics.SetRandomWriteTarget(1, myFirstBuffer, false); // index 1!
compute_buffer.GetData(myFirstBuffer);
material.SetBuffer("mySecondBuffer", mySecondBuffer);
Graphics.SetRandomWriteTarget(2, mySecondBuffer, false); // index 2!
compute_buffer.GetData(mySecondBuffer);

最新更新