Qt 6.x
The Qt SDK
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 <QtQuick3DUtils/private/qtquick3dutilsglobal_p.h>
21#include <QtQuick3DRuntimeRender/private/qssgrhicontext_p.h>
22#include <QtQuick3DRuntimeRender/private/qssgrendershadercache_p.h>
23#include <QtQuick3DRuntimeRender/private/qssgrenderableobjects_p.h>
24
26
27class QSSGRenderer;
31struct QSSGRenderCamera;
32struct QSSGRenderItem2D;
33
35{
36public:
37 enum class Type
38 {
40 Main,
42 };
43 // Input:
44
46 virtual void renderPass(QSSGRenderer &renderer) = 0;
47 virtual Type passType() const = 0;
48 virtual void release() = 0;
49
50 // Output:
51
52 // Flags: Debug markers(?)
53
54 // Dependency
55};
56
58{
59public:
61 void renderPass(QSSGRenderer &renderer) final;
62 Type passType() const final { return Type::Standalone; }
63 void release() final;
64
72 bool enabled = false;
73};
74
76{
77public:
79 void renderPass(QSSGRenderer &renderer) final;
80 Type passType() const final { return Type::Standalone; }
81 void release() final;
82
83 std::shared_ptr<QSSGRenderReflectionMap> reflectionMapManager;
85 QSSGRenderableObjectList reflectionPassObjects;
87};
88
90{
91public:
92 enum class State
93 {
95 Active,
96 Forced
97 };
98
99 // Note: prep phase, there's also the render phase... Should both be specified here?
101 void renderPass(QSSGRenderer &renderer) final;
102 Type passType() const final { return Type::Main; }
103 void release() final;
104
105 QSSGRenderableObjectList renderedDepthWriteObjects;
106 QSSGRenderableObjectList renderedOpaqueDepthPrepassObjects;
108 State state { State::Disabled };
109};
110
112{
113public:
115 {
116 float aoStrength = 0.0f;
117 float aoDistance = 5.0f;
118 float aoSoftness = 50.0f;
119 float aoBias = 0.0f;
120 qint32 aoSamplerate = 2;
121 bool aoDither = false;
122 } ambientOcclusion;
123
124 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
125 void renderPass(QSSGRenderer &renderer) final;
126 Type passType() const final { return Type::Standalone; }
127 void release() final;
128
129 const QSSGRhiRenderableTexture *rhiDepthTexture = nullptr;
130 const QSSGRenderCamera *camera = nullptr;
134 QSSGRhiShaderPipelinePtr ssaoShaderPipeline;
135};
136
137class Q_QUICK3DRUNTIMERENDER_PRIVATE_EXPORT DepthMapPass : public QSSGRenderPass
138{
139public:
140 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
141 void renderPass(QSSGRenderer &renderer) final;
142 Type passType() const final { return Type::Standalone; }
143 void release() final;
144
145 QSSGRenderableObjectList sortedOpaqueObjects;
146 QSSGRenderableObjectList sortedTransparentObjects;
149};
150
152{
153public:
154 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
155 void renderPass(QSSGRenderer &renderer) final;
156 Type passType() const final { return Type::Standalone; }
157 void release() final;
158
159 QSSGRhiRenderableTexture rhiScreenTexture;
160 QSSGShaderFeatures shaderFeatures;
161 QSSGRenderableObjectList sortedOpaqueObjects;
164 bool wantsMips = false;
165};
166
168{
169public:
170 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
171 void renderPass(QSSGRenderer &renderer) final;
172 Type passType() const final { return Type::Main; }
173 void release() final;
174
175 QSSGRenderableObjectList sortedOpaqueObjects;
176 QSSGRenderableObjectList sortedTransparentObjects;
177 QSSGRenderableObjectList sortedScreenTextureObjects;
179 QSSGShaderFeatures shaderFeatures;
181};
182
184
186{
187public:
188 void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final;
189 void renderPass(QSSGRenderer &renderer) final;
190 Type passType() const final { return Type::Extension; }
191 void release() final;
192
193 bool hasData() const { return extensions.size() != 0; }
194
196};
197
199
200#endif // QSSGRENDERPASS_H
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:74
virtual void release()=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
QSSGRenderCamera * camera
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void release() final
QSSGShaderLightList globalLights
QSSGRenderableObjectList shadowPassObjects
QSSGRhiGraphicsPipelineState ps
Type passType() const final
QSSGBoxPoints castingObjectsBox
void renderPass(QSSGRenderer &renderer) final
std::shared_ptr< QSSGRenderShadowMap > shadowMapManager
QSSGBoxPoints receivingObjectsBox
QList< QSSGRenderExtension * > extensions
Type passType() const final
Type passType() const final
QCamera * camera
Definition camera.cpp:19
else opt state
[0]
Combined button and popup list for selecting options.
@ transparent
Definition qnamespace.h:46
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
std::array< QVector3D, 8 > QSSGBoxPoints
std::shared_ptr< QSSGRhiShaderPipeline > QSSGRhiShaderPipelinePtr
int qint32
Definition qtypes.h:44
sem release()
QSvgRenderer * renderer
[0]
Definition moc.h:24