123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- import {
- Color
- } from 'three';
- import { Pass } from './Pass.js';
- class RenderPass extends Pass {
-
- constructor( scene, camera, overrideMaterial = null, clearColor = null, clearAlpha = null ) {
- super();
-
- this.scene = scene;
-
- this.camera = camera;
-
- this.overrideMaterial = overrideMaterial;
-
- this.clearColor = clearColor;
-
- this.clearAlpha = clearAlpha;
-
- this.clear = true;
-
- this.clearDepth = false;
-
- this.needsSwap = false;
- this._oldClearColor = new Color();
- }
-
- render( renderer, writeBuffer, readBuffer ) {
- const oldAutoClear = renderer.autoClear;
- renderer.autoClear = false;
- let oldClearAlpha, oldOverrideMaterial;
- if ( this.overrideMaterial !== null ) {
- oldOverrideMaterial = this.scene.overrideMaterial;
- this.scene.overrideMaterial = this.overrideMaterial;
- }
- if ( this.clearColor !== null ) {
- renderer.getClearColor( this._oldClearColor );
- renderer.setClearColor( this.clearColor, renderer.getClearAlpha() );
- }
- if ( this.clearAlpha !== null ) {
- oldClearAlpha = renderer.getClearAlpha();
- renderer.setClearAlpha( this.clearAlpha );
- }
- if ( this.clearDepth == true ) {
- renderer.clearDepth();
- }
- renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
- if ( this.clear === true ) {
-
- renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
- }
- renderer.render( this.scene, this.camera );
-
- if ( this.clearColor !== null ) {
- renderer.setClearColor( this._oldClearColor );
- }
- if ( this.clearAlpha !== null ) {
- renderer.setClearAlpha( oldClearAlpha );
- }
- if ( this.overrideMaterial !== null ) {
- this.scene.overrideMaterial = oldOverrideMaterial;
- }
- renderer.autoClear = oldAutoClear;
- }
- }
- export { RenderPass };
|