66 * Source: https://github.com/hyprwm/Hyprland/issues/1140#issuecomment-1335128437
77 */
88
9+ #version 300 es
910precision highp float ;
10- varying vec2 v_texcoord;
11+
12+ in vec2 v_texcoord;
1113uniform sampler2D tex;
14+ out vec4 fragColor;
1215
1316/* *
1417 * Color temperature in Kelvin.
@@ -34,32 +37,33 @@ const float LuminancePreservationFactor = 1.0;
3437// valid from 1000 to 40000 K (and additionally 0 for pure full white)
3538vec3 colorTemperatureToRGB(const in float temperature) {
3639 // values from: http://blenderartists.org/forum/showthread.php?270332-OSL-Goodness&p=2268693&viewfull=1#post2268693
37- mat3 m = (temperature <= 6500.0 ) ? mat3 (vec3 (0.0 , - 2902.1955373783176 , - 8257.7997278925690 ),
38- vec3 (0.0 , 1669.5803561666639 , 2575.2827530017594 ),
39- vec3 (1.0 , 1.3302673723350029 , 1.8993753891711275 ))
40- : mat3 (vec3 (1745.0425298314172 , 1216.6168361476490 , - 8257.7997278925690 ),
41- vec3 (- 2666.3474220535695 , - 2173.1012343082230 , 2575.2827530017594 ),
42- vec3 (0.55995389139931482 , 0.70381203140554553 , 1.8993753891711275 ));
43- return mix (clamp (vec3 (m[0 ] / (vec3 (clamp (temperature, 1000.0 , 40000.0 )) + m[1 ]) + m[2 ]), vec3 (0.0 ), vec3 (1.0 )),
44- vec3 (1.0 ), smoothstep (1000.0 , 0.0 , temperature));
40+ mat3 m = (temperature <= 6500.0 )
41+ ? mat3 (vec3 (0.0 , - 2902.1955373783176 , - 8257.7997278925690 ),
42+ vec3 (0.0 , 1669.5803561666639 , 2575.2827530017594 ),
43+ vec3 (1.0 , 1.3302673723350029 , 1.8993753891711275 ))
44+ : mat3 (vec3 (1745.0425298314172 , 1216.6168361476490 , - 8257.7997278925690 ),
45+ vec3 (- 2666.3474220535695 , - 2173.1012343082230 , 2575.2827530017594 ),
46+ vec3 (0.55995389139931482 , 0.70381203140554553 , 1.8993753891711275 ));
47+
48+ return mix (
49+ clamp (m[0 ] / (vec3 (clamp (temperature, 1000.0 , 40000.0 )) + m[1 ]) + m[2 ], 0.0 , 1.0 ),
50+ vec3 (1.0 ),
51+ smoothstep (1000.0 , 0.0 , temperature)
52+ );
4553}
4654
4755void main() {
48- vec4 pixColor = texture2D (tex, v_texcoord);
49-
50- // RGB
51- vec3 color = vec3 (pixColor[0 ], pixColor[1 ], pixColor[2 ]);
56+ vec4 pixColor = texture(tex, v_texcoord);
57+ vec3 color = pixColor.rgb;
5258
5359#ifdef WithQuickAndDirtyLuminancePreservation
54- color *= mix ( 1.0 , dot (color, vec3 (0.2126 , 0.7152 , 0.0722 )) / max ( dot (color, vec3 ( 0.2126 , 0.7152 , 0.0722 )), 1e-5 ),
55- LuminancePreservationFactor);
60+ float lum = dot (color, vec3 (0.2126 , 0.7152 , 0.0722 ));
61+ color *= mix ( 1.0 , lum / max (lum, 1e-5 ), LuminancePreservationFactor);
5662#endif
5763
5864 color = mix (color, color * colorTemperatureToRGB(Temperature), Strength);
5965
60- vec4 outCol = vec4 (color, pixColor[3 ]);
61-
62- gl_FragColor = outCol;
66+ fragColor = vec4 (color, pixColor.a);
6367}
6468
6569// vim: ft=glsl
0 commit comments