import * as THREE from 'three/webgpu'; /** * Display-space blend bracket for the raster splat draw. * * Every 3DGS forward model alpha-blends DISPLAY-encoded colors, but three's WebGPU pipeline keeps a * linear framebuffer and encodes after blending. Fixed-function blending cannot express the trained * blend there (measured on SH3 fur: −5.4 dB, +0.06 luminance, −0.10 saturation), so the splat draw * is bracketed by two fullscreen passes inside the same render pass: `clear` saves the scene color * and zeroes the target, the splats accumulate display-space color and coverage against the native * depth buffer, and `resolve` composites that stack over the saved scene in display space and * writes the result back as linear. * * The three draws must stay adjacent in the transparent list. three sorts by render order, then by * the projected bounding-sphere CENTER, then by Object3D id: the passes pin their sphere center to * the local origin (the splat quad's), so the sort falls through to the id. Create the `clear` * pass, then the splat mesh, then the `resolve` pass, and parent them in that order. */ export declare class SplatBlendBracket { _geometry: THREE.BufferGeometry; _textures: THREE.FramebufferTexture[]; _materials: { clear: THREE.NodeMaterial; resolve: THREE.NodeMaterial; }; passes: THREE.Mesh[]; constructor(); /** Create one fullscreen pass mesh (see the class note on creation order). */ createPass(name: 'clear' | 'resolve'): THREE.Mesh; setActive(active: boolean): void; dispose(): void; }