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