ab_stone
The crater's basalt: coursed into retaining walls where the garden was built, natural everywhere else, under whatever ash is still lying on it.
ab_stone
The crater's basalt: coursed into retaining walls where the garden was built, natural everywhere else, under whatever ash is still lying on it.
It declares no textures. Every mark on it — the courses, the chipped edge of each split block, the vesicular pitting, the ash packed into a joint, the sheen of water on a flat — is computed from world position. So it spends nothing of the material texture budget, its detail has no resolution, and one material carries the 250 m rim wide and an 8 cm macro of a single stone.
Driven every frame
| property | |
|---|---|
wetness | 0 → 0.78. Darkens the albedo by most of a stop, drops the roughness, and gathers standing water in the low places. Water finds the flats first, and ash that is still lying keeps it off the stone underneath. |
ash_coverage | 1 → 0. A film on everything that faces up and a drift packed into every joint and pit. |
Read from the mesh
vertex_color.r how freely ash lies here, .g whether this is built stonework
or natural rock, .b how high up the crater it is. craterGeo writes all three.
Why it holds at both ends of the film
Two things, and both are load-bearing.
Each band of detail is faded out as its features shrink below the size of a
pixel (ab_lod, against the world-space footprint from the position
derivatives). Left in, a sub-pixel octave is not detail, it is white noise that
crawls as the camera moves — which is what a 250 m wide of a rock face looks like
without this.
And the specular lobe is widened by how much the shading normal varies across the
pixel (ab_specular_aa). A pixel covering many bumps reflects a cone of
directions, not one; shading it at the authored roughness turns wet basalt under
a low moon into a field of sparkle.
The shading normal itself comes from the height field's screen-space derivatives rather than a tangent-space normal map, because every mesh in this crater is generated at runtime and carries no tangents.
Scoped to this part · feeds back into the world's score.