The hemisphere chunk both shaded fragment stages splice in (§68;
2026-09-10) — a two-colour directional ambient, not a lamp.
w = 0.5 · n · up + 0.5
hemi = mix(ground, sky, w)
Sky and ground are already color × intensity (R-13). useHemisphere
starts at GL's initial false, so a scene with no hemisphere issues
no upload at all — HemisphereLightUniforms' skip rule, the
same contract PunctualLightUniforms states for the light set.
A fragment with no normal uses the 0.5 mix (constant extra ambient)
rather than inventing a world-up; a metal on the standard stage still
multiplies the term by the diffuse colour, so it stays black.
The hemisphere chunk both shaded fragment stages splice in (§68; 2026-09-10) — a two-colour directional ambient, not a lamp.
Sky and ground are already
color × intensity(R-13).useHemispherestarts at GL's initialfalse, so a scene with no hemisphere issues no upload at all — HemisphereLightUniforms' skip rule, the same contract PunctualLightUniforms states for the light set. A fragment with no normal uses the 0.5 mix (constant extra ambient) rather than inventing a world-up; a metal on the standard stage still multiplies the term by the diffuse colour, so it stays black.