✦ SPIELWELTENMoto Racer - Rampage ↗

Alpine summer: near ground and distant crowns

The three actual Windows frames under Docs/QA/20260915-165917-campaign/ were all viewed. They reject the previous whole-forest orthophoto mapping: near woodland ground is almost white with large blurred photographic patches. Grass005 is green but visually too uniform across broad open fields. Limestone drainage has improved, while the distant cross-card forest is still visibly stamped. No artistic pass is claimed.

The coherent material correction now uses four native HDRP/LayeredLit layers for summer:

Slot Source and scale Coverage
0 Unmodified ambientCG Grass005, 1.4m Fresh meadow base
1 Unmodified ambientCG Grass001, 1.4m Near grass/woodland ground and limited darker meadow patches
2 Existing geographic orthophoto, unchanged DEM coordinates The approved corrected geology G
3 Same geographic orthophoto Distant tree crowns only, through summer mask B

Grass001's original source was viewed directly. It has darker grass, ground and scattered small leaves, rather than enlarged aerial canopy or pale fields. Colour and OpenGL normal files are copied byte-for-byte into AlpineGroundCover_color.jpg and _normal.jpg. Its HDRP mask uses unchanged original AO and roughness, packed as (0, AO, 255, 1−roughness). Both grass materials retain white albedo multipliers and full 0–1 smoothness remapping. There is no LUT, hue adjustment, artificial green recolouring or large-scale stretching of a leaf texture.

Tools/Art/build_alpine_summer_canopy.py produces the masks from the archived post-geology baseline. It computes the exact 2D distance to all 5,286 original line segments across the three immutable Alpine routes (1,201 / 2,026 / 2,062 vertices). Distance is spatially capped at 660m because the blend is already fully saturated beyond 650m. No line simplification or road resampling occurs.

Summer B is now smoothstep(0.18, 0.55, originalForest) × smoothstep(220m, 650m, distance) × (1 − geologyG). The first factor describes closed material coverage, independently of tree-placement probability. Thus there is no aerial forest-floor colour within 220m of any of the routes. The fourth layer has higher HDRP priority, so B is quantized downward and B+G≤255 is asserted for every source pixel. It cannot consume the geology layer's allocated coverage. G and A remain byte-identical.

Summer R retains the original close-ground coverage and adds bounded scalar blends of the two original grass materials on gentle, low valley meadows. Five broad, irregularly sized patches and a small mowing variation supply different ground/grass appearances. The added contribution is excluded from steep/high terrain and existing geology, and it does not become a tree-placement mask. These are authored art variations, not a claim to surveyed agricultural fields. The source base photographs still tile at 1.4m, so giant grass blades or enlarged leaves are not introduced.

Winter retains its existing slot 3 snow and complete mask unchanged. Its underlying geology correction from the preceding approved iteration also remains intact. No canopy geometry, tree count, route, terrain height, collision, lighting or UI was changed in this iteration.

Evidence and limitations

The aerial retains baked lighting and possible actual source clearings under some procedural tree groups. Separating near ground fixes one demonstrated error; it does not establish that far tree cards are convincing. Extra density and geometry edits were deliberately kept out of this material comparison. Meadow brightness and the authored broad patches likewise require native visual review before acceptance.

Sources: ambientCG Grass001, Grass005, CC0 license. Grass001 is publisher-described Procedural; Grass005 is Procedural with Bitmap Elements. Their supplied files are not represented as photogrammetric surveys. Aerial attribution remains Datenquelle: basemap.at, CC BY 4.0 as recorded in Docs/ALPINE-ORTHOPHOTO-ASSETS.json.

Material-coverage correction after the 19:17 native run

The two actual frames Docs/QA/20260915-191751-campaign/alps-01-pass0-view0.png and view1.png were inspected. They still show conspicuous pale grassy openings between the distant forest groups. In the previous mask, the original tree-placement probability was also used directly as the orthophoto layer's opacity. A forest probability of 0.68 therefore left 32% of the non-geology material capacity to underlying ground even far inside woodland.

The bounded correction remaps only material B through smoothstep(0.18,0.55,originalForest). The original ecology input and ChapterLandscape.Woodland are untouched. Values at or below 0.18 remain zero, and the transition reaches full material coverage at 0.55; for probabilities 0.68 and 0.8 the distant woodland material now receives all non-geology capacity instead of 68% or 80%. The exact existing 220–650m distance fade across every Alpine route is unchanged.

build_alpine_summer_canopy.py --mask-only rewrites only SchneebergLayers.png under Assets, verifies the existing source textures without recopying them, and records the new report under ArtSource. Its checked result is:

The mask correction has not yet received native image acceptance. Root is separately replacing the sheared distant summer group cards; those geometry changes are outside this mask revision. The combined next-build controls remain Alps01 view0 and view1, alongside the independent RockFace control in Alps02 view1.

Revision 2: canonical TreeCover after the 23:15 native images

The actual 20260915-231543-campaign/alps-01-pass0-view0.png and view1.png show trees placed by the new canonical cover over ground still controlled by the old forest ellipse and the 220–650 m exclusion. Revision 2 of Tools/Art/build_alpine_summer_canopy.py resolves that mismatch, while retaining the approved R and unchanged G/A.

The generator reads ArtSource/Alps/TreeCover/AlpineTreeCover.bytes, verifies its manifest hash, and verifies byte identity with the encoded AlpineTreeCoverData.cs runtime payload. Sampling matches AlpineTreeCover.Density: bilinear cover R, maximum geology G from the four cell corners, and the same 0.25–0.65 geology rejection. Its result is C. Using exact distance d to all segments of the three unchanged Alpine routes:

far  = smoothstep(0.18, 0.55, C) × smoothstep(220, 650, d)
near = smoothstep(0.55, 0.80, C) × smoothstep(27, 100, d)
B    = floor(max(far, near) × (255 − G))

Thus dense forest can receive continuous photographic canopy colour below the old 650 m cutoff, while the first 27 m from each road remains excluded. Low-density open meadows receive no new near contribution. B remains aerial crown colour, not a captured ground-level forest surface; the previous white/blurred near-ground problem must be checked in the next native views.

The --mask-only run and a complete second generation passed:

Evidence: ArtSource/Alps/SummerMeadow/summer-tree-cover-revision2.json, the current summer-canopy-build.json, and the personally inspected scalar comparison TreeCover_B_revision2_review.png. The pre-change manifest is archived as summer-canopy-build-before-tree-cover.json. No source photographs, colour multipliers, lighting, shaders or terrain geometry were changed. The paired summer spacing/attempt-count change is documented in ALPINE-TREE-COVER.md. Managed compilation passes 97 Runtime + 22 Editor without warnings or errors. Native image and memory acceptance are still pending.