Skip to content

About

SDR and HDR display calibration for Windows with an ordinary colorimeter: native ICC and MHC2 HDR profiles, live meter, DDC/CI auto OSD, gamut (2D/3D), 3D LUT export. ArgyllCMS backend, WPF Fluent.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HDRDisplayCalibrate: SDR and HDR display calibration for Windows with an ordinary colorimeter

SDR and HDR display calibration for Windows with an ordinary colorimeter

A DisplayCAL-style app that also calibrates Windows HDR: it measures the screen and writes a native MHC2 profile, so Windows itself shows the HDR signal correctly. No background filter app, no HDR test patterns.

Download for Windows Support the project

Release Downloads Build License: Apache-2.0 .NET 10 WPF Fluent 11 languages

Note

0.1 preview. SDR calibration, verification, gamut, 3D LUT and the live meter / auto OSD are tested with a ColorMunki Display on three monitors. The HDR pipeline was validated on an ASUS VG34VQL3A (PQ tracking 0.95–1.01, white ΔE 0.2–1.6); the in-app HDR wizard is new, so reports are welcome.

✨ Features

🌈 HDR calibration (MHC2) 5-step wizard: measure the panel as is → find the real peak with a ×8 probe profile → PQ curve with a soft roll-off → per-channel grey balance → compensation for the SDR curve Windows also applies in HDR. Produces a Windows-native MHC2 profile (3×4 matrix + per-channel 1D LUTs).
🖥️ SDR calibration ArgyllCMS dispcal + colprof: white point (D65, D50, any colour temperature, custom xy or native), luminance, gamma 2.2 / 2.4 / BT.1886 / sRGB / L*, optional room-light adaptation, 120…2000-patch ICC profiles. Installs the profile and loads the video LUT.
📈 Live meter Continuous readings (~1.5 s each) while you adjust the monitor menu: cd/m², CCT, xy, ΔE to target and per-channel R/G/B hints.
🎛️ Auto OSD (DDC/CI) Sets the monitor's own RGB gains and brightness toward the target white and luminance (typically ~15 s).
💡 Room light Measure the room with the diffuser before calibrating; suggests a white level and can adapt the tone curve.
✅ Verify & report 37 / 63 / 223-patch charts: white, black, contrast, gamma tracking, ΔE2000 of greys and colours, tables and charts.
🔺 Gamut Coverage and relative size vs sRGB/Rec.709, Adobe RGB, DCI-P3 and Rec.2020: CIE 1931 xy or 1976 u′v′ triangles plus a rotatable 3D Lab gamut solid.
🧊 3D LUT collink export for madVR (.3dlut), DaVinci Resolve / OBS / games (.cube), eeColor and ReShade (.png).
🪟 Patches Our own patch window (full screen, or a borderless window you can drag and resize; exact placement on mixed-DPI desktops) or Argyll's window.
🛡️ Safe by design Esc cancels any measurement at once and restores the calibration; the sensor is freed from background readers; no orphaned Argyll processes.
🌍 11 languages English, Українська, 中文, हिन्दी, Español, العربية, Français, বাংলা, Português, Deutsch, Bahasa Indonesia, with a tooltip on every control.

📸 Screenshots

HDR calibration wizard Gamut coverage Live meter 3D LUT export

🧪 Tested on a real monitor

