Coder Social home page Coder Social logo

dwm_lut's People

Contributors

ledoge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dwm_lut's Issues

icc profile

Hi, I'm pretty new to color calibration and I got a (stupid) question. When I use your application, so I have to remove the current icc profile? Not using displaycal(only during calibration to get the 3dlut file). Thank you!

blank

i suddenly saw that my temperature on my cpu was over 10 degrees hotter then it normal at idle then i ran malware bytes and it discovered a trojan horse with a crypto miner... DO NOT DOWNLOAD THIS!

Incompatible with HDCP Protected Content (Netflix)

When playing DRM protected content, HDCP activates and causes one or two black flashes of the screen. The LUT is unloaded. The application status becomes "Inactive". And the video begins playing.

As a reminder, High-bandwidth Digital Content Protection (HDCP) is used for DRM on video streaming services.

Instructions:

  1. Launch dwm_lut and press Apply
  2. Log into a video streaming platform, like Netflix, Amazon Prime, BBC iPlayer, etc.
  3. Play a video
    (I recommend testing on Firefox. It shows a HDCP icon in the address bar whenever it kicks in.)

I don't know what you could do about this. Maybe reactivate once HDCP is no longer active?

Unexpected behaviour with chat windows, open folders and on startup

  1. When a skype chat window is active and you apply a 3dlut, the upper part of the screen doesn't have the 3dlut applied;
  2. When minimizing a folder that is open for 5+ minutes, the last frame of the fade animation stays on-screen, you have to refresh in-order for it to disappear.
  3. On startup sometimes the 3dlut is not applied, you have to disable and enable it again to work properly.

OS: Win10 x64 21h2

Error - Access to path 0_0.cube is denied.

Hi ledoge,

I'm getting the following error when I hit the Apply button, after selecting a LUT to apply.
Any ideas on what might be causing it?

For context, the very first time I ran the tool it worked fine, then after trying to load a different LUT file it started throwing this error and I wasn't able to get it working again.

image


My OS details:

Edition Windows 11 Home
Version 21H2
Installed on ‎23/‎08/‎2022
OS build 22000.856
Experience Windows Feature Experience Pack 1000.22000.856.0

Keybind for cycling individual .cube files

A scenario where this is useful: sRGB EOTF vs power gamma 2 content, where you can use the key-bind for trial and error indemnification or when you already know you need sRGB.
Video games, and movies, already get all the love they need on IPS from Gamma 2.2 but for proper internet browsing and experience with some images, it's necessary to often switch back to the sRGB .cube

LUTs for multiple external monitors sharing a single video port/connector

I've noticed that dwm_lut ties to the DisplayPort Connector instead of each unique monitor which is causing problems for me since I dock my laptop at multiple docks. This means that I need to go in and manually change the SDR LUT every time I dock my computer at a different desk (where I've already calibrated that monitor).

Would it be possible to change dwm_lut so that it can uniquely identify each display by serial number or something like that? 

I assume this would then also fix another problem I've experienced which is that the LUT doesn't load if I switch video ports on my computer. For example, if I'm using DisplayPort #1 and I re-plug the monitor into DisplayPort #2 then it doesn't load the LUT. Also, I then load the LUT to DisplayPort #2 then it won't load again if I switch back to DisplayPort #1. I assume this is also related to dwm_lut being tied to the "Connector".

Thanks!

Wont start ( any version in the release )

It used to work on my PC nothing changed i dont think and ive tried deleting updates using both releases and every release each dev made. It will start then show the little icon in the bottom right (i cant interact with it) then it will disappear. No error on crash and im windows 10.

Clarification on how to use in combination with DisplayCAL

I must be doing something wrong here....

So, I have a benq SW270C.

  1. I started windows fresh. No DisplayCAL profile loader running, no dmw_lut running, all color profiles removed in windows.
  2. I hardware calibrated the screen with Palette Master Element to it's native color gamut.
  3. I ran a Calibrate & Profile in DisplayCAL, which generated a ICC profile
  4. I loaded that profile into windows and I ran a Verification step in DisplayCAL. Everything passed, calibration looking good.
  5. After loading the ICC profile in windows, color managed application behave like they should, windows desktop and other application show over saturated color, as expected.

So far so good and I've been doing this ever since I got this monitor. But then...

  1. I turn that ICC profile into a 3DLUT using DisplayCAL, using it's default setting, and save it to a file.
  2. I remove all ICC profiles from my monitor in windows's color management.
  3. I make sure DisplayCALs profile loader isn't running.
  4. I start dwm_lut, load the 3DLUT cube file and assign it to my monitor as the SDR profile
  5. The windows desktop isn't over saturated anymore, and it looks like color managed applications are also working as expected. No washed out colors, no overly saturated colors. Can't judge color correctness though.

