# wgt01 Texture Kit & Design — Spec

Date: 2026-07-05 · Branch: `wgt01-tileset-kit` · Status: **shipped & merged** (see "As shipped" below; gaps tracked in `2026-07-05-wgt01-texture-kit-gaps.md`)

## Goal

Assemble the material/texture kit for **wgt01** (Westgate Urban Foundation
tileset): dark gothic ground grammar only — streets, sidewalks, plazas, curbs,
gutters, raised tiers, ramps, canals, bridges. No buildings (placeables later).
Palette and material language follow `wgt01/concept-art-1.png` (8 material
slots) and `wgt01/VIBE.md` (noir dark fantasy, rain-slick, early
industrial-magical shown only through ground grammar).

## Approach (decided)

**Hybrid curated**, Procampur-first with a small internet pull:

- Base structure from `/home/vicky/Blender/PBR_Procampur` (PBR retexture of
  stock `tcn01` City set: `_d/_h/_n` maps + `.mtr`, NWN-correct tiling scale).
  Confirmed too grey-green/warm as-is → every diffuse gets a uniform regrade.
- Fresh CC0 pulls (ambientCG / Polyhaven or similar) only for slots Procampur
  lacks: plaza slabs, possibly sidewalk flagstone and bridge arch stone.
- `pd textures main lib` is fallback only (Roads is mostly modern asphalt; the
  dark pebble-cobble pattern is a candidate wet-cobble alternate).

Rejected: pure Procampur rename (not dark enough); all-internet (discards
ready-made NWN conventions, most work).

## Deliverables

1. `wgt01/textures/` — the kit. Per material slot: `wgt01_<slot>_d/_h/_n.tga`
   (+ `_s` where available) and `wgt01_<slot>.mtr`. All resrefs ≤ 16 chars,
   `wgt01_` namespace. No originals modified in `/home/vicky/Blender`.
2. `wgt01/textures/SOURCES.md` — per-file provenance + license notes
   (Procampur origin filename, or CC0 URL/asset id).
3. `wgt01/regrade.sh` (or small script) — the single ImageMagick recipe
   (levels + desaturate + cool tint, ~35% darken) applied to all diffuses so
   the kit shares one palette. Reproducible; height/normal maps pass through
   untouched; missing `_s` generated from darkened diffuse.
4. Materials wired into `wgt01/wgt01.blend` on the tile prototypes
   (named `MAT_wgt01_<slot>`, image-based, matching KICKOFF material roles).

## Material slots

| # | Slot (concept sheet) | Source | Notes |
|---|---|---|---|
| 1 | Wet cobblestone | `tcn01_cobb02` d/h/n | regrade; specular boosted for rain-slick |
| 2 | Worn stone / patches | `tcn01_cobb05` | regrade; broken/repair variant |
| 3 | Plaza stone (large slabs) | internet CC0 flagstone/slate | grade to palette |
| 4 | Curb / sidewalk stone | `tcn01_stone04` or internet flagstone | pick after regrade test |
| 5 | Retaining wall stone | `tcn01_brick03` + `tcn01_slum01`; `tcn01_watrstn02` waterline overlay near canals | regrade |
| 6 | Bridge stone | `tcn01_stone04`/`brick03` variant; internet arch stone if needed | regrade |
| 7 | Dark gutter / drain | `tcn01_grate01`/`grill01` iron + darkened stone channel | near-black, wet; grate01 is DDS-only → convert |
| 8 | Canal / dark water | authored near-black water diffuse; `.set` `EnvMap` | `tcn01_water01` too green; animation later |

Grime layer (not a slot): `tcn01_splotch*`/`stain*` alpha decals reused as-is.

## Tile grammar (context, unchanged)

Prefix `wgt01`; terrains `cobble` / `plaza` / `canal`; crossers `street` /
`sidewalk` / `canal_edge`; `Transition=1.5`; raised tier = cobble at corner
height 1 (not a terrain). Kept minimal per the terrain-pairing cost rule in
root `AGENTS.md` §2.1. Canal water sits at Z = −0.3 under a non-walkable
walkmesh.

## Out of scope

Buildings/facades/props; `.set`/`.itp`/`.mdl` emission (twu01 generator kit is
the reference when we get there); water animation; minimaps; hak packing.

## Verification

- Contact sheet (ImageMagick montage) of all regraded diffuses next to
  concept-art swatches — visual palette check.
- Every slot has `_d/_h/_n` + `.mtr`, names ≤ 16 chars, TGA (no stray DDS).
- `wgt01.blend` opens in Blender 4.0.2 with all `MAT_wgt01_*` images resolving
  (relative paths into `wgt01/textures/`).
- `SOURCES.md` covers every shipped file.

## As shipped (current truth, post-merge)

Deviations from the table above; everything else landed as specced:

- No `_s` maps anywhere — `.mtr` uses `texture2` pointing at a shared black,
  `texture4` `_h`. The "generate `_s` from darkened diffuse" idea was dropped.
- Slot 4 sidewalk = `tcn01_stone04` (the internet-flagstone option lost).
- Slot 5 wall = `tcn01_brick03` only; no `slum01` blend. Waterline is a
  separate decal `wgt01_wtrline_d`.
- Slot 6 bridge shares `tcn01_stone04` with sidewalk, differentiated by a
  darker/cooler regrade (`MOD=42,40,105 TINT=#1c2436 TINTPCT=22`); its `_n/_h`
  are still sidewalk's — replace only if it reads wrong in-engine.
- Slot 7 gutter = extra-dark cobble regrade; the iron grate is a separate
  32-bit decal `wgt01_grate_d` (DDS converted via nwn_crunch, not ImageMagick).
- Slot 8 water = authored near-black diffuse + `wgt01_water_d.txi` with the
  standard bumpyshiny template (`ttr01__env` / `shinywater`), **no `.mtr`**
  and no `.set` EnvMap dependency.
- Full provenance in `wgt01/textures/SOURCES.md`; palette check in
  `wgt01/textures/contact-sheet.png`.

## Risks

- Regrade recipe may need per-slot tweaks; keep overrides in the script, not
  hand-edited images.
- Internet pulls are network-dependent and need license capture at download
  time.
- Procampur's own redistribution license should be checked before the kit
  ships in a public `.hak`; fine for internal prototyping.
