00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef VTF_H
00017 #define VTF_H
00018
00019 #include "il_internal.h"
00020
00021 #ifdef _MSC_VER
00022 #pragma pack(push, vtf_struct, 1)
00023 #elif defined(MACOSX) || defined(__GNUC__)
00024 #pragma pack(1)
00025 #endif
00026
00027 typedef struct VTFHEAD
00028 {
00029 ILubyte Signature[4];
00030 ILuint Version[2];
00031 ILuint HeaderSize;
00032 ILushort Width;
00033 ILushort Height;
00034 ILuint Flags;
00035 ILushort Frames;
00036 ILushort FirstFrame;
00037 ILubyte Padding0[4];
00038 ILfloat Reflectivity[3];
00039 ILubyte Padding1[4];
00040 ILfloat BumpmapScale;
00041 ILuint HighResImageFormat;
00042 ILubyte MipmapCount;
00043 ILuint LowResImageFormat;
00044 ILubyte LowResImageWidth;
00045 ILubyte LowResImageHeight;
00046 ILushort Depth;
00047
00048 } IL_PACKSTRUCT VTFHEAD;
00049
00050 #if defined(MACOSX) || defined(__GNUC__)
00051 #pragma pack()
00052 #elif _MSC_VER
00053 #pragma pack(pop, vtf_struct)
00054 #endif
00055
00056 enum
00057 {
00058 IMAGE_FORMAT_NONE = -1,
00059 IMAGE_FORMAT_RGBA8888 = 0,
00060 IMAGE_FORMAT_ABGR8888,
00061 IMAGE_FORMAT_RGB888,
00062 IMAGE_FORMAT_BGR888,
00063 IMAGE_FORMAT_RGB565,
00064 IMAGE_FORMAT_I8,
00065 IMAGE_FORMAT_IA88,
00066 IMAGE_FORMAT_P8,
00067 IMAGE_FORMAT_A8,
00068 IMAGE_FORMAT_RGB888_BLUESCREEN,
00069 IMAGE_FORMAT_BGR888_BLUESCREEN,
00070 IMAGE_FORMAT_ARGB8888,
00071 IMAGE_FORMAT_BGRA8888,
00072 IMAGE_FORMAT_DXT1,
00073 IMAGE_FORMAT_DXT3,
00074 IMAGE_FORMAT_DXT5,
00075 IMAGE_FORMAT_BGRX8888,
00076 IMAGE_FORMAT_BGR565,
00077 IMAGE_FORMAT_BGRX5551,
00078 IMAGE_FORMAT_BGRA4444,
00079 IMAGE_FORMAT_DXT1_ONEBITALPHA,
00080 IMAGE_FORMAT_BGRA5551,
00081 IMAGE_FORMAT_UV88,
00082 IMAGE_FORMAT_UVWQ8888,
00083 IMAGE_FORMAT_RGBA16161616F,
00084 IMAGE_FORMAT_RGBA16161616,
00085 IMAGE_FORMAT_UVLX8888
00086 };
00087
00088 enum
00089 {
00090 TEXTUREFLAGS_POINTSAMPLE = 0x00000001,
00091 TEXTUREFLAGS_TRILINEAR = 0x00000002,
00092 TEXTUREFLAGS_CLAMPS = 0x00000004,
00093 TEXTUREFLAGS_CLAMPT = 0x00000008,
00094 TEXTUREFLAGS_ANISOTROPIC = 0x00000010,
00095 TEXTUREFLAGS_HINT_DXT5 = 0x00000020,
00096 TEXTUREFLAGS_NOCOMPRESS = 0x00000040,
00097 TEXTUREFLAGS_NORMAL = 0x00000080,
00098 TEXTUREFLAGS_NOMIP = 0x00000100,
00099 TEXTUREFLAGS_NOLOD = 0x00000200,
00100 TEXTUREFLAGS_MINMIP = 0x00000400,
00101 TEXTUREFLAGS_PROCEDURAL = 0x00000800,
00102 TEXTUREFLAGS_ONEBITALPHA = 0x00001000,
00103 TEXTUREFLAGS_EIGHTBITALPHA = 0x00002000,
00104 TEXTUREFLAGS_ENVMAP = 0x00004000,
00105 TEXTUREFLAGS_RENDERTARGET = 0x00008000,
00106 TEXTUREFLAGS_DEPTHRENDERTARGET = 0x00010000,
00107 TEXTUREFLAGS_NODEBUGOVERRIDE = 0x00020000,
00108 TEXTUREFLAGS_SINGLECOPY = 0x00040000,
00109 TEXTUREFLAGS_ONEOVERMIPLEVELINALPHA = 0x00080000,
00110 TEXTUREFLAGS_PREMULTCOLORBYONEOVERMIPLEVEL = 0x00100000,
00111 TEXTUREFLAGS_NORMALTODUDV = 0x00200000,
00112 TEXTUREFLAGS_ALPHATESTMIPGENERATION = 0x00400000,
00113 TEXTUREFLAGS_NODEPTHBUFFER = 0x00800000,
00114 TEXTUREFLAGS_NICEFILTERED = 0x01000000,
00115 TEXTUREFLAGS_CLAMPU = 0x02000000
00116 };
00117
00118
00119
00120
00121 ILboolean iIsValidVtf(void);
00122 ILboolean iGetVtfHead(VTFHEAD *Header);
00123 ILboolean iCheckVtf(VTFHEAD *Header);
00124 ILboolean iLoadVtfInternal(void);
00125 ILboolean VtfInitFacesMipmaps(ILimage *BaseImage, ILuint NumFaces, VTFHEAD *Header);
00126 ILboolean VtfInitMipmaps(ILimage *BaseImage, VTFHEAD *Header);
00127 ILboolean VtfReadData(void);
00128 ILboolean VtfDecompressDXT1(ILimage *Image);
00129 ILboolean VtfDecompressDXT5(ILimage *Image);
00130 ILboolean iSaveVtfInternal(void);
00131
00132 #endif//VTF_H