import { Uniform, Vector3, Vector4, Data3DTexture, Matrix4, Texture, Vector2 } from 'three'; import { Primitive } from 'type-fest'; import { AtmosphereParameters } from '@takram/three-atmosphere'; import { CloudLayers } from './CloudLayers'; export interface CloudParameterUniforms { scatteringCoefficient: Uniform; absorptionCoefficient: Uniform; coverage: Uniform; localWeatherTexture: Uniform; localWeatherRepeat: Uniform; localWeatherOffset: Uniform; shapeTexture: Uniform; shapeRepeat: Uniform; shapeOffset: Uniform; shapeDetailTexture: Uniform; shapeDetailRepeat: Uniform; shapeDetailOffset: Uniform; turbulenceTexture: Uniform; turbulenceRepeat: Uniform; turbulenceDisplacement: Uniform; } export type CloudParameterUniformInstances = { [K in keyof CloudParameterUniforms as CloudParameterUniforms[K]['value'] extends Primitive ? never : K]: CloudParameterUniforms[K]['value']; }; export declare function createCloudParameterUniforms(instances: CloudParameterUniformInstances): CloudParameterUniforms; interface DensityProfileVectors { expTerms: Vector4; exponents: Vector4; linearTerms: Vector4; constantTerms: Vector4; } export interface CloudLayerUniforms { minLayerHeights: Uniform; maxLayerHeights: Uniform; minIntervalHeights: Uniform; maxIntervalHeights: Uniform; densityScales: Uniform; shapeAmounts: Uniform; shapeDetailAmounts: Uniform; weatherExponents: Uniform; shapeAlteringBiases: Uniform; coverageFilterWidths: Uniform; minHeight: Uniform; maxHeight: Uniform; shadowTopHeight: Uniform; shadowBottomHeight: Uniform; shadowLayerMask: Uniform; densityProfile: Uniform; } export declare function createCloudLayerUniforms(): CloudLayerUniforms; export declare function updateCloudLayerUniforms(uniforms: CloudLayerUniforms, layers: CloudLayers): void; export interface AtmosphereUniforms { bottomRadius: Uniform; topRadius: Uniform; worldToECEFMatrix: Uniform; ecefToWorldMatrix: Uniform; altitudeCorrection: Uniform; sunDirection: Uniform; } export type AtmosphereUniformInstances = { [K in keyof AtmosphereUniforms as AtmosphereUniforms[K]['value'] extends Primitive ? never : K]: AtmosphereUniforms[K]['value']; }; export declare function createAtmosphereUniforms(atmosphere: AtmosphereParameters, instances: AtmosphereUniformInstances): AtmosphereUniforms; export {};