Skip to main content
HyperFrames Studio can color grade project-local <video> and <img> media directly in the preview. The same data-color-grading settings are used by the render pipeline, so the exported video should match the look you preview. This is a lightweight media color tool for generated videos, uploaded footage, social variants, and agent-authored compositions. It is not a DaVinci Resolve, Premiere, ACES, or OCIO finishing pipeline.

What Is New

Studio labels whites, blacks, and temperature as White Point, Black Point, and Warmth. Use the JSON keys shown in the data shape when authoring data-color-grading by hand or through an agent.

Support Matrix

How It Works

Color grading is stored on media elements as data-color-grading:
index.html
The runtime creates a sibling WebGL canvas for the media element, samples the current video or image frame, applies shader uniforms, then hides the native media only after a shader frame is ready.

Studio Workflow

Select a real <img> or <video> element in Studio to open the media tools:
  1. Presets shows every built-in starting point in a responsive preview grid. Hover to preview it on the selected media, click to apply it, or choose Original to return to the neutral preset.
  2. Adjust provides tonal and color correction.
  3. Effects groups configurable shader controls under Essentials, Retro & Glitch, Print, and Art.
  4. Finish provides vignette and grain.
  5. Custom LUT accepts a project-local 3D .cube file.
  6. Overlays installs Camcorder HUD, Editorial Flash, Organic Light Leak, or Freeze-Frame Cutout from the existing Registry.
An overlay inserted from this panel starts with the selected media, uses its duration, and is placed on the next visual track when one is known. It then behaves like any other composition layer: edit or remove it through Layers and Timeline. The left Catalog remains the browse-all Registry surface.
Color Grading is intentionally media-only. It applies to <video> and <img> sources. Captions, text, divs, SVG, and UI graphics remain ungraded unless you render them into media first.
Project-local media is the safest path. Remote media must be served with compatible CORS headers and should use crossorigin="anonymous" when pixel processing is needed.

Data Shape

Omit enabled; the presence of data-color-grading implies that grading is active. All numeric controls are clamped by the runtime. The current color grading path is Rec.709/sRGB-oriented and assumes browser-decoded media frames. chromaBleed is a bounded 0 to 1 treatment primitive that horizontally softens chroma detail while preserving the center sample’s luma. It is useful inside restrained creator-camera/camcorder treatments; it is not VHS, CRT, RGB split, tracking noise, or a complete camera emulation. Most effect amounts and settings are normalized from 0 to 1. Bloom supports up to 3, bloom radius uses pixels, and enum controls use the integer choices shown in Studio:
  • tapeDamage adds deterministic horizontal time-base instability, lower luma bandwidth, restrained ghosting, noise, sparse dropouts, and bottom-edge head switching. tapeTracking adds bounded moving horizontal tracking tears, tapeNoise scales tape noise and row jitter, and tapeSpeed controls their deterministic motion (0.5 is normal speed). These three subordinate controls do nothing without tapeDamage. A complete analog-tape treatment may also use restrained chromaBleed, scanlines, RGB separation, and rare row tears; none of these controls adds CRT curvature.
  • filmArtifacts adds deterministic sparse dust and short scratches. Combine it with existing grain, vignette, color, and seek-safe GSAP gate weave for an 8mm treatment. It does not change the frame by itself when set to 0.
  • halftone blends in a four-angle CMYK print screen. halftoneSize controls its resolution-aware dot-cell size from fine to coarse. The channel angles and edge response use fixed print-oriented defaults to keep authored output consistent across agents.
  • twoInkPrint maps warm midtones and deep/cool shadows to fixed original vermilion and teal spot screens with a dark overprint on warm paper. twoInkPrintSize controls its resolution-aware screen size. Do not combine it with halftone or describe it as a named commercial print process.
  • ascii converts the selected media to a procedural 5x7 glyph field. asciiSize controls cell size and asciiInvert switches the light/dark ink polarity. It uses the first and last colors from palette.
  • dither applies a temporally stable ordered 4x4 Bayer dither. ditherSize controls cell size and all palette colors participate in the result. This is ordered dithering, not Floyd-Steinberg or another sequential error-diffusion algorithm.
  • bloom extracts bright pixels and runs a bounded half-resolution separable blur. bloomRadius controls its radius.
  • monoScreen provides configurable mono print shapes, angle, spread, invert, and palette controls.
  • scanlines, crtCurvature, and chromaticAberration provide display geometry and channel treatments with their related settings.
  • digitalGlitch provides deterministic line tears, blocks, displacement, selective pixelation, channel split, opacity, and speed controls.
  • engraving, crosshatch, and kuwahara provide stylized art treatments with their calibrated settings. Kuwahara uses bounded half-float intermediate targets when the browser supports them and otherwise reports unavailable.
