import type { Dimensions } from "../../../../core/domain/types.js"; import type { LightRay, CausticsState } from "../../domain/models/OceanModels.js"; import type { ILightRayRenderer } from "../contracts/ILightRayRenderer.js"; /** * A+ Light Ray Renderer * * Renders ethereal underwater light with: * - Volumetric god rays with soft gaussian edges * - Depth color shifting (cyan → deep blue) * - Dappled, organic edges (not rectangles) * - Wave distortion (rays sway with surface) * - Visible dust particles in beams * - Caustic patterns on the ocean floor * - Intensity pulsing (clouds passing) */ export declare class LightRayRenderer implements ILightRayRenderer { drawLightRays(ctx: CanvasRenderingContext2D, dimensions: Dimensions, lightRays: LightRay[], quality: string): void; private drawSingleRay; /** * Draw soft volumetric glow around ray */ private drawVolumetricGlow; /** * Draw main ray body with dappled, organic edges */ private drawDappledRayBody; /** * Get edge variation based on seed */ private getEdgeVariation; /** * Stable control-point wobble derived from the ray's edgeSeeds (NOT Math.random, * which re-randomized the silhouette every frame). The seed fixes a per-segment * phase so the dapple is consistent; colorShiftPhase adds a slow sway so the edge * breathes instead of being frozen. Returns ~[-0.5, 0.5] to match the old range. */ private getEdgeWobble; /** * Draw visible dust particles in the light beam */ private drawDustParticles; /** * Draw caustic patterns (dancing light on ocean floor) */ drawCaustics(ctx: CanvasRenderingContext2D, dimensions: Dimensions, caustics: CausticsState, quality: string): void; private drawCausticCell; } //# sourceMappingURL=LightRayRenderer.d.ts.map