But when I run DisplayCAL's Verification step again, the report shows the colors are completely wrong. Here's the summary.

Criteria Nominal Recommended # Actual Result
Measured vs. assumed target whitepoint ΔE*00 <= 2 <= 1   4.61 NOT OK ✖
Measured vs. display profile whitepoint ΔE*00 <= 1   4.95  
Average ΔE*00 <= 1.5 <= 1    5.39 NOT OK ✖
Maximum ΔE*00 <= 4 <= 3 322 11 NOT OK ✖


What's happening here? Why is DisplayCAL's verification step failing?

Did I miss something fundamental in my workflow above?

Question regarding power consumption

Hi, first of all I would like to greatly thank ledoge for making this working system-wide lut loader (it is better than Dell PremierColor which causes posterization and banding).

One issue I noticed is the higher power consumption perhaps due to dithering? In YouTube I am seeing 15W power consumption vs 3W without dwm_lut. I am using a 3D lut for sRGB->Display P3 conversion since I have a P3 wide gamut monitor and Windows apps are all oversaturated by default.

If I use Intel Graphics Command Center to turn down saturation (similar effect to applying a desaturate lut), power consumption is unchanged. There is no color banding either. However this is worse than using an sRGB->Display P3 lut as it causes inaccurate blue colors (P3 covers a greater range of red and green but not much increase in blue, so a generic desaturate filter doesn't match up with sRGB perfectly)

Thus, I am wondering how Intel Graphics Command Center is able to do gamut mapping/color mapping without an increase in power consumption, and if it is possible to have dwm_lut use the same method?

Latency

Is there any way to decrease the latency on this piece of software, it doubles when opened, from 5.5 to 13-15.

Thanks

Installer and Automatic Start/Restart

@ledoge Have you considered creating an installer/uninstaller with an option in dwm_lut to automatically start with Windows and then also automatically restart it when the power state has changed?

I've accomplished the automatic start and restart on power state change here with a scheduled task: https://hub.displaycal.net/forums/topic/i-made-a-tool-for-applying-3d-luts-to-the-windows-desktop/page/10/#post-34665

I think this would make the tool even more accessible in a professional environment.

Apply lut erro

I tried to apply the AIW_Vondel1 I downloaded, but the DwmLutGUI app kept showing: “failed to load or initialize dll. This probably means that a lut file is malformed or that dwm“

Inacuracy in the shadows

I found it looks different when I apply my calibration LUT to LUT stress test image in Resolve, compared to loading it into DwmLut. I can't show it, because (luckily) screenshots aren't affected by the LUT, but it makes shadows desaturated, compared to applying the LUT in Resolve. Also it looks like there is some downsizing of the cube size of the LUT before applying the LUT. Probably this is the reason for the artifact I got?

Adaptive Sync Not Working

Hi,

Thanks for making this program! When I apply a 3dlut, Adaptive Sync is disabled. I do not game, but the windows Movies & TV UWP video player uses Adaptive Sync to match the display + video framerates to eliminate judder. Is this something that can be fixed?

Extended Display and 2 GPU's

@ledoge First of all I want to thank you for your work and for this product. It is trully a great tool and it saved me the trouble and money because I was set on buying a new monitor before finding this tool!

Now, the problem I encountered. My laptop has 2 GPU's. An integrated one and a dedicated one. My laptop is always in hybrid mode because I usually use my laptop on different places and I need the battery life when I'm on the go.
If the laptop is in hybrid mode, when I use both monitors at the same time (in extended mode), both monitors are assigned the same number (1) in DWM_LUT. This causes the program to assign the lut but a few seconds later the screen goes black and then the program goes to the state of "inactive".
If I disable hybrid mode (dedicated gpu only), the program assigns different numbers to the displays, Laptop display number one and external display number 2, and the luts are applied.

Maybe a simple fix would be to not allow the program to assign the same number to different monitors. If a number is already assigned, then the program assigns a different number.

iGPU + dGPU (same number applied to both monitors)
iGPU + dGPU

dGPU only (different number applied to the monitors)
dGPU

Debanding option

I hope GitHub issues are the right place for feature requests, if not, feel free to close this.

I stumbled upon this repo by accident when I was calibrating my friend's brand new OLED TV last weekend and I am absolutely loving it so far. I can't believe I didn't find it sooner, because I posted around 5 years ago on ReShade's forum trying to get ReShade to do what you are doing by hooking the DWM and have been desperate to find something since then.

Which leads me right into this request. Web content, specifically YouTube, is often rife with banding and the video rendering pipelines of desktop browsers like Chrome and Firefox are optimised for performance and battery life and so do all levels conversion in 8 bit, making the banding even worse.

I already noticed a reduction in banding when using dwm_lut over the standard GPU gamma table, but the inclusion of a debanding shader would make it even better.

ReShade already includes an open source debanding effect, but it is written in ReShade's own effect language which according to its author is based on HLSL. I hope porting it to actual HLSL is easy.

https://github.com/crosire/reshade-shaders/blob/slim/Shaders/Deband.fx

Thanks!

PNG LUT Support

Hi there,

I'm wondering if PNG LUTs (like those used for ReShade) can be supported. I haven't been able to find a tool that can convert my PNG LUTs into .CUBE.

Automation

Hello,
I found this great application thanks to the good people at the DisplayCAL forum. Here is the link to the background thread that lead to creation of this request here: https://hub.displaycal.net/forums/topic/8-bit-vs-10-bit-monitor-whats-the-practical-difference-for-color/#post-31082

My use case:
I have a wide color gamut gaming monitor with 160% sRGB and 96% DCI-P3. Running both photo apps and other non-color managed apps and games on Windows. Issue: Oversaturated colors in non-color managed apps, games and Windows desktop.

Your application appears to solve the issue very nicely. The question is now about more automation for creation of the required profiles, LUTs, etc and automation of enabling and switching between the active profiles.

Vincent at DisplayCAL forum suggested creation of a synth profile, creating a LUT based on it and using it in your app, in combination with default (I assume sRGB) profile in OS. This should be working great for color managed apps.
Another usage is to create a calibration DisplayCAL profile for the monitor, create a LUT based on it and use it in your app, which works well for Windows desktop, games and other non-color managed apps, but desaturates color managed apps too much.

Hence the need of switching both active OS profile and the active LUT in your app - 2 pairs of profiles and LUTs at least.

And therefore the request for more automation, e.g. integration with the tray app of DisplayCAL, activation of combinations of profiles and LUTs, creation of the synth profile from the calibrated profile. The sky is the limit :)

