mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
ControlCenter: add proper shader for distro logo
This commit is contained in:
@@ -80,7 +80,7 @@ NIconButton {
|
||||
layer.enabled: useDistroLogo && colorizeDistroLogo
|
||||
layer.effect: ShaderEffect {
|
||||
property color targetColor: Settings.data.colorSchemes.darkMode ? Color.mOnSurface : Color.mSurfaceVariant
|
||||
property real colorizeMode: 1.0
|
||||
property real colorizeMode: 2.0
|
||||
|
||||
fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/appicon_colorize.frag.qsb")
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ layout(std140, binding = 0) uniform buf {
|
||||
mat4 qt_Matrix;
|
||||
float qt_Opacity;
|
||||
vec4 targetColor;
|
||||
float colorizeMode; // 0.0 = dock mode (grayscale), 1.0 = tray mode (intensity)
|
||||
float colorizeMode; // 0.0 = dock mode (grayscale), 1.0 = tray mode (intensity), 2.0 = distro mode (luminance with better contrast)
|
||||
} ubuf;
|
||||
|
||||
void main() {
|
||||
@@ -17,13 +17,24 @@ void main() {
|
||||
if (ubuf.colorizeMode < 0.5) {
|
||||
// Dock mode: Convert to grayscale using proper luminance weights
|
||||
intensity = dot(tex.rgb, vec3(0.299, 0.587, 0.114));
|
||||
} else {
|
||||
} else if (ubuf.colorizeMode < 1.5) {
|
||||
// Tray mode: Use the maximum RGB channel value as intensity
|
||||
intensity = max(max(tex.r, tex.g), tex.b);
|
||||
|
||||
// Normalize intensity to make all icons more uniform
|
||||
intensity = smoothstep(0.1, 0.9, intensity);
|
||||
}
|
||||
} else {
|
||||
// Distro mode: Brightness boost with proper alpha handling
|
||||
float maxChannel = max(max(tex.r, tex.g), tex.b);
|
||||
|
||||
intensity = maxChannel * 1.5;
|
||||
intensity = min(intensity, 1.0);
|
||||
intensity = intensity * 0.7 + 0.3;
|
||||
|
||||
intensity = intensity * tex.a;
|
||||
|
||||
fragColor = vec4(ubuf.targetColor.rgb * intensity, tex.a) * ubuf.qt_Opacity;
|
||||
}
|
||||
|
||||
fragColor = vec4(ubuf.targetColor.rgb * intensity, tex.a) * ubuf.qt_Opacity;
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user