Skip to content

feat: two more smoke-gated examples — bmesh-gear and shader-node-group#47

Merged
TMHSDigital merged 1 commit into
mainfrom
feat/examples-gear-nodegroup
Jul 3, 2026
Merged

feat: two more smoke-gated examples — bmesh-gear and shader-node-group#47
TMHSDigital merged 1 commit into
mainfrom
feat/examples-gear-nodegroup

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Examples grow 6 → 8, filling the two biggest coverage gaps: bmesh as a subject, and shader node groups.

  • bmesh-gear — a 14-tooth parametric gear built purely with bmesh, bm.free() in try/finally per the always-free-bmesh rule. The check asserts closed-form topology (verts = 2×(4×teeth), faces = sides+2 caps, edges = 3×profile) and watertightness (every edge borders exactly 2 faces) — leaked geometry or an unclosed face fails the math.
  • shader-node-group — a TintedGloss group declared via tree.interface.new_socket, instanced in two materials. Asserts interface sockets exist, the group datablock is shared (users == 2), and instance Tint values differ. The render IS the witness: two spheres, one group, two colors.
  • Renders follow the gallery's one-accent-per-example system (machined steel; teal + magenta) — both iterated against screenshots before committing (gear reframed once for silhouette, once for metal exposure).
  • Full wiring: smoke steps, READMEs, gallery.json (+bmesh/node-groups chips), CI-gated manifest, README gallery rows, regenerated pages.

Testing

Both correctness checks pass headless on Blender 5.1.1 and 4.4.3 (CI gates 4.5 LTS); manifest↔disk check passes (8 examples); gallery rebuilt with 8 detail pages.

🤖 Generated with Claude Code

bmesh-gear witnesses the bmesh ownership contract as its subject: a
14-tooth parametric gear (profile ring, face, extrude_face_region) with
bm.free() in a try/finally. Because construction is parametric the
check asserts closed-form topology — verts 2x(4xteeth), faces sides+2,
edges 3xprofile — and watertightness (every edge borders exactly two
faces).

shader-node-group witnesses the node-group contract: a TintedGloss
group declared via tree.interface.new_socket (the 4.x/5.x interface
API), instanced in two materials. Asserts the interface sockets exist,
the group datablock is shared (users == 2), and the per-instance Tint
values differ — the render is the proof: two spheres, one group, two
colors (teal and magenta, extending the gallery's one-accent-per-render
system; the gear is machined steel).

Both verified headless on Blender 5.1.1 and 4.4.3 and wired into the
smoke workflow for 4.5 LTS + 5.1, with READMEs, hero/preview renders
from each example's own --output path, gallery + manifest + README
rows. Gallery grows to 8.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation ci labels Jul 3, 2026
@TMHSDigital TMHSDigital merged commit 869f600 into main Jul 3, 2026
9 checks passed
@TMHSDigital TMHSDigital deleted the feat/examples-gear-nodegroup branch July 3, 2026 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant