Overview
The quickest node for shifting hue, saturation, and value across an entire image. It is
the shortest route to color variants: rotating hue alone can batch-produce green
grass, dry grass, and a toxic swamp from the same asset.
Usage tips
- The go-to color-variant setup: place this node at the end of the finished graph
and switch
huethrough variants or a variable. For palette-managed assets,palette_adjust_hsvfits the workflow better. - Reduce
saturationfor subdued or aged colors (-0.3 to -0.6), and increase it for vivid colors. Because ±1 is the limit, start with saturation for large changes to avoid breaking the image. - If brightness is the main goal,
brightness-family nodes ortone_curvealso let you control contrast and are usually a better fit thanvalue. - Hue wraps around, completing a full cycle over ±180°. A small shift of about +30° is useful for changes in time of day, such as noon → sunset.
Common pitfalls
- Gray, white, and black do not change: rotating hue cannot affect zero-saturation
colors. Use
gradient_maporcolor_select_replaceto color neutrals. - Perceived brightness is inconsistent: HSV
valuedoes not match perceptual brightness; blue and yellow at the same V look different. Useoklch_adjust, which operates in a perceptually uniform color space. - Indexed-color asset colors no longer align: this node rewrites pixel colors, so
their palette-index mapping is lost. For palette workflows, adjust the palette with
palette_adjust_hsvinstead.
Technical details
The node converts RGB to HSV, adds the parameter values, then converts HSV back to RGB. Hue wraps every 360°.
Related nodes
oklch_adjust— perceptually uniform color adjustment when appearance-based brightness matterspalette_adjust_hsv— applies the same operation to a palette rather than an imagetone_curve/brightness— adjustments focused on luminance and contrastcolor_select_replace— replace only a specific color