{"id":"jellyfish","version":"1.0.0","title":"Jellyfish","summary":"Bioluminescent jellyfish pulsing and drifting through deep water, their tentacles trailing beads of light, shafts of light far above. Loops perfectly.","kind":"background","target":"three","collections":["backgrounds","hypnotic-loops"],"tags":["jellyfish","bioluminescence","underwater","deep sea","ocean","glow","calm","nature","fantasy","loop","background"],"loopable":true,"motion":"procedural","durationSeconds":12,"status":"published","media":{"poster":"https://aipixelwizard.com/media/jellyfish/1.0.0/poster.webp","preview":"https://aipixelwizard.com/media/jellyfish/1.0.0/preview.mp4","sample":"https://aipixelwizard.com/media/jellyfish/1.0.0/sample.mp4","sampleBytes":8908592,"sampleNote":"Pre-rendered with the default settings. Customised settings must be exported locally (npm run render)."},"urls":{"page":"https://aipixelwizard.com/visuals/jellyfish","manifest":"https://aipixelwizard.com/api/v1/visuals/jellyfish/versions/1.0.0","agentMd":"https://aipixelwizard.com/registry/jellyfish/1.0.0/agent.md","files":"https://aipixelwizard.com/registry/jellyfish/1.0.0/","demo":"https://aipixelwizard.com/registry/jellyfish/1.0.0/index.html"},"description":"Translucent jellyfish with scalloped bells ribbed by radial canals and a glowing ring inside, pulsing in sharp squeezes and long rests, long tentacles with waves running down them and beads of light travelling along, frilly oral arms, marine snow falling through the water and shafts of light from far above. They drift on slow loops at different depths, the nearer ones bigger and brighter, the far ones fading into the blue, while the camera sways a little. Choose the colours (deep blue, violet, aqua, warm or a mix), how many jellyfish, their size, how fast they pulse, how many tentacles, the marine snow, the light from above and the glow.","role":"Background (WebGL, full frame): a calm, glowing underwater scene for wellness, sleep, nature and fantasy content.","useCases":["A calming backdrop for meditation, sleep and wellness videos","An underwater or ocean documentary title scene","A fantasy or game environment"],"synonyms":["jellyfish animation","sea jelly","medusa","ocean background","underwater loop","glowing jellyfish","deep sea creatures","aquarium"],"digest":"92909ee711deba84d5b321c4a9acf6494bb6ccc21d6cfae51a9274a91a67fc05","implementation":{"target":"three","runtime":"browser","language":"javascript","module":"esm","entry":"src/jellyfish.js","exports":[{"name":"createJellyfish","signature":"createJellyfish({ palette?, count?, size?, pulse?, tentacles?, snow?, shafts?, glow?, seed?, aspect? }) => { scene, camera, swarm, setSize(width, height), update(time, loopSeconds), dispose() }","description":"The whole sea: bells, tentacles, marine snow and the water in one scene. Render it with its camera, ideally through createBloomPass."},{"name":"createBloomPass","signature":"createBloomPass(renderer, { width, height, glow?, exposure?, grain? }) => { render(scene, camera, output?), dispose() }","description":"A small bloom with filmic tone mapping: draws a scene to the canvas with its glow."},{"name":"planSwarm","signature":"planSwarm({ count?, size?, pulse?, palette?, seed?, aspect? }) => [{ position, scale, pulses, phase, tilt, orbit, seed, palette }]","description":"Where each jellyfish drifts and how it pulses."},{"name":"PALETTES","signature":"PALETTES: { blue, violet, aqua, warm }","description":"Colours of a jellyfish: its body, its glow and its rim light."}],"reusable":["src/jellyfish.js"],"demo":"demo.js","harness":"index.html"},"dependencies":[{"id":"three","version":"0.185.1","scope":"source","reason":"Renderer, instanced bells and ribbons, and the bloom targets."},{"id":"apw-runtime","version":"1.0.0","scope":"demo","reason":"Demo harness."}],"uses":[],"usedBy":[],"params":[{"key":"palette","label":"Colours","type":"select","default":"blue","options":[{"value":"blue","label":"Deep blue"},{"value":"violet","label":"Violet"},{"value":"aqua","label":"Aqua"},{"value":"warm","label":"Warm"},{"value":"mixed","label":"Mixed"}]},{"key":"count","label":"Jellyfish","type":"integer","min":1,"max":8,"step":1,"default":5},{"key":"size","label":"Size","type":"number","min":0.7,"max":1.4,"step":0.05,"default":1},{"key":"pulse","label":"Pulses per loop","type":"integer","min":3,"max":9,"step":1,"default":6},{"key":"tentacles","label":"Tentacles","type":"integer","min":6,"max":28,"step":1,"default":16},{"key":"snow","label":"Marine snow","type":"number","min":0,"max":1.5,"step":0.05,"default":1},{"key":"shafts","label":"Light from above","type":"number","min":0,"max":1.5,"step":0.05,"default":1},{"key":"glow","label":"Glow","type":"number","min":0.6,"max":1.6,"step":0.05,"default":1},{"key":"seed","label":"Seed","type":"integer","min":1,"max":999,"step":1,"default":6}],"presets":[{"id":"default","label":"Deep blue drift","params":{}},{"id":"violet","label":"Violet bloom","params":{"palette":"violet","count":4,"size":1.1,"pulse":5,"tentacles":20,"shafts":0.6,"seed":11}},{"id":"swarm","label":"Rainbow swarm","params":{"palette":"mixed","count":7,"size":0.85,"pulse":7,"snow":1.2,"seed":4}},{"id":"warm","label":"Warm abyss","params":{"palette":"warm","count":3,"size":1.2,"pulse":5,"shafts":0.3,"glow":1.2,"seed":19}}],"output":{"width":1080,"height":1080,"fps":30,"durationSeconds":12,"posterSeconds":3,"alpha":false,"motion":"procedural","loop":{"seamless":true,"cycleSeconds":12,"method":"Every jellyfish pulses a whole number of times per loop; the waves in the tentacles and the beads of light run a whole number of times down them; each jellyfish drifts on a loop of one cycle; the marine snow is a field that repeats every slab and falls one slab per loop; the camera sways in a sine of the loop, so the last frame meets the first."},"seed":{"param":"seed","behavior":"Seed places the jellyfish, their phases, tentacle lengths and the marine snow: same seed, same swarm."}},"composition":{"inputs":"Time within the loop; the colours, number and size of jellyfish, pulse rate, tentacles, snow, light shafts and glow.","outputs":"A full frame: a backdrop of water and light, then bells, tentacles and marine snow drawn additively.","coordinates":"Perspective, 38° field of view, the camera 7.5 units from the origin; the jellyfish drift between z = -4.5 and z = 0.5.","lighting":"Self-lit: every surface glows (a rim light that grows with the angle, canals, a ring of organs); distance dims them into the blue.","timing":"update(time, loopSeconds) sets the loop time; every position is a closed-form function of it, so frames render in any order.","compatibleWith":["kinetic-title","number-reveal"],"notes":["The bell is a surface of revolution drawn in the vertex shader from a grid of (down the dome, round it), outside and in, squeezed by a contraction pow(0.5 + 0.5 sin φ, 2.4): sharp, then a long rest.","Tentacles are ribbons of 26 pieces of constant pixel width, thinner at the tip; beads of light are bumps that run down them."]},"reuse":["Sleep or meditation loop: Deep blue drift, slow.","Ocean documentary title: Rainbow swarm with a kinetic title.","Fantasy scene: Warm abyss."],"integration":{"newProject":"Create a WebGLRenderer, createJellyfish({ aspect }) and createBloomPass(renderer, { width, height }); call sea.setSize(width, height), then each frame sea.update(time, loopSeconds) and bloom.render(sea.scene, sea.camera).","existingProject":"Copy src/jellyfish.js; render sea.scene with sea.camera into a render target (or through the bloom pass) as a backdrop or an overlay."},"performance":{"notes":"Up to eight bells of about 6,000 vertices and some 250 ribbons, a few hundred points of snow, all positioned in vertex shaders, plus a small bloom. About 18 ms a frame at 1080p on an integrated Intel GPU.","limits":"At most eight jellyfish with up to 28 tentacles each."},"limitations":["Everything is drawn additively, so the jellyfish are all glow with no solid body; they cannot pass in front of a bright background.","The bells are shells with no internal organs other than a ring and canals."],"license":{"spdx":"MIT","notice":"Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.","thirdParty":[{"name":"three.js","version":"0.185.1","license":"MIT","url":"https://github.com/mrdoob/three.js"}]},"rights":{"approvedForPublicRelease":true},"provenance":"Adapted from the owner's threejs-sketches/nature-organic/bioluminescent-jellyfish (with webgpu-jellyfish-bloom, MIT) and rebuilt for AI Pixel Wizard in October 2026 as an original scene: a bell drawn from a surface of revolution in the vertex shader, pixel-width tentacle ribbons with travelling waves and beads of light, marine snow, shafts of light, an exact loop and the frame/time contract.","changelog":[{"version":"1.0.0","date":"2026-10-05","notes":"Initial release."}],"verification":{"testedOn":"2026-10-06","inputs":{"jellyfish@1.0.0":"92909ee711deba84d5b321c4a9acf6494bb6ccc21d6cfae51a9274a91a67fc05","three@0.185.1":"664ca387e5fab46ff2daaa6895e1d015426850891af5ea5082cbbcc3985b068c","apw-runtime@1.0.0":"5be859cdac74823ba0bcc32c6daf06688a871104d24db5d4ceaffffd84d7c40d"},"environment":"Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0","renderer":"WebGL 2 via SwiftShader (software)","width":1080,"height":1080,"fps":30,"frames":360,"renderSeconds":1700.8,"loopCheck":{"checked":true,"seamless":true,"maxDifference":0,"note":"Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255."},"determinism":{"checked":true,"identical":true},"errors":[],"media":{"poster":"/media/jellyfish/1.0.0/poster.webp","preview":"/media/jellyfish/1.0.0/preview.mp4","sample":"/media/jellyfish/1.0.0/sample.mp4","sampleBytes":8908592}},"files":[{"path":"LICENSE","size":1072,"sha256":"8a5f3a96f07e11522ec4bdd0a583356f99bad1245920f9709cee09b995a45153","contentType":"text/plain; charset=utf-8","url":"https://aipixelwizard.com/registry/jellyfish/1.0.0/LICENSE"},{"path":"asset.json","size":10121,"sha256":"0b2b699ad260a3a1bb144525dff3ea8bc1cd7c7f9679187024ac5fe1539961b4","contentType":"application/json; charset=utf-8","url":"https://aipixelwizard.com/registry/jellyfish/1.0.0/asset.json"},{"path":"demo.js","size":1163,"sha256":"6e5686f4041ead8db3b187637c087bc97f0ad23686aa302c7760553f8e26f741","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/jellyfish/1.0.0/demo.js"},{"path":"index.html","size":523,"sha256":"db0cb5608bce1924858eaa2283098044ffead4f06e30918fb72ff35508021646","contentType":"text/html; charset=utf-8","url":"https://aipixelwizard.com/registry/jellyfish/1.0.0/index.html"},{"path":"src/jellyfish.js","size":27453,"sha256":"ad7c642ce02ca4f67f89b99b7d3d4b2707fa3d22638ddcd3e75079b503ae3170","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/jellyfish/1.0.0/src/jellyfish.js"}],"warnings":[]}