At the simples level, can I ask for documentation on how to configure activating the LUT on Windows startup in the latest GUI version? I assume it is the latest and greatest version to be used.

I hope I explained the request in an clear way (I am new to the topic and still trying to learn to get enough understanding).

Windows defender

Hello there, general ledoge, thanks again for your awesome work :) however I can't use the 3.2 version, the antivirus deletes .exe immediately with a message "Trojan:Win32/Wacatac.B!ml", I've used every single version and it's the only one that behaves like that, sadly

Works in fullscreen apps and breaks g-sync

I'm surprised to find out that contrary to the description, the lut does work in exclusive fullscreen apps.

At the same time, it breaks VRR. I'm on Nvidia with g-sync compatible monitor. Using monitor's OSD I see that when dwm_lut is active, refresh rate locks to native regardless of FPS cap and also when GPU is overloaded and FPS drops naturally, causing visible stutter. When disabled, refresh rate follows FPS cap as expected without stutter. Confirmed with 3 games. Same result with full screen optimizations disabled and enabled, and with windowed g-sync enabled or disabled, and it's not caused by the GUI.

I also notice that it significantly increases GPU load in game (50% to 80% in one, and 70% to 85% in another game, capped FPS), probably due to the considerable VRAM bandwidth usage mentioned in the other issue.

Game Uninjecting Filters on W11 21H2

Anyone else struggling with this? I have downloaded multiple different loaders and the game will always uninject the filters. I am curious if anyone else is running into this issue and if they are, how they fixed it

how to create cube file from icm profile ?

hey im using an icm profile in novideo_srgb just fine. scrolling through the hue in photoshop color picker results in no obvious banding. using the same profile converted to a cube file used in dwm_lut gives heavy banding instead . i guess its not the fault of the program but rather a conversion issue.

I used DisplayCAL-3DLUT-maker.exe to convert back but maybe you know a better way , would be nice if we could just load the icm like novideo_srgb does

Incorrect color when 10bit wide gamut monitor connect to PC through HDMI port which only support 8bit color

So I have one PC connecting to monitor A and B through DP ports. However, monitor A also connects to the same PC over an HDMI port with a KVM switch in between. Monitor A, therefore, is identified as two displays in the system, but as they are in duplicate mode, still shows same image.

