| | |
| | | import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer'; |
| | | import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'; |
| | | import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass'; |
| | | import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass'; |
| | | import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader'; |
| | | |
| | | |
| | | const help = false; |
| | | |
| | |
| | | } |
| | | |
| | | render = () => { |
| | | this.renderer.shadowMap.enabled = true; |
| | | // this.renderer.render(this.scene, this.camera); |
| | | this.composer.render(); // use special effects |
| | | this.stats.update(); |
| | |
| | | const composer = new EffectComposer(this.renderer); |
| | | const renderPass = new RenderPass(this.scene, this.camera); |
| | | composer.addPass(renderPass); |
| | | // pixel ratio |
| | | const pixelRatio = this.renderer.getPixelRatio(); |
| | | const newWidth = Math.floor(this.getFullWidth() * pixelRatio) || 1; |
| | | const newHeight = Math.floor(this.getFullHeight() * pixelRatio) || 1; |
| | | composer.setSize(newWidth, newHeight); |
| | | // antialias |
| | | const effectFXAA = new ShaderPass(FXAAShader); |
| | | effectFXAA.uniforms['resolution'].value.set(1 / newWidth, 1 / newHeight); |
| | | composer.addPass(effectFXAA); |
| | | // outline |
| | | this.outlinePass = new OutlinePass(new THREE.Vector2(this.getFullWidth(), this.getFullHeight()), this.scene, this.camera); |
| | | composer.addPass(this.outlinePass); |
| | | return composer; |