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
qssgrhicontext.h
Go to the documentation of this file.
1
// Copyright (C) 2019 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
QSSGRHICONTEXT_H
7
#
define
QSSGRHICONTEXT_H
8
9
//
10
// W A R N I N G
11
// -------------
12
//
13
// This file is part of the QtQuick3D API, with limited compatibility guarantees.
14
// Usage of this API may make your code source and binary incompatible with
15
// future versions of Qt.
16
//
17
18
#
include
<
QtCore
/
qstack
.
h
>
19
#
include
<
rhi
/
qrhi
.
h
>
20
21
#
include
<
QtQuick3DRuntimeRender
/
qtquick3druntimerenderexports
.
h
>
22
23
QT_BEGIN_NAMESPACE
24
25
class
QSSGRhiContextPrivate;
26
class
QSSGRhiShaderPipeline;
27
28
class
QSSGRhiGraphicsPipelineState
29
{
30
public
:
31
enum
class
Flag
:
quint32
32
{
33
DepthTestEnabled
= 0x1,
34
DepthWriteEnabled
= 0x2,
35
BlendEnabled
= 0x4,
36
UsesStencilRef
= 0x8,
37
UsesScissor
= 0x10
38
};
39
Q_DECLARE_FLAGS(Flags,
Flag
)
40
41
QRhiGraphicsPipeline
::
CompareOp
depthFunc
=
QRhiGraphicsPipeline
::
LessOrEqual
;
42
QRhiGraphicsPipeline
::
CullMode
cullMode
=
QRhiGraphicsPipeline
::
None
;
43
std
::
array
<
QRhiGraphicsPipeline
::
TargetBlend
, 8>
targetBlend
;
44
QRhiGraphicsPipeline
::
PolygonMode
polygonMode
=
QRhiGraphicsPipeline
::
Fill
;
45
QRhiGraphicsPipeline
::
StencilOpState
stencilOpFrontState
{};
46
quint32
stencilWriteMask
= 0xFF;
47
quint32
stencilRef
= 0;
48
int
depthBias
= 0;
49
int
samples
= 1;
50
int
colorAttachmentCount
= 1;
51
int
viewCount
= 1;
52
float
slopeScaledDepthBias
= 0.0f;
53
float
lineWidth
= 1.0f;
54
Flags
flags
;
55
QRhiViewport
viewport
;
56
QRhiScissor
scissor
;
57
bool
userSetCullMode
=
false
;
// set by PipelineStateOverride; not part of the pipeline cache key
58
59
private
:
60
friend
struct
QSSGRhiGraphicsPipelineStatePrivate
;
61
friend
struct
QSSGRhiInputAssemblerStatePrivate
;
62
struct
InputAssemblerState
63
{
64
enum
InputSemantic {
65
PositionSemantic,
// attr_pos
66
NormalSemantic,
// attr_norm
67
TexCoord0Semantic,
// attr_uv0
68
TexCoord1Semantic,
// attr_uv1
69
TangentSemantic,
// attr_textan
70
BinormalSemantic,
// attr_binormal
71
ColorSemantic,
// attr_color
72
MaxTargetSemantic = ColorSemantic,
73
JointSemantic,
// attr_joints
74
WeightSemantic,
// attr_weights
75
TexCoordLightmapSemantic
// attr_lightmapuv
76
};
77
78
QRhiVertexInputLayout inputLayout;
79
QVarLengthArray<InputSemantic, 8> inputs;
80
QRhiGraphicsPipeline::Topology topology;
81
std::array<quint8, MaxTargetSemantic + 1> targetOffsets = { UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX,
82
UINT8_MAX, UINT8_MAX, UINT8_MAX };
83
quint8 targetCount = 0;
84
} ia;
85
86
// for internal use
87
const
QSSGRhiShaderPipeline *shaderPipeline =
nullptr
;
88
};
89
90
struct
QSSGRhiSamplerDescription
91
{
92
QRhiSampler
::
Filter
minFilter
;
93
QRhiSampler
::
Filter
magFilter
;
94
QRhiSampler
::
Filter
mipmap
;
95
QRhiSampler
::
AddressMode
hTiling
;
96
QRhiSampler
::
AddressMode
vTiling
;
97
QRhiSampler
::
AddressMode
zTiling
;
98
};
99
100
class
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGRhiContext
101
{
102
Q_DISABLE_COPY(QSSGRhiContext)
103
public
:
104
explicit
QSSGRhiContext(QRhi *rhi);
105
~QSSGRhiContext();
106
107
QRhi *rhi()
const
;
108
bool
isValid
()
const
;
109
110
QRhiRenderPassDescriptor
*
mainRenderPassDescriptor
()
const
;
111
QRhiCommandBuffer *
commandBuffer
()
const
;
112
QRhiRenderTarget
*
renderTarget
()
const
;
113
int
mainPassSampleCount
()
const
;
114
int
mainPassViewCount
()
const
;
115
116
QRhiSampler *
sampler
(
const
QSSGRhiSamplerDescription
&samplerDescription);
117
void
checkAndAdjustForNPoT
(QRhiTexture *texture,
QSSGRhiSamplerDescription
*samplerDescription);
118
QRhiTexture *
dummyTexture
(QRhiTexture::Flags flags, QRhiResourceUpdateBatch *rub,
119
const
QSize &size = QSize(64, 64),
const
QColor &fillColor =
Qt
::
black
,
120
int
arraySize = 0);
121
122
QRhiCommandBuffer
::
BeginPassFlags
commonPassFlags
()
const
;
123
124
private
:
125
Q_DECLARE_PRIVATE(QSSGRhiContext)
126
std::unique_ptr<QSSGRhiContextPrivate> d_ptr;
127
};
128
129
QT_END_NAMESPACE
130
131
#
endif
QPlatformOpenGLContext::isValid
virtual bool isValid() const
Definition
qplatformopenglcontext.h:56
QSSGRhiContext
\inmodule QtQuick3D
Definition
qssgrhicontext.h:101
QSSGRhiContext::mainPassSampleCount
int mainPassSampleCount() const
Returns the sample count used in the main render pass.
Definition
qssgrhicontext.cpp:1233
QSSGRhiContext::mainPassViewCount
int mainPassViewCount() const
Returns the multiview count used in the main render pass.
Definition
qssgrhicontext.cpp:1248
QSSGRhiContext::commandBuffer
QRhiCommandBuffer * commandBuffer() const
Definition
qssgrhicontext.cpp:1198
QSSGRhiContext::dummyTexture
QRhiTexture * dummyTexture(QRhiTexture::Flags flags, QRhiResourceUpdateBatch *rub, const QSize &size=QSize(64, 64), const QColor &fillColor=Qt::black, int arraySize=0)
Definition
qssgrhicontext.cpp:1543
QSSGRhiContext::checkAndAdjustForNPoT
void checkAndAdjustForNPoT(QRhiTexture *texture, QSSGRhiSamplerDescription *samplerDescription)
Adjusts samplerDescription's tiling and filtering modes based on the pixel size of texture.
Definition
qssgrhicontext.cpp:1404
QSSGRhiContext::commonPassFlags
QRhiCommandBuffer::BeginPassFlags commonPassFlags() const
Definition
qssgrhicontext.cpp:1933
QSSGRhiContext::sampler
QRhiSampler * sampler(const QSSGRhiSamplerDescription &samplerDescription)
Definition
qssgrhicontext.cpp:1367
QSSGRhiContext::renderTarget
QRhiRenderTarget * renderTarget() const
Definition
qssgrhicontext.cpp:1219
QSSGRhiContext::mainRenderPassDescriptor
QRhiRenderPassDescriptor * mainRenderPassDescriptor() const
Definition
qssgrhicontext.cpp:1184
QSSGRhiGraphicsPipelineState
\inmodule QtQuick3D
Definition
qssgrhicontext.h:29
QSSGRhiGraphicsPipelineState::colorAttachmentCount
int colorAttachmentCount
Definition
qssgrhicontext.h:50
QSSGRhiGraphicsPipelineState::samples
int samples
Definition
qssgrhicontext.h:49
QSSGRhiGraphicsPipelineState::lineWidth
float lineWidth
Definition
qssgrhicontext.h:53
QSSGRhiGraphicsPipelineState::stencilRef
quint32 stencilRef
Definition
qssgrhicontext.h:47
QSSGRhiGraphicsPipelineState::slopeScaledDepthBias
float slopeScaledDepthBias
Definition
qssgrhicontext.h:52
QSSGRhiGraphicsPipelineState::userSetCullMode
bool userSetCullMode
Definition
qssgrhicontext.h:57
QSSGRhiGraphicsPipelineState::Flag
Flag
\variable QSSGRhiGraphicsPipelineState::samples
Definition
qssgrhicontext.h:32
QSSGRhiGraphicsPipelineState::Flag::BlendEnabled
@ BlendEnabled
Definition
qssgrhicontext.h:35
QSSGRhiGraphicsPipelineState::Flag::DepthTestEnabled
@ DepthTestEnabled
Definition
qssgrhicontext.h:33
QSSGRhiGraphicsPipelineState::Flag::UsesStencilRef
@ UsesStencilRef
Definition
qssgrhicontext.h:36
QSSGRhiGraphicsPipelineState::Flag::DepthWriteEnabled
@ DepthWriteEnabled
Definition
qssgrhicontext.h:34
QSSGRhiGraphicsPipelineState::Flag::UsesScissor
@ UsesScissor
Definition
qssgrhicontext.h:37
QSSGRhiGraphicsPipelineState::targetBlend
std::array< QRhiGraphicsPipeline::TargetBlend, 8 > targetBlend
Definition
qssgrhicontext.h:43
QSSGRhiGraphicsPipelineState::scissor
QRhiScissor scissor
Definition
qssgrhicontext.h:56
QSSGRhiGraphicsPipelineState::viewCount
int viewCount
Definition
qssgrhicontext.h:51
QSSGRhiGraphicsPipelineState::flags
Flags flags
Definition
qssgrhicontext.h:54
QSSGRhiGraphicsPipelineState::stencilWriteMask
quint32 stencilWriteMask
Definition
qssgrhicontext.h:46
QSSGRhiGraphicsPipelineState::viewport
QRhiViewport viewport
Definition
qssgrhicontext.h:55
QSSGRhiGraphicsPipelineState::depthBias
int depthBias
Definition
qssgrhicontext.h:48
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QSSGRhiGraphicsPipelineStatePrivate
Definition
qssgrhicontext_p.h:48
QSSGRhiInputAssemblerStatePrivate
Definition
qssgrhicontext_p.h:39
QSSGRhiSamplerDescription
\variable QSSGRhiGraphicsPipelineState::depthFunc
Definition
qssgrhicontext.h:91
QSSGRhiSamplerDescription::hTiling
QRhiSampler::AddressMode hTiling
Definition
qssgrhicontext.h:95
QSSGRhiSamplerDescription::minFilter
QRhiSampler::Filter minFilter
Definition
qssgrhicontext.h:92
QSSGRhiSamplerDescription::magFilter
QRhiSampler::Filter magFilter
Definition
qssgrhicontext.h:93
QSSGRhiSamplerDescription::vTiling
QRhiSampler::AddressMode vTiling
Definition
qssgrhicontext.h:96
QSSGRhiSamplerDescription::mipmap
QRhiSampler::Filter mipmap
Definition
qssgrhicontext.h:94
QSSGRhiSamplerDescription::zTiling
QRhiSampler::AddressMode zTiling
Definition
qssgrhicontext.h:97
qtquick3d
src
runtimerender
qssgrhicontext.h
Generated on
for Qt by
1.18.0