import { FullScreenQuad } from 'three/addons/postprocessing/Pass.js'; import { Readback } from './Readback'; import { CovSplatGenerator, GsplatGenerator, SplatGenerator } from './SplatGenerator'; import { SplatMesh } from './SplatMesh'; import { DynoBool, DynoProgram, DynoProgramTemplate, DynoUsampler2DArray, DynoVec3 } from './dyno'; import * as THREE from "three"; export type GeneratorMapping = { node: SplatGenerator; generator?: GsplatGenerator; covGenerator?: CovSplatGenerator; version: number; mappingVersion?: number; base: number; count: number; }; export declare class SplatAccumulator { time: number; deltaTime: number; viewToWorld: THREE.Matrix4; viewOrigin: THREE.Vector3; viewDirection: THREE.Vector3; static viewCenterUniform: DynoVec3; static viewDirUniform: DynoVec3; static sortRadialUniform: DynoBool; maxSplats: number; numSplats: number; target: THREE.WebGLArrayRenderTarget | null; mapping: GeneratorMapping[]; version: number; mappingVersion: number; extSplats: boolean; covSplats: boolean; readback: Readback | null; readbackSplats: DynoUsampler2DArray<"extSplats", THREE.DataArrayTexture>[]; constructor({ extSplats, covSplats, }?: { extSplats?: boolean; covSplats?: boolean; }); dispose(): void; getTextures(): THREE.DataArrayTexture[]; static emptyTexture: THREE.DataArrayTexture; static emptyTextures: THREE.DataArrayTexture[]; generateMapping(splatCounts: number[]): { maxSplats: number; mapping: { base: number; count: number; }[]; }; ensureGenerate({ maxSplats }: { maxSplats: number; }): boolean; private saveRenderState; private resetRenderState; prepareProgramMaterial(generator?: GsplatGenerator, covGenerator?: CovSplatGenerator): { program: DynoProgram; material: THREE.RawShaderMaterial; }; static programExtTemplate: DynoProgramTemplate; static programTemplate: DynoProgramTemplate; static generatorProgram: WeakMap; static fullScreenQuad: FullScreenQuad; generate({ generator, covGenerator, base, count, renderer, }: { generator?: GsplatGenerator; covGenerator?: CovSplatGenerator; base: number; count: number; renderer: THREE.WebGLRenderer; }): { nextBase: number; }; prepareGenerate({ renderer, scene, time, camera, sortRadial, renderSize, previous, lodInstances, }: { renderer: THREE.WebGLRenderer; scene: THREE.Scene; time: number; camera: THREE.Camera; sortRadial: boolean; renderSize: THREE.Vector2; previous: SplatAccumulator; lodInstances?: Map; }): { sameMapping: boolean; version: number; mappingVersion: number; visibleGenerators: SplatGenerator[]; generate: () => void; readback: () => Promise>; }; checkVersions(otherMapping: GeneratorMapping[]): { splatsUpdated: boolean; mappingUpdated: boolean; }; }