From 41ad28610a341429fa1366ce87ae061a003d1ce2 Mon Sep 17 00:00:00 2001 From: kossLAN Date: Tue, 10 Jun 2025 13:52:54 -0400 Subject: [PATCH] needs some more work --- GlassSurface.qml | 85 +++++++++++++++++++++ shaders/liquid-glass.frag | 8 +- shaders/liquid-glass.frag.qsb | Bin 5359 -> 5363 bytes shell.qml | 134 +++++++++++++++------------------- 4 files changed, 146 insertions(+), 81 deletions(-) create mode 100644 GlassSurface.qml diff --git a/GlassSurface.qml b/GlassSurface.qml new file mode 100644 index 0000000..9eb9969 --- /dev/null +++ b/GlassSurface.qml @@ -0,0 +1,85 @@ +import QtQuick +import Quickshell.Widgets +import Qt5Compat.GraphicalEffects + +ClippingRectangle { + id: root + color: "transparent" + border.width: 1 + border.color: Qt.rgba(1, 1, 1, 0.1) + + property var source + property real time: 0.5 + property real strength: 0.3 + property real speed: 0.25 + property real scale: 3.0 + property real edgeReflectionStrength: 0.2 + property real edgeReflectionWidth: 0 + + // Blur + ShaderEffectSource { + id: blurredBackground + anchors.fill: parent + sourceItem: root.source + sourceRect: Qt.rect(root.x, root.y, root.width, root.height) + hideSource: false + live: true + } + + FastBlur { + id: backgroundBlur + anchors.fill: parent + source: blurredBackground + radius: 16 + transparentBorder: true + } + + // Liquid glass shader warp + ShaderEffect { + anchors.fill: parent + fragmentShader: "root:shaders/liquid-glass.frag.qsb" + + property real time: root.time + property real flowSpeed: root.speed + property real warpStrength: root.strength + property real scale: root.scale + property real edgeReflectionStrength: root.edgeReflectionStrength + property real edgeReflectionWidth: root.edgeReflectionWidth + + property variant source: ShaderEffectSource { + sourceItem: backgroundBlur + hideSource: false + live: true + } + } + + // Subtle glass overlay + Rectangle { + anchors.fill: parent + color: "transparent" + + Rectangle { + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 1 + height: parent.height * 0.3 + radius: parent.radius - 1 + + gradient: Gradient { + GradientStop { + position: 0.0 + color: Qt.rgba(1, 1, 1, 0.08) + } + GradientStop { + position: 0.5 + color: Qt.rgba(1, 1, 1, 0.0) + } + GradientStop { + position: 1.0 + color: Qt.rgba(1, 1, 1, 0.0) + } + } + } + } +} diff --git a/shaders/liquid-glass.frag b/shaders/liquid-glass.frag index 36d746f..45855d7 100644 --- a/shaders/liquid-glass.frag +++ b/shaders/liquid-glass.frag @@ -63,7 +63,7 @@ void main() { vec4 glassColor = vec4(r, g, b, 1.0); - // Simple edge reflection - back to what worked + // Simple edge reflection float edgeWidth = ubuf.edgeReflectionWidth; // Calculate distance from edges @@ -84,16 +84,16 @@ void main() { // Simple reflection logic if (minDistToEdge == distFromLeft) { // Left edge - flip horizontally - reflectionUV.x = 1.0 - distortedUV.x; + reflectionUV.x = 0.5 - distortedUV.x; } else if (minDistToEdge == distFromRight) { // Right edge - keep as is but sample from further right reflectionUV.x = distortedUV.x + 0.1; } else if (minDistToEdge == distFromTop) { // Top edge - flip vertically - reflectionUV.y = 1.0 - distortedUV.y; + reflectionUV.y = 0.5 - distortedUV.y; } else { // Bottom edge - flip vertically - reflectionUV.y = 1.0 - distortedUV.y + 0.1; + reflectionUV.y = 0.5 - distortedUV.y + 0.1; } // Clamp to valid range diff --git a/shaders/liquid-glass.frag.qsb b/shaders/liquid-glass.frag.qsb index 8f49b0f6dd76eb79759698e893816b119d7e254d..bcf42066135024d623bc994cdb81b722b112eeaa 100644 GIT binary patch delta 3399 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 GOa=hwZq{l5 delta 3371 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