Canyon museum lighting — the NatGeo art direction (skin relight + river protagonist)#102
Conversation
…ction "Stop thinking like a GIS, start thinking like a landscape photographer. Don't optimize against Google Maps. Optimize against National Geographic." (operator brief, 2026-07-10). The remaining work wasn't more geometry — it was art direction. Six directives + the river as protagonist: GeoHelix VERT, uSkin branch (replaces the flat 0.80+0.32*ndl orbit light): - MUSEUM LIGHT: warm morning key (wrap diffuse), WEAK cool sky fill, and a WARM UMBER shadow floor (0.46,0.33,0.26 — reddish-black, never grey); the canyon glows in its own bounce light. - TERRAIN FIRST: partial DE-LIGHT — the photo's baked-in orbital luma is pulled 50% toward a mid reference (gain clamped [0.7,1.9] so dark pine stays deep, not lime) and OUR key re-shades the surfel form; the satellite palette remains as tint. - COLOUR SEPARATION: hue-preserving chroma x1.20 — cream limestone / ochre / orange sandstone / deep red strata split without cartooning. - WARM ATMOSPHERIC PERSPECTIVE: distance lifts toward pale warm amber, never grey fog — Arizona's dry air; distant mesas stay readable. - THE RIVER IS THE PROTAGONIST — the only material with dynamic lighting: aWet vertex attribute from the Garmin KIND grid, deep blue-green channel, riparian fringe at the Gouraud-feathered banks, and two view-dependent Blinn lobes (pow 80 sun-path + pow 420 sparkle) that slide along the bends as the camera orbits. Sandstone stays matte. decodeGrid: per-vertex wets from the palette's blue-dominant KIND slot (LAKE_SUBTLE stays below threshold by design) + a morphological opening. garmin_bake: - --crop KIND registration fix: the kind grid was rasterized against the FULL tile bbox on a cropped grid (misregistered — invisible while the skin covered it). A deg->mu kbbox from the crop window now feeds kind_grid/river_fill_grid, so Water lands on the real Colorado. - Connected-component river filter (>=25 cells) before the x2 widening: Garmin 0x4c also stamps hundreds of 1-4-cell flecks across the plateau; at altitude the region must read DRY, so only the ribbon gets the river material — flecks fall through to the still-water subtle class. Asset: canyon rebaked from the hue-preserving-brightened demgrid (global luma p2->p98 stretch to [12,242], gamma 0.94 shadow-open, sat x1.12, warm bias — luma mean 108->139, R>G>B red-rock ratio kept; the operator's "a little on the dark side" + homunculus-morning-light read). 38.6 MB gz. Verified headless across three iterations (643k proxy): strata separation, warm shadows, dry plateau (confetti eliminated), deep pine forest, river meanders in blue-green. Follow-up noted: width-stamped polyline rasterization for continuous river-material coverage in the thin gorge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012jEwwaT5JZ5x8qWvcnaMYC
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_4928fa2b-8f14-457a-a9b1-260a05760730) |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe change adds crop-aware Garmin KIND rasterization, filters arid river components before dilation, derives per-vertex wet masks in ChangesVer-9 river material pipeline
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Sequence Diagram(s)sequenceDiagram
participant garmin_bake
participant decodeGrid
participant Terrain vertex shader
garmin_bake->>decodeGrid: crop-aligned KIND and filtered river data
decodeGrid->>decodeGrid: derive and clean wets mask
decodeGrid->>Terrain vertex shader: bind aWet vertex attribute
Terrain vertex shader->>Terrain vertex shader: compute river and bank lighting
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint install failed: one or more packages not found in the registry. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The remaining work wasn't more geometry — it was art direction. This round replaces the ver-9 skin's flat orbit-light (
0.80 + 0.32·ndl) with museum lighting, and makes the Colorado the protagonist.Shader (GeoHelix VERT,
uSkinbranch)0.46,0.33,0.26— reddish-black, never grey). The canyon glows in its own bounce light.[0.7,1.9]so dark pine stays deep, not lime) and our key re-shades the surfel form; the satellite palette remains as tint.aWetfrom the Garmin KIND grid; deep blue-green channel; riparian fringe at the Gouraud-feathered banks; two view-dependent Blinn lobes (pow 80 sun-path + pow 420 sparkle) that slide along the bends as the camera orbits. Sandstone stays matte — a few moving glints read as living water, no animation needed.Bake (
garmin_bake.rs)--cropKIND registration fix — the kind grid was rasterized against the full-tile bbox on a cropped grid (misregistered; invisible while the skin covered it). A deg→mukbboxfrom the crop window now feedskind_grid/river_fill_grid.Asset
Canyon rebaked from the hue-preserving-brightened demgrid (operator: colour "a little on the dark side" — satellite haze + atmospheric degradation vs the eye's idealized diffuse morning light): global luma p2→p98 stretch to [12,242] (NOT per-channel — that would grey the red rock), gamma 0.94 shadow-open, sat ×1.12, warm bias. Luma mean 108→139, red-rock ratio kept (R155>G140>B89). 38.6 MB gz.
Verification
cargo build --release -p geo-hhtl✓ ·npx tsc --noEmit✓ ·npm run build✓Follow-ups
git rmthe blobs).🤖 Generated with Claude Code
Generated by Claude Code
Summary by CodeRabbit
New Features
Bug Fixes