Generator node
Image Adjustment
Real-time GPU color grading for any image texture: exposure, contrast, saturation, vibrance, hue, white balance, levels, shadows/highlights, gamma, selective color removal or isolation, posterize, animated film grain and vignette — the full darkroom in one node. Feed it any generator's Image output and it returns the graded image at the same size, every frame, with a Mix dial to blend the grade against the untouched original.
Inputs
| Port | Type | Default |
|---|---|---|
| ImageThe image to grade. Cable it from any generator, video player or other image filter. | image | — |
| EnableOff clears the output rather than passing the source through, so this branch disappears from the canvas. | bool | true |
| ExposureOverall brightness in photographic stops — each whole step doubles or halves the light. Clamped to ±6. | float | 0 |
| ContrastSpreads tones away from mid grey, or pulls them toward it. Clamped to −1…+1, where −1 is nearly flat and +1 is hard and punchy. | float | 0 |
| SaturationColour intensity: 0 is black and white, 1 leaves it as-is. Floored at 0 but not capped above; past about 2 the colours go electric and start clipping. | float | 1 |
| VibranceLifts only the muted colours and leaves already-vivid ones alone — kinder to skin than raw saturation. Clamped to −1…+1. | float | 0 |
| Hue ShiftRotates every colour around the hue wheel, in degrees. Any value works and it simply wraps every 360. | float | 0 |
| TemperatureWhite balance from cool blue at −1 to warm orange at +1. Clamped to ±1. | float | 0 |
| TintThe other white-balance axis: green at −1, magenta at +1. Clamped to ±1. | float | 0 |
| GammaBends the midtones without moving black or white — above 1 opens them up, below 1 deepens them. Clamped to 0.2…3. | float | 1 |
| BlacksWhere black sits: raising it crushes the darkest tones to solid black. Clamped to 0…0.95. | float | 0 |
| WhitesWhere white sits: lowering it blows the brightest tones out to pure white. Clamped to 0.05…1. | float | 1 |
| ShadowsLifts or crushes the dark end only, leaving highlights alone. Clamped to −1…+1. | float | 0 |
| HighlightsCompresses or boosts the bright end only, leaving shadows alone. Clamped to −1…+1. | float | 0 |
| GrainAmount of animated film grain, refreshed at 24 frames per second for a real projector cadence. Clamped to 0…1. | float | 0 |
| Grain SizeHow coarse each grain speck is — 1 is per-pixel, larger values clump it into chunkier 16 mm texture. Clamped to 0.25…8. | float | 1 |
| Grain on BlacksWhere the grain lives: 0 follows the classic film curve and sits in the midtones, 1 pushes it into the shadows. Clamped to 0…1. | float | 0 |
| VignetteDarkens the corners toward the frame edge. Clamped to 0…1. | float | 0 |
| Vignette SoftnessHow gradually the vignette fades in — small values give a hard circular edge, large ones a slow falloff. Clamped to 0.05…1. | float | 0.5 |
| Color FilterSelective colour: off, remove the key colour and leave everything else, or isolate it and grey out the rest. Values outside those three snap to the nearest one. | int | 0 |
| Key ColorThe colour the selective filter targets. Only its hue matters — brightness and alpha are ignored — so pure red is enough to catch every shade of red. | color | — |
| Color RangeHow wide a slice of the hue wheel counts as matching the key colour. Clamped to 0.01…1; small values catch one exact shade, large ones sweep up neighbouring hues. | float | 0.15 |
| Color SoftnessFeathers the edge of that hue selection so it does not cut off abruptly. Clamped to 0…1. | float | 0.1 |
| PosterizeNumber of tone steps per channel for a flat, printed poster look. Clamped to 0…32, and anything below 2 leaves the image untouched. | int | 0 |
| MixBlends the whole graded result back against the original. Clamped to 0…1 — pull it down when a grade is too strong rather than undoing every slider. | float | 1 |
Outputs
| Port | Type |
|---|---|
| ImageThe image to grade. Cable it from any generator, video player or other image filter. | image |
| Width | float |
| Height | float |
Live Preview
How It Works
Image Adjustment is an image-in / image-out filter that follows the generator contract: it takes an Image input, renders to an offscreen texture, and outputs Image, Width and Height — where Width/Height simply pass the source's content dimensions through (this is a 1:1 filter; nothing is resized or moved). When Enable is false or no source is connected, the output texture is cleared so a Canvas downstream never shows a stale frame.
The whole grade is a single pointwise compute kernel — one GPU thread per pixel, no intermediate passes. Source textures are premultiplied alpha (the Grafit generator convention), so the kernel first un-premultiplies, grades the straight RGB, then clamps and re-premultiplies on write. Alpha itself is never modified — transparent regions stay transparent.
Operations apply in a fixed, deliberate order (each stage feeds the next):
- White balance —
Temperatureshifts red/blue (−1 cool … +1 warm),Tintshifts green/magenta. - Exposure — photographic stops: gain = 2^EV.
- Levels —
BlacksandWhitesremap the black/white points:rgb = (rgb − Blacks) / (Whites − Blacks). - Shadows / Highlights — luma-masked lifts: shadows weighted by
(1 − luma)², highlights byluma². - Contrast — pivot at 0.5:
rgb = (rgb − 0.5) · (1 + Contrast) + 0.5. - Gamma —
rgb = rgb^(1/Gamma); above 1 brightens midtones. - Hue Shift — YIQ hue rotation in degrees.
- Saturation + Vibrance — blend toward luminance gray;
Vibranceadds extra saturation scaled by how unsaturated a pixel already is, protecting skin tones and already-vivid colors. - Selective color —
Color Filtermeasures each pixel's hue distance (on the hue circle) toKey ColorwithinColor Range, feathered byColor Softness. Remove Color desaturates matching pixels; Isolate Color desaturates everything else (the "Sin City" look). - Posterize — quantizes each channel to N levels (active from 2 upward; 0 = off).
- Film grain — animated noise refreshed at 24 fps (film cadence), sized by
Grain Sizein pixels. Weighting follows a classic film curve — strongest in midtones,4·luma·(1−luma)— andGrain on Blacksmorphs that toward a shadows-weighted curve(1−luma)²that leaves whites clean. - Vignette — aspect-correct radial darkening from the frame center, feathered by
Vignette Softness. - Mix — final linear blend between the untouched original and the fully graded result.
| Value | Color Filter | Effect |
|---|---|---|
| 0 | Off | No selective color processing |
| 1 | Remove Color | Pixels matching the key hue become grayscale |
| 2 | Isolate Color | Only pixels matching the key hue keep color; the rest becomes grayscale |
Parameters in Depth
Tone
| Port | Default | Range | Meaning |
|---|---|---|---|
| Image | — | — | Source texture to grade |
| Enable | true | — | Off clears the output |
| Exposure | 0 | −6 … +6 | Brightness in photographic stops (EV) |
| Contrast | 0 | −1 … +1 | Contrast around a 0.5 pivot |
| Gamma | 1 | 0.2 … 3 | Midtone curve; >1 brightens midtones |
| Blacks | 0 | 0 … 0.95 | Black point — raise to crush shadows |
| Whites | 1 | 0.05 … 1 | White point — lower to blow highlights |
| Shadows | 0 | −1 … +1 | Lift (+) or crush (−) shadow regions only |
| Highlights | 0 | −1 … +1 | Boost (+) or compress (−) highlight regions only |
Color
| Port | Default | Range | Meaning |
|---|---|---|---|
| Saturation | 1 | 0 … 2 | 0 = black & white, 1 = original, >1 boosted |
| Vibrance | 0 | −1 … +1 | Smart saturation — boosts muted colors more than vivid ones |
| Hue Shift | 0 | degrees | Rotates all hues around the color wheel |
| Temperature | 0 | −1 … +1 | Cool (blue) to warm (orange) |
| Tint | 0 | −1 … +1 | Green to magenta |
| Color Filter | 0 | 0–2 | Off / Remove Color / Isolate Color |
| Key Color | (1, 0, 0, 1) | color | Target hue for the selective filter (default red) |
| Color Range | 0.15 | 0.01 … 1 | Hue-distance tolerance around the key color |
| Color Softness | 0.1 | 0 … 1 | Feathering of the match boundary |
| Posterize | 0 | 0 … 32 | Levels per channel; 0–1 = off, 2+ = active |
Finish
| Port | Default | Range | Meaning |
|---|---|---|---|
| Grain | 0 | 0 … 1 | Film grain amount, luminance-weighted, animated at 24 fps |
| Grain Size | 1 | 0.25 … 8 | Grain particle size in pixels |
| Grain on Blacks | 0 | 0 … 1 | 0 = midtone film curve, 1 = shadows-weighted (whites stay clean) |
| Vignette | 0 | 0 … 1 | Radial edge darkening strength |
| Vignette Softness | 0.5 | 0.05 … 1 | Vignette falloff width |
| Mix | 1 | 0 … 1 | 0 = original, 1 = fully graded — the master subtlety dial |
Order matters between parameters: Blacks/Whites re-span the histogram before Shadows/Highlights and Contrast act on it, and Saturation is applied after Hue Shift — so a hue-rotated image desaturates exactly as you'd expect. Vibrance stacks additively with Saturation.
Use Cases
- Classic black & white: Video Player → Image Adjustment (
Saturation 0, then shape withContrast,Blacks/Whites,Shadows/Highlights, finish withGrainandVignette) → Canvas. - The "Sin City" look: Camera Input → Image Adjustment (
Color Filter = Isolate Color,Key Colorred,Color Range ≈ 0.1) → Canvas — only red survives on a monochrome frame. - VJ color pulse: Audio FFT band →
Hue ShiftorExposure— the grade breathes with the music; keepMixaround 0.7 so the source stays readable. - Film emulation chain: Image node → Image Adjustment (
Temperaturewarm, liftedBlacks, softHighlights,Grain 0.4withGrain Size 1.5,Vignette 0.3) → Canvas. - Poster art: any generator → Image Adjustment (
Posterize 4–6, highContrast,Saturation 1.5) → Composite over a flat background color. - Day-for-night:
Exposure −2,Temperature −0.6, crushedShadows, gentleVignetteon live camera input.
Tips
- A generator's texture only reaches the screen through a Canvas node — chain Image Adjustment between the source and its Canvas.
- Filters chain freely: Image Transform → Image Adjustment → Composite all speak the same
Imagecontract, and each stays a single GPU pass. Mixis the fastest way to make an aggressive grade tasteful — dial the full look in atMix 1, then back off.- Grain is animated from the global time at a fixed 24 fps refresh, so it flickers like film even on a 120 fps output;
Grain on Blacks = 1gives the "lifted shadows on scanned negative" texture without peppering highlights. - The selective color filter matches on hue only — very dark or desaturated pixels have unstable hue, so widen
Color Softnessif edges sizzle. - Alpha is preserved untouched: grading a transparent-background generator (text, shapes) grades only the visible pixels and composites cleanly downstream.
Open Image Adjustment in the interactive catalog →
Image Adjustment is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.