Full run on an ASUS VG34VQL3A (34" VA, DisplayHDR 400) with a ColorMunki Display, driven through the app's own UI.

Result
SDR (D65, 120 cd/m², gamma 2.2, high quality, 600-patch XYZ LUT profile) white ΔE 1.15 · greys ΔE avg 0.97 / max 1.56 · gamma 2.18 · contrast 2439:1
Gamut (from the new profile) sRGB 98.8 % · Adobe RGB 89.2 % · DCI-P3 92.7 % · Rec.2020 67.9 %
HDR (MHC2, peak 300 cd/m², roll-off from 186) white x 0.3124 y 0.3304 (D65 0.3127 0.3290) · PQ tracking 93–97 % of target from 5 nits up · white ΔE 1.3–3.1 above 20 nits · peak 270 cd/m²

SDR verification report SDR verification charts HDR final verification table HDR PQ tracking and white point error per level Gamut coverage of the new profile 3D gamut

The run also found real problems, all fixed in 0.3.0: SDR profiles were written without their calibration curves (vcgt); HDR profiles had a shifted header field, so Windows ignored them; the display could go to sleep during a long measurement; an unreachable white luminance made dispcal chase it for hours. More screenshots are in docs/run.

📦 Install

  1. Install ArgyllCMS 3.x. C:\ArgyllCMS\bin, C:\Program Files\ArgyllCMS\bin and a DisplayCAL download are found automatically; any other folder can be set on the first page.
  2. Download HDRDisplayCalibrate.exe from Releases and run it. It is one self-contained file: no installer and no .NET to install.
  3. Plug in a colorimeter supported by ArgyllCMS (X-Rite / Calibrite i1Display Pro, ColorMunki Display, Spyder…).

Requires Windows 11 x64; HDR calibration needs an HDR display with Windows HDR on. Settings live in %APPDATA%\HDRDisplayCalibrate, measurements and profiles in Documents\HDRDisplayCalibrate.

🌈 HDR in Windows: what to know

  • An HDR (MHC2) profile takes effect only after you press Set profile for it in Settings → Display → Color management while HDR is on. The wizard installs it, opens that page and shows the file (with Show the profile file / Copy path for “Add profile” if Windows does not list it).
  • The same goes for SDR: Windows loads the calibration of the profile chosen there, also after a restart, so confirm the new SDR profile there too.
  • Some calibration tools switch Windows' own Calibration Loader off. The Profiles page shows it and can load every display's calibration at sign-in instead (Load the calibration at Windows sign-in).
  • Windows applies the SDR calibration curve (vcgt) on top of HDR output too. The last wizard step compensates for it.
  • Keep Auto colour management (ACM) off in SDR, otherwise Windows uses the HDR profile in SDR as well.
  • Calibrate with "SDR content brightness" at 100 % and the monitor's HDR brightness at maximum, then set the slider back.

🛠 Build

dotnet publish src/HDRDisplayCalibrate.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:EnableCompressionInSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish

Developer checks: --selftest <folder> (re-runs the HDR pipeline and report on saved pq_base/pq_probe8/pq_v5.ti3 measurements), --render3d out.png; with a sensor on a screen: --live-test, --osd-test <model> [nits] (restores the OSD afterwards).

Translations live in src/i18n/<lang>.json, keyed by a short hash of the English text. python tools/extract_strings.py --check lists every UI string and shows what is missing in each language; corrections and new languages are welcome.

🔗 Related

  • AmbientLightCalibrate: tray app that keeps monitor brightness matched to room light with the same colorimeter.

❤️ Support

If HDRDisplayCalibrate is useful to you, you can support its development:

QR code: Monobank jar Monobank jar: send.monobank.ua/jar/7AVDtzYypi
Jar card number: 4874 1000 3425 0244

A ⭐ on GitHub and a mention in your videos or posts help just as much. Thank you!

📄 License and credit

Apache License 2.0, see LICENSE and NOTICE. You may use, change and redistribute it, including commercially and in AI training or AI-generated code, as long as you keep the NOTICE and credit "Based on HDRDisplayCalibrate by Andrii Orlov (DeadSue)".

ArgyllCMS (AGPL-3.0, by Graeme W. Gill) is not bundled; it is run as external command-line tools.


🇺🇦 Українською

Калібрування SDR і HDR дисплеїв у Windows звичайним колориметром. Аналог DisplayCAL, який уміє ще й Windows HDR: програма міряє екран і створює рідний для Windows MHC2-профіль — точний PQ до реального піку монітора, D65 на всіх рівнях, правильні кольори й справжні пік/чорний для ігор. Без фонових «фільтрів» і тестових HDR-патернів: результат застосовує сама Windows.

Можливості

  • 🌈 HDR-калібрування (MHC2) — майстер у 5 кроків: замір як є → пошук реального піку → PQ-крива з м'яким спадом → баланс сірого по каналах → компенсація SDR-кривої, яку Windows накладає і в HDR.
  • 🖥️ SDR-калібрування — точка білого, яскравість, гамма 2.2 / 2.4 / BT.1886 / sRGB / L*, корекція під світло кімнати, ICC-профілі на 120…2000 патчів.
  • 📈 Живий замір (~1,5 с на замір) з підказками по R/G/B і 🎛️ Авто-OSD — DDC/CI сам виставляє RGB і яскравість монітора.
  • ✅ Перевірка і звіт — ΔE2000, гамма, контраст, таблиці й графіки.
  • 🔺 Гамут — покриття sRGB, Adobe RGB, DCI-P3, Rec.2020 трикутниками (xy / u′v′) і 3D-тілом у Lab.
  • 🧊 3D-LUT для madVR, DaVinci Resolve / OBS / ігор (.cube), eeColor і ReShade.
  • 🪟 Патчі на весь екран або у вікні, яке можна перетягувати й змінювати розмір.
  • 🛡️ Esc миттєво скасовує будь-який замір і повертає калібрування.
  • 🌍 11 мов інтерфейсу й підказка до кожного елемента.

Потрібно: Windows 11, ArgyllCMS і колориметр (i1Display Pro, ColorMunki Display, Spyder…). Завантажте HDRDisplayCalibrate.exe з Releases — один файл, без встановлення.

Перевірено на реальному моніторі (ASUS VG34VQL3A + ColorMunki Display): SDR — білий ΔE 1,15, сірі ΔE сер. 0,97; HDR — білий D65 (x 0,3124 y 0,3304), відстеження PQ 93–97 %, пік 270 кд/м². Скриншоти — у docs/run.

HDR-профіль починає діяти лише після вибору в Параметри → Дисплей → Колірний профіль при увімкненому HDR — майстер встановлює профіль і відкриває цю сторінку.

Ліцензія Apache 2.0. Використовуйте, змінюйте й поширюйте (зокрема для навчання ШІ та в коді, згенерованому ШІ), зберігаючи NOTICE і вказуючи «Based on HDRDisplayCalibrate by Andrii Orlov (DeadSue)».

Підтримати розробку: Банка Monobank · картка Банки 4874 1000 3425 0244 або QR-код вище. Дякую!

About

SDR and HDR display calibration for Windows with an ordinary colorimeter: native ICC and MHC2 HDR profiles, live meter, DDC/CI auto OSD, gamut (2D/3D), 3D LUT export. ArgyllCMS backend, WPF Fluent.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages