/*! * Copyright (c) Microsoft Corporation. * Licensed under the MIT License. */ import { quat, vec2, vec3 } from "gl-matrix"; export declare const LightType: { readonly distant: 0; readonly sphere: 1; readonly rect: 2; readonly disc: 3; readonly cylinder: 4; readonly dome: 5; }; export type LightType = (typeof LightType)[keyof typeof LightType]; export declare class LightBufferData extends Float32Array { static readonly SIZE: number; readonly ROTATION_OFFSET: number; readonly CENTER_OFFSET: number; readonly TYPE_OFFSET: number; readonly SIZE_OFFSET: number; readonly COLOR_OFFSET: number; constructor(count: number); getType(index: number): number; setType(index: number, value: LightType): void; getCenter(index: number, value: vec3): void; setCenter(index: number, value: vec3): void; getSize(index: number, value: vec3): void; setSize(index: number, value: vec3): void; getColor(index: number, value: vec3): void; setColor(index: number, value: vec3): void; getRotation(index: number, value: quat): void; setRotation(index: number, value: quat): void; } export interface ILightOptions { color: vec3; center: vec3; } export declare abstract class Light { color: vec3; center: vec3; constructor(options: ILightOptions); toBuffer(buffer: LightBufferData, index: number): void; } export interface ISphereLightOptions extends ILightOptions { radius: number; } export declare class SphereLight extends Light { radius: number; constructor(options: ISphereLightOptions); toBuffer(buffer: LightBufferData, index: number): void; } export interface IRectLightOptions extends ILightOptions { size: vec2; rotation: quat; } export declare class RectLight extends Light { private readonly _thickness; size: vec2; rotation: quat; constructor(options: IRectLightOptions); toBuffer(buffer: LightBufferData, index: number): void; }