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 at = bindings.vec4('ProbeInfo', 'at', Vector4.zero());
final texture = bindings.textures['probe_texture'];
// Zeros when nothing is bound, which is what a compiled shader reading an
// unbound sampler gets and what the check reads as "the draw landed and
// the texture did not".
final sampled = texture == null
? Vector4.zero()
: texture.sample(at.x, at.y);
out[0] = sampled.x;
out[1] = sampled.y;
out[2] = sampled.z;
out[3] = sampled.w;
return Vector4(a[0], a[1], a[2], 1.0);
}