Lighting one scene: three lamps and a shadow map computed once
A hemisphere light for ambience, a key light for direction and shadow, a rim light to pull the island off the background — and seven point lights that only add glow.
The island has ten light sources, but the picture is decided by the first three.
Each lamp does exactly one job
const hemisphere = new THREE.HemisphereLight('#b3d6e0', '#283f41', 2.5);
const sun = new THREE.DirectionalLight('#ffe3bd', 3.5);
const rim = new THREE.DirectionalLight('#7de3ed', 3);
The hemisphere light’s two colours are sky and ground and carry the ambient tone. The key light is the only shadow caster: warm white, from the upper left. The rim light is cyan, from behind, and puts a cold edge on the island’s silhouette. Without the rim light the island dissolves into the fog — it is the easiest lamp to forget and the one that changes the picture most.
The shadow is computed once
Everything that casts a shadow on the main island is static — tree, pavilion, bridge never move — so the shadow map does not need recomputing every frame:
renderer.shadowMap.autoUpdate = false;
renderer.shadowMap.needsUpdate = true;
The shadow camera is tuned by hand to cover the main island only:
Object.assign(sun.shadow.camera, { left: -9, right: 9, top: 10, bottom: -8, near: 0.5, far: 40 });
The tighter the range, the more of the 2048 map lands on things that matter. Add a little normalBias and the self-shadowing moiré goes away.
Night is a colour change, not a lamp change
Switching to night moves no lamp and adds none. What changes is colour, intensity, exposure and bloom:
sun.color.copy(sunDay).lerp(sunNight, themeMix);
hemisphere.color.copy(ambientDay).lerp(ambientNight, themeMix);
sun.intensity = 3.5 - themeMix * 1.8;
renderer.toneMappingExposure = 1.13 - themeMix * 0.08;
bloom.strength = 0.32 + themeMix * 0.17;
themeMix walks toward 0 or 1 with a frame-rate independent exponential approach, so the two moods blend rather than snap.
The lanterns are just point lights
Six lanterns plus the one inside the pavilion are point lights, rising from 0.5 to 1.6. They cast no shadows — a shadow-casting point light needs a cube map, six times the cost of a directional light, and here the effect only needs the glow.
The count is deliberately small: the more point lights, the more shader variants every material compiles. Seven is this scene’s ceiling.
Closing
The rule for scene lighting is one lamp, one job: ambience, direction, silhouette, accent. Mix them and you get a picture where everything is lit and nothing is emphasised — and that is the most painful kind to fix, because you cannot tell which lamp to switch off.

Comments
…