import { Camera, type Renderer, type Scene } from 'three/webgpu'; import { type default as SSAAPassNode } from 'three/addons/tsl/display/SSAAPassNode.js'; export interface RevisionSource { readonly revision: number; } export type SettledSupersamplingMode = 'direct' | 'supersampled' | 'cached'; export interface SettledSupersampling3DOptions { /** Number of samples is 2^sampleLevel. Default 2 (four samples). */ sampleLevel?: number; /** Unchanged frames required before supersampling. Default 2. */ settleFrames?: number; /** Absolute camera/signature tolerance. Default 1e-6. */ settleEpsilon?: number; /** Optional Holotope products whose revisions invalidate the cached result. */ revisionSources?: readonly RevisionSource[]; } /** Renderer-independent stability state used by settled render pipelines. */ export declare class SettledSamplingState { readonly settleFrames: number; readonly epsilon: number; stableFrames: number; settled: boolean; private previous; constructor(settleFrames?: number, epsilon?: number); /** Observe all state which affects a render. Returns whether it is settled. */ observe(signature: ArrayLike): boolean; invalidate(): void; } /** * Renders moving state directly, then computes one native Three.js SSAA pass * after camera, viewport, and tracked product revisions settle. Later frames * replay the cached linear render target without re-running the expensive * multi-sample scene pass. * * Call `invalidate()` for application state not represented by the camera or * `revisionSources` (ordinary object animation, material changes, etc.). */ export declare class SettledSupersampling3D { readonly renderer: Renderer; readonly scene: Scene; readonly camera: Camera; readonly pass: SSAAPassNode; readonly sampleLevel: number; readonly sampleCount: number; readonly state: SettledSamplingState; readonly revisionSources: readonly RevisionSource[]; private readonly supersampledPipeline; private readonly cachedPipeline; private readonly viewportSize; private cacheValid; private _mode; constructor(renderer: Renderer, scene: Scene, camera: Camera, options?: SettledSupersampling3DOptions); get mode(): SettledSupersamplingMode; private signature; /** * Render one frame. The returned mode is useful for diagnostics and UI. */ render(): SettledSupersamplingMode; invalidate(): void; dispose(): void; } //# sourceMappingURL=settled-supersampling.d.ts.map