7#include <QtQuick3DRuntimeRender/private/qssgrenderdefaultmaterial_p.h>
8#include <QtQuick3DUtils/private/qssgutils_p.h>
9#include <QtQuick3D/private/qquick3dviewport_p.h>
619 return m_emissiveMap;
624 return m_emissiveFactor;
634 return m_glossinessMap;
659 return m_specularMap;
664 return m_normalStrength;
669 return m_occlusionMap;
674 return m_occlusionAmount;
684 return m_alphaCutoff;
689 return m_glossinessChannel;
694 return m_opacityChannel;
699 return m_occlusionChannel;
719 return m_heightChannel;
724 return m_heightAmount;
729 return m_minHeightMapSamples;
734 return m_maxHeightMapSamples;
739 m_dirtyAttributes = 0xffffffff;
750 markDirty(LightingModeDirty);
760 markDirty(BlendModeDirty);
765 if (m_albedo == diffuseColor)
768 m_albedo = diffuseColor;
770 markDirty(AlbedoDirty);
782 markDirty(AlbedoDirty);
794 markDirty(EmissiveDirty);
804 markDirty(EmissiveDirty);
815 markDirty(GlossyDirty);
827 markDirty(GlossyDirty);
838 markDirty(OpacityDirty);
850 markDirty(OpacityDirty);
862 markDirty(NormalDirty);
867 if (m_specular == specular)
870 m_specular = specular;
872 markDirty(SpecularDirty);
884 markDirty(SpecularDirty);
893 m_normalStrength = factor;
895 markDirty(NormalDirty);
907 markDirty(OcclusionDirty);
917 markDirty(OcclusionDirty);
927 markDirty(AlphaModeDirty);
937 markDirty(AlphaModeDirty);
942 if (m_glossinessChannel ==
channel)
947 markDirty(GlossyDirty);
952 if (m_opacityChannel ==
channel)
957 markDirty(OpacityDirty);
962 if (m_occlusionChannel ==
channel)
967 markDirty(OcclusionDirty);
976 markDirty(PointSizeDirty);
985 markDirty(LineWidthDirty);
997 markDirty(HeightDirty);
1002 if (m_heightChannel ==
channel)
1007 markDirty(HeightDirty);
1017 markDirty(HeightDirty);
1022 if (m_minHeightMapSamples ==
samples)
1025 m_minHeightMapSamples =
samples;
1027 markDirty(HeightDirty);
1032 if (m_maxHeightMapSamples ==
samples)
1035 m_maxHeightMapSamples =
samples;
1037 markDirty(HeightDirty);
1058 if (m_dirtyAttributes & LightingModeDirty)
1061 if (m_dirtyAttributes & BlendModeDirty)
1064 if (m_dirtyAttributes & AlbedoDirty) {
1070 material->
color = color::sRGBToLinear(m_albedo);
1073 if (m_dirtyAttributes & EmissiveDirty) {
1085 if (m_dirtyAttributes & GlossyDirty) {
1086 if (!m_glossinessMap)
1095 if (m_dirtyAttributes & SpecularDirty) {
1104 if (m_dirtyAttributes & OpacityDirty) {
1110 material->
opacity = m_opacity;
1114 if (m_dirtyAttributes & NormalDirty) {
1123 if (m_dirtyAttributes & OcclusionDirty) {
1124 if (!m_occlusionMap)
1132 if (m_dirtyAttributes & AlphaModeDirty) {
1137 if (m_dirtyAttributes & PointSizeDirty)
1140 if (m_dirtyAttributes & LineWidthDirty)
1143 if (m_dirtyAttributes & HeightDirty) {
1154 if (m_dirtyAttributes & ClearcoatDirty) {
1156 if (!m_clearcoatMap)
1162 if (!m_clearcoatRoughnessMap)
1167 if (!m_clearcoatNormalMap)
1173 if (m_dirtyAttributes & TransmissionDirty) {
1175 if (!m_transmissionMap)
1182 if (m_dirtyAttributes & VolumeDirty) {
1184 if (!m_thicknessMap)
1194 if (m_dirtyAttributes & VertexColorsDirty)
1197 m_dirtyAttributes = 0;
1204 if (change == QQuick3DObject::ItemSceneChange)
1205 updateSceneManager(
value.sceneManager);
1242void QQuick3DSpecularGlossyMaterial::markDirty(QQuick3DSpecularGlossyMaterial::DirtyType
type)
1252 return m_clearcoatAmount;
1259 m_clearcoatAmount = newClearcoatAmount;
1261 markDirty(ClearcoatDirty);
1266 return m_clearcoatMap;
1271 if (m_clearcoatMap == newClearcoatMap)
1276 m_clearcoatMap = newClearcoatMap;
1278 markDirty(ClearcoatDirty);
1283 return m_clearcoatChannel;
1288 if (m_clearcoatChannel == newClearcoatChannel)
1290 m_clearcoatChannel = newClearcoatChannel;
1292 markDirty(ClearcoatDirty);
1297 return m_clearcoatRoughnessAmount;
1302 if (
qFuzzyCompare(m_clearcoatRoughnessAmount, newClearcoatRoughnessAmount))
1304 m_clearcoatRoughnessAmount = newClearcoatRoughnessAmount;
1306 markDirty(ClearcoatDirty);
1311 return m_clearcoatRoughnessChannel;
1316 if (m_clearcoatRoughnessChannel == newClearcoatRoughnessChannel)
1318 m_clearcoatRoughnessChannel = newClearcoatRoughnessChannel;
1320 markDirty(ClearcoatDirty);
1325 return m_clearcoatRoughnessMap;
1330 if (m_clearcoatRoughnessMap == newClearcoatRoughnessMap)
1335 m_clearcoatRoughnessMap = newClearcoatRoughnessMap;
1337 markDirty(ClearcoatDirty);
1342 return m_clearcoatNormalMap;
1347 if (m_clearcoatNormalMap == newClearcoatNormalMap)
1352 m_clearcoatNormalMap = newClearcoatNormalMap;
1354 markDirty(ClearcoatDirty);
1359 return m_transmissionFactor;
1364 if (
qFuzzyCompare(m_transmissionFactor, newTransmissionFactor))
1366 m_transmissionFactor = newTransmissionFactor;
1368 markDirty(TransmissionDirty);
1373 return m_transmissionMap;
1378 if (m_transmissionMap == newTransmissionMap)
1383 m_transmissionMap = newTransmissionMap;
1385 markDirty(TransmissionDirty);
1390 return m_transmissionChannel;
1395 if (m_transmissionChannel == newTransmissionChannel)
1397 m_transmissionChannel = newTransmissionChannel;
1399 markDirty(TransmissionDirty);
1404 return m_thicknessFactor;
1411 m_thicknessFactor = newThicknessFactor;
1413 markDirty(VolumeDirty);
1418 return m_thicknessMap;
1423 if (m_thicknessMap == newThicknessMap)
1428 m_thicknessMap = newThicknessMap;
1430 markDirty(VolumeDirty);
1435 return m_thicknessChannel;
1440 if (m_thicknessChannel == newThicknessChannel)
1442 m_thicknessChannel = newThicknessChannel;
1444 markDirty(VolumeDirty);
1449 return m_attenuationDistance;
1454 if (
qFuzzyCompare(m_attenuationDistance, newAttenuationDistance))
1456 m_attenuationDistance = newAttenuationDistance;
1458 markDirty(VolumeDirty);
1463 return m_attenuationColor;
1468 return m_vertexColorsEnabled;
1473 if (m_attenuationColor == newAttenuationColor)
1475 m_attenuationColor = newAttenuationColor;
1477 markDirty(VolumeDirty);
1480void QQuick3DSpecularGlossyMaterial::setVertexColorsEnabled(
bool vertexColors)
1482 if (m_vertexColorsEnabled == vertexColors)
1485 m_vertexColorsEnabled = vertexColors;
1486 emit vertexColorsEnabledChanged(m_vertexColorsEnabled);
1487 markDirty(VertexColorsDirty);
IOBluetoothL2CAPChannel * channel
The QColor class provides colors based on RGB, HSV or CMYK values.
QSSGRenderGraphObject * updateSpatialNode(QSSGRenderGraphObject *node) override
void refSceneManager(QQuick3DSceneManager &)
static void attachWatcher(Context *context, Setter setter, Object3D *newO, Object3D *oldO)
Attach a object-destroyed-watcher to an object that's not owned.
\qmltype Object3D \inqmlmodule QtQuick3D \instantiates QQuick3DObject \inherits QtObject
virtual void markAllDirty()
void setOpacity(float opacity)
void specularColorChanged()
QQuick3DMaterial::TextureChannelMapping glossinessChannel
QQuick3DTexture * clearcoatNormalMap
void normalStrengthChanged()
void setEmissiveFactor(const QVector3D &emissiveFactor)
QQuick3DTexture * albedoMap
void heightChannelChanged()
void clearcoatNormalMapChanged()
void setTransmissionChannel(QQuick3DMaterial::TextureChannelMapping newTransmissionChannel)
QQuick3DTexture * heightMap
void setAlphaMode(QQuick3DSpecularGlossyMaterial::AlphaMode alphaMode)
QQuick3DTexture * clearcoatMap
void opacityChannelChanged()
void clearcoatRoughnessMapChanged()
void setClearcoatMap(QQuick3DTexture *newClearcoatMap)
void setOcclusionMap(QQuick3DTexture *occlusionMap)
QQuick3DTexture * transmissionMap
QQuick3DTexture * emissiveMap
void setClearcoatAmount(float newClearcoatAmount)
QQuick3DMaterial::TextureChannelMapping occlusionChannel
void clearcoatMapChanged()
QQuick3DTexture * glossinessMap
void attenuationColorChanged()
void thicknessMapChanged()
void setSpecularColor(const QColor &specular)
QQuick3DMaterial::TextureChannelMapping opacityChannel
void glossinessChannelChanged()
QQuick3DTexture * normalMap
void setNormalMap(QQuick3DTexture *normalMap)
void setAlbedoColor(const QColor &albedo)
QQuick3DMaterial::TextureChannelMapping transmissionChannel
void itemChange(ItemChange, const ItemChangeData &) override
void occlusionMapChanged()
void setHeightMap(QQuick3DTexture *heightMap)
void setGlossiness(float glossiness)
void setThicknessChannel(QQuick3DMaterial::TextureChannelMapping newThicknessChannel)
QQuick3DTexture * opacityMap
void setOpacityChannel(QQuick3DMaterial::TextureChannelMapping channel)
float attenuationDistance
void setGlossinessMap(QQuick3DTexture *glossinessMap)
void setMinHeightMapSamples(int samples)
void setTransmissionMap(QQuick3DTexture *newTransmissionMap)
void setEmissiveMap(QQuick3DTexture *emissiveMap)
void maxHeightMapSamplesChanged()
void setAlphaCutoff(float alphaCutoff)
void occlusionChannelChanged()
void clearcoatAmountChanged()
void setThicknessMap(QQuick3DTexture *newThicknessMap)
void setThicknessFactor(float newThicknessFactor)
void setNormalStrength(float normalStrength)
void attenuationDistanceChanged()
void thicknessChannelChanged()
void setOpacityMap(QQuick3DTexture *opacityMap)
void emissiveMapChanged()
void glossinessMapChanged()
void setMaxHeightMapSamples(int samples)
void clearcoatRoughnessAmountChanged()
void occlusionAmountChanged()
void setOcclusionChannel(QQuick3DMaterial::TextureChannelMapping channel)
void transmissionChannelChanged()
void emissiveFactorChanged()
void thicknessFactorChanged()
void specularMapChanged()
float clearcoatRoughnessAmount
void heightAmountChanged()
QQuick3DTexture * occlusionMap
void alphaCutoffChanged()
QQuick3DMaterial::TextureChannelMapping thicknessChannel
void setBlendMode(QQuick3DSpecularGlossyMaterial::BlendMode blendMode)
void setAttenuationColor(const QColor &newAttenuationColor)
void setClearcoatRoughnessMap(QQuick3DTexture *newClearcoatRoughnessMap)
QQuick3DMaterial::TextureChannelMapping clearcoatRoughnessChannel
void transmissionFactorChanged()
void setPointSize(float size)
QQuick3DTexture * thicknessMap
void setOcclusionAmount(float occlusionAmount)
void setHeightChannel(QQuick3DMaterial::TextureChannelMapping channel)
QQuick3DSpecularGlossyMaterial(QQuick3DObject *parent=nullptr)
void setClearcoatChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatChannel)
void setGlossinessChannel(QQuick3DMaterial::TextureChannelMapping channel)
void setAlbedoMap(QQuick3DTexture *albedoMap)
void setLineWidth(float width)
void setTransmissionFactor(float newTransmissionFactor)
void clearcoatRoughnessChannelChanged()
QQuick3DTexture * clearcoatRoughnessMap
void setSpecularMap(QQuick3DTexture *specularMap)
void clearcoatChannelChanged()
QQuick3DTexture * specularMap
void setAttenuationDistance(float newAttenuationDistance)
QSSGRenderGraphObject * updateSpatialNode(QSSGRenderGraphObject *node) override
void albedoColorChanged()
void minHeightMapSamplesChanged()
void setHeightAmount(float heightAmount)
void setClearcoatRoughnessAmount(float newClearcoatRoughnessAmount)
void transmissionMapChanged()
void setClearcoatRoughnessChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatRoughnessChannel)
void setLighting(QQuick3DSpecularGlossyMaterial::Lighting lighting)
void markAllDirty() override
QQuick3DMaterial::TextureChannelMapping clearcoatChannel
~QQuick3DSpecularGlossyMaterial() override
QQuick3DMaterial::TextureChannelMapping heightChannel
void setClearcoatNormalMap(QQuick3DTexture *newClearcoatNormalMap)
QSSGRenderImage * getRenderImage()
The QVector3D class represents a vector or vertex in 3D space.
constexpr QVector3D toVector3D() const noexcept
Returns the 3D vector form of this 4D vector, dropping the w coordinate.
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) noexcept
constexpr const T & qBound(const T &min, const T &val, const T &max)
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLenum GLenum mapping
static QT_BEGIN_NAMESPACE float ensureNormalized(float val)
\qmltype PrincipledMaterial \inherits Material \inqmlmodule QtQuick3D
static QT_BEGIN_NAMESPACE float ensureNormalized(float val)
\qmltype SpecularGlossyMaterial \inherits Material \inqmlmodule QtQuick3D
QSSGRenderImage * opacityMap
QSSGRenderImage * roughnessMap
QSSGRenderImage * clearcoatMap
QSSGRenderImage * transmissionMap
QSSGRenderImage * thicknessMap
QSSGRenderImage * clearcoatNormalMap
QSSGRenderDefaultMaterial::MaterialSpecularModel specularModel
TextureChannelMapping transmissionChannel
TextureChannelMapping clearcoatChannel
QSSGRenderImage * clearcoatRoughnessMap
QSSGRenderImage * colorMap
float clearcoatRoughnessAmount
TextureChannelMapping heightChannel
QSSGRenderImage * heightMap
QSSGRenderDefaultMaterial::MaterialBlendMode blendMode
TextureChannelMapping opacityChannel
MaterialLighting lighting
QSSGRenderImage * occlusionMap
TextureChannelMapping occlusionChannel
float attenuationDistance
TextureChannelMapping thicknessChannel
QVector3D attenuationColor
TextureChannelMapping roughnessChannel
QSSGRenderImage * normalMap
QSSGRenderImage * specularMap
QSSGRenderDefaultMaterial::MaterialAlphaMode alphaMode
TextureChannelMapping clearcoatRoughnessChannel
QSSGRenderImage * emissiveMap
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent