@takram/three-atmosphere
Version:
A Three.js and R3F implementation of Precomputed Atmospheric Scattering
51 lines (50 loc) • 1.95 kB
TypeScript
import { Color, Matrix4, Uniform, Vector3, BufferGeometry, Camera, Group, Object3D, Scene, Texture, WebGLRenderer } from 'three';
import { AtmosphereMaterialBase, AtmosphereMaterialBaseParameters, AtmosphereMaterialBaseUniforms } from './AtmosphereMaterialBase';
import { AtmosphereShadowLength } from './types';
declare module 'three' {
interface Camera {
isPerspectiveCamera?: boolean;
}
}
export interface SkyMaterialParameters extends AtmosphereMaterialBaseParameters {
sun?: boolean;
moon?: boolean;
moonDirection?: Vector3;
moonAngularRadius?: number;
lunarRadianceScale?: number;
groundAlbedo?: Color;
}
export declare const skyMaterialParametersDefaults: {
sun: true;
moon: true;
moonAngularRadius: number;
lunarRadianceScale: number;
ellipsoid: import('@takram/three-geospatial').Ellipsoid;
correctAltitude: true;
photometric: true;
renderTargetCount: number;
};
export interface SkyMaterialUniforms {
[key: string]: Uniform<unknown>;
inverseProjectionMatrix: Uniform<Matrix4>;
inverseViewMatrix: Uniform<Matrix4>;
moonDirection: Uniform<Vector3>;
moonAngularRadius: Uniform<number>;
lunarRadianceScale: Uniform<number>;
groundAlbedo: Uniform<Color>;
shadowLengthBuffer: Uniform<Texture | null>;
}
export declare class SkyMaterial extends AtmosphereMaterialBase {
uniforms: AtmosphereMaterialBaseUniforms & SkyMaterialUniforms;
shadowLength: AtmosphereShadowLength | null;
constructor(params?: SkyMaterialParameters);
onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, object: Object3D, group: Group): void;
sun: boolean;
moon: boolean;
get moonDirection(): Vector3;
get moonAngularRadius(): number;
set moonAngularRadius(value: number);
get lunarRadianceScale(): number;
set lunarRadianceScale(value: number);
get groundAlbedo(): Color;
}