Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qssgrenderpass_p.h
Go to the documentation of this file.
1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QSSGRENDERPASS_H
5#define QSSGRENDERPASS_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 <QtCore/qglobal.h>
19
20#include <ssg/qssgrenderhelpers.h>
21#include <QtQuick3DUtils/private/qssgaosettings_p.h>
22#include <QtQuick3DRuntimeRender/private/qssgrhicontext_p.h>
23#include <QtQuick3DRuntimeRender/private/qssgrendershadercache_p.h>
24#include <QtQuick3DRuntimeRender/private/qssgrenderableobjects_p.h>
25
27
28class QSSGRenderer;
32struct QSSGRenderCamera;
33struct QSSGRenderItem2D;
34
36{
37public:
38 enum class Type
39 {
41 Main,
43 };
44 // Input:
45
46 virtual ~QSSGRenderPass();
48 virtual void renderPass(QSSGRenderer &renderer) = 0;
49 virtual Type passType() const = 0;
50 virtual void resetForFrame() = 0;
51
52 // Output:
53
54 // Flags: Debug markers(?)
55
56 // Dependency
57};
58
76
78{
79public:
81 void renderPass(QSSGRenderer &renderer) final;
82 Type passType() const final { return Type::Standalone; }
83 void resetForFrame() final;
84
85 std::shared_ptr<QSSGRenderReflectionMap> reflectionMapManager;
86 QList<QSSGRenderReflectionProbe *> reflectionProbes;
87 QSSGRenderableObjectList reflectionPassObjects;
89};
90
92{
93public:
95 void renderPass(QSSGRenderer &renderer) final;
96 Type passType() const final { return Type::Main; }
97 void resetForFrame() final;
98
99 QSSGRenderableObjectList renderedDepthWriteObjects;
100 QSSGRenderableObjectList renderedOpaqueDepthPrepassObjects;
102 bool active = false;
103};
104
106{
107public:
109 void renderPass(QSSGRenderer &renderer) final;
110 Type passType() const final { return Type::Standalone; }
111 void resetForFrame() final;
112
113 const QSSGRhiRenderableTexture *rhiDepthTexture = nullptr;
114 const QSSGRenderCamera *camera = nullptr;
117 QSSGRhiRenderableTexture *rhiAoTexture = nullptr;
118 QSSGRhiShaderPipelinePtr ssaoShaderPipeline;
119};
120
121class Q_QUICK3DRUNTIMERENDER_EXPORT DepthMapPass : public QSSGRenderPass
122{
123public:
125 void renderPass(QSSGRenderer &renderer) final;
126 Type passType() const final { return Type::Standalone; }
127 void resetForFrame() final;
128
129 QSSGRenderableObjectList sortedOpaqueObjects;
130 QSSGRenderableObjectList sortedTransparentObjects;
132 QSSGRhiRenderableTexture *rhiDepthTexture = nullptr;
133};
134
136{
137public:
139 void renderPass(QSSGRenderer &renderer) final;
140 Type passType() const final { return Type::Main; }
141 void resetForFrame() final;
142
144 QRhiRenderPassDescriptor *rpDesc = nullptr;
146 bool skipTonemapping = false;
147 bool skipPrep = false;
148};
149
151{
152public:
154 void renderPass(QSSGRenderer &renderer) final;
155 Type passType() const final { return Type::Main; }
156 void resetForFrame() final;
157
158 QSSGRhiShaderPipelinePtr skyBoxCubeShader;
160 QRhiRenderPassDescriptor *rpDesc = nullptr;
162 bool skipTonemapping = false;
163};
164
166{
167public:
169 void renderPass(QSSGRenderer &renderer) final;
170 Type passType() const final { return Type::Standalone; }
171 void resetForFrame() final;
172
173 QSSGRhiRenderableTexture *rhiScreenTexture = nullptr;
174 std::optional<SkyboxPass> skyboxPass;
175 std::optional<SkyboxCubeMapPass> skyboxCubeMapPass;
176 QSSGShaderFeatures shaderFeatures;
177 QSSGRenderableObjectList sortedOpaqueObjects;
180 bool wantsMips = false;
181};
182
184{
185public:
186 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
187 void renderPass(QSSGRenderer &renderer) final;
188 Type passType() const final { return Type::Main; }
189 void resetForFrame() final;
190
191 QSSGRenderableObjectList sortedScreenTextureObjects;
192 const QSSGRhiRenderableTexture *rhiScreenTexture = nullptr;
194};
195
197{
198public:
199 static void prep(const QSSGRenderContextInterface &ctx,
201 QSSGPassKey passKey,
203 QSSGShaderFeatures shaderFeatures,
205 const QSSGRenderableObjectList &sortedOpaqueObjects);
206
207 static void render(const QSSGRenderContextInterface &ctx,
209 const QSSGRenderableObjectList &sortedOpaqueObjects);
210
211 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
212 void renderPass(QSSGRenderer &renderer) final;
213 Type passType() const final { return Type::Main; }
214 void resetForFrame() final;
215
216 QSSGRenderableObjectList sortedOpaqueObjects;
218 QSSGShaderFeatures shaderFeatures;
219};
220
221struct QSSGCameraRenderData;
222
224{
225public:
226 static void prep(const QSSGRenderContextInterface &ctx,
228 QSSGPassKey passKey,
230 QSSGShaderFeatures shaderFeatures,
232 const QSSGRenderableObjectList &sortedTransparentObjects);
233
234 static void render(const QSSGRenderContextInterface &ctx,
236 const QSSGRenderableObjectList &sortedTransparentObjects);
237
238
239 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
240 void renderPass(QSSGRenderer &renderer) final;
241 Type passType() const final { return Type::Main; }
242 void resetForFrame() final;
243
244 QSSGRenderableObjectList sortedTransparentObjects;
246 QSSGShaderFeatures shaderFeatures;
247};
248
250{
251public:
252 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
253 void renderPass(QSSGRenderer &renderer) final;
254 Type passType() const final { return Type::Main; }
255 void resetForFrame() final;
256
259};
260
262{
263public:
264 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
265 void renderPass(QSSGRenderer &renderer) final;
266 Type passType() const final { return Type::Main; }
267 void resetForFrame() final;
268
272};
273
275{
276public:
277 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
278 void renderPass(QSSGRenderer &renderer) final;
279 Type passType() const final { return Type::Main; }
280 void resetForFrame() final;
281
282 QSSGRhiShaderPipelinePtr debugObjectShader;
284};
285
287
289{
290public:
291 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
292 void renderPass(QSSGRenderer &renderer) final;
293 Type passType() const final { return Type::Extension; }
294 void resetForFrame() final;
295
296 bool hasData() const { return extensions.size() != 0; }
297
298 QList<QSSGRenderExtension *> extensions;
299};
300
302
303#endif // QSSGRENDERPASS_H
Type passType() const final
Type passType() const final
Type passType() const final
Type passType() const final
Type passType() const final
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
Definition qlist.h:75
\inmodule QtGui
Definition qrhi.h:1142
\inmodule QtQuick3D
virtual ~QSSGRenderPass()
virtual void resetForFrame()=0
virtual Type passType() const =0
virtual void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data)=0
virtual void renderPass(QSSGRenderer &renderer)=0
Type passType() const final
Type passType() const final
Type passType() const final
Type passType() const final
QSSGRenderCamera * camera
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGShaderLightList globalLights
QSSGRenderableObjectList shadowPassObjects
QSSGRhiGraphicsPipelineState ps
void resetForFrame() final
Type passType() const final
QSSGBoxPoints castingObjectsBox
void renderPass(QSSGRenderer &renderer) final
std::shared_ptr< QSSGRenderShadowMap > shadowMapManager
QSSGBoxPoints receivingObjectsBox
Type passType() const final
Type passType() const final
Type passType() const final
QList< QSSGRenderExtension * > extensions
Type passType() const final
Type passType() const final
EGLContext ctx
Combined button and popup list for selecting options.
@ transparent
Definition qnamespace.h:47
EGLOutputLayerEXT layer
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLenum GLsizei const GLuint GLboolean enabled
std::array< QVector3D, 8 > QSSGBoxPoints
std::shared_ptr< QSSGRhiShaderPipeline > QSSGRhiShaderPipelinePtr
myWidget render(this)
QSvgRenderer * renderer
[0]
Definition moc.h:23