7#include <QtQuick3DRuntimeRender/private/qssgrenderdefaultmaterial_p.h>
8#include <QtQuick3DUtils/private/qssgutils_p.h>
742 return m_baseColorMap;
747 return m_emissiveMap;
752 return m_emissiveFactor;
757 return m_specularReflectionMap;
762 return m_specularMap;
767 return m_specularTint;
772 return m_specularAmount;
782 return m_roughnessMap;
802 return m_metalnessAmount;
807 return m_metalnessMap;
812 return m_normalStrength;
817 return m_occlusionMap;
822 return m_occlusionAmount;
832 return m_alphaCutoff;
837 return m_roughnessChannel;
842 return m_opacityChannel;
847 return m_metalnessChannel;
852 return m_occlusionChannel;
872 return m_heightChannel;
877 return m_heightAmount;
882 return m_minHeightMapSamples;
887 return m_maxHeightMapSamples;
892 m_dirtyAttributes = 0xffffffff;
903 markDirty(LightingModeDirty);
913 markDirty(BlendModeDirty);
918 if (m_baseColor == diffuseColor)
921 m_baseColor = diffuseColor;
923 markDirty(BaseColorDirty);
935 markDirty(BaseColorDirty);
947 markDirty(EmissiveDirty);
957 markDirty(EmissiveDirty);
969 markDirty(SpecularDirty);
981 markDirty(SpecularDirty);
992 markDirty(SpecularDirty);
1003 markDirty(SpecularDirty);
1014 markDirty(RoughnessDirty);
1026 markDirty(RoughnessDirty);
1037 markDirty(OpacityDirty);
1049 markDirty(OpacityDirty);
1061 markDirty(NormalDirty);
1070 m_metalnessAmount = metalnessAmount;
1072 markDirty(MetalnessDirty);
1077 if (m_metalnessMap == metallicMap)
1082 m_metalnessMap = metallicMap;
1084 markDirty(MetalnessDirty);
1093 m_normalStrength = factor;
1095 markDirty(NormalDirty);
1107 markDirty(OcclusionDirty);
1117 markDirty(OcclusionDirty);
1127 markDirty(AlphaModeDirty);
1137 markDirty(AlphaModeDirty);
1142 if (m_metalnessChannel ==
channel)
1147 markDirty(MetalnessDirty);
1152 if (m_roughnessChannel ==
channel)
1157 markDirty(RoughnessDirty);
1162 if (m_opacityChannel ==
channel)
1167 markDirty(OpacityDirty);
1172 if (m_occlusionChannel ==
channel)
1177 markDirty(OcclusionDirty);
1186 markDirty(PointSizeDirty);
1193 m_lineWidth =
width;
1195 markDirty(LineWidthDirty);
1198void QQuick3DPrincipledMaterial::setHeightMap(
QQuick3DTexture *heightMap)
1206 emit heightMapChanged(m_heightMap);
1207 markDirty(HeightDirty);
1212 if (m_heightChannel ==
channel)
1216 emit heightChannelChanged(m_heightChannel);
1217 markDirty(HeightDirty);
1220void QQuick3DPrincipledMaterial::setHeightAmount(
float heightAmount)
1226 emit heightAmountChanged(m_heightAmount);
1227 markDirty(HeightDirty);
1230void QQuick3DPrincipledMaterial::setMinHeightMapSamples(
int samples)
1232 if (m_minHeightMapSamples ==
samples)
1235 m_minHeightMapSamples =
samples;
1237 markDirty(HeightDirty);
1240void QQuick3DPrincipledMaterial::setMaxHeightMapSamples(
int samples)
1242 if (m_maxHeightMapSamples ==
samples)
1245 m_maxHeightMapSamples =
samples;
1247 markDirty(HeightDirty);
1268 if (m_dirtyAttributes & LightingModeDirty)
1271 if (m_dirtyAttributes & BlendModeDirty)
1274 if (m_dirtyAttributes & BaseColorDirty) {
1275 if (!m_baseColorMap)
1280 material->
color = color::sRGBToLinear(m_baseColor);
1283 if (m_dirtyAttributes & EmissiveDirty) {
1295 if (m_dirtyAttributes & RoughnessDirty) {
1296 if (!m_roughnessMap)
1305 if (m_dirtyAttributes & MetalnessDirty) {
1306 if (!m_metalnessMap)
1316 if (m_dirtyAttributes & SpecularDirty) {
1317 if (!m_specularReflectionMap)
1322 if (!m_specularMap) {
1330 material->
ior = m_indexOfRefraction;
1333 if (m_dirtyAttributes & OpacityDirty) {
1334 material->
opacity = m_opacity;
1340 material->
opacity = m_opacity;
1344 if (m_dirtyAttributes & NormalDirty) {
1353 if (m_dirtyAttributes & OcclusionDirty) {
1354 if (!m_occlusionMap)
1362 if (m_dirtyAttributes & AlphaModeDirty) {
1367 if (m_dirtyAttributes & PointSizeDirty)
1370 if (m_dirtyAttributes & LineWidthDirty)
1373 if (m_dirtyAttributes & HeightDirty) {
1384 if (m_dirtyAttributes & ClearcoatDirty) {
1386 if (!m_clearcoatMap)
1392 if (!m_clearcoatRoughnessMap)
1397 if (!m_clearcoatNormalMap)
1403 if (m_dirtyAttributes & TransmissionDirty) {
1405 if (!m_transmissionMap)
1412 if (m_dirtyAttributes & VolumeDirty) {
1414 if (!m_thicknessMap)
1424 if (m_dirtyAttributes & VertexColorsDirty)
1427 m_dirtyAttributes = 0;
1434 if (change == QQuick3DObject::ItemSceneChange)
1435 updateSceneManager(
value.sceneManager);
1476void QQuick3DPrincipledMaterial::markDirty(QQuick3DPrincipledMaterial::DirtyType
type)
1486 return m_clearcoatAmount;
1489void QQuick3DPrincipledMaterial::setClearcoatAmount(
float newClearcoatAmount)
1493 m_clearcoatAmount = newClearcoatAmount;
1494 emit clearcoatAmountChanged(m_clearcoatAmount);
1495 markDirty(ClearcoatDirty);
1500 return m_clearcoatMap;
1503void QQuick3DPrincipledMaterial::setClearcoatMap(
QQuick3DTexture *newClearcoatMap)
1505 if (m_clearcoatMap == newClearcoatMap)
1510 m_clearcoatMap = newClearcoatMap;
1511 emit clearcoatMapChanged(m_clearcoatMap);
1512 markDirty(ClearcoatDirty);
1517 return m_clearcoatChannel;
1522 if (m_clearcoatChannel == newClearcoatChannel)
1524 m_clearcoatChannel = newClearcoatChannel;
1525 emit clearcoatChannelChanged(m_clearcoatChannel);
1526 markDirty(ClearcoatDirty);
1531 return m_clearcoatRoughnessAmount;
1534void QQuick3DPrincipledMaterial::setClearcoatRoughnessAmount(
float newClearcoatRoughnessAmount)
1536 if (
qFuzzyCompare(m_clearcoatRoughnessAmount, newClearcoatRoughnessAmount))
1538 m_clearcoatRoughnessAmount = newClearcoatRoughnessAmount;
1539 emit clearcoatRoughnessAmountChanged(m_clearcoatRoughnessAmount);
1540 markDirty(ClearcoatDirty);
1545 return m_clearcoatRoughnessChannel;
1550 if (m_clearcoatRoughnessChannel == newClearcoatRoughnessChannel)
1552 m_clearcoatRoughnessChannel = newClearcoatRoughnessChannel;
1553 emit clearcoatRoughnessChannelChanged(m_clearcoatRoughnessChannel);
1554 markDirty(ClearcoatDirty);
1559 return m_clearcoatRoughnessMap;
1562void QQuick3DPrincipledMaterial::setClearcoatRoughnessMap(
QQuick3DTexture *newClearcoatRoughnessMap)
1564 if (m_clearcoatRoughnessMap == newClearcoatRoughnessMap)
1569 m_clearcoatRoughnessMap = newClearcoatRoughnessMap;
1570 emit clearcoatRoughnessMapChanged(m_clearcoatRoughnessMap);
1571 markDirty(ClearcoatDirty);
1576 return m_clearcoatNormalMap;
1579void QQuick3DPrincipledMaterial::setClearcoatNormalMap(
QQuick3DTexture *newClearcoatNormalMap)
1581 if (m_clearcoatNormalMap == newClearcoatNormalMap)
1586 m_clearcoatNormalMap = newClearcoatNormalMap;
1587 emit clearcoatNormalMapChanged(m_clearcoatNormalMap);
1588 markDirty(ClearcoatDirty);
1593 return m_transmissionFactor;
1596void QQuick3DPrincipledMaterial::setTransmissionFactor(
float newTransmissionFactor)
1598 if (
qFuzzyCompare(m_transmissionFactor, newTransmissionFactor))
1600 m_transmissionFactor = newTransmissionFactor;
1601 emit transmissionFactorChanged(m_transmissionFactor);
1602 markDirty(TransmissionDirty);
1607 return m_transmissionMap;
1610void QQuick3DPrincipledMaterial::setTransmissionMap(
QQuick3DTexture *newTransmissionMap)
1612 if (m_transmissionMap == newTransmissionMap)
1617 m_transmissionMap = newTransmissionMap;
1618 emit transmissionMapChanged(m_transmissionMap);
1619 markDirty(TransmissionDirty);
1624 return m_transmissionChannel;
1629 return m_indexOfRefraction;
1634 return m_vertexColorsEnabled;
1639 if (m_transmissionChannel == newTransmissionChannel)
1641 m_transmissionChannel = newTransmissionChannel;
1642 emit transmissionChannelChanged(m_transmissionChannel);
1643 markDirty(TransmissionDirty);
1648 return m_thicknessFactor;
1651void QQuick3DPrincipledMaterial::setThicknessFactor(
float newThicknessFactor)
1655 m_thicknessFactor = newThicknessFactor;
1656 emit thicknessFactorChanged(m_thicknessFactor);
1657 markDirty(VolumeDirty);
1662 return m_thicknessMap;
1665void QQuick3DPrincipledMaterial::setThicknessMap(
QQuick3DTexture *newThicknessMap)
1667 if (m_thicknessMap == newThicknessMap)
1672 m_thicknessMap = newThicknessMap;
1673 emit thicknessMapChanged(m_thicknessMap);
1674 markDirty(VolumeDirty);
1679 return m_thicknessChannel;
1684 if (m_thicknessChannel == newThicknessChannel)
1686 m_thicknessChannel = newThicknessChannel;
1687 emit thicknessChannelChanged(m_thicknessChannel);
1688 markDirty(VolumeDirty);
1693 return m_attenuationDistance;
1696void QQuick3DPrincipledMaterial::setAttenuationDistance(
float newAttenuationDistance)
1698 if (
qFuzzyCompare(m_attenuationDistance, newAttenuationDistance))
1700 m_attenuationDistance = newAttenuationDistance;
1701 emit attenuationDistanceChanged(m_attenuationDistance);
1702 markDirty(VolumeDirty);
1707 return m_attenuationColor;
1710void QQuick3DPrincipledMaterial::setAttenuationColor(
const QColor &newAttenuationColor)
1712 if (m_attenuationColor == newAttenuationColor)
1714 m_attenuationColor = newAttenuationColor;
1715 emit attenuationColorChanged(m_attenuationColor);
1716 markDirty(VolumeDirty);
1719void QQuick3DPrincipledMaterial::setIndexOfRefraction(
float indexOfRefraction)
1725 emit indexOfRefractionChanged(m_indexOfRefraction);
1726 markDirty(SpecularDirty);
1729void QQuick3DPrincipledMaterial::setVertexColorsEnabled(
bool vertexColors)
1731 if (m_vertexColorsEnabled == vertexColors)
1734 m_vertexColorsEnabled = vertexColors;
1735 emit vertexColorsEnabledChanged(m_vertexColorsEnabled);
1736 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 opacityMapChanged(QQuick3DTexture *opacityMap)
QQuick3DTexture * clearcoatNormalMap
void setSpecularAmount(float specularAmount)
void setOcclusionMap(QQuick3DTexture *occlusionMap)
QQuick3DMaterial::TextureChannelMapping opacityChannel
float clearcoatRoughnessAmount
void specularTintChanged(float specularTint)
QQuick3DTexture * occlusionMap
void setLighting(QQuick3DPrincipledMaterial::Lighting lighting)
void opacityChannelChanged(QQuick3DMaterial::TextureChannelMapping channel)
void opacityChanged(float opacity)
QQuick3DMaterial::TextureChannelMapping clearcoatRoughnessChannel
void occlusionChannelChanged(QQuick3DMaterial::TextureChannelMapping channel)
void setBaseColorMap(QQuick3DTexture *baseColorMap)
void metalnessChanged(float metalness)
void metalnessMapChanged(QQuick3DTexture *metalnessMap)
void roughnessMapChanged(QQuick3DTexture *roughnessMap)
void setMetalnessMap(QQuick3DTexture *metalnessMap)
QQuick3DTexture * transmissionMap
void metalnessChannelChanged(QQuick3DMaterial::TextureChannelMapping channel)
QQuick3DMaterial::TextureChannelMapping roughnessChannel
QQuick3DTexture * baseColorMap
void markAllDirty() override
void itemChange(ItemChange, const ItemChangeData &) override
QQuick3DPrincipledMaterial(QQuick3DObject *parent=nullptr)
void normalMapChanged(QQuick3DTexture *normalMap)
QQuick3DMaterial::TextureChannelMapping thicknessChannel
void roughnessChanged(float roughness)
void occlusionMapChanged(QQuick3DTexture *occlusionMap)
QQuick3DMaterial::TextureChannelMapping occlusionChannel
void setNormalStrength(float normalStrength)
void lightingChanged(QQuick3DPrincipledMaterial::Lighting lighting)
void setMetalnessChannel(QQuick3DMaterial::TextureChannelMapping channel)
QQuick3DTexture * thicknessMap
void occlusionAmountChanged(float occlusionAmount)
QQuick3DTexture * metalnessMap
QQuick3DMaterial::TextureChannelMapping heightChannel
QQuick3DTexture * normalMap
void setEmissiveMap(QQuick3DTexture *emissiveMap)
void setOpacity(float opacity)
void setSpecularTint(float specularTint)
QQuick3DMaterial::TextureChannelMapping transmissionChannel
void setRoughnessChannel(QQuick3DMaterial::TextureChannelMapping channel)
void normalStrengthChanged(float normalStrength)
void specularReflectionMapChanged(QQuick3DTexture *specularReflectionMap)
void baseColorMapChanged(QQuick3DTexture *baseColorMap)
void specularAmountChanged(float specularAmount)
void setSpecularReflectionMap(QQuick3DTexture *specularReflectionMap)
void setAlphaMode(QQuick3DPrincipledMaterial::AlphaMode alphaMode)
QQuick3DTexture * heightMap
void setOpacityMap(QQuick3DTexture *opacityMap)
void setLineWidth(float width)
QQuick3DTexture * specularMap
void specularMapChanged(QQuick3DTexture *specularMap)
void setOcclusionChannel(QQuick3DMaterial::TextureChannelMapping channel)
void setAlphaCutoff(float alphaCutoff)
QSSGRenderGraphObject * updateSpatialNode(QSSGRenderGraphObject *node) override
void setRoughnessMap(QQuick3DTexture *roughnessMap)
QQuick3DTexture * roughnessMap
QQuick3DTexture * specularReflectionMap
QQuick3DTexture * clearcoatMap
void emissiveFactorChanged(QVector3D emissiveFactor)
void blendModeChanged(QQuick3DPrincipledMaterial::BlendMode blendMode)
void setNormalMap(QQuick3DTexture *normalMap)
void setEmissiveFactor(QVector3D emissiveFactor)
QQuick3DTexture * emissiveMap
void emissiveMapChanged(QQuick3DTexture *emissiveMap)
void setRoughness(float roughness)
QQuick3DTexture * clearcoatRoughnessMap
void setBlendMode(QQuick3DPrincipledMaterial::BlendMode blendMode)
void alphaCutoffChanged(float alphaCutoff)
void setOcclusionAmount(float occlusionAmount)
void setSpecularMap(QQuick3DTexture *specularMap)
void setOpacityChannel(QQuick3DMaterial::TextureChannelMapping channel)
void alphaModeChanged(QQuick3DPrincipledMaterial::AlphaMode alphaMode)
float attenuationDistance
QQuick3DMaterial::TextureChannelMapping metalnessChannel
void setBaseColor(QColor baseColor)
void baseColorChanged(QColor baseColor)
~QQuick3DPrincipledMaterial() override
void roughnessChannelChanged(QQuick3DMaterial::TextureChannelMapping channel)
void setMetalness(float metalnessAmount)
QQuick3DTexture * opacityMap
void setPointSize(float size)
QQuick3DMaterial::TextureChannelMapping clearcoatChannel
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
QSSGRenderImage * opacityMap
QSSGRenderImage * roughnessMap
QSSGRenderImage * clearcoatMap
QSSGRenderImage * transmissionMap
QSSGRenderImage * thicknessMap
QSSGRenderImage * clearcoatNormalMap
QSSGRenderDefaultMaterial::MaterialSpecularModel specularModel
TextureChannelMapping transmissionChannel
QSSGRenderImage * metalnessMap
TextureChannelMapping clearcoatChannel
QSSGRenderImage * clearcoatRoughnessMap
QSSGRenderImage * specularReflection
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
TextureChannelMapping metalnessChannel
QSSGRenderImage * specularMap
QSSGRenderDefaultMaterial::MaterialAlphaMode alphaMode
TextureChannelMapping clearcoatRoughnessChannel
QSSGRenderImage * emissiveMap
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent