import type { Vector3 } from '@holoscript/core'; /** * LightingModel.ts * * Lighting: directional/point/spot lights, shadow maps, * ambient/IBL, GI probes, and light culling. * * @module rendering */ export type LightType = 'directional' | 'point' | 'spot'; export interface Light { id: string; type: LightType; color: [number, number, number]; intensity: number; position: [number, number, number]; direction: Vector3; range: number; spotAngle: number; spotPenumbra: number; castShadow: boolean; shadowBias: number; shadowMapSize: number; enabled: boolean; layer: number; } export interface AmbientConfig { color: [number, number, number]; intensity: number; skyColor: [number, number, number]; groundColor: [number, number, number]; useHemisphere: boolean; } export interface GIProbe { id: string; position: [number, number, number]; radius: number; irradiance: [number, number, number]; weight: number; } export declare class LightingModel { private lights; private ambient; private probes; private maxLights; addLight(config: Partial & { id: string; type: LightType; }): Light; removeLight(id: string): void; getLight(id: string): Light | undefined; getLightCount(): number; enableLight(id: string, enabled: boolean): void; setAmbient(config: Partial): void; getAmbient(): AmbientConfig; addGIProbe(probe: GIProbe): void; removeGIProbe(id: string): void; sampleGI(position: [number, number, number]): [number, number, number]; calculateAttenuation(lightId: string, worldPos: Vector3 | { x: number; y: number; z: number; }): number; getVisibleLights(cameraPos: Vector3, maxRange: number, layerMask?: number): Light[]; getShadowCasters(): Light[]; } //# sourceMappingURL=LightingModel.d.ts.map