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