@realsee/five
Version:
Realsee Renderer SDK
74 lines (73 loc) • 3.28 kB
TypeScript
import * as THREE from 'three';
declare class PBMGaussianSplattingRenderMesh extends THREE.Mesh<THREE.InstancedBufferGeometry, THREE.ShaderMaterial> {
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 };