Skip to content

feat: add stone-well and wooden-barrel showcase pieces - #151

Merged
TMHSDigital merged 2 commits into
mainfrom
feat/showcase-stone-well-wooden-barrel
Sep 13, 2026
Merged

TMHSDigital merged 2 commits into
mainfrom
feat/showcase-stone-well-wooden-barrel

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Two more budget-conformance props so showcase/ is a category, not a crate plus a one-off. stone-well then wooden-barrel, in backlog order. One commit per piece, both -s.

Squash-merge subject should stay feat: (minor bump).

Type

  • feat — new skill / rule / snippet / template / example (minor bump)

Binaries — live-run-proven

Binary Reports
.scratch/blender-4.5.11-windows-x64/blender.exe Blender 4.5.11 LTS hash 4db51e9d1e1e
.scratch/blender-5.1.2-windows-x64/blender.exe Blender 5.1.2 hash ec6e62d40fa9
.scratch/blender-5.2.1-windows-x64/blender.exe Blender 5.2.1 LTS hash 9e2066aef7ef

stone-well (commit 2be74b3)

Procedural running-bond brick well, curb, four posts, shingled pyramid roof, windlass, rope, bucket. Three materials. Pipeline: unique-cell UVs, Cycles cage bake 256² samples=1, LOD COLLAPSE, convex hull, Unity glTF (export_yup, export_apply).

Composes skills mesh-editing-and-bmesh, bake-high-to-low, depsgraph-and-evaluated-data, engine-export-presets and snippets bake_normal_high_to_low.py, setup_bake_target_image.py, lod_chain.py / decimate_to_budget.py, convex_hull_collider.py, export_preset_unity.py (copied, not imported as a package).

Declared vs measured — live-run-proven

Axis Declared 4.5.11 5.1.2 5.2.1
Base tris 8280–8500 8388 8388 8388
LOD1 ratio 0.32–0.62 0.5000 (4194) 0.5000 0.5000
LOD2 ratio 0.10–0.35 0.2198 (1844) 0.2198 0.2198
Materials 3 distinct 3 3 3
UVs [0,1], overlap ≤ 1e-5 in range, 0 in range, 0 in range, 0
Outer AABB m (1.640, 1.640, 1.688) ± 0.01 match, zmin 0 match match
Collider tris ≤ 260 230 230 230
Export bytes > 0 601028 601092 601372

Two consecutive 5.2.1 defaults printed identical 8388 / 4194 / 1844 and 601372 bytes.

Default and falsifier exits — live-run-proven

4.5.11 5.1.2 5.2.1
default 0 0 0
--skip-decimate 9 9 9

Named budget: LOD1 ratio (1.0000 not in [0.32, 0.62]). Bands that pass all three fail the falsifier.

--output on 5.2.1, no deviation=: framing_fill y=0.828 in 0.70–0.90, margins ≥ 0.033, framing_ok. live-run-proven.

wooden-barrel (commit 7138e8d)

Procedural bulged staves, four iron hoops, lid heads. Two materials (88 hoop faces tagged metal). Same pipeline.

Same composed skills and snippets as the well (copied, not imported).

Declared vs measured — live-run-proven

Axis Declared 4.5.11 5.1.2 5.2.1
Base tris 4200–4450 4312 4312 4312
LOD1 ratio 0.32–0.62 0.5000 (2156) 0.5000 0.5000
LOD2 ratio 0.10–0.35 0.2199 (948) 0.2199 0.2199
Materials 2 distinct, ≥16 hoop faces 2 / 88 2 / 88 2 / 88
UVs [0,1], overlap ≤ 1e-5 in range, 0 in range, 0 in range, 0
Outer AABB m (0.719, 0.719, 0.880) ± 0.01 match, zmin 0 match match
Collider tris ≤ 400 372 372 372
Export bytes > 0 327564 327564 327556

Two consecutive 5.2.1 defaults printed identical 4312 / 2156 / 948 and 327556 bytes.

Mesh.materials.clear() zeros polygon material_index on these binaries; hoop faces are tagged on the bmesh then slots are appended without clear. live-run-proven (mat_index_counts={1: 88, 0: 1980} after the fix; {0: 2068} before).

Default and falsifier exits — live-run-proven

4.5.11 5.1.2 5.2.1
default 0 0 0
--skip-decimate 9 9 9

Named budget: LOD1 ratio (1.0000 not in [0.32, 0.62]).

--output on 5.2.1, no deviation=: framing_fill y=0.811 in 0.70–0.90, margins ≥ 0.061, framing_ok. live-run-proven.

DECIMATE COLLAPSE is the named cross-series non-match on both pieces — ratio band, not exact count. These two meshes happened to match across 4.5.11 / 5.1.2 / 5.2.1. Bake pixels are stochastic — FINISHED + has_data. No RNG.

Added smoke wall-clock — live-run-proven

Check-only (what CI runs).

Piece 4.5.11 (s) 5.1.2 (s) 5.2.1 (s)
stone-well (this session) 7.30 3.82 4.05
wooden-barrel (warm) 2.40 1.58 1.75

Cumulative showcase (crate from #148 + these two): ~17 s / ~13 s / ~11 s per series on first/warm mixed runs. Well under ~90 s. Keep on the default PR smoke path.

blender-smoke.yml unchanged.

Inspection-only

  • Generated gallery HTML: card alts are the full first sentence; data-tags includes showcase; witnesses callouts match gallery.json.
  • Contact-sheet / asset-sheet composites were not committed. showcase/README.md requires framing + still, not those example-run gates.
  • use_nodes deprecation warning on 5.2 — same as existing examples; not addressed here.
  • Release-owned fields untouched (VERSION, CHANGELOG.md, CLAUDE.md **Version:**, ROADMAP.md **Current:**, plugin.json "version").

Checklist

  • Explicit paths only. CLAUDE.md count line is a deliberate edit.
  • README 3 showcase pieces (examples stay 59).
  • Manifest showcase lists crate, well, barrel. Version line untouched.
  • showcase/gallery.json, catalog rows, README previews, hero/preview webp, python scripts/build_gallery.py, framing gate.
  • Falsifier --skip-decimate → exit 9 on all three binaries, both pieces.
  • DCO on every commit.
  • No credentials.

Test plan

  • Default + --skip-decimate on 4.5.11, 5.1.2, 5.2.1 for both pieces.
  • --output still + framing on 5.2.1 for both.
  • Two consecutive 5.2.1 defaults identical per piece.
  • CI: Validate, drift-check, Blender 5.2 smoke, Blender 4.5 smoke, Blender 5.1 smoke (needs-5.1 via REST). Socket Security pending as usual.

TMHSDigital and others added 2 commits September 13, 2026 14:33
Showcase needs more than one budget-gated prop so the category is not a singleton.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
A staved barrel is the next budget-gated prop so showcase coverage is more than a well and a crate.

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 13, 2026
@TMHSDigital TMHSDigital added the needs-5.1 Opt-in Blender 5.1 smoke on this PR. Default matrix stays 4.5 + 5.2. Auto-label will not apply this. label Sep 13, 2026
@TMHSDigital
TMHSDigital merged commit 44d7c40 into main Sep 13, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the feat/showcase-stone-well-wooden-barrel branch September 13, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-5.1 Opt-in Blender 5.1 smoke on this PR. Default matrix stays 4.5 + 5.2. Auto-label will not apply this.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant