import { BufferGeometry, Camera, Color, IUniform, Mesh, Scene, ShaderMaterial, Vector2, WebGLRenderer, WebGLRenderTarget, } from "@easytwin/three"; export interface ReflectorShader { name: string; defines: { DISTANCE_ATTENUATION: boolean; FRESNEL: boolean; }; uniforms: { [key: string]: IUniform; }; vertexShader: string; fragmentShader: string; } export interface ReflectorForSSRPassOptions { clipBias?: number | undefined; textureWidth?: number | undefined; textureHeight?: number | undefined; color?: number | undefined; useDepthTexture?: boolean | undefined; shader?: ReflectorShader | undefined; } export class ReflectorForSSRPass extends Mesh { type: "ReflectorForSSRPass"; options: ReflectorForSSRPassOptions; static ReflectorShader: ReflectorShader; needsUpdate: boolean; maxDistance: number; opacity: number; color: Color; resolution: Vector2; get distanceAttenuation(): boolean; set distanceAttenuation(val: boolean); get fresnel(): boolean; set fresnel(val: boolean); material: ShaderMaterial; renderTarget: WebGLRenderTarget; constructor(geometry: TGeometry, options: ReflectorForSSRPassOptions); doRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera) => void; getRenderTarget: () => WebGLRenderTarget; }