import type { Scene } from '@certe/atmos-core'; import { DirectionalLight } from './directional-light.js'; import { PointLight } from './point-light.js'; import { SpotLight } from './spot-light.js'; export declare const MAX_DIR_LIGHTS = 4; export declare const MAX_POINT_LIGHTS = 4; export declare const MAX_SPOT_LIGHTS = 4; /** * GPU layout (592 bytes): * cameraPos: vec4 16 * numDirLights: u32, numPointLights: u32, * numSpotLights: u32, pad 16 * dirLights: array (32 each) 128 * pointLights: array (32 each) 128 * spotLights: array (64 each) 256 * fogEnabled: u32, fogMode: u32, fogDensity, fogStart 16 * fogEnd, _pad, _pad2, _pad3 16 (align fogColor to 16) * fogColor: vec4 16 */ export declare const SCENE_UNIFORM_SIZE = 592; export interface FogSettings { enabled: boolean; mode: 'linear' | 'exponential'; density: number; start: number; end: number; color: Float32Array; } export interface LightSettings { direction: Float32Array; color: Float32Array; intensity: number; } export declare function createDirectionalLight(direction?: [number, number, number], color?: [number, number, number], intensity?: number): LightSettings; export interface SceneLightData { dirCount: number; pointCount: number; spotCount: number; /** 4 × (dirX, dirY, dirZ, 0, colR, colG, colB, intensity) = 32 floats */ dirLights: Float32Array; /** 4 × (posX, posY, posZ, range, colR, colG, colB, intensity) = 32 floats */ pointLights: Float32Array; /** 4 × (posX, posY, posZ, range, dirX, dirY, dirZ, outerCos, * colR, colG, colB, intensity, innerCos, pad, pad, pad) = 64 floats */ spotLights: Float32Array; /** Component references for shadow pass selection (up to MAX per type). */ dirComponents: DirectionalLight[]; pointComponents: PointLight[]; spotComponents: SpotLight[]; } /** Gather DirectionalLight, PointLight, and SpotLight components from the scene. */ export declare function collectSceneLights(scene: Scene): SceneLightData; /** * Write scene uniforms into a Float32Array for GPU upload. * Uses the new multi-light layout when SceneLightData is provided, * or falls back to single-light LightSettings for backwards compat. */ export declare function writeSceneUniforms(out: Float32Array, cameraPos: Float32Array, sceneLights?: SceneLightData, fallback?: LightSettings, fog?: FogSettings, time?: number, cameraNear?: number, cameraFar?: number): void; //# sourceMappingURL=light.d.ts.map