import * as THREE from "three"; import type Renderer from "../Renderer"; import fragmentShader from "../shaders/worldBlur.frag"; import vertexShader from "../shaders/worldBlur.vert"; import FullScreenTriangleGeometry from "../utils/FullScreenTriangleGeometry"; import AbstractScene from "./AbstractScene"; export default class WorldBlurScene extends AbstractScene { public readonly camera: THREE.OrthographicCamera = new THREE.OrthographicCamera(); public readonly material: THREE.RawShaderMaterial; constructor(renderer: Renderer) { super(renderer); const geometry = new FullScreenTriangleGeometry(); const material = new THREE.RawShaderMaterial({ uniforms: { tWorld: { value: null }, uMaterialProps: { value: null }, }, vertexShader, fragmentShader, defines: this.renderer.getCommonMaterialDefines(), glslVersion: THREE.GLSL3, }); const mesh = new THREE.Mesh(geometry, material); this.add(mesh); this.material = material; } public recompileMaterials() { this.material.defines = this.renderer.getCommonMaterialDefines(); this.material.needsUpdate = true; } public resize(_width: number, _height: number) {} public update() {} }