Tom94 / tev

High dynamic range (HDR) image viewer for graphics people
BSD 3-Clause "New" or "Revised" License
1.08k stars 86 forks source link

Forcing 10-bit and/or HDR on startup #186

Open agentirons opened 2 years ago

agentirons commented 2 years ago

I have attempted to use tev on my Windows 10 laptop, connected via HDMI to a 10-bit HDR monitor (LG 27GP950-B), but when the console window opens it always states: INFO Launching with 8 bits of color and LDR display support.

I have confirmed that HDR is turned on in Windows display settings, as well as the Nvidia control panel. I've tried switching resolutions and framerate lower to enable higher bit depth. I have an iMac M1 that connects to the monitor as well, and it has no trouble running tev in HDR mode and correctly displaying a test .exr I have, so I know the monitor will do it and the cable is good.

Is there any way to force these options as flags that I'm not seeing?

diiigle commented 2 years ago

Looks like HDR is supported by nanogui only on Mac so far. I don't see a way to enforce it a the moment - only to disable it (ldrFlag).

Tev

https://github.com/Tom94/tev/blob/93d05c5cbb44f1b129c3455eed8490d5c9978e40/src/main.cpp#L467-L473

Nanogui

https://github.com/mitsuba-renderer/nanogui/blob/abd03f651b2e8fd168c30a5301d5348712198776/src/common.cpp#L210-L216

Tom94 commented 2 years ago

Hi there, unfortunately nanogui seems to only detect HDR capability (and, I suppose, support it) on Apple / Metal. See

std::pair<bool, bool> test_10bit_edr_support() {
#if defined(NANOGUI_USE_METAL)
    return metal_10bit_edr_support();
#else
    return { false, false };
#endif
}

However, you could try forcibly using a floating-point frame buffer by hardcoding the capability10bit and capabilityEdr variables, mentioned above by @diiigle , to true and checking whether it gives reasonable results.