diff --git a/qt6/src/qml/OutsideBoxBorder.qml b/qt6/src/qml/OutsideBoxBorder.qml index 04cad6821..da1cb6ab8 100644 --- a/qt6/src/qml/OutsideBoxBorder.qml +++ b/qt6/src/qml/OutsideBoxBorder.qml @@ -3,9 +3,10 @@ // SPDX-License-Identifier: LGPL-3.0-or-later import QtQuick +import QtQuick.Window Item { - property real borderWidth: 1 + property real borderWidth: 1 / Screen.devicePixelRatio property color color: "white" property real radius: 0 diff --git a/qt6/src/shaders_ng/quickitemviewport-opaque.frag b/qt6/src/shaders_ng/quickitemviewport-opaque.frag index f062bc1a9..fb50238a3 100644 --- a/qt6/src/shaders_ng/quickitemviewport-opaque.frag +++ b/qt6/src/shaders_ng/quickitemviewport-opaque.frag @@ -38,12 +38,12 @@ void main() lowp vec4 mask_bottom_left = texture(mask, tex_bottom_left); lowp vec4 mask_top_right = texture(mask, tex_top_right); lowp vec4 mask_bottom_right = texture(mask, tex_bottom_right); - lowp vec4 mask_tex = mask_top_left * mask_bottom_left * mask_top_right * mask_bottom_right; + lowp float mask_alpha = min(min(mask_top_left.a, mask_bottom_left.a), min(mask_top_right.a, mask_bottom_right.a)); - if (mask_tex.a == 0.0) + if (mask_alpha == 0.0) discard; lowp vec4 tex = texture(qt_Texture, qt_TexCoord); - fragColor = tex * mask_tex.a; + fragColor = tex * mask_alpha; } diff --git a/qt6/src/shaders_ng/quickitemviewport.frag b/qt6/src/shaders_ng/quickitemviewport.frag index 83e91eed5..7985478a6 100644 --- a/qt6/src/shaders_ng/quickitemviewport.frag +++ b/qt6/src/shaders_ng/quickitemviewport.frag @@ -39,12 +39,12 @@ void main() lowp vec4 mask_bottom_left = texture(mask, tex_bottom_left); lowp vec4 mask_top_right = texture(mask, tex_top_right); lowp vec4 mask_bottom_right = texture(mask, tex_bottom_right); - lowp vec4 mask_tex = mask_top_left * mask_bottom_left * mask_top_right * mask_bottom_right; + lowp float mask_alpha = min(min(mask_top_left.a, mask_bottom_left.a), min(mask_top_right.a, mask_bottom_right.a)); - if (mask_tex.a == 0.0) + if (mask_alpha == 0.0) discard; lowp vec4 tex = texture(qt_Texture, qt_TexCoord); - fragColor = tex * mask_tex.a * ubuf.opacity; + fragColor = tex * mask_alpha * ubuf.opacity; } diff --git a/src/qml/InsideBoxBorder.qml b/src/qml/InsideBoxBorder.qml index 154748db0..31bdd2730 100644 --- a/src/qml/InsideBoxBorder.qml +++ b/src/qml/InsideBoxBorder.qml @@ -5,7 +5,7 @@ import QtQuick 2.0 Item { - property real borderWidth: 1 + property real borderWidth: 1 / Screen.devicePixelRatio property color color: Qt.rgba(1, 1, 1, 0.15) property alias radius: rect.radius diff --git a/src/qml/OutsideBoxBorder.qml b/src/qml/OutsideBoxBorder.qml index 253922917..d7358f087 100644 --- a/src/qml/OutsideBoxBorder.qml +++ b/src/qml/OutsideBoxBorder.qml @@ -5,7 +5,7 @@ import QtQuick 2.0 Item { - property real borderWidth: 1 + property real borderWidth: 1 / Screen.devicePixelRatio property color color: "white" property real radius: 0 diff --git a/src/shaders/quickitemviewport-opaque.frag b/src/shaders/quickitemviewport-opaque.frag index c0e77fa09..80df98ca6 100644 --- a/src/shaders/quickitemviewport-opaque.frag +++ b/src/shaders/quickitemviewport-opaque.frag @@ -32,9 +32,10 @@ void main() lowp vec4 mask_top_right = texture2D(mask, tex_top_right); lowp vec4 mask_bottom_right = texture2D(mask, tex_bottom_right); - lowp vec4 tex = texture2D(qt_Texture, qt_TexCoord); + lowp float mask_alpha = min(min(mask_top_left.a, mask_bottom_left.a), min(mask_top_right.a, mask_bottom_right.a)); + if (mask_alpha == 0.0) + discard; - // 统一计算此像素点被模板遮盖后的颜色,此处不需要区分点是否在某个区域,不在此区域时取出的mask颜色的alpha值必为1 - tex *= mask_top_left * mask_bottom_left * mask_top_right * mask_bottom_right; - gl_FragColor = tex * tex.a; + lowp vec4 tex = texture2D(qt_Texture, qt_TexCoord); + gl_FragColor = tex * mask_alpha; } diff --git a/src/shaders/quickitemviewport.frag b/src/shaders/quickitemviewport.frag index 9c966333e..9bac12421 100644 --- a/src/shaders/quickitemviewport.frag +++ b/src/shaders/quickitemviewport.frag @@ -33,9 +33,10 @@ void main() lowp vec4 mask_top_right = texture2D(mask, tex_top_right); lowp vec4 mask_bottom_right = texture2D(mask, tex_bottom_right); - lowp vec4 tex = texture2D(qt_Texture, qt_TexCoord); + lowp float mask_alpha = min(min(mask_top_left.a, mask_bottom_left.a), min(mask_top_right.a, mask_bottom_right.a)); + if (mask_alpha == 0.0) + discard; - // 统一计算此像素点被模板遮盖后的颜色,此处不需要区分点是否在某个区域,不在此区域时取出的mask颜色的alpha值必为1 - tex *= mask_top_left * mask_bottom_left * mask_top_right * mask_bottom_right; - gl_FragColor = tex * tex.a * opacity; + lowp vec4 tex = texture2D(qt_Texture, qt_TexCoord); + gl_FragColor = tex * mask_alpha * opacity; }