Spectral Color Mixing

Lumi’s palette system uses a spectral color model to simulate how real pigments mix. The goal is to make the experience of building and selecting colors from a digital palette behave like mixing physical paints. Once a color is applied to the canvas it is standard RGB.

What Spectral Mixing Means

Traditional RGB mixing is additive: blending two RGB values averages them toward a midpoint. Pigment mixing is subtractive: each pigment absorbs certain wavelengths, and their combined effect is darker and often shifts in hue.

Lumi models this using a 10-band spectral reflectance representation for palette colors, rather than RGB.

This produces paint-like results: mixing blue and yellow produces green, not grey. Mixing two saturated colors produces a color that shifts toward neutral the way physical pigments do.

The spectral computation runs during palette construction, when generating secondary and tertiary palette entries and when the Palette Mixer blends two parent colors. The resulting color is converted to linear RGB for display and for painting.

Pigment Profiles

Palette entries can be based on real pigment data using Colour Index (CI) codes. Each CI pigment family has a characteristic spectral bias that influences how it mixes.

Pigment RoleMixing BehaviourExample
PrimaryHigh chroma, clean secondariesPY3 (Lemon Yellow), PR122 (Magenta)
BodyOpaque, strong mass tone, shifts to olive in green mixesPY35 (Cadmium Yellow), PR108 (Cadmium Red)
NeutralizerRapidly desaturates and mutesPBk11 (Mars Black), PBr7 (Sienna)
Chroma AnchorHigh tinting strength, dominates mixturesPB29 (Ultramarine Blue), PG7 (Phthalo Green)

Adding primaries with CI codes to a palette gives the mixing engine accurate spectral bias for those colors, so generated secondary and tertiary mixes reflect real-world mixing behavior.

Lumi Pigments

The Master palette ships with the following pigments. Swatches show each pigment’s typical masstone (full-strength, undiluted) appearance.

Oranges and Yellows

SwatchNameCI CodeFamily
Pyrrole OrangePO73Red (Scarlet)
Cadmium OrangePO20Yellow (Body)
Cadmium YellowPY35Yellow (Body)
Cadmium Yellow PalePY35:PaleYellow (Cadmium Pale)
Lemon YellowPY3Yellow (Lemon)
Nickel Azo YellowPY150Yellow (Mid)
Green GoldPY129Yellow-Green (Gold)

Earth Colors

SwatchNameCI CodeFamily
Burnt SiennaPBr7:BurntEarth (Red Brown)
Burnt UmberPBr7:UmberEarth (Neutral)
Raw SiennaPBr7:RawEarth (Yellow Brown)
Yellow OchrePY42Earth (Yellow)

Greens

SwatchNameCI CodeFamily
Phthalo Green (YS)PG36Green (Phthalo Yellow-Shade)
ViridianPG18Green (Viridian)
Terre VertePG23Green (Earth Cool)
Winsor Green (BS)PG7Green (Phthalo Blue-Shade)

Blues and Cyans

SwatchNameCI CodeFamily
Cobalt Turquoise LightPG50Cyan (Mineral)
Cerulean BluePB35Cyan (Mineral)
Phthalo TurquoisePB16Blue (Phthalo)
Cobalt BluePB28Blue (Violet-Lean)
Winsor BluePB15Blue (Phthalo)
UltramarinePB29Blue (Violet-Lean)

Violets, Magentas and Reds

SwatchNameCI CodeFamily
Brilliant VioletPV23Violet (Dioxazine)
Permanent RosePV19:RoseMagenta (Quinacridone)
Quinacridone MagentaPV19:MagentaMagenta (Quinacridone)
Permanent Alizarin CrimsonPV19:CrimsonMagenta (Quinacridone)
Perylene VioletPV29Magenta (Quinacridone)
Perylene MaroonPR179Red (Crimson)
Pyrrole RedPR254Red (Scarlet)
Pyrrole Red LightPR255Red (Pyrrole Light)

Blacks and Whites

SwatchNameCI CodeFamily
Mars Black (Warm)PBk11Black (Mars)
Perylene GreenPBk31Black (Perylene Green)
Ivory Black (Cool)PBk9Black (Ivory)
Lamp Black (Neutral)PBk7Black (Lamp)
Titanium White (Warm)PW6:WarmWhite (Titanium Warm)
Titanium White (Neutral)PW6White (Titanium Neutral)
Zinc White (Cool)PW4White (Zinc Cool)

Control Grays

Control grays are standardized neutralizers used to predictably desaturate mixes.

SwatchNameCI Code
Warm GrayN_WARM
Neutral GrayN_NEUTRAL
Cool GrayN_COOL

The Palette Map

The Palette Map visualizes the active palette as a hue wheel: 36 hue sectors (10° steps) × 15 lightness cells. When primaries are added, the system generates secondary and tertiary mixes and places them in the appropriate map positions.

Clicking a cell selects a color as the foreground. Shift-click assigns it as a parent endpoint in the Palette Mixer.

The Palette Mixer

The Palette Mixer derives new colors from two parent entries using a fixed three-stage pipeline:

  1. Blend: Spectral WGM between Parent A (CCW) and Parent B (CW).
  2. Chroma: Blend toward the palette’s neutral spectrum, reducing saturation.
  3. Tone: Blend toward mixing white or mixing black, adjusting lightness.

Tone is applied last so lightness adjustments are not diluted by chroma changes. Value Lock and Band Clamp controls constrain results to a specific lightness level or value band.

Mixed colors can be saved to the palette as Custom entries, storing the full recipe (parent UIDs, blend factor, tone, chroma values) for later recovery.

Canvas Pixels Are RGB

The spectral system operates entirely within palette construction and color selection. When a brush stroke is applied, the foreground color (already converted to linear RGB) is what gets painted. The canvas stores standard RGB pixel data.

Spectral mixing improves the experience of building a palette and choosing colors in a way consistent with physical pigment behavior, without changing how image data is stored or composited.