import { type Scene, type Camera, type PassNode, RenderPipeline as RenderPipelineBase, type Node } from 'three/webgpu'; export interface BloomConfig { strength?: number; radius?: number; threshold?: number; } export interface SSGIConfig { sliceCount?: number; stepCount?: number; aoIntensity?: number; giIntensity?: number; radius?: number; thickness?: number; } export interface SSRTemporalReprojectConfig { maxFrames?: number; clampIntensity?: number; flickerSuppression?: number; hitPointReprojection?: boolean; } export interface SSRDenoiseConfig { lumaPhi?: number; depthPhi?: number; normalPhi?: number; roughnessPhi?: number; radius?: number; alphaPhi?: number; strength?: number; adapt?: number; smoothDisocclusions?: boolean; flickerSuppression?: number; adaptiveTrust?: number; } export interface SSRConfig { resolutionScale?: number; quality?: number; mirrorBias?: number; maxDistance?: number; intensity?: number; thickness?: number; maxLuminance?: number; stepExponent?: number; binaryRefine?: boolean; screenEdgeFade?: number; screenEdgeFadeBlack?: boolean; temporal?: SSRTemporalReprojectConfig; denoise?: SSRDenoiseConfig; } export type ColorOutputNode = Node<'vec4'>; export type OutputNodeComposer = (scenePass: PassNode) => ColorOutputNode; export type OutputNodeEffect = ((scenePass: PassNode, inputNode: ColorOutputNode) => ColorOutputNode) & { includesTemporalAntialias?: boolean; includesOutputTransform?: boolean; }; type Args = [ConstructorParameters[0], Scene, Camera]; export declare class RenderPipeline extends RenderPipelineBase { #private; scene: Scene; camera: Camera; scenePass: PassNode; needsUpdateOutputNode: boolean; constructor(...args: Args); /** @deprecated Use `scenePass` instead */ get currentOutputNode(): PassNode; addOverlayPass(pass: ColorOutputNode): void; removeOverlayPass(pass: ColorOutputNode): void; setCamera(camera: Camera): void; /** @deprecated Use `setOutputComposer` instead */ setCurrentOutputNode(node: ColorOutputNode): void; /** @deprecated Use `setOutputComposer(null)` instead */ resetCurrentOutputNode(): void; setOutputComposer(composer: OutputNodeComposer | null): void; addOutputEffect(effect: OutputNodeEffect): this; removeOutputEffect(effect: OutputNodeEffect): this; addMRTChannel(name: string, node: Node): this; removeMRTChannel(name: string): this; enableBloom(config?: BloomConfig): void; disableBloom(): void; updateBloom(config: Partial): void; enableSSGI(config?: SSGIConfig): void; disableSSGI(): void; updateSSGI(config: Partial): void; enableSSR(config?: SSRConfig): void; disableSSR(): void; updateSSR(config: SSRConfig): void; enableTRAA(): void; disableTRAA(): void; render(): void; dispose(): void; } export {};