constructor({
        width = 512,
        height = 512,
        clipBias = 0,
        blurIterations = 8
    } = {}) {
        super();

        this.clipBias = clipBias;
        this.blurIterations = blurIterations;

        this.reflectorPlane = new Plane();
        this.normal = new Vector3();
        this.reflectorWorldPosition = new Vector3();
        this.cameraWorldPosition = new Vector3();
        this.rotationMatrix = new Matrix4();
        this.lookAtPosition = new Vector3(0, 0, -1);
        this.clipPlane = new Vector4();

        this.view = new Vector3();
        this.target = new Vector3();
        this.q = new Vector4();

        this.textureMatrix = new Matrix4();
        this.virtualCamera = new PerspectiveCamera();

        // Uniform containing texture matrix
        this.textureMatrixUniform = { value: this.textureMatrix };

        // Render targets
        this.renderTarget = new WebGLRenderTarget(width, height, {
            depthBuffer: false
        });

        this.renderTargetRead = this.renderTarget.clone();
        this.renderTargetWrite = this.renderTarget.clone();

        this.renderTarget.depthBuffer = true;

        // Uniform containing render target textures
        this.renderTargetUniform = { value: this.blurIterations > 0 ? this.renderTargetRead.texture : this.renderTarget.texture };

        // Reflection blur material
        this.blurMaterial = new ReflectorBlurMaterial();
        this.blurMaterial.uniforms.uResolution.value.set(width, height);

        // Fullscreen triangle
        this.screenCamera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
        this.screenTriangle = getFullscreenTriangle();
        this.screen = new Mesh(this.screenTriangle, this.blurMaterial);
        this.screen.frustumCulled = false;
    }
@author pschroen / https://ufo.ai/

Based on https://github.com/mrdoob/three.js/blob/dev/examples/jsm/objects/Reflector.js by Slayvin