diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/public/optimize.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/public/optimize.h')
| -rw-r--r-- | sp/src/public/optimize.h | 514 |
1 files changed, 257 insertions, 257 deletions
diff --git a/sp/src/public/optimize.h b/sp/src/public/optimize.h index b71dc895..4a14bf31 100644 --- a/sp/src/public/optimize.h +++ b/sp/src/public/optimize.h @@ -1,257 +1,257 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#ifndef OPTIMIZE_H
-#define OPTIMIZE_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "studio.h"
-
-
-// NOTE: You can change this without affecting the vtx file format.
-#define MAX_NUM_BONES_PER_TRI ( MAX_NUM_BONES_PER_VERT * 3 )
-#define MAX_NUM_BONES_PER_STRIP 512
-
-#define OPTIMIZED_MODEL_FILE_VERSION 7
-
-extern bool g_bDumpGLViewFiles;
-
-struct s_bodypart_t;
-
-namespace OptimizedModel
-{
-
-#pragma pack(1)
-
-struct BoneStateChangeHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- int hardwareID;
- int newBoneID;
-};
-
-struct Vertex_t
-{
- DECLARE_BYTESWAP_DATADESC();
- // these index into the mesh's vert[origMeshVertID]'s bones
- unsigned char boneWeightIndex[MAX_NUM_BONES_PER_VERT];
- unsigned char numBones;
-
- unsigned short origMeshVertID;
-
- // for sw skinned verts, these are indices into the global list of bones
- // for hw skinned verts, these are hardware bone indices
- char boneID[MAX_NUM_BONES_PER_VERT];
-};
-
-enum StripHeaderFlags_t {
- STRIP_IS_TRILIST = 0x01,
- STRIP_IS_TRISTRIP = 0x02
-};
-
-// a strip is a piece of a stripgroup that is divided by bones
-// (and potentially tristrips if we remove some degenerates.)
-struct StripHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- // indexOffset offsets into the mesh's index array.
- int numIndices;
- int indexOffset;
-
- // vertexOffset offsets into the mesh's vert array.
- int numVerts;
- int vertOffset;
-
- // use this to enable/disable skinning.
- // May decide (in optimize.cpp) to put all with 1 bone in a different strip
- // than those that need skinning.
- short numBones;
-
- unsigned char flags;
-
- int numBoneStateChanges;
- int boneStateChangeOffset;
- inline BoneStateChangeHeader_t *pBoneStateChange( int i ) const
- {
- return (BoneStateChangeHeader_t *)(((byte *)this) + boneStateChangeOffset) + i;
- };
-};
-
-enum StripGroupFlags_t
-{
- STRIPGROUP_IS_FLEXED = 0x01,
- STRIPGROUP_IS_HWSKINNED = 0x02,
- STRIPGROUP_IS_DELTA_FLEXED = 0x04,
- STRIPGROUP_SUPPRESS_HW_MORPH = 0x08, // NOTE: This is a temporary flag used at run time.
-};
-
-// a locking group
-// a single vertex buffer
-// a single index buffer
-struct StripGroupHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- // These are the arrays of all verts and indices for this mesh. strips index into this.
- int numVerts;
- int vertOffset;
- inline Vertex_t *pVertex( int i ) const
- {
- return (Vertex_t *)(((byte *)this) + vertOffset) + i;
- };
-
- int numIndices;
- int indexOffset;
- inline unsigned short *pIndex( int i ) const
- {
- return (unsigned short *)(((byte *)this) + indexOffset) + i;
- };
-
- int numStrips;
- int stripOffset;
- inline StripHeader_t *pStrip( int i ) const
- {
- return (StripHeader_t *)(((byte *)this) + stripOffset) + i;
- };
-
- unsigned char flags;
-};
-
-enum MeshFlags_t {
- // these are both material properties, and a mesh has a single material.
- MESH_IS_TEETH = 0x01,
- MESH_IS_EYES = 0x02
-};
-
-// a collection of locking groups:
-// up to 4:
-// non-flexed, hardware skinned
-// flexed, hardware skinned
-// non-flexed, software skinned
-// flexed, software skinned
-//
-// A mesh has a material associated with it.
-struct MeshHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- int numStripGroups;
- int stripGroupHeaderOffset;
- inline StripGroupHeader_t *pStripGroup( int i ) const
- {
- StripGroupHeader_t *pDebug = (StripGroupHeader_t *)(((byte *)this) + stripGroupHeaderOffset) + i;
- return pDebug;
- };
- unsigned char flags;
-};
-
-struct ModelLODHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- int numMeshes;
- int meshOffset;
- float switchPoint;
- inline MeshHeader_t *pMesh( int i ) const
- {
- MeshHeader_t *pDebug = (MeshHeader_t *)(((byte *)this) + meshOffset) + i;
- return pDebug;
- };
-};
-
-// This maps one to one with models in the mdl file.
-// There are a bunch of model LODs stored inside potentially due to the qc $lod command
-struct ModelHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- int numLODs; // garymcthack - this is also specified in FileHeader_t
- int lodOffset;
- inline ModelLODHeader_t *pLOD( int i ) const
- {
- ModelLODHeader_t *pDebug = ( ModelLODHeader_t *)(((byte *)this) + lodOffset) + i;
- return pDebug;
- };
-};
-
-struct BodyPartHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- int numModels;
- int modelOffset;
- inline ModelHeader_t *pModel( int i ) const
- {
- ModelHeader_t *pDebug = (ModelHeader_t *)(((byte *)this) + modelOffset) + i;
- return pDebug;
- };
-};
-
-struct MaterialReplacementHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- short materialID;
- int replacementMaterialNameOffset;
- inline const char *pMaterialReplacementName( void )
- {
- const char *pDebug = (const char *)(((byte *)this) + replacementMaterialNameOffset);
- return pDebug;
- }
-};
-
-struct MaterialReplacementListHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- int numReplacements;
- int replacementOffset;
- inline MaterialReplacementHeader_t *pMaterialReplacement( int i ) const
- {
- MaterialReplacementHeader_t *pDebug = ( MaterialReplacementHeader_t *)(((byte *)this) + replacementOffset) + i;
- return pDebug;
- }
-};
-
-struct FileHeader_t
-{
- DECLARE_BYTESWAP_DATADESC();
- // file version as defined by OPTIMIZED_MODEL_FILE_VERSION
- int version;
-
- // hardware params that affect how the model is to be optimized.
- int vertCacheSize;
- unsigned short maxBonesPerStrip;
- unsigned short maxBonesPerTri;
- int maxBonesPerVert;
-
- // must match checkSum in the .mdl
- int checkSum;
-
- int numLODs; // garymcthack - this is also specified in ModelHeader_t and should match
-
- // one of these for each LOD
- int materialReplacementListOffset;
- MaterialReplacementListHeader_t *pMaterialReplacementList( int lodID ) const
- {
- MaterialReplacementListHeader_t *pDebug =
- (MaterialReplacementListHeader_t *)(((byte *)this) + materialReplacementListOffset) + lodID;
- return pDebug;
- }
-
- int numBodyParts;
- int bodyPartOffset;
- inline BodyPartHeader_t *pBodyPart( int i ) const
- {
- BodyPartHeader_t *pDebug = (BodyPartHeader_t *)(((byte *)this) + bodyPartOffset) + i;
- return pDebug;
- };
-};
-
-#pragma pack()
-
-void WriteOptimizedFiles( studiohdr_t *phdr, s_bodypart_t *pSrcBodyParts );
-
-}; // namespace OptimizedModel
-
-#endif // OPTIMIZE_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef OPTIMIZE_H +#define OPTIMIZE_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "studio.h" + + +// NOTE: You can change this without affecting the vtx file format. +#define MAX_NUM_BONES_PER_TRI ( MAX_NUM_BONES_PER_VERT * 3 ) +#define MAX_NUM_BONES_PER_STRIP 512 + +#define OPTIMIZED_MODEL_FILE_VERSION 7 + +extern bool g_bDumpGLViewFiles; + +struct s_bodypart_t; + +namespace OptimizedModel +{ + +#pragma pack(1) + +struct BoneStateChangeHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + int hardwareID; + int newBoneID; +}; + +struct Vertex_t +{ + DECLARE_BYTESWAP_DATADESC(); + // these index into the mesh's vert[origMeshVertID]'s bones + unsigned char boneWeightIndex[MAX_NUM_BONES_PER_VERT]; + unsigned char numBones; + + unsigned short origMeshVertID; + + // for sw skinned verts, these are indices into the global list of bones + // for hw skinned verts, these are hardware bone indices + char boneID[MAX_NUM_BONES_PER_VERT]; +}; + +enum StripHeaderFlags_t { + STRIP_IS_TRILIST = 0x01, + STRIP_IS_TRISTRIP = 0x02 +}; + +// a strip is a piece of a stripgroup that is divided by bones +// (and potentially tristrips if we remove some degenerates.) +struct StripHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + // indexOffset offsets into the mesh's index array. + int numIndices; + int indexOffset; + + // vertexOffset offsets into the mesh's vert array. + int numVerts; + int vertOffset; + + // use this to enable/disable skinning. + // May decide (in optimize.cpp) to put all with 1 bone in a different strip + // than those that need skinning. + short numBones; + + unsigned char flags; + + int numBoneStateChanges; + int boneStateChangeOffset; + inline BoneStateChangeHeader_t *pBoneStateChange( int i ) const + { + return (BoneStateChangeHeader_t *)(((byte *)this) + boneStateChangeOffset) + i; + }; +}; + +enum StripGroupFlags_t +{ + STRIPGROUP_IS_FLEXED = 0x01, + STRIPGROUP_IS_HWSKINNED = 0x02, + STRIPGROUP_IS_DELTA_FLEXED = 0x04, + STRIPGROUP_SUPPRESS_HW_MORPH = 0x08, // NOTE: This is a temporary flag used at run time. +}; + +// a locking group +// a single vertex buffer +// a single index buffer +struct StripGroupHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + // These are the arrays of all verts and indices for this mesh. strips index into this. + int numVerts; + int vertOffset; + inline Vertex_t *pVertex( int i ) const + { + return (Vertex_t *)(((byte *)this) + vertOffset) + i; + }; + + int numIndices; + int indexOffset; + inline unsigned short *pIndex( int i ) const + { + return (unsigned short *)(((byte *)this) + indexOffset) + i; + }; + + int numStrips; + int stripOffset; + inline StripHeader_t *pStrip( int i ) const + { + return (StripHeader_t *)(((byte *)this) + stripOffset) + i; + }; + + unsigned char flags; +}; + +enum MeshFlags_t { + // these are both material properties, and a mesh has a single material. + MESH_IS_TEETH = 0x01, + MESH_IS_EYES = 0x02 +}; + +// a collection of locking groups: +// up to 4: +// non-flexed, hardware skinned +// flexed, hardware skinned +// non-flexed, software skinned +// flexed, software skinned +// +// A mesh has a material associated with it. +struct MeshHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + int numStripGroups; + int stripGroupHeaderOffset; + inline StripGroupHeader_t *pStripGroup( int i ) const + { + StripGroupHeader_t *pDebug = (StripGroupHeader_t *)(((byte *)this) + stripGroupHeaderOffset) + i; + return pDebug; + }; + unsigned char flags; +}; + +struct ModelLODHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + int numMeshes; + int meshOffset; + float switchPoint; + inline MeshHeader_t *pMesh( int i ) const + { + MeshHeader_t *pDebug = (MeshHeader_t *)(((byte *)this) + meshOffset) + i; + return pDebug; + }; +}; + +// This maps one to one with models in the mdl file. +// There are a bunch of model LODs stored inside potentially due to the qc $lod command +struct ModelHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + int numLODs; // garymcthack - this is also specified in FileHeader_t + int lodOffset; + inline ModelLODHeader_t *pLOD( int i ) const + { + ModelLODHeader_t *pDebug = ( ModelLODHeader_t *)(((byte *)this) + lodOffset) + i; + return pDebug; + }; +}; + +struct BodyPartHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + int numModels; + int modelOffset; + inline ModelHeader_t *pModel( int i ) const + { + ModelHeader_t *pDebug = (ModelHeader_t *)(((byte *)this) + modelOffset) + i; + return pDebug; + }; +}; + +struct MaterialReplacementHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + short materialID; + int replacementMaterialNameOffset; + inline const char *pMaterialReplacementName( void ) + { + const char *pDebug = (const char *)(((byte *)this) + replacementMaterialNameOffset); + return pDebug; + } +}; + +struct MaterialReplacementListHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + int numReplacements; + int replacementOffset; + inline MaterialReplacementHeader_t *pMaterialReplacement( int i ) const + { + MaterialReplacementHeader_t *pDebug = ( MaterialReplacementHeader_t *)(((byte *)this) + replacementOffset) + i; + return pDebug; + } +}; + +struct FileHeader_t +{ + DECLARE_BYTESWAP_DATADESC(); + // file version as defined by OPTIMIZED_MODEL_FILE_VERSION + int version; + + // hardware params that affect how the model is to be optimized. + int vertCacheSize; + unsigned short maxBonesPerStrip; + unsigned short maxBonesPerTri; + int maxBonesPerVert; + + // must match checkSum in the .mdl + int checkSum; + + int numLODs; // garymcthack - this is also specified in ModelHeader_t and should match + + // one of these for each LOD + int materialReplacementListOffset; + MaterialReplacementListHeader_t *pMaterialReplacementList( int lodID ) const + { + MaterialReplacementListHeader_t *pDebug = + (MaterialReplacementListHeader_t *)(((byte *)this) + materialReplacementListOffset) + lodID; + return pDebug; + } + + int numBodyParts; + int bodyPartOffset; + inline BodyPartHeader_t *pBodyPart( int i ) const + { + BodyPartHeader_t *pDebug = (BodyPartHeader_t *)(((byte *)this) + bodyPartOffset) + i; + return pDebug; + }; +}; + +#pragma pack() + +void WriteOptimizedFiles( studiohdr_t *phdr, s_bodypart_t *pSrcBodyParts ); + +}; // namespace OptimizedModel + +#endif // OPTIMIZE_H |