Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qssgrenderreflectionmap_p.h
Go to the documentation of this file.
1
// Copyright (C) 2021 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
6
#
ifndef
QSSG_RENDER_REFLECTION_MAP_H
7
#
define
QSSG_RENDER_REFLECTION_MAP_H
8
9
//
10
// W A R N I N G
11
// -------------
12
//
13
// This file is not part of the Qt API. It exists purely as an
14
// implementation detail. This header file may change from version to
15
// version without notice, or even be removed.
16
//
17
// We mean it.
18
//
19
20
#
include
<
QtQuick3DRuntimeRender
/
private
/
qtquick3druntimerenderglobal_p
.
h
>
21
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrenderreflectionprobe_p
.
h
>
22
23
QT_BEGIN_NAMESPACE
24
25
class
QRhi;
26
class
QRhiCommandBuffer;
27
class
QSSGRhiContext;
28
class
QSSGRenderContextInterface
;
29
30
class
QRhiRenderBuffer;
31
class
QRhiTextureRenderTarget;
32
class
QRhiRenderPassDescriptor;
33
class
QRhiTexture;
34
class
QRhiGraphicsPipeline;
35
class
QRhiShaderResourceBindings;
36
class
QRhiBuffer;
37
38
struct
QSSGReflectionMapEntry
39
{
40
QSSGReflectionMapEntry
();
41
42
static
QSSGReflectionMapEntry
withRhiTexturedCubeMap
(quint32 probeIdx,
43
QRhiTexture *preFiltered);
44
static
QSSGReflectionMapEntry
withRhiCubeMap
(quint32 probeIdx,
45
QRhiTexture *cube,
46
QRhiTexture *prefiltered,
47
QRhiRenderBuffer *depthStencil);
48
49
void
renderMips
(QSSGRhiContext *rhiCtx);
50
void
destroyRhiResources
();
51
52
quint32
m_probeIndex
;
53
54
// RHI resources
55
QRhiTexture *
m_rhiCube
=
nullptr
;
56
QRhiTexture *
m_rhiPrefilteredCube
=
nullptr
;
57
QRhiRenderBuffer *
m_rhiDepthStencil
=
nullptr
;
58
QVarLengthArray
<
QRhiTextureRenderTarget
*, 6>
m_rhiRenderTargets
;
59
QRhiRenderPassDescriptor *
m_rhiRenderPassDesc
=
nullptr
;
60
61
QRhiGraphicsPipeline *
m_prefilterPipeline
=
nullptr
;
62
QRhiGraphicsPipeline *
m_irradiancePipeline
=
nullptr
;
63
QRhiShaderResourceBindings *
m_prefilterSrb
=
nullptr
;
64
QRhiShaderResourceBindings *
m_irradianceSrb
=
nullptr
;
65
QRhiBuffer *
m_prefilterVertBuffer
=
nullptr
;
66
QRhiBuffer *
m_prefilterFragBuffer
=
nullptr
;
67
QRhiBuffer *
m_irradianceFragBuffer
=
nullptr
;
68
QMap
<
int
,
QVarLengthArray
<
QRhiTextureRenderTarget
*, 6>>
m_rhiPrefilterRenderTargetsMap
;
69
QRhiRenderPassDescriptor *
m_rhiPrefilterRenderPassDesc
=
nullptr
;
70
QMap
<
int
,
QSize
>
m_prefilterMipLevelSizes
;
71
72
QVarLengthArray
<
QRhiShaderResourceBindings
*, 6>
m_skyBoxSrbs
;
73
74
QMatrix4x4
m_viewProjection
;
75
76
bool
m_needsRender
=
false
;
77
bool
m_rendered
=
false
;
78
79
QSSGRenderReflectionProbe
::
ReflectionTimeSlicing
m_timeSlicing
=
QSSGRenderReflectionProbe
::
ReflectionTimeSlicing
::
None
;
80
int
m_timeSliceFrame
= 1;
81
QSSGRenderTextureCubeFace
m_timeSliceFace
= {
QSSGRenderTextureCubeFaces
[0] };
82
Q_QUICK3D_PROFILE_ID
83
};
84
85
class
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGRenderReflectionMap
86
{
87
typedef
QVector<QSSGReflectionMapEntry> TReflectionMapEntryList;
88
Q_DISABLE_COPY(QSSGRenderReflectionMap)
89
90
public
:
91
const
QSSGRenderContextInterface &m_context;
92
93
explicit
QSSGRenderReflectionMap(
const
QSSGRenderContextInterface &inContext);
94
~QSSGRenderReflectionMap();
95
void
releaseCachedResources();
96
97
void
addReflectionMapEntry(qint32 probeIdx,
const
QSSGRenderReflectionProbe &probe);
98
void
addTexturedReflectionMapEntry(qint32 probeIdx,
const
QSSGRenderReflectionProbe &probe);
99
100
QSSGReflectionMapEntry *reflectionMapEntry(
int
probeIdx);
101
102
qint32 reflectionMapEntryCount() {
return
m_reflectionMapList.size(); }
103
104
private
:
105
TReflectionMapEntryList m_reflectionMapList;
106
};
107
108
using
QSSGRenderReflectionMapPtr = std::shared_ptr<QSSGRenderReflectionMap>;
109
110
QT_END_NAMESPACE
111
112
#
endif
QSSGRenderReflectionMap
Definition
qssgrenderreflectionmap_p.h:86
QSSGRenderer::QSSGRenderContextInterface
friend class QSSGRenderContextInterface
Definition
qssgrenderer_p.h:105
QSSGReflectionMapEntry
Definition
qssgrenderreflectionmap_p.h:39
QSSGReflectionMapEntry::m_rhiRenderTargets
QVarLengthArray< QRhiTextureRenderTarget *, 6 > m_rhiRenderTargets
Definition
qssgrenderreflectionmap_p.h:58
QSSGReflectionMapEntry::m_probeIndex
quint32 m_probeIndex
Definition
qssgrenderreflectionmap_p.h:52
QSSGReflectionMapEntry::m_timeSlicing
QSSGRenderReflectionProbe::ReflectionTimeSlicing m_timeSlicing
Definition
qssgrenderreflectionmap_p.h:79
QSSGReflectionMapEntry::m_skyBoxSrbs
QVarLengthArray< QRhiShaderResourceBindings *, 6 > m_skyBoxSrbs
Definition
qssgrenderreflectionmap_p.h:72
QSSGReflectionMapEntry::withRhiTexturedCubeMap
static QSSGReflectionMapEntry withRhiTexturedCubeMap(quint32 probeIdx, QRhiTexture *preFiltered)
Definition
qssgrenderreflectionmap.cpp:580
QSSGReflectionMapEntry::m_rhiRenderPassDesc
QRhiRenderPassDescriptor * m_rhiRenderPassDesc
Definition
qssgrenderreflectionmap_p.h:59
QSSGReflectionMapEntry::withRhiCubeMap
static QSSGReflectionMapEntry withRhiCubeMap(quint32 probeIdx, QRhiTexture *cube, QRhiTexture *prefiltered, QRhiRenderBuffer *depthStencil)
Definition
qssgrenderreflectionmap.cpp:588
QSSGReflectionMapEntry::m_irradianceSrb
QRhiShaderResourceBindings * m_irradianceSrb
Definition
qssgrenderreflectionmap_p.h:64
QSSGReflectionMapEntry::m_prefilterSrb
QRhiShaderResourceBindings * m_prefilterSrb
Definition
qssgrenderreflectionmap_p.h:63
QSSGReflectionMapEntry::m_prefilterMipLevelSizes
QMap< int, QSize > m_prefilterMipLevelSizes
Definition
qssgrenderreflectionmap_p.h:70
QSSGReflectionMapEntry::destroyRhiResources
void destroyRhiResources()
Definition
qssgrenderreflectionmap.cpp:601
QSSGReflectionMapEntry::QSSGReflectionMapEntry
QSSGReflectionMapEntry()
Definition
qssgrenderreflectionmap.cpp:282
QSSGReflectionMapEntry::m_timeSliceFrame
int m_timeSliceFrame
Definition
qssgrenderreflectionmap_p.h:80
QSSGReflectionMapEntry::m_needsRender
bool m_needsRender
Definition
qssgrenderreflectionmap_p.h:76
QSSGReflectionMapEntry::m_rhiPrefilteredCube
QRhiTexture * m_rhiPrefilteredCube
Definition
qssgrenderreflectionmap_p.h:56
QSSGReflectionMapEntry::m_rhiPrefilterRenderPassDesc
QRhiRenderPassDescriptor * m_rhiPrefilterRenderPassDesc
Definition
qssgrenderreflectionmap_p.h:69
QSSGReflectionMapEntry::m_rendered
bool m_rendered
Definition
qssgrenderreflectionmap_p.h:77
QSSGReflectionMapEntry::m_prefilterFragBuffer
QRhiBuffer * m_prefilterFragBuffer
Definition
qssgrenderreflectionmap_p.h:66
QSSGReflectionMapEntry::m_prefilterVertBuffer
QRhiBuffer * m_prefilterVertBuffer
Definition
qssgrenderreflectionmap_p.h:65
QSSGReflectionMapEntry::m_irradiancePipeline
QRhiGraphicsPipeline * m_irradiancePipeline
Definition
qssgrenderreflectionmap_p.h:62
QSSGReflectionMapEntry::m_viewProjection
QMatrix4x4 m_viewProjection
Definition
qssgrenderreflectionmap_p.h:74
QSSGReflectionMapEntry::m_irradianceFragBuffer
QRhiBuffer * m_irradianceFragBuffer
Definition
qssgrenderreflectionmap_p.h:67
QSSGReflectionMapEntry::m_prefilterPipeline
QRhiGraphicsPipeline * m_prefilterPipeline
Definition
qssgrenderreflectionmap_p.h:61
QSSGReflectionMapEntry::m_rhiPrefilterRenderTargetsMap
QMap< int, QVarLengthArray< QRhiTextureRenderTarget *, 6 > > m_rhiPrefilterRenderTargetsMap
Definition
qssgrenderreflectionmap_p.h:68
QSSGReflectionMapEntry::renderMips
void renderMips(QSSGRhiContext *rhiCtx)
Definition
qssgrenderreflectionmap.cpp:439
QSSGReflectionMapEntry::m_rhiDepthStencil
QRhiRenderBuffer * m_rhiDepthStencil
Definition
qssgrenderreflectionmap_p.h:57
QSSGReflectionMapEntry::m_rhiCube
QRhiTexture * m_rhiCube
Definition
qssgrenderreflectionmap_p.h:55
QSSGReflectionMapEntry::m_timeSliceFace
QSSGRenderTextureCubeFace m_timeSliceFace
Definition
qssgrenderreflectionmap_p.h:81
qtquick3d
src
runtimerender
qssgrenderreflectionmap_p.h
Generated on
for Qt by
1.18.0