5#ifndef QSSGSHADERMAPKEY_P_H
6#define QSSGSHADERMAPKEY_P_H
19#include <QtQuick3DRuntimeRender/private/qtquick3druntimerenderglobal_p.h>
20#include <QtQuick3DRuntimeRender/private/qssgrendershaderkeys_p.h>
21#include <QtQuick3DRuntimeRender/private/qssgrendershadercache_p.h>
35 if (m_materialKeyOrig) {
36 m_materialKeyCopy = *m_materialKeyOrig;
37 m_materialKeyOrig =
nullptr;
42 const QSSGShaderFeatures &inFeatures,
43 const QSSGShaderDefaultMaterialKey &inMaterialKey)
46 m_hashCode = qHash(m_name) ^ qHash(m_featuresOrig) ^ qHash(m_materialKeyOrig->hash());
50inline bool operator==(
const QSSGShaderMapKey &a,
const QSSGShaderMapKey &b) Q_DECL_NOTHROW
52 if (a.m_name != b.m_name)
55 const QSSGShaderDefaultMaterialKey *keyA = a.m_materialKeyOrig ? a.m_materialKeyOrig : &a.m_materialKeyCopy;
56 const QSSGShaderDefaultMaterialKey *keyB = b.m_materialKeyOrig ? b.m_materialKeyOrig : &b.m_materialKeyCopy;
57 if (!(*keyA == *keyB))
60 return (a.m_featuresOrig == b.m_featuresOrig);
63inline size_t qHash(
const QSSGShaderMapKey &key, size_t seed)
65 return key.m_hashCode ^ seed;
friend class QSSGRenderContextInterface
static void cleanupResourcesImpl(const QSSGRenderContextInterface &rci, const Container &resources)
static void dfs(const QSSGRenderNode &node, RenderableList &renderables)
static QByteArray logPrefix()
QSSGShaderDefaultMaterialKey m_materialKeyCopy
const QSSGShaderFeatures m_featuresOrig
const QSSGShaderDefaultMaterialKey * m_materialKeyOrig
QSSGShaderMapKey(const QByteArray &inName, const QSSGShaderFeatures &inFeatures, const QSSGShaderDefaultMaterialKey &inMaterialKey)