Dies ist das Repository meines kleinen Portfolios.
Im Hintergrund läuft eine Planetensimulation, geschrieben in JavaScript und Three.js.
Die zu sehenden Texturen stammen von:
https://www.solarsystemscope.com/textures/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.7 KiB
81 lines
1.7 KiB
import { |
|
Color |
|
} from 'three'; |
|
import { Pass } from './Pass.js'; |
|
|
|
class RenderPass extends 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 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; |
|
|
|
} |
|
|
|
} |
|
|
|
export { RenderPass };
|
|
|