Shadow and colour correction
Open the existing interactive browser test →
The owner-tested version was checkpointed before modification: commit 16e96e8, tag browser-owner-tested-pass03-20261016, full browser ZIP and Git bundle. This pass changes shadow filtering and material illumination only. Phone sensitivity, camera ranges, calibration, smoothing, manual controls, geometry, both mounting constructions and viewer layout are preserved.
Exact adjustments
| Area | Change | Preserved |
|---|---|---|
| Wall shadow | Cached VSM radius 5 → 3 texels. Replaced broad ambient occlusion with a 25 mm finite-distance contact bake, using the actual meshes and wall distances. Smooth falloff and 0.8-texel denoising retain a soft edge. | 1024² shadow map, eight blur samples, light direction, wall material, geometry clearance and 0.65 indirect-occlusion strength. No extra render pass or per-frame shadow rebuild. |
| Sage / Anthracite | Checked the existing exposure and lighting. Reduced face-only environment diffuse illumination to 80% and its chroma to 25%, producing a quieter Sage and deeper Anthracite. | Canonical material RGB values, direct lighting, global exposure 1.3, acrylic roughness and surface response. The HDR files remain unchanged. |
| Mirror Silver | Neutralised blue-dominant reflected illumination with a luminance-preserving blend, up to 85%, on Silver backing and hardware. The blend depends on the sampled reflection colour. | Actual angle-dependent environment sampling, reflection detail, Fresnel response and material identity. No painted reflection pattern. |
| Mirror Gold | No reflection colour correction: blend weight stays zero for Gold. | Warm Gold RGB, reflection environment and metallic response. |
The contact bake uses 32 cosine-weighted projection directions and triangle-centroid distances: an efficient static approximation, not a new real-time lighting simulation. The normal and battery-saver modes use the same replacement texture; its dimensions are unchanged.
Matched views




Each pair uses the same camera pose and viewport. These are browser before/after captures. No new Unreal capture or GPU capacity test was run.
Performance and checks
Matched 20-second tests in desktop Chrome, 390 × 844 touch emulation, DPR 2, NVIDIA Quadro K2200, high quality, synthetic 60 Hz orientation events. This is not a physical Android test.
| Metric | Checkpoint 03 | Pass 04 |
|---|---|---|
| Average FPS | 60.00 | 60.00 |
| p95 frame interval | 16.8 ms | 16.8 ms |
| Worst frame interval | 17.2 ms | 17.3 ms |
| Mean synthetic event → render | 8.43 ms | 8.50 ms |
| First visible frame | 2083 ms | 1955 ms |
| Local resource transfer | 8,274,756 bytes | 8,276,002 bytes |
| Draw calls / triangles | 9 / 84,258 | 9 / 84,258 |
| Geometries / textures | 10 / 6 | 10 / 6 |
No frame-rate regression was observed in this test; small timing differences are measurement variation. First-frame results are single local loads and do not predict mobile-network load time. The new shader adds colour arithmetic but no texture lookup or render pass. The lower-cost battery-saver option remains available.
All 18 interaction checks passed: protected motion gains and limits, monotonic smoothing, recentering, manual drag, pinch, fullscreen, landscape resize, immediate colour switching, low/high quality, both construction hashes, and no page or shader errors. The motion/render loop and manual handlers are byte-identical to the checkpoint. Every previous asset hash is unchanged. Physical Android frame rate, battery use and appearance remain for owner acceptance.
Protection evidence · Contact bake · Interaction checks · Before performance · After performance
Approved Unreal V1, its services, ongoing capacity investigation, manufacturing Manager and production systems were untouched. The isolated viewer is ready for owner review; no catalogue rollout is included.