Skip to content
cccskills
FreePublished on GitHub

paper-shaders

Create animated backgrounds, graphic textures, and logo reveals for HyperFrames or Remotion videos with Paper Shaders. Apply brand colors and tested presets, then render frames deterministically so previews and final renders stay consistent.

OriginalShow the original description

Turns Paper Shaders (30 WebGL shaders: mesh and grain gradients, god rays, liquid metal, smoke ring, dithering, halftone, paper texture and more) into frame-exact backgrounds, textures and logo stings for HyperFrames or Remotion videos, in brand colors, with nine tested presets. Every frame is drawn from timeline time, so renders are seekable, parallel and repeatable, and spend no varg credits. Use when a video needs an animated shader background, a grain, dither, halftone or paper look on graphics or stills, or a logo reveal or sting. NOT for generating footage (use varg-ai), grading or film grain on real footage (HyperFrames media treatments), warping existing layers (HyperFrames data-vfx-chain), 3D scenes (a Three.js skill) or shaders for websites.

hashgraph-online/awesome-codex-plugins1,440 stars(GitHub 1,440 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Add an animated shader background to a video
  • Give still graphics a halftone or paper texture
  • Create a branded logo reveal
  • Render repeatable shader frames in Remotion

Files included (157)

  • SKILL.md10.3 KB
  • assets/paper-shaders.params.json34.2 KB
  • assets/presets/brand-mesh.json787 B
  • assets/presets/god-rays-reveal.json997 B
  • assets/presets/grain-blob.json809 B
  • assets/presets/halftone-overlay.json1.1 KB
  • assets/presets/liquid-metal-sting.json1015 B
  • assets/presets/paper-finish.json1.3 KB
  • assets/presets/paper/paper-color-panels-default.json923 B
  • assets/presets/paper/paper-color-panels-glass.json875 B
  • assets/presets/paper/paper-color-panels-gradient.json913 B
  • assets/presets/paper/paper-color-panels-opening.json831 B
  • assets/presets/paper/paper-dithering-bugs.json720 B
  • assets/presets/paper/paper-dithering-default.json730 B
  • assets/presets/paper/paper-dithering-ripple.json728 B
  • assets/presets/paper/paper-dithering-sine-wave.json735 B
  • assets/presets/paper/paper-dithering-swirl.json726 B
  • assets/presets/paper/paper-dithering-warp.json722 B
  • assets/presets/paper/paper-dot-grid-default.json827 B
  • assets/presets/paper/paper-dot-grid-tree-line.json835 B
  • assets/presets/paper/paper-dot-grid-triangles.json835 B
  • assets/presets/paper/paper-dot-grid-wallpaper.json834 B
  • assets/presets/paper/paper-dot-orbit-bubbles.json725 B
  • assets/presets/paper/paper-dot-orbit-default.json786 B
  • assets/presets/paper/paper-dot-orbit-hallucinatory.json741 B
  • assets/presets/paper/paper-dot-orbit-shine.json752 B
  • assets/presets/paper/paper-fluted-glass-abstract.json1.0 KB
  • assets/presets/paper/paper-fluted-glass-default.json1.0 KB
  • assets/presets/paper/paper-fluted-glass-folds.json1.0 KB
  • assets/presets/paper/paper-fluted-glass-waves.json1.0 KB
  • assets/presets/paper/paper-gem-smoke-default.json878 B
  • assets/presets/paper/paper-gem-smoke-fire.json886 B
  • assets/presets/paper/paper-gem-smoke-fluorescent.json902 B
  • assets/presets/paper/paper-gem-smoke-infrared.json929 B
  • assets/presets/paper/paper-god-rays-default.json850 B
  • assets/presets/paper/paper-god-rays-ether.json825 B
  • assets/presets/paper/paper-god-rays-linear.json834 B
  • assets/presets/paper/paper-god-rays-warp.json817 B
  • assets/presets/paper/paper-grain-gradient-blob.json773 B
  • assets/presets/paper/paper-grain-gradient-default.json802 B
  • assets/presets/paper/paper-grain-gradient-dots.json784 B
  • assets/presets/paper/paper-grain-gradient-ripple.json782 B
  • assets/presets/paper/paper-grain-gradient-truchet.json777 B
  • assets/presets/paper/paper-grain-gradient-wave.json770 B
  • assets/presets/paper/paper-halftone-cmyk-default.json1.0 KB
  • assets/presets/paper/paper-halftone-cmyk-drops.json1.0 KB
  • assets/presets/paper/paper-halftone-cmyk-newspaper.json1.0 KB
  • assets/presets/paper/paper-halftone-cmyk-vintage.json1.0 KB
  • assets/presets/paper/paper-halftone-dots-default.json885 B
  • assets/presets/paper/paper-halftone-dots-led-screen.json891 B
  • assets/presets/paper/paper-halftone-dots-mosaic.json877 B
  • assets/presets/paper/paper-halftone-dots-round-and-square.json910 B
  • assets/presets/paper/paper-heatmap-default.json851 B
  • assets/presets/paper/paper-heatmap-sepia.json765 B
  • assets/presets/paper/paper-image-dithering-default.json856 B
  • assets/presets/paper/paper-image-dithering-natural.json855 B
  • assets/presets/paper/paper-image-dithering-noise.json853 B
  • assets/presets/paper/paper-image-dithering-retro.json849 B
  • assets/presets/paper/paper-lens-distortion-default.json1.0 KB
  • assets/presets/paper/paper-lens-distortion-duotone.json1.0 KB
  • assets/presets/paper/paper-lens-distortion-fisheye.json1.0 KB
  • assets/presets/paper/paper-lens-distortion-smoke.json1.0 KB
  • assets/presets/paper/paper-liquid-metal-backdrop.json833 B
  • assets/presets/paper/paper-liquid-metal-default.json833 B
  • assets/presets/paper/paper-liquid-metal-noir.json818 B
  • assets/presets/paper/paper-liquid-metal-stripes.json827 B
  • assets/presets/paper/paper-mesh-gradient-beach.json765 B
  • assets/presets/paper/paper-mesh-gradient-default.json768 B
  • assets/presets/paper/paper-mesh-gradient-ink.json721 B
  • assets/presets/paper/paper-mesh-gradient-purple.json729 B
  • assets/presets/paper/paper-metaballs-background.json726 B
  • assets/presets/paper/paper-metaballs-default.json746 B
  • assets/presets/paper/paper-metaballs-ink-drops.json685 B
  • assets/presets/paper/paper-metaballs-solar.json705 B
  • assets/presets/paper/paper-neuro-noise-bloodstream.json724 B
  • assets/presets/paper/paper-neuro-noise-default.json709 B
  • assets/presets/paper/paper-neuro-noise-ghost.json701 B
  • assets/presets/paper/paper-neuro-noise-sensation.json716 B
  • assets/presets/paper/paper-paper-texture-creased.json1.1 KB
  • assets/presets/paper/paper-paper-texture-default.json1.1 KB
  • assets/presets/paper/paper-paper-texture-flat.json1.1 KB
  • assets/presets/paper/paper-paper-texture-spread.json1.1 KB
  • assets/presets/paper/paper-perlin-noise-default.json756 B
  • assets/presets/paper/paper-perlin-noise-moss.json766 B
  • assets/presets/paper/paper-perlin-noise-nintendo-water.json778 B
  • assets/presets/paper/paper-perlin-noise-worms.json749 B
  • assets/presets/paper/paper-pulsing-border-circle.json1.0 KB
  • assets/presets/paper/paper-pulsing-border-default.json1.0 KB
  • assets/presets/paper/paper-pulsing-border-northern-lights.json1.1 KB
  • assets/presets/paper/paper-pulsing-border-solid-line.json994 B
  • assets/presets/paper/paper-simplex-noise-bubblegum.json731 B
  • assets/presets/paper/paper-simplex-noise-default.json744 B
  • assets/presets/paper/paper-simplex-noise-first-contact.json760 B
  • assets/presets/paper/paper-simplex-noise-spots.json702 B
  • assets/presets/paper/paper-smoke-ring-cloud.json757 B
  • assets/presets/paper/paper-smoke-ring-default.json762 B
  • assets/presets/paper/paper-smoke-ring-line.json769 B
  • assets/presets/paper/paper-smoke-ring-solar.json801 B
  • assets/presets/paper/paper-spiral-default.json780 B
  • assets/presets/paper/paper-spiral-droplet.json795 B
  • assets/presets/paper/paper-spiral-jungle.json787 B
  • assets/presets/paper/paper-spiral-swirl.json783 B
  • assets/presets/paper/paper-static-mesh-gradient-1960s.json874 B
  • assets/presets/paper/paper-static-mesh-gradient-default.json880 B
  • assets/presets/paper/paper-static-mesh-gradient-sea.json869 B
  • assets/presets/paper/paper-static-mesh-gradient-sunset.json877 B
  • assets/presets/paper/paper-static-radial-gradient-cross-section.json985 B
  • assets/presets/paper/paper-static-radial-gradient-default.json960 B
  • assets/presets/paper/paper-static-radial-gradient-lo-fi.json950 B
  • assets/presets/paper/paper-static-radial-gradient-radial.json947 B
  • assets/presets/paper/paper-swirl-007.json749 B
  • assets/presets/paper/paper-swirl-candy.json794 B
  • assets/presets/paper/paper-swirl-default.json804 B
  • assets/presets/paper/paper-swirl-opening.json802 B
  • assets/presets/paper/paper-voronoi-bubbles.json738 B
  • assets/presets/paper/paper-voronoi-cells.json736 B
  • assets/presets/paper/paper-voronoi-default.json757 B
  • assets/presets/paper/paper-voronoi-lights.json771 B
  • assets/presets/paper/paper-warp-cauldron-pot.json798 B
  • assets/presets/paper/paper-warp-default.json796 B
  • assets/presets/paper/paper-warp-kelp.json769 B
  • assets/presets/paper/paper-warp-live-ink.json808 B
  • assets/presets/paper/paper-warp-nectar.json780 B
  • assets/presets/paper/paper-warp-passion.json783 B
  • assets/presets/paper/paper-water-abstract.json745 B
  • assets/presets/paper/paper-water-default.json752 B
  • assets/presets/paper/paper-water-slow-mo.json745 B
  • assets/presets/paper/paper-water-streaming.json751 B
  • assets/presets/paper/paper-waves-default.json734 B
  • assets/presets/paper/paper-waves-groovy.json733 B
  • assets/presets/paper/paper-waves-ride-the-wave.json752 B
  • assets/presets/paper/paper-waves-tangled-up.json750 B
  • assets/presets/retro-dither.json720 B
  • assets/presets/smoke-ring-loader.json835 B
  • assets/presets/warp-transition.json859 B
  • assets/previews/paper-gallery.webp144.3 KB
  • assets/previews/preset-reel.webp212.7 KB
  • assets/refs.manifest.json64.4 KB
  • evals/trigger_eval.json1.4 KB
  • examples/paper-gallery/index.html8.5 KB
  • examples/preset-reel/index.html12.7 KB
  • LICENSE-paper-shaders11.1 KB
  • NOTICE762 B
  • references/brand-mapping.md2.8 KB
  • references/determinism.md7.0 KB
  • references/licensing.md1.8 KB
  • references/shaders.md7.3 KB
  • scripts/apply-brand.mjs2.5 KB
  • scripts/build-manifest.mjs2.1 KB
  • scripts/check-determinism.mjs3.0 KB
  • scripts/new-project.mjs3.9 KB
  • scripts/refresh-params.mjs3.0 KB
  • scripts/validate-presets.mjs4.8 KB
  • templates/hyperframes/shader-background.html3.0 KB
  • templates/paper-preset.d.ts2.4 KB
  • templates/paper-preset.js9.6 KB
  • templates/remotion/ShaderBackground.tsx2.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Paper Shaders for video

Paper Shaders draws designer-tuned WebGL shaders into a canvas. Left alone it animates from the wall clock, which flickers and drifts in a video render. This skill mounts every shader at speed 0 and draws each frame from the timeline, so the same frame always gives the same picture.

Gates

  1. Pin @paper-design/shaders@0.0.82. Use that exact version everywhere. Never use 0.0.47–0.0.76: they are PolyForm Shield, not open source. Bumping the version follows references/licensing.md.
  2. Speed 0, time from the timeline. Mount shaders only through templates/paper-preset.js. Never set speed above 0, and never let scene code read Date.now(), performance.now(), requestAnimationFrame or unseeded Math.random().
  3. No credits here. Shader layers render locally for free. If the video also needs generated footage, voice or music, that is the varg-ai skill: call estimate_cost and wait for the user's approval before any generation.
  4. Rights. Logos and stills fed to image presets must be the user's own or licensed. Do not apply a shader to another company's logo.
  5. Stills, not footage. Paper's image filters take images only. Grade and add grain to footage with HyperFrames media treatments instead.

Workflow

A person approves at each checkpoint (looks, stills, motion) before the next step. Commands run from the skill folder; HF stands for the pinned CLI, npx --yes hyperframes@0.8.206.

  1. Pick the look. Match the request to a preset below or to a shader in references/shaders.md. Say which one and why in one line; that is checkpoint 1.
  2. Scaffold, or add to a project.
    node scripts/new-project.mjs ./video                 # new HyperFrames project from the template
    node scripts/new-project.mjs ./existing --add        # paper-preset.js and presets/ only
    
  3. Brand it. Get the palette from the user or their brand kit. Never invent colors. Write the branded preset into the project, then import it in index.html. Image presets take { image: "assets/logo.png" }; serve images from the project.
    node scripts/apply-brand.mjs assets/presets/brand-mesh.json palette.json --out ./video/presets/brand-mesh.json
    node scripts/validate-presets.mjs ./video/presets/brand-mesh.json
    
  4. Stills (checkpoint 2). $HF snapshot ./video --at 0.5,2,4 writes PNGs and a contact sheet. Show them; change one param at a time until approved.
  5. Motion (checkpoint 3). (cd ./video && $HF render --quality draft --output draft.mp4). Tune motion.timeScale for pace.
  6. Final.
    node scripts/check-determinism.mjs ./video                        # must print "deterministic"
    (cd ./video && $HF check && $HF render --output final.mp4)        # or: npm run check, npm run render
    

A shader layer in HyperFrames

The host is a timed clip with its own composition id and no GSAP timeline. HyperFrames calls render(seconds) for every frame it captures, in any order.

<div id="bg" class="clip" data-composition-id="bg" data-start="0" data-duration="6"
     data-track-index="0" data-no-timeline data-layout-allow-overflow></div>

<script type="module">
  import * as PS from "https://cdn.jsdelivr.net/npm/@paper-design/shaders@0.0.82/dist/index.js";
  import { paperFrameSource } from "./paper-preset.js";
  import preset from "./presets/god-rays-reveal.json" with { type: "json" };

  const ramp = (t) => 1 - Math.pow(1 - Math.min(t / 1.2, 1), 3);
  window.__hyperframes.registerFrameSource(
    paperFrameSource(PS, document.getElementById("bg"), preset, {
      paramsAt: (t) => ({ intensity: 0.8 * ramp(t), bloom: 0.4 * ramp(t) }), // a reveal, as a pure function of time
    }),
  );
</script>
  • Register at the top level of a module script, before any await; HyperFrames boots on DOMContentLoaded.
  • Each shader scene needs its own host. Keep a composition under about 12 shader hosts; Chrome drops WebGL contexts past 16. For more looks in a row, use paperSequenceSource: one host, one context, any number of presets (see examples/paper-gallery).
  • Text, logos and other DOM elements go on higher tracks and animate with the GSAP timeline as usual.
  • templates/hyperframes/shader-background.html is a complete composition to start from.

A shader layer in Remotion

npm i @paper-design/shaders@0.0.82
# copy templates/paper-preset.js, templates/paper-preset.d.ts, templates/remotion/ShaderBackground.tsx and the presets
<ShaderBackground preset={brandMesh}>
  <h1>Headline</h1>
</ShaderBackground>
<ShaderBackground preset={liquidMetal} image={staticFile("logo.svg")} />

Render with npx remotion render <id> out.mp4 --gl=angle. Do not use Paper's React components for renders; see references/determinism.md.

Presets

Two sets ship. Nine varg presets in assets/presets/, in varg colors with brand roles. And all 124 of Paper's own presets in assets/presets/paper/ (paper-<shader>-<name>, for example paper-mesh-gradient-beach, paper-warp-passion), with the colors and speeds shown on shaders.paper.design. When the user wants "the look from Paper's site", start from those. All are validated against Paper's documented ranges; five of Paper's own go past the editor's slider ranges and stay as Paper ships them.

Varg presetShaderUse
brand-meshMeshGradientBackground behind titles, product cards and lower thirds
grain-blobGrainGradientSoft grainy blob behind a quote, a product or a speaker
retro-ditherDitheringTwo-ink texture for interstitials and end cards
warp-transitionWarp0.5–1 s full-frame interstitial between scenes
god-rays-revealGodRaysRays behind a logo as it appears (ramp with paramsAt)
liquid-metal-stingLiquidMetal1–2 s chrome logo sting; needs a transparent logo
smoke-ring-loaderSmokeRingRing around a countdown, a loader or a mark
halftone-overlayHalftoneDotsPrint look for a still (needs the still)
paper-finishPaperTexturePaper grain and folds over a still or title card

A preset is JSON: shader, motion (timeScale, frame), optional mount and image notes, roles for brand mapping, and every param. paper-preset.js refuses a preset that leaves a uniform unset rather than render a wrong frame.

Read this when

WhenRead
Choosing a shader, writing a new preset, working with footagereferences/shaders.md
Frames flicker, go black or differ between workers; offline, 4K or Docker renders; Remotion detailsreferences/determinism.md
Applying a palette, text contrast over a shaderreferences/brand-mapping.md
Bumping the Paper Shaders version, vendoring it, credits, client workreferences/licensing.md

Scripts

All run with node or bun, make no network calls of their own, and touch only the paths you give them.

ScriptDoes
new-project.mjs <dir> [--example preset-reel|paper-gallery] [--add]Scaffolds a HyperFrames project, or adds paper-preset.js and presets/ to one
validate-presets.mjs [files]Checks presets against the documented params, ranges, enums and color limits
apply-brand.mjs <preset> <palette>Maps a palette onto a preset through its roles
check-determinism.mjs <project> [--at …] [--software]Snapshots forwards and backwards in two runs and compares pixels (uses npx hyperframes)
build-manifest.mjsRewrites assets/refs.manifest.json after a preset changes
refresh-params.mjs <llms.txt> <version>Rebuilds assets/paper-shaders.params.json when the pinned version changes

Output contract

  • Project: index.html, paper-preset.js, presets/*.json (the branded presets actually used), package.json and hyperframes.json with the HyperFrames version pinned.
  • Stills: the snapshot folder with its contact-sheet.jpg, shown at checkpoint 2.
  • Video: renders/<name>.mp4 or the --output path; 1920×1080 at 30 fps unless asked otherwise.
  • Report: the video path, duration and size; which presets ran with which changed params; and the check-determinism.mjs result.

Examples

examples/paper-gallery/ plays all 124 of Paper's presets, 2 s each, full frame, through one host (--example paper-gallery, about 4 minutes of video).

examples/preset-reel/ shows all nine varg presets, 2.5 s each, at 1920×1080 and 30 fps, with a frame counter that is itself a frame source. Posters and the logo are drawn in code, so it needs no outside media. A contact sheet is in assets/previews/preset-reel.webp.

node scripts/new-project.mjs ./preset-reel --example preset-reel
cd preset-reel && npm run render -- --output preset-reel.mp4   # pinned HyperFrames; about 22 s on an M1 Pro

hyperframes check passes; lint's structure warnings come from keeping the reel in one file to read.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Plan worthwhile local tasks by checking dependencies, effects, resources, and platform boundaries, then execute the exact approved plan. It can use safe parallel work or suitable Apple-silicon backends when the project exposes them.

  • Speed up independent local build or test steps
  • Plan a task with several dependency-linked operations
  • Choose an Apple-silicon backend for supported numerical or media work
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 27, 2026

Turn a winning TikTok or Meta ad into a structured creative test plan. Identify what made it work, plan distinct concepts, set test budgets and review timing, and use funnel metrics to decide whether to stop, iterate, or scale each ad.

  • Planning how many ad concepts to test and what budget to assign
  • Creating ad variants that differ in buyer, angle, format, or opening frame
  • Diagnosing why variants perform alike or where an ad loses viewers
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 30, 2026

add

FreeSummary

Record deferred engineering decisions and temporary workarounds in a debt registry, with context such as effort, ongoing cost, affected area, and payoff trigger. Entries receive short labels so they can be reviewed or dropped later.

  • Logging a TODO or unfinished implementation
  • Recording a temporary default or bypassed check
  • Tracking a swallowed error or loosened type
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 30, 2026

Generate or compare AI agent code for LangChain, EINO, AutoGen, AgentScope, and CrewAI using framework-specific templates, API mappings, conventions, and project structures. Reference files include verification dates to help identify potentially outdated guidance.

  • Creating an agent project for a chosen framework
  • Comparing APIs across supported agent frameworks
  • Referencing framework-specific tool and memory patterns
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 26, 2026

Investigate a reproducible bug, test failure, or unexpected page behavior, then make a narrowly scoped fix. The workflow calls for a regression test before changing code, verifies the fix, and reports remaining risks and evidence while avoiding unrelated refactoring or feature work.

  • Finding the cause of a failing test
  • Fixing an unexpected page or feature behavior
  • Adding a regression test before a minimal code change
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 30, 2026

Build an AI agent project through six collaborative stages, from requirements and architecture to tools, prompts, code generation, and verification. Start framework-independent, then generate a runnable project for frameworks such as LangChain, EINO, AutoGen, AgentScope, or CrewAI.

  • Designing an AI agent from a business need
  • Generating a runnable agent project
  • Planning tools, prompts, and orchestration
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 26, 2026

See all skills by hashgraph-online

Report a problem with this skill