render method

void render([
  1. double? deltaTime
])

Implementation

void render([double? deltaTime]) {
  // deltaTime value is in seconds
  deltaTime ??= clock.getDelta();
  bool maskActive = false;
  final currentRenderTarget = this.renderer.getRenderTarget();
  final il = passes.length;

  bool didActivate = false;

  for (int i = 0; i < il; i++) {
    final pass = passes[i];

    if (pass.enabled == false) continue;

    pass.renderToScreen = (renderToScreen && isLastEnabledPass(i));
    if(pass.renderToScreen && !kIsWeb && !didActivate){
      texture?.activate();
      didActivate = true;
    }
    pass.render(renderer, writeBuffer, readBuffer, deltaTime: deltaTime, maskActive: maskActive);

    if (pass.needsSwap) {
      if (maskActive) {
        final context = renderer.getContext();
        final stencil = renderer.state.buffers["stencil"];

        //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );
        stencil.setFunc(context.NOTEQUAL, 1, 0xffffffff);

        copyPass.render(renderer, writeBuffer, readBuffer, deltaTime: deltaTime);

        //context.stencilFunc( context.EQUAL, 1, 0xffffffff );
        stencil.setFunc(context.EQUAL, 1, 0xffffffff);
      }

      swapBuffers();
    }

    if (pass is MaskPass) {
      maskActive = true;
    }
    else if (pass is ClearMaskPass) {
      maskActive = false;
    }
    if(pass.renderToScreen && !kIsWeb) texture?.signalNewFrameAvailable();
  }
  renderer.setRenderTarget(currentRenderTarget);
}