import { List } from "../longan/gs.collections"; import { PropertyLivingComponent } from "./propertyComponent"; import { vec3 } from "../rendering/renderContext"; export declare class SphericalHarmonics { l00: Float32Array; l1_1: Float32Array; l10: Float32Array; l11: Float32Array; l2_2: Float32Array; l2_1: Float32Array; l20: Float32Array; l21: Float32Array; l22: Float32Array; applySH3(lm: number, direction: vec3): number; scaleInPlace(scale: number): void; scaleToRef(source: vec3, scalar: number, result: vec3): void; addLight(direction: vec3, color: vec3, deltaSolidAngle: number): void; /** * Convert from incident radiance (Li) to irradiance (E) by applying convolution with the cosine-weighted hemisphere. * * ``` * E_lm = A_l * L_lm * ``` * * In spherical harmonics this convolution amounts to scaling factors for each frequency band. * This corresponds to equation 5 in "An Efficient Representation for Irradiance Environment Maps", where * the scaling factors are given in equation 9. */ convertIncidentRadianceToIrradiance(): void; /** * Convert from irradiance to outgoing radiance for Lambertian BDRF, suitable for efficient shader evaluation. * * ``` * L = (1/pi) * E * rho * ``` * * This is done by an additional scale by 1/pi, so is a fairly trivial operation but important conceptually. */ convertIrradianceToLambertianRadiance(): void; } export declare class SkyboxRenderer extends PropertyLivingComponent { typeName: string; get fileNames(): List; set fileNames(value: List); private rc; private _fileNames; private _shader; private _texture; private _geometry; private _sphericalHarmonics; private _sunShader; private _haloShader; private _sunTexture; private _sunGeometry; private _haloGeometry; private _frameBuffer; private _texture1; private isYUp; private isExposure; private isGammaCorrection; private _switchSunEffect; private _isShowScattering; private _useSkybox; get texture(): WebGLTexture; get sphericalHarmonics(): SphericalHarmonics; get switchSunEffect(): boolean; set switchSunEffect(v: boolean); get useSkybox(): boolean; set useSkybox(v: boolean); get isShowScattering(): boolean; set isShowScattering(v: boolean); constructor(); protected beginRender(): void; protected endRender(): void; render(deltaSeconds: number): void; GetWindowPixelPos(point: any, projectionViewMatrix: any): { pixelPos: Float32Array; sunPos: Float32Array; zValue: number; }; mmMultiplyVector4(m: Float32Array, v: Float32Array): Float32Array; private createCube; private areaElement; clamp(a: number, min: number, max: number): number; updateTexture(): void; private computeSphericalHarmonics; private vs; private fs; }