Revision control

++ // Copyright (C) 2022 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++ // Qt-Security score:significant reason:default
++
++
++ #ifndef QQUICK3DSPECULARGLOSSYMATERIAL_P_H
++ #define QQUICK3DSPECULARGLOSSYMATERIAL_P_H
++
++ //
++ // W A R N I N G
++ // -------------
++ //
++ // This file is not part of the Qt API. It exists purely as an
++ // implementation detail. This header file may change from version toSpecularGlossyMaterial
++ // version without notice, or even be removed.
++ //
++ // We mean it.
++ //
++
++ #include <QtQuick3D/private/qquick3dmaterial_p.h>
++ #include <QtQuick3D/private/qquick3dtexture_p.h>
++
++ #include <QColor>
++ #include <QHash>
++
++ QT_BEGIN_NAMESPACE
++
++ class Q_QUICK3D_EXPORT QQuick3DSpecularGlossyMaterial : public QQuick3DMaterial
++ {
++ Q_OBJECT
++ Q_PROPERTY(Lighting lighting READ lighting WRITE setLighting NOTIFY lightingChanged)
++ Q_PROPERTY(BlendMode blendMode READ blendMode WRITE setBlendMode NOTIFY blendModeChanged)
++
++ Q_PROPERTY(QColor albedoColor READ albedoColor WRITE setAlbedoColor NOTIFY albedoColorChanged)
++ Q_PROPERTY(QQuick3DTexture *albedoMap READ albedoMap WRITE setAlbedoMap NOTIFY albedoMapChanged)
++ Q_PROPERTY(bool albedoSingleChannelEnabled READ albedoSingleChannelEnabled WRITE setAlbedoSingleChannelEnabled NOTIFY albedoSingleChannelEnabledChanged REVISION(6, 8))
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping albedoChannel READ albedoChannel WRITE setAlbedoChannel NOTIFY albedoChannelChanged REVISION(6, 8))
++
++ Q_PROPERTY(QColor specularColor READ specularColor WRITE setSpecularColor NOTIFY specularColorChanged)
++ Q_PROPERTY(QQuick3DTexture *specularMap READ specularMap WRITE setSpecularMap NOTIFY specularMapChanged)
++ Q_PROPERTY(bool specularSingleChannelEnabled READ specularSingleChannelEnabled WRITE setSpecularSingleChannelEnabled NOTIFY specularSingleChannelEnabledChanged REVISION(6, 8))
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping specularChannel READ specularChannel WRITE setSpecularChannel NOTIFY specularChannelChanged REVISION(6, 8))
++
++ Q_PROPERTY(float glossiness READ glossiness WRITE setGlossiness NOTIFY glossinessChanged)
++ Q_PROPERTY(QQuick3DTexture *glossinessMap READ glossinessMap WRITE setGlossinessMap NOTIFY glossinessMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping glossinessChannel READ glossinessChannel WRITE setGlossinessChannel NOTIFY glossinessChannelChanged)
++
++ Q_PROPERTY(QVector3D emissiveFactor READ emissiveFactor WRITE setEmissiveFactor NOTIFY emissiveFactorChanged)
++ Q_PROPERTY(QQuick3DTexture *emissiveMap READ emissiveMap WRITE setEmissiveMap NOTIFY emissiveMapChanged)
++ Q_PROPERTY(bool emissiveSingleChannelEnabled READ emissiveSingleChannelEnabled WRITE setEmissiveSingleChannelEnabled NOTIFY emissiveSingleChannelEnabledChanged REVISION(6, 8))
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping emissiveChannel READ emissiveChannel WRITE setEmissiveChannel NOTIFY emissiveChannelChanged REVISION(6, 8))
++
++ Q_PROPERTY(bool invertOpacityMapValue READ invertOpacityMapValue WRITE setInvertOpacityMapValue NOTIFY invertOpacityMapValueChanged REVISION(6, 8))
++ Q_PROPERTY(float opacity READ opacity WRITE setOpacity NOTIFY opacityChanged)
++ Q_PROPERTY(QQuick3DTexture *opacityMap READ opacityMap WRITE setOpacityMap NOTIFY opacityMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping opacityChannel READ opacityChannel WRITE setOpacityChannel NOTIFY opacityChannelChanged)
++
++ Q_PROPERTY(QQuick3DTexture *normalMap READ normalMap WRITE setNormalMap NOTIFY normalMapChanged)
++ Q_PROPERTY(float normalStrength READ normalStrength WRITE setNormalStrength NOTIFY normalStrengthChanged)
++
++ Q_PROPERTY(QQuick3DTexture *occlusionMap READ occlusionMap WRITE setOcclusionMap NOTIFY occlusionMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping occlusionChannel READ occlusionChannel WRITE setOcclusionChannel NOTIFY occlusionChannelChanged)
++ Q_PROPERTY(float occlusionAmount READ occlusionAmount WRITE setOcclusionAmount NOTIFY occlusionAmountChanged)
++
++ Q_PROPERTY(AlphaMode alphaMode READ alphaMode WRITE setAlphaMode NOTIFY alphaModeChanged)
++ Q_PROPERTY(float alphaCutoff READ alphaCutoff WRITE setAlphaCutoff NOTIFY alphaCutoffChanged)
++
++ Q_PROPERTY(float pointSize READ pointSize WRITE setPointSize NOTIFY pointSizeChanged)
++ Q_PROPERTY(float lineWidth READ lineWidth WRITE setLineWidth NOTIFY lineWidthChanged)
++
++ Q_PROPERTY(QQuick3DTexture *heightMap READ heightMap WRITE setHeightMap NOTIFY heightMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping heightChannel READ heightChannel WRITE setHeightChannel NOTIFY heightChannelChanged)
++ Q_PROPERTY(float heightAmount READ heightAmount WRITE setHeightAmount NOTIFY heightAmountChanged)
++ Q_PROPERTY(int minHeightMapSamples READ minHeightMapSamples WRITE setMinHeightMapSamples NOTIFY minHeightMapSamplesChanged)
++ Q_PROPERTY(int maxHeightMapSamples READ maxHeightMapSamples WRITE setMaxHeightMapSamples NOTIFY maxHeightMapSamplesChanged)
++
++ Q_PROPERTY(float clearcoatAmount READ clearcoatAmount WRITE setClearcoatAmount NOTIFY clearcoatAmountChanged)
++ Q_PROPERTY(QQuick3DTexture *clearcoatMap READ clearcoatMap WRITE setClearcoatMap NOTIFY clearcoatMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping clearcoatChannel READ clearcoatChannel WRITE setClearcoatChannel NOTIFY
++ clearcoatChannelChanged)
++ Q_PROPERTY(float clearcoatRoughnessAmount READ clearcoatRoughnessAmount WRITE setClearcoatRoughnessAmount NOTIFY
++ clearcoatRoughnessAmountChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping clearcoatRoughnessChannel READ clearcoatRoughnessChannel WRITE
++ setClearcoatRoughnessChannel NOTIFY clearcoatRoughnessChannelChanged)
++ Q_PROPERTY(QQuick3DTexture *clearcoatRoughnessMap READ clearcoatRoughnessMap WRITE setClearcoatRoughnessMap NOTIFY
++ clearcoatRoughnessMapChanged)
++ Q_PROPERTY(QQuick3DTexture *clearcoatNormalMap READ clearcoatNormalMap WRITE setClearcoatNormalMap NOTIFY
++ clearcoatNormalMapChanged)
++ Q_PROPERTY(float clearcoatNormalStrength READ clearcoatNormalStrength WRITE setClearcoatNormalStrength NOTIFY clearcoatNormalStrengthChanged REVISION(6, 8))
++
++ Q_PROPERTY(float transmissionFactor READ transmissionFactor WRITE setTransmissionFactor NOTIFY transmissionFactorChanged)
++ Q_PROPERTY(QQuick3DTexture * transmissionMap READ transmissionMap WRITE setTransmissionMap NOTIFY transmissionMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping transmissionChannel READ transmissionChannel WRITE setTransmissionChannel NOTIFY transmissionChannelChanged)
++
++ Q_PROPERTY(float thicknessFactor READ thicknessFactor WRITE setThicknessFactor NOTIFY thicknessFactorChanged)
++ Q_PROPERTY(QQuick3DTexture *thicknessMap READ thicknessMap WRITE setThicknessMap NOTIFY thicknessMapChanged)
++ Q_PROPERTY(QQuick3DMaterial::TextureChannelMapping thicknessChannel READ thicknessChannel WRITE setThicknessChannel NOTIFY
++ thicknessChannelChanged)
++ Q_PROPERTY(float attenuationDistance READ attenuationDistance WRITE setAttenuationDistance NOTIFY attenuationDistanceChanged)
++ Q_PROPERTY(QColor attenuationColor READ attenuationColor WRITE setAttenuationColor NOTIFY attenuationColorChanged)
++
++ Q_PROPERTY(bool vertexColorsEnabled READ vertexColorsEnabled WRITE setVertexColorsEnabled NOTIFY vertexColorsEnabledChanged REVISION(6, 5))
++
++ Q_PROPERTY(bool fresnelScaleBiasEnabled READ fresnelScaleBiasEnabled WRITE setFresnelScaleBiasEnabled NOTIFY fresnelScaleBiasEnabledChanged REVISION(6, 8))
++ Q_PROPERTY(float fresnelScale READ fresnelScale WRITE setFresnelScale NOTIFY fresnelScaleChanged REVISION(6, 8))
++ Q_PROPERTY(float fresnelBias READ fresnelBias WRITE setFresnelBias NOTIFY fresnelBiasChanged REVISION(6, 8))
++ Q_PROPERTY(float fresnelPower READ fresnelPower WRITE setFresnelPower NOTIFY fresnelPowerChanged REVISION(6, 8))
++
++ Q_PROPERTY(bool clearcoatFresnelScaleBiasEnabled READ clearcoatFresnelScaleBiasEnabled WRITE setClearcoatFresnelScaleBiasEnabled NOTIFY clearcoatFresnelScaleBiasEnabledChanged REVISION(6, 8))
++ Q_PROPERTY(float clearcoatFresnelScale READ clearcoatFresnelScale WRITE setClearcoatFresnelScale NOTIFY clearcoatFresnelScaleChanged REVISION(6, 8))
++ Q_PROPERTY(float clearcoatFresnelBias READ clearcoatFresnelBias WRITE setClearcoatFresnelBias NOTIFY clearcoatFresnelBiasChanged REVISION(6, 8))
++ Q_PROPERTY(float clearcoatFresnelPower READ clearcoatFresnelPower WRITE setClearcoatFresnelPower NOTIFY clearcoatFresnelPowerChanged REVISION(6, 8))
++
++ Q_PROPERTY(bool vertexColorsMaskEnabled READ vertexColorsMaskEnabled WRITE setVertexColorsMaskEnabled NOTIFY vertexColorsMaskEnabledChanged REVISION(6, 8))
++ Q_PROPERTY(VertexColorMaskFlags vertexColorRedMask READ vertexColorRedMask WRITE setVertexColorRedMask NOTIFY vertexColorRedMaskChanged REVISION(6, 8))
++ Q_PROPERTY(VertexColorMaskFlags vertexColorGreenMask READ vertexColorGreenMask WRITE setVertexColorGreenMask NOTIFY vertexColorGreenMaskChanged REVISION(6, 8))
++ Q_PROPERTY(VertexColorMaskFlags vertexColorBlueMask READ vertexColorBlueMask WRITE setVertexColorBlueMask NOTIFY vertexColorBlueMaskChanged REVISION(6, 8))
++ Q_PROPERTY(VertexColorMaskFlags vertexColorAlphaMask READ vertexColorAlphaMask WRITE setVertexColorAlphaMask NOTIFY vertexColorAlphaMaskChanged REVISION(6, 8))
++
++ QML_NAMED_ELEMENT(SpecularGlossyMaterial)
++ QML_ADDED_IN_VERSION(6, 4)
++
++ public:
++ enum Lighting {
++ NoLighting = 0,
++ FragmentLighting
++ };
++ Q_ENUM(Lighting)
++
++ enum BlendMode {
++ SourceOver = 0,
++ Screen,
++ Multiply
++ };
++ Q_ENUM(BlendMode)
++
++ enum AlphaMode {
++ Default = 0,
++ Mask,
++ Blend,
++ Opaque
++ };
++ Q_ENUM(AlphaMode)
++
++ enum VertexColorMask {
++ NoMask = QQuick3DMaterial::NoMask,
++ GlossinessMask = QQuick3DMaterial::RoughnessMask,
++ NormalStrengthMask = QQuick3DMaterial::NormalStrengthMask,
++ ClearcoatAmountMask = QQuick3DMaterial::ClearcoatAmountMask,
++ ClearcoatRoughnessAmountMask = QQuick3DMaterial::ClearcoatRoughnessAmountMask,
++ ClearcoatNormalStrengthMask = QQuick3DMaterial::NormalStrengthMask,
++ HeightAmountMask = QQuick3DMaterial::HeightAmountMask,
++ OcclusionAmountMask = QQuick3DMaterial::OcclusionAmountMask,
++ ThicknessFactorMask = QQuick3DMaterial::ThicknessFactorMask,
++ TransmissionFactorMask = QQuick3DMaterial::TransmissionFactorMask
++ };
++ Q_ENUM(VertexColorMask)
++ Q_DECLARE_FLAGS(VertexColorMaskFlags, VertexColorMask)
++ Q_FLAG(VertexColorMaskFlags)
++
++ explicit QQuick3DSpecularGlossyMaterial(QQuick3DObject *parent = nullptr);
++ ~QQuick3DSpecularGlossyMaterial() override;
++
++ Lighting lighting() const;
++ BlendMode blendMode() const;
++ QColor albedoColor() const;
++ QQuick3DTexture *albedoMap() const;
++ Q_REVISION(6, 8) bool albedoSingleChannelEnabled() const;
++ Q_REVISION(6, 8) TextureChannelMapping albedoChannel() const;
++ Q_REVISION(6, 8) bool specularSingleChannelEnabled() const;
++ Q_REVISION(6, 8) TextureChannelMapping specularChannel() const;
++ Q_REVISION(6, 8) bool emissiveSingleChannelEnabled() const;
++ Q_REVISION(6, 8) TextureChannelMapping emissiveChannel() const;
++ QQuick3DTexture *emissiveMap() const;
++ QVector3D emissiveFactor() const;
++ float glossiness() const;
++ QQuick3DTexture *glossinessMap() const;
++ Q_REVISION(6, 8) bool invertOpacityMapValue() const;
++ float opacity() const;
++ QQuick3DTexture *opacityMap() const;
++ QQuick3DTexture *normalMap() const;
++ QColor specularColor() const;
++ QQuick3DTexture *specularMap() const;
++ float normalStrength() const;
++ QQuick3DTexture *occlusionMap() const;
++ float occlusionAmount() const;
++ AlphaMode alphaMode() const;
++ float alphaCutoff() const;
++ TextureChannelMapping glossinessChannel() const;
++ TextureChannelMapping opacityChannel() const;
++ TextureChannelMapping occlusionChannel() const;
++ float pointSize() const;
++ float lineWidth() const;
++ QQuick3DTexture *heightMap() const;
++ TextureChannelMapping heightChannel() const;
++ float heightAmount() const;
++ int minHeightMapSamples() const;
++ int maxHeightMapSamples() const;
++
++ float clearcoatAmount() const;
++ QQuick3DTexture *clearcoatMap() const;
++ TextureChannelMapping clearcoatChannel() const;
++ float clearcoatRoughnessAmount() const;
++ TextureChannelMapping clearcoatRoughnessChannel() const;
++ QQuick3DTexture *clearcoatRoughnessMap() const;
++ QQuick3DTexture *clearcoatNormalMap() const;
++
++ float transmissionFactor() const;
++ QQuick3DTexture *transmissionMap() const;
++ TextureChannelMapping transmissionChannel() const;
++
++ float thicknessFactor() const;
++ QQuick3DTexture *thicknessMap() const;
++ TextureChannelMapping thicknessChannel() const;
++ float attenuationDistance() const;
++ QColor attenuationColor() const;
++
++ Q_REVISION(6, 8) bool fresnelScaleBiasEnabled() const;
++ Q_REVISION(6, 8) float fresnelScale() const;
++ Q_REVISION(6, 8) float fresnelBias() const;
++ Q_REVISION(6, 8) float fresnelPower() const;
++
++ Q_REVISION(6, 8) bool clearcoatFresnelScaleBiasEnabled() const;
++ Q_REVISION(6, 8) float clearcoatFresnelScale() const;
++ Q_REVISION(6, 8) float clearcoatFresnelBias() const;
++ Q_REVISION(6, 8) float clearcoatFresnelPower() const;
++
++ Q_REVISION(6, 5) bool vertexColorsEnabled() const;
++ Q_REVISION(6, 8) float clearcoatNormalStrength() const;
++
++ Q_REVISION(6, 8) bool vertexColorsMaskEnabled() const;
++ Q_REVISION(6, 8) VertexColorMaskFlags vertexColorRedMask() const;
++ Q_REVISION(6, 8) VertexColorMaskFlags vertexColorGreenMask() const;
++ Q_REVISION(6, 8) VertexColorMaskFlags vertexColorBlueMask() const;
++ Q_REVISION(6, 8) VertexColorMaskFlags vertexColorAlphaMask() const;
++
++ public Q_SLOTS:
++ void setLighting(QQuick3DSpecularGlossyMaterial::Lighting lighting);
++ void setBlendMode(QQuick3DSpecularGlossyMaterial::BlendMode blendMode);
++ void setAlbedoColor(const QColor &albedo);
++ void setAlbedoMap(QQuick3DTexture *albedoMap);
++ Q_REVISION(6, 8) void setAlbedoSingleChannelEnabled(bool albedoSingleChannelEnabled);
++ Q_REVISION(6, 8) void setAlbedoChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ Q_REVISION(6, 8) void setSpecularSingleChannelEnabled(bool specularSingleChannelEnabled);
++ Q_REVISION(6, 8) void setSpecularChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ Q_REVISION(6, 8) void setEmissiveSingleChannelEnabled(bool emissiveSingleChannelEnabled);
++ Q_REVISION(6, 8) void setEmissiveChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ void setEmissiveMap(QQuick3DTexture *emissiveMap);
++ void setEmissiveFactor(const QVector3D &emissiveFactor);
++ void setGlossiness(float glossiness);
++ void setGlossinessMap(QQuick3DTexture *glossinessMap);
++ Q_REVISION(6, 8) void setInvertOpacityMapValue(bool invertOpacityMapValue);
++ void setOpacity(float opacity);
++ void setOpacityMap(QQuick3DTexture *opacityMap);
++ void setNormalMap(QQuick3DTexture *normalMap);
++ void setSpecularColor(const QColor &specular);
++ void setSpecularMap(QQuick3DTexture *specularMap);
++ void setNormalStrength(float normalStrength);
++ void setOcclusionMap(QQuick3DTexture *occlusionMap);
++ void setOcclusionAmount(float occlusionAmount);
++ void setAlphaMode(QQuick3DSpecularGlossyMaterial::AlphaMode alphaMode);
++ void setAlphaCutoff(float alphaCutoff);
++ void setGlossinessChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ void setOpacityChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ void setOcclusionChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ void setPointSize(float size);
++ void setLineWidth(float width);
++ void setHeightMap(QQuick3DTexture *heightMap);
++ void setHeightChannel(QQuick3DMaterial::TextureChannelMapping channel);
++ void setHeightAmount(float heightAmount);
++ void setMinHeightMapSamples(int samples);
++ void setMaxHeightMapSamples(int samples);
++
++ void setClearcoatAmount(float newClearcoatAmount);
++ void setClearcoatMap(QQuick3DTexture *newClearcoatMap);
++ void setClearcoatChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatChannel);
++ void setClearcoatRoughnessAmount(float newClearcoatRoughnessAmount);
++ void setClearcoatRoughnessChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatRoughnessChannel);
++ void setClearcoatRoughnessMap(QQuick3DTexture *newClearcoatRoughnessMap);
++ void setClearcoatNormalMap(QQuick3DTexture *newClearcoatNormalMap);
++ Q_REVISION(6, 8) void setClearcoatNormalStrength( float newClearcoatNormalStrength );
++
++ void setTransmissionFactor(float newTransmissionFactor);
++ void setTransmissionMap(QQuick3DTexture *newTransmissionMap);
++ void setTransmissionChannel(QQuick3DMaterial::TextureChannelMapping newTransmissionChannel);
++
++ void setThicknessFactor(float newThicknessFactor);
++ void setThicknessMap(QQuick3DTexture *newThicknessMap);
++ void setThicknessChannel(QQuick3DMaterial::TextureChannelMapping newThicknessChannel);
++ void setAttenuationDistance(float newAttenuationDistance);
++ void setAttenuationColor(const QColor &newAttenuationColor);
++
++ Q_REVISION(6, 8) void setFresnelScaleBiasEnabled(bool fresnelScaleBias);
++ Q_REVISION(6, 8) void setFresnelScale(float fresnelScale);
++ Q_REVISION(6, 8) void setFresnelBias(float fresnelBias);
++ Q_REVISION(6, 8) void setFresnelPower(float fresnelPower);
++
++ Q_REVISION(6, 8) void setClearcoatFresnelScaleBiasEnabled(bool clearcoatFresnelScaleBias);
++ Q_REVISION(6, 8) void setClearcoatFresnelScale(float clearcoatFresnelScale);
++ Q_REVISION(6, 8) void setClearcoatFresnelBias(float clearcoatFresnelBias);
++ Q_REVISION(6, 8) void setClearcoatFresnelPower(float clearcoatFresnelPower);
++
++ Q_REVISION(6, 5) void setVertexColorsEnabled(bool vertexColorsEnabled);
++
++ Q_REVISION(6, 8) void setVertexColorsMaskEnabled(bool vertexColorsMaskEnabled);
++ Q_REVISION(6, 8) void setVertexColorRedMask(VertexColorMaskFlags vertexColorRedMask);
++ Q_REVISION(6, 8) void setVertexColorGreenMask(VertexColorMaskFlags vertexColorGreenMask);
++ Q_REVISION(6, 8) void setVertexColorBlueMask(VertexColorMaskFlags vertexColorBlueMask);
++ Q_REVISION(6, 8) void setVertexColorAlphaMask(VertexColorMaskFlags vertexColorAlphaMask);
++
++ Q_SIGNALS:
++ void lightingChanged();
++ void blendModeChanged();
++ void albedoColorChanged();
++ void albedoMapChanged();
++ Q_REVISION(6, 8) void albedoSingleChannelEnabledChanged();
++ Q_REVISION(6, 8) void albedoChannelChanged();
++ Q_REVISION(6, 8) void specularSingleChannelEnabledChanged();
++ Q_REVISION(6, 8) void specularChannelChanged();
++ Q_REVISION(6, 8) void emissiveSingleChannelEnabledChanged();
++ Q_REVISION(6, 8) void emissiveChannelChanged();
++ void emissiveMapChanged();
++ void emissiveFactorChanged();
++ void glossinessChanged();
++ void glossinessMapChanged();
++ Q_REVISION(6, 8) void invertOpacityMapValueChanged();
++ void opacityChanged();
++ void opacityMapChanged();
++ void normalMapChanged();
++ void specularColorChanged();
++ void specularMapChanged();
++ void normalStrengthChanged();
++ void occlusionMapChanged();
++ void occlusionAmountChanged();
++ void alphaModeChanged();
++ void alphaCutoffChanged();
++ void glossinessChannelChanged();
++ void opacityChannelChanged();
++ void occlusionChannelChanged();
++ void pointSizeChanged();
++ void lineWidthChanged();
++ void heightMapChanged();
++ void heightChannelChanged();
++ void heightAmountChanged();
++ void minHeightMapSamplesChanged();
++ void maxHeightMapSamplesChanged();
++
++ void clearcoatAmountChanged();
++ void clearcoatMapChanged();
++ void clearcoatChannelChanged();
++ void clearcoatRoughnessAmountChanged();
++ void clearcoatRoughnessChannelChanged();
++ void clearcoatRoughnessMapChanged();
++ void clearcoatNormalMapChanged();
++ void clearcoatNormalStrengthChanged();
++
++ void transmissionFactorChanged();
++ void transmissionMapChanged();
++ void transmissionChannelChanged();
++
++ void thicknessFactorChanged();
++ void thicknessMapChanged();
++ void thicknessChannelChanged();
++ void attenuationDistanceChanged();
++ void attenuationColorChanged();
++
++ Q_REVISION(6, 5) void vertexColorsEnabledChanged(bool vertexColorsEnabled);
++
++ Q_REVISION(6, 8) void fresnelScaleBiasEnabledChanged(bool fresnelScaleBiasEnabled);
++ Q_REVISION(6, 8) void fresnelScaleChanged(float fresnelScale);
++ Q_REVISION(6, 8) void fresnelBiasChanged(float fresnelBias);
++ Q_REVISION(6, 8) void fresnelPowerChanged(float fresnelPower);
++
++ Q_REVISION(6, 8) void clearcoatFresnelScaleBiasEnabledChanged(bool clearcoatFresnelScaleBiasEnabled);
++ Q_REVISION(6, 8) void clearcoatFresnelScaleChanged(float clearcoatFresnelScale);
++ Q_REVISION(6, 8) void clearcoatFresnelBiasChanged(float clearcoatFresnelBias);
++ Q_REVISION(6, 8) void clearcoatFresnelPowerChanged(float clearcoatFresnelPower);
++
++ Q_REVISION(6, 8) void vertexColorsMaskEnabledChanged();
++ Q_REVISION(6, 8) void vertexColorRedMaskChanged();
++ Q_REVISION(6, 8) void vertexColorGreenMaskChanged();
++ Q_REVISION(6, 8) void vertexColorBlueMaskChanged();
++ Q_REVISION(6, 8) void vertexColorAlphaMaskChanged();
++
++ protected:
++ QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
++ void markAllDirty() override;
++ void itemChange(ItemChange, const ItemChangeData &) override;
++ private:
++
++ enum DirtyType {
++ LightingModeDirty = 0x00000001,
++ BlendModeDirty = 0x00000002,
++ AlbedoDirty = 0x00000004,
++ EmissiveDirty = 0x00000008,
++ SpecularDirty = 0x00000010,
++ OpacityDirty = 0x00000020,
++ NormalDirty = 0x00000040,
++ GlossyDirty = 0x00000080,
++ OcclusionDirty = 0x00000100,
++ AlphaModeDirty = 0x00000200,
++ PointSizeDirty = 0x00000400,
++ LineWidthDirty = 0x00000800,
++ HeightDirty = 0x00001000,
++ ClearcoatDirty = 0x00002000,
++ TransmissionDirty = 0x00004000,
++ VolumeDirty = 0x00008000,
++ VertexColorsDirty = 0x00001000
++ };
++
++ void updateSceneManager(QQuick3DSceneManager *window);
++
++ Lighting m_lighting = FragmentLighting;
++ BlendMode m_blendMode = SourceOver;
++ AlphaMode m_alphaMode = Default;
++ QColor m_albedo = Qt::white;
++ QQuick3DTexture *m_albedoMap = nullptr;
++ bool m_albedoSingleChannelEnabled = false;
++ TextureChannelMapping m_albedoChannel = QQuick3DMaterial::R;
++ bool m_specularSingleChannelEnabled = false;
++ TextureChannelMapping m_specularChannel = QQuick3DMaterial::R;
++ bool m_emissiveSingleChannelEnabled = false;
++ TextureChannelMapping m_emissiveChannel = QQuick3DMaterial::R;
++ QVector3D m_emissiveFactor;
++ QQuick3DTexture *m_emissiveMap = nullptr;
++ QQuick3DTexture *m_glossinessMap = nullptr;
++ QQuick3DTexture *m_opacityMap = nullptr;
++ QQuick3DTexture *m_normalMap = nullptr;
++ QQuick3DTexture *m_specularMap = nullptr;
++ QQuick3DTexture *m_occlusionMap = nullptr;
++ float m_glossiness = 1.0f;
++ bool m_invertOpacityMapValue = false;
++ float m_opacity = 1.0f;
++ QColor m_specular = Qt::white;
++ float m_normalStrength = 1.0f;
++ float m_occlusionAmount = 1.0f;
++ float m_alphaCutoff = 0.5f;
++ TextureChannelMapping m_glossinessChannel = QQuick3DMaterial::A;
++ TextureChannelMapping m_opacityChannel = QQuick3DMaterial::A;
++ TextureChannelMapping m_occlusionChannel = QQuick3DMaterial::R;
++ float m_pointSize = 1.0f;
++ float m_lineWidth = 1.0f;
++ QQuick3DTexture *m_heightMap = nullptr;
++ TextureChannelMapping m_heightChannel = QQuick3DMaterial::R;
++ float m_heightAmount = 0.0f;
++ int m_minHeightMapSamples = 8;
++ int m_maxHeightMapSamples = 32;
++ float m_clearcoatAmount = 0.0f;
++ QQuick3DTexture *m_clearcoatMap = nullptr;
++ TextureChannelMapping m_clearcoatChannel = QQuick3DMaterial::R;
++ float m_clearcoatRoughnessAmount = 0.0f;
++ TextureChannelMapping m_clearcoatRoughnessChannel = QQuick3DMaterial::G;
++ QQuick3DTexture *m_clearcoatRoughnessMap = nullptr;
++ QQuick3DTexture *m_clearcoatNormalMap = nullptr;
++ float m_clearcoatNormalStrength = 1.0f;
++ float m_transmissionFactor = 0.0f;
++ QQuick3DTexture *m_transmissionMap = nullptr;
++ TextureChannelMapping m_transmissionChannel = QQuick3DMaterial::R;
++ float m_thicknessFactor = 0.0f;
++ QQuick3DTexture *m_thicknessMap = nullptr;
++ TextureChannelMapping m_thicknessChannel = QQuick3DMaterial::G;
++ float m_attenuationDistance = std::numeric_limits<float>::infinity();
++ QColor m_attenuationColor = Qt::white;
++ bool m_fresnelScaleBiasEnabled = false;
++ float m_fresnelScale = 1.0f;
++ float m_fresnelBias = 0.0f;
++ float m_fresnelPower = 5.0f;
++ bool m_clearcoatFresnelScaleBiasEnabled = false;
++ float m_clearcoatFresnelScale = 1.0f;
++ float m_clearcoatFresnelBias = 0.0f;
++ float m_clearcoatFresnelPower = 5.0f;
++ bool m_vertexColorsEnabled = true;
++ bool m_vertexColorsMaskEnabled = false;
++ VertexColorMaskFlags m_vertexColorRedMask = NoMask;
++ VertexColorMaskFlags m_vertexColorGreenMask = NoMask;
++ VertexColorMaskFlags m_vertexColorBlueMask = NoMask;
++ VertexColorMaskFlags m_vertexColorAlphaMask = NoMask;
++
++ quint32 m_dirtyAttributes = 0xffffffff; // all dirty by default
++ void markDirty(DirtyType type);
++
++ static constexpr float ensureNormalized(float val) { return qBound(0.0f, val, 1.0f); }
++ };
++
++ QT_END_NAMESPACE
++
++ #endif // QQUICK3DSPECULARGLOSSYMATERIAL_P_H