64 Q_PROPERTY(
bool castsShadows READ castsShadows WRITE setCastsShadows NOTIFY castsShadowsChanged)
65 Q_PROPERTY(
bool receivesShadows READ receivesShadows WRITE setReceivesShadows NOTIFY receivesShadowsChanged)
68 Q_PROPERTY(
bool pickable READ pickable WRITE setPickable NOTIFY pickableChanged)
76 Q_PROPERTY(
float depthBias READ depthBias WRITE setDepthBias NOTIFY depthBiasChanged)
77 Q_PROPERTY(
bool receivesReflections READ receivesReflections WRITE setReceivesReflections NOTIFY receivesReflectionsChanged REVISION(6, 3))
78 Q_PROPERTY(
bool castsReflections READ castsReflections WRITE setCastsReflections NOTIFY castsReflectionsChanged REVISION(6, 4))
79 Q_PROPERTY(
bool usedInBakedLighting READ isUsedInBakedLighting WRITE setUsedInBakedLighting NOTIFY usedInBakedLightingChanged REVISION(6, 4))
80 Q_PROPERTY(
int lightmapBaseResolution READ lightmapBaseResolution WRITE setLightmapBaseResolution NOTIFY lightmapBaseResolutionChanged REVISION(6, 4))
82 Q_PROPERTY(
float instancingLodMin READ instancingLodMin WRITE setInstancingLodMin NOTIFY instancingLodMinChanged REVISION(6, 5))
83 Q_PROPERTY(
float instancingLodMax READ instancingLodMax WRITE setInstancingLodMax NOTIFY instancingLodMaxChanged REVISION(6, 5))
84 Q_PROPERTY(
float levelOfDetailBias READ levelOfDetailBias WRITE setLevelOfDetailBias NOTIFY levelOfDetailBiasChanged REVISION(6, 5))
93 bool castsShadows() const;
94 bool receivesShadows() const;
95 bool pickable() const;
100 float depthBias() const;
124 void setCastsShadows(
bool castsShadows);
125 void setReceivesShadows(
bool receivesShadows);
126 void setPickable(
bool pickable);
133 void setDepthBias(
float bias);
134 Q_REVISION(6, 3)
void setReceivesReflections(
bool receivesReflections);
135 Q_REVISION(6, 4)
void setCastsReflections(
bool castsReflections);
138 Q_REVISION(6, 4)
void setLightmapBaseResolution(
int resolution);
141 Q_REVISION(6, 5)
void setInstancingLodMin(
float minDistance);
142 Q_REVISION(6, 5)
void setInstancingLodMax(
float maxDistance);
143 Q_REVISION(6, 5)
void setLevelOfDetailBias(
float newLevelOfDetailBias);
146 void sourceChanged();
147 void castsShadowsChanged();
148 void receivesShadowsChanged();
149 void pickableChanged();
150 void geometryChanged();
151 void skeletonChanged();
152 void inverseBindPosesChanged();
153 void boundsChanged();
154 void instancingChanged();
155 void instanceRootChanged();
156 void morphTargetsChanged();
157 void depthBiasChanged();
171 void markAllDirty() override;
172 void itemChange(ItemChange, const ItemChangeData &) override;
175 void onMaterialDestroyed(
QObject *
object);
176 void onMorphTargetDestroyed(
QObject *
object);
179 enum QSSGModelDirtyType {
180 SourceDirty = 0x00000001,
181 MaterialsDirty = 0x00000002,
182 ShadowsDirty = 0x00000004,
183 PickingDirty = 0x00000008,
184 GeometryDirty = 0x00000010,
185 SkeletonDirty = 0x00000020,
186 PoseDirty = 0x00000040,
187 InstancesDirty = 0x00000080,
188 MorphTargetsDirty = 0x00000100,
189 PropertyDirty = 0x00000200,
190 ReflectionDirty = 0x00000400,
191 SkinDirty = 0x00000800,
192 LodDirty = 0x00001000,
193 InstanceRootDirty = 0x00002000,
198 quint32 m_dirtyAttributes = 0xffffffff;
199 void markDirty(QSSGModelDirtyType
type);
202 static void qmlAppendMaterial(QQmlListProperty<QQuick3DMaterial> *
list,
QQuick3DMaterial *material);
204 static qsizetype qmlMaterialsCount(QQmlListProperty<QQuick3DMaterial> *
list);
205 static void qmlClearMaterials(QQmlListProperty<QQuick3DMaterial> *
list);
211 QVector<Material> m_materials;
213 static void qmlAppendMorphTarget(QQmlListProperty<QQuick3DMorphTarget> *
list,
QQuick3DMorphTarget *morphTarget);
215 static qsizetype qmlMorphTargetsCount(QQmlListProperty<QQuick3DMorphTarget> *
list);
216 static void qmlClearMorphTargets(QQmlListProperty<QQuick3DMorphTarget> *
list);
217 QVector<QQuick3DMorphTarget *> m_morphTargets;
218 size_t m_numMorphAttribs = 0;
222 QList<QMatrix4x4> m_inverseBindPoses;
227 float m_depthBias = 0.0f;
228 bool m_castsShadows =
true;
229 bool m_receivesShadows =
true;
230 bool m_pickable =
false;
231 bool m_receivesReflections =
false;
232 bool m_castsReflections =
true;
233 bool m_usedInBakedLighting =
false;
234 int m_lightmapBaseResolution = 1024;
238 float m_instancingLodMin = -1;
239 float m_instancingLodMax = -1;
240 float m_levelOfDetailBias = 1.0f;
static void setInstancing(QQuick3DNode *node, QQuick3DInstancing *instanceTable, float bias)