run method

  1. @override
Vector4 run(
  1. Float32List a,
  2. ShaderBindings bindings,
  3. Float32List out
)
override

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);
}