I have a setup like the following, where I compute a 65*65 array of Vector3 in a compute shader. Everything works fine with previous method (using buffer.GetData()) but I can't get it working using the new AsyncGPUReadback requests. The request.GetData<> behaves weirdly depending on the data type. Compute shader : RWStructuredBuffer<float3> vertexBuffer; (which is written into when I dispatch the compute shader) C# side : buffer = new ComputeBuffer(65 * 65, sizeof(float) * 3, ComputeBufferType.Default)); // Dispatch request = AsyncGPUReadback.Request(buffer); // wait until done == true (and verify hasError == false) Vector3 data = request.GetData<Vector3>().ToArray(); Instead of giving me an array of 4225 Vector3s, this returns an array of 1408 Vector3s, filled with 0. Other tries at GetData return weird results too : float data = request.GetData<float>().ToArray(); // returns 4225 floats filled with zero Color32 data = request.GetData<Color32>().ToArray(); // returns 4225 Color32s filled with random values Color data = request.GetData<Color>().ToArray(); // returns 1056 Colors filled with zero I have tried but I really fail to understand the logic in this. How is one supposed to get Vector3/float3 data using AsyncGPUReadback requests ?