Skip to content
← Documentation

docs/light-interference.md


Lights measured — three classifications retracted

Second result under renderer-as-laboratory, and the first where measurement overturned my own classification.

tests/light-interference.test.ts.


What was claimed

worldscene-freedoms.md classified four freedoms as colliding with the activity channel: distance fog, key light direction, fill light levels, material response. Fog was measured at 36.3% and repaired.

The other three were classified by reasoning"shading modulates lightness" — and never checked. Measured now.

The retraction

Two facts about the scene decide most of it, and neither was checked when the classification was made:

  1. In MeshStandardMaterial the result is lit(albedo) + emissive * emissiveIntensity. Emissive is self-illumination — lights do not multiply it. And emissiveIntensity is the activity carrier.
  2. Every building is an unrotated boxGeometry in a translate-only group (WorldScene.tsx:284, :275), so every building presents identical face normals. There is no orientation variance to shade.
diffuse + ambient + hemi contribute a constant 0.0984 to every building
inversions from lighting: 0

Key light and fill light cannot reorder activity. They add the same number to every building. The classification was wrong on both counts — wrong about the shading model, and wrong about the geometry.

What does vary, measured

Specular is the one light-dependent term that differs across the estate, because the view vector differs even when the normal does not.

specular spread 8.09e-4  vs  smallest activity step 0.094
inversions from specular: 0.00%

Real, and 116× below the channel's own resolution. It cannot cross a step. That is a quantitative finding rather than a dismissal: the effect exists and is bounded.

What the lights actually cost

Michelson-style contrast: with fill 0.796, without 0.843

A 5.6% relative reduction. Ambient and hemisphere raise the floor equally under every building, compressing the range the channel is read within. That cannot reorder anything — it is legibility, condition 3, outside what this repository can certify.

Score

One of four classified collisions was real.

Freedom Classified Measured
distance fog collides 36.3% inverted — repaired to 0%
key light direction collides 0 inversions — constant offset
fill light levels collides 0 inversions — contrast only, −5.6%
material response collides 0 inversions — specular 116× too small

Had the rule been repair after classification rather than repair after measurement, three lights would have been changed for nothing, and the scene would be dimmer and flatter with no truth gained.

The audit is updated: channelAsserts is now false for the three lights, and the unowned-claim set drops from four to one.

unowned claims: interactive camera

Fog stays channelAsserts: true, and the distinction is load-bearing: fog does dim, so it still asserts on the lightness dimension. It stopped being an unowned claim because it was grounded, not because it stopped claiming. The test asserts both separately.


Standing

Measurable defect exposed? no — three retracted
Measurable improvement? no changes made, which is the result
Ontology expanded? no

What is still not established

  • Specular uses Blinn-Phong standing in for GGX. Adequate for the question asked — whether the term can cross a 0.094 step when it spans 8e-4 — and not a faithful model of three.js output.
  • Albedo is approximated as a scalar 0.1 for #1a1d2a.
  • The remaining unowned claim is the interactive camera, which cannot be measured this way: occlusion depends on the viewer's chosen pose, so it needs a rendered surface and a defined task. That is the next investigation.
  • label placement and tessellation remain arbitrary on non-asserting channels and are unmeasured; nothing suggests they need to be.

211 → 215 tests, tsc clean.