renderFilter method

  1. @override
void renderFilter(
  1. RenderState renderState,
  2. RenderTextureQuad renderTextureQuad,
  3. int pass
)
override

Implementation

@override
void renderFilter(
    RenderState renderState, RenderTextureQuad renderTextureQuad, int pass) {
  final renderContext = renderState.renderContext as RenderContextWebGL;
  final renderTexture = renderTextureQuad.renderTexture;
  final passCount = _renderPassSources.length;
  final passScale = pow(0.5, pass >> 1);
  final pixelRatio = sqrt(renderState.globalMatrix.det.abs());
  final pixelRatioScale = pixelRatio * passScale;

  final renderProgram = renderContext.getRenderProgram(
      r'$BlurFilterProgram', BlurFilterProgram.new);

  renderContext.activateRenderProgram(renderProgram);
  renderContext.activateRenderTexture(renderTexture);

  renderProgram.configure(
      pass == passCount - 1 ? renderState.globalAlpha : 1.0,
      pass.isEven ? pixelRatioScale * blurX / renderTexture.width : 0.0,
      pass.isEven ? 0.0 : pixelRatioScale * blurY / renderTexture.height);

  renderProgram.renderTextureQuad(renderState, renderTextureQuad);
  renderProgram.flush();
}