Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquick3dskymaterial_p.h
Go to the documentation of this file.
1// Copyright (C) 2026 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QQUICK3DSKYMATERIAL_P_H
6#define QQUICK3DSKYMATERIAL_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtQuick3D/private/qquick3deffect_p.h>
20
21#include <QVector3D>
22
24
25struct QSSGRenderSkyMaterial;
26
27class Q_QUICK3D_EXPORT QQuick3DSkyMaterial : public QQuick3DObject, public QQuick3DPropertyChangedTracker
28{
29 Q_OBJECT
30 Q_PROPERTY(int radianceMapSize READ radianceMapSize WRITE setRadianceMapSize NOTIFY radianceMapSizeChanged FINAL REVISION(6, 12))
31 Q_PROPERTY(QUrl fragmentShader READ fragmentShader WRITE setFragmentShader NOTIFY fragmentShaderChanged FINAL REVISION(6, 12))
32 Q_PROPERTY(QString fragmentShaderCode READ fragmentShaderCode WRITE setFragmentShaderCode NOTIFY
33 fragmentShaderCodeChanged FINAL REVISION(6, 12))
34 Q_PROPERTY(bool enableIBL READ enableIBL WRITE setEnableIBL NOTIFY enableIBLChanged FINAL REVISION(6, 12))
35 Q_PROPERTY(int iblSampleCount READ iblSampleCount WRITE setIblSampleCount NOTIFY iblSampleCountChanged FINAL REVISION(6, 12))
36 Q_PROPERTY(int iblRenderFrames READ iblRenderFrames WRITE setIblRenderFrames NOTIFY iblRenderFramesChanged FINAL REVISION(6, 12))
37
38 QML_NAMED_ELEMENT(SkyMaterial)
39 QML_ADDED_IN_VERSION(6, 12)
40public:
41 explicit QQuick3DSkyMaterial(QQuick3DObject *parent = nullptr);
43 Q_REVISION(6, 12) int radianceMapSize() const;
44 Q_REVISION(6, 12) QUrl fragmentShader() const;
45 Q_REVISION(6, 12) bool enableIBL() const;
46 Q_REVISION(6, 12) QString fragmentShaderCode() const;
47 Q_REVISION(6, 12) int iblSampleCount() const;
48 Q_REVISION(6, 12) int iblRenderFrames() const;
49
50public Q_SLOTS:
51 Q_REVISION(6, 12) void setRadianceMapSize(int radianceMapSize);
52 Q_REVISION(6, 12) void setFragmentShader(const QUrl &newFragmentShader);
53 Q_REVISION(6, 12) void setFragmentShaderCode(const QString &newFragmentShaderCode);
54 Q_REVISION(6, 12) void setEnableIBL(bool newEnableIBL);
55 Q_REVISION(6, 12) void setIblSampleCount(int newIblSampleCount);
56 Q_REVISION(6, 12) void setIblRenderFrames(int newIblRenderFrames);
57
58Q_SIGNALS:
59 Q_REVISION(6, 12) void radianceMapSizeChanged();
60 Q_REVISION(6, 12) void fragmentShaderChanged();
61 Q_REVISION(6, 12) void fragmentShaderCodeChanged();
62 Q_REVISION(6, 12) void enableIBLChanged();
63 Q_REVISION(6, 12) void iblSampleCountChanged();
64 Q_REVISION(6, 12) void iblRenderFramesChanged();
65
66protected:
67 QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override;
68 void markTrackedPropertyDirty(QMetaProperty property, DirtyPropertyHint hint) override;
69
70private:
71 int m_radianceMapSize = 512;
72 QUrl m_fragmentShader;
73
74 enum Dirty : quint8 { FragmentShader = 1 << 0, TrackedProperty = 1 << 1 };
75
76 using DirtyT = std::underlying_type_t<Dirty>;
77
78 void markDirty(Dirty v);
79
80 DirtyT m_dirtyFlag { Dirty::FragmentShader | Dirty::TrackedProperty };
81 bool m_enableIBL = true;
82 int m_iblSampleCount = 32;
83 int m_iblRenderFrames = 2;
84 QString m_fragmentShaderCode;
85};
86
87QT_END_NAMESPACE
88
89#endif // QQUICK3DSKYMATERIAL_P_H
QQuick3DSceneRenderer * renderer()
void setViewport(const QRectF &viewport)
QQuick3DSGDirectRenderer(QQuick3DSceneRenderer *renderer, QQuickWindow *window, QQuick3DSGDirectRendererMode mode=Underlay)
void render(const RenderState *state) override
This function is called by the renderer and should paint this node with directly invoking commands vi...
void releaseResources() override
This function is called when all custom graphics resources allocated by this node have to be freed im...
RenderingFlags flags() const override
void prepare() override
Called from the frame preparation phase.
QQuick3DSceneRenderer * renderer
StateFlags changedStates() const override
This function should return a mask where each bit represents graphics states changed by the \l render...
QRhiTexture * renderToRhiTexture(QQuickWindow *qw)
PickResultList syncPick(const QSSGRenderRay &ray)
QQuick3DSceneRenderer(const std::shared_ptr< QSSGRenderContextInterface > &rci)
void rhiPrepare(const QRect &viewport, qreal displayPixelRatio)
PickResultList syncPickSubset(const QSSGRenderRay &ray, QVarLengthArray< QSSGRenderNode * > subset)
void synchronize(QQuick3DViewport *view3D, const QSize &size, float dpr)
std::optional< QSSGRenderRay > getRayFromViewportPos(const QPointF &pos)
PickResultList syncPickAll(const QSSGRenderRay &ray)
static QSSGRenderLayer::TonemapMode getTonemapMode(const QQuick3DSceneEnvironment &environment)
void setGlobalPickingEnabled(bool isEnabled)
QQuick3DRenderStats * renderStats()
std::optional< QSSGRenderPickResult > syncPickClosestPoint(const QVector3D &center, float radiusSquared, QSSGRenderNode *node)
QList< const QSSGRenderNode * > syncPickInFrustum(const QSSGFrustum &frustum)
PickResultList syncPickOne(const QSSGRenderRay &ray, QSSGRenderNode *node)
QQuick3DSceneRenderer * renderer
QSGTexture * texture() const override
Returns a pointer to the texture object.
void preprocess() override
Override this function to do processing on the node before it is rendered.
Combined button and popup list for selecting options.
Q_TRACE_POINT(qtcore, QCoreApplication_postEvent_exit)
Q_TRACE_POINT(qtcore, QFactoryLoader_update, const QString &fileName)
Q_TRACE_POINT(qtquick3d, QSSG_renderFrame_entry, int width, int height)
static void bfs(In *inExtension, QList< Out * > &outList)
static const QVector2D s_ProgressiveAABlendFactors[QSSGLayerRenderData::MAX_AA_LEVELS]
static QVector3D tonemapRgb(const QVector3D &c, QQuick3DSceneEnvironment::QQuick3DEnvironmentTonemapModes tonemapMode)
static bool dumpRenderTimes()
Q_TRACE_POINT(qtquick3d, QSSG_synchronize_entry, QQuick3DViewport *view3D, const QSize &size, float dpr)
static const QVector2D s_TemporalAABlendFactors
static void requestFullUpdate(QQuickWindow *window)