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