Skip to content

RH Chroma Gate

Dr Senthil Manikandan edited this page Jun 6, 2026 · 1 revision

RH Chroma Gate

🚦 6-Vector Per-Zone Chroma Control

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.

rh_chroma_gate_controls

📖 Table of Contents


1. Core Concept 💡

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.


2. Zone Configuration 🗺️

Shadow Pivot 📉

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.0 below this value, fading to 0.0 across a range defined by Zone Softness.

Highlight Pivot 📈

Defines the lower boundary of the highlight zone.

  • Default: 0.66
  • Range: 0.0 – 1.0
  • The highlight mask is 0.0 below this value, rising to 1.0 above it (with Zone Softness blending).

Zone Softness 📊

Controls the transition width at each zone boundary.

  • Default: 0.1
  • Range: 0.01 – 0.5
  • A minimum of 0.01 is 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.


3. Per-Vector Saturation Controls 🎨

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)

Behaviour

  • 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.0 and 1.0 progressively reduce saturation.
  • Values between 1.0 and 2.0 progressively 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.


Available Vectors

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.


4. Zone Mask Visualiser 🎭

Show Zone Masks 🎭

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.


5. Under the Hood — Reuleaux (HRO) + Zone Logic 🔬

HRO Color Space

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.

Hue Isolation (Linear Tent Function)

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.

Luma-Based Zoning

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.


6. Node Placement 🗂️

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.


7. Usage Tips 💬

  • 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 from 1.0.
  • Use 0.0 to fully gate a hue in a zone: Setting Red Shadow Sat = 0.0 completely 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.7 or 1.3 is 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 Sat and Yel Mid Sat together (modestly) to manage skin chroma without affecting saturated objects elsewhere.