import * as THREE from 'three'; declare class PBMGaussianSplattingRenderMesh extends THREE.Mesh { needsRender: boolean; private sortWorker; private splatIndexCapacity; private sortDataUploaded; private usedSHDegree; private transformStore; private objectParamsStore; private transformsDirty; private layerRegistry; private shStore; private orderTexture; private assembler; private reorderPass; private orderTarget; /** 当前 source order 所基于的布局快照(object→start/count) */ private orderBaseSnapshot; /** 每次上传排序数据打一个 generation,记录该次排序所基于的布局快照;返回的 order 按 generation 取回,避免异步错配 */ private sortGeneration; private snapshotByGen; private orderCount; private orderDirty; private layoutDirty; private lastObjectsHash; private lastClipperHash; /** 上次触发排序时的相机 matrixWorld 快照 */ private prevSortCameraMatrix; /** 平移增量阈值(世界单位):超过才重排 */ sortCameraDistance: number; /** 姿态相似度阈值(|quat 点积|):低于才重排(0.99 ≈ 相机绕轴约 16° 内不重排) */ sortCameraCoorient: number; /** 最小重排间隔(ms):即使脏也不超过此频率,0=不限 */ sortMinIntervalMs: number; private sortLastTime; constructor(); private createGeometry; private ensureSplatIndexCapacity; private createMaterial; private rebuildTransformsTexture; /** * 每对象渲染参数纹理。必须紧随 rebuildTransformsTexture:槽位复用 TransformStore * 分配的 transformIndex(该索引同时被烘进 SplatAssembler 的大纹理)。 */ private rebuildObjectParamsTexture; /** P4:SplatAssembler 增量同步(per-tile 纹理缓存)+ GPU 组装。布局按对象顺序连续。 */ private rebuildAssembled; /** 重建 SH 纹理(数据源按对象顺序连续 offset 读 obj.sh1/2/3)并同步 uniform。 */ private updateSH; private applyDepthIndex; private snapshotLayout; /** 用「旧 order 布局快照 → 当前布局」的位移/剔除段表,把 source order 修正到当前布局。 */ private buildSegments; /** 每帧(order 或布局变化时)把 source order 经 ReorderPass 修正到当前布局,主 shader 采样 orderTarget。 */ private runReorder; private postSortData; /** * 是否需要重排(对齐 aholo isSortDirty): * - 数据/布局变化(transformsDirty || 首次未上传)强制重排(≈ aholo isSceneDirty/packQueue); * - 否则比较相机相对「上次排序时快照」的平移/姿态增量,均小于阈值则跳过(小角度节流)。 */ private shouldSort; private requestSort; private collectObjects; private isSceneChanged; private rebuild; private updateClipperUniforms; private updateClipperCounts; private updateInitAnimationDefine; onBeforeRender: (renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera) => void; dispose(): void; } export { PBMGaussianSplattingRenderMesh };