UNPKG

@takram/three-clouds

Version:
177 lines (176 loc) 8.44 kB
import { Effect, Resolution } from 'postprocessing'; import { Camera, Data3DTexture, EventDispatcher, Matrix4, Texture, Uniform, Vector2, Vector3, DepthPackingStrategies, TextureDataType, WebGLRenderer, WebGLRenderTarget } from 'three'; import { AtmosphereParameters, AtmosphereOverlay, AtmosphereShadow, AtmosphereShadowLength } from '@takram/three-atmosphere'; import { UniformMap, Ellipsoid, PropertyShorthand, UniformShorthand } from '@takram/three-geospatial'; import { CascadedShadowMaps } from './CascadedShadowMaps'; import { CloudLayers } from './CloudLayers'; import { CloudsMaterial } from './CloudsMaterial'; import { CloudsPass } from './CloudsPass'; import { Procedural3DTexture } from './Procedural3DTexture'; import { ProceduralTexture } from './ProceduralTexture'; import { QualityPreset } from './qualityPresets'; import { ShadowMaterial } from './ShadowMaterial'; import { ShadowPass } from './ShadowPass'; declare const cloudsUniformKeys: ["maxIterationCount", "minStepSize", "maxStepSize", "maxRayDistance", "perspectiveStepScale", "minDensity", "minExtinction", "minTransmittance", "maxIterationCountToSun", "maxIterationCountToGround", "minSecondaryStepSize", "secondaryStepScale", "maxShadowFilterRadius", "maxShadowLengthIterationCount", "minShadowLengthStepSize", "maxShadowLengthRayDistance", "hazeDensityScale", "hazeExponent", "hazeScatteringCoefficient", "hazeAbsorptionCoefficient"]; declare const cloudsMaterialParameterKeys: ["multiScatteringOctaves", "accurateSunSkyLight", "accuratePhaseFunction"]; declare const shadowUniformKeys: ["maxIterationCount", "minStepSize", "maxStepSize", "minDensity", "minExtinction", "minTransmittance", "opticalDepthTailScale"]; declare const shadowMaterialParameterKeys: ["temporalJitter"]; declare const shadowPassParameterKeys: ["temporalPass"]; declare const shadowMapsParameterKeys: ["cascadeCount", "mapSize", "maxFar", "farScale", "splitMode", "splitLambda"]; interface CloudsShorthand extends UniformShorthand<CloudsMaterial, (typeof cloudsUniformKeys)[number]>, PropertyShorthand<[CloudsMaterial, typeof cloudsMaterialParameterKeys]> { } interface ShadowShorthand extends UniformShorthand<ShadowMaterial, (typeof shadowUniformKeys)[number]>, PropertyShorthand<[ ShadowMaterial, typeof shadowMaterialParameterKeys, ShadowPass, typeof shadowPassParameterKeys, CascadedShadowMaps, typeof shadowMapsParameterKeys ]> { } export interface CloudsEffectChangeEvent { type: 'change'; target?: CloudsEffect; property?: 'atmosphereOverlay' | 'atmosphereShadow' | 'atmosphereShadowLength'; } export interface CloudsEffectUniforms { cloudsBuffer: Uniform<Texture | null>; } export interface CloudsEffectOptions { resolutionScale?: number; width?: number; height?: number; resolutionX?: number; resolutionY?: number; } export declare const cloudsPassOptionsDefaults: { resolutionScale: number; width: number; height: number; }; export declare class CloudsEffect extends Effect { private camera; private readonly atmosphere; uniforms: UniformMap<CloudsEffectUniforms>; readonly cloudLayers: CloudLayers; correctAltitude: boolean; readonly localWeatherRepeat: Vector2; readonly localWeatherOffset: Vector2; readonly shapeRepeat: Vector3; readonly shapeOffset: Vector3; readonly shapeDetailRepeat: Vector3; readonly shapeDetailOffset: Vector3; readonly turbulenceRepeat: Vector2; readonly worldToECEFMatrix: Matrix4; private readonly ecefToWorldMatrix; private readonly altitudeCorrection; readonly sunDirection: Vector3; private readonly parameterUniforms; private readonly layerUniforms; private readonly atmosphereUniforms; readonly localWeatherVelocity: Vector2; readonly shapeVelocity: Vector3; readonly shapeDetailVelocity: Vector3; private proceduralLocalWeather?; private proceduralShape?; private proceduralShapeDetail?; private proceduralTurbulence?; readonly shadowMaps: CascadedShadowMaps; readonly shadowPass: ShadowPass; readonly cloudsPass: CloudsPass; readonly clouds: CloudsShorthand; readonly shadow: ShadowShorthand; private _atmosphereOverlay; private _atmosphereShadow; private _atmosphereShadowLength; readonly resolution: Resolution; readonly events: EventDispatcher<{ change: CloudsEffectChangeEvent; }>; private frame; private shadowCascadeCount; private readonly shadowMapSize; constructor(camera?: Camera, options?: CloudsEffectOptions, atmosphere?: AtmosphereParameters); private readonly onResolutionChange; get mainCamera(): Camera; set mainCamera(value: Camera); initialize(renderer: WebGLRenderer, alpha: boolean, frameBufferType: TextureDataType): void; private updateSharedUniforms; private updateWeatherTextureChannels; private updateAtmosphereComposition; update(renderer: WebGLRenderer, inputBuffer: WebGLRenderTarget, deltaTime?: number): void; setSize(baseWidth: number, baseHeight: number): void; setDepthTexture(depthTexture: Texture, depthPacking?: DepthPackingStrategies): void; skipRendering: boolean; set qualityPreset(value: QualityPreset); get localWeatherTexture(): Texture | ProceduralTexture | null; set localWeatherTexture(value: Texture | ProceduralTexture | null); get shapeTexture(): Data3DTexture | Procedural3DTexture | null; set shapeTexture(value: Data3DTexture | Procedural3DTexture | null); get shapeDetailTexture(): Data3DTexture | Procedural3DTexture | null; set shapeDetailTexture(value: Data3DTexture | Procedural3DTexture | null); get turbulenceTexture(): Texture | ProceduralTexture | null; set turbulenceTexture(value: Texture | ProceduralTexture | null); get stbnTexture(): Data3DTexture | null; set stbnTexture(value: Data3DTexture | null); get resolutionScale(): number; set resolutionScale(value: number); get temporalUpscale(): boolean; set temporalUpscale(value: boolean); get lightShafts(): boolean; set lightShafts(value: boolean); get shapeDetail(): boolean; set shapeDetail(value: boolean); get turbulence(): boolean; set turbulence(value: boolean); get haze(): boolean; set haze(value: boolean); get scatteringCoefficient(): number; set scatteringCoefficient(value: number); get absorptionCoefficient(): number; set absorptionCoefficient(value: number); get coverage(): number; set coverage(value: number); get turbulenceDisplacement(): number; set turbulenceDisplacement(value: number); get scatterAnisotropy1(): number; set scatterAnisotropy1(value: number); get scatterAnisotropy2(): number; set scatterAnisotropy2(value: number); get scatterAnisotropyMix(): number; set scatterAnisotropyMix(value: number); /** @deprecated Use skyLightScale instead. */ get skyIrradianceScale(): number; /** @deprecated Use skyLightScale instead. */ set skyIrradianceScale(value: number); get skyLightScale(): number; set skyLightScale(value: number); /** @deprecated Use groundBounceScale instead. */ get groundIrradianceScale(): number; /** @deprecated Use groundBounceScale instead. */ set groundIrradianceScale(value: number); get groundBounceScale(): number; set groundBounceScale(value: number); get powderScale(): number; set powderScale(value: number); get powderExponent(): number; set powderExponent(value: number); get atmosphereOverlay(): AtmosphereOverlay | null; get atmosphereShadow(): AtmosphereShadow | null; get atmosphereShadowLength(): AtmosphereShadowLength | null; get irradianceTexture(): Texture | null; set irradianceTexture(value: Texture | null); get scatteringTexture(): Data3DTexture | null; set scatteringTexture(value: Data3DTexture | null); get transmittanceTexture(): Texture | null; set transmittanceTexture(value: Texture | null); get singleMieScatteringTexture(): Data3DTexture | null; set singleMieScatteringTexture(value: Data3DTexture | null); get higherOrderScatteringTexture(): Data3DTexture | null; set higherOrderScatteringTexture(value: Data3DTexture | null); get ellipsoid(): Ellipsoid; set ellipsoid(value: Ellipsoid); get sunAngularRadius(): number; set sunAngularRadius(value: number); } export {};