Technique Set Asset: Difference between revisions

From COD Engine Research
 
No edit summary
Line 68: Line 68:
};
};


#ifdef COD4
#ifdef PS3
#define MAX_TECHNIQUES 26
#ifdef COD4
#elif defined WAW
  #define MAX_TECHNIQUES 26
#define MAX_TECHNIQUES 51
#elif defined WAW
#elif defined MW2
  #define MAX_TECHNIQUES 51
#define MAX_TECHNIQUES 37
#elif defined MW2
#elif defined BO1
  #define MAX_TECHNIQUES 37
#define MAX_TECHNIQUES 71
#elif defined BO1
#elif defined MW3
  #define MAX_TECHNIQUES 71
#define MAX_TECHNIQUES 41
#elif defined MW3
#elif defined BO2
  #define MAX_TECHNIQUES 41
#define MAX_TECHNIQUES 32
#elif defined BO2
#elif defined GHOSTS
  #define MAX_TECHNIQUES 32
  #define MAX_TECHNIQUES 39
#elif defined GHOSTS
  #define MAX_TECHNIQUES 39
#endif
#endif
 
#ifdef XBOX360
  #ifdef COD4
  #define MAX_TECHNIQUES 26
#elif defined MW2
  #define MAX_TECHNIQUES 33
#elif defined MW3
  #define MAX_TECHNIQUES 37
#endif
#endif
 
#ifdef PC
#ifdef COD4
  #define MAX_TECHNIQUES 34
#elif defined MW2
  #define MAX_TECHNIQUES 48
#elif defined BO1
  #define MAX_TECHNIQUES 130
#elif defined MW3
  #define MAX_TECHNIQUES 54
#elif defined BO2
  #define MAX_TECHNIQUES 36
#endif
#endif
#endif



Revision as of 22:38, 30 January 2014

struct MaterialArgumentCodeConst 
{
	unsigned __int16 index;
	char firstRow;
	char rowCount;
};

union MaterialArgumentDef 
{
	const float *literalConst;
	MaterialArgumentCodeConst codeConst;
	unsigned int codeSampler;
	unsigned int nameHash;
};

struct MaterialShaderArgument
{
	unsigned __int16 type;
	unsigned __int16 dest;
	MaterialArgumentDef u;
};

struct MaterialVertexDeclaration
{
#ifdef COD4 || WAW || BO1 || BO2
	char unknown[0x22];
#elif defined MW2 || MW3
	char unknown[0x1C];
#elif defined GHOSTS
	char unknown[0x20];
#endif
};

#pragma pack(push, 4)
struct MaterialPass 
{
	MaterialVertexDeclaration *vertexDecl;
	MaterialVertexShader *vertexShader;
	MaterialPixelShader *pixelShader;
	char perPrimArgCount;
	char perObjArgCount;
	char stableArgCount;
	char customSamplerFlags;
	char precompiledIndex;
#ifdef BO2
	char unknown[0x13];
#endif
	MaterialShaderArgument *args;
};
#pragma pack(pop)

struct MaterialTechnique 
{
	const char *name;
	unsigned __int16 flags;
	unsigned __int16 passCount;
	MaterialPass passArray[1];	// count = passCount
};

#ifdef PS3
 #ifdef COD4
  #define MAX_TECHNIQUES 26
 #elif defined WAW
  #define MAX_TECHNIQUES 51
 #elif defined MW2
  #define MAX_TECHNIQUES 37
 #elif defined BO1
  #define MAX_TECHNIQUES 71
 #elif defined MW3
  #define MAX_TECHNIQUES 41
 #elif defined BO2
  #define MAX_TECHNIQUES 32
 #elif defined GHOSTS
  #define MAX_TECHNIQUES 39
 #endif
#endif

#ifdef XBOX360
 #ifdef COD4
  #define MAX_TECHNIQUES 26
 #elif defined MW2
  #define MAX_TECHNIQUES 33
 #elif defined MW3
  #define MAX_TECHNIQUES 37
 #endif
#endif

#ifdef PC
 #ifdef COD4
  #define MAX_TECHNIQUES 34
 #elif defined MW2
  #define MAX_TECHNIQUES 48
 #elif defined BO1
  #define MAX_TECHNIQUES 130
 #elif defined MW3
  #define MAX_TECHNIQUES 54
 #elif defined BO2
  #define MAX_TECHNIQUES 36
 #endif
#endif

struct MaterialTechniqueSet 
{
	char *name;
	char worldVertFormat;
	MaterialTechnique *techniques[MAX_TECHNIQUES];
};