/** Namespace containing types controlling how atmospheric scattering should be rendered.
 * @beta
 * The techniques used to render the atmosphere approximate the physical behavior of light when interacting with particles in the air (Rayleigh Scattering and Mie Scattering)
 * Presently, only Rayleigh Scattering is implemented here
 *
 * In a nutshell, this implementation samples atmospheric density along rays cast from the view and uses the samples to simulate the scattering of light toward the camera.
 * The amount of light scattered toward the camera is dependent on the amount of light scattered away from its original path from the sun, so rays must also be cast from the sample points to the sun.
 *
 * The effect can be computed on vertices (the default for the background map) and fragments (the default for the skybox, which is a ViewportQuad).
 * All coordinates are in view space.
 *
 * This implementation is adapted from equations outlined in "Display of Clouds Taking into Account Multiple Anisotropic Scattering and Sky Light", Nishita et al. 1993
 *   which are further refined for use in GPU shaders in "Photorealistic Real-Time Outdoor Light Scattering", Hoffman and Preetham 2002.
 * These sources are also compiled in Chapter 16 of NVIDIA's "GPU Gems 2", which can be found online here:
 *   https://developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-16-accurate-atmospheric-scattering
 *
 * This implementation is also highly inspired by Sebastian Lague's Solar System project: https://github.com/SebLague/Solar-System/ and video: https://www.youtube.com/watch?v=DxfEbulyFcY
 *   along with this ShaderToy replica: https://www.shadertoy.com/view/fltXD2.
 * Both of which are inspired by this Nvidia article on atmospheric scattering: https://developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-16-accurate-atmospheric-scattering.
 */
export declare namespace Atmosphere {
    /** @internal JSON representation of a [[Wavelengths]] object */
    interface WavelengthsProps {
        r: number;
        g: number;
        b: number;
    }
    /** @internal An immutable container of wavelength values for the red, green and blue pixel components. Values are in nanometers. */
    class Wavelengths {
        readonly r: number;
        readonly g: number;
        readonly b: number;
        /** Constructs from red, green, and blue wavelength values.
         * @param r Wavelength value for red
         * @param g Wavelength value for green
         * @param b Wavelength value for blue
         */
        constructor(props: WavelengthsProps);
        equals(other: Wavelengths): boolean;
        toJSON(): WavelengthsProps;
        static fromJSON(json: WavelengthsProps | undefined): Wavelengths;
    }
    /** Describes the properties with which the atmospheric scattering effect should be drawn. Theses properties correspond to a physics-based approximation of atmospheric scattering phenomenons. */
    interface Props {
        /** Whether the ground plane should be displayed. Defaults to false. */
        display?: boolean;
        /** @internal See [[Settings.atmosphereHeightAboveEarth]] */
        atmosphereHeightAboveEarth?: number;
        /** See [[Settings.exposure]] */
        exposure?: number;
        /** @internal See [[Settings.densityFalloff]] */
        densityFalloff?: number;
        /** @internal See [[Settings.minDensityHeightBelowEarth]] */
        depthBelowEarthForMaxDensity?: number;
        /** See [[Settings.numViewRaySamples]] */
        numViewRaySamples?: number;
        /** See [[Settings.numSunRaySamples]] */
        numSunRaySamples?: number;
        /** @internal See [[Settings.scatteringStrength]] */
        scatteringStrength?: number;
        /** @internal See [[Settings.wavelengths]] */
        wavelengths?: WavelengthsProps;
    }
    /** Describes the properties with which the atmospheric scattering effect should be drawn. Theses properties correspond to a physics-based approximation of atmospheric scattering phenomenons. */
    class Settings {
        private static _defaultAtmosphereHeightAboveEarth;
        private static _defaultExposure;
        private static _defaultDensityFalloff;
        private static _defaultMinDensityHeightBelowEarth;
        private static _defaultScatteringStrength;
        private static _defaultWavelengths;
        private static _defaultNumViewRaySamples;
        private static _highQualityNumViewRaySamples;
        private static _defaultNumSunRaySamples;
        static readonly defaults: Settings;
        static readonly highQuality: Settings;
        /** @internal If defined, corresponds to the height in meters above the earth's pole at which the atmosphere terminates. Physically, this is the point at which there are no more air molecules to interfere with light transmission. Defaults to 100_000.0. */
        readonly atmosphereHeightAboveEarth: number;
        /** If defined, this value is used to simulate the aperture of a camera. Higher values allow more light in. This value might need to be adjusted slightly in situations without much sunlight (like sunset) to brighten the image. Defaults to 2.0 */
        readonly exposure: number;
        /** @internal If defined, controls the rate at which the air density decreases between the point it is the highest and the point is is the lowest. A higher value means a faster decrease in air density. Defaults to 10.0. */
        readonly densityFalloff: number;
        /** @internal If defined, corresponds to the height in meters below the earth's pole at which the atmosphere is at its densest. Physically, this is the point at which there is the most air molecules to interfere with light transmission. Defaults to 0.0. */
        readonly depthBelowEarthForMaxDensity: number;
        /** If defined, corresponds to the number of atmospheric density samples used to compute the amount of light scattered along each view ray. For each sample point, another ray will be cast toward the sun to compute the amount of light reaching the sample point. Higher values increase fidelity, but greatly decrease performance because sun rays must be cast from each additional sample point. The range is 1 to 40. Defaults to 10. */
        readonly numViewRaySamples: number;
        /** If defined, corresponds to the number of atmospheric density samples uses to compute the amount of light scattered along each sun ray. Higher values increase fidelity slightly but greatly decrease performance. Minimal improvement is observable with values above 5. The range is 1 to 40. Defaults to 5. */
        readonly numSunRaySamples: number;
        /** @internal If defined, controls how strongly the atmosphere's air diverts light. Higher values increase scattering intensity. Defaults to 100.0. */
        readonly scatteringStrength: number;
        /** @internal If defined, corresponds the wavelengths of the red, green and blue color components in nanometers used to simulate how the atmosphere's air molecules affects light transmission. (See Rayleigh Scattering) Thus, a value of 470 for the red wavelength will make the red light component scatter as if it physically were a cyan light ray. The default value is {r:700.0, g:530.0, b:440.0}. */
        readonly wavelengths: Wavelengths;
        equals(other: Settings): boolean;
        private constructor();
        static fromJSON(json?: Props): Settings;
        toJSON(display?: boolean): Props;
    }
}
//# sourceMappingURL=Atmosphere.d.ts.map