Ground that reads as lawn

One treatment. Break the forest path into worn earth and turf, then let the farm's lawn carry the scene while flowers gather into a few patches.

Lane 2 · 4 November 2026 · Scratch look-dev for Kyle's sign-off · Original audit

Forest keeps its woodland clearing and existing path. Farm keeps A + foliage 1, its bright pastel light and no sunny ring. Ground maps change. Contact shadows, light, foliage, props, cards and cameras do not.

Forest

Today
Forest Today, Home 1440×900
After
Forest After, Home 1440×900

Farm

Today
Farm Today, Home 1440×900
After
Farm After, Home 1440×900

The material differences

Forest

Broken turf edges, compacted soil variation, embedded pebbles and turf relief in the existing normal slot.

forest ground today
Today, exact audit crop
forest ground after
After, exact audit crop

Farm

A bright lawn with varied blade sizes and localized flowers. The approved 3D clumps, props and foliage stay as they are.

farm ground today
Today, exact audit crop
farm ground after
After, exact audit crop
Nintendo official lawn and dirt path reference
Animal Crossing: New Horizons · © Nintendo. Exact ground crop from the audit. Official source.
Hello Kitty Island Adventure meadow and path reference
Hello Kitty Island Adventure · © Sunblink / Sanrio. Lawn crop from the audit's hkia1 still. Source register.

References compare material scale and grouped detail. No reference pixels, textures or traced shapes enter the app assets.

Measured cost

Added field geometry: 0 triangles, 0 draw calls. Forest's 90 compressed geometry ranges and every node, mesh and accessor remain byte-identical. Farm changes only its ground painter and the two existing full/half baked maps.

Field payloadDownload bytes, today → afterDeltaField texture memory, today → afterDelta
Forest · both tiers13,959,800 → 13,933,148-26,65260.21 → 43.43 MB−16.78 MB
Farm · high2,863,159 → 2,791,257-71,90244.85 → 44.85 MB0 MB
Farm · low2,551,221 → 2,505,179-46,04211.21 → 11.21 MB0 MB

Download includes the GLB and field-specific maps. Memory is an uncompressed RGBA8 estimate including mipmaps, not measured physical VRAM. Forest uses one 2048² albedo and one 1024² normal in the existing slots. Farm keeps two 2048² maps on high, two 1024² maps on low. No additional low-tier variant is needed for this treatment. The forest's existing 2.14 million board triangles remain a separate baseline cost.

Forest phone GPU
3.93 ms today
4.74 ms after
Farm phone GPU
2.21 ms today
2.36 ms after

Phone GPU comparison on an 8 ms scale. These are phone-sized renders on the Mac mini, not phone GPU measurements. Short samples on a shared Mac do not establish sustained 30 or 60 fps.

Board viewportTriangles
Today / After
Draws
Today → After
GPU ms, median / p95
Today / After
CPU ms, median / p95
Today / After
Forest · Board 1440×9002,143,577
2,144,203
40 → 423.46 / 4.34
4.49 / 5.02
1.80 / 2.70
2.20 / 3.00
Forest · Board 1920×10802,143,577
2,143,925
40 → 433.55 / 4.20
4.43 / 5.99
1.70 / 2.60
2.20 / 2.70
Forest · Phone board2,143,577
2,143,577
40 → 403.93 / 4.47
4.74 / 5.46
1.90 / 2.70
1.80 / 2.80
Forest · Phone board low2,143,577
2,146,365
40 → 463.33 / 3.63
3.31 / 3.42
2.60 / 3.80
4.60 / 6.10
Farm · Board 1440×900693,140
691,728
43 → 392.22 / 2.37
2.25 / 2.46
2.80 / 3.70
2.20 / 3.20
Farm · Board 1920×1080691,456
691,588
39 → 392.23 / 3.20
2.67 / 2.76
2.40 / 3.00
2.80 / 3.70
Farm · Phone board691,476
691,388
38 → 372.21 / 2.35
2.36 / 7.02
1.90 / 2.60
2.10 / 2.90
Farm · Phone board low480,246
480,310
41 → 411.01 / 1.04
0.97 / 1.04
5.90 / 7.40
5.30 / 7.40
Measurement method and limits

Same audit harness and real production routes. Home and offline table, with the shipped 35% desktop board framing and 46° pitch. Desktop DPR 1, phone 390×844 DPR 2 on high, DPR 1 on low. All accepted captures verify Apple M1 via ANGLE Metal. No software-rendered image was used for look judgment.

The real table settles on an auction turn with the board rig and camera effects idle. Its existing scheduler stays awake for five seconds. CPU reports rendered requestAnimationFrame callback work over four seconds. GPU uses EXT_disjoint_timer_query_webgl2 around 24 static scene/camera renders, drops the first four, delays query reads, and rejects disjoint results. CPU and GPU overlap.

Today is the archived audit. After is this scratch branch. Offline hands, actor poses and settled status props can differ between captures, so total scene draw/triangle changes and timing differences are not attributable to ground materials alone. Geometry-byte checks prove the ground pass adds no field triangles or draws. Do not read small timing reductions as a performance gain.

Audit measurements · After measurements and texture inventory. Every after capture has a matching JSON beside its original PNG.

What a build would touch

Replace the forest GLB's embedded ground albedo and normal, preserving all geometry and other images. Update only the farm ground-paint section, then rebake farm-ground-6.6 and farm-ground-19 at both resolutions. The reproducible forest repaint script is included on the scratch branch.

Contact depth still depends on lane 1. This study adds surface variation and normal-map relief, with no baked AO beneath trees, props, animals or the stump. Physical grass height and silhouette changes belong to lane 3. Keep both treatments when those lanes combine. If lane 1 also rebakes forest.glb, run the ground repaint on that combined source and recheck the non-ground bytes. Do not resolve a binary conflict by dropping either lane.

Validation: typecheck passed, targeted loader/field budget checks passed, farm painter lint passed, and the real GPU screenshots cover every requested viewport. No app UI, actor, card, engine or server change.