palette accepts two to six exact #RRGGBB colors in authored order. Use dark-to-light order for normal luminance mapping; intentionally reverse the array for an inverted result. The runtime validates and lowercases colors but does not reorder them. ASCII, dither, mono screen, engraving, and crosshatch use it; a palette or subordinate setting alone does not allocate an effect. Omit it for the family default. When effects are combined, HyperFrames evaluates them in one fixed, deterministic order: source framing and multipass blur/Kuwahara preparation; chromatic and digital glitch; primary color grading and LUT blended by global intensity; grain and film artifacts; mono/engraving/crosshatch/halftone/two-ink/dither/ASCII; bloom, scanlines, vignette, and CRT display masking; then before/after comparison. Effects cannot currently be reordered. The fixed pipeline keeps Studio, playback, seeking, and final render behavior predictable. Studio exposes these controls in the selected media element’s Effects accordion. Agents should choose one primary intent through the media-use skill, then either seed from a source-aware treatment recipe or inspect the canonical toolbox and assemble a bespoke combination:
The first command reports a concise overview of every capability family. The focused query reports one family’s or effect’s controls, calibrated apply payload, render lane, palette support, and seek-safe animation paths. Use --all only for exhaustive tooling. Recipes are tested shortcuts, not the complete allowed surface. Persist the final combined payload with the same hyperframes media-treatment command; unknown keys are rejected before the composition is changed.

Custom LUTs

HyperFrames supports project-local 3D .cube LUT files:
index.html
Use .cube LUTs when users already have a look from another editor or camera workflow.
  • HyperFrames currently supports 3D .cube LUTs for this path.
  • 3D cube LUTs up to LUT_3D_SIZE 64 are supported.
  • 1D .cube LUTs and mixed 1D+3D LUT files are not supported yet.
  • Supported headers include common DOMAIN_MIN / DOMAIN_MAX and DaVinci/IRIDAS-style LUT_3D_INPUT_RANGE.
  • LUTs are not universal. A LUT looks correct only when the source footage roughly matches the LUT’s expected input color space.
  • Rec.709 creative LUTs are the safest fit today.
  • LOG/camera conversion LUTs can be used, but HyperFrames does not yet manage camera color profiles for you.

Render Behavior

Color Grading is part of the media runtime, so render uses the same settings as Studio preview. During render, HyperFrames injects exact video frames and asks the color-grading runtime to redraw before capture. For 4K output, use the existing 4K Rendering workflow. Color Grading can run at 4K when the composition/render surface is 4K, but a 1080p source video does not become sharper just because the final render is 4K. Performance follows the total number of treated pixels and the selected render lane, not only the number of media elements. Several tiled videos can be cheaper than several overlapping full-frame videos. Blur, Bloom, and Kuwahara use multipass rendering. When more than two full-frame multipass-treated media elements are visible together, verify continuous playback on the target machine and simplify or pre-render the stack if frames drop. HyperFrames does not impose a universal hard cap because GPU and decoder capacity varies by device. For HDR output, use the existing HDR Rendering workflow. Color Grading currently warns on detected HDR media, but the grading controls themselves are not HDR-aware. When grading a video, animate opacity on a wrapper element instead of directly on the <video> element. The runtime hides the native media and draws the graded result through a sibling canvas, so wrapper opacity preserves preview/render parity.

What Belongs Where

Agent-Friendly Examples

For AI agents, keep the instruction declarative:
Expected markup:
index.html

Remove Background

Create transparent video/image cutouts for presenter and product overlays.

Rendering

Render transparent overlays and final MP4/WebM/MOV outputs.

HDR Rendering

Render HDR10 outputs when your project uses HDR video or image sources.

4K Rendering

Render at 4K and understand what supersampling does and does not improve.