关于Unity ComputeShader RWByteAddressBuffer的使用
Shader部分
#pragma kernel GpuRWByteAddressBuffer
RWByteAddressBuffer rwByteAddress;
[numthreads(1, 1, 1)]
void GpuRWByteAddressBuffer(uint3 id : SV_DispatchThreadID)
{
rwByteAddress.Store(id.x, id.x);
}
Unity部分
void RWByteAddressBuffer()
{
int[] ints = new int[] { 4, 4, 4, 0 };
int k = shader.FindKernel("GpuGpuRWByteAddressBuffer");
var buffer = new ComputeBuffer(4, sizeof(int), ComputeBufferType.IndirectArguments);
buffer.SetData(ints);//赋值
shader.SetBuffer(k, "rwByteAddress", buffer);//绑定
shader.Dispatch(k, 4, 1, 1);//执行
buffer.GetData(ints);//输出内容
}