/** * @author alteredq / http://alteredqualia.com/ */ THREE.RenderPass = function (scene, camera, overrideMaterial, clearColor, clearAlpha) { THREE.Pass.call(this); 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; }; THREE.RenderPass.prototype = Object.assign(Object.create(THREE.Pass.prototype), { constructor: THREE.RenderPass, render: function (renderer, writeBuffer, readBuffer, delta, maskActive) { var oldAutoClear = renderer.autoClear; renderer.autoClear = false; this.scene.overrideMaterial = this.overrideMaterial; var oldClearColor, oldClearAlpha; if (this.clearColor) { oldClearColor = renderer.getClearColor().getHex(); oldClearAlpha = renderer.getClearAlpha(); renderer.setClearColor(this.clearColor, this.clearAlpha); } if (this.clearDepth) { renderer.clearDepth(); } renderer.render(this.scene, this.camera, this.renderToScreen ? null : readBuffer, this.clear); if (this.clearColor) { renderer.setClearColor(oldClearColor, oldClearAlpha); } this.scene.overrideMaterial = null; renderer.autoClear = oldAutoClear; } });