71 void registerInput(QSSGShaderGeneratorStage stage,
const QByteArray &type,
const QByteArray &name,
bool flat =
false)
73 auto it = m_inOutVars.find(name);
74 if (it != m_inOutVars.end()) {
75 it->stagesInputIn |= stage;
78 InOutVar var { {}, stage, type, name, m_nextFreeInLocation[
int(stage)]++,
false, flat };
79 m_inOutVars.insert(name, var);
82 void registerOutput(QSSGShaderGeneratorStage stage,
const QByteArray &type,
const QByteArray &name,
bool flat =
false)
84 auto it = m_inOutVars.find(name);
85 if (it != m_inOutVars.end()) {
86 it->stageOutputFrom |= stage;
89 InOutVar var { stage, {}, type, name, m_nextFreeOutLocation[
int(stage)]++,
true, flat };
90 m_inOutVars.insert(name, var);
93 void registerSampler(
const QByteArray &type,
94 const QByteArray &name,
95 QSSGRenderShaderMetadata::Uniform::Condition conditionType = QSSGRenderShaderMetadata::Uniform::None,
96 const QByteArray &conditionName = QByteArray())
98 if (m_samplers.contains(name))
100 Sampler var { type, name, conditionType, conditionName, m_nextFreeResourceBinding++ };
101 m_samplers.insert(name, var);
104 void registerUniformMember(
const QByteArray &type,
105 const QByteArray &name,
106 QSSGRenderShaderMetadata::Uniform::Condition conditionType = QSSGRenderShaderMetadata::Uniform::None,
107 const QByteArray &conditionName = QByteArray())
109 auto it = m_uniformMembers.constFind(name);
110 if (it != m_uniformMembers.constEnd()) {
111 if (it->conditionType != conditionType) {
112 qWarning(
"Encountered uniform %s with different conditions, this is not supported.",
117 BlockMember var { type, name, conditionType, conditionName };
118 m_uniformMembers.insert(name, var);