Connected water and shallow-view contact checks
The previous lake and river used separate optical models. A direct, same-camera comparison showed a distinct flat river strip. Passing waterSurface to createRiver reuses the lake shader/uniforms/reflection capture and removes that strip in the inspected generated outlet.
tests/connected-water.html provides outlet/upstream/shore views, a shared-versus-independent material comparison, weather controls and ten checks. The synthetic same-level overlap test produced mean 8-bit channel differences below 0.001 at low/medium/high quality, while a river-only rendering proved that the mesh actually contributes pixels. Reflection exclusion prevents render-target feedback. Cleanup verifies that a borrower releases no owner resources and the owner disposes the observed normal texture, terrain texture and reflection target exactly once. See verification/connected-water-summary.json.
tests/contact-precision.html compares an unoccluded shallow plane at near planes 0.025/0.08/0.5 with a resolved sphere/ground contact. The preserved 0.2.0 shader failed all three unoccluded-plane cases. A depth-precision fade alone was insufficient: floating UV offsets could select the same depth texel while estimating normals. Integer-pixel neighbors, degenerate-normal rejection and a surface-plane test removed the broad false darkening. Mean false darkening fell from roughly 2.38 to 0.0018–0.0041; the close-contact test retained 0.1864 mean darkening and 42,974 affected pixels. All five checks pass. Isolated edge pixels remain; this is not an exact-zero assertion. See verification/contact-precision-summary.json.
The prior shader was tested using an internal scratch page against the preserved release. Neither the release nor any parent-project source was modified. The runtime needs none of these fixtures or documentation files.