Skip to content

feat: add dandelion example, remove snow globe - #37

Merged
blazejkustra merged 3 commits into
mainfrom
feat/dandelion
Sep 14, 2026
Merged

blazejkustra merged 3 commits into
mainfrom
feat/dandelion

Conversation

@blazejkustra

Copy link
Copy Markdown
Owner

Problem

The snow globe read as a drawn demo rather than a real object and was cut. The next issue #31 idea, dandelion, needed to be built on a photograph so it does not repeat that.

Approach

Remove the snow globe. Add a dandelion on a Wikimedia macro photo (CC BY 2.5) packed into a three-panel atlas; the shader only lifts and drifts the photo's own tufts on mic breath, with tap to regrow.

Tests

  • Simulator (iPhone 17 Pro) via __dandelionBlow: gentle puff thins the rim, held breath strips the head to a bald receptacle; tap-to-regrow by touch; hooks removed on Back.
  • Atlas rebuild from assets/dandelion/tools/ is byte-identical; WGSL naga-clean; yarn lint and yarn typecheck pass.
  • Not verified: real mic gains (sim mic is silent), Android, GPU frame time on a device.

Screenshots

It never got past looking like a noise field with a house in it, and
another pass was not going to change that. Drop the screen, hook,
shader and card so the home list only shows effects worth showing.

Claude-Session: https://claude.ai/code/session_01MYgJDumHFGETXWCh37fS7V
Blow on the phone and the seeds lift off a photographed seed head and
drift away on the breath; tap to grow it back.

The object is a real photo (Taraxacum seedhead by Marie-Lan Nguyen,
CC BY 2.5, Wikimedia Commons), packed into a three-panel atlas: the
photo, the same frame with the head inpainted away down to the
receptacle, and a mask panel with the head disc and a hair matte. The
shader only does the disturbance: tufts are the photo's own pixels
through the matte, split into two classes on different wind fields so
they separate instead of flying as one copy.

Breath energy accumulates as push squared, so a gentle puff thins the
rim and a held breath strips the head. The release front sweeps in
small waves at a fixed rate so neighbouring cells go ~10 ms apart and
the fragment gather never tears. Detached seeds do not return.

The atlas pipeline (Vision mask, ImageMagick inpaint) is in
assets/dandelion/tools. __dandelionBlow/__dandelionReset/__dandelionState
are exposed in dev builds so the simulator, whose mic is silent, can
drive it.

Claude-Session: https://claude.ai/code/session_01MYgJDumHFGETXWCh37fS7V
The release order's first slice covered only the bare fringe, so a
light breath banked energy but stripped nothing visible, and energy
below one wave never released at all. Cells are now ordered ring-first
over tuft-bearing cells only, and banked energy releases when the
breath stops.

Tufts read as white specks; larger cells with a luma-gated matte read
as parachutes, and their travel runs on the band clock so the stagger
only gates appearance instead of slicing at cell boundaries. The
receptacle was the photo centre pasted at full size, a dandelion in
miniature; it is now blurred, shrunk and dome-shaded. Dark blotches
around the head during a strip came from inpaint-vs-bokeh tone under a
ragged front, so the cross-fade is wider and the lean falls off
smoothly instead of following the Vision mask's jagged edge.

Thumbnail recaptured from the final build.

Claude-Session: https://claude.ai/code/session_01MYgJDumHFGETXWCh37fS7V
@blazejkustra
blazejkustra merged commit 58b00c0 into main Sep 14, 2026
2 checks passed
@blazejkustra
blazejkustra deleted the feat/dandelion branch September 14, 2026 13:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant