import { type IAtmospherePhysicalPropertiesOptions } from "./atmospherePhysicalPropertiesOptions.js"; import { Observable } from "@babylonjs/core/Misc/observable.pure.js"; import { Vector3 } from "@babylonjs/core/Maths/math.vector.pure.js"; /** * Describes the physical properties of the atmosphere. Assumes a spherical planet. * - "radius" values describe a distance from the planet's center. * - "height" values describe a distance from the planet's surface. * - Distances are in kilometers unless otherwise specified. Angles are in radians. */ export declare class AtmospherePhysicalProperties { /** * Notification for when properties of the {@link AtmospherePhysicalProperties} are changed. */ readonly onChangedObservable: Observable; private _planetRadius; private _planetRadiusOffset; private _atmosphereThickness; private _rayleighScatteringScale; private _peakRayleighScattering; private _mieScatteringScale; private _peakMieScattering; private _mieAbsorptionScale; private _peakMieAbsorption; private _ozoneAbsorptionScale; private _peakOzoneAbsorption; private _planetRadiusWithOffset; private _planetRadiusSquared; private _atmosphereRadius; private _atmosphereRadiusSquared; private _horizonDistanceToAtmosphereEdge; private _horizonDistanceToAtmosphereEdgeSquared; private _rayleighScattering; private _mieScattering; private _mieAbsorption; private _mieExtinction; private _ozoneAbsorption; /** * The radius of the planet in kilometers. */ get planetRadius(): number; set planetRadius(value: number); /** * The squared radius of the planet in kilometers. */ get planetRadiusSquared(): number; /** * Offset applied to view points near the planet's surface. This should be greater than 0. * It prevents rendering issues close to the planet's surface. */ get planetRadiusOffset(): number; set planetRadiusOffset(value: number); /** * This is the {@link planetRadius} with the additional {@link planetRadiusOffset}, in kilometers. */ get planetRadiusWithOffset(): number; /** * The thickness of the atmosphere measured in kilometers. */ get atmosphereThickness(): number; set atmosphereThickness(value: number); /** * The combined planet radius and atmosphere thickness in kilometers. */ get atmosphereRadius(): number; /** * The atmosphere radius squared in kilometers. */ get atmosphereRadiusSquared(): number; /** * Horizon distance from the planet's surface to the outer edge of the atmosphere in kilometers. */ get horizonDistanceToAtmosphereEdge(): number; /** * Horizon distance from the planet's surface to the outer edge of the atmosphere, squared, in kilometers. */ get horizonDistanceToAtmosphereEdgeSquared(): number; /** * The scale applied to {@link peakRayleighScattering}. */ get rayleighScatteringScale(): number; set rayleighScatteringScale(value: number); /** * The Rayleigh scattering per kilometer at sea level for red, green, and blue wavelengths. */ get peakRayleighScattering(): Vector3; set peakRayleighScattering(value: Vector3); /** * The Rayleigh scattering per kilometer at sea level for red, green, and blue wavelengths. * This value cannot be set directly. It is inferred by scaling {@link peakRayleighScattering} by {@link rayleighScatteringScale}. */ get rayleighScattering(): Vector3; /** * The scale applied to {@link peakMieScattering}. */ get mieScatteringScale(): number; set mieScatteringScale(value: number); /** * The Mie scattering per kilometer at sea level for red, green, and blue wavelengths. */ get peakMieScattering(): Vector3; set peakMieScattering(value: Vector3); /** * The Mie scattering per kilometer at sea level for red, green, and blue wavelengths. * This value cannot be set directly. It is inferred by scaling {@link mieScatteringScale} by {@link peakMieScattering}. */ get mieScattering(): Vector3; /** * The scale applied to {@link peakMieAbsorption}. */ get mieAbsorptionScale(): number; set mieAbsorptionScale(value: number); /** * The Mie absorption per kilometer at sea level for red, green, and blue wavelengths. */ get peakMieAbsorption(): Vector3; set peakMieAbsorption(value: Vector3); /** * The Mie absorption per kilometer at sea level for red, green, and blue wavelengths. * This value cannot be set directly. It is inferred by scaling {@link mieAbsorptionScale} by {@link peakMieAbsorption}. */ get mieAbsorption(): Vector3; /** * The Mie extinction per kilometer at sea level for red, green, and blue wavelengths. * This value cannot be set directly. It is inferred by adding the {@link mieAbsorption} to the {@link mieScattering}. */ get mieExtinction(): Vector3; /** * The scale applied to {@link peakOzoneAbsorption}. */ get ozoneAbsorptionScale(): number; set ozoneAbsorptionScale(value: number); /** * The ozone absorption per kilometer measured at a height corresponding to it's peak concentration, * for red, green, and blue wavelengths. */ get peakOzoneAbsorption(): Vector3; set peakOzoneAbsorption(value: Vector3); /** * The ozone absorption per kilometer at sea level for red, green, and blue wavelengths. * This value cannot be set directly. It is inferred by scaling {@link peakOzoneAbsorption} by {@link ozoneAbsorptionScale}. */ get ozoneAbsorption(): Vector3; /** * Constructs the {@link AtmospherePhysicalProperties}. * @param options - The options for the {@link AtmospherePhysicalProperties}. */ constructor(options?: IAtmospherePhysicalPropertiesOptions); private _recomputeDimensionalParameters; private _recomputeRayleighScattering; private _recomputeMieScattering; private _recomputeMieAbsorption; private _recomputeMieExtinction; private _recomputeOzoneAbsorption; }