aboutsummaryrefslogtreecommitdiff
path: root/downloads/RenderPass.js
diff options
context:
space:
mode:
Diffstat (limited to 'downloads/RenderPass.js')
-rw-r--r--downloads/RenderPass.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/downloads/RenderPass.js b/downloads/RenderPass.js
new file mode 100644
index 0000000..b212e77
--- /dev/null
+++ b/downloads/RenderPass.js
@@ -0,0 +1,74 @@
+( function () {
+
+ class RenderPass extends THREE.Pass {
+
+ constructor( scene, camera, overrideMaterial, clearColor, clearAlpha ) {
+
+ super();
+ this.scene = scene;
+ this.camera = camera;
+ this.overrideMaterial = overrideMaterial;
+ this.clearColor = clearColor;
+ this.clearAlpha = clearAlpha !== undefined ? clearAlpha : 0;
+ this.clear = true;
+ this.clearDepth = false;
+ this.needsSwap = false;
+ this._oldClearColor = new THREE.Color();
+
+ }
+
+ render( renderer, writeBuffer, readBuffer
+ /*, deltaTime, maskActive */
+ ) {
+
+ const oldAutoClear = renderer.autoClear;
+ renderer.autoClear = false;
+ let oldClearAlpha, oldOverrideMaterial;
+
+ if ( this.overrideMaterial !== undefined ) {
+
+ oldOverrideMaterial = this.scene.overrideMaterial;
+ this.scene.overrideMaterial = this.overrideMaterial;
+
+ }
+
+ if ( this.clearColor ) {
+
+ renderer.getClearColor( this._oldClearColor );
+ oldClearAlpha = renderer.getClearAlpha();
+ renderer.setClearColor( this.clearColor, this.clearAlpha );
+
+ }
+
+ if ( this.clearDepth ) {
+
+ renderer.clearDepth();
+
+ }
+
+ renderer.setRenderTarget( this.renderToScreen ? null : readBuffer ); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
+
+ if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
+ renderer.render( this.scene, this.camera );
+
+ if ( this.clearColor ) {
+
+ renderer.setClearColor( this._oldClearColor, oldClearAlpha );
+
+ }
+
+ if ( this.overrideMaterial !== undefined ) {
+
+ this.scene.overrideMaterial = oldOverrideMaterial;
+
+ }
+
+ renderer.autoClear = oldAutoClear;
+
+ }
+
+ }
+
+ THREE.RenderPass = RenderPass;
+
+} )();