You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/guides/color-grading.mdx
+161-7Lines changed: 161 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: Color Grading
3
-
description: "Apply real-time color grading, presets, LUTs, vignette, grain, blur, and pixelate to video and image media in Studio and final renders."
3
+
description: "Apply real-time color grading, presets, LUTs, finishing, and media effects to video and image media in Studio and final renders."
4
4
---
5
5
6
6
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.
@@ -15,8 +15,9 @@ This is a lightweight media color tool for generated videos, uploaded footage, s
15
15
| Manual controls | Supported | Exposure, contrast, highlights, shadows, white point, black point, warmth, tint, vibrance, saturation. |
16
16
| Presets | Supported | Named HyperFrames presets backed by shader settings, not bundled third-party LUT packs. |
17
17
| Custom LUT upload | Supported | Project-local 3D `.cube` LUT files with strength control. |
18
-
| Finishing | Supported | Vignette and grain, with advanced settings behind the settings icon. |
19
-
| Effects | Supported | Blur and pixelate on the selected media surface. |
18
+
| Finish | Supported | Vignette and grain, with advanced settings behind the settings icon. |
19
+
| Studio Effects panel | Supported | Essentials, Retro & Glitch, Print, and Art effects share the same media shader and persisted `effects` object. |
20
+
| Studio Overlays panel | Supported | Inserts selected Registry overlays at the media timing as ordinary timeline layers. |
20
21
| Before preview | Supported | Hold the compare button to temporarily show the ungraded media. |
21
22
| Render parity | Supported | The render pipeline redraws the color-grading shader after video-frame injection. |
22
23
@@ -36,6 +37,7 @@ Studio labels `whites`, `blacks`, and `temperature` as White Point, Black Point,
36
37
| Rec.709 creative LUTs | Yes | Best LUT path today. Use project-local 3D `.cube` files. |
37
38
| Camera conversion LUTs | Partial | Technically accepted if they are supported 3D `.cube` files, but correctness depends on the source footage matching the LUT's expected input color space. |
38
39
| Full-scene grading including text/DOM | Not yet | Color Grading is media-only. Captions, text, SVG, and regular DOM overlays stay unchanged. |
40
+
| Face/region-only grading or privacy | Not yet | Realtime effects process the whole selected `<img>` or `<video>`. Isolate the region into a separate cropped/masked media layer or use an external segmentation/tracking tool first. |
39
41
| Remote media URLs | Partial | WebGL pixel processing requires compatible CORS headers. Project-local assets are the reliable path. |
40
42
| Professional ACES/OCIO/HDR finishing | Not yet | Future render/color-management work, not this Studio shader path. |
41
43
@@ -70,15 +72,51 @@ Color grading is stored on media elements as `data-color-grading`:
70
72
"grainRoughness":0.55
71
73
},
72
74
"effects":{
73
-
"blur":0.08
75
+
"blur":0.08,
76
+
"chromaBleed":0,
77
+
"tapeDamage":0,
78
+
"tapeTracking":0,
79
+
"tapeNoise":1,
80
+
"tapeSpeed":0.5,
81
+
"filmArtifacts":0,
82
+
"halftone":0,
83
+
"halftoneSize":0,
84
+
"twoInkPrint":0,
85
+
"twoInkPrintSize":0,
86
+
"ascii":0,
87
+
"asciiSize":0.066,
88
+
"asciiInvert":0,
89
+
"dither":0,
90
+
"ditherSize":0.25
74
91
},
92
+
"palette":["#0b0d0d","#eee9db"],
75
93
"colorSpace":"rec709"
76
94
}'
77
95
></video>
78
96
```
79
97
80
98
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.
81
99
100
+
## Studio Workflow
101
+
102
+
Select a real `<img>` or `<video>` element in Studio to open the media tools:
103
+
104
+
1.**Presets** shows every built-in starting point in one two-column preview
105
+
grid. Hover to preview it on the selected media, click to apply it, or choose
106
+
**Original** to return to the neutral preset.
107
+
2.**Adjust** provides tonal and color correction.
108
+
3.**Effects** groups configurable shader controls under Essentials, Retro &
109
+
Glitch, Print, and Art.
110
+
4.**Finish** provides vignette and grain.
111
+
5.**Custom LUT** accepts a project-local 3D `.cube` file.
or Freeze-Frame Cutout from the existing Registry.
114
+
115
+
An overlay inserted from this panel starts with the selected media, uses its
116
+
duration, and is placed on the next visual track when one is known. It then
117
+
behaves like any other composition layer: edit or remove it through Layers and
118
+
Timeline. The left Catalog remains the browse-all Registry surface.
119
+
82
120
<Note>
83
121
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.
84
122
</Note>
@@ -91,7 +129,7 @@ Project-local media is the safest path. Remote media must be served with compati
91
129
92
130
```json
93
131
{
94
-
"preset": "natural-lift",
132
+
"preset": "clean-studio",
95
133
"intensity": 1,
96
134
"adjust": {
97
135
"exposure": 0,
@@ -116,8 +154,24 @@ Project-local media is the safest path. Remote media must be served with compati
116
154
},
117
155
"effects": {
118
156
"blur": 0,
119
-
"pixelate": 0
157
+
"pixelate": 0,
158
+
"chromaBleed": 0,
159
+
"tapeDamage": 0,
160
+
"tapeTracking": 0,
161
+
"tapeNoise": 1,
162
+
"tapeSpeed": 0.5,
163
+
"filmArtifacts": 0,
164
+
"halftone": 0,
165
+
"halftoneSize": 0,
166
+
"twoInkPrint": 0,
167
+
"twoInkPrintSize": 0,
168
+
"ascii": 0,
169
+
"asciiSize": 0.066,
170
+
"asciiInvert": 0,
171
+
"dither": 0,
172
+
"ditherSize": 0.25
120
173
},
174
+
"palette": ["#0b0d0d", "#eee9db"],
121
175
"lut": {
122
176
"src": "assets/luts/look.cube",
123
177
"intensity": 0.75
@@ -128,6 +182,88 @@ Project-local media is the safest path. Remote media must be served with compati
128
182
129
183
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.
130
184
185
+
`chromaBleed` is a bounded `0` to `1` treatment primitive that horizontally
186
+
softens chroma detail while preserving the center sample's luma. It is useful
187
+
inside restrained creator-camera/camcorder treatments; it is not VHS, CRT, RGB
188
+
split, tracking noise, or a complete camera emulation.
189
+
190
+
Most effect amounts and settings are normalized from `0` to `1`. Bloom supports
191
+
up to `3`, bloom radius uses pixels, and enum controls use the integer choices
The first command reports a concise overview of every capability family. The
260
+
focused query reports one family's or effect's controls, calibrated apply
261
+
payload, render lane, palette support, and seek-safe animation paths. Use
262
+
`--all` only for exhaustive tooling. Recipes are tested shortcuts, not the
263
+
complete allowed surface. Persist the final combined payload with the same
264
+
`hyperframes media-treatment` command; unknown keys are rejected before the
265
+
composition is changed.
266
+
131
267
## Custom LUTs
132
268
133
269
HyperFrames supports project-local 3D `.cube` LUT files:
@@ -157,6 +293,15 @@ Color Grading is part of the media runtime, so render uses the same settings as
157
293
158
294
For 4K output, use the existing [4K Rendering](/guides/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.
159
295
296
+
Performance follows the total number of treated pixels and the selected render
297
+
lane, not only the number of media elements. Several tiled videos can be
298
+
cheaper than several overlapping full-frame videos. Blur, Bloom, and Kuwahara
299
+
use multipass rendering. When more than two full-frame multipass-treated media
300
+
elements are visible together, verify continuous playback on the target
301
+
machine and simplify or pre-render the stack if frames drop. HyperFrames does
302
+
not impose a universal hard cap because GPU and decoder capacity varies by
303
+
device.
304
+
160
305
For HDR output, use the existing [HDR Rendering](/guides/hdr) workflow. Color Grading currently warns on detected HDR media, but the grading controls themselves are not HDR-aware.
161
306
162
307
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.
@@ -168,7 +313,16 @@ When grading a video, animate opacity on a wrapper element instead of directly o
168
313
| Make uploaded footage look cleaner | Color Grading preset + adjust controls |
169
314
| Use a look from another editor | Custom 3D `.cube` LUT |
170
315
| Add polish to a product shot | Vignette, subtle grain, contrast, vibrance |
171
-
| Blur or pixelate selected media | Effects inside Color Grading |
316
+
| Blur or pixelate selected media | Effects panel |
317
+
| Add restrained camcorder chroma softness | Effects panel or `effects.chromaBleed` through an agent |
318
+
| Build an analog VHS treatment |`effects.tapeDamage` + bounded tracking/noise/speed + restrained chroma, scanline, row-tear, grain, and color settings |
0 commit comments