Procedural Materials

Road surfaces and markings are generated on the GPU from base colors, noise, and lane data — no baked textures.

Engine & ToolingContent PipelineArt & LightingTransport

Base Surfaces

Asphalt and concrete are a flat base color plus one or two layers of GPU noise (value/Worley) for wear and tonal variation. No authored texture maps ship for road surfaces.

Markings

Lane markings are data-driven: generated on the GPU directly from lane-spline data (see Transport doc) — center dashes, edge lines, crosswalks — parameterized by lane class, width and arc-length position, not painted into a texture.

Sketch

A WebGPU fragment/compute shader samples distance-to-lane-centerline and arc-length along the spline to place dashes and edge lines procedurally per-pixel.

Paint Weathering

The Paint building material family (Art & Lighting's tier 0 palette) is one material, not two — its condition is a function of the parcel's land value, not a fixed "cheap and shabby" texture baked into the enum.

The in-fiction logic: a paint job is cheap to apply and cheap to neglect. A new home at any income level looks clean the day it's painted, but low land-value parcels are the ones where upkeep lapses — so the same material weathers into peeling, flaking paint over time on a tier 0 parcel, while a tier 3 parcel's paint reads freshly maintained. It's not that poor families choose visibly bad paint; it's that paint is the material every income level starts with, and only some income levels maintain the paint. This is the same "the tier signal is upkeep, not just cost" idea that makes Paint distinct from something like ConcreteBlock, which reads utilitarian/cheap regardless of maintenance.

Mechanically: weathering is a shader parameter (paint condition — coverage of peeling/flaking noise over the base color) driven by the parcel's landValueTier, the same value Procedural Buildings' GenerationRule.materialsByLandValue uses to pick materials. A future growth-animation pass could even let condition drift within a tier (freshly re-painted right after a tier upgrade, degrading toward the next regeneration) rather than snapping to a fixed look — out of scope for v1, noted here for whoever picks up the shader work.

Why

Open Questions