import type { PointCloudNode } from './point-cloud-node.js'; export type PointColorMode = 'rgb' | 'classification' | 'intensity' | 'height' | 'fixed' | 'deviation'; export type PointSizeMode = 'fixed-px' | 'adaptive-world' | 'attenuated'; /** Number of u32 words in the 256-bit LAS class-visibility mask. */ export declare const CLASS_MASK_WORDS = 8; /** * Normalize the public `classMask` option into the 8-word (256-bit) * uniform layout. Accepts: * - `undefined` → all classes visible * - `number` (legacy) → bits 0..31 as given; classes 32..255 stay * visible, matching the old 32-bit semantics * - `ArrayLike` → up to 8 words, LSB-first; missing or * non-finite words default to all-visible */ export declare function normalizeClassMask(mask: number | ArrayLike | undefined): Uint32Array; export declare const COLOR_MODE_INDEX: Record; export declare const SIZE_MODE_INDEX: Record; export interface PointUniformInputs { viewProj: Float32Array; fixedColor: [number, number, number, number]; colorMode: PointColorMode; sizeMode: PointSizeMode; pointSize: number; worldRadius: number; roundShape: boolean; sectionNormal: [number, number, number]; sectionDist: number; sectionEnabled: boolean; heightMin: number; heightMax: number; viewportW: number; viewportH: number; /** 256-bit LAS class-visibility mask, 8 u32 words LSB-first (#1783). */ classMask: Uint32Array; /** Preview stride — 1 = full density, N = render every Nth point. */ previewStride: number; /** BIM ↔ scan deviation heatmap range (metres). */ deviationCenterOffset: number; deviationHalfRange: number; } /** * Pack the per-asset point-cloud uniform block into `scratch` and copy * it onto the GPU. The two scratch typed-arrays must alias the same * underlying buffer so we can write floats and packed u32 flags in one * pass. */ export declare function writePointCloudUniforms(device: GPUDevice, scratch: Float32Array, scratchU32: Uint32Array, node: PointCloudNode, inputs: PointUniformInputs): void; //# sourceMappingURL=point-cloud-uniforms.d.ts.map