1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QQUICK3DDEBUGSETTINGS_H
5#define QQUICK3DDEBUGSETTINGS_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtQuick3D/private/qquick3dobject_p.h>
19
20QT_BEGIN_NAMESPACE
21
22class Q_QUICK3D_EXPORT QQuick3DDebugSettings : public QObject
23{
24 Q_OBJECT
25 Q_PROPERTY(QQuick3DMaterialOverrides materialOverride READ materialOverride WRITE setMaterialOverride NOTIFY materialOverrideChanged)
26 Q_PROPERTY(bool wireframeEnabled READ wireframeEnabled WRITE setWireframeEnabled NOTIFY wireframeEnabledChanged)
27 Q_PROPERTY(bool drawDirectionalLightShadowBoxes READ drawDirectionalLightShadowBoxes WRITE
28 setDrawDirectionalLightShadowBoxes NOTIFY drawDirectionalLightShadowBoxesChanged FINAL REVISION(6, 8))
29 Q_PROPERTY(bool drawPointLightShadowBoxes READ drawPointLightShadowBoxes WRITE setDrawPointLightShadowBoxes NOTIFY
30 drawPointLightShadowBoxesChanged FINAL REVISION(6, 9))
31 Q_PROPERTY(bool drawShadowCastingBounds READ drawShadowCastingBounds WRITE setDrawShadowCastingBounds NOTIFY drawShadowCastingBoundsChanged FINAL REVISION(6, 8))
32 Q_PROPERTY(bool drawShadowReceivingBounds READ drawShadowReceivingBounds WRITE setDrawShadowReceivingBounds NOTIFY drawShadowReceivingBoundsChanged FINAL REVISION(6, 8))
33 Q_PROPERTY(bool drawCascades READ drawCascades WRITE setDrawCascades NOTIFY drawCascadesChanged FINAL REVISION(6, 8))
34 Q_PROPERTY(bool drawSceneCascadeIntersection READ drawSceneCascadeIntersection WRITE setDrawSceneCascadeIntersection NOTIFY drawSceneCascadeIntersectionChanged FINAL REVISION(6, 8))
35 Q_PROPERTY(bool disableShadowCameraUpdate READ disableShadowCameraUpdate WRITE setDisableShadowCameraUpdate NOTIFY disableShadowCameraUpdateChanged FINAL REVISION(6, 8))
36
37 QML_NAMED_ELEMENT(DebugSettings)
38public:
39 enum QQuick3DMaterialOverrides {
40 None,
41 BaseColor,
42 Roughness,
43 Metalness,
44 Diffuse,
45 Specular,
46 ShadowOcclusion,
47 Emission,
48 AmbientOcclusion,
49 Normals,
50 Tangents,
51 Binormals,
52 F0
53 };
54 Q_ENUM(QQuick3DMaterialOverrides)
55
56 explicit QQuick3DDebugSettings(QObject *parent = nullptr);
57
58 QQuick3DMaterialOverrides materialOverride() const;
59 void setMaterialOverride(QQuick3DMaterialOverrides newMaterialOverride);
60
61 bool wireframeEnabled() const;
62 void setWireframeEnabled(bool newWireframeEnabled);
63
64 Q_REVISION(6, 8) bool drawDirectionalLightShadowBoxes() const;
65 Q_REVISION(6, 8) void setDrawDirectionalLightShadowBoxes(bool newDrawDirectionalLightShadowBoxes);
66
67 Q_REVISION(6, 9) bool drawPointLightShadowBoxes() const;
68 Q_REVISION(6, 9) void setDrawPointLightShadowBoxes(bool newDrawPointLightShadowBoxes);
69
70 Q_REVISION(6, 8) bool drawShadowCastingBounds() const;
71 Q_REVISION(6, 8) void setDrawShadowCastingBounds(bool newDrawShadowCastingBounds);
72
73 Q_REVISION(6, 8) bool drawShadowReceivingBounds() const;
74 Q_REVISION(6, 8) void setDrawShadowReceivingBounds(bool newDrawShadowReceivingBounds);
75
76 Q_REVISION(6, 8) bool drawCascades() const;
77 Q_REVISION(6, 8) void setDrawCascades(bool newDrawCascades);
78
79 Q_REVISION(6, 8) bool drawSceneCascadeIntersection() const;
80 Q_REVISION(6, 8) void setDrawSceneCascadeIntersection(bool newDrawSceneCascadeIntersection);
81
82 Q_REVISION(6, 8) bool disableShadowCameraUpdate() const;
83 Q_REVISION(6, 8) void setDisableShadowCameraUpdate(bool newDisableShadowCameraUpdate);
84
85Q_SIGNALS:
86 void materialOverrideChanged();
87 void wireframeEnabledChanged();
88 Q_REVISION(6, 8) void drawDirectionalLightShadowBoxesChanged();
89 Q_REVISION(6, 9) void drawPointLightShadowBoxesChanged();
90 Q_REVISION(6, 8) void drawShadowCastingBoundsChanged();
91 Q_REVISION(6, 8) void drawShadowReceivingBoundsChanged();
92 Q_REVISION(6, 8) void drawCascadesChanged();
93 Q_REVISION(6, 8) void drawSceneCascadeIntersectionChanged();
94 Q_REVISION(6, 8) void disableShadowCameraUpdateChanged();
95 void changed();
96
97private:
98 void update();
99 QQuick3DMaterialOverrides m_materialOverride = None;
100
101 bool m_wireframeEnabled = false;
102 bool m_drawDirectionalLightShadowBoxes = false;
103 bool m_drawPointLightShadowBoxes = false;
104 bool m_drawShadowCastingBounds = false;
105 bool m_drawShadowReceivingBounds = false;
106 bool m_drawCascades = false;
107 bool m_drawSceneCascadeIntersection = false;
108 bool m_disableShadowCameraUpdate = false;
109};
110
111QT_END_NAMESPACE
112
113#endif // QQUICK3DDEBUGSETTINGS_H
114

source code of qtquick3d/src/quick3d/qquick3ddebugsettings_p.h