import * as THREE from 'three'; import RenderMode from '../Renderer/RenderMode'; import { RasterTile, RasterElevationTile, RasterColorTile } from './RasterTile'; export declare function unpack1K(color: THREE.Vector4Like, factor: number): number; export declare function getMaxColorSamplerUnitsCount(): number; export declare const colorLayerEffects: { readonly noEffect: 0; readonly removeLightColor: 1; readonly removeWhiteColor: 2; readonly customEffect: 3; }; /** GPU struct for color layers */ interface StructColorLayer { textureOffset: number; crs: number; opacity: number; effect_parameter: number; effect_type: number; transparent: boolean; } /** GPU struct for elevation layers */ interface StructElevationLayer { scale: number; bias: number; mode: number; zmin: number; zmax: number; } export declare const ELEVATION_MODES: { readonly RGBA: 0; readonly COLOR: 1; readonly DATA: 2; }; /** * Convenience type that wraps all of the generic type's fields in * [THREE.IUniform]s. */ type MappedUniforms = { [name in keyof Uniforms]: THREE.IUniform; }; /** List of the uniform types required for a LayeredMaterial. */ interface LayeredMaterialRawUniforms { diffuse: THREE.Color; opacity: number; lightingEnabled: boolean; lightPosition: THREE.Vector3; fogDistance: number; fogColor: THREE.Color; overlayAlpha: number; overlayColor: THREE.Color; objectId: number; geoidHeight: number; minBorderDistance: number; showOutline: boolean; outlineWidth: number; outlineColors: THREE.Color[]; elevationLayers: Array; elevationTextures: Array; elevationOffsetScales: Array; elevationTextureCount: number; colorLayers: Array; colorTextures: Array; colorOffsetScales: Array; colorTextureCount: number; } /** Replacing the default uniforms dynamic type with our own static map. */ export interface LayeredMaterialParameters extends THREE.ShaderMaterialParameters { uniforms?: MappedUniforms; } type DefineMapping> = { [Name in Extract as `${Prefix}_${Name}`]: Mapping[Name]; }; type ElevationModeDefines = DefineMapping<'ELEVATION', typeof ELEVATION_MODES>; type RenderModeDefines = DefineMapping<'MODE', typeof RenderMode.MODES>; type LayeredMaterialDefines = { NUM_VS_TEXTURES: number; NUM_FS_TEXTURES: number; USE_FOG: number; NUM_CRS: number; DEBUG: number; MODE: number; } & ElevationModeDefines & RenderModeDefines; /** Material that handles the overlap of multiple raster tiles. */ export declare class LayeredMaterial extends THREE.ShaderMaterial { private _visible; colorTiles: RasterColorTile[]; elevationTile: RasterElevationTile | undefined; colorTileIds: string[]; elevationTileId: string | undefined; layersNeedUpdate: boolean; defines: LayeredMaterialDefines; constructor(options: LayeredMaterialParameters | undefined, crsCount: number); get mode(): number; set mode(mode: number); getUniform(name: Name): LayeredMaterialRawUniforms[Name] | undefined; setUniform(name: Name, value: Value): void; initUniforms(uniforms: { [Name in keyof LayeredMaterialRawUniforms]?: LayeredMaterialRawUniforms[Name]; }): void; setUniforms(uniforms: { [Name in keyof LayeredMaterialRawUniforms]?: LayeredMaterialRawUniforms[Name]; }): void; getLayerUniforms(type: Type): MappedUniforms<{ layers: Array; textures: Array; offsetScales: Array; textureCount: number; }>; updateLayersUniforms(): void; dispose(): void; setColorTileIds(ids: string[]): void; setElevationTileId(id: string): void; removeTile(tileId: string): void; addColorTile(rasterTile: RasterColorTile): void; setElevationTile(rasterTile: RasterElevationTile): void; getColorTile(id: string): RasterColorTile | undefined; getElevationTile(): RasterElevationTile | undefined; getTile(id: string): RasterTile | undefined; getTiles(ids: string[]): RasterTile[]; } export {};