149#define DDS_FOURCC 0x00000004
150#define DDS_RGB 0x00000040
151#define DDS_RGBA 0x00000041
152#define DDS_LUMINANCE 0x00020000
153#define DDS_LUMINANCEA 0x00020001
154#define DDS_ALPHAPIXELS 0x00000001
155#define DDS_ALPHA 0x00000002
156#define DDS_PAL8 0x00000020
157#define DDS_PAL8A 0x00000021
158#define DDS_BUMPLUMINANCE 0x00040000
159#define DDS_BUMPDUDV 0x00080000
160#define DDS_BUMPDUDVA 0x00080001
163#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
164 (static_cast<uint32_t>(static_cast<uint8_t>(ch0)) | (static_cast<uint32_t>(static_cast<uint8_t>(ch1)) << 8) | \
165 (static_cast<uint32_t>(static_cast<uint8_t>(ch2)) << 16) | \
166 (static_cast<uint32_t>(static_cast<uint8_t>(ch3)) << 24))
170 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'D',
'X',
'T',
'1'), 0, 0, 0, 0, 0};
173 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'D',
'X',
'T',
'2'), 0, 0, 0, 0, 0};
176 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'D',
'X',
'T',
'3'), 0, 0, 0, 0, 0};
179 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'D',
'X',
'T',
'4'), 0, 0, 0, 0, 0};
182 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'D',
'X',
'T',
'5'), 0, 0, 0, 0, 0};
185 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'B',
'C',
'4',
'U'), 0, 0, 0, 0, 0};
188 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'B',
'C',
'4',
'S'), 0, 0, 0, 0, 0};
191 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'B',
'C',
'5',
'U'), 0, 0, 0, 0, 0};
194 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'B',
'C',
'5',
'S'), 0, 0, 0, 0, 0};
197 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'R',
'G',
'B',
'G'), 0, 0, 0, 0, 0};
200 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'G',
'R',
'G',
'B'), 0, 0, 0, 0, 0};
203 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'Y',
'U',
'Y',
'2'), 0, 0, 0, 0, 0};
206 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'U',
'Y',
'V',
'Y'), 0, 0, 0, 0, 0};
279 sizeof(
DDS_PIXELFORMAT),
DDS_FOURCC,
MAKEFOURCC(
'D',
'X',
'1',
'0'), 0, 0, 0, 0, 0};
281#define DDS_HEADER_FLAGS_TEXTURE 0x00001007
282#define DDS_HEADER_FLAGS_MIPMAP 0x00020000
283#define DDS_HEADER_FLAGS_VOLUME 0x00800000
284#define DDS_HEADER_FLAGS_PITCH 0x00000008
285#define DDS_HEADER_FLAGS_LINEARSIZE 0x00080000
287#define DDS_HEIGHT 0x00000002
288#define DDS_WIDTH 0x00000004
290#define DDS_SURFACE_FLAGS_TEXTURE 0x00001000
291#define DDS_SURFACE_FLAGS_MIPMAP 0x00400008
292#define DDS_SURFACE_FLAGS_CUBEMAP 0x00000008
294#define DDS_CUBEMAP_POSITIVEX 0x00000600
295#define DDS_CUBEMAP_NEGATIVEX 0x00000a00
296#define DDS_CUBEMAP_POSITIVEY 0x00001200
297#define DDS_CUBEMAP_NEGATIVEY 0x00002200
298#define DDS_CUBEMAP_POSITIVEZ 0x00004200
299#define DDS_CUBEMAP_NEGATIVEZ 0x00008200
301#define DDS_CUBEMAP_ALLFACES \
302 (DDS_CUBEMAP_POSITIVEX | DDS_CUBEMAP_NEGATIVEX | DDS_CUBEMAP_POSITIVEY | DDS_CUBEMAP_NEGATIVEY | \
303 DDS_CUBEMAP_POSITIVEZ | DDS_CUBEMAP_NEGATIVEZ)
305#define DDS_CUBEMAP 0x00000200
307#define DDS_FLAGS_VOLUME 0x00200000
365static_assert(
sizeof(
DDS_PIXELFORMAT) == 32,
"DDS pixel format size mismatch");
366static_assert(
sizeof(
DDS_HEADER) == 124,
"DDS Header size mismatch");
367static_assert(
sizeof(
DDS_HEADER_DXT10) == 20,
"DDS DX10 Extended Header size mismatch");
379 header.
width = width;
383 header.
depth = depth;
474 case A2B10G10R10Unorm:
477 case R16G16B16A16SignedFloat:
489 case R32G32SignedFloat:
492 case R32G32B32A32SignedFloat:
#define DDS_HEADER_FLAGS_VOLUME
Definition TextureDDS.hpp:283
#define DDS_BUMPDUDV
Definition TextureDDS.hpp:159
constexpr DDS_PIXELFORMAT DDSPF_G8R8_G8B8
Definition TextureDDS.hpp:199
constexpr DDS_PIXELFORMAT DDSPF_A8R8G8B8
Definition TextureDDS.hpp:208
DXGI_FORMAT
Definition TextureDDS.hpp:10
@ DXGI_FORMAT_R32G8X24_TYPELESS
@ DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS
@ DXGI_FORMAT_BC4_TYPELESS
@ DXGI_FORMAT_B8G8R8A8_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_TYPELESS
@ DXGI_FORMAT_BC7_TYPELESS
@ DXGI_FORMAT_BC2_UNORM_SRGB
@ DXGI_FORMAT_BC6H_TYPELESS
@ DXGI_FORMAT_X32_TYPELESS_G8X24_UINT
@ DXGI_FORMAT_R16G16_FLOAT
@ DXGI_FORMAT_BC3_TYPELESS
@ DXGI_FORMAT_B5G5R5A1_UNORM
@ DXGI_FORMAT_R32G32B32_UINT
@ DXGI_FORMAT_BC2_TYPELESS
@ DXGI_FORMAT_R32_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_SINT
@ DXGI_FORMAT_R16G16B16A16_UINT
@ DXGI_FORMAT_R32G32_SINT
@ DXGI_FORMAT_R8_TYPELESS
@ DXGI_FORMAT_R10G10B10A2_UNORM
@ DXGI_FORMAT_R32G32B32_TYPELESS
@ DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
@ DXGI_FORMAT_R24G8_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_FLOAT
@ DXGI_FORMAT_B8G8R8X8_UNORM
@ DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
@ DXGI_FORMAT_R10G10B10A2_TYPELESS
@ DXGI_FORMAT_R16_TYPELESS
@ DXGI_FORMAT_R32G32_UINT
@ DXGI_FORMAT_R8G8B8A8_SNORM
@ DXGI_FORMAT_X24_TYPELESS_G8_UINT
@ DXGI_FORMAT_R32G32B32A32_FLOAT
@ DXGI_FORMAT_R16G16_SINT
@ DXGI_FORMAT_R8G8B8A8_UNORM
@ DXGI_FORMAT_BC7_UNORM_SRGB
@ DXGI_FORMAT_R24_UNORM_X8_TYPELESS
@ DXGI_FORMAT_R16G16_SNORM
@ DXGI_FORMAT_R11G11B10_FLOAT
@ DXGI_FORMAT_BC5_TYPELESS
@ DXGI_FORMAT_BC1_TYPELESS
@ DXGI_FORMAT_R10G10B10A2_UINT
@ DXGI_FORMAT_R16G16B16A16_UNORM
@ DXGI_FORMAT_R16G16_UNORM
@ DXGI_FORMAT_R8G8_TYPELESS
@ DXGI_FORMAT_B8G8R8A8_UNORM
@ DXGI_FORMAT_D32_FLOAT_S8X24_UINT
@ DXGI_FORMAT_BC1_UNORM_SRGB
@ DXGI_FORMAT_R8G8B8A8_TYPELESS
@ DXGI_FORMAT_G8R8_G8B8_UNORM
@ DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE
@ DXGI_FORMAT_R32G32_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_SNORM
@ DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
@ DXGI_FORMAT_R32G32B32_FLOAT
@ DXGI_FORMAT_R32G32B32A32_TYPELESS
@ DXGI_FORMAT_B4G4R4A4_UNORM
@ DXGI_FORMAT_R8G8B8A8_UINT
@ DXGI_FORMAT_R32G32B32A32_SINT
@ DXGI_FORMAT_B8G8R8X8_TYPELESS
@ DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
@ DXGI_FORMAT_BC3_UNORM_SRGB
@ DXGI_FORMAT_D24_UNORM_S8_UINT
@ DXGI_FORMAT_R32G32B32_SINT
@ DXGI_FORMAT_R8G8_B8G8_UNORM
@ DXGI_FORMAT_R8G8B8A8_SINT
@ DXGI_FORMAT_R32G32B32A32_UINT
@ DXGI_FORMAT_R9G9B9E5_SHAREDEXP
@ DXGI_FORMAT_R16G16_TYPELESS
@ DXGI_FORMAT_B5G6R5_UNORM
@ DXGI_FORMAT_R16G16_UINT
@ DXGI_FORMAT_R32G32_FLOAT
@ DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE
constexpr DDS_PIXELFORMAT DDSPF_DXT4
Definition TextureDDS.hpp:178
DDS_ALPHA_MODE
Definition TextureDDS.hpp:328
@ DDS_ALPHA_MODE_PREMULTIPLIED
@ DDS_ALPHA_MODE_STRAIGHT
void ddsCreateHeader(DDS_HEADER &header, uint32_t width, uint32_t height, uint32_t mipCount, uint32_t depth=1)
Definition TextureDDS.hpp:373
#define DDS_FOURCC
Definition TextureDDS.hpp:149
#define DDS_BUMPDUDVA
Definition TextureDDS.hpp:160
constexpr DDS_PIXELFORMAT DDSPF_YUY2
Definition TextureDDS.hpp:202
constexpr size_t DDS_MIN_HEADER_SIZE
Definition TextureDDS.hpp:369
constexpr DDS_PIXELFORMAT DDSPF_A2R10G10B10
Definition TextureDDS.hpp:265
DDS_RESOURCE_DIMENSION
Definition TextureDDS.hpp:311
@ DDS_DIMENSION_TEXTURE3D
@ DDS_DIMENSION_TEXTURE1D
@ DDS_DIMENSION_TEXTURE2D
constexpr DDS_PIXELFORMAT DDSPF_V16U16
Definition TextureDDS.hpp:261
constexpr DDS_PIXELFORMAT DDSPF_A4R4G4B4
Definition TextureDDS.hpp:228
constexpr DDS_PIXELFORMAT DDSPF_X8R8G8B8
Definition TextureDDS.hpp:211
#define DDS_CUBEMAP
Definition TextureDDS.hpp:305
constexpr DDS_PIXELFORMAT DDSPF_A8L8
Definition TextureDDS.hpp:244
constexpr DDS_PIXELFORMAT DDSPF_BC5_UNORM
Definition TextureDDS.hpp:190
constexpr DDS_PIXELFORMAT DDSPF_DXT5
Definition TextureDDS.hpp:181
#define DDS_HEADER_FLAGS_TEXTURE
Definition TextureDDS.hpp:281
constexpr DDS_PIXELFORMAT DDSPF_A8
Definition TextureDDS.hpp:254
#define DDS_BUMPLUMINANCE
Definition TextureDDS.hpp:158
constexpr DDS_PIXELFORMAT DDSPF_BC4_UNORM
Definition TextureDDS.hpp:184
constexpr DDS_PIXELFORMAT DDSPF_R8G8_B8G8
Definition TextureDDS.hpp:196
constexpr DDS_PIXELFORMAT DDSPF_L16_NVTT1
Definition TextureDDS.hpp:250
#define MAKEFOURCC(ch0, ch1, ch2, ch3)
Definition TextureDDS.hpp:163
#define DDS_RGBA
Definition TextureDDS.hpp:151
constexpr DDS_PIXELFORMAT DDSPF_X8B8G8R8
Definition TextureDDS.hpp:217
void ddsSetFormat(DDS_HEADER &header, DDS_HEADER_DXT10 &header10, uint32_t layerCount, Foundation::RHI::RHIResourceFormat format, Foundation::RHI::RHITextureDimension dimension=Foundation::RHI::RHITextureDimension::E2D)
Definition TextureDDS.hpp:393
constexpr DDS_PIXELFORMAT DDSPF_L8
Definition TextureDDS.hpp:240
#define DDS_ALPHA
Definition TextureDDS.hpp:155
constexpr uint32_t DDS_MAGIC
Definition TextureDDS.hpp:135
constexpr DDS_PIXELFORMAT DDSPF_A8B8G8R8
Definition TextureDDS.hpp:214
constexpr DDS_PIXELFORMAT DDSPF_X1R5G5B5
Definition TextureDDS.hpp:226
constexpr DDS_PIXELFORMAT DDSPF_DX10
Definition TextureDDS.hpp:278
constexpr DDS_PIXELFORMAT DDSPF_A8L8_ALT
Definition TextureDDS.hpp:246
#define DDS_FLAGS_VOLUME
Definition TextureDDS.hpp:307
#define DDS_SURFACE_FLAGS_CUBEMAP
Definition TextureDDS.hpp:292
#define DDS_SURFACE_FLAGS_TEXTURE
Definition TextureDDS.hpp:290
constexpr DDS_PIXELFORMAT DDSPF_X4R4G4B4
Definition TextureDDS.hpp:230
DDS_RESOURCE_MISC_FLAG
Definition TextureDDS.hpp:319
@ DDS_RESOURCE_MISC_TEXTURECUBE
constexpr DDS_PIXELFORMAT DDSPF_A8L8_NVTT1
Definition TextureDDS.hpp:252
constexpr DDS_PIXELFORMAT DDSPF_A2B10G10R10
Definition TextureDDS.hpp:267
constexpr DDS_PIXELFORMAT DDSPF_R8G8B8
Definition TextureDDS.hpp:232
constexpr DDS_PIXELFORMAT DDSPF_DXT1
Definition TextureDDS.hpp:169
constexpr DDS_PIXELFORMAT DDSPF_DXT3
Definition TextureDDS.hpp:175
constexpr DDS_PIXELFORMAT DDSPF_BC5_SNORM
Definition TextureDDS.hpp:193
constexpr DDS_PIXELFORMAT DDSPF_L6V5U5
Definition TextureDDS.hpp:273
constexpr DDS_PIXELFORMAT DDSPF_V8U8
Definition TextureDDS.hpp:256
#define DDS_RGB
Definition TextureDDS.hpp:150
#define DDS_SURFACE_FLAGS_MIPMAP
Definition TextureDDS.hpp:291
constexpr DDS_PIXELFORMAT DDSPF_DXT2
Definition TextureDDS.hpp:172
constexpr DDS_PIXELFORMAT DDSPF_A4L4
Definition TextureDDS.hpp:238
#define DDS_CUBEMAP_ALLFACES
Definition TextureDDS.hpp:301
constexpr DDS_PIXELFORMAT DDSPF_BC4_SNORM
Definition TextureDDS.hpp:187
constexpr DDS_PIXELFORMAT DDSPF_A2W10V10U10
Definition TextureDDS.hpp:271
constexpr size_t DDS_DX10_HEADER_SIZE
Definition TextureDDS.hpp:370
#define DDS_HEADER_FLAGS_MIPMAP
Definition TextureDDS.hpp:282
constexpr DDS_PIXELFORMAT DDSPF_A8R3G3B2
Definition TextureDDS.hpp:234
constexpr DDS_PIXELFORMAT DDSPF_G16R16
Definition TextureDDS.hpp:220
DDS_MISC_FLAGS2
Definition TextureDDS.hpp:324
@ DDS_MISC_FLAGS2_ALPHA_MODE_MASK
constexpr DDS_PIXELFORMAT DDSPF_A1R5G5B5
Definition TextureDDS.hpp:224
constexpr DDS_PIXELFORMAT DDSPF_R3G3B2
Definition TextureDDS.hpp:236
constexpr DDS_PIXELFORMAT DDSPF_R5G6B5
Definition TextureDDS.hpp:222
#define DDS_LUMINANCE
Definition TextureDDS.hpp:152
constexpr DDS_PIXELFORMAT DDSPF_L16
Definition TextureDDS.hpp:242
constexpr DDS_PIXELFORMAT DDSPF_L8_NVTT1
Definition TextureDDS.hpp:248
constexpr DDS_PIXELFORMAT DDSPF_UYVY
Definition TextureDDS.hpp:205
constexpr DDS_PIXELFORMAT DDSPF_X8L8V8U8
Definition TextureDDS.hpp:274
#define DDS_LUMINANCEA
Definition TextureDDS.hpp:153
constexpr DDS_PIXELFORMAT DDSPF_Q8W8V8U8
Definition TextureDDS.hpp:258
RHITextureDimension
Definition Common.hpp:243
RHIResourceFormat
Definition Common.hpp:34