-
Notifications
You must be signed in to change notification settings - Fork 1
RH Hue Compressor
RH Hue Compressor is a targeted hue correction and normalisation tool. It lets you compress, attract, or anchor individual hue families toward user-definable targets across all six standard vectors β Red, Yellow, Green, Cyan, Blue, and Magenta.

Unlike a traditional hue rotation (which shifts a hue to a new angle), compression pulls stray hues toward a centre point proportionally to their distance from it. The further a hue sits from the target, the stronger the pull. A hue already sitting exactly at the centre point is not moved at all.
This makes it ideal for gently normalising hues that have drifted β for example, pulling yellows that have gone slightly green back toward a truer yellow β without causing hard boundaries or creating blocky colour transitions.
- 1. Core Concept
- 2. Per-Vector Controls
- 3. Global Blend
- 4. Under the Hood β Reuleaux (HRO) Color Model
- 5. Node Placement
- 6. Usage Tips
For each of the six hue vectors, the tool performs the following operation:
- Identify which pixels fall within the influence range of that vector.
- Measure the signed angular distance from each pixel's current hue to the vector's target centre.
- Multiply that distance by the Compression amount to get the shift.
- Add the shift to the current hue β drawing it toward the centre.
At Compression = 0.0, nothing moves.
At Compression = 1.0, hues within the active range are fully pulled to the centre point in a single pass.
Between 0.0 and 1.0, the pull is proportional β hues far from centre move more than hues close to it, tapering naturally without discontinuities.
Six identical control groups are available, one per hue family. Each group has three parameters:
| Parameter | Description |
|---|---|
| [Color] Compression | Strength of the pull toward the centre. 0.0 = off, 1.0 = full compression. |
| [Color] Center | Fine offset to shift the target point away from the default hue angle. |
| [Color] Range | Width of the hue neighbourhood that is affected. |
-
Range:
0.0 β 1.0 -
Default:
0.0(no effect) - This is the primary control. Raise it to start compressing that colour family.
- At
1.0, all pixels in the active range are pulled fully to the centre target. - The pull is weighted: pixels closer to the boundary of the range are pulled less than pixels near the centre.
-
Range:
-0.1 β +0.1(normalised hue units, where the full hue circle = 1.0) -
Default:
0.0(default vector angle) - Use this to bias the target point slightly away from the nominal vector position.
- Useful when your footage has a systematic hue skew (e.g., your camera's green channel consistently reads slightly teal rather than pure green).
Default vector positions (normalised 0β1 hue space):
| Vector | Nominal Position |
|---|---|
| Red | 0.000 (or 1.000 β wraps) |
| Yellow | 0.167 |
| Green | 0.333 |
| Cyan | 0.500 |
| Blue | 0.667 |
| Magenta | 0.833 |
-
Range:
0.0 β 1.0 -
Default:
0.5 - Controls how wide the plateau of influence is around the vector centre.
- A Range of
0.5corresponds to approximately Β±25Β° of hue angle (scaled fromrange Γ 0.14in normalised space, with a fixed0.03smoothstep falloff). - Lower values narrow the selection (only near-centre hues are affected). Higher values broaden it.
- Increasing Range on adjacent vectors causes them to overlap; this is intentional and can be used for broad hue normalisation.
Important: Setting Range to
0.0effectively disables that vector regardless of the Compression value, since no pixels fall within an infinitesimally narrow window.
-
Range:
0.0 β 1.0 -
Default:
1.0 - A master wet/dry blend applied after all vector compressions.
-
1.0= full effect (compressed result). -
0.0= bypass (original image passes through). - Use this to gently reduce the overall intensity of all compressions simultaneously, without having to adjust each vector individually.
All hue operations are performed in the Reuleaux (HRO) colour space, a geometrically uniform hue representation derived from the RGB cube's cross-section.
Hue compression has no effect on the luminance or chroma density of the image; it is a purely angular operation.
The HRO model provides more perceptually uniform spacing between hue vectors than standard HSV or HSL, which makes the compression feel more linear and predictable as you move the Range slider.
Expected pipeline:
- Scene-referred input
- DaVinci Wide Gamut / Intermediate (DWG/DI)
Recommended placement:
- After primary balance, before saturation-heavy grading operations.
- Useful as a normalisation pass directly after IDT / input transform, before any creative work.
- Can also be placed after creative colour work, to tighten hues that drifted during grading.
Like all RH tools, this DCTL assumes scene-referred, wide-gamut input. Operating in display-referred space (Rec.709) may produce different vector positions and unexpected hue behaviour.
-
Start with Compression at 0: Activate the effect gradually. A value of
0.1β0.3is enough for subtle correction; values above0.7may produce obvious normalisation. - Use Center to match your camera's tendency: If your camera consistently produces slightly cool reds, shift Red Center slightly negative. This lets you compress to the corrected target rather than the mathematical nominal.
-
Narrow Range for surgical work: If you only want to affect saturated reds without touching desaturated or transitional hues, bring Range down to
0.2β0.3. - Global Blend as a final safety valve: Once all vectors are dialed in, use Global Blend to ease the total effect to taste. This avoids over-processing while still benefiting from the correction.
- Combine vectors intentionally: Simultaneously compressing Yellow and Green at moderate ranges with slightly overlapping coverage is effective for normalising foliage that contains both green and yellow hues.
- This tool does not change saturation: If you want to also reduce the chroma density of a particular hue, combine this with RH Chroma Gate in a downstream node.