UNPKG

@takram/three-clouds

Version:
65 lines (64 loc) 2.84 kB
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<number>; absorptionCoefficient: Uniform<number>; coverage: Uniform<number>; localWeatherTexture: Uniform<Texture | null>; localWeatherRepeat: Uniform<Vector2>; localWeatherOffset: Uniform<Vector2>; shapeTexture: Uniform<Data3DTexture | null>; shapeRepeat: Uniform<Vector3>; shapeOffset: Uniform<Vector3>; shapeDetailTexture: Uniform<Data3DTexture | null>; shapeDetailRepeat: Uniform<Vector3>; shapeDetailOffset: Uniform<Vector3>; turbulenceTexture: Uniform<Texture | null>; turbulenceRepeat: Uniform<Vector2>; turbulenceDisplacement: Uniform<number>; } 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<Vector4>; maxLayerHeights: Uniform<Vector4>; minIntervalHeights: Uniform<Vector3>; maxIntervalHeights: Uniform<Vector3>; densityScales: Uniform<Vector4>; shapeAmounts: Uniform<Vector4>; shapeDetailAmounts: Uniform<Vector4>; weatherExponents: Uniform<Vector4>; shapeAlteringBiases: Uniform<Vector4>; coverageFilterWidths: Uniform<Vector4>; minHeight: Uniform<number>; maxHeight: Uniform<number>; shadowTopHeight: Uniform<number>; shadowBottomHeight: Uniform<number>; shadowLayerMask: Uniform<Vector4>; densityProfile: Uniform<DensityProfileVectors>; } export declare function createCloudLayerUniforms(): CloudLayerUniforms; export declare function updateCloudLayerUniforms(uniforms: CloudLayerUniforms, layers: CloudLayers): void; export interface AtmosphereUniforms { bottomRadius: Uniform<number>; topRadius: Uniform<number>; worldToECEFMatrix: Uniform<Matrix4>; ecefToWorldMatrix: Uniform<Matrix4>; altitudeCorrection: Uniform<Vector3>; sunDirection: Uniform<Vector3>; } 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 {};