Arch Linux BBS - Applications & Desktop Environments
- [SOLVED] xdg-desktop-portal.service not working after update (2026/06/21 16:53)Logging in with SDDM disabled provide the outputs of:$ pacman -Qiikk sway$ pacman -Qs portal$ systemctl --user status xdg-desktop-portal.service xdg-desktop-portal-gtk.service
- Garbled, distorted screens after login (2026/06/21 16:12)Hi,After login my screens are garbled / distored. When I turn off & on my screens, the desktop/screens are working normal.Help is highly appreciated :-)OS: Arch Linux x86_64 Host: B550 AORUS ELITE V2 Kernel: Linux 7.0.12-arch1-1 Display (AG241QG4): 2560x1440 in 26", 144 Hz [External] Display (AG241QG4): 2560x1440 in 26", 144 Hz [External] * DE: KDE Plasma 6.7.0 WM: KWin (Wayland) CPU: AMD Ryzen 5 5600X (12) @ 4.65 GHz GPU: AMD Radeon RX 6700 XT [Discrete]I found in my logBut I dont know what to do with it....jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x2: 0:530(2): error: `fragColor' undeclared jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x3: 0:530(58): error: `fragColor' undeclared jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x4: 0:530(14): error: no matching function for call to `sourceEncodingToNitsInDestinationColorspace(error)'; candidates are: jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x5: 0:530(14): error: vec4 sourceEncodingToNitsInDestinationColorspace(vec4) jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x6: 0:531(2): error: `fragColor' undeclared jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x7: 0:531(40): error: `fragColor' undeclared jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x8: 0:531(14): error: no matching function for call to `nitsToDestinationEncoding(error)'; candidates are: jun 21 17:23:31 archekpy kwin_wayland[1377]: 0x9: 0:531(14): error: vec4 nitsToDestinationEncoding(vec4) jun 21 17:23:31 archekpy kwin_wayland[1377]: Failed to compile fragment shader: 0:530(2): error: `fragColor' undeclared 0:530(58): error: `fragColor' undeclared 0:530(14): error: no matching function for call to `sourceEncodingToNitsInDestinationColorspace(error)'; candidates are: 0:530(14): error: vec4 sourceEncodingToNitsInDestinationColorspace(vec4) 0:531(2): error: `fragColor' undeclared 0:531(40): error: `fragColor' undeclared 0:531(14): error: no matching function for call to `nitsToDestinationEncoding(error)'; candidates are: 0:531(14): error: vec4 nitsToDestinationEncoding(vec4) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 1:#version 140 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 2:#define TRAIT_MAP_TEXTURE 1 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 3:#define TRAIT_UNIFORM_COLOR 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 4:#define TRAIT_MODULATE 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 5:#define TRAIT_ADJUST_SATURATION 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 6:#define TRAIT_TRANSFORM_COLORSPACE 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 7:#define TRAIT_MAP_EXTERNAL_TEXTURE 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 8:#define TRAIT_MAP_MULTI_PLANE_TEXTURE 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 9:#define TRAIT_ROUNDED_CORNERS 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 10:#define TRAIT_BORDER 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 11:#define TRAIT_YUV_CONVERSION 0 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 12:#define KWIN_LEGACY jun 21 17:23:31 archekpy kwin_wayland[1377]: line 13:#define PLASMA6 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 14: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 15:// This file is automatically generated during the build process. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 16: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 17:////////////////////////////////////////////////////////////////////////////////////////// jun 21 17:23:31 archekpy kwin_wayland[1377]: line 18:// ) ( // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 19:// ( /( ( ( ) ( ( ( ( )\ ) ( ( // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 20:// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 21:// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 22:// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 23:// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 24:// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 25:// |__/ // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 26:////////////////////////////////////////////////////////////////////////////////////////// jun 21 17:23:31 archekpy kwin_wayland[1377]: line 27: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 28:// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> jun 21 17:23:31 archekpy kwin_wayland[1377]: line 29:// SPDX-License-Identifier: GPL-3.0-or-later jun 21 17:23:31 archekpy kwin_wayland[1377]: line 30: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 31:////////////////////////////////////////////////////////////////////////////////////////// jun 21 17:23:31 archekpy kwin_wayland[1377]: line 32:// This file is automatically included in each shader. // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 33:////////////////////////////////////////////////////////////////////////////////////////// jun 21 17:23:31 archekpy kwin_wayland[1377]: line 34: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 35:// --------------------------------------------------------------------- standard uniforms jun 21 17:23:31 archekpy kwin_wayland[1377]: line 36: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 37:// Each shader can access these standard input values: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 38: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 39:// vec2 iTexCoord: Texture coordinates for retrieving the window input color. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 40:// bool uIsFullscreen: True if the window is maximized or in fullscreen mode. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 41:// bool uForOpening: True if a window-open animation is ongoing, false otherwise. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 42:// float uProgress: A value which transitions from 0 to 1 during the animation. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 43:// float uDuration: The duration of the current animation in seconds. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 44:// vec2 uSize: The size of uTexture in pixels. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 45:// float uPadding: The empty area around the actual window (e.g. where the shadow jun 21 17:23:31 archekpy kwin_wayland[1377]: line 46:// is drawn). For now, this will only be set on GNOME. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 47: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 48:// Furthermore, there are two global methods for reading the window input color and jun 21 17:23:31 archekpy kwin_wayland[1377]: line 49:// setting the shader output color. Both methods assume straight alpha: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 50: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 51:// vec4 getInputColor(vec2 coords) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 52:// void setOutputColor(vec4 outColor) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 53: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 54:uniform bool uForOpening; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 55:uniform bool uIsFullscreen; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 56:uniform float uProgress; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 57:uniform float uDuration; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 58: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 59:#if defined(KWIN) // -------------------------------------------------------------------- jun 21 17:23:31 archekpy kwin_wayland[1377]: line 60: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 61:#if defined(PLASMA6) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 62:const int sRGB_EOTF = 0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 63:const int linear_EOTF = 1; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 64:const int PQ_EOTF = 2; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 65:const int gamma22_EOTF = 3; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 66:const int BT1886_EOTF = 4; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 67: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 68:uniform mat4 colorimetryTransform; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 69: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 70:uniform int sourceNamedTransferFunction; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 71:/** jun 21 17:23:31 archekpy kwin_wayland[1377]: line 72: * x: min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 73: * y: max luminance - min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 74: */ jun 21 17:23:31 archekpy kwin_wayland[1377]: line 75:uniform vec2 sourceTransferFunctionParams; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 76: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 77:uniform int destinationNamedTransferFunction; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 78:/** jun 21 17:23:31 archekpy kwin_wayland[1377]: line 79: * x: min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 80: * y: max luminance - min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 81: */ jun 21 17:23:31 archekpy kwin_wayland[1377]: line 82:uniform vec2 destinationTransferFunctionParams; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 83: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 84:// in nits jun 21 17:23:31 archekpy kwin_wayland[1377]: line 85:uniform float sourceReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 86:uniform float maxTonemappingLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 87:uniform float destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 88:uniform float maxDestinationLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 89: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 90:uniform mat4 destinationToLMS; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 91:uniform mat4 lmsToDestination; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 92: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 93:vec3 linearToPq(vec3 linear) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 94: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 95: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 96: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 97: const float m1 = 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 98: const float m2 = 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 99: vec3 powed = pow(clamp(linear, vec3(0), vec3(1)), vec3(m1)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 100: vec3 num = vec3(c1) + c2 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 101: vec3 denum = vec3(1.0) + c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 102: return pow(num / denum, vec3(m2)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 103:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 104:vec3 pqToLinear(vec3 pq) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 105: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 106: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 107: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 108: const float m1_inv = 1.0 / 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 109: const float m2_inv = 1.0 / 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 110: vec3 powed = pow(clamp(pq, vec3(0.0), vec3(1.0)), vec3(m2_inv)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 111: vec3 num = max(powed - c1, vec3(0.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 112: vec3 den = c2 - c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 113: return pow(num / den, vec3(m1_inv)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 114:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 115:float singleLinearToPq(float linear) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 116: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 117: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 118: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 119: const float m1 = 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 120: const float m2 = 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 121: float powed = pow(clamp(linear, 0.0, 1.0), m1); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 122: float num = c1 + c2 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 123: float denum = 1.0 + c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 124: return pow(num / denum, m2); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 125:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 126:float singlePqToLinear(float pq) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 127: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 128: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 129: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 130: const float m1_inv = 1.0 / 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 131: const float m2_inv = 1.0 / 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 132: float powed = pow(clamp(pq, 0.0, 1.0), m2_inv); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 133: float num = max(powed - c1, 0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 134: float den = c2 - c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 135: return pow(num / den, m1_inv); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 136:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 137:vec3 srgbToLinear(vec3 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 138: bvec3 isLow = lessThanEqual(color, vec3(0.04045)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 139: vec3 loPart = color / 12.92; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 140: vec3 hiPart = pow((color + 0.055) / 1.055, vec3(12.0 / 5.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 141:#if __VERSION__ >= 130 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 142: return mix(hiPart, loPart, isLow); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 143:#else jun 21 17:23:31 archekpy kwin_wayland[1377]: line 144: return mix(hiPart, loPart, vec3(isLow.r ? 1.0 : 0.0, isLow.g ? 1.0 : 0.0, isLow.b ? 1.0 : 0.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 145:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 146:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 147: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 148:vec3 linearToSrgb(vec3 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 149: bvec3 isLow = lessThanEqual(color, vec3(0.0031308)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 150: vec3 loPart = color * 12.92; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 151: vec3 hiPart = pow(color, vec3(5.0 / 12.0)) * 1.055 - 0.055; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 152:#if __VERSION__ >= 130 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 153: return mix(hiPart, loPart, isLow); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 154:#else jun 21 17:23:31 archekpy kwin_wayland[1377]: line 155: return mix(hiPart, loPart, vec3(isLow.r ? 1.0 : 0.0, isLow.g ? 1.0 : 0.0, isLow.b ? 1.0 : 0.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 156:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 157:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 158: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 159:const mat3 toICtCp = mat3( jun 21 17:23:31 archekpy kwin_wayland[1377]: line 160: 0.5, 1.613769531250, 4.378173828125, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 161: 0.5, -3.323486328125, -4.245605468750, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 162: 0.0, 1.709716796875, -0.132568359375 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 163:); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 164:const mat3 fromICtCp = mat3( jun 21 17:23:31 archekpy kwin_wayland[1377]: line 165: 1.0, 1.0, 1.0, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 166: 0.00860903703793, -0.008609037037, 0.56031335710680, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 167: 0.11102962500303, -0.111029625003, -0.32062717498732 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 168:); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 169: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 170:vec3 doTonemapping(vec3 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 171: if (maxTonemappingLuminance < maxDestinationLuminance * 1.01) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 172: // clipping is enough jun 21 17:23:31 archekpy kwin_wayland[1377]: line 173: return clamp(color.rgb, vec3(0.0), vec3(maxDestinationLuminance)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 174: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 175: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 176: // convert to ICtCp, to properly split luminance and color jun 21 17:23:31 archekpy kwin_wayland[1377]: line 177: // intensity is PQ-encoded luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 178: vec3 lms = (destinationToLMS * vec4(color, 1.0)).rgb; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 179: vec3 lms_PQ = linearToPq(lms / 10000.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 180: vec3 ICtCp = toICtCp * lms_PQ; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 181: float luminance = singlePqToLinear(ICtCp.r) * 10000.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 182: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 183: // apply tone mapping operation (modified Reinhart) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 184: float relativeLuminance = max(luminance / destinationReferenceLuminance, 0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 185: float inputRange = maxTonemappingLuminance / destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 186: float outputRange = maxDestinationLuminance / destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 187: float v = (outputRange * (1.0 + inputRange) - inputRange) / pow(inputRange, 2.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 188: relativeLuminance = relativeLuminance * (1.0 + relativeLuminance * v) / (1.0 + relativeLuminance); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 189: luminance = relativeLuminance * destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 190: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 191: // convert back to rgb jun 21 17:23:31 archekpy kwin_wayland[1377]: line 192: ICtCp.r = singleLinearToPq(luminance / 10000.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 193: color = (lmsToDestination * vec4(pqToLinear(fromICtCp * ICtCp), 1.0)).rgb * 10000.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 194: // and clip, to ensure out-of-gamut values are clipped to the correct white point jun 21 17:23:31 archekpy kwin_wayland[1377]: line 195: return clamp(color, vec3(0.0), vec3(maxDestinationLuminance)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 196:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 197: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 198:vec4 encodingToNits(vec4 color, int sourceTransferFunction, float luminanceOffset, float luminanceScale) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 199: if (sourceTransferFunction == sRGB_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 200: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 201: color.rgb = srgbToLinear(color.rgb) * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 202: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 203: } else if (sourceTransferFunction == linear_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 204: color.rgb = color.rgb * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 205: } else if (sourceTransferFunction == PQ_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 206: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 207: color.rgb = pqToLinear(color.rgb) * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 208: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 209: } else if (sourceTransferFunction == gamma22_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 210: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 211: color.rgb = pow(max(color.rgb, vec3(0.0)), vec3(2.2)) * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 212: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 213: } else if (sourceTransferFunction == BT1886_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 214: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 215: // for bt1886, luminanceScale = a, luminanceOffset = b jun 21 17:23:31 archekpy kwin_wayland[1377]: line 216: color.rgb = luminanceScale * pow(max(color.rgb + vec3(luminanceOffset), vec3(0.0)), vec3(2.4)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 217: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 218: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 219: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 220:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 221: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 222:vec4 sourceEncodingToNitsInDestinationColorspace(vec4 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 223: color = encodingToNits(color, sourceNamedTransferFunction, sourceTransferFunctionParams.x, sourceTransferFunctionParams.y); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 224: color.rgb = (colorimetryTransform * vec4(color.rgb, 1.0)).rgb; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 225: return vec4(doTonemapping(color.rgb), color.a); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 226:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 227: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 228:vec4 nitsToEncoding(vec4 color, int destinationTransferFunction, float luminanceOffset, float luminanceScale) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 229: if (destinationTransferFunction == sRGB_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 230: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 231: color.rgb = linearToSrgb((color.rgb - vec3(luminanceOffset)) / luminanceScale); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 232: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 233: } else if (destinationTransferFunction == linear_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 234: color.rgb = (color.rgb - vec3(luminanceOffset)) / luminanceScale; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 235: } else if (destinationTransferFunction == PQ_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 236: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 237: color.rgb = linearToPq((color.rgb - vec3(luminanceOffset)) / luminanceScale); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 238: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 239: } else if (destinationTransferFunction == gamma22_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 240: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 241: color.rgb = pow(max((color.rgb - vec3(luminanceOffset)) / luminanceScale, vec3(0.0)), vec3(1.0 / 2.2)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 242: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 243: } else if (destinationTransferFunction == BT1886_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 244: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 245: // for bt1886, luminanceScale = a, luminanceOffset = b jun 21 17:23:31 archekpy kwin_wayland[1377]: line 246: color.rgb = pow(color.rgb / luminanceScale, vec3(1.0 / 2.4)) - vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 247: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 248: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 249: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 250:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 251: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 252:vec4 nitsToDestinationEncoding(vec4 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 253: return nitsToEncoding(color, destinationNamedTransferFunction, destinationTransferFunctionParams.x, destinationTransferFunctionParams.y); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 254:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 255: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 256: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 257:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 258: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 259:uniform sampler2D sampler; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 260:uniform int textureWidth; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 261:uniform int textureHeight; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 262: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 263:in vec2 texcoord0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 264:out vec4 fragColor; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 265: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 266:vec2 uSize = vec2(textureWidth, textureHeight); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 267:vec2 iTexCoord = vec2(texcoord0.x, 1.0 - texcoord0.y); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 268:float uPadding = 0.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 269: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 270:vec4 getInputColor(vec2 coords) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 271: vec4 color = texture2D(sampler, vec2(coords.x, 1.0 - coords.y)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 272: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 273: if (color.a > 0.0) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 274: color.rgb /= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 275: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 276: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 277: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 278:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 279: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 280:void setOutputColor(vec4 outColor) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 281: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 282: // If a uniform is not used, it will be optimized away. This condition is always jun 21 17:23:31 archekpy kwin_wayland[1377]: line 283: // false, but it will prevent the compiler from optimizing away the uniforms uForOpening jun 21 17:23:31 archekpy kwin_wayland[1377]: line 284: // and uIsFullscreen. On KWin, we need to do this as we do not have a way to check if a jun 21 17:23:31 archekpy kwin_wayland[1377]: line 285: // uniform is used in the shader. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 286: if (outColor.a > 1000.0 && uForOpening && uIsFullscreen) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 287: outColor = vec4(0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 288: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 289: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 290: fragColor = vec4(outColor.rgb * outColor.a, outColor.a); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 291: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 292:#if defined(PLASMA6) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 293: fragColor = sourceEncodingToNitsInDestinationColorspace(fragColor); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 294: fragColor = nitsToDestinationEncoding(fragColor); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 295:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 296:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 297: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 298:#elif defined(KWIN_LEGACY) // ----------------------------------------------------------- jun 21 17:23:31 archekpy kwin_wayland[1377]: line 299: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 300:#if defined(PLASMA6) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 301:const int sRGB_EOTF = 0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 302:const int linear_EOTF = 1; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 303:const int PQ_EOTF = 2; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 304:const int gamma22_EOTF = 3; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 305:const int BT1886_EOTF = 4; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 306: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 307:uniform mat4 colorimetryTransform; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 308: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 309:uniform int sourceNamedTransferFunction; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 310:/** jun 21 17:23:31 archekpy kwin_wayland[1377]: line 311: * x: min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 312: * y: max luminance - min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 313: */ jun 21 17:23:31 archekpy kwin_wayland[1377]: line 314:uniform vec2 sourceTransferFunctionParams; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 315: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 316:uniform int destinationNamedTransferFunction; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 317:/** jun 21 17:23:31 archekpy kwin_wayland[1377]: line 318: * x: min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 319: * y: max luminance - min luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 320: */ jun 21 17:23:31 archekpy kwin_wayland[1377]: line 321:uniform vec2 destinationTransferFunctionParams; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 322: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 323:// in nits jun 21 17:23:31 archekpy kwin_wayland[1377]: line 324:uniform float sourceReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 325:uniform float maxTonemappingLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 326:uniform float destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 327:uniform float maxDestinationLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 328: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 329:uniform mat4 destinationToLMS; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 330:uniform mat4 lmsToDestination; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 331: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 332:vec3 linearToPq(vec3 linear) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 333: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 334: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 335: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 336: const float m1 = 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 337: const float m2 = 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 338: vec3 powed = pow(clamp(linear, vec3(0), vec3(1)), vec3(m1)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 339: vec3 num = vec3(c1) + c2 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 340: vec3 denum = vec3(1.0) + c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 341: return pow(num / denum, vec3(m2)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 342:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 343:vec3 pqToLinear(vec3 pq) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 344: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 345: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 346: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 347: const float m1_inv = 1.0 / 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 348: const float m2_inv = 1.0 / 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 349: vec3 powed = pow(clamp(pq, vec3(0.0), vec3(1.0)), vec3(m2_inv)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 350: vec3 num = max(powed - c1, vec3(0.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 351: vec3 den = c2 - c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 352: return pow(num / den, vec3(m1_inv)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 353:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 354:float singleLinearToPq(float linear) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 355: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 356: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 357: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 358: const float m1 = 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 359: const float m2 = 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 360: float powed = pow(clamp(linear, 0.0, 1.0), m1); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 361: float num = c1 + c2 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 362: float denum = 1.0 + c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 363: return pow(num / denum, m2); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 364:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 365:float singlePqToLinear(float pq) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 366: const float c1 = 0.8359375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 367: const float c2 = 18.8515625; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 368: const float c3 = 18.6875; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 369: const float m1_inv = 1.0 / 0.1593017578125; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 370: const float m2_inv = 1.0 / 78.84375; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 371: float powed = pow(clamp(pq, 0.0, 1.0), m2_inv); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 372: float num = max(powed - c1, 0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 373: float den = c2 - c3 * powed; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 374: return pow(num / den, m1_inv); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 375:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 376:vec3 srgbToLinear(vec3 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 377: bvec3 isLow = lessThanEqual(color, vec3(0.04045)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 378: vec3 loPart = color / 12.92; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 379: vec3 hiPart = pow((color + 0.055) / 1.055, vec3(12.0 / 5.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 380:#if __VERSION__ >= 130 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 381: return mix(hiPart, loPart, isLow); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 382:#else jun 21 17:23:31 archekpy kwin_wayland[1377]: line 383: return mix(hiPart, loPart, vec3(isLow.r ? 1.0 : 0.0, isLow.g ? 1.0 : 0.0, isLow.b ? 1.0 : 0.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 384:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 385:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 386: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 387:vec3 linearToSrgb(vec3 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 388: bvec3 isLow = lessThanEqual(color, vec3(0.0031308)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 389: vec3 loPart = color * 12.92; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 390: vec3 hiPart = pow(color, vec3(5.0 / 12.0)) * 1.055 - 0.055; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 391:#if __VERSION__ >= 130 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 392: return mix(hiPart, loPart, isLow); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 393:#else jun 21 17:23:31 archekpy kwin_wayland[1377]: line 394: return mix(hiPart, loPart, vec3(isLow.r ? 1.0 : 0.0, isLow.g ? 1.0 : 0.0, isLow.b ? 1.0 : 0.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 395:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 396:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 397: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 398:const mat3 toICtCp = mat3( jun 21 17:23:31 archekpy kwin_wayland[1377]: line 399: 0.5, 1.613769531250, 4.378173828125, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 400: 0.5, -3.323486328125, -4.245605468750, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 401: 0.0, 1.709716796875, -0.132568359375 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 402:); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 403:const mat3 fromICtCp = mat3( jun 21 17:23:31 archekpy kwin_wayland[1377]: line 404: 1.0, 1.0, 1.0, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 405: 0.00860903703793, -0.008609037037, 0.56031335710680, jun 21 17:23:31 archekpy kwin_wayland[1377]: line 406: 0.11102962500303, -0.111029625003, -0.32062717498732 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 407:); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 408: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 409:vec3 doTonemapping(vec3 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 410: if (maxTonemappingLuminance < maxDestinationLuminance * 1.01) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 411: // clipping is enough jun 21 17:23:31 archekpy kwin_wayland[1377]: line 412: return clamp(color.rgb, vec3(0.0), vec3(maxDestinationLuminance)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 413: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 414: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 415: // convert to ICtCp, to properly split luminance and color jun 21 17:23:31 archekpy kwin_wayland[1377]: line 416: // intensity is PQ-encoded luminance jun 21 17:23:31 archekpy kwin_wayland[1377]: line 417: vec3 lms = (destinationToLMS * vec4(color, 1.0)).rgb; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 418: vec3 lms_PQ = linearToPq(lms / 10000.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 419: vec3 ICtCp = toICtCp * lms_PQ; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 420: float luminance = singlePqToLinear(ICtCp.r) * 10000.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 421: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 422: // apply tone mapping operation (modified Reinhart) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 423: float relativeLuminance = max(luminance / destinationReferenceLuminance, 0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 424: float inputRange = maxTonemappingLuminance / destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 425: float outputRange = maxDestinationLuminance / destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 426: float v = (outputRange * (1.0 + inputRange) - inputRange) / pow(inputRange, 2.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 427: relativeLuminance = relativeLuminance * (1.0 + relativeLuminance * v) / (1.0 + relativeLuminance); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 428: luminance = relativeLuminance * destinationReferenceLuminance; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 429: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 430: // convert back to rgb jun 21 17:23:31 archekpy kwin_wayland[1377]: line 431: ICtCp.r = singleLinearToPq(luminance / 10000.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 432: color = (lmsToDestination * vec4(pqToLinear(fromICtCp * ICtCp), 1.0)).rgb * 10000.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 433: // and clip, to ensure out-of-gamut values are clipped to the correct white point jun 21 17:23:31 archekpy kwin_wayland[1377]: line 434: return clamp(color, vec3(0.0), vec3(maxDestinationLuminance)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 435:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 436: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 437:vec4 encodingToNits(vec4 color, int sourceTransferFunction, float luminanceOffset, float luminanceScale) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 438: if (sourceTransferFunction == sRGB_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 439: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 440: color.rgb = srgbToLinear(color.rgb) * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 441: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 442: } else if (sourceTransferFunction == linear_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 443: color.rgb = color.rgb * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 444: } else if (sourceTransferFunction == PQ_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 445: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 446: color.rgb = pqToLinear(color.rgb) * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 447: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 448: } else if (sourceTransferFunction == gamma22_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 449: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 450: color.rgb = pow(max(color.rgb, vec3(0.0)), vec3(2.2)) * luminanceScale + vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 451: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 452: } else if (sourceTransferFunction == BT1886_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 453: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 454: // for bt1886, luminanceScale = a, luminanceOffset = b jun 21 17:23:31 archekpy kwin_wayland[1377]: line 455: color.rgb = luminanceScale * pow(max(color.rgb + vec3(luminanceOffset), vec3(0.0)), vec3(2.4)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 456: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 457: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 458: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 459:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 460: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 461:vec4 sourceEncodingToNitsInDestinationColorspace(vec4 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 462: color = encodingToNits(color, sourceNamedTransferFunction, sourceTransferFunctionParams.x, sourceTransferFunctionParams.y); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 463: color.rgb = (colorimetryTransform * vec4(color.rgb, 1.0)).rgb; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 464: return vec4(doTonemapping(color.rgb), color.a); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 465:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 466: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 467:vec4 nitsToEncoding(vec4 color, int destinationTransferFunction, float luminanceOffset, float luminanceScale) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 468: if (destinationTransferFunction == sRGB_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 469: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 470: color.rgb = linearToSrgb((color.rgb - vec3(luminanceOffset)) / luminanceScale); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 471: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 472: } else if (destinationTransferFunction == linear_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 473: color.rgb = (color.rgb - vec3(luminanceOffset)) / luminanceScale; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 474: } else if (destinationTransferFunction == PQ_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 475: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 476: color.rgb = linearToPq((color.rgb - vec3(luminanceOffset)) / luminanceScale); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 477: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 478: } else if (destinationTransferFunction == gamma22_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 479: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 480: color.rgb = pow(max((color.rgb - vec3(luminanceOffset)) / luminanceScale, vec3(0.0)), vec3(1.0 / 2.2)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 481: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 482: } else if (destinationTransferFunction == BT1886_EOTF) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 483: color.rgb /= max(color.a, 0.001); jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: The XKEYBOARD keymap compiler (xkbcomp) reports: jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: > Warning: Multiple symbols for level 1/group 1 on key <FK23> jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: > Using F23, ignoring XF86TouchpadOff jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: > Warning: Symbol map for key <FK23> redefined jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: > Using last definition for conflicting fields jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: > Warning: Symbol map for key <FK24> redefined jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: > Using last definition for conflicting fields jun 21 17:23:31 archekpy kwin_wayland_wrapper[1951]: Errors from xkbcomp are not fatal to the X server jun 21 17:23:31 archekpy kwin_wayland[1377]: line 484: // for bt1886, luminanceScale = a, luminanceOffset = b jun 21 17:23:31 archekpy kwin_wayland[1377]: line 485: color.rgb = pow(color.rgb / luminanceScale, vec3(1.0 / 2.4)) - vec3(luminanceOffset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 486: color.rgb *= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 487: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 488: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 489:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 490: jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: The XKEYBOARD keymap compiler (xkbcomp) reports: jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: > Warning: Unsupported maximum keycode 709, clipping. jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: > X11 cannot support keycodes above 255. jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: > Warning: Virtual modifier Hyper multiply defined jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: > Using 0, ignoring 0 jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: > Warning: Virtual modifier ScrollLock multiply defined jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: > Using 0, ignoring 0 jun 21 17:23:31 archekpy kwin_wayland_wrapper[1966]: Errors from xkbcomp are not fatal to the X server jun 21 17:23:31 archekpy kwin_wayland[1377]: line 491:vec4 nitsToDestinationEncoding(vec4 color) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 492: return nitsToEncoding(color, destinationNamedTransferFunction, destinationTransferFunctionParams.x, destinationTransferFunctionParams.y); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 493:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 494: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 495: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 496:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 497: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 498:uniform sampler2D sampler; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 499:uniform int textureWidth; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 500:uniform int textureHeight; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 501: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 502:varying vec2 texcoord0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 503: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 504:vec2 uSize = vec2(textureWidth, textureHeight); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 505:vec2 iTexCoord = vec2(texcoord0.x, 1.0 - texcoord0.y); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 506:float uPadding = 0.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 507: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 508:vec4 getInputColor(vec2 coords) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 509: vec4 color = texture2D(sampler, vec2(coords.x, 1.0 - coords.y)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 510: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 511: if (color.a > 0.0) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 512: color.rgb /= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 513: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 514: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 515: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 516:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 517: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 518:void setOutputColor(vec4 outColor) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 519: // If a uniform is not used, it will be optimized away. This condition is always jun 21 17:23:31 archekpy kwin_wayland[1377]: line 520: // false, but it will prevent the compiler from optimizing away the uniforms uForOpening jun 21 17:23:31 archekpy kwin_wayland[1377]: line 521: // and uIsFullscreen. On KWin, we need to do this as we do not have a way to check if a jun 21 17:23:31 archekpy kwin_wayland[1377]: line 522: // uniform is used in the shader. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 523: if (outColor.a > 1000.0 && uForOpening && uIsFullscreen) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 524: outColor = vec4(0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 525: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 526: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 527: gl_FragColor = vec4(outColor.rgb * outColor.a, outColor.a); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 528: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 529:#if defined(PLASMA6) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 530: fragColor = sourceEncodingToNitsInDestinationColorspace(fragColor); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 531: fragColor = nitsToDestinationEncoding(fragColor); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 532:#endif jun 21 17:23:31 archekpy kwin_wayland[1377]: line 533:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 534: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 535:#else // GNOME -------------------------------------------------------------------------- jun 21 17:23:31 archekpy kwin_wayland[1377]: line 536: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 537:// On GNOME, the uniforms are just normal uniforms. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 538:uniform sampler2D uTexture; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 539:uniform vec2 uSize; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 540:uniform float uPadding; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 541: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 542:// On GNOME, we set iTexCoord to be an alias for the cogl variables. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 543:#define iTexCoord vec2(cogl_tex_coord_in[0]) jun 21 17:23:31 archekpy kwin_wayland[1377]: line 544: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 545:// Shell.GLSLEffect uses straight alpha. So we have to convert from premultiplied. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 546:vec4 getInputColor(vec2 coords) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 547: vec4 color = texture2D(uTexture, coords); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 548: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 549: if (color.a > 0.0) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 550: color.rgb /= color.a; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 551: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 552: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 553: return color; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 554:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 555: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 556:void setOutputColor(vec4 outColor) { cogl_color_out = outColor; } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 557: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 558:#endif // ------------------------------------------------------------------------------- jun 21 17:23:31 archekpy kwin_wayland[1377]: line 559: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 560:// ----------------------------------------------------------------- compositing operators jun 21 17:23:31 archekpy kwin_wayland[1377]: line 561: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 562:// The Shell.GLSLEffect uses straight alpha blending. This helper method allows jun 21 17:23:31 archekpy kwin_wayland[1377]: line 563:// compositing color values in the shader in the same way. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 564:vec4 alphaOver(vec4 under, vec4 over) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 565: if (under.a == 0.0 && over.a == 0.0) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 566: return vec4(0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 567: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 568: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 569: float alpha = mix(under.a, 1.0, over.a); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 570: return vec4(mix(under.rgb * under.a, over.rgb, over.a) / alpha, alpha); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 571:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 572: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 573:// ------------------------------------------------------------------------- color helpers jun 21 17:23:31 archekpy kwin_wayland[1377]: line 574: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 575:// Maps the given value from [0..1] to the given colors. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 576:vec3 tritone(float val, vec3 shadows, vec3 midtones, vec3 highlights) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 577: if (val < 0.5) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 578: return mix(shadows, midtones, smoothstep(0.0, 1.0, val * 2.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 579: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 580: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 581: return mix(midtones, highlights, smoothstep(0.0, 1.0, val * 2.0 - 1.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 582:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 583: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 584:// Darkens the given color. If fac is zero, the color will not change, if fac is one, the jun 21 17:23:31 archekpy kwin_wayland[1377]: line 585:// color will be black. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 586:vec3 darken(vec3 color, float fac) { return color * (1.0 - fac); } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 587: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 588:// Lightens the given color. If fac is zero, the color will not change, if fac is one, the jun 21 17:23:31 archekpy kwin_wayland[1377]: line 589:// color will be white. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 590:vec3 lighten(vec3 color, float fac) { return color + (vec3(1.0) - color) * fac; } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 591: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 592:// ---------------------------------------------------------------------- easing functions jun 21 17:23:31 archekpy kwin_wayland[1377]: line 593: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 594:// Here are some basic easing function. More can be added if required! jun 21 17:23:31 archekpy kwin_wayland[1377]: line 595:// Taken from here: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 596:// https://gitlab.gnome.org/GNOME/mutter/-/blob/main/clutter/clutter/clutter-easing.c jun 21 17:23:31 archekpy kwin_wayland[1377]: line 597: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 598:float easeOutQuad(float x) { return -1.0 * x * (x - 2.0); } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 599: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 600:float easeInQuad(float x) { return x * x; } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 601: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 602:float easeInBack(float x, float e) { return x * x * ((e + 1.0) * x - e); } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 603: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 604:float easeOutBack(float x, float e) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 605: float p = x - 1.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 606: return p * p * ((e + 1.0) * p + e) + 1.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 607:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 608: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 609:// --------------------------------------------------------------------- edge mask helpers jun 21 17:23:31 archekpy kwin_wayland[1377]: line 610: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 611:// This method returns a mask which smoothly transitions towards zero when approaching jun 21 17:23:32 archekpy pam_kwallet_init[2115]: 2026/06/21 17:23:32 socat[2115] W address is opened in read-write mode but only supports read-only jun 21 17:23:31 archekpy kwin_wayland[1377]: line 612:// the window's borders. If the window is currently maximized or in fullscreen mode, this jun 21 17:23:31 archekpy kwin_wayland[1377]: line 613:// will return 1.0 everywhere. There is a variant which takes the transition area width in jun 21 17:23:31 archekpy kwin_wayland[1377]: line 614:// pixels and one which takes this as a percentage. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 615:float getEdgeMask(vec2 uv, vec2 maxUV, float fadeWidth) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 616: float mask = 1.0; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 617: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 618: if (!uIsFullscreen) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 619: mask *= smoothstep(0.0, 1.0, clamp(uv.x / fadeWidth, 0.0, 1.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 620: mask *= smoothstep(0.0, 1.0, clamp(uv.y / fadeWidth, 0.0, 1.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 621: mask *= smoothstep(0.0, 1.0, clamp((maxUV.x - uv.x) / fadeWidth, 0.0, 1.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 622: mask *= smoothstep(0.0, 1.0, clamp((maxUV.y - uv.y) / fadeWidth, 0.0, 1.0)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 623: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 624: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 625: return mask; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 626:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 627: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 628:// Returns an edge mask which fades to zero at the boundaries of the actor. The width of jun 21 17:23:31 archekpy kwin_wayland[1377]: line 629:// the fade zone is given in pixels. This uses the standard uniforms uSize and uPadding. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 630:// This means that the fading zone is not actually at the actors boundaries but at the jun 21 17:23:31 archekpy kwin_wayland[1377]: line 631:// position of the window border in the texture. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 632:// The offset paramter controls whether the fading is placed inside the window borders jun 21 17:23:31 archekpy kwin_wayland[1377]: line 633:// (offset = 0), ontop the window borders (offset = 0.5) or outside the window borders jun 21 17:23:31 archekpy kwin_wayland[1377]: line 634:// (offset = 1). jun 21 17:23:31 archekpy kwin_wayland[1377]: line 635:float getAbsoluteEdgeMask(float fadePixels, float offset) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 636: float padding = max(0.0, uPadding - fadePixels * offset); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 637: vec2 uv = iTexCoord.st * uSize - padding; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 638: return getEdgeMask(uv, uSize - 2.0 * padding, fadePixels); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 639:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 640: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 641:// Returns an edge mask which fades to zero at the boundaries of the actor. The width of jun 21 17:23:31 archekpy kwin_wayland[1377]: line 642:// the fade zone is given relative to the actor size. This neither uses uSize and jun 21 17:23:31 archekpy kwin_wayland[1377]: line 643:// uPadding. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 644:float getRelativeEdgeMask(float fadeAmount) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 645: vec2 uv = iTexCoord.st; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 646: return getEdgeMask(uv, vec2(1.0), fadeAmount); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 647:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 648: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 649:// ------------------------------------------------------------------------------- 2D math jun 21 17:23:31 archekpy kwin_wayland[1377]: line 650: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 651:// The math for the whirling is inspired by this post: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 652:// http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl jun 21 17:23:31 archekpy kwin_wayland[1377]: line 653:vec2 whirl(vec2 coords, float warping, float rotation) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 654: float angle = pow(1.0 - length(coords), 2.0) * warping + rotation; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 655: float s = sin(angle); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 656: float c = cos(angle); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 657: return vec2(dot(coords, vec2(c, -s)), dot(coords, vec2(s, c))); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 658:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 659: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 660:// Returns the shortest distance between the given point and the line defined by "origin" jun 21 17:23:31 archekpy kwin_wayland[1377]: line 661:// and "direction". jun 21 17:23:31 archekpy kwin_wayland[1377]: line 662:float distToLine(vec2 origin, vec2 direction, vec2 point) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 663: vec2 perpendicular = vec2(direction.y, -direction.x); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 664: return abs(dot(normalize(perpendicular), origin - point)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 665:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 666: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 667:// Returns a positive number if a -> b forms a clockwise corner, or a negative number if jun 21 17:23:31 archekpy kwin_wayland[1377]: line 668:// the corner is counter-clockwise. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 669:float getWinding(vec2 a, vec2 b) { return cross(vec3(a, 0.0), vec3(b, 0.0)).z; } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 670: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 671:// Rotates the given 2D vector a clockwise by the angle alpha (given in radians). jun 21 17:23:31 archekpy kwin_wayland[1377]: line 672:vec2 rotate(vec2 a, float angle) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 673: return vec2(a.x * cos(angle) - a.y * sin(angle), a.x * sin(angle) + a.y * cos(angle)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 674:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 675: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 676:// --------------------------------------------------------------------------------- noise jun 21 17:23:31 archekpy kwin_wayland[1377]: line 677: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 678:// These noise algorithms are based on implementations by various authors from jun 21 17:23:31 archekpy kwin_wayland[1377]: line 679:// shadertoy.com, which are all available under the MIT License. See the respective links jun 21 17:23:31 archekpy kwin_wayland[1377]: line 680:// in the comments below. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 681: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 682:// Hash functions jun 21 17:23:31 archekpy kwin_wayland[1377]: line 683:// MIT License, https://www.shadertoy.com/view/4djSRW jun 21 17:23:31 archekpy kwin_wayland[1377]: line 684:// Copyright (c) 2014 David Hoskins. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 685: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 686:// 1 out, 1 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 687:float hash11(float p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 688: p = fract(p * .1031); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 689: p *= p + 33.33; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 690: p *= p + p; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 691: return fract(p); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 692:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 693: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 694:// 1 out, 2 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 695:float hash12(vec2 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 696: vec3 p3 = fract(vec3(p.xyx) * .1031); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 697: p3 += dot(p3, p3.yzx + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 698: return fract((p3.x + p3.y) * p3.z); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 699:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 700: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 701:// 1 out, 3 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 702:float hash13(vec3 p3) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 703: p3 = fract(p3 * .1031); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 704: p3 += dot(p3, p3.zyx + 31.32); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 705: return fract((p3.x + p3.y) * p3.z); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 706:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 707: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 708:// 2 out, 1 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 709:vec2 hash21(float p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 710: vec3 p3 = fract(vec3(p) * vec3(.1031, .1030, .0973)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 711: p3 += dot(p3, p3.yzx + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 712: return fract((p3.xx + p3.yz) * p3.zy); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 713:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 714: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 715:// 2 out, 2 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 716:vec2 hash22(vec2 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 717: vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 718: p3 += dot(p3, p3.yzx + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 719: return fract((p3.xx + p3.yz) * p3.zy); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 720:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 721: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 722:// 2 out, 3 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 723:vec2 hash23(vec3 p3) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 724: p3 = fract(p3 * vec3(.1031, .1030, .0973)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 725: p3 += dot(p3, p3.yzx + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 726: return fract((p3.xx + p3.yz) * p3.zy); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 727:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 728: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 729:// 3 out, 1 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 730:vec3 hash31(float p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 731: vec3 p3 = fract(vec3(p) * vec3(.1031, .1030, .0973)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 732: p3 += dot(p3, p3.yzx + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 733: return fract((p3.xxy + p3.yzz) * p3.zyx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 734:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 735: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 736:// 3 out, 2 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 737:vec3 hash32(vec2 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 738: vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 739: p3 += dot(p3, p3.yxz + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 740: return fract((p3.xxy + p3.yzz) * p3.zyx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 741:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 742: jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: Starting libddcutil. library built Not set at Not set. stdout_stderr_redirected=true jun 21 17:23:31 archekpy kwin_wayland[1377]: line 743:// 3 out, 3 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 744:vec3 hash33(vec3 p3) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 745: p3 = fract(p3 * vec3(.1031, .1030, .0973)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 746: p3 += dot(p3, p3.yxz + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 747: return fract((p3.xxy + p3.yxx) * p3.zyx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 748:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 749: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 750:// 4 out, 1 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 751:vec4 hash41(float p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 752: vec4 p4 = fract(vec4(p) * vec4(.1031, .1030, .0973, .1099)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 753: p4 += dot(p4, p4.wzxy + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 754: return fract((p4.xxyz + p4.yzzw) * p4.zywx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 755:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 756: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 757:// 4 out, 2 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 758:vec4 hash42(vec2 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 759: vec4 p4 = fract(vec4(p.xyxy) * vec4(.1031, .1030, .0973, .1099)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 760: p4 += dot(p4, p4.wzxy + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 761: return fract((p4.xxyz + p4.yzzw) * p4.zywx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 762:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 763: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 764:// 4 out, 3 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 765:vec4 hash43(vec3 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 766: vec4 p4 = fract(vec4(p.xyzx) * vec4(.1031, .1030, .0973, .1099)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 767: p4 += dot(p4, p4.wzxy + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 768: return fract((p4.xxyz + p4.yzzw) * p4.zywx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 769:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 770: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 771:// 4 out, 4 in... jun 21 17:23:31 archekpy kwin_wayland[1377]: line 772:vec4 hash44(vec4 p4) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 773: p4 = fract(p4 * vec4(.1031, .1030, .0973, .1099)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 774: p4 += dot(p4, p4.wzxy + 33.33); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 775: return fract((p4.xxyz + p4.yzzw) * p4.zywx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 776:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 777: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 778:// 2D Simplex Noise jun 21 17:23:31 archekpy kwin_wayland[1377]: line 779:// MIT License, https://www.shadertoy.com/view/Msf3WH jun 21 17:23:31 archekpy kwin_wayland[1377]: line 780:// Copyright © 2013 Inigo Quilez jun 21 17:23:31 archekpy kwin_wayland[1377]: line 781:float simplex2D(vec2 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 782: const float K1 = 0.366025404; // (sqrt(3)-1)/2; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 783: const float K2 = 0.211324865; // (3-sqrt(3))/6; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 784: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 785: vec2 i = floor(p + (p.x + p.y) * K1); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 786: vec2 a = p - i + (i.x + i.y) * K2; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 787: float m = step(a.y, a.x); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 788: vec2 o = vec2(m, 1.0 - m); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 789: vec2 b = a - o + K2; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 790: vec2 c = a - 1.0 + 2.0 * K2; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 791: vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 792: vec3 n = h * h * h * h * jun 21 17:23:31 archekpy kwin_wayland[1377]: line 793: vec3(dot(a, -1.0 + 2.0 * hash22(i + 0.0)), dot(b, -1.0 + 2.0 * hash22(i + o)), jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: (ddci_init ) Calling ldbus_start_sleep_watch_thread... jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: Starting. library built Not set at Not set, library_initialized=false, libopts=|(null)| jun 21 17:23:31 archekpy kwin_wayland[1377]: line 794: dot(c, -1.0 + 2.0 * hash22(i + 1.0))); jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: Initializing libddcutil. ddcutil version: 2.2.7, shared library: /usr/lib/libddcutil.so.5.5.1 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 795: return 0.5 + 0.5 * dot(n, vec3(70.0)); jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: library built Not set at Not set. stdout_stderr_redirected=true jun 21 17:23:31 archekpy kwin_wayland[1377]: line 796:} jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: [ 2252] Options passed from client: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 797: jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: [ 2252] Applying combined libddcutil options: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 798:float simplex2DFractal(vec2 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 799: mat2 m = mat2(1.6, 1.2, -1.2, 1.6); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 800: float f = 0.5000 * simplex2D(p); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 801: p = m * p; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 802: f += 0.2500 * simplex2D(p); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 803: p = m * p; jun 21 17:23:32 archekpy org_kde_powerdevil[2252]: [ 2252][ 0.094639] (ldbus_pause_if_recent_return_from_sleep)Pausing for 483 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 804: f += 0.1250 * simplex2D(p); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 805: p = m * p; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 806: f += 0.0625 * simplex2D(p); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 807: p = m * p; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 808: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 809: return f; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 810:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 811: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 812:// 3D Simplex Noise jun 21 17:23:31 archekpy kwin_wayland[1377]: line 813:// MIT License, https://www.shadertoy.com/view/XsX3zB jun 21 17:23:31 archekpy kwin_wayland[1377]: line 814:// Copyright © 2013 Nikita Miropolskiy jun 21 17:23:31 archekpy kwin_wayland[1377]: line 815:float simplex3D(vec3 p) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 816: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 817: // skew constants for 3D simplex functions jun 21 17:23:31 archekpy kwin_wayland[1377]: line 818: const float F3 = 0.3333333; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 819: const float G3 = 0.1666667; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 820: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 821: // 1. find current tetrahedron T and it's four vertices jun 21 17:23:31 archekpy kwin_wayland[1377]: line 822: // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices jun 21 17:23:31 archekpy kwin_wayland[1377]: line 823: // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertice jun 21 17:23:31 archekpy kwin_wayland[1377]: line 824: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 825: // calculate s and x jun 21 17:23:31 archekpy kwin_wayland[1377]: line 826: vec3 s = floor(p + dot(p, vec3(F3))); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 827: vec3 x = p - s + dot(s, vec3(G3)); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 828: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 829: // calculate i1 and i2 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 830: vec3 e = step(vec3(0.0), x - x.yzx); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 831: vec3 i1 = e * (1.0 - e.zxy); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 832: vec3 i2 = 1.0 - e.zxy * (1.0 - e); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 833: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 834: // x1, x2, x3 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 835: vec3 x1 = x - i1 + G3; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 836: vec3 x2 = x - i2 + 2.0 * G3; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 837: vec3 x3 = x - 1.0 + 3.0 * G3; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 838: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 839: // 2. find four surflets and store them in d jun 21 17:23:31 archekpy kwin_wayland[1377]: line 840: vec4 w, d; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 841: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 842: // calculate surflet weights jun 21 17:23:31 archekpy kwin_wayland[1377]: line 843: w.x = dot(x, x); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 844: w.y = dot(x1, x1); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 845: w.z = dot(x2, x2); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 846: w.w = dot(x3, x3); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 847: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 848: // w fades from 0.6 at the center of the surflet to 0.0 at the margin jun 21 17:23:31 archekpy kwin_wayland[1377]: line 849: w = max(0.6 - w, 0.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 850: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 851: // calculate surflet components jun 21 17:23:31 archekpy kwin_wayland[1377]: line 852: d.x = dot(-0.5 + hash33(s), x); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 853: d.y = dot(-0.5 + hash33(s + i1), x1); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 854: d.z = dot(-0.5 + hash33(s + i2), x2); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 855: d.w = dot(-0.5 + hash33(s + 1.0), x3); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 856: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 857: // multiply d by w^4 jun 21 17:23:31 archekpy kwin_wayland[1377]: line 858: w *= w; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 859: w *= w; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 860: d *= w; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 861: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 862: // 3. return the sum of the four surflets jun 21 17:23:31 archekpy kwin_wayland[1377]: line 863: return dot(d, vec4(52.0)) * 0.5 + 0.5; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 864:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 865: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 866:// Directional artifacts can be reduced by rotating each octave jun 21 17:23:31 archekpy kwin_wayland[1377]: line 867:float simplex3DFractal(vec3 m) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 868: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 869: // const matrices for 3D rotation jun 21 17:23:31 archekpy kwin_wayland[1377]: line 870: const mat3 rot1 = mat3(-0.37, 0.36, 0.85, -0.14, -0.93, 0.34, 0.92, 0.01, 0.4); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 871: const mat3 rot2 = mat3(-0.55, -0.39, 0.74, 0.33, -0.91, -0.24, 0.77, 0.12, 0.63); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 872: const mat3 rot3 = mat3(-0.71, 0.52, -0.47, -0.08, -0.72, -0.68, -0.7, -0.45, 0.56); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 873: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 874: return 0.5333333 * simplex3D(m * rot1) + 0.2666667 * simplex3D(2.0 * m * rot2) + jun 21 17:23:31 archekpy kwin_wayland[1377]: line 875: 0.1333333 * simplex3D(4.0 * m * rot3) + 0.0666667 * simplex3D(8.0 * m); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 876:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 877:////////////////////////////////////////////////////////////////////////////////////////// jun 21 17:23:31 archekpy kwin_wayland[1377]: line 878:// ) ( // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 879:// ( /( ( ( ) ( ( ( ( )\ ) ( ( // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 880:// )\()) ))\ )( ( ( )\ ) )\))( )\ ( (()/( ( )\))( ( // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 881:// ((_)\ /((_|()\ )\ ) )\ '(()/( ((_)()((_) )\ ) ((_)))\((_)()\ )\ // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 882:// | |(_|_))( ((_)_(_/( _((_)) )(_)) _(()((_|_)_(_/( _| |((_)(()((_|(_) // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 883:// | '_ \ || | '_| ' \)) | ' \()| || | \ V V / | ' \)) _` / _ \ V V (_-< // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 884:// |_.__/\_,_|_| |_||_| |_|_|_| \_, | \_/\_/|_|_||_|\__,_\___/\_/\_//__/ // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 885:// |__/ // jun 21 17:23:31 archekpy kwin_wayland[1377]: line 886:////////////////////////////////////////////////////////////////////////////////////////// jun 21 17:23:31 archekpy kwin_wayland[1377]: line 887: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 888:// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de> jun 21 17:23:31 archekpy kwin_wayland[1377]: line 889:// SPDX-License-Identifier: GPL-3.0-or-later jun 21 17:23:31 archekpy kwin_wayland[1377]: line 890: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 891:// The content from common.glsl is automatically prepended to each shader effect. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 892: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 893:uniform float uPixelSize; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 894:uniform vec2 uStartPos; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 895: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 896:const float FADE_WIDTH = 1.0; // Width of the transition. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 897: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 898:void main() { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 899: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 900: // Now we compute a 2D gradient in [0..1] which covers the entire window. The dark jun 21 17:23:31 archekpy kwin_wayland[1377]: line 901: // regions will be burned first, the bright regions in the end. We mix a radial gradient jun 21 17:23:31 archekpy kwin_wayland[1377]: line 902: // with some noise. The center of the radial gradient is positioned at uStartPos. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 903: float circle = length(iTexCoord - uStartPos); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 904: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 905: float progress = easeOutQuad(uProgress); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 906: progress = ((1.0 - progress) * (1.0 + FADE_WIDTH) - 1.0 + circle) / FADE_WIDTH; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 907: progress = smoothstep(0.0, 1.0, progress); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 908: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 909: progress = uForOpening ? progress : 1.0 - progress; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 910: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 911: // The current level of pixelation increases with the progress. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 912: float pixelSize = ceil(uPixelSize * progress + 1.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 913: vec2 pixelGrid = vec2(pixelSize) / uSize; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 914: vec2 texcoord = iTexCoord.st - mod(iTexCoord.st, pixelGrid) + pixelGrid * 0.5; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 915: vec4 oColor = getInputColor(texcoord); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 916: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 917: // Hide pixels in the transition zone. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 918: float random = simplex2DFractal(texcoord * uSize / 20.0) * 1.5 - 0.25; jun 21 17:23:31 archekpy kwin_wayland[1377]: line 919: if (progress > random) { jun 21 17:23:31 archekpy kwin_wayland[1377]: line 920: oColor.a *= max(0.0, 1.0 - (progress - random) * 10.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 921: } jun 21 17:23:31 archekpy kwin_wayland[1377]: line 922: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 923: // These are pretty useful for understanding how this works. jun 21 17:23:31 archekpy kwin_wayland[1377]: line 924: // oColor = vec4(progress, 0.0, 0.0, 1.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 925: // oColor = vec4(random, 0.0, 0.0, 1.0); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 926: jun 21 17:23:31 archekpy kwin_wayland[1377]: line 927: setOutputColor(oColor); jun 21 17:23:31 archekpy kwin_wayland[1377]: line 928:} jun 21 17:23:31 archekpy kwin_wayland[1377]: line 929:
- Can't double-click to open in GTK file selector (Firefox, GIMP, etc.) (2026/06/21 15:54)Hi all,Is it just me, or after the latest upgrade is it no longer possible to double-click to select a file in GTK?For example if I choose to open a file in Firefox, or an image in GIMP, I can't double-click to select the file any longer. I have to click once to select the file then click on the Open button.Only minor I know but it's a bit annoying, so I'm wondering if it's something wrong with my settings or if it's affecting others after they update.I tried to search the forums for "double click" but couldn't see any recent mention of this so I'm wondering if it's just something weird in my settings.
- Skiko RenderException: Cannot create OpenGL context (2026/06/21 14:49)Well yeah, that's X11, the log up to date and reflects the absent APU.Shit.https://youtrack.jetbrains.com/issue/IJ … age-updateDoes using the "-Dskiko.renderApi=SOFTWARE" parameter allow you to switch the backend or do you still get comments about OpenGL?
- Chromium vs Falkon (2026/06/21 12:37)Moderator Notemoving to Applications & Desktop Environments
- kwin_wayland aborts when opening Kicad schematic editor (2026/06/21 10:45)I believe this bug prevents plasmashell from starting. Downgrading kwin to version 6.6.5-4 fixes the issue.
- Blender crashes on startup when using Vulkan backend (2026/06/21 08:21)As of spirv-tools 1:1.4.350.1-1 I no longer have this issue, and https://github.com/KhronosGroup/SPIRV-Tools/issues/6712 is marked as closed. I think we can consider this problem solved, unless one of you is still encountering the same issue
- Displaycal and python 3.14 (2026/06/21 08:00)Exact same error as #5?https://github.com/eoyilmaz/displaycal-py3/issues/637
- i3 wm using different "style" (2026/06/21 07:52)Probably centralizing the colors in xrdb, https://i3wm.org/docs/userguide.html#xresources and change the xrdb and reload the i3 configeven terms colors change by the settingsThat will heavily depend on the terminal being used by there're ANSII sequences to change (some) colors of xterm and urxvt and others might expose the theme configuration eg. via dbusYou're aware of tools like https://archlinux.org/packages/extra/any/python-pywal/ ?
- good backup program? (2026/06/20 19:46)This might be a good point to reinforce the following. A backup is not a backup unless it is tested. A system is not backed up unless there is a backup that is not on site.
- High CPU usage from kwin_wayland after Plasma 6.7 upgrade (2026/06/20 19:10)qdbus6 org.kde.KWin /KWin supportInformation glxinfo -BDoes intel_gpu_top suggest the IGP is being utilized?
- [SOLVED] After update flameshot is now not taking screenshots. (2026/06/20 18:48)For anyone who ended up here from a search, since this thread was my top result:For me, the /.config/flameshot/ folder was nonexistent. Additionally, running pacman -S flameshot made pacman claim it was doing a fresh installation as opposed to reinstalling like it usually would. I'm not sure if one is related to the other or if the directory never existed to begin with. I was launching flameshot via shell script, so I hadn't bothered with the config until now.Recreating the directory, flameshot.ini, and adding useX11LegacyScreenshot=true worked as described by H3g3m0n. Thank you.
- Shift+Left/Right arrow key used to select characters in terminal. (2026/06/20 12:19)I think I am using bash shell.It does, When I first installed arch, shift select did use to work in terminal.Check and also what TE is this?cat /proc/$$/cmdline cat /proc/$PPID/cmdlineIs the default behavior for the shift+arrow key combination to select the text towards right or left?In bash? No. In fish might be (I honestly don't know) and for zsh there're zle commands that can be scripted.What you're asking isn't really the default anywhere and you're also running into copy/paste issues.If anything some specific GUI terminal emulator would have intercepted the keys (and you would not get any input on the shell then, but this can cause problems w/ shell processes, eg. vim)When I first installed arch, shift select did use to work in terminal.Is this arch-archlinux or manjaro-archlinux or cachy-archlinux…?
- KDE Plasma login sound fails to play automatically / delayed due to sy (2026/06/20 10:12)Does this also happen if you use the plasma login manager that KDE sees as the successor of sddm ?
- Some text invisible in Electron apps (2026/06/20 09:20)Please don't necro-bump .Moderator NoteThis thread is 5 years old and OP hasn't visited forum in the last 4 years. Th chance of them replying is miniscule.Closing this thread.
Discussion