in src/engine/VolumeRenderer3d.js [1257:1332]
render() {
/*if (this.sceneReadyCounter !== SCENE_READY_COUNTER_OK) {
// render empty scene to show "black" empty screen
this.renderer.render(this.scene, this.camera);
return;
}*/
if (!this.isReadyToRender()) {
return;
}
const matReady = this.matVolumeRender !== null && this.matBF !== null && this.matFF !== null && this.matRenderToTexture !== null;
if (!matReady) {
// do nothing
} else {
// check once render target
if (this.checkFrameBufferMode === CHECK_MODE_NOT_CHECKED) {
// const isGood = true;// GlCheck.checkFrameBuffer(this.renderer, this.bfTexture);
this.checkFrameBufferMode = CHECK_MODE_RESULT_OK;
}
if (this.renderScene === SCENE_TYPE_RAYCAST) {
this.updateLightDir();
this.updateClipPlaneGeometry();
this.updateCutPlanes();
this.renderer.setRenderTarget(this.bfTexture);
this.renderer.clear();
this.renderer.state.buffers.depth.setClear(0);
this.scene.overrideMaterial = this.matBF;
this.renderer.render(this.scene, this.camera, this.bfTexture);
const glC = this.renderer.getContext();
if (this.isEraseMode && !this.lockEraserBuffersUpdating) {
glC.readPixels(0, 0, this.windowWidth, this.windowHeight, glC.RGBA, glC.FLOAT, this.bufferBFTextureCPU);
}
this.renderer.setRenderTarget(this.ffTexture);
this.renderer.clear();
this.renderer.state.buffers.depth.setClear(1);
// render clip plane without depth test
this.renderer.render(this.sceneClipPlane, this.camera, this.ffTexture);
// enable test again
this.scene.overrideMaterial = this.matFF;
this.renderer.render(this.scene, this.camera, this.ffTexture);
if (this.isEraseMode && !this.lockEraserBuffersUpdating) {
glC.readPixels(0, 0, this.windowWidth, this.windowHeight, glC.RGBA, glC.FLOAT, this.bufferFFTextureCPU);
}
this.renderer.setRenderTarget();
this.renderer.clear();
this.renderer.state.buffers.depth.setClear(0);
this.scene.overrideMaterial = this.matRenderToTexture;
this.renderer.render(this.scene, this.camera, this.renderToTexture);
if (this.isEraseMode && !this.lockEraserBuffersUpdating) {
glC.readPixels(0, 0, this.xSmallTexSize, this.ySmallTexSize, glC.RGBA, glC.FLOAT, this.bufferRenderToTextureCPU);
}
// get a reference to the internal WebGL rendering context
this.scene.overrideMaterial = null;
this.renderer.render(this.scene, this.camera);
// Render wireframe mesh
this.renderer.autoClearDepth = false;
//this.matWireFrame
//this.renderer.clear();
if (this.Tool23D) {
this.renderer.render(this.scene23D, this.camera);
}
//this.renderer.render(this.sceneSphereWireFrame, this.camera);
this.renderer.autoClearDepth = true;
//this.renderer.clear();
/*
this.renderer.clear();
this.renderer.render(this.scene23D, this.camera);
*/
}
this.renderCounter++;
}
}