✦ SPIELWELTENMoto Racer - Rampage ↗

Summer meadow preparation and distant forest proposal

Prepared 2026-09-15 during the native albedo diagnostic build. Only ArtSource and this document changed. Nothing was imported into Unity; no runtime material, terrain, route or build changed.

Prepared source

ArtSource/Alps/SummerMeadow/Exports/ contains the proposed AlpineSummerMeadow colour, OpenGL normal, roughness, AO and technical HDRP mask. prepare.py beside it reproduces the output and checks publisher hashes against the already verified candidate manifest. manifest.json records every original/output hash, size, scalar-channel mapping and import contract.

Selected ambientCG Grass005, original archive, under CC0-1.0. The publisher describes its technique as Procedural with Bitmap Elements. It is not presented here as photogrammetry. The darker Grass001, technique Procedural, remains the comparison candidate for shaded roadside ground.

The selection follows the actual source pixels: the current AlpineMeadow is mostly dry brown leaf litter interspersed with green leaves. Grass005 has continuous fresh blades and better matches the user's green summer valley photographs. The current source, Grass005 original, and prepared byte-identical Grass005 colour were viewed directly. The prepared output has no artistic colour transform, contrast adjustment, gamma correction, resampling or recompression.

Source Mean sRGB RGB, 0–255 Mean linear luminance
Existing AlpineMeadow 151.02 / 131.34 / 89.12 0.24413
Grass001 comparison 68.14 / 91.52 / 40.34 0.09249
Prepared Grass005 101.45 / 131.84 / 43.64 0.19928

An initial 1.4 × 1.4m authored tile size places the blades within the requested 1–2m range. Grass005's publisher page did not supply a physical size; this number is an authored starting scale, not a measured publisher claim. Final scale remains subject to the riding-camera view. At 1024² it corresponds to about 1.37mm per source texel.

Colour, normal, AO and roughness are unchanged file copies. The mask is losslessly packed as R=0 nonmetal, G=source AO, B=255 detail coverage, A=255−source roughness. Exact channel roundtrip was verified. Unity import contract: sRGB colour only; NormalMap with the original OpenGL orientation; linear mask; Repeat and mipmaps. A white material multiplier and no extra gamma conversion preserve the source. Smoothness remap 0–1 preserves the source roughness instead of silently crushing it into a narrow hand-chosen range.

Use the new material name only for Alpine summer meadow Layer 0 initially. Do not overwrite the existing source shared by other regions. This preparation addresses unsuitable source colour; it does not establish that the native material pipeline or final image has passed.

Smallest distant-canopy correction to test next

The current woodland Layer 1 repeats the brown ForestGround litter photograph over entire far mountain slopes. AlpineForestCanopy adds 15-tree cross-card groups beyond 700m, while those groups cast no distant ground shadows. Consequently the native view shows detached stamps with bright exposed floor between them. More cards alone will retain the wrong broad-scale colour and the same repetitive silhouette.

Proposed bounded summer M1 experiment, after the native albedo diagnosis:

  1. Use the existing HDRP/LayeredLit fourth slot as a geographic far canopy layer. Summer currently has only three active layers. Use the existing attributed orthophoto as its planar albedo at the exact same world scale/offset as Layer 2. No tint, no floor normal map, no new custom shader, no additional texture asset. Keep the original Repeat sampler in Layer 0.
  2. Replace the currently unused summer mask B channel (an archived coarse-rock weight) with forest * (1 - rock) * smoothstep(220m, 650m, nearestRoadDistance). Derive distance from the immutable sampled lines of all three Alpine routes, so the same patch does not change with the selected stage. The narrow road corridor and near soil remain readable. Restrict coverage to verified tree-covered orthophoto regions; procedural woodland coverage alone can include real aerial clearings or buildings. This is a source-mask preparation with unchanged DEM, mesh and physics.
  3. First take the same three native M1 frames without changing tree count or card geometry. This isolates whether coherent photographic crown colour removes the bright detached-stamp effect. Inspect albedo mode as well as lit output. Only after this comparison consider reducing the large card groups where they duplicate visible photographic crown texture; retain skyline and close individual silhouettes.

This uses the retained native four-layer shader path already needed by the snow material. It adds a texture sample and a mask update, not thousands of extra objects. It must not switch entire 512m terrain tiles between near/far materials, which would create hard boundaries.

The existing winter material already reserves slot 3 and mask B for snow. Therefore this is explicitly a limited M1/M2 test, not a silent replacement of snow or a claimed all-season solution. A successful summer result would justify the separate next decision about winter canopy representation. The orthophoto also retains baked lighting and shadows; it cannot supply close 3D branches or parallax and is not a de-lit PBR canopy asset. Native acceptance must show coherent green forest masses, no pale perforations or terrain seams, retained close trunks/understory and unchanged rocky/tree-line boundaries.

Integration after native albedo diagnostic

Root subsequently authorized integration while keeping the DEM and both landcover masks unchanged. The four-layer proposal above was therefore not implemented. The smaller actual correction is:

