1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- ;(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
- })()
|