39 void finalizeShaders(
const QSSGRenderLayer &layer, QSSGRenderContextInterface *renderContext);
41 enum class Flags : quint8
44 UsesDepthTexture = 0x2u,
45 UsesProjectionMatrix = 0x4u,
46 UsesInverseProjectionMatrix = 0x8u,
47 UsesViewMatrix = 0x10u,
48 UsesNormalTexture = 0x20u,
49 UsesMotionVectorTexture = 0x40u
51 using FlagT = std::underlying_type_t<Flags>;
53 struct TextureProperty
55 QSSGRenderImage *texImage =
nullptr;
57 QSSGRenderShaderValue::Type shaderDataType;
58 QSSGRenderTextureFilterOp minFilterType = QSSGRenderTextureFilterOp::Linear;
59 QSSGRenderTextureFilterOp magFilterType = QSSGRenderTextureFilterOp::Linear;
60 QSSGRenderTextureFilterOp mipFilterType = QSSGRenderTextureFilterOp::Linear;
61 QSSGRenderTextureCoordOp horizontalClampType = QSSGRenderTextureCoordOp::ClampToEdge;
62 QSSGRenderTextureCoordOp verticalClampType = QSSGRenderTextureCoordOp::ClampToEdge;
63 QSSGRenderTextureCoordOp zClampType = QSSGRenderTextureCoordOp::ClampToEdge;
64 QSSGRenderTextureTypeValue usageType;
67 QVector<TextureProperty> textureProperties;
68 using Property = QSSGBaseTypeProperty;
69 using PropertyUniformsList = QList<Property>;
71 PropertyUniformsList properties;
73 QSSGRenderEffect *m_nextEffect =
nullptr;
75 void markDirty() { setFlag(QSSGRenderEffect::Flags::Dirty); }
76 void clearDirty() { setFlag(QSSGRenderEffect::Flags::Dirty,
false); }
77 [[nodiscard]]
bool isDirty()
const {
return testFlag(QSSGRenderEffect::Flags::Dirty); }
79 void setFlag(QSSGRenderEffect::Flags flag,
bool enabled =
true);
80 [[nodiscard]]
bool testFlag(QSSGRenderEffect::Flags flag)
const {
return (flags & FlagT(flag)) != 0; }
82 QVector<QSSGCommand *> commands;
86 const char *className =
nullptr;
87 FlagT flags = FlagT(Flags::Dirty);
88 bool incompleteBuildTimeObject =
false;
89 QSSGRenderTextureFormat::Format outputFormat = QSSGRenderTextureFormat::Unknown;
91 struct ShaderPrepPassData
93 QByteArray shaderPathKeyPrefix;
94 QByteArray vertexShaderCode[2];
95 QByteArray fragmentShaderCode[2];
96 QSSGCustomShaderMetaData vertexMetaData[2];
97 QSSGCustomShaderMetaData fragmentMetaData[2];
98 int bindShaderCmdIndex = 0;
103 QVector<ShaderPrepPassData> passes;
106 QString debugObjectName;