27 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
28 Q_PROPERTY(QColor ambientColor READ ambientColor WRITE setAmbientColor NOTIFY ambientColorChanged)
29 Q_PROPERTY(
float brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged)
30 Q_PROPERTY(QQuick3DNode *scope READ scope WRITE setScope NOTIFY scopeChanged)
31 Q_PROPERTY(
bool castsShadow READ castsShadow WRITE setCastsShadow NOTIFY castsShadowChanged)
32 Q_PROPERTY(
float shadowBias READ shadowBias WRITE setShadowBias NOTIFY shadowBiasChanged)
33 Q_PROPERTY(
float shadowFactor READ shadowFactor WRITE setShadowFactor NOTIFY shadowFactorChanged)
34 Q_PROPERTY(QSSGShadowMapQuality shadowMapQuality READ shadowMapQuality WRITE setShadowMapQuality NOTIFY shadowMapQualityChanged)
35 Q_PROPERTY(
float shadowMapFar READ shadowMapFar WRITE setShadowMapFar NOTIFY shadowMapFarChanged)
36 Q_PROPERTY(
float shadowFilter READ shadowFilter WRITE setShadowFilter NOTIFY shadowFilterChanged)
37 Q_PROPERTY(QSSGBakeMode bakeMode READ bakeMode WRITE setBakeMode NOTIFY bakeModeChanged)
38 Q_PROPERTY(QSSGSoftShadowQuality softShadowQuality READ softShadowQuality WRITE setSoftShadowQuality NOTIFY softShadowQualityChanged FINAL REVISION(6, 8))
39 Q_PROPERTY(
float pcfFactor READ pcfFactor WRITE setPcfFactor NOTIFY pcfFactorChanged FINAL REVISION(6, 8))
40 Q_PROPERTY(
bool use32BitShadowmap READ use32BitShadowmap WRITE setUse32BitShadowmap NOTIFY use32BitShadowmapChanged FINAL REVISION(6, 9))
42 QML_NAMED_ELEMENT(Light)
43 QML_UNCREATABLE(
"Light is Abstract")
45 ~QQuick3DAbstractLight() override;
47 enum class QSSGShadowMapQuality {
49 ShadowMapQualityMedium,
51 ShadowMapQualityVeryHigh,
52 ShadowMapQualityUltra,
54 Q_ENUM(QSSGShadowMapQuality)
56 enum class QSSGSoftShadowQuality {
64 Q_ENUM(QSSGSoftShadowQuality)
66 enum class QSSGBakeMode {
74 QColor ambientColor()
const;
75 float brightness()
const;
76 QQuick3DNode *scope()
const;
77 bool castsShadow()
const;
78 float shadowBias()
const;
79 float shadowFactor()
const;
80 QSSGShadowMapQuality shadowMapQuality()
const;
81 float shadowMapFar()
const;
82 float shadowFilter()
const;
83 QSSGBakeMode bakeMode()
const;
84 Q_REVISION(6, 8) QSSGSoftShadowQuality softShadowQuality()
const;
85 Q_REVISION(6, 8)
float pcfFactor()
const;
86 Q_REVISION(6, 9)
bool use32BitShadowmap()
const;
89 void setColor(
const QColor &color);
90 void setAmbientColor(
const QColor &ambientColor);
91 void setBrightness(
float brightness);
92 void setScope(QQuick3DNode *scope);
93 void setCastsShadow(
bool castsShadow);
94 void setShadowBias(
float shadowBias);
95 void setShadowFactor(
float shadowFactor);
96 void setShadowMapQuality(QQuick3DAbstractLight::QSSGShadowMapQuality shadowMapQuality);
97 void setShadowMapFar(
float shadowMapFar);
98 void setShadowFilter(
float shadowFilter);
99 void setBakeMode(QQuick3DAbstractLight::QSSGBakeMode bakeMode);
100 Q_REVISION(6, 8)
void setSoftShadowQuality(QQuick3DAbstractLight::QSSGSoftShadowQuality softShadowQuality);
101 Q_REVISION(6, 8)
void setPcfFactor(
float pcfFactor);
102 Q_REVISION(6, 9)
void setUse32BitShadowmap(
bool use32BitShadowmap);
106 void ambientColorChanged();
107 void brightnessChanged();
109 void castsShadowChanged();
110 void shadowBiasChanged();
111 void shadowFactorChanged();
112 void shadowMapQualityChanged();
113 void shadowMapFarChanged();
114 void shadowFilterChanged();
115 void bakeModeChanged();
116 Q_REVISION(6, 8)
void softShadowQualityChanged();
117 Q_REVISION(6, 8)
void pcfFactorChanged();
118 Q_REVISION(6, 9)
void use32BitShadowmapChanged();
121 explicit QQuick3DAbstractLight(QQuick3DNodePrivate &dd, QQuick3DNode *parent =
nullptr);
123 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
124 void markAllDirty() override;
126 enum class DirtyFlag {
127 ShadowDirty = (1 << 0),
128 ColorDirty = (1 << 1),
129 BrightnessDirty = (1 << 2),
130 FadeDirty = (1 << 3),
131 AreaDirty = (1 << 4),
132 BakeModeDirty = (1 << 5)
134 Q_DECLARE_FLAGS(DirtyFlags, DirtyFlag)
136 DirtyFlags m_dirtyFlags = DirtyFlags(DirtyFlag::ShadowDirty)
137 | DirtyFlags(DirtyFlag::ColorDirty)
138 | DirtyFlags(DirtyFlag::BrightnessDirty)
139 | DirtyFlags(DirtyFlag::FadeDirty)
140 | DirtyFlags(DirtyFlag::AreaDirty);
142 quint32 mapToShadowResolution(QSSGShadowMapQuality resolution);
145 QColor m_ambientColor;
146 float m_brightness = 1.0f;
147 QQuick3DNode *m_scope =
nullptr;
148 bool m_castsShadow =
false;
149 float m_shadowBias = 10.0f;
150 float m_shadowFactor = 75.0f;
151 QSSGShadowMapQuality m_shadowMapQuality = QSSGShadowMapQuality::ShadowMapQualityLow;
152 QSSGSoftShadowQuality m_softShadowQuality = QSSGSoftShadowQuality::PCF4;
153 float m_shadowMapFar = 5000.0f;
154 float m_shadowFilter = 5.0f;
155 float m_pcfFactor = 2.0f;
156 QSSGBakeMode m_bakeMode = QSSGBakeMode::BakeModeDisabled;
157 bool m_use32BitShadowmap =
false;