run method
Returns linear RGBA for attachment zero. Null discards the fragment.
Implementation
@override
Vector4? run(Float32List v, ShaderBindings b, FragmentContext c) {
final tiles = b.textures['tile_texture'];
if (tiles == null) return Vector4(0.0, 0.0, 0.0, 1.0);
final texel = b.vec4('NeighborMaxInfo', 'texel', Vector4.zero());
var longest = Vector2.zero();
var longestSpan = 0.0;
for (var dy = -1; dy <= 1; dy++) {
for (var dx = -1; dx <= 1; dx++) {
final at = tiles.sample(v[0] + dx * texel.x, v[1] + dy * texel.y);
final span = at.x * at.x + at.y * at.y;
if (span > longestSpan) {
longest = Vector2(at.x, at.y);
longestSpan = span;
}
}
}
return Vector4(longest.x, longest.y, 0.0, 1.0);
}