37 void finalizeShaders(
const QSSGRenderLayer &layer, QSSGRenderContextInterface *renderContext);
39 enum class Flags : quint8
43 using FlagT = std::underlying_type_t<Flags>;
45 struct TextureProperty
47 QSSGRenderImage *texImage =
nullptr;
49 QSSGRenderShaderValue::Type shaderDataType;
50 QSSGRenderTextureFilterOp minFilterType = QSSGRenderTextureFilterOp::Linear;
51 QSSGRenderTextureFilterOp magFilterType = QSSGRenderTextureFilterOp::Linear;
52 QSSGRenderTextureFilterOp mipFilterType = QSSGRenderTextureFilterOp::Linear;
53 QSSGRenderTextureCoordOp horizontalClampType = QSSGRenderTextureCoordOp::ClampToEdge;
54 QSSGRenderTextureCoordOp verticalClampType = QSSGRenderTextureCoordOp::ClampToEdge;
55 QSSGRenderTextureCoordOp zClampType = QSSGRenderTextureCoordOp::ClampToEdge;
56 QSSGRenderTextureTypeValue usageType;
59 QVector<TextureProperty> textureProperties;
64 Property(
const QByteArray &name,
const QByteArray &typeName,
const QVariant &value, QSSGRenderShaderValue::Type shaderDataType,
int pid = -1)
65 : name(name), typeName(typeName), value(value), shaderDataType(shaderDataType), pid(pid)
69 mutable QVariant value;
70 QSSGRenderShaderValue::Type shaderDataType;
74 QVector<Property> properties;
76 QSSGRenderEffect *m_nextEffect =
nullptr;
80 [[nodiscard]]
inline bool isDirty()
const {
return ((flags & FlagT(Flags::Dirty)) != 0); }
86 QVector<Command> commands;
90 const char *className =
nullptr;
91 FlagT flags = FlagT(Flags::Dirty);
92 bool requiresDepthTexture =
false;
93 bool incompleteBuildTimeObject =
false;
94 QSSGRenderTextureFormat::Format outputFormat = QSSGRenderTextureFormat::Unknown;
96 struct ShaderPrepPassData
98 QByteArray shaderPathKeyPrefix;
99 QByteArray vertexShaderCode[2];
100 QByteArray fragmentShaderCode[2];
101 QSSGCustomShaderMetaData vertexMetaData[2];
102 QSSGCustomShaderMetaData fragmentMetaData[2];
103 int bindShaderCmdIndex = 0;
108 QVector<ShaderPrepPassData> passes;
111 QString debugObjectName;