render method
void
render(
- WebGLRenderer renderer,
- WebGLRenderTarget writeBuffer,
- WebGLRenderTarget readBuffer, {
- double? deltaTime,
- 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);
}
}
}