有没有办法在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);