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
qssgrendershaderlibrarymanager_p.h
Go to the documentation of this file.
1
// Copyright (C) 2008-2012 NVIDIA Corporation.
2
// Copyright (C) 2019 The Qt Company Ltd.
3
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
// Qt-Security score:significant reason:default
5
6
7
#
ifndef
QSSG_RENDER_DYNAMIC_OBJECT_SYSTEM_H
8
#
define
QSSG_RENDER_DYNAMIC_OBJECT_SYSTEM_H
9
10
//
11
// W A R N I N G
12
// -------------
13
//
14
// This file is not part of the Qt API. It exists purely as an
15
// implementation detail. This header file may change from version to
16
// version without notice, or even be removed.
17
//
18
// We mean it.
19
//
20
21
#
include
<
QtQuick3DUtils
/
private
/
qssgrenderbasetypes_p
.
h
>
22
#
include
<
QtQuick3DUtils
/
private
/
qqsbcollection_p
.
h
>
23
24
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrendershadercache_p
.
h
>
25
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrendergraphobject_p
.
h
>
26
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrendershaderkeys_p
.
h
>
27
28
#
include
<
QtGui
/
QVector2D
>
29
30
#
include
<
QtCore
/
QString
>
31
#
include
<
QtCore
/
QReadWriteLock
>
32
33
QT_BEGIN_NAMESPACE
34
35
class
QSSGRenderContextInterface;
36
37
struct
QSSGCustomShaderMetaData
38
{
39
enum
Flag
{
40
UsesScreenTexture
= 1 << 0,
41
UsesDepthTexture
= 1 << 1,
42
UsesAoTexture
= 1 << 2,
43
OverridesPosition
= 1 << 3,
44
UsesProjectionMatrix
= 1 << 4,
45
UsesInverseProjectionMatrix
= 1 << 5,
46
UsesScreenMipTexture
= 1 << 6,
47
UsesVarColor
= 1 << 7,
48
UsesSharedVars
= 1 << 8,
49
UsesIblOrientation
= 1 << 9,
50
UsesLightmap
= 1 << 10,
51
UsesSkinning
= 1 << 11,
52
UsesMorphing
= 1 << 12,
53
UsesViewIndex
= 1 << 13,
54
UsesInputTexture
= 1 << 14,
55
UsesClearcoat
= 1 << 15,
56
UsesClearcoatFresnelScaleBias
= 1 << 16,
57
UsesFresnelScaleBias
= 1 << 17,
58
UsesTransmission
= 1 << 18,
59
UsesViewMatrix
= 1 << 19,
60
UsesNormalTexture
= 1 << 20,
61
UsesMotionVectorTexture
= 1 << 21,
62
UsesSheen
= 1 << 22,
63
UsesAnisotropy
= 1 << 23,
64
UsesIridescence
= 1 << 24,
65
UsesDispersion
= 1 << 25
66
};
67
Q_DECLARE_FLAGS(Flags,
Flag
)
68
69
Flags
flags
;
70
QSet
<
QByteArray
>
customFunctions
;
71
QSSGShaderFeatures
features
;
72
};
73
74
Q_DECLARE_OPERATORS_FOR_FLAGS(
QSSGCustomShaderMetaData
::Flags)
75
76
class
Q_QUICK3DRUNTIMERENDER_EXPORT
QSSGShaderLibraryManager
77
{
78
Q_DISABLE_COPY(QSSGShaderLibraryManager)
79
public
:
80
typedef
QHash<QByteArray, QByteArray> TPathDataMap;
81
typedef
QSet
<
QString
>
TPathSet
;
82
83
TPathDataMap
m_expandedFiles
;
84
QHash
<
QByteArray
,
QSSGCustomShaderMetaData
>
m_metadata
;
85
QByteArray
m_vertShader
;
86
QByteArray
m_fragShader
;
87
88
QQsbCollection
::
EntryMap
m_preGeneratedShaderEntries
;
89
90
QReadWriteLock
m_lock
;
91
92
static
QString
getShaderCodeLibraryDirectory
();
93
94
explicit
QSSGShaderLibraryManager
();
95
96
~QSSGShaderLibraryManager();
97
98
QQsbCollection
::
EntryMap
getParticleShaderEntries
()
const
;
99
100
void
setShaderSource
(
const
QByteArray &inShaderPathKey, QSSGShaderCache::ShaderType type,
101
const
QByteArray &inSource,
const
QSSGCustomShaderMetaData
&meta);
102
103
// Does not load any shaders, only information about the content of the pregenerated shaders
104
void
loadPregeneratedShaderInfo
();
105
106
void
resolveIncludeFiles
(QByteArray &theReadBuffer,
const
QByteArray &inMaterialInfoString);
107
QByteArray
getIncludeContents
(
const
QByteArray &inShaderPathKey);
108
109
QByteArray
getShaderSource
(
const
QByteArray &inShaderPathKey, QSSGShaderCache::ShaderType type);
110
QSSGCustomShaderMetaData
getShaderMetaData
(
const
QByteArray &inShaderPathKey, QSSGShaderCache::ShaderType type);
111
112
void
setShaderCodeLibraryVersion
(
const
QByteArray &version);
113
114
static
bool
compare
(
const
QSSGShaderDefaultMaterialKey &key1,
const
QSSGShaderDefaultMaterialKey &key2);
115
};
116
117
QT_END_NAMESPACE
118
119
#
endif
QSSGShaderLibraryManager
Definition
qssgrendershaderlibrarymanager_p.h:77
QSSGShaderLibraryManager::getShaderMetaData
QSSGCustomShaderMetaData getShaderMetaData(const QByteArray &inShaderPathKey, QSSGShaderCache::ShaderType type)
Definition
qssgrendershaderlibrarymanager.cpp:158
QSSGShaderLibraryManager::TPathSet
QSet< QString > TPathSet
Definition
qssgrendershaderlibrarymanager_p.h:81
QSSGShaderLibraryManager::loadPregeneratedShaderInfo
void loadPregeneratedShaderInfo()
Definition
qssgrendershaderlibrarymanager.cpp:171
QSSGShaderLibraryManager::setShaderSource
void setShaderSource(const QByteArray &inShaderPathKey, QSSGShaderCache::ShaderType type, const QByteArray &inSource, const QSSGCustomShaderMetaData &meta)
Definition
qssgrendershaderlibrarymanager.cpp:45
QSSGShaderLibraryManager::getShaderSource
QByteArray getShaderSource(const QByteArray &inShaderPathKey, QSSGShaderCache::ShaderType type)
Definition
qssgrendershaderlibrarymanager.cpp:145
QSSGShaderLibraryManager::compare
static bool compare(const QSSGShaderDefaultMaterialKey &key1, const QSSGShaderDefaultMaterialKey &key2)
Definition
qssgrendershaderlibrarymanager.cpp:197
QSSGShaderLibraryManager::m_metadata
QHash< QByteArray, QSSGCustomShaderMetaData > m_metadata
Definition
qssgrendershaderlibrarymanager_p.h:84
QSSGShaderLibraryManager::m_lock
QReadWriteLock m_lock
Definition
qssgrendershaderlibrarymanager_p.h:90
QSSGShaderLibraryManager::getParticleShaderEntries
QQsbCollection::EntryMap getParticleShaderEntries() const
Definition
qssgrendershaderlibrarymanager.cpp:183
QSSGShaderLibraryManager::m_expandedFiles
TPathDataMap m_expandedFiles
Definition
qssgrendershaderlibrarymanager_p.h:83
QSSGShaderLibraryManager::getShaderCodeLibraryDirectory
static QString getShaderCodeLibraryDirectory()
Definition
qssgrendershaderlibrarymanager.cpp:20
QSSGShaderLibraryManager::getIncludeContents
QByteArray getIncludeContents(const QByteArray &inShaderPathKey)
Definition
qssgrendershaderlibrarymanager.cpp:99
QSSGShaderLibraryManager::resolveIncludeFiles
void resolveIncludeFiles(QByteArray &theReadBuffer, const QByteArray &inMaterialInfoString)
Definition
qssgrendershaderlibrarymanager.cpp:68
QSSGShaderLibraryManager::m_preGeneratedShaderEntries
QQsbCollection::EntryMap m_preGeneratedShaderEntries
Definition
qssgrendershaderlibrarymanager_p.h:88
QSSGShaderLibraryManager::QSSGShaderLibraryManager
QSSGShaderLibraryManager()
Definition
qssgrendershaderlibrarymanager.cpp:28
QSSGShaderLibraryManager::m_fragShader
QByteArray m_fragShader
Definition
qssgrendershaderlibrarymanager_p.h:86
QSSGShaderLibraryManager::m_vertShader
QByteArray m_vertShader
Definition
qssgrendershaderlibrarymanager_p.h:85
QSSGShaderLibraryManager::setShaderCodeLibraryVersion
void setShaderCodeLibraryVersion(const QByteArray &version)
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
copyrightHeaderStart
static QByteArray copyrightHeaderStart()
Definition
qssgrendershaderlibrarymanager.cpp:25
COMPARE_PROP
#define COMPARE_PROP(x)
includeSearch
static QByteArray includeSearch()
Definition
qssgrendershaderlibrarymanager.cpp:24
copyrightHeaderEnd
static QByteArray copyrightHeaderEnd()
Definition
qssgrendershaderlibrarymanager.cpp:26
stageKey
static char stageKey(QSSGShaderCache::ShaderType type)
Definition
qssgrendershaderlibrarymanager.cpp:32
QSSGCustomShaderMetaData
Definition
qssgrendershaderlibrarymanager_p.h:38
QSSGCustomShaderMetaData::Flag
Flag
Definition
qssgrendershaderlibrarymanager_p.h:39
QSSGCustomShaderMetaData::UsesNormalTexture
@ UsesNormalTexture
Definition
qssgrendershaderlibrarymanager_p.h:60
QSSGCustomShaderMetaData::UsesInverseProjectionMatrix
@ UsesInverseProjectionMatrix
Definition
qssgrendershaderlibrarymanager_p.h:45
QSSGCustomShaderMetaData::UsesDepthTexture
@ UsesDepthTexture
Definition
qssgrendershaderlibrarymanager_p.h:41
QSSGCustomShaderMetaData::UsesSheen
@ UsesSheen
Definition
qssgrendershaderlibrarymanager_p.h:62
QSSGCustomShaderMetaData::UsesAnisotropy
@ UsesAnisotropy
Definition
qssgrendershaderlibrarymanager_p.h:63
QSSGCustomShaderMetaData::UsesSkinning
@ UsesSkinning
Definition
qssgrendershaderlibrarymanager_p.h:51
QSSGCustomShaderMetaData::UsesIblOrientation
@ UsesIblOrientation
Definition
qssgrendershaderlibrarymanager_p.h:49
QSSGCustomShaderMetaData::UsesClearcoat
@ UsesClearcoat
Definition
qssgrendershaderlibrarymanager_p.h:55
QSSGCustomShaderMetaData::OverridesPosition
@ OverridesPosition
Definition
qssgrendershaderlibrarymanager_p.h:43
QSSGCustomShaderMetaData::UsesAoTexture
@ UsesAoTexture
Definition
qssgrendershaderlibrarymanager_p.h:42
QSSGCustomShaderMetaData::UsesScreenMipTexture
@ UsesScreenMipTexture
Definition
qssgrendershaderlibrarymanager_p.h:46
QSSGCustomShaderMetaData::UsesVarColor
@ UsesVarColor
Definition
qssgrendershaderlibrarymanager_p.h:47
QSSGCustomShaderMetaData::UsesMotionVectorTexture
@ UsesMotionVectorTexture
Definition
qssgrendershaderlibrarymanager_p.h:61
QSSGCustomShaderMetaData::UsesViewMatrix
@ UsesViewMatrix
Definition
qssgrendershaderlibrarymanager_p.h:59
QSSGCustomShaderMetaData::UsesProjectionMatrix
@ UsesProjectionMatrix
Definition
qssgrendershaderlibrarymanager_p.h:44
QSSGCustomShaderMetaData::UsesViewIndex
@ UsesViewIndex
Definition
qssgrendershaderlibrarymanager_p.h:53
QSSGCustomShaderMetaData::UsesFresnelScaleBias
@ UsesFresnelScaleBias
Definition
qssgrendershaderlibrarymanager_p.h:57
QSSGCustomShaderMetaData::UsesLightmap
@ UsesLightmap
Definition
qssgrendershaderlibrarymanager_p.h:50
QSSGCustomShaderMetaData::UsesInputTexture
@ UsesInputTexture
Definition
qssgrendershaderlibrarymanager_p.h:54
QSSGCustomShaderMetaData::UsesDispersion
@ UsesDispersion
Definition
qssgrendershaderlibrarymanager_p.h:65
QSSGCustomShaderMetaData::UsesSharedVars
@ UsesSharedVars
Definition
qssgrendershaderlibrarymanager_p.h:48
QSSGCustomShaderMetaData::UsesClearcoatFresnelScaleBias
@ UsesClearcoatFresnelScaleBias
Definition
qssgrendershaderlibrarymanager_p.h:56
QSSGCustomShaderMetaData::UsesMorphing
@ UsesMorphing
Definition
qssgrendershaderlibrarymanager_p.h:52
QSSGCustomShaderMetaData::UsesTransmission
@ UsesTransmission
Definition
qssgrendershaderlibrarymanager_p.h:58
QSSGCustomShaderMetaData::UsesScreenTexture
@ UsesScreenTexture
Definition
qssgrendershaderlibrarymanager_p.h:40
QSSGCustomShaderMetaData::UsesIridescence
@ UsesIridescence
Definition
qssgrendershaderlibrarymanager_p.h:64
QSSGCustomShaderMetaData::features
QSSGShaderFeatures features
Definition
qssgrendershaderlibrarymanager_p.h:71
QSSGCustomShaderMetaData::customFunctions
QSet< QByteArray > customFunctions
Definition
qssgrendershaderlibrarymanager_p.h:70
qtquick3d
src
runtimerender
resourcemanager
qssgrendershaderlibrarymanager_p.h
Generated on
for Qt by
1.18.0