[vlc-commits] [Git][videolan/vlc][master] 7 commits: Revert "qt: add `Noise.vert`"
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Sun Jan 5 12:29:38 UTC 2025
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
5dfc7cb1 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
Revert "qt: add `Noise.vert`"
This reverts commit f18fbef33852d41e474b1e6f01f5804a9798d814.
- - - - -
8a0f5dd5 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
Revert "qml: do not depend on dummy texture in Noise.frag"
This reverts commit 193a18433152ca7b1802222dd124d5d0ad32e644.
- - - - -
c68fb905 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
Revert "qt: introduce `QSGRectangularNoiseNode`"
This reverts commit 3585074066eb0af34b8db5980bfe08155e697bf8.
- - - - -
bc4fc916 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
Revert "qt: introduce `NoiseRectangle`"
This reverts commit d47b451ffd5dc1c1b552b36a3e5ee15bed573386.
- - - - -
928e55a2 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
Revert "qt: register `NoiseRectangle`"
This reverts commit 84e0798a43d662fbad38fbe259b3c6bf3019198e.
- - - - -
7684d674 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
Revert "qml: use `NoiseRectangle` instead of `ShaderEffect` in `FrostedGlassEffect.qml`"
This reverts commit 85d71854b3bd06438caf3808a9696e115bd46588.
- - - - -
af20e289 by Fatih Uzunoglu at 2025-01-05T12:07:13+00:00
qml: set alpha to zero in Noise.frag to use additive blending
Since the output color is pre-multiplied, setting the alpha to
zero does not mean that nothing is shown. Rather, the alpha is
already factored in the RGB channels so it is respected.
As the Qt docs says, we can set the alpha to 0.0 to achieve
additive blending (S + D) that is necessary for noise effect.
- - - - -
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
=====================================
@@ -342,8 +342,6 @@ 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 \
@@ -359,8 +357,7 @@ 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/noiserectangle.cpp widgets/native/noiserectangle.hpp
+ widgets/native/doubleclickignoringitem.hpp
# Meta-object compilation
@@ -506,8 +503,7 @@ 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/noiserectangle.moc.cpp
+ widgets/native/viewblockingrectangle.moc.cpp
nodist_libqt_plugin_la_SOURCES += \
dialogs/extended/ui_equalizer.h \
@@ -1343,7 +1339,6 @@ 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
=====================================
@@ -63,7 +63,6 @@
#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
@@ -350,7 +349,6 @@ 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
=====================================
@@ -152,7 +152,6 @@ moc_headers = files(
'widgets/native/mlfolderseditor.hpp',
'widgets/native/searchlineedit.hpp',
'widgets/native/viewblockingrectangle.hpp',
- 'widgets/native/noiserectangle.hpp',
)
if host_system == 'windows'
@@ -478,8 +477,6 @@ 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',
@@ -499,8 +496,6 @@ 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,6 +18,8 @@
* 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 {
@@ -31,7 +33,14 @@ float rand(vec2 co){
}
void main() {
- float r = rand(gl_FragCoord.xy * gl_FragCoord.wz) - 0.5;
+ float r = rand(qt_TexCoord0) - 0.5;
vec4 noise = vec4(r,r,r,1.0) * strength;
fragColor = noise * qt_Opacity;
+ // Noise should use additive blending (S + D) instead of the default source-over
+ // blending (S + D * (1 - S.a)). For that, set alpha to 0:
+ // Since it is premultiplied, alpha is already factored in the other channels
+ // and should be still respected. "If blending is enabled, source-over blending
+ // is used. However, additive blending can be achieved by outputting zero in the
+ // alpha channel."
+ fragColor.a = 0.0;
}
=====================================
modules/gui/qt/shaders/Noise.vert deleted
=====================================
@@ -1,32 +0,0 @@
-#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,7 +11,6 @@ shader_sources = [
'FadingEdgeX.vert',
'FadingEdgeY.vert',
'Noise.frag',
- 'Noise.vert',
'RectFilter.frag',
'SubTexture.vert',
'PlayerBlurredBackground.frag',
=====================================
modules/gui/qt/shaders/shaders.qrc
=====================================
@@ -5,7 +5,6 @@
<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 deleted
=====================================
@@ -1,226 +0,0 @@
-/*****************************************************************************
- * 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 deleted
=====================================
@@ -1,59 +0,0 @@
-/*****************************************************************************
- * 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 deleted
=====================================
@@ -1,81 +0,0 @@
-/*****************************************************************************
- * 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 deleted
=====================================
@@ -1,47 +0,0 @@
-/*****************************************************************************
- * 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)
}
- Widgets.NoiseRectangle {
+ ShaderEffect {
id: noise
// Overlay for the blur effect:
@@ -58,6 +58,8 @@ Widgets.BlurEffect {
visible: root.noiseStrength > 0.0
- strength: root.noiseStrength
+ readonly property real strength: root.noiseStrength
+
+ fragmentShader: "qrc:///shaders/Noise.frag.qsb"
}
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/b86023a8865cf76b572d8070433bff9e82ade029...af20e289bd201d1a6e749087edee14ff40913511
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/b86023a8865cf76b572d8070433bff9e82ade029...af20e289bd201d1a6e749087edee14ff40913511
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