render method
void
render(
[ - 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);
}