5#ifndef QSSG_RENDER_SHADER_CACHE_H
6#define QSSG_RENDER_SHADER_CACHE_H
19#include <QtQuick3DRuntimeRender/private/qtquick3druntimerenderglobal_p.h>
20#include <QtQuick3DUtils/private/qssgdataref_p.h>
21#include <QtQuick3DUtils/private/qqsbcollection_p.h>
23#include <QtQuick3DRuntimeRender/private/qssgrhicontext_p.h>
25#include <QtCore/QString>
26#include <QtCore/qcryptographichash.h>
27#include <QtCore/QSharedPointer>
28#include <QtCore/QVector>
68 IblOrientation = (1 << 9) + 1,
71 DepthPass = (1 << 12) + 4,
72 OrthoShadowPass = (1 << 13) + 5,
73 CubeShadowPass = (1 << 14) + 6,
74 LinearTonemapping = (1 << 15) + 7,
75 AcesTonemapping = (1 << 16) + 8,
76 HejlDawsonTonemapping = (1 << 17) + 9,
77 FilmicTonemapping = (1 << 18) + 10,
78 RGBELightProbe = (1 << 19) + 11,
79 OpaqueDepthPrePass = (1 << 20) + 12,
80 ReflectionProbe = (1 << 21) + 13,
81 ReduceMaxNumLights = (1 << 22) + 14,
82 Lightmap = (1 << 23) + 15,
88static constexpr quint32 Count = (
static_cast<FlagType>(Feature::LastFeature) & IndexMask);
95void set(Feature feature,
bool val);
103 set(Feature::LinearTonemapping,
false);
104 set(Feature::AcesTonemapping,
false);
105 set(Feature::FilmicTonemapping,
false);
106 set(Feature::HejlDawsonTonemapping,
false);
112 for (
quint32 idx = 0; idx < Count; ++idx) {
113 const Feature feature = fromIndex(idx);
114 if (features.
isSet(feature))
115 enabledFeatureStrings.
append(asDefineString(feature));
117 stream.nospace() <<
"QSSGShaderFeatures(";
118 for (
int i = 0;
i < enabledFeatureStrings.
size(); ++
i)
119 stream.nospace() << (
i > 0 ?
", " :
"") << enabledFeatureStrings[
i];
157 return key.m_hashCode;
178 QString m_persistentShaderStorageFileName;
190 void releaseCachedResources();
200 QSSGRhiShaderPipeline::StageFlags stageFlags = {});
206 QSSGRhiShaderPipeline::StageFlags stageFlags = {});
212 QSSGRhiShaderPipeline::StageFlags stageFlags);
QQsbInMemoryCollection & persistentShaderBakingCache()
void(*)(QShaderBaker *baker, QRhi *rhi) InitBakerFunc
Stage
Describes the stage of the graphics pipeline the shader is suitable for.
\macro QT_RESTRICTED_CAST_FROM_ASCII
constexpr size_type size() const noexcept
Combined button and popup list for selecting options.
Q_QUICK3DRUNTIMERENDER_EXPORT void setStatusCallback(StatusCallback cb)
void(*)(const QByteArray &descKey, Status status, const QString &err, QShader::Stage stage) StatusCallback
Q_QUICK3DRUNTIMERENDER_EXPORT void setAutomaticDiskCache(bool enable)
Q_QUICK3DRUNTIMERENDER_EXPORT bool isAutomaticDiskCacheEnabled()
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
Q_QUICK3DRUNTIMERENDER_EXPORT size_t qHash(QSSGShaderFeatures features) noexcept
std::shared_ptr< QSSGRhiShaderPipeline > QSSGRhiShaderPipelinePtr
SSL_CTX int(* cb)(SSL *ssl, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
QFuture< QSet< QChar > > set
[10]
static size_t generateHashCode(const QByteArray &key, QSSGShaderFeatures features)
QSSGShaderCacheKey & operator=(const QSSGShaderCacheKey &other)=default
bool operator==(const QSSGShaderCacheKey &inOther) const
QSSGShaderCacheKey(const QSSGShaderCacheKey &other)=default
QSSGShaderCacheKey(const QByteArray &key=QByteArray())
QSSGShaderFeatures m_features
constexpr bool isSet(Feature feature) const
friend QDebug operator<<(QDebug stream, const QSSGShaderFeatures &features)
friend bool operator==(QSSGShaderFeatures a, QSSGShaderFeatures b)
constexpr bool isNull() const
void disableTonemapping()
\qmltype MapCircle \instantiates QDeclarativeCircleMapItem \inqmlmodule QtLocation