#ifndef MATERIALTECHSET_H #define MATERIALTECHSET_H #include "xd3dresource.h" #include "materialpixelshader.h" #include "QString" #include "qobject.h" struct MaterialStreamRouting { quint8 source; quint8 dest; }; struct D3DVertexDeclaration : D3DResource { }; struct MaterialVertexStreamRouting { MaterialStreamRouting data[16]; D3DVertexDeclaration decl[15]; }; struct MaterialVertexDeclaration { int streamCount; bool hasOptionalSource; MaterialVertexStreamRouting routing; }; struct D3DVertexShader : D3DResource { }; struct GfxVertexShaderLoadDef { qint32 cachedPartPtr; QVector cachedPart; qint32 physicalPartPtr; QVector physicalPart; int cachedPartSize; int physicalPartSize; }; struct MaterialVertexShaderProgram { std::shared_ptr vertexShader; GfxVertexShaderLoadDef loadDef; }; struct MaterialVertexShader { QString name; MaterialVertexShaderProgram prog; }; struct MaterialArgumentCodeConst { int index; int firstRow; int rowCount; }; struct MaterialArgumentDef { const float *literalConst; MaterialArgumentCodeConst codeConst; unsigned int codeSampler; unsigned int nameHash; }; struct MaterialShaderArgument { int type; int dest; MaterialArgumentDef u; }; struct MaterialPass { std::shared_ptr vertexDecl; QVector> vertexShaderArray; std::shared_ptr vertexShader; std::shared_ptr pixelShader; int perPrimArgCount; int perObjArgCount; int stableArgCount; int customSamplerFlags; int precompiledIndex; std::shared_ptr args; }; struct MaterialTechnique { QString *name; int flags; int passCount; QVector> passArray; }; struct MaterialTechSet { QString name; int worldVertFormat; qint32 remappedPtr; std::shared_ptr remappedTechniqueSet; QVector techPtrs; QVector> techniques; }; #endif // MATERIALTECHSET_H