Alpine winter road dressing
Bounded visual correction after reviewing all three Alps03 captures from the 16:57 build. That build's snow road was nearly featureless white, with a concrete-derived grid normal, while the snow verges read as continuous rectangular strips. A subsequent, separate winter ground coverage correction addresses the beige soil beneath snowy trees; its native visual acceptance remains pending.
Assets/Rampage/Runtime/World/AlpineWinterDressing.cs supplies the replacement compacted-snow material and original visual geometry. ChapterScenery.SnowBanks delegates to it; winter road dressing now runs independently of the landmark-detail toggle. No collider, road centerline, road triangle, tire surface parameter, checkpoint or physical route revision changes.
- Compacted road: a dedicated shared HDRP/Lit material, lower neutral snow albedo and restrained roughness. It does not inherit concrete's mask or striped normal. The already licensed
Sand_normalimage supplies only a very weak fine-grain normal at 0.38 m scale, with correct conversion from the road's 8 m/U and 7 m/V UV coordinates. No source image is recolored or downloaded. - Wheel paths: four narrow, gently varying old motorcycle paths, 0.15–0.23 m wide, interrupted by undisturbed powder. These are settled tracks, not dynamically painted marks from the current rider. They are emitted only when both ends of the segment lie in the existing authored
RidingSurface.Snowinterval. Asphalt is not covered by the track overlay. Their meshes sit 12 mm above the unchanged road and have no colliders or shadow casters. - Snowbanks: separate 23–47 m long drifts, staggered on the two verges. Both footprint width and crown taper to zero at their ends; eight cross-section bands and smooth geometry normals create rounded banks rather than rectangular walls. Lower cleared approach banks are 0.20–0.48 m high; packed-snow sections use 0.60–1.05 m crowns. The inner boundary remains outside the ±6 m road. They match the existing shoulder height blend instead of floating above the excavated terrain.
- Budget/ownership: normal and materials are shared and cached; existing shader-reference collection must retain the material variants. Generated drift/path meshes use 180 m spatial batches and the existing
GeneratedWorldResourcesowner. They receive shadows but add no shadow casters. There is no Update/LateUpdate work and no per-frame geometry or texture allocation. Shoulder positions are evaluated once per grid vertex, then normals use that grid.
Source provenance is original procedural geometry plus Poly Haven sand_02, CC0-1.0, already credited under Sand in THIRD-PARTY-NOTICES.md; official source page. The reused file is Assets/Rampage/Resources/Textures/Sand_normal.jpg, imported as a linear normal map with Repeat wrap. This work adds no source texture, account, download or asset payment. The normal is used as generic granular microstructure, not misrepresented as a photographed snow surface.
Winter vegetation follow-up
The initial read-only audit confirmed a real LOD mismatch: Place(winter:true) covered only near bough geometry, while LOD2, Far() and ForestCluster() reverted to summer cards. This has now been addressed in source with dedicated CPU-baked winter A/B and group atlases and an explicit winter flag through those representations. The complete production evidence and limits are in ALPINE-WINTER-FIR.md.
Existing woodland placement still follows its local tree-line mask. The follow-up preserves original trunks, needle alpha and dark undersides, adds snow only to selected bough tops, and neither whitens complete cards nor removes mixed forest batches. Native winter LOD transitions and the full scene remain to be visually accepted in a build containing the new atlases; the 18:04 build predates that integration.
Validation boundary
The implementation compiled with 91 Runtime + 20 Editor files, zero warnings/errors, without Unity/player startup. The rendering owner has now connected ChapterTerrain.RoadMaterial's existing snow case to AlpineWinterDressing.PackedRoad and included its RepresentativeMaterials for shader retention. Sources are frozen for the combined native build. Native snow brightness, actual track/drift visibility, drawing budget and scene-resource plateau remain to be checked. No winter graphics or AAA acceptance is claimed from code or compilation.