Wearing a building's insides with a room-scale mask
The buildings now have pictures inside, and a wear mask made for rooms, after the facade mask drew stripes of clean paint across the grime.
The insides of the buildings are no longer gray blocks. Each kind of room has its own pictures, the roofs can be slate or corrugated sheet, and the insides wear with the outside from peak to dead. The part that took the most work was the wear. The mask I use on facades drew long straight bands of clean paint across a decayed ceiling, so I moved the insides to a mask made for a room.

Why were the walls gray?
I’d looked inside one of the houses and said the walls need interior textures as well as exterior ones, because the inner faces were featureless gray blocks. I also wanted the insides to wear from peak all the way to dead, and damp to show in rooms and ruins only.
How do the insides get their pictures?
Every inside face of a building piece carries a role. The art kit stores it as a number in the integer part of the second UV set’s y: 1 is the wall lining, 2 the wainscot, 3 the ceiling, 4 the floor, 5 a gable’s inside, 6 a slope’s underside, 7 a frame and 8 the roof’s cover. The fraction of that number is the crevice, how deep in a corner the point sits. The shader splits the number back with floor(v * 0.9999).
Each building has a room kind (parlour, office, works or attic) and a roof cover (corrugated or slate). A table in the kit and the same table in a game class called BuildingPatterns give every role a picture, its size in meters and the palette row it is painted in. The pictures are grayscale shades. The shader multiplies them into the albedo, in linear light, and lays them out in the piece’s space using the axis of the face’s normal. A roof cover is laid by its slope instead, with one direction along the eave and one up the roof, which is why slate no longer looks like panels from 5 or 12 meters away.
Damp is the picture’s second form. The red channel holds the damp version and the green the clean one, and the shader mixes between them. A works always has damp. Any other room has none at the declining state and all of it at decayed, so a parlour at declining has clean plaster and a decayed one mottles.
Why did the decayed rooms look striped?
The judge’s first look at the worn rooms found long, hard-edged bands of the clean picture running across the grime on the ceilings and walls. They looked like shafts of sunlight, except they were on the undersides of ceilings and gone at peak. I rendered the mask alone, flat, before changing anything, and that showed the cause.
On a facade the wear threshold is stored per corner and blended across the face’s triangles. A facade is made of lots of small triangles, so that works. A room’s ceiling is one or two long triangles, so the cut-off step(threshold, wear) drew straight lines across the whole room.

For faces with roles 1 to 7, the shader now ignores the corner and takes a threshold from the world noise. It scales the point by a noise tile of 4.5 meters, so the blotches are about 0.9 meters, and offsets it by a hash of the building’s seed so two buildings don’t match.
t = clamp(mid + spread * (blotch - 0.5) - crevice_weight * crevice, soft + 0.01, 1.0)
worn = smoothstep(t - soft, t + soft, wear)
The values are 0.42 for mid, 0.9 for spread, 0.06 for the soft edge and 0.3 for the crevice weight. The crevice term makes the wear gather in corners, at the cornice and along the skirting. The floor on the threshold keeps a peak room completely clean. The shader runs the palette lookup twice, once clean and once worn, and mixes the results by worn, so the patterns still show through the grime.

Did the outsides change?
No. The cover and the seams, and any face without a role, keep the facade’s mask. I compared four pieces at two states before and after. The only pixels that changed were 17 at a door wall, which is the view through the opening onto the inside. The decayed insides are about 4 percent clean now, where about a quarter was clean before in bands. The declining insides are about 74 percent worn. The shader’s debug view 4 draws the mask alone, which is how I shot the sheet above.
What’s left
The judge agreed the result and filed three things. The declining stains are full-strength patches of the dead picture, which is heavy for a room that’s only declining, so they should darken part of the way. Thin red slivers show at the front corners of a decayed building, because an end face takes a mask value that doesn’t match the wall beside it. And the stair treads, risers and stringers aren’t in roles 1 to 7 yet, so they still have the old bands.
The building_look test went from 93 checks to 102 headless and from 110 to 120 with screenshots, and all of them pass.