Repository navigation
feat: DatamoshEffect heal params + Datamosh Scroll demo - #215
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
|
🚀 Cloudflare Pages preview — 877e562 This branch URL stays the same across pushes. Latest deploy: https://a3f8e58c.vfx-js.pages.dev |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
…Scroll" Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
…Scroll Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
… Scroll Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Storybook pane binds only healRate for healing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Datamosh Scroll drives healRate itself and binds its slider to healRate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Keeps the old scene's picture moving with the new scene's motion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Removes leadMs; the mosh only needs one frame of the old scene. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Hold 1s with healRate 0, then heal and fade chroma over 0.5s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Leaves 1% of blocks moshed at the end of the heal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Also set blockSize back to 32 and start the hold clock on enable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
- Preload videos and swap only once the new video has a frame. - Cut parallax so it stays inside the 10% cover margin. - Size the canvas from its own box so mobile URL bar changes don't stretch it. - Fix stale datamosh header comment about clean refresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Blocks heal one by one at exactly healRate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Headings are always moshed; moshText also draws the magazine text into the canvas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Only the shown section's heading is drawn; it swaps with the video. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
The scroll-synced canvas lagged the page scroll, so pinned headings shook. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
… Scroll Only the shown section's text is visible; it swaps with the video. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
…Scroll Drop the rulers and scroll progress too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
…Scroll Draw the shown heading on a plain canvas above the GL canvas. Copy it into the moshed canvas only while moshing, so the old one smears. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Pexels clips re-encoded to 1080p 24fps VP9: 35MB to 17MB in total. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018attAihospyjqebPaUwNkn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Let the datamosh heal block by block like a real codec, and add a scroll site demo that uses it.
Changes
DatamoshEffecthealRate(default 0): chance per block per frame to refresh from the clean frame.healThreshold(default 1 = off): refresh blocks whose best motion match is worse than this.holdMs, then rampshealRateand fades chroma gain back to 1 overhealMs, then disables the effect.