@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
55 lines (54 loc) • 2.21 kB
TypeScript
import { Material, Scene, Camera, Object3D, BufferGeometry, WebGLRenderer, Mesh, WebGLRenderTarget, RenderTargetOptions, Vector3, Matrix4 } from 'three';
import { CoreRenderBlur } from '../../../core/render/Blur';
import { AbstractRenderer } from '../../../engine/viewers/Common';
export interface BaseReflectorOptions {
renderer?: AbstractRenderer;
pixelRatio: number;
multisamples: number;
clipBias: number;
active: boolean;
tblur: boolean;
blur: number;
verticalBlurMult: number;
tblur2: boolean;
blur2: number;
verticalBlur2Mult: number;
scene: Scene;
}
export declare const renderTargetParams: RenderTargetOptions;
export declare abstract class BaseReflector<TGeometry extends BufferGeometry, TMaterial extends Material> extends Mesh<TGeometry, TMaterial> {
geometry: TGeometry;
protected _options: BaseReflectorOptions;
static REFLECTOR_DEFAULT_UP: Vector3;
type: string;
private reflectorPlane;
private normal;
private reflectorWorldPosition;
private cameraWorldPosition;
private rotationMatrix;
private lookAtPosition;
private clipPlane;
private view;
private target;
private q;
protected textureMatrix: Matrix4;
private virtualCamera;
protected renderTarget: WebGLRenderTarget | undefined;
material: TMaterial;
protected _coreRenderBlur: CoreRenderBlur | undefined;
onBeforeRender: (renderer: WebGLRenderer, scene: Scene, anyCamera: Camera) => void;
protected _mirrorCameraMultipliedByMatrixWorld: boolean;
constructor(geometry: TGeometry, _options: BaseReflectorOptions);
private _createRenderTarget;
protected abstract _createMaterial(): TMaterial;
protected abstract _assignMaterialRenderTarget(): void;
dispose(): void;
private _onWindowResizeBound;
private _addWindowResizeEvent;
private _removeWindowResizeEvent;
private _onWindowResize;
private _getRendererSize;
static rotateGeometry(geometry: BufferGeometry, direction: Vector3): void;
static compensateGeometryRotation(object: Object3D, direction: Vector3): void;
protected _onBeforeRender(renderer: WebGLRenderer, scene: Scene, anyCamera: Camera): void;
}