[vlc-commits] [Git][videolan/vlc][master] 6 commits: qt: add `Noise.vert`
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat Dec 21 14:51:11 UTC 2024
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
f18fbef3 by Fatih Uzunoglu at 2024-12-21T14:38:05+00:00
qt: add `Noise.vert`
- - - - -
193a1843 by Fatih Uzunoglu at 2024-12-21T14:38:05+00:00
qml: do not depend on dummy texture in Noise.frag
We can use `gl_FragCoord` as seed.
- - - - -
35850740 by Fatih Uzunoglu at 2024-12-21T14:38:05+00:00
qt: introduce `QSGRectangularNoiseNode`
- - - - -
d47b451f by Fatih Uzunoglu at 2024-12-21T14:38:05+00:00
qt: introduce `NoiseRectangle`
- - - - -
84e0798a by Fatih Uzunoglu at 2024-12-21T14:38:05+00:00
qt: register `NoiseRectangle`
- - - - -
85d71854 by Fatih Uzunoglu at 2024-12-21T14:38:05+00:00
qml: use `NoiseRectangle` instead of `ShaderEffect` in `FrostedGlassEffect.qml`
- - - - -
12 changed files:
- modules/gui/qt/Makefile.am
- modules/gui/qt/maininterface/mainui.cpp
- modules/gui/qt/meson.build
- modules/gui/qt/shaders/Noise.frag
- + modules/gui/qt/shaders/Noise.vert
- modules/gui/qt/shaders/meson.build
- modules/gui/qt/shaders/shaders.qrc
- + modules/gui/qt/util/qsgrectangularnoisenode.cpp
- + modules/gui/qt/util/qsgrectangularnoisenode.hpp
- + modules/gui/qt/widgets/native/noiserectangle.cpp
- + modules/gui/qt/widgets/native/noiserectangle.hpp
- modules/gui/qt/widgets/qml/FrostedGlassEffect.qml
Changes:
=====================================
modules/gui/qt/Makefile.am
=====================================
@@ -341,6 +341,8 @@ libqt_plugin_la_SOURCES = \
util/model_recovery_agent.hpp \
util/vlcqtmessagehandler.cpp \
util/vlcqtmessagehandler.hpp \
+ util/qsgrectangularnoisenode.cpp \
+ util/qsgrectangularnoisenode.hpp \
widgets/native/animators.cpp \
widgets/native/animators.hpp \
widgets/native/customwidgets.cpp widgets/native/customwidgets.hpp \
@@ -356,7 +358,8 @@ libqt_plugin_la_SOURCES = \
widgets/native/qvlcframe.hpp \
widgets/native/searchlineedit.cpp widgets/native/searchlineedit.hpp \
widgets/native/viewblockingrectangle.cpp widgets/native/viewblockingrectangle.hpp \
- widgets/native/doubleclickignoringitem.hpp
+ widgets/native/doubleclickignoringitem.hpp \
+ widgets/native/noiserectangle.cpp widgets/native/noiserectangle.hpp
# Meta-object compilation
@@ -501,7 +504,8 @@ nodist_libqt_plugin_la_SOURCES = \
widgets/native/navigation_attached.moc.cpp \
widgets/native/mlfolderseditor.moc.cpp \
widgets/native/searchlineedit.moc.cpp \
- widgets/native/viewblockingrectangle.moc.cpp
+ widgets/native/viewblockingrectangle.moc.cpp \
+ widgets/native/noiserectangle.moc.cpp
nodist_libqt_plugin_la_SOURCES += \
dialogs/extended/ui_equalizer.h \
@@ -1338,6 +1342,7 @@ libqt_plugin_la_SHADER := shaders/FadingEdge.frag \
shaders/FadingEdgeX.vert \
shaders/FadingEdgeY.vert \
shaders/Noise.frag \
+ shaders/Noise.vert \
shaders/RectFilter.frag \
shaders/SubTexture.vert \
shaders/PlayerBlurredBackground.frag \
=====================================
modules/gui/qt/maininterface/mainui.cpp
=====================================
@@ -62,6 +62,7 @@
#include "widgets/native/csdthemeimage.hpp"
#include "widgets/native/navigation_attached.hpp"
#include "widgets/native/viewblockingrectangle.hpp"
+#include "widgets/native/noiserectangle.hpp"
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
#include "widgets/native/doubleclickignoringitem.hpp"
#else
@@ -347,6 +348,7 @@ void MainUI::registerQMLTypes()
// @uri VLC.Widgets
qmlRegisterType<CSDThemeImage>(uri, versionMajor, versionMinor, "CSDThemeImage");
qmlRegisterType<ViewBlockingRectangle>( uri, versionMajor, versionMinor, "ViewBlockingRectangle" );
+ qmlRegisterType<NoiseRectangle>(uri, versionMajor, versionMinor, "NoiseRectangle");
qmlRegisterModule(uri, versionMajor, versionMinor);
qmlProtectModule(uri, versionMajor);
=====================================
modules/gui/qt/meson.build
=====================================
@@ -151,6 +151,7 @@ moc_headers = files(
'widgets/native/mlfolderseditor.hpp',
'widgets/native/searchlineedit.hpp',
'widgets/native/viewblockingrectangle.hpp',
+ 'widgets/native/noiserectangle.hpp',
)
if host_system == 'windows'
@@ -474,6 +475,8 @@ some_sources = files(
'util/model_recovery_agent.hpp',
'util/vlcqtmessagehandler.cpp',
'util/vlcqtmessagehandler.hpp',
+ 'util/qsgrectangularnoisenode.cpp',
+ 'util/qsgrectangularnoisenode.hpp',
'widgets/native/animators.cpp',
'widgets/native/animators.hpp',
'widgets/native/customwidgets.cpp',
@@ -493,6 +496,8 @@ some_sources = files(
'widgets/native/viewblockingrectangle.cpp',
'widgets/native/viewblockingrectangle.hpp',
'widgets/native/doubleclickignoringitem.hpp',
+ 'widgets/native/noiserectangle.cpp',
+ 'widgets/native/noiserectangle.hpp',
)
if host_system == 'windows'
=====================================
modules/gui/qt/shaders/Noise.frag
=====================================
@@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-layout(location = 0) in vec2 qt_TexCoord0;
-
layout(location = 0) out vec4 fragColor;
layout(std140, binding = 0) uniform buf {
@@ -33,7 +31,7 @@ float rand(vec2 co){
}
void main() {
- float r = rand(qt_TexCoord0) - 0.5;
+ float r = rand(gl_FragCoord.xy * gl_FragCoord.wz) - 0.5;
vec4 noise = vec4(r,r,r,1.0) * strength;
fragColor = noise * qt_Opacity;
}
=====================================
modules/gui/qt/shaders/Noise.vert
=====================================
@@ -0,0 +1,32 @@
+#version 440
+
+/*****************************************************************************
+ * Copyright (C) 2024 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+layout(location = 0) in vec4 qt_Vertex;
+
+layout(std140, binding = 0) uniform buf {
+ mat4 qt_Matrix;
+ float qt_Opacity;
+ float strength;
+};
+
+void main()
+{
+ gl_Position = qt_Matrix * qt_Vertex;
+}
=====================================
modules/gui/qt/shaders/meson.build
=====================================
@@ -11,6 +11,7 @@ shader_sources = [
'FadingEdgeX.vert',
'FadingEdgeY.vert',
'Noise.frag',
+ 'Noise.vert',
'RectFilter.frag',
'SubTexture.vert',
'PlayerBlurredBackground.frag',
=====================================
modules/gui/qt/shaders/shaders.qrc
=====================================
@@ -5,6 +5,7 @@
<file alias="FadingEdgeX.vert.qsb">FadingEdgeX.vert.qsb</file>
<file alias="FadingEdgeY.vert.qsb">FadingEdgeY.vert.qsb</file>
<file alias="Noise.frag.qsb">Noise.frag.qsb</file>
+ <file alias="Noise.vert.qsb">Noise.vert.qsb</file>
<file alias="RectFilter.frag.qsb">RectFilter.frag.qsb</file>
<file alias="SubTexture.vert.qsb">SubTexture.vert.qsb</file>
<file alias="PlayerBlurredBackground.frag.qsb">PlayerBlurredBackground.frag.qsb</file>
=====================================
modules/gui/qt/util/qsgrectangularnoisenode.cpp
=====================================
@@ -0,0 +1,226 @@
+/*****************************************************************************
+ * Copyright (C) 2024 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#include "qsgrectangularnoisenode.hpp"
+
+#include <QSGMaterial>
+#include <QSGGeometry>
+#include <QSGMaterialShader>
+
+// Sometimes culling can cause issues with the Qt renderer
+#define BACKFACE_CULLING 1
+
+class QSGRectangularNoiseMaterialShader : public QSGMaterialShader
+{
+public:
+ QSGRectangularNoiseMaterialShader()
+ {
+ setShaderFileName(VertexStage, QStringLiteral(":/shaders/Noise.vert.qsb"));
+ setShaderFileName(FragmentStage, QStringLiteral(":/shaders/Noise.frag.qsb"));
+
+ // Indicate that we want to update the pipeline state, as we
+ // want an extraordinary blending algorithm/factor:
+ setFlag(QSGMaterialShader::UpdatesGraphicsPipelineState);
+ }
+
+ bool updateGraphicsPipelineState(QSGMaterialShader::RenderState &, QSGMaterialShader::GraphicsPipelineState *ps, QSGMaterial *, QSGMaterial *) override
+ {
+ /* The default blending operations of the scene graph renderer are:
+ * QRhiGraphicsPipeline::BlendFactor srcColor = QRhiGraphicsPipeline::One;
+ * QRhiGraphicsPipeline::BlendFactor dstColor = QRhiGraphicsPipeline::OneMinusSrcAlpha;
+ * QRhiGraphicsPipeline::BlendFactor srcAlpha = QRhiGraphicsPipeline::One;
+ * QRhiGraphicsPipeline::BlendFactor dstAlpha = QRhiGraphicsPipeline::OneMinusSrcAlpha;
+ * QRhiGraphicsPipeline::BlendOp opColor = QRhiGraphicsPipeline::Add;
+ * QRhiGraphicsPipeline::BlendOp opAlpha = QRhiGraphicsPipeline::Add;
+ *
+ * For the noise node, we want blend factors (One, One), instead of
+ * (One, OneMinusSrcAlpha). Here, we specify the factors that we
+ * want to use.
+ */
+ bool changeMade = false;
+
+#if BACKFACE_CULLING
+ if (Q_LIKELY(ps->cullMode != GraphicsPipelineState::CullBack))
+ {
+ // Culling is not necessary, but this rectangle will probably
+ // not be rotated more than 90 degrees in z axis, so we can
+ // have backface culling as optimization.
+ ps->cullMode = GraphicsPipelineState::CullBack;
+ changeMade = true;
+ }
+#endif
+
+ if (Q_UNLIKELY(!ps->blendEnable)) // usually blending is enabled by other materials
+ {
+ ps->blendEnable = true;
+ changeMade = true;
+ }
+
+ if (Q_UNLIKELY(ps->srcColor != GraphicsPipelineState::One))
+ {
+ ps->srcColor = GraphicsPipelineState::One;
+ changeMade = true;
+ }
+
+ if (Q_LIKELY(ps->dstColor != GraphicsPipelineState::One))
+ {
+ ps->dstColor = GraphicsPipelineState::One;
+ changeMade = true;
+ }
+
+#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
+ // Qt 6.5.0 brings ability to use separate factor for alpha
+
+ if (Q_UNLIKELY(ps->srcAlpha != GraphicsPipelineState::One))
+ {
+ ps->srcAlpha = GraphicsPipelineState::One;
+ changeMade = true;
+ }
+
+ if (Q_LIKELY(ps->dstAlpha != GraphicsPipelineState::One))
+ {
+ ps->dstAlpha = GraphicsPipelineState::One;
+ changeMade = true;
+ }
+#endif
+
+#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
+ // Before Qt 6.8.0, it is not possible to adjust the blend algorithm.
+ // But it is not really important, because the default has always been addition.
+ // And for the noise we want addition as well.
+
+ if (Q_UNLIKELY(ps->opColor != GraphicsPipelineState::BlendOp::Add))
+ {
+ ps->opColor = GraphicsPipelineState::BlendOp::Add;
+ changeMade = true;
+ }
+
+ if (Q_UNLIKELY(ps->opAlpha != GraphicsPipelineState::BlendOp::Add))
+ {
+ ps->opAlpha = GraphicsPipelineState::BlendOp::Add;
+ changeMade = true;
+ }
+#endif
+
+ return changeMade;
+ }
+
+ bool updateUniformData(RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial) override
+ {
+ assert(dynamic_cast<QSGRectangularNoiseMaterial*>(newMaterial));
+ assert(!oldMaterial || dynamic_cast<QSGRectangularNoiseMaterial*>(oldMaterial));
+
+ qintptr offset = 0;
+ QByteArray *buf = state.uniformData();
+
+ // qt_Matrix:
+ if (state.isMatrixDirty())
+ {
+ const QMatrix4x4 m = state.combinedMatrix();
+ const size_t size = 64;
+ memcpy(buf->data() + offset, m.constData(), size);
+ offset += size;
+ }
+
+ // qt_Opacity:
+ if (state.isOpacityDirty())
+ {
+ // For noise, maybe instead of the scene graph inherited opacity
+ // provided here, direct opacity should be used?
+ const float opacity = state.opacity();
+ const size_t size = 4;
+ memcpy(buf->data() + offset, &opacity, size);
+ offset += size;
+ }
+
+ // Noise strength:
+ const auto oldNoiseMaterial = static_cast<const QSGRectangularNoiseMaterial *>(oldMaterial);
+ const auto newNoiseMaterial = static_cast<const QSGRectangularNoiseMaterial *>(newMaterial);
+ if (!oldMaterial || (oldNoiseMaterial->strength() != newNoiseMaterial->strength()))
+ {
+ const float strength = newNoiseMaterial->strength();
+ const size_t size = 4;
+ memcpy(buf->data() + offset, &strength, size);
+ offset += size;
+ }
+
+ return offset > 0;
+ }
+};
+
+QSGRectangularNoiseMaterial::QSGRectangularNoiseMaterial()
+{
+ setFlag(QSGMaterial::Blending);
+}
+
+QSGMaterialType *QSGRectangularNoiseMaterial::type() const
+{
+ static QSGMaterialType type;
+ return &type;
+}
+
+QSGMaterialShader *QSGRectangularNoiseMaterial::createShader(QSGRendererInterface::RenderMode) const
+{
+ return new QSGRectangularNoiseMaterialShader;
+}
+
+int QSGRectangularNoiseMaterial::compare(const QSGMaterial *other) const
+{
+ assert(dynamic_cast<const QSGRectangularNoiseMaterial *>(other));
+ return static_cast<const QSGRectangularNoiseMaterial*>(other)->strength() - strength();
+}
+
+QSGRectangularNoiseNode::QSGRectangularNoiseNode()
+ : m_geometry(QSGGeometry::defaultAttributes_Point2D(), 4)
+{
+ QSGGeometry::updateRectGeometry(&m_geometry, QRectF());
+ setMaterial(&m_material);
+ setGeometry(&m_geometry);
+}
+
+void QSGRectangularNoiseNode::setRect(const QRectF &_rect)
+{
+ if (rect() == _rect)
+ return;
+
+ // We can use this instead of setting the geometry ourselves:
+ QSGGeometry::updateRectGeometry(&m_geometry, _rect);
+ markDirty(QSGNode::DirtyGeometry);
+}
+
+QRectF QSGRectangularNoiseNode::rect() const
+{
+ const QSGGeometry::Point2D *vertexData = m_geometry.vertexDataAsPoint2D();
+ return QRectF(vertexData[0].x, vertexData[0].y,
+ vertexData[3].x - vertexData[0].x,
+ vertexData[3].y - vertexData[0].y);
+}
+
+float QSGRectangularNoiseNode::strength() const
+{
+ return m_material.strength();
+}
+
+void QSGRectangularNoiseNode::setStrength(float strength)
+{
+ if (qFuzzyCompare(m_material.strength(), strength))
+ return;
+
+ m_material.setStrength(strength);
+ markDirty(QSGNode::DirtyMaterial);
+}
+
=====================================
modules/gui/qt/util/qsgrectangularnoisenode.hpp
=====================================
@@ -0,0 +1,59 @@
+/*****************************************************************************
+ * Copyright (C) 2024 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef QSGRECTANGULARNOISENODE_HPP
+#define QSGRECTANGULARNOISENODE_HPP
+
+#include <QSGGeometryNode>
+#include <QSGGeometry>
+#include <QSGMaterial>
+
+class QSGRectangularNoiseMaterial : public QSGMaterial
+{
+public:
+ QSGRectangularNoiseMaterial();
+
+ float strength() const { return m_strength; };
+ void setStrength(qreal strength) { m_strength = strength; };
+
+ QSGMaterialType *type() const override;
+
+ QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const override;
+ int compare(const QSGMaterial *other) const override;
+
+private:
+ float m_strength = 0.2;
+};
+
+class QSGRectangularNoiseNode : public QSGGeometryNode
+{
+public:
+ QSGRectangularNoiseNode();
+
+ void setRect(const QRectF &rect);
+
+ QRectF rect() const;
+
+ float strength() const;
+ void setStrength(float strength);
+
+private:
+ QSGGeometry m_geometry;
+ QSGRectangularNoiseMaterial m_material;
+};
+
+#endif // QSGRECTANGULARNOISENODE_HPP
=====================================
modules/gui/qt/widgets/native/noiserectangle.cpp
=====================================
@@ -0,0 +1,81 @@
+/*****************************************************************************
+ * Copyright (C) 2024 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#include "noiserectangle.hpp"
+
+#include "util/qsgrectangularnoisenode.hpp"
+
+NoiseRectangle::NoiseRectangle()
+{
+ const auto setDirty = [this]() {
+ m_dirty = true;
+ update();
+ };
+
+ connect(this, &QQuickItem::widthChanged, this, setDirty);
+ connect(this, &QQuickItem::heightChanged, this, setDirty);
+ connect(this, &NoiseRectangle::strengthChanged, this, setDirty);
+}
+
+QSGNode *NoiseRectangle::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
+{
+ if (!oldNode)
+ {
+ oldNode = new QSGRectangularNoiseNode;
+ }
+
+ assert(dynamic_cast<QSGRectangularNoiseNode*>(oldNode));
+
+ const auto node = static_cast<QSGRectangularNoiseNode*>(oldNode);
+
+ if (m_dirty)
+ {
+ // Synchronize the item with the node
+ node->setStrength(m_strength);
+ node->setRect(boundingRect());
+ m_dirty = false;
+ }
+
+ return node;
+}
+
+qreal NoiseRectangle::strength() const
+{
+ return m_strength;
+}
+
+void NoiseRectangle::setStrength(qreal newStrength)
+{
+ if (qFuzzyCompare(m_strength, newStrength))
+ return;
+
+ m_strength = newStrength;
+
+ setFlag(ItemHasContents, !qFuzzyIsNull(m_strength));
+
+ emit strengthChanged();
+}
+
+void NoiseRectangle::componentComplete()
+{
+ if (!qFuzzyIsNull(m_strength))
+ {
+ setFlag(ItemHasContents);
+ update();
+ }
+ QQuickItem::componentComplete();
+}
=====================================
modules/gui/qt/widgets/native/noiserectangle.hpp
=====================================
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (C) 2024 VLC authors and VideoLAN
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * ( at your option ) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef NOISERECTANGLE_HPP
+#define NOISERECTANGLE_HPP
+
+#include <QQuickItem>
+
+class NoiseRectangle : public QQuickItem
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal strength READ strength WRITE setStrength NOTIFY strengthChanged FINAL)
+
+ QML_ELEMENT
+public:
+ NoiseRectangle();
+
+ QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
+
+ qreal strength() const;
+ void setStrength(qreal newStrength);
+
+signals:
+ void strengthChanged();
+private:
+ bool m_dirty = false;
+ qreal m_strength = 0.2;
+protected:
+ void componentComplete() override;
+};
+
+#endif // NOISERECTANGLE_HPP
=====================================
modules/gui/qt/widgets/qml/FrostedGlassEffect.qml
=====================================
@@ -49,7 +49,7 @@ Widgets.BlurEffect {
color: Qt.alpha(root.tint, root.tintStrength)
}
- ShaderEffect {
+ Widgets.NoiseRectangle {
id: noise
// Overlay for the blur effect:
@@ -58,8 +58,6 @@ Widgets.BlurEffect {
visible: root.noiseStrength > 0.0
- readonly property real strength: root.noiseStrength
-
- fragmentShader: "qrc:///shaders/Noise.frag.qsb"
+ strength: root.noiseStrength
}
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/caa02fe5e422625649e7706475a03d8cef5e4b38...85d71854b3bd06438caf3808a9696e115bd46588
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/caa02fe5e422625649e7706475a03d8cef5e4b38...85d71854b3bd06438caf3808a9696e115bd46588
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list