// Overview
Shop Alley extends the free base with the commercial half of the town: storefronts, counters, shelves, awnings, goods crates and signs. But a model pack only sells once - what sets this one apart is three systems that work the moment you drop a prefab into the scene, without writing a line of code.
All three hang off one component: CCA Wind Manager. A single object per scene sets wind direction and strength, and banners, awnings and hanging signs all react to the same field. Change the wind in one place and the whole street follows.
// Video
// Runtime systems
One awning or banner mesh gives you any number of colour, pattern and wear variants. Tears, dirt and fading are procedural, and the wind sway is computed in the vertex shader. All of it on one shared material - the variant is written through a MaterialPropertyBlock, so no material instances pile up in the project.
For dressing a scene in bulk there's an editor window - the Cloth Randomizer. Pick a scope (selection, selection with children, or the whole scene), choose which properties to randomize with min–max ranges, and dress dozens of banners in one click. A single Undo reverts the whole batch.
A sign is a decal rendered onto a board: pick an icon from the atlas, a tint and an optional cursed glow. Ready-made signs live in a Sign Preset Library - an asset you can extend with your own icons without touching the shader.
A separate shader handles carved sign boards - lettering cut into the wood, shaded together with the toon lighting of the rest of the pack.
Hanging signs rock on their chain - a damped spring driven by the same wind field as the cloth, plus a reaction to the movement of whatever they're attached to. The chain follows the board, so it doesn't drift apart at larger swings.
There's one rule people trip over, which is why it sits near the top of the documentation: the component goes on a child of the sign, not on the prefab root. On the root it would swing the whole rig, bracket included.
// Gallery



// Technical decisions
- Hand-written HLSL - instead of Shader Graph, to keep SRP Batcher compatibility and full control over cost. No GrabPass, so the pack is safe for VR and mobile.
- Per-instance variants without new materials -
MaterialPropertyBlockinstead of duplicating the material per banner. A hundred banners are still one material. - One source of wind - rather than configuring wind on every object, there's a global manager. Set it once, it works everywhere, and nothing drifts out of phase.
- Procedural wear, not baked wear - tearing, dirt and fading are computed in the shader, so one atlas covers the whole range of wear states.
- A tool for the bulk work - dressing a street by hand is hours of clicking, so the pack ships a batch randomizer with one Undo for the whole operation.