-
Notifications
You must be signed in to change notification settings - Fork 1
RH Chroma Gate

RH Chroma Gate is a saturation control tool with two dimensions of selectivity: hue and luminance zone. For each of the six standard hue vectors (Red, Yellow, Green, Cyan, Blue, Magenta), it provides independent saturation multipliers for shadows, midtones, and highlights.
This allows you to do things that are impossible with a single saturation control — for example, richly saturating green midtones while keeping green shadows desaturated, or pulling down the chroma of blue highlights without affecting blue skies in the midrange.
All saturation operations are performed in the Reuleaux (HRO) colour space, which provides consistent chroma representation across the full gamut.
- 1. Core Concept
- 2. Zone Configuration
- 3. Per-Vector Saturation Controls
- 4. Zone Mask Visualiser
- 5. Under the Hood — Reuleaux (HRO) + Zone Logic
- 6. Node Placement
- 7. Usage Tips
The tool works by computing two masks simultaneously:
- A hue weight for each of the six vectors (how close is this pixel's hue to Red, Yellow, Green, etc.).
- A tonal zone weight for each zone (how much does this pixel belong to shadows, mids, or highlights).
These two weights are multiplied together to produce a final saturation scalar per pixel. The pixel's chroma (ρ in HRO space) is then multiplied by this scalar before converting back to RGB.
At default settings (all sliders at 1.0), the tool is a perfect pass-through — every pixel is multiplied by 1.0, so the image is unchanged.
Defines the upper boundary of the shadow zone.
-
Default:
0.33 -
Range:
0.0 – 1.0 - Uses Rec.709 luma for zone classification.
- The shadow mask is
1.0below this value, fading to0.0across a range defined by Zone Softness.
Defines the lower boundary of the highlight zone.
-
Default:
0.66 -
Range:
0.0 – 1.0 - The highlight mask is
0.0below this value, rising to1.0above it (with Zone Softness blending).
Controls the transition width at each zone boundary.
-
Default:
0.1 -
Range:
0.01 – 0.5 - A minimum of
0.01is enforced. - Lower values = sharper zone boundary. Higher values = softer blend between zones.
Midtone zone is computed automatically as max(0, 1 − w_shadow − w_highlight). It is at its strongest between the Shadow Pivot and Highlight Pivot, and tapers toward zero at both boundaries. You do not control it directly — it fills whatever tonal region is not claimed by shadows or highlights.
Six identical control groups cover the six hue vectors. Each group contains three sliders — one per tonal zone.
| Slider | Zone | Meaning |
|---|---|---|
| [Color] Shadow Sat | Shadow | Saturation multiplier for this hue in dark areas |
| [Color] Mid Sat | Midtones | Saturation multiplier for this hue in midrange |
| [Color] High Sat | Highlight | Saturation multiplier for this hue in bright areas |
Range for all sliders: 0.0 – 2.0
Default for all sliders: 1.0 (pass-through)
-
1.0: unchanged. -
0.0: fully desaturates that hue in that zone (greyscale). -
2.0: doubles the chroma of that hue in that zone. - Values between
0.0and1.0progressively reduce saturation. - Values between
1.0and2.0progressively boost saturation.
The final saturation multiplier for any pixel is a blend of all six vector contributions, weighted by how closely that pixel's hue matches each vector:
saturation_gain = Σ (hue_weight_i × zone_sat_i) for i in {R, Y, G, C, B, M}
Because the six hue weights sum to approximately 1.0, this is a weighted average of the per-vector zone scalars. A pixel sitting exactly on the Red hue angle receives only the Red slider's value; a pixel sitting midway between Red and Yellow receives a blend of both.
| Group | Hue Angle | Emoji Indicator |
|---|---|---|
| Red | 0° (0.000) | 🔴 🟥 ❣️ |
| Yellow | 60° (0.167) | 🟡 🟨 💛 |
| Green | 120° (0.333) | 🟢 🟩 💚 |
| Cyan | 180° (0.500) | ⚪ ⬜ 🤍 |
| Blue | 240° (0.667) | 🔵 🟦 💙 |
| Magenta | 300° (0.833) | 🟣 🟪 💜 |
The emoji icons in the DCTL UI correspond to shadow / mid / highlight per vector, serving as a quick visual reminder of which zone you are adjusting.
A diagnostic checkbox that replaces the image output with a false-colour zone map.

| Channel | Colour | Zone |
|---|---|---|
| Red | Red | Highlights |
| Green | Green | Midtones |
| Blue | Blue | Shadows |
Use this to:
- Verify your Shadow Pivot and Highlight Pivot are correctly placed for the image content.
- Check that Zone Softness is producing a smooth, non-banded transition.
- Confirm midtones are where you expect them — gaps (dark areas) between red and blue indicate regions the tool may not be addressing.
Always check the zone masks before making saturation adjustments. Incorrect pivot placement is the most common cause of unexpected results.
All saturation operations happen in the Reuleaux (HRO) space:
-
φ (Hue)= angular position on the hue circle (0 to 2π) -
ρ (Chroma / Saturation)= chroma relative to brightness -
V=max(R, G, B)= intensity anchor
The saturation multiplier is applied directly to ρ:
ρ_out = max(0, ρ_in × saturation_gain)
The clamp to 0 prevents negative chroma values from being passed to the inverse transform.
The hue weights use a linear tent (triangle) function — not a smoothstep:
w_r = max(0, 1 − dist_to_red × 6)
This means each vector's influence spans exactly ±1/6 of the hue circle (±30°), creating a clean six-segment partition with no overlap beyond the segment boundary. Pixels exactly at a vector angle receive weight 1.0; pixels midway between two vectors receive weight 0.0 for both, which means the saturation scalar in that gap defaults toward the contribution of both neighbouring vectors at 0.5 weight each.
Zones are classified using Rec.709 luma, not HRO's V (max) value:
luma = 0.2126·R + 0.7152·G + 0.0722·B
This ensures zone boundaries correspond to perceived brightness rather than the brightest channel, which is more consistent across different hue angles and avoids unexpected zone misclassification on highly saturated colours.
Expected pipeline:
- Scene-referred input
- DaVinci Wide Gamut / Intermediate (DWG/DI)
Recommended placement:
- After primary balance and before any output transform.
- Works well after RH Hue Compressor: first normalise hue angles, then gate saturation per zone.
- Can be used as a chroma containment pass before a film emulation or creative LUT.
Like all RH tools, this DCTL assumes scene-referred, wide-gamut input. Do not use in display-referred (Rec.709 output) space — the chroma scaling will behave differently and may introduce illegal signal levels.
- Always check the zone mask first: Confirm Shadow Pivot and Highlight Pivot are positioned correctly before adjusting any saturation sliders.
-
Default is pass-through: All sliders default to
1.0. Do not move sliders you do not intend to change — this tool is not cumulative unless you deliberately push values away from1.0. -
Use
0.0to fully gate a hue in a zone: SettingRed Shadow Sat = 0.0completely removes red chroma from dark areas. This is the tool's most powerful use case — selective chroma silencing. -
Subtle adjustments are often enough: A value of
0.7or1.3is already a significant change. Treat this tool like a parametric equaliser for colour — small moves add up across multiple vectors. - Midtones are implicit: You cannot move the midtone region directly; it is defined by what remains between shadows and highlights. Adjust the pivots to expand or contract midtones.
- Combine with RH Hue Compressor: Compressor normalises hue angles; Chroma Gate controls chroma density. Used together, they give full per-vector chroma control (angle + amplitude).
-
Skin tones: Skin typically spans the Red and Yellow vectors in the midtone zone. Use
Red Mid SatandYel Mid Sattogether (modestly) to manage skin chroma without affecting saturated objects elsewhere.