Skip to content

Per-device color calibration with assisted 3D-LUT wizard#294

Open
joaocaparroz wants to merge 1 commit into
Aurora-RGB:masterfrom
joaocaparroz:feature/device-color-calibration
Open

Per-device color calibration with assisted 3D-LUT wizard#294
joaocaparroz wants to merge 1 commit into
Aurora-RGB:masterfrom
joaocaparroz:feature/device-color-calibration

Conversation

@joaocaparroz

@joaocaparroz joaocaparroz commented Jun 30, 2026

Copy link
Copy Markdown

Per-device color calibration with assisted 3D-LUT wizard

Closes #293

Summary

Makes RGB devices from different models look the same by extending per-device calibration into an optional color pipeline, plus an assisted wizard that matches a target device to a reference device by eye.

Motivation

The same logical color renders slightly differently across devices. The existing DeviceCalibrations (one multiplicative SimpleColor per device) can only dim each channel — it can't fix non-linear brightness response, the tonality of mixed colors (white matches but purple doesn't), or specific stubborn colors.

What's added

  • Calibration model (DeviceCalibration): per-channel brightness CalibrationCurve, a 3×3 ColorMatrix, an optional non-linear set of ColorSamples baked into a 3D-LUT, plus the existing manual brightness/gamma/gain.
  • Runtime apply (CalibrationLookup): curve → matrix → 3D-LUT (trilinear) → manual, resolved once per device update and cached. Applied for all device types — RGB.NET (per sub-device in RgbNetDeviceUpdater) and native (centrally in DefaultDevice).
  • Assisted wizard (Control_CalibrationWizard): pick a reference + target device; stage 1 matches per-channel brightness, stage 2 fits the matrix from white + primaries + secondaries, stage 3 fixes specific intermediate colors (suggested list + add-your-own). Devices are lit to live test colors over the device-manager pipe (calibrationPreview / calibrationEnd).
  • Indicators in the calibration window: a status badge (3D-LUT · N pts · Matrix · Curves · Manual), a before/after hue preview, and a Details panel showing the matrix and the LUT correction points.

Backward compatibility

Legacy DeviceCalibrations (SimpleColor) are migrated into the new model on config load (DeviceConfig.MigrateCalibrations); the new data lives in DeviceColorCalibrations.

Scope / limitations

  • The assisted preview (lighting both devices) targets RGB.NET devices; native devices still get the runtime apply + manual sliders.
  • The matrix is a linear approximation; the optional 3D-LUT covers the non-linear cases.
  • No automated tests added — the repo has no test project; the color-matrix fit was validated by reasoning (identity in → identity out, scalar in → scalar matrix) and the runtime paths exercised live.

How to test

  1. Settings → Device Manager → Calibrate Devices.
  2. Adjust the per-device sliders, or click Assisted Calibration… and follow the stages.
  3. Verify the badge/preview/Details reflect the active calibration, and that devices visually match.

Screenshots

Captura de tela 2026-06-30 170531 Captura de tela 2026-06-30 170539 Captura de tela 2026-06-30 170549 Captura de tela 2026-06-30 170556 Captura de tela 2026-06-30 170603 Captura de tela 2026-06-30 170610

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Per-device color calibration to make devices visually match

1 participant