I made a tool for applying 3D LUTs to the Windows desktop

Home Forums General Discussion I made a tool for applying 3D LUTs to the Windows desktop

Viewing 15 posts - 16 through 30 (of 47 total)
  • Author
    Posts
  • #30725

    MW
    Participant
    • Offline

    Reporting back, seems to work fine with the setting above. But I chose the gamma 2.2 option for washed out blacks on my IPS monitor. For color aware apps I created a sRGB icm with gamma 2.2 and set that as default in windows color settings.

    BTW I suggest adding the app to startup for convenience: https://support.microsoft.com/en-us/windows/add-an-app-to-run-automatically-at-startup-in-windows-10-150da165-dcd9-7230-517b-cf3c295d89dd

    Thanks a lot for making the tool!

    • This reply was modified 2 months, 2 weeks ago by MW.
    • This reply was modified 2 months, 2 weeks ago by MW.
    #30727

    Vincent
    Participant
    • Offline

    Curious, should our normal ICC/ICM profiles be disabled when running your program?

    Curious, should our normal ICC/ICM profiles be disabled when running your program?

    Yes. Since the LUT basically turns your monitor’s color space into sRGB, you must make sure not to have another ICC (except the default sRGB one) loaded. Otherwise, a color-aware application would perform an additional color transform that would result in colors being off. This also means that you should probably embed the VCGT curves into the LUT when generating it, otherwise you’d have to somehow make sure that those are always loaded as well.

    Maybe not.

    Think of a laptop or nvidia desktop plugged to a monitor: banding. Also for photo use you may want to use native gamut including thone slightly bigger than sRGB “srgb displays”.

    What can those guys do?

    -Define a synth profile with same illuminant white and illuminant relatuve R, G &B columns. Same nominal desired “ideal gamma”.

    -LUT3D creator, “ideal synth colospace” as source, “DisplayCAL calibration profile” as destination, apply VCGT

    -in OS settings set idealized synth profile as default display profile.

    => now you have something close to a HW calibration monitor with typical idealized matrix 1xTRC (minimal rounding errors by PS, Ai, In, etc) profile provided by Color Navigator or Spectraview II.

    I’ve tested this on a well behaved display (can be matrix modeled) but bad uncalibrated grey and it truns out ver smooth & accurate.
    I’ve tested this also on a bad TN laptop described with a XYZLUT profile and a huge white point correction, tried to “idealize” it to a matrix profile using laptop primaries, but resulting calibration had banding on non colored gradients. Much more than on 8bit LUT intel iGPU. Maybe it was too extreme for a 65^3 vs 256 entries on VCGT/ICC.
    Anyway, despite that bad behaved TN laptop failure, this procedure should work fro all IPS displays without HW calibration or for those which HW calibration is not realiable at all (Del, Benq, Lg, Asus… you know).

    Also it can be used too for mobile app designers who have a widegamut. You can try to simulate AMOLEDs ans such, since andoid simulators run non color managed AFAIK. Profile remotely tablet/phone on a non color managed browser. Set it as source profile, your display profile as destination. Create LUT3D and done. Whith a few clicks you’ll see how your app/game looks on those saturated displays, even make a little catalog to check.

    #30729

    Jaylumx
    Participant
    • Offline

    I’ve been working on a program that applies 3D LUTs to the entire Windows desktop by hooking into DWM (the desktop window manager). Can’t post a direct link as I believe that’s what caused my previous post to be stuck in the moderation queue, but you can find it on GitHub under ledoge/dwm_lut.

    Assuming you’re on a recent build of Windows 10, getting it to work should be as simple as downloading the latest release archive and following the instructions from the README on the repo.

    In your release notes, you mention that you cannot apply a 3DLUT in HDR mode.  In build 134 of MadVR, Madshi  did just that.  In the Calibration menu, when you use Calibrate this display by using external 3DLUT files and place a SDR 3DLUT in the BT2020 section, if you use Tone map HDR using pixel shaders (HDR menu) and output video in HDR format, it will apply that 3DLUT in HDR for whatever video you are watching.

    #30730

    dogelition
    Participant
    • Offline

    In your release notes, you mention that you cannot apply a 3DLUT in HDR mode.  In build 134 of MadVR, Madshi  did just that.  In the Calibration menu, when you use Calibrate this display by using external 3DLUT files and place a SDR 3DLUT in the BT2020 section, if you use Tone map HDR using pixel shaders (HDR menu) and output video in HDR format, it will apply that 3DLUT in HDR for whatever video you are watching.

    Right, that just refers to the fact that my tool doesn’t really support it. I could implement it in theory but 1. I don’t know enough about how Windows handles HDR to do it properly and 2. I don’t even have access to an HDR display for testing.

    #30731

    MW
    Participant
    • Offline

    I don’t think there’s any public code on interfacing with the HDR mode. I’d expect DisplayCal/ArgyllCMS and MadVR would take advantage of it if that were the case.
    MadVR HDR calibration uses the SDR mode of the monitor.

    • This reply was modified 2 months, 2 weeks ago by MW.
    #31188

    harlekin
    Participant
    • Offline

    @dogelition First of all thank you very much for creating this tool, you literally saved me from having to buy another monitor (LG 27GL850 only has an sRGB profile thats horrible, and in all other display modes it gives you a wide color gamut).

    I’ve already done one 3d lut calibration and have a question regarding signal level settings.

    I presume that you keep everything lut creation related to FULL RGB (input and output) in all cases, but I thought I’d ask, what the lut creation options in regard to full/limited RGB would be, if you have set your graphicscard to output YCbCr limited.

    Is the internal calculation always done in full rgb? Or does the 3D lut(s settings) need to change to reflect a YCbCr limited signal output set at the graphics cards settings level – or not, as the monitor does have the black level set to limited and displays colors correctly (even though not the entire 0-255 range).

    I’m asking, because currently I see more black bars crushing in VLC, with my current 3d lut applied.

    Aside from that, best picture I’ve seen on that monitor. 🙂

    Thank you,

    h.

    #31189

    Vincent
    Participant
    • Offline

    AFAIK desktop window manager, at SO level, is full range RGB. GPU stage, 1D LUT, HDMI range and such other things happen at a latter stage.

    #31192

    harlekin
    Participant
    • Offline

    @Vincent Thank you. 🙂 Just did a limited/limited run and can verify, that that didnt go as expected. 😉 (heavy dark brown tint… 😉 )

    Will do another one tomorrow with limited in/full out, just to verify that as well. 🙂

    So far I only averaged dE 2000 of 0.44 avg on the Calman Color Checker SE pattern on verification (full/full), so sad… 😉

    • This reply was modified 1 month, 1 week ago by harlekin.
    #31194

    Vincent
    Participant
    • Offline

    IDNK which profile are using as input.

    As a starting point to minimize potential errors:
    -reprofile use BPC on display profile
    -relative balck outut 100% on LUT3D
    -HCFR with reference set to black compensation

    Then test again. If all goes OK then you can narrow your issues finding what happened changing those settings.

    #31195

    harlekin
    Participant
    • Offline

    @Vincent Thank you, will try Black Point compensation and relative black output 100%. HCFR I only used for validation, so sure – I could set a target with black compensation there as well. Using black compensation for the LUT would fix the issue for sure – I just wanted to eliminate bigger potential causes like a full/limited mismatch when reading patterns.

    (Will do that tomorrow with a limited in/full out run (both settings at the lut creation step) then report back.)

    #31196

    Vincent
    Participant
    • Offline

    @Vincent Thank you, will try Black Point compensation and relative black output 100%.

    If you wish you can re use the GPU calibration loading it and then set DisplayCAL in profile only mode (calibration set all to native with you old calibration loaded), attaching old VCGT before profiling

     I just wanted to eliminate bigger potential causes like a full/limited mismatch when reading patterns.

    As said before I would say that Windows desktop composition (raw RGB numbers in apps) and DWM runs in full range. Going to limited range happens at GPU at a later stage.

    #31204

    dogelition
    Participant
    • Offline

    As said before I would say that Windows desktop composition (raw RGB numbers in apps) and DWM runs in full range. Going to limited range happens at GPU at a later stage.

    Indeed – I can confirm this.

    #31258

    zunderholz
    Participant
    • Offline

    What is the advantage of doing this? Just a higher quality LUT? If I’m understanding correctly, I’d create the lut, then set my displaycal profile loader to the standard srgb profile, then apply the lut for my display using your tool?

    Also, many questions … do I want to calibrate with displaycal and set my tone response curve to “as measured” to avoid generating a 1D LUT? I suppose having a 1D LUT still applies to exclusive fullscreen applications?

    • This reply was modified 1 month ago by zunderholz.
    #31260

    zunderholz
    Participant
    • Offline

    Actually my display doesn’t have a working srgb mode. The srgb mode is just “less wide mode”. This should actually create a correct srgb clamped gamut, no?

    #31261

    Jaylumx
    Participant
    • Offline

    What is the advantage of doing this? Just a higher quality LUT? If I’m understanding correctly, I’d create the lut, then set my displaycal profile loader to the standard srgb profile, then apply the lut for my display using your tool?

    Also, many questions … do I want to calibrate with displaycal and set my tone response curve to “as measured” to avoid generating a 1D LUT? I suppose having a 1D LUT still applies to exclusive fullscreen applications?

    I do not think you even need Displaycal loader running as it should work independently of it.  I got it to work by disabling Displaycal loader and removing the ICC profile in the Colour Management options.  The correct colours were applied and I got the minimize and apply commands to work but I am having difficulty getting it to run when windows starts.  I have placed the shortcut (with the appropriate commands) in the start-up folder and also created a new task in task scheduler but it will not start with windows or login.  I also wish that the programs would automatically disable/enable when HDR mode is detected/disabled.

    EDIT:  Set tone curve to Gamma 2.2 as well as check Apply calibration (VCGT).  As I mentioned you do not need to have Displaycal loader running.

    • This reply was modified 1 month ago by Jaylumx.
Viewing 15 posts - 16 through 30 (of 47 total)

You must be logged in to reply to this topic.

Log in or Register

Display Calibration and Characterization powered by ArgyllCMS