Skip to content

feat(registry): seven more WebGPU shader backgrounds, from sun burst to color wheel - #5341

Merged
miguel-heygen merged 1 commit into
mainfrom
feat/registry-shaders-group3
Oct 9, 2026
Merged

miguel-heygen merged 1 commit into
mainfrom
feat/registry-shaders-group3

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

What

Seven more 2-second WebGPU background blocks from the MIT Shaders library (shaders@4.0.0), used with their default settings: Sun Burst, Spiral, Plastic, Chrome Orb, Hologram, Heatmap and Color Wheel. Same shape as #5191's blocks: tagged webgpu and webgpu-shader, data-requires-webgpu, preview video, no poster.

How

  • Each block is godrays.html with its composition id and data-shader changed, and a registry-item.json with its own name, title, description, tags and preview.
  • lib/ holds byte copies of the shared bundle and its licence file from feat(registry): eight more WebGPU shader backgrounds and a bundle with thirty new shaders #5191; this PR does not change the bundle.
  • The Chrome shader's block is chrome-orb: .gitignore ignores every folder named chrome/ (Chrome for Testing downloads), so a block folder by that name could never be committed.

Verification

  • Seek order and motion. For all seven, t = 1.5 s is pixel-identical when reached from 0, from 1.9 s, or in steps, and frames at 1.0 and 1.75 s differ.
  • hyperframes check passes on each block.
  • Previews. hyperframes render of each block on a GPU at 24 fps, encoded like scripts/generate-catalog-previews.ts (1280 wide, H.264 CRF 28), uploaded to the docs CDN under new names; each URL serves the uploaded bytes.
  • Every bundle copy matches the shared one, every data-shader names a shader in it, and every block installs the licence file (the checks registryBlocks.test.ts runs in CI). oxfmt --check passes. The PR changes only the seven block folders.

Limits

Same as #5138: one shader block per page, the shader runs on the film's time, and a host without a GPU renders these only with the software WebGPU opt-in. Plastic moves slowly with its default settings: its surface ripples, but it reads close to a still orb.

Frames from the uploaded previews at 0.25, 1.0 and 1.75 s:

Frames from the seven uploaded previews at 0.25, 1.0 and 1.75 s

@miguel-heygen
miguel-heygen marked this pull request as ready for review October 9, 2026 16:35

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve at ee59c3b0. All seven blocks follow the #5191/#5192 template exactly, the bundle and licence are byte copies, and required CI is green.

Checked

  • Scope: the diff is 28 added files, all inside the seven block folders. The bundle, its build script and the tests are untouched.
  • HTML: each file differs from godrays.html in exactly three lines: the composition id in the CSS and on the div, and data-shader. data-requires-webgpu is kept.
  • registry-item.json: it matches aurora's apart from title, description and tags. It has the same file targets and licence field, and the same preview-video-only shape with no poster. Every block is tagged webgpu and webgpu-shader.
  • Names: there are no collisions with existing blocks, components, examples or registry.json entries on current main. .gitignore's chrome/ line does ignore registry/blocks/chrome/, so chrome-orb is the right call.
  • Bundle and licence:
    • All seven lib/ copies are byte-identical to the shared copies (matching sha256), and they carry the shaders 4.0.0 MIT notice.
    • Each data-shader names a shader in the bundle and in the build script's list.
  • Previews: all seven preview URLs return 200 video/mp4.
  • Render cost: the shader graphs are unrolled into fixed-length shaders, so there are no unbounded loops and no oversized targets.
    • Measured at 1920x1080 in headless Chrome with software WebGPU, these come in at about 30-300 ms per frame. That range sits inside the range of the merged blocks: godrays is about 58 ms and nebula about 2100 ms.
    • Plastic and Heatmap are the heaviest here, at about 300 ms.

Notes

  • None of the new blocks are in registry/registry.json yet, so hyperframes add sun-burst reports "not found in registry" (packages/cli/src/registry/resolver.ts:132). The merged #5191/#5192 blocks have the same gap, and the first six became installable only through a later catalog PR. That doesn't block this PR, but a catalog follow-up is needed before these are installable.
  • hologram here and holographic from #5192 are different shaders with near-identical names, both orbs on black. That's a findability point only.
  • Heatmap's description says "Thermal colours", but the default render is magenta, purple and blue rather than a red-to-yellow heat palette.

Tests: registryBlocks.test.ts passes 5/5, and oxfmt --check passes on the 14 changed files. CI: 38 checks pass and the rest are skipped by path filters; nothing failed or is pending.

— Rames

@miguel-heygen
miguel-heygen added this pull request to the merge queue Oct 9, 2026
Merged via the queue into main with commit b059600 Oct 9, 2026
142 checks passed
@miguel-heygen
miguel-heygen deleted the feat/registry-shaders-group3 branch October 9, 2026 16:58
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.

2 participants