7 #ifndef CAFU_HL2_MDL_VTF_TEXTURE_FILE_HPP_INCLUDED
8 #define CAFU_HL2_MDL_VTF_TEXTURE_FILE_HPP_INCLUDED
10 #include "Templates/Array.hpp"
13 #if defined(_WIN32) && _MSC_VER<1600
19 #define HL2_VTF_MAX_RES 32
28 IMAGE_FORMAT_NONE = -1,
29 IMAGE_FORMAT_RGBA8888 = 0,
30 IMAGE_FORMAT_ABGR8888,
38 IMAGE_FORMAT_RGB888_BLUESCREEN,
39 IMAGE_FORMAT_BGR888_BLUESCREEN,
40 IMAGE_FORMAT_ARGB8888,
41 IMAGE_FORMAT_BGRA8888,
45 IMAGE_FORMAT_BGRX8888,
47 IMAGE_FORMAT_BGRX5551,
48 IMAGE_FORMAT_BGRA4444,
49 IMAGE_FORMAT_DXT1_ONEBITALPHA,
50 IMAGE_FORMAT_BGRA5551,
52 IMAGE_FORMAT_UVWQ8888,
53 IMAGE_FORMAT_RGBA16161616F,
54 IMAGE_FORMAT_RGBA16161616,
55 IMAGE_FORMAT_UVLX8888,
57 IMAGE_FORMAT_RGB323232F,
58 IMAGE_FORMAT_RGBA32323232F,
59 IMAGE_FORMAT_NV_DST16,
60 IMAGE_FORMAT_NV_DST24,
63 IMAGE_FORMAT_ATI_DST16,
64 IMAGE_FORMAT_ATI_DST24,
90 typedef void (*TransformProc)(uint16_t& R, uint16_t& G, uint16_t& B, uint16_t& A);
107 vtfImageFormatT Format;
122 bool Convert(uint8_t* lpSource, uint8_t* lpDest, uint32_t Width, uint32_t Height, vtfImageFormatT SourceFormat);
128 TEXTUREFLAGS_POINTSAMPLE = 0x00000001,
129 TEXTUREFLAGS_TRILINEAR = 0x00000002,
130 TEXTUREFLAGS_CLAMPS = 0x00000004,
131 TEXTUREFLAGS_CLAMPT = 0x00000008,
132 TEXTUREFLAGS_ANISOTROPIC = 0x00000010,
133 TEXTUREFLAGS_HINT_DXT5 = 0x00000020,
134 TEXTUREFLAGS_DEPRECATED_NOCOMPRESS = 0x00000040,
135 TEXTUREFLAGS_NORMAL = 0x00000080,
136 TEXTUREFLAGS_NOMIP = 0x00000100,
137 TEXTUREFLAGS_NOLOD = 0x00000200,
138 TEXTUREFLAGS_MINMIP = 0x00000400,
139 TEXTUREFLAGS_PROCEDURAL = 0x00000800,
140 TEXTUREFLAGS_ONEBITALPHA = 0x00001000,
141 TEXTUREFLAGS_EIGHTBITALPHA = 0x00002000,
142 TEXTUREFLAGS_ENVMAP = 0x00004000,
143 TEXTUREFLAGS_RENDERTARGET = 0x00008000,
144 TEXTUREFLAGS_DEPTHRENDERTARGET = 0x00010000,
145 TEXTUREFLAGS_NODEBUGOVERRIDE = 0x00020000,
146 TEXTUREFLAGS_SINGLECOPY = 0x00040000,
147 TEXTUREFLAGS_DEPRECATED_ONEOVERMIPLEVELINALPHA = 0x00080000,
148 TEXTUREFLAGS_DEPRECATED_PREMULTCOLORBYONEOVERMIPLEVEL = 0x00100000,
149 TEXTUREFLAGS_DEPRECATED_NORMALTODUDV = 0x00200000,
150 TEXTUREFLAGS_DEPRECATED_ALPHATESTMIPGENERATION = 0x00400000,
151 TEXTUREFLAGS_NODEPTHBUFFER = 0x00800000,
152 TEXTUREFLAGS_DEPRECATED_NICEFILTERED = 0x01000000,
153 TEXTUREFLAGS_CLAMPU = 0x02000000,
154 TEXTUREFLAGS_VERTEXTEXTURE = 0x04000000,
155 TEXTUREFLAGS_SSBUMP = 0x08000000,
156 TEXTUREFLAGS_DEPRECATED_UNFILTERABLE_OK = 0x10000000,
157 TEXTUREFLAGS_BORDER = 0x20000000,
158 TEXTUREFLAGS_DEPRECATED_SPECVAR_RED = 0x40000000,
159 TEXTUREFLAGS_DEPRECATED_SPECVAR_ALPHA = 0x80000000,
160 TEXTUREFLAGS_LAST = 0x20000000
164 #if defined(_MSC_VER)
165 #pragma pack(push, 1)
167 #elif defined(__GNUG__)
168 #define GCC_PACKED __attribute__ ((packed))
204 float Reflectivity[3];
207 vtfImageFormatT ImageFormat;
209 vtfImageFormatT LowResImageFormat;
210 uint8_t LowResImageWidth;
211 uint8_t LowResImageHeight;
216 return Version[0] * 10 + Version[1];
223 if ((
Flags & TEXTUREFLAGS_ENVMAP) == 0)
239 uint32_t GetNumResources()
const
241 return GetVersion() < 73 ? 0 : m_ResourceCount;
244 const vtfResourceT& GetResource(uint32_t i)
const
246 assert(i < GetNumResources());
247 return m_Resources[i];
256 uint8_t m_Padding2[3];
257 uint32_t m_ResourceCount;
258 uint8_t m_Padding3[8];
261 vtfResourceT m_Resources[HL2_VTF_MAX_RES];
265 #if defined(_MSC_VER)
277 : std::runtime_error(Message)
302 vtfFileT(
const std::string& FileName);
304 const vtfHeaderT* GetHeader()
const {
return m_Header; }
310 uint8_t*
GetData(uint32_t Frame, uint32_t Face, uint32_t Slice, uint32_t MipmapLevel)
const;
315 uint32_t ComputeDataOffset(uint32_t Frame, uint32_t Face, uint32_t Slice, uint32_t MipmapLevel)
const;
319 uint8_t* m_ImageBuffer;
uint32_t Data
Depending on the type, this can be the immediate resource data, e.g.
Definition: Loader_mdl_hl2_vtf.hpp:186
uint8_t Flags
Resource flags.
Definition: Loader_mdl_hl2_vtf.hpp:180
This class represents a VTF image file as documented at https://developer.valvesoftware.com/wiki/VTF.
Definition: Loader_mdl_hl2_vtf.hpp:298
Definition: Loader_mdl_hl2_vtf.hpp:172
uint8_t * GetData(uint32_t Frame, uint32_t Face, uint32_t Slice, uint32_t MipmapLevel) const
Returns a pointer to the image data for a given frame, face, z-slice and MIP level.
Definition: Loader_mdl_hl2_vtf.cpp:1078
A class that is thrown on VTF load errors.
Definition: Loader_mdl_hl2_vtf.hpp:272
uint8_t ID[3]
Resource ID.
Definition: Loader_mdl_hl2_vtf.hpp:179