run method
Reads attributes — the vertex, as the engine laid it out — and writes a
clip-space position plus varyings.
Implementation
@override
Vector4 run(Float32List a, ShaderBindings bindings, Float32List out) {
final scale = a[13];
final x = a[6] + a[0] * scale;
final y = a[7] + a[1] * scale;
final z = a[8] + a[2] * scale;
out[0] = a[9];
out[1] = a[10];
out[2] = a[11];
out[3] = a[12];
out[4] = x;
out[5] = y;
out[6] = z;
// Unchanged by a uniform scale, which is why the scale is one number.
out[7] = a[3];
out[8] = a[4];
out[9] = a[5];
return bindings.mat4('ParticleMeshInfo', 'view_projection') *
Vector4(x, y, z, 1.0);
}