import * as THREE from 'three'; import { PlaneGeometry } from 'three'; export type CausticsProjectionMaterialType = THREE.MeshNormalMaterial & { viewMatrix: { value?: THREE.Matrix4; }; color?: THREE.Color; causticsTexture?: THREE.Texture; causticsTextureB?: THREE.Texture; lightProjMatrix?: THREE.Matrix4; lightViewMatrix?: THREE.Matrix4; }; export type CausticsProps = { frames?: number; causticsOnly?: boolean; backside?: boolean; ior?: number; backsideIOR?: number; worldRadius?: number; intensity?: number; color?: THREE.Color; resolution?: number; lightSource?: THREE.Vector3 | THREE.Object3D; near?: number; far?: number; }; export type CausticsProjectionShaderType = { causticsTexture?: THREE.Texture | null; causticsTextureB?: THREE.Texture | null; color?: THREE.Color; lightProjMatrix?: THREE.Matrix4; lightViewMatrix?: THREE.Matrix4; }; export declare const CausticsProjectionMaterial: (new (parameters?: (THREE.ShaderMaterialParameters & Partial) | undefined) => THREE.ShaderMaterial & CausticsProjectionShaderType) & { key: string; }; export type CausticsMaterialType = { cameraMatrixWorld: THREE.Matrix4; cameraProjectionMatrixInv: THREE.Matrix4; normalTexture: THREE.Texture | null; depthTexture: THREE.Texture | null; lightDir: THREE.Vector3; lightPlaneNormal: THREE.Vector3; lightPlaneConstant: number; near: number; far: number; modelMatrix: THREE.Matrix4; worldRadius: number; ior: number; bounces: number; resolution: number; size: number; intensity: number; }; export declare const CausticsMaterial: (new (parameters?: (THREE.ShaderMaterialParameters & Partial) | undefined) => THREE.ShaderMaterial & CausticsMaterialType) & { key: string; }; export type CausticsType = { scene: THREE.Scene; group: THREE.Group; helper: THREE.CameraHelper; params: CausticsProps; update: () => void; normalTarget: THREE.WebGLRenderTarget; normalTargetB: THREE.WebGLRenderTarget; causticsTarget: THREE.WebGLRenderTarget; causticsTargetB: THREE.WebGLRenderTarget; }; export declare function createCausticsUpdate(updateParameters: () => { params: Omit; scene: THREE.Scene; group: THREE.Group; camera: THREE.OrthographicCamera; plane: THREE.Mesh>; normalTarget: THREE.WebGLRenderTarget; normalTargetB: THREE.WebGLRenderTarget; causticsTarget: THREE.WebGLRenderTarget; causticsTargetB: THREE.WebGLRenderTarget; helper?: THREE.CameraHelper | null; }): (gl: THREE.WebGLRenderer) => void; export declare const Caustics: (renderer: THREE.WebGLRenderer, { frames, causticsOnly, ior, backside, backsideIOR, worldRadius, color, intensity, resolution, lightSource, near, far, }?: CausticsProps) => CausticsType;