Hi there, and thanks! unity_WorldToObject is actually being overridden with each instance's transform matrix in the GPU instancing setup. You can take a look at the GPUInstancerInclude.cginc to see this. What looks missing from your vertex method, however, is the required instancing setup call in the beginning of the method, namely: UNITY_SETUP_INSTANCE_ID(v); GPUI_CROWD_VERTEX(v); ... Having said that, it might actually be a better idea to do the rotations matrix-based instead of doing it vertex-based. To do this on the GPU side, using a custom compute shader would be ideal. You can take a look at the included boids fish demo in the package for an example of this. It is also possible to do the instance matrix rotations on the CPU side if you are not familiar with compute shaders to do this. In that case, I would recommend using a threaded system to divide load in the CPU (like the job system).