Here comes the problem. When I have monitor A connects only through HDMI or DP, the 3dlut works great. But if I connect it through HDMI and DP at the same time, the color is washed out.

The color of monitor B is not affected though.

UI Suggestion: multiple LUTS for a monitor in UI

Hi, I would like to thank you for the tool and suggest an UI change:
maybe it is possible to make UI look more like a DisplayCal Loader - where you select a monitor and below you have a selectable list of LUT files for this monitor.
For example, in my case I have 3 profiles - for Full Gamut L75, Full Gamut L100 and sRGB emulation L100 - currenly it is not very convenient to select the profile - you have to navigate to a folder every time (multiple folders if profiles are in different folders).

Compile error

Hello, nice tool!

I have this error in compiling dll dwm_lut.c:4:10: fatal error: MinHook.h: No such file or directory

I installed msys2 and this packages: mingw-w64-x86_64-gcc and mingw-w64-x86_64-MinHook.

In C:\msys64\mingw64 i see MinHook.h in include.

I try to compile from the UCRT64 msys console

What could be the problem?

Thanks!

Windows 11 Support

Any chance we can get a new build that works with Windows 11? Getting an error when trying to apply the LUT file.

image

Plan to integrate into DisplayCAL and replace their current profile loader?

Firstly, thank you for the work on this! I stumbled upon this randomly when I was searching for applying 3D LUT in Windows.

I know you have a long thread in DisplayCAL forum. I wonder if it's a good idea to use dwm_lut to replace/enhance DisplayCAL's profile loader? The motivation for this integration is mainly so that when user does a calibration, DisplayCAL will know to disable the LUT temporarily.

If integration is not possible, is it possible for dwm_lut to detect the start of DisplayCAL's calibration session and disable itself, provided DwmLutGUI is running in background?

Why the recommendation to use sRGB default?

Read all the information from the DisplayCAL forum and I still don't understand the recommendation to use the Windows built in sRGB profile as the display profile.

dwm_lut applies the lut to everything displayed on screen but color managed apps would still benefit from an sRGB profile created for the display with DisplayCAL no?

My reasoning is a program needs to know some display characteristics to render stuff correctly otherwise they assume some standard and a sort of reference display and squeeze all pixels displayed into that standard. In most cases they assume a 1:1000 contrast a gamma 2.2 or sRGB tone curve ..., obviously a display is from factory most of the time different than this assumed common denominator standard.

So wouldn't it make sense to create a display profile aka. sRGB in DisplayCAL use it as default ICC profile generate 3DLUT from it with a preferred gamma of 2.2 as an example and apply the 3DLUT with dwm_lut?

My only concern with this approach is vcgt that might be applied 2x (Display CAL profile loader + dwm_lut), not sure if it would be the case. I could set tone curve as measured in DisplayCAL when creating the profile to avoid this.

What are your thoughts on this topic?

My aim is to give apps info about the display like contrast white point and so on via ICC so they don't assume stuff while globally applying a 3dlut on top.

It would just be something like a pixel value going from:
0.2343 -> 0.2143 (what the app thinks it should be in sRGB --> 0.2142 (what the actual lut applied would show at the end)
My concern is app doing this
In file 0.2343 -> 0.2452 (some assumptions in the app without profile) -> 0.2243 final value based on wrong value from the app when dwm_lut is applied.

Hope you get the example and looking forward to your answer.

Windows framerate locked to 30fps when LUTs are enabled

My laptop, even when running off of a power brick, cuts all program frame rates in half when this program applies a LUT. I am running a dedicated graphics card through an Intel graphics adapter. Is there a fix for this? This is not the behavior that I experience on my computer normally, even on battery, and it doesn't happen at all on my desktop computer.

Not working with Intel HD3000

On Windows 11. Says active but no change in color output is seen. Oddly with a generic Microsoft driver active did work as expected. According to GPU-Z the generic driver supports OpenGL 2.1, the Intel driver supports OpenGL 3.1 with many report on the web talking about wonky OpenGL support.

Any testing I can do? Let me know.

Significant FPS drop for WZ2

I was previously using this with an RTX 3070ti with no issues, I upgraded to an RX7900xt and now when I launch the game my frames are almost capped at 120 or something. As soon as I turn it off my frames shoot back up to 200fps. Is this not compatible with AMD or is there a weird setting I am missing somewhere?

PC Build - i9-13900k
32gb ddr4 @3600

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.