run method

  1. @override
Vector4? run(
  1. Float32List v,
  2. ShaderBindings b,
  3. FragmentContext c
)
override

Returns linear RGBA for attachment zero. Null discards the fragment.

Implementation

@override
Vector4? run(Float32List v, ShaderBindings b, FragmentContext c) {
  final mask = b.vec4('IdInfo', 'mask', Vector4(-1.0, 1.0, 0.0, 0.0));
  if (mask.x >= 0.0) {
    final uv = uvFootprint(c);
    final texture = b.textures['base_color_texture'];
    final texel = texture == null
        ? 1.0
        : texture.sample(v[kVUv], v[kVUv + 1], du: uv.du, dv: uv.dv).w;
    if (texel * mask.y * v[kVColour + 3] < mask.x) return null;
  }
  final id = b.vec4('IdInfo', 'id', Vector4.zero());
  return Vector4(id.x, id.y, id.z, 1.0);
}