import { BufferGeometry, Camera, Color, Material, RawShaderMaterial, Scene, Texture, Vector3, Vector4, WebGLRenderer } from 'three'; import { PointCloudOctree } from '../point-cloud-octree'; import { PointCloudOctreeNode } from '../point-cloud-octree-node'; import { ClipMode, IClipBox } from './clipping'; import { PointColorType, PointOpacityType, PointShape, PointSizeType, TreeType } from './enums'; import { IClassification, IGradient, IUniform } from './types'; import { ColorEncoding } from './color-encoding'; export interface IPointCloudMaterialParameters { size: number; minSize: number; maxSize: number; treeType: TreeType; newFormat: boolean; } export interface IPointCloudMaterialUniforms { bbSize: IUniform<[number, number, number]>; blendDepthSupplement: IUniform; blendHardness: IUniform; classificationLUT: IUniform; clipBoxCount: IUniform; clipBoxes: IUniform; depthMap: IUniform; diffuse: IUniform<[number, number, number]>; fov: IUniform; gradient: IUniform; heightMax: IUniform; heightMin: IUniform; intensityBrightness: IUniform; intensityContrast: IUniform; intensityGamma: IUniform; intensityRange: IUniform<[number, number]>; level: IUniform; maxSize: IUniform; minSize: IUniform; octreeSize: IUniform; opacity: IUniform; pcIndex: IUniform; rgbBrightness: IUniform; rgbContrast: IUniform; rgbGamma: IUniform; screenHeight: IUniform; screenWidth: IUniform; size: IUniform; spacing: IUniform; toModel: IUniform; transition: IUniform; uColor: IUniform; visibleNodes: IUniform; vnStart: IUniform; wClassification: IUniform; wElevation: IUniform; wIntensity: IUniform; wReturnNumber: IUniform; wRGB: IUniform; wSourceID: IUniform; opacityAttenuation: IUniform; filterByNormalThreshold: IUniform; highlightedPointCoordinate: IUniform; highlightedPointColor: IUniform; enablePointHighlighting: IUniform; highlightedPointScale: IUniform; } export declare class PointCloudMaterial extends RawShaderMaterial { private static helperVec3; lights: boolean; fog: boolean; numClipBoxes: number; clipBoxes: IClipBox[]; visibleNodesTexture: Texture | undefined; private visibleNodeTextureOffsets; private _gradient; private gradientTexture; private _classification; private classificationTexture; uniforms: IPointCloudMaterialUniforms & Record>; bbSize: [number, number, number]; depthMap: Texture | undefined; fov: number; heightMax: number; heightMin: number; intensityBrightness: number; intensityContrast: number; intensityGamma: number; intensityRange: [number, number]; maxSize: number; minSize: number; octreeSize: number; opacity: number; rgbBrightness: number; rgbContrast: number; rgbGamma: number; screenHeight: number; screenWidth: number; size: number; spacing: number; transition: number; color: Color; weightClassification: number; weightElevation: number; weightIntensity: number; weightReturnNumber: number; weightRGB: number; weightSourceID: number; opacityAttenuation: number; filterByNormalThreshold: number; highlightedPointCoordinate: Vector3; highlightedPointColor: Vector4; enablePointHighlighting: boolean; highlightedPointScale: number; useClipBox: boolean; weighted: boolean; pointColorType: PointColorType; pointSizeType: PointSizeType; clipMode: ClipMode; useEDL: boolean; shape: PointShape; treeType: TreeType; pointOpacityType: PointOpacityType; useFilterByNormal: boolean; highlightPoint: boolean; inputColorEncoding: ColorEncoding; outputColorEncoding: ColorEncoding; attributes: { position: { type: string; value: any[]; }; color: { type: string; value: any[]; }; normal: { type: string; value: any[]; }; intensity: { type: string; value: any[]; }; classification: { type: string; value: any[]; }; returnNumber: { type: string; value: any[]; }; numberOfReturns: { type: string; value: any[]; }; pointSourceID: { type: string; value: any[]; }; indices: { type: string; value: any[]; }; }; newFormat: boolean; constructor(parameters?: Partial); dispose(): void; clearVisibleNodeTextureOffsets(): void; updateShaderSource(): void; applyDefines(shaderSrc: string): string; setClipBoxes(clipBoxes: IClipBox[]): void; get gradient(): IGradient; set gradient(value: IGradient); get classification(): IClassification; set classification(value: IClassification); private recomputeClassification; get elevationRange(): [number, number]; set elevationRange(value: [number, number]); getUniform(name: K): IPointCloudMaterialUniforms[K]['value']; setUniform(name: K, value: IPointCloudMaterialUniforms[K]['value']): void; updateMaterial(octree: PointCloudOctree, visibleNodes: PointCloudOctreeNode[], camera: Camera, renderer: WebGLRenderer): void; private updateVisibilityTextureData; static makeOnBeforeRender(octree: PointCloudOctree, node: PointCloudOctreeNode, pcIndex?: number): (_renderer: WebGLRenderer, _scene: Scene, _camera: Camera, _geometry: BufferGeometry, material: Material) => void; }