{"id":"linocut-whale","version":"1.0.0","title":"The Whale Carries the Night","summary":"A humpback swims through a night sea carrying a crescent moon and four tiny houses whose windows light one by one, then breathes out a fountain of stars. Black-and-ivory linocut.","kind":"background","target":"three","collections":["impossible-worlds"],"tags":["linocut","whale","night","moon","stars","village","print","black and white","ink","poster","ocean","sea","fantasy","animal","portrait film"],"loopable":false,"motion":"procedural","durationSeconds":8,"status":"published","media":{"poster":"https://aipixelwizard.com/media/linocut-whale/1.0.0/poster.webp","preview":"https://aipixelwizard.com/media/linocut-whale/1.0.0/preview.mp4","sample":"https://aipixelwizard.com/media/linocut-whale/1.0.0/sample.mp4","sampleBytes":2849245,"sampleNote":"Pre-rendered with the default settings. Customised settings must be exported locally (npm run render)."},"urls":{"page":"https://aipixelwizard.com/visuals/linocut-whale","manifest":"https://aipixelwizard.com/api/v1/visuals/linocut-whale/versions/1.0.0","agentMd":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/agent.md","files":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/","demo":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/index.html"},"description":"A bold two-ink linocut poster in motion. A humpback with carved throat pleats, stippled bumps and a long pectoral fin swims over scalloped cloud-waves, carrying a crescent moon and a tiny village on its back. The windows of the four houses light in sequence, the flukes flex, and the whale breathes out a rising fountain of new stars into the night. It ends with every window lit and the fountain at full height. The film has no settings.","role":"Shader film (three.js): Black and ivory linocut, a finished 8-second portrait film with no settings.","useCases":["A bedtime-story or lullaby video","A children's book trailer","A moody poster-style title backdrop"],"synonyms":["whale animation","linocut animation","whale carrying the moon","bedtime story animation","night sea whale","woodcut whale"],"digest":"bdc4f0535e6ee18fd44d9fbb6052e3c264aa30807f50d1fb5c958135158bf3c7","implementation":{"target":"three","runtime":"browser","language":"javascript","module":"esm","entry":"src/linocut-whale.js","exports":[{"name":"createLinocutWhale","signature":"createLinocutWhale() => { scene, camera, setSize(width, height), update(time), dispose() }","description":"The film as one full-screen shader; render its scene with its camera straight to the canvas."}],"reusable":["src/linocut-whale.js"],"demo":"demo.js","harness":"index.html"},"dependencies":[{"id":"three","version":"0.185.1","scope":"source","reason":"Renderer and a full-screen shader material."},{"id":"apw-runtime","version":"1.0.0","scope":"demo","reason":"Demo harness."}],"uses":[],"usedBy":[],"params":[],"presets":[],"output":{"width":1080,"height":1350,"fps":30,"durationSeconds":8,"posterSeconds":5.5,"alpha":false,"motion":"procedural","loop":{"seamless":false,"method":"A one-shot film: it builds to a finished picture that holds to the last frame, so the end does not return to the start."},"seed":null},"composition":{"inputs":"The time in seconds, 0 to 8. The film has no other settings.","outputs":"An opaque full-frame picture, already in display colours: render it straight to the canvas.","coordinates":"Composed for a 4:5 portrait frame and measured by the frame height: in a wider frame the picture stays centred at full height and its background fills the sides; in a narrower one, such as 9:16, the sides are cropped.","lighting":"None: two flat inks, ivory on black, with a hand-printed edge.","timing":"The windows of the four houses light in turn and the flukes flex; from about 4 s the whale breathes out a fountain of stars that keeps rising to the end.","compatibleWith":[],"notes":["Because windows and fountain build up and stay, the last frame is not the first; repeating the film cuts back to the dark windows.","The print border and paper grain are part of the frame.","Every pixel is a function of the time alone, so frames can be rendered in any order."]},"reuse":["Bedtime-story opener: the windows light up in order, which suits a slow narration.","Book trailer card: leave the moon-lit sky above the whale for the title.","Poster-style still: the last frame, with the full fountain of stars, makes a finished poster."],"integration":{"newProject":"Create a WebGLRenderer on a canvas (no antialiasing), call createLinocutWhale() once and film.setSize(width, height); then for each frame call film.update(timeInSeconds) and renderer.render(film.scene, film.camera).","existingProject":"Copy src/linocut-whale.js, which needs only three. Render film.scene with film.camera into your own canvas or render target; the output is opaque and already in display colours, so use no tone mapping or colour conversion."},"performance":{"notes":"One full-screen fragment shader. About 20 ms a frame at 1080 by 1350 on an integrated Intel GPU (Iris Xe), and about 2 to 4 s a frame with software WebGL.","limits":"Plays at 30 frames a second at full size on an integrated GPU."},"limitations":["The film is finished: it has no settings. To change colours or timing, edit the shader.","It is composed for a 4:5 portrait frame.","The end does not return to the start, so repeating it is a hard cut."],"license":{"spdx":"MIT","notice":"Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder.","thirdParty":[]},"rights":{"approvedForPublicRelease":true},"provenance":"From the owner's collection Twenty Impossible Worlds: the original GLSL ES 3.00 shader of the film “The Whale Carries the Night”, created with ChatGPT / Codex and used as published, wrapped for AI Pixel Wizard as a three.js full-screen shader in October 2026. The collection's synthesised soundtrack is not part of this ingredient.","changelog":[{"version":"1.0.0","date":"2026-10-10","notes":"Initial release."}],"verification":{"testedOn":"2026-10-10","inputs":{"linocut-whale@1.0.0":"bdc4f0535e6ee18fd44d9fbb6052e3c264aa30807f50d1fb5c958135158bf3c7","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":1350,"fps":30,"frames":240,"renderSeconds":940.2,"loopCheck":{"checked":false,"seamless":null,"maxDifference":null,"note":"Asset does not claim a seamless loop."},"determinism":{"checked":true,"identical":true},"errors":[],"media":{"poster":"/media/linocut-whale/1.0.0/poster.webp","preview":"/media/linocut-whale/1.0.0/preview.mp4","sample":"/media/linocut-whale/1.0.0/sample.mp4","sampleBytes":2849245}},"files":[{"path":"LICENSE","size":1072,"sha256":"8a5f3a96f07e11522ec4bdd0a583356f99bad1245920f9709cee09b995a45153","contentType":"text/plain; charset=utf-8","url":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/LICENSE"},{"path":"asset.json","size":5841,"sha256":"867bece4e11b05bea9649a78d8d30c91aa9cba560ff604c49ac18bc7af0e0783","contentType":"application/json; charset=utf-8","url":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/asset.json"},{"path":"demo.js","size":683,"sha256":"989c73259d13ec7b6af0ee4500ebf476373e70bb9c3939fa70c8aa711b974c70","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/demo.js"},{"path":"index.html","size":541,"sha256":"de6955d503042c5c39b2cc6de91b576da38d211b411c50f90c6daee230703236","contentType":"text/html; charset=utf-8","url":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/index.html"},{"path":"src/linocut-whale.js","size":10646,"sha256":"74adfac3ff35a654b617d994e22cf37d6ee93da30a2a0c22c911d1f451ec1c39","contentType":"text/javascript; charset=utf-8","url":"https://aipixelwizard.com/registry/linocut-whale/1.0.0/src/linocut-whale.js"}],"warnings":[]}