render method

  1. @override
void render(
  1. WebGLRenderer renderer,
  2. WebGLRenderTarget writeBuffer,
  3. WebGLRenderTarget readBuffer, {
  4. double? deltaTime,
  5. bool? maskActive,
})
override

Implementation

@override
void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, WebGLRenderTarget readBuffer,{double? deltaTime, bool? maskActive}) {
  renderer.getClearColor(oldClearColor);
  oldClearAlpha = renderer.getClearAlpha();
  oldAutoClear = renderer.autoClear;
  renderer.autoClear = false;

  renderer.setClearColor(clearColor, 0.0);

  if (maskActive == true) renderer.state.buffers['stencil'].setTest(false);

  if (uniforms[textureID] != null) {
    uniforms[textureID]["value"] = readBuffer.texture;
  }

  if (passes != null) {
    int lastPass = passes!.length - 1;
    WebGLRenderTarget? lastRenderTarget;
    for (int i = 0; i <  passes!.length; i++) {
      material.uniforms["acPass"] = {"value": i};
      if (lastRenderTarget != null) {
        material.uniforms["acPassTexture"] = {
          "value": lastRenderTarget.texture
        };
      }

     material.needsUpdate = true;

      if (renderTargetsPass[i] == null) {
        final pars = WebGLRenderTargetOptions({
          "minFilter": LinearFilter,
          "magFilter": LinearFilter,
          "format": RGBAFormat
        });
        final renderTargetPass =
            WebGLRenderTarget(readBuffer.width, readBuffer.height, pars);
        renderTargetPass.texture.name = 'renderTargetPass $i';
        renderTargetPass.texture.generateMipmaps = false;
        renderTargetsPass[i] = renderTargetPass;
      }

      if (i >= lastPass) {
        if (renderToScreen) {
          renderPass(renderer, material, null, null, null, clear);
        } else {
          renderPass(renderer, material, writeBuffer, null, null, clear);
        }
      } else {
        renderPass(renderer, material, renderTargetsPass[i], null,null, clear);
      }

      lastRenderTarget = renderTargetsPass[i];

      i = i + 1;
    }
  }
  else {
    if (renderToScreen) {
      renderPass(renderer, material, null, null, null, clear);
    } else {
      renderPass(renderer, material, writeBuffer, null, null, clear);
    }
  }
}