1 line
630 KiB
JavaScript
1 line
630 KiB
JavaScript
|
|
!function(){"use strict";SR7??={},SR7.WEBGL??={},SR7.WEBGL.vertexShader="varying vec2 vUv;void main() {vUv = uv;gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );}",SR7.WEBGL.preFragmentShader="#if __VERSION__ < 130 \n#define TEXTURE2D texture2D \n#else \n#define TEXTURE2D texture \n#endif\n",SR7.WEBGL.getCanvas=(t={})=>{let e=document.createElement("canvas");return t.class&&(e.classList=t.class),e.style.background="transparent",e.style.width="100%",e.style.height="100%",e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.zIndex=2,e.width=t.width??1600,e.height=t.height??1200,{canvas:e}},SR7.WEBGL.postProcessing=(t,e,n,i,r)=>{const s={composer:new SR7.WEBGL.EffectComposer(e),renderPass:new SR7.WEBGL.RenderPass(n,i),effectPass:new SR7.WEBGL[t](n,i,r)};return"FilmPass"==t&&(s.effectPass.renderToScreen=!0),s.composer.addPass(s.renderPass),s.composer.addPass(s.effectPass),s},SR7.WEBGL.getPlane=t=>new THREE.Mesh(new THREE.PlaneGeometry(1,1,2,2),t),SR7.WEBGL.cleanThree=(t,e,n)=>{if(e.three){for(e.three.material&&(e.three.material.map&&e.three.material.map.dispose(),e.three.material.dispose(),e.three.material=null),e.three.scene.traverse((t=>{t.isMesh&&(t.geometry.dispose(),t.material.dispose()),t.isTexture&&t.dispose(),t=null}));e.three.scene.children.length>0;)e.three.scene.remove(e.three.scene.children[0]);e.three.renderer.forceContextLoss(),e.three.renderer.dispose(),e.three.renderer.domElement=null,e.three.renderer=null,null!==e.three.canvas.parentNode&&e.three.canvas.parentNode.removeChild(e.three.canvas)}e.three=null;t.querySelectorAll(n).forEach((t=>{t.parentNode.removeChild(t)}))},SR7.WEBGL.cleanPartlyThree=(t,e,n)=>{t.querySelectorAll(n).forEach((t=>{t.parentNode.removeChild(t)}))},SR7.WEBGL={...SR7.WEBGL,EffectComposer:class{constructor(t,n){if(this.renderer=t,void 0===n){var i={minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat},r=t.getSize(new THREE.Vector2);this._pixelRatio=t.getPixelRatio(),this._width=r.width,this._height=r.height,(n=new THREE.WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio,i)).texture.name="EffectComposer.rt1"}else this._pixelRatio=1,this._width=n.width,this._height=n.height;this.renderTarget1=n,this.renderTarget2=n.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new SR7.WEBGL.ShaderPass({uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:SR7.WEBGL.vertexShader,fragmentShader:SR7.WEBGL.preFragmentShader+e.copy}),this.clock=new THREE.Clock}swapBuffers(){var t=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=t}addPass(t){this.passes.push(t),t.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(t,e){this.passes.splice(e,0,t),t.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(t){const e=this.passes.indexOf(t);-1!==e&&this.passes.splice(e,1)}isLastEnabledPass(t){for(var e=t+1;e<this.passes.length;e++)if(this.passes[e].enabled)return!1;return!0}render(t){void 0===t&&(t=this.clock.getDelta());var e,n,i=this.renderer.getRenderTarget(),r=!1,s=this.passes.length;for(n=0;n<s;n++)if(!1!==(e=this.passes[n]).enabled){if(e.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(n),e.render(this.renderer,this.writeBuffer,this.readBuffer,t,r),e.needsSwap){if(r){var a=this.renderer.getContext(),o=this.renderer.state.buffers.stencil;o.setFunc(a.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,t),o.setFunc(a.EQUAL,1,4294967295)}this.swapBuffers()}void 0!==THREE.MaskPass&&(e instanceof THREE.MaskPass?r=!0:e instanceof THREE.ClearMaskPass&&(r=!1))}this.renderer.setRenderTarget(i)}reset(t){if(void 0===t){var e=this.renderer.getSize(new THREE.Vector2);this._pixelRatio=this.renderer.getPixelRatio(),this._width=e.width,this._height=e.height,(t=this.renderTarget1.clone()).setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarge
|