The actual input comparison used all four images view0/1-albedo.png and view0/1-original.png in Docs/QA/20260915-161917-campaign/albedo-diagnostic/. Their albedo output confirms that the beige ground is present before scene lighting.

Massif: numerical mip and coverage diagnosis

ArtSource/Alps/SummerMeadow/check_native_ortho.py reconstructs rays from the captured camera projection/quaternion, intersects the immutable DEM bilinearly on CPU and samples the original orthophoto and mask. native-ortho-samples.json records the results. This is an approximate check: runtime terrain uses sampled triangles, and some screen pixels can hit foreground tree cards first. It does not claim exact per-fragment GPU tracing.

At selected exposed massif points, estimated orthophoto derivatives imply mip levels 0.45–1.42, not catastrophic downsampling. The source sRGB and native albedo closely agree where rock coverage is full: view1 pixel (810,165), world (-2564.54,1357.72,3463.04), G=255, source RGB (149.31,139.64,135.64), native (157,146,141). Minor differences are consistent with actual filtering, shader detail and triangle approximation. No concrete mip or planar-coordinate error was established, so there is no unsupported sharpening/mip-bias change.

The creamy smooth lower massif is principally a landcover classification problem. Examples:

Native point DEM local height Rock mask G / 255 Original aerial RGB Native albedo RGB
view0 (915,245) 1037.06m 5.97 87.20 / 80.47 / 86.30 148 / 129 / 90
view1 (910,219) 1056.60m 5.93 56.55 / 46.06 / 56.23 150 / 131 / 90
view1 (1025,250) 1018.21m 95.85 48.91 / 44.95 / 43.90 127 / 110 / 77

At the first two points the original orthophoto is almost completely masked out; the repeated meadow photograph supplies the beige colour instead. Woodland fades near 835–1060m local height, while altitude-driven rock does not become substantial until 1030–1330m, and the slope term misses some genuine exposed faces. This leaves a wide meadow belt beneath the limestone. Grass005 will make that belt greener, but this alone cannot restore the real source's geological boundaries. The geographic mask remains unchanged as requested; these samples support a subsequent specifically scoped landcover correction rather than blind rock recolouring.

Preserved SHA-256 values:

Native art acceptance of this integration is pending.

Authorized geographic geology correction

Root authorized the specifically evidenced landcover correction after reading the native ray measurements. Tools/Art/refine_alpine_geology.py now refines only G in both summer and winter masks. Originals are hash-verified under ArtSource/Alps/SourceAssets/LandcoverBaseline; the complete numerical report is ArtSource/Alps/geology-refinement.json.

The correction is limited to the actual main massif with a feathered geographic boundary, local heights 740–990m as a transition gate, DEM slopes around 24–40 degrees or steeper, and low green chromatic evidence in the original aerial pixels. This accounts for genuine steep faces softened by the 20m DEM. It does not classify bright pixels as snow. Original aerial colour remains unchanged. Gentle plateau areas and green vegetation do not receive the additional rock weight. No height or route sample changes.

Native ray point Ground slope Before G / 255 After G / 255
view0 (915,245) 43.83° 5.97 255.00
view1 (910,219) 40.55° 5.93 255.00
view1 (1025,250) 53.60° 95.86 252.70
Low green forest control: view0 (410,275) 44.13° 0.22 0.22

Both masks change 158,106 of 4,194,304 pixels (3.7695% of the map), only in G. Mean G increase across the full map is 3.38472/255; maximum 255/255. R forest coverage, B snow/reserved coverage and A remain byte-identical, checked directly. In particular, winter snow distribution is unchanged while its underlying geology agrees with summer.

User reference 13 (codex-clipboard-eb1e0d45-5021-409b-9399-f143f651b50f.png) was viewed again during this correction. Its grey rocky drainage faces continue down into the woodland; it does not support the former uniformly beige belt at an arbitrary height. Aerial chromatic classification remains imperfect in deep shadows, and the limited mask operation cannot improve actual terrain mesh resolution. The next true Windows frame remains the artistic decision point.

Null-device material readback guard

Docs/QA/20260915-164245-campaign/campaign-report.json records a headless load failure with zero frames: Unity's Null graphics device returned null from material _BaseColorMap0 readback, causing the rendering-sampler assertion to abort stage creation. This is distinct from the earlier successful rendered albedo diagnostics.

AlpineTerrainMaterial.Create now performs that material readback, Repeat import assertion, texture-dimension and keyword reporting only when SystemInfo.graphicsDeviceType != GraphicsDeviceType.Null. Resource loading, missing-resource checks and the actual material setup remain unchanged. The Null branch explicitly logs that renderer-property checks were skipped and no graphics validation occurred. No replacement material or physics shortcut was added. The full compile initially encountered concurrent unfinished RiderRig changes (RaisedPanel/AddLimbFolds), outside this fix; native headless rerun and final compile remain root-coordinated.