Skip to content

Backfill contact sheets (26) and asset sheets (28) for existing showcase pieces #202

Closed

Description

@TMHSDigital

What

showcase/README.md now requires a contact sheet and an asset sheet for every showcase piece, each on its own recorded evidence. The 28 pieces already in the tree predate that rule.

Gate Conformant Non-conformant
Contact sheet 2 — crate-stack, stone-archway 26
Asset sheet 0 28

Why the rule exists

Contact sheets — the first sheets built for crate-stack and stone-archway showed both wedge pools reading as cool grey bands rather than the warm pool the house style calls for. Both pieces were relit as a direct result. Nothing else in the pipeline puts a still beside its peers, so nothing else could have caught it.

Asset sheets — showcase is entirely game props, which is exactly the scope docs/VISUAL-STYLE.md § Asset quality names. Budgets measure geometry conformance; the contact sheet measures staged presentation; neither removes the scene, and a strong scene carries a weak model. The evidence recorded in that file is socket-attach-points, which passed every measurable floor on its first draft — edge90 0.000, ten materials, no default datablock names — and was still judged bad by eye and rebuilt from scratch. "The floors scored the bevels, not the design."

Scope of the backlog

Contact sheets are cheap: compositing an existing committed hero beside the pinned calibration set needs no re-render. 26 sheets, mechanical.

Asset sheets are not. Each needs the hero re-rendered alone — neutral three-quarter view, plain studio lighting, no staging tricks — and the four pinned reference assets rendered the same way. None of the 28 showcase scripts has a neutral-render mode; they all build the full staged scene in render_still. Retrofitting means either a --neutral flag across 28 scripts or a separate harness that imports each piece's builder and stages it plainly.

Blocked on #200

Do not generate contact sheets from the committed heroes until #200 is resolved. Those heroes are measurably not what the scripts render today — four of five pieces sampled drift 10–22 % of pixels, with the committed file systematically brighter. A contact sheet built from a drifted hero would calibrate against the wrong image, and the calibration band itself (damped-track-aim 0.1722 … bmesh-gear 0.3048) may be measured off drifted files.

Sequence: settle #200, regenerate the stills, then build the 26 contact sheets against known-good images.

Suggested order

  1. Resolve Committed hero stills do not match what the scripts render #200 so the stills are trustworthy.
  2. Contact sheets for the 26, in batches, reporting the per-criterion verdicts the convention asks for. Expect some to fail and need relighting — that is the gate working, and it is the same fix crate-stack and stone-archway needed.
  3. Decide the neutral-render mechanism for asset sheets, then work through the 28.

Steps 2 and 3 are quality-pass work, not a single PR.

Activity

  1. added
    documentationImprovements or additions to documentation
    content-integrityValidation that shipped content matches reality
    on Sep 22, 2026
  2. TMHSDigital commented on Sep 23, 2026

    @TMHSDigital
    OwnerAuthor

    Status update: the #200 sweep partly unblocks this

    The full drift sweep (posted on #200, tool in #218) sorts the 28 showcase heroes, compared against the fresh render re-encoded at webp q90:

    • 14 match the code (≤ 1.8%): stone-well, wooden-barrel, market-stall, street-lantern, watchtower, cart, water-trough, hitching-post, chopping-block, wooden-bucket, wooden-ladder, hay-bale, crate-stack, stone-archway.
    • 14 have drifted (≥ 3.8%): shipping-crate, campfire, treasure-chest, terrain-scatter, fence-kit, park-bench, wheelbarrow, anvil, grindstone, hand-pump, signpost, wall-torch, tavern-stool, iron-cauldron.

    Counts have moved since this was opened

    docs/gallery/contact-sheets/ now holds sheets for 6 showcase pieces: cart, chopping-block, crate-stack, hay-bale, stone-archway, stone-well. All six are in the matching group.

    What is unblocked now

    Contact sheets for the 8 matching pieces without one: wooden-barrel, market-stall, street-lantern, watchtower, water-trough, hitching-post, wooden-bucket, wooden-ladder. Their committed heroes are what the code renders, so calibrating against them is sound.

    Still blocked on #200

    The 14 drifted pieces need their stills regenerated first.

    One thing to recheck

    The contact-sheet calibration band itself shifts. damped-track-aim (the low end) renders at mean luma 0.1510 from code versus 0.1721 as committed, so sheets should compare against fresh renders of the calibration set, not the committed files.

  3. TMHSDigital commented on Sep 23, 2026

    @TMHSDigital
    OwnerAuthor

    Contact sheets: done for all 28 showcase pieces (#225)

    Remaining here: asset sheets (0/28)

    Still needs a neutral-render mode (plain three-quarter view, studio light, no staging) across the 28 showcase scripts, or a harness that imports each builder and stages it plainly. The four reference assets need rendering the same way. Leaving this issue open for that step.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    content-integrityValidation that shipped content matches realitydocumentationImprovements or additions to documentation

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions