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;
72 Property(
const QByteArray &name,
const QByteArray &typeName,
const QVariant &value, QSSGRenderShaderValue::Type shaderDataType,
int pid = -1)
73 : name(name), typeName(typeName), value(value), shaderDataType(shaderDataType), pid(pid)
77 mutable QVariant value;
78 QSSGRenderShaderValue::Type shaderDataType;
82 QVector<Property> properties;
84 QSSGRenderEffect *m_nextEffect =
nullptr;
86 void markDirty() { setFlag(QSSGRenderEffect::Flags::Dirty); }
87 void clearDirty() { setFlag(QSSGRenderEffect::Flags::Dirty,
false); }
88 [[nodiscard]]
bool isDirty()
const {
return testFlag(QSSGRenderEffect::Flags::Dirty); }
90 void setFlag(QSSGRenderEffect::Flags flag,
bool enabled =
true);
91 [[nodiscard]]
bool testFlag(QSSGRenderEffect::Flags flag)
const {
return (flags & FlagT(flag)) != 0; }
93 QVector<QSSGCommand *> commands;
97 const char *className =
nullptr;
98 FlagT flags = FlagT(Flags::Dirty);
99 bool incompleteBuildTimeObject =
false;
100 QSSGRenderTextureFormat::Format outputFormat = QSSGRenderTextureFormat::Unknown;
102 struct ShaderPrepPassData
104 QByteArray shaderPathKeyPrefix;
105 QByteArray vertexShaderCode[2];
106 QByteArray fragmentShaderCode[2];
107 QSSGCustomShaderMetaData vertexMetaData[2];
108 QSSGCustomShaderMetaData fragmentMetaData[2];
109 int bindShaderCmdIndex = 0;
114 QVector<ShaderPrepPassData> passes;
117 QString debugObjectName;