# Fresh Coat: Pixel-Art Graffiti Yard

- Author: @halfofthemwork
- Card: Creator prompt
- Theme: Dioramas & voxel scenes
- Stack: Not rebuilt
- Interaction: Drag
- Licence: Credited link (Shared publicly by the author; full text with credit, removed on request)
- Verified: not yet
- Original post: https://x.com/halfofthemwork/status/2114738270466695553

## Original prompt

```text
Build a single-file HTML + three.js (r160) scene called "Fresh Coat": a crew of writers painting a long garage wall in a back yard on a floating island. It is a real 3D scene rendered as crisp pixel art.

Rendering: an orthographic isometric camera (drag to turn in 90° steps, scroll or pinch to zoom). Render into a small low-res target with a depth texture, then upscale with texelFetch to whole screen pixels. Add depth-based outlines and quantize every pixel to a fixed ~60-colour palette in OKLab, with an optional Bayer dither. The palette needs enough saturated spray colours (chrome, fluoro, deep shadows) for the pieces to pop. Toggle "Pixel art / Raw 3D", with a pixel-size slider and Palette / Dither / Outlines checkboxes, plus a "Wall view" button that turns the camera square onto the wall.

Yard: patched, cracked asphalt with a kerb, grass and dirt around the island edge. Around the asphalt:
- a long row of lock-up garages with numbered doors and a flat roof that overhangs them. Their back wall is the canvas, rendered plaster and old brick;
- a brick transformer booth with a warning sign, a good place to hide behind;
- a poplar with a bench and a grandmother on it, who tuts at new tags and nods at good pieces;
- a carpet rack, bushes, a fence with a hole, a rubbish skip full of empty cans;
- a lamp on a pole and a lamp over a garage door.
Pigeons walk and peck, and flap up onto the roofs when a writer or the janitor comes near. A cat on the garage roof follows the hissing can with its head.

Wall: a data texture over the whole wall. Each texel stores colour, layer, wetness, age and its order along its stroke. Pieces are drawn progressively in the real order: a thin sketch outline, the fill, a fade, the final outline, the 3D shadow, highlights, and last of all the tag. Older layers show through where a coat is thin, and old pieces fade and flake with age.

Spray: each can sprays a cone of droplets. Distance sets line width and softness, and speed sets coverage. Moving too slowly or too close makes paint pool and run, and drips flow down the texture under gravity until they dry. Wind blows overspray sideways. Cans run low (the hiss sputters and the line breaks up), get shaken with a rattle, and land in the skip when empty.

Crew (8 writers, each with skill, speed and can control, and a style: tagger / throw-up / piece / characters):
- Four paint at once, four wait on the kerb, sketching in black books. Letters come from an original pixel alphabet, turned into strokes, so every writer has a different name and hand style.
- Each writer scans the wall for a spot, plans a piece that fits the free space, roughs out the sketch, steps back to look, then paints in passes. The crew agrees on the colour scheme, and writers lend cans to each other.
- The wall code: never go over a better piece, only a worse or older one. A tag over someone's piece starts beef: they cross it out, and the two argue. With Code: Off, anything goes.
- After each piece the crew rates it (letters, flow, colours, cleanliness, drips). The best rating moves its writer up the ladder. A writer whose piece gets crossed out or buffed drops to the back of the queue. Everyone below moves up, and the next in line steps up to the wall.

Janitor and AI: a janitor patrols on a timer with a roller and a bucket of grey that never quite matches the wall. One waiting writer keeps lookout. When the janitor appears, the lookout whistles, everyone grabs their cans and hides behind the booth or the skip, and they come back when the janitor has gone. The janitor buffs fresh tags first in uneven grey rectangles, which become clean canvas for the next piece. Errors grow with haste (when the janitor is near), wind, a nearly empty can and lower skill: shaky lines, overspray, drips. Occasionally a nozzle clogs and spits a blob.

Writers: box-rigged with two-bone IK. The can hand follows the stroke path at the right distance from the wall. Poses: walk with a bag of cans, shake the can, crouch to paint the bottom, stretch on tiptoe or stand on a crate to reach the top, step back with arms folded, point out a mistake, fist bump, argue over a crossed-out piece, run and hide, peek out, and sit sketching on the kerb.

Time and weather: Day / Dusk / Night (the lamps light the wall, and painting by lamplight shifts the colours), Dry / Windy / Rain.
- Rain: streaks, splashes, darker asphalt and a wet, darker wall, puddles that mirror the wall via a mirrored render pass. Fresh paint that has not cured runs and washes out in coloured streaks, while cured paint survives.
- The writers shelter under the garage roof overhang. When the wall dries, two of them repaint the damaged parts in the same stroke order, and painting resumes.

UI (English, light and dark themes, mobile layout):
- A lit scoreboard with pieces finished, clock + status ("Painting", "Janitor!", "Rain"), the longest-standing piece and the best-rated piece.
- A side rail with: Time & weather (with wall wetness and paint cure bars); the ladder (King / Writer / Toy / Newbie plus "Next up"); Rules (Code: Respect / Off; Janitor: On / Off; Wind: Calm / Gusty); a feed of events ("Crossed out!", "Buffed", "Drip", "Janitor coming") with "Everyone go over the King" and Pause; View (Replay a piece from its first stroke).
- Click a spot on the wall and the next writer paints there. Click a writer and the whole crew helps them. Original letters and design, no real crews, brands or names.
```

Not rebuilt by 3dmotion yet. Credit stays with @halfofthemwork.

Prompt by @halfofthemwork (https://x.com/halfofthemwork/status/2114738270466695553) via 3dmotion.io/e/fresh-coat-pixel-art-graffiti-yard
