render method

  1. @override
void render(
  1. Canvas canvas,
  2. Vector2 size,
  3. ValueSetter<Canvas> renderTree,
  4. ValueSetter<PostProcess?> updateContext,
)
override

This method is called to render the post process, to be called by the "owner" of the post process, like a CameraComponent or a PostProcessComponent.

Implementation

@override
void render(
  Canvas canvas,
  Vector2 size,
  ValueSetter<Canvas> renderTree,
  ValueSetter<PostProcess?> updateContext,
) {
  // Build the stack of post processes in reverse order
  final stack = postProcesses.reversed.toList();

  // Start with the original renderTree
  void runNext(Canvas c) {
    if (stack.isEmpty) {
      renderTree(c);
      return;
    }

    final postProcess = stack.removeAt(0);
    postProcess.render(c, size, runNext, updateContext);
  }

  canvas.save();
  runNext(canvas);
  canvas.restore();
}