/** * Scene-graph helper used by Cloud/Rings shells to locate the dominant light * source for their custom shader lighting math. Keeps builders completely * decoupled from any "sun" or "star" concept passed in from the caller — they * just observe whatever the scene exposes. */ import * as THREE from 'three'; /** Ascends `obj.parent` chain and returns the top-most ancestor (scene or root). */ export declare function findSceneRoot(obj: THREE.Object3D): THREE.Object3D; /** * Writes the world-space position of a single light into `out`. For point * lights, it's the literal world position. For directional lights, a virtual * point is projected far behind the light along its shine axis so that * `normalize(out - fragWorldPos)` yields a near-parallel direction — * matching the expectation of shaders that model the sun as a point source. * * Used by `useBody` and `buildBodyRings` to resolve a caller-supplied * `sunLight` into the same world-space sun position the auto-discovery path * (`findDominantLightWorldPos`) produces. */ export declare function resolveLightWorldPos(light: THREE.PointLight | THREE.DirectionalLight, out: THREE.Vector3): void; /** * Writes the world-space position of the brightest `PointLight` or * `DirectionalLight` found anywhere under `root` into `out`. * * For directional lights, a virtual point is projected along `-direction` at a * large distance so that `normalize(out - fragWorldPos)` yields a near-parallel * light direction — matching the expectation of shaders that model the light as * a point source. * * @returns true when a light was found, false when the scene has none (caller * should leave `out` at its last known value / default). */ export declare function findDominantLightWorldPos(root: THREE.Object3D, out: THREE.Vector3): boolean; //# sourceMappingURL=findDominantLight.d.ts.map