Foundation
Loading...
Searching...
No Matches
TextureDDS.hpp
Go to the documentation of this file.
1#pragma once
2#include <RHICore/Common.hpp>
3#include <cstddef>
4#include <cstdint>
5
6// NOLINTBEGIN
7// https://github.com/microsoft/DirectXTex/blob/main/DirectXTex/DDS.h
8#pragma pack(push, 1)
9enum class DXGI_FORMAT : uint32_t
10{
111 DXGI_FORMAT_AYUV = 100,
112 DXGI_FORMAT_Y410 = 101,
113 DXGI_FORMAT_Y416 = 102,
114 DXGI_FORMAT_NV12 = 103,
115 DXGI_FORMAT_P010 = 104,
116 DXGI_FORMAT_P016 = 105,
118 DXGI_FORMAT_YUY2 = 107,
119 DXGI_FORMAT_Y210 = 108,
120 DXGI_FORMAT_Y216 = 109,
121 DXGI_FORMAT_NV11 = 110,
122 DXGI_FORMAT_AI44 = 111,
123 DXGI_FORMAT_IA44 = 112,
124 DXGI_FORMAT_P8 = 113,
125 DXGI_FORMAT_A8P8 = 114,
127 DXGI_FORMAT_P208 = 130,
128 DXGI_FORMAT_V208 = 131,
129 DXGI_FORMAT_V408 = 132,
132 DXGI_FORMAT_FORCE_UINT = 0xffffffff
133};
134
135constexpr uint32_t DDS_MAGIC = 0x20534444; // "DDS "
136
138{
139 uint32_t size;
140 uint32_t flags;
141 uint32_t fourCC;
142 uint32_t RGBBitCount;
143 uint32_t RBitMask;
144 uint32_t GBitMask;
145 uint32_t BBitMask;
146 uint32_t ABitMask;
147};
148
149#define DDS_FOURCC 0x00000004 // DDPF_FOURCC
150#define DDS_RGB 0x00000040 // DDPF_RGB
151#define DDS_RGBA 0x00000041 // DDPF_RGB | DDPF_ALPHAPIXELS
152#define DDS_LUMINANCE 0x00020000 // DDPF_LUMINANCE
153#define DDS_LUMINANCEA 0x00020001 // DDPF_LUMINANCE | DDPF_ALPHAPIXELS
154#define DDS_ALPHAPIXELS 0x00000001 // DDPF_ALPHAPIXELS
155#define DDS_ALPHA 0x00000002 // DDPF_ALPHA
156#define DDS_PAL8 0x00000020 // DDPF_PALETTEINDEXED8
157#define DDS_PAL8A 0x00000021 // DDPF_PALETTEINDEXED8 | DDPF_ALPHAPIXELS
158#define DDS_BUMPLUMINANCE 0x00040000 // DDPF_BUMPLUMINANCE
159#define DDS_BUMPDUDV 0x00080000 // DDPF_BUMPDUDV
160#define DDS_BUMPDUDVA 0x00080001 // DDPF_BUMPDUDV | DDPF_ALPHAPIXELS
161
162#ifndef MAKEFOURCC
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))
167#endif /* MAKEFOURCC */
168
170 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D', 'X', 'T', '1'), 0, 0, 0, 0, 0};
171
173 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D', 'X', 'T', '2'), 0, 0, 0, 0, 0};
174
176 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D', 'X', 'T', '3'), 0, 0, 0, 0, 0};
177
179 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D', 'X', 'T', '4'), 0, 0, 0, 0, 0};
180
182 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D', 'X', 'T', '5'), 0, 0, 0, 0, 0};
183
185 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('B', 'C', '4', 'U'), 0, 0, 0, 0, 0};
186
188 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('B', 'C', '4', 'S'), 0, 0, 0, 0, 0};
189
191 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('B', 'C', '5', 'U'), 0, 0, 0, 0, 0};
192
194 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('B', 'C', '5', 'S'), 0, 0, 0, 0, 0};
195
197 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('R', 'G', 'B', 'G'), 0, 0, 0, 0, 0};
198
200 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('G', 'R', 'G', 'B'), 0, 0, 0, 0, 0};
201
203 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('Y', 'U', 'Y', '2'), 0, 0, 0, 0, 0};
204
206 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('U', 'Y', 'V', 'Y'), 0, 0, 0, 0, 0};
207
209 sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000};
210
212 sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0};
213
215 sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000};
216
218 sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0};
219
220constexpr DDS_PIXELFORMAT DDSPF_G16R16 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 32, 0x0000ffff, 0xffff0000, 0, 0};
221
222constexpr DDS_PIXELFORMAT DDSPF_R5G6B5 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 16, 0xf800, 0x07e0, 0x001f, 0};
223
224constexpr DDS_PIXELFORMAT DDSPF_A1R5G5B5 = {sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 16, 0x7c00, 0x03e0, 0x001f, 0x8000};
225
226constexpr DDS_PIXELFORMAT DDSPF_X1R5G5B5 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 16, 0x7c00, 0x03e0, 0x001f, 0};
227
228constexpr DDS_PIXELFORMAT DDSPF_A4R4G4B4 = {sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 16, 0x0f00, 0x00f0, 0x000f, 0xf000};
229
230constexpr DDS_PIXELFORMAT DDSPF_X4R4G4B4 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 16, 0x0f00, 0x00f0, 0x000f, 0};
231
232constexpr DDS_PIXELFORMAT DDSPF_R8G8B8 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 24, 0xff0000, 0x00ff00, 0x0000ff, 0};
233
234constexpr DDS_PIXELFORMAT DDSPF_A8R3G3B2 = {sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 16, 0x00e0, 0x001c, 0x0003, 0xff00};
235
236constexpr DDS_PIXELFORMAT DDSPF_R3G3B2 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 8, 0xe0, 0x1c, 0x03, 0};
237
238constexpr DDS_PIXELFORMAT DDSPF_A4L4 = {sizeof(DDS_PIXELFORMAT), DDS_LUMINANCEA, 0, 8, 0x0f, 0, 0, 0xf0};
239
240constexpr DDS_PIXELFORMAT DDSPF_L8 = {sizeof(DDS_PIXELFORMAT), DDS_LUMINANCE, 0, 8, 0xff, 0, 0, 0};
241
242constexpr DDS_PIXELFORMAT DDSPF_L16 = {sizeof(DDS_PIXELFORMAT), DDS_LUMINANCE, 0, 16, 0xffff, 0, 0, 0};
243
244constexpr DDS_PIXELFORMAT DDSPF_A8L8 = {sizeof(DDS_PIXELFORMAT), DDS_LUMINANCEA, 0, 16, 0x00ff, 0, 0, 0xff00};
245
246constexpr DDS_PIXELFORMAT DDSPF_A8L8_ALT = {sizeof(DDS_PIXELFORMAT), DDS_LUMINANCEA, 0, 8, 0x00ff, 0, 0, 0xff00};
247
248constexpr DDS_PIXELFORMAT DDSPF_L8_NVTT1 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 8, 0xff, 0, 0, 0};
249
250constexpr DDS_PIXELFORMAT DDSPF_L16_NVTT1 = {sizeof(DDS_PIXELFORMAT), DDS_RGB, 0, 16, 0xffff, 0, 0, 0};
251
252constexpr DDS_PIXELFORMAT DDSPF_A8L8_NVTT1 = {sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 16, 0x00ff, 0, 0, 0xff00};
253
254constexpr DDS_PIXELFORMAT DDSPF_A8 = {sizeof(DDS_PIXELFORMAT), DDS_ALPHA, 0, 8, 0, 0, 0, 0xff};
255
256constexpr DDS_PIXELFORMAT DDSPF_V8U8 = {sizeof(DDS_PIXELFORMAT), DDS_BUMPDUDV, 0, 16, 0x00ff, 0xff00, 0, 0};
257
259 sizeof(DDS_PIXELFORMAT), DDS_BUMPDUDV, 0, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000};
260
261constexpr DDS_PIXELFORMAT DDSPF_V16U16 = {sizeof(DDS_PIXELFORMAT), DDS_BUMPDUDV, 0, 32, 0x0000ffff, 0xffff0000, 0, 0};
262
263// D3DFMT_A2R10G10B10/D3DFMT_A2B10G10R10 should be written using DX10 extension to avoid D3DX 10:10:10:2 reversal
264// issue
266 sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 32, 0x000003ff, 0x000ffc00, 0x3ff00000, 0xc0000000};
268 sizeof(DDS_PIXELFORMAT), DDS_RGBA, 0, 32, 0x3ff00000, 0x000ffc00, 0x000003ff, 0xc0000000};
269
270// The following legacy Direct3D 9 formats use 'mixed' signed & unsigned channels so requires special handling
272 sizeof(DDS_PIXELFORMAT), DDS_BUMPDUDVA, 0, 32, 0x3ff00000, 0x000ffc00, 0x000003ff, 0xc0000000};
273constexpr DDS_PIXELFORMAT DDSPF_L6V5U5 = {sizeof(DDS_PIXELFORMAT), DDS_BUMPLUMINANCE, 0, 16, 0x001f, 0x03e0, 0xfc00, 0};
275 sizeof(DDS_PIXELFORMAT), DDS_BUMPLUMINANCE, 0, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0};
276
277// This indicates the DDS_HEADER_DXT10 extension is present (the format is in dxgiFormat)
279 sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D', 'X', '1', '0'), 0, 0, 0, 0, 0};
280
281#define DDS_HEADER_FLAGS_TEXTURE 0x00001007 // DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT
282#define DDS_HEADER_FLAGS_MIPMAP 0x00020000 // DDSD_MIPMAPCOUNT
283#define DDS_HEADER_FLAGS_VOLUME 0x00800000 // DDSD_DEPTH
284#define DDS_HEADER_FLAGS_PITCH 0x00000008 // DDSD_PITCH
285#define DDS_HEADER_FLAGS_LINEARSIZE 0x00080000 // DDSD_LINEARSIZE
286
287#define DDS_HEIGHT 0x00000002 // DDSD_HEIGHT
288#define DDS_WIDTH 0x00000004 // DDSD_WIDTH
289
290#define DDS_SURFACE_FLAGS_TEXTURE 0x00001000 // DDSCAPS_TEXTURE
291#define DDS_SURFACE_FLAGS_MIPMAP 0x00400008 // DDSCAPS_COMPLEX | DDSCAPS_MIPMAP
292#define DDS_SURFACE_FLAGS_CUBEMAP 0x00000008 // DDSCAPS_COMPLEX
293
294#define DDS_CUBEMAP_POSITIVEX 0x00000600 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX
295#define DDS_CUBEMAP_NEGATIVEX 0x00000a00 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX
296#define DDS_CUBEMAP_POSITIVEY 0x00001200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY
297#define DDS_CUBEMAP_NEGATIVEY 0x00002200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY
298#define DDS_CUBEMAP_POSITIVEZ 0x00004200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ
299#define DDS_CUBEMAP_NEGATIVEZ 0x00008200 // DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ
300
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)
304
305#define DDS_CUBEMAP 0x00000200 // DDSCAPS2_CUBEMAP
306
307#define DDS_FLAGS_VOLUME 0x00200000 // DDSCAPS2_VOLUME
308
309// Subset here matches D3D10_RESOURCE_DIMENSION and D3D11_RESOURCE_DIMENSION
310enum class DDS_RESOURCE_DIMENSION : uint32_t
311{
315};
316
317// Subset here matches D3D10_RESOURCE_MISC_FLAG and D3D11_RESOURCE_MISC_FLAG
318enum class DDS_RESOURCE_MISC_FLAG : uint32_t
319{
321};
322
323enum class DDS_MISC_FLAGS2 : uint32_t
324{
326};
335
337{
338 uint32_t size;
339 uint32_t flags;
340 uint32_t height;
341 uint32_t width;
343 uint32_t depth; // only if DDS_HEADER_FLAGS_VOLUME is set in flags
344 uint32_t mipMapCount;
345 uint32_t reserved1[11];
347 uint32_t caps;
348 uint32_t caps2;
349 uint32_t caps3;
350 uint32_t caps4;
351 uint32_t reserved2;
352};
353
362
363#pragma pack(pop)
364
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");
368
369constexpr size_t DDS_MIN_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER);
370constexpr size_t DDS_DX10_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER) + sizeof(DDS_HEADER_DXT10);
371static_assert(DDS_DX10_HEADER_SIZE > DDS_MIN_HEADER_SIZE, "DDS DX10 Header should be larger than standard header");
372
373inline void ddsCreateHeader(DDS_HEADER& header, uint32_t width, uint32_t height, uint32_t mipCount, uint32_t depth = 1)
374{
375 header = {};
376 header.size = sizeof(DDS_HEADER);
378 header.height = height;
379 header.width = width;
380 if (mipCount > 1)
382 header.mipMapCount = mipCount;
383 header.depth = depth;
384 if (depth > 1)
387 if (mipCount > 1)
389 if (depth > 1)
390 header.caps2 |= DDS_FLAGS_VOLUME;
391}
392
393inline void ddsSetFormat(DDS_HEADER& header, DDS_HEADER_DXT10& header10, uint32_t layerCount,
396{
397 header.ddspf = DDSPF_DX10;
398 header10 = {};
399 header10.arraySize = dimension == Foundation::RHI::RHITextureDimension::E3D ? 1 : layerCount;
400 switch (dimension)
401 {
405 break;
409 header.caps2 |= DDS_FLAGS_VOLUME;
410 break;
417 break;
418 default:
420 break;
421 }
422 using enum DXGI_FORMAT;
424 switch (format)
425 {
426 case Bc1RgbaUnorm:
428 break;
429 case Bc1RgbaSrgb:
431 break;
432 case Bc2Unorm:
434 break;
435 case Bc2Srgb:
437 break;
438 case Bc3Unorm:
440 break;
441 case Bc3Srgb:
443 break;
444 case Bc4Unorm:
446 break;
447 case Bc4Snorm:
449 break;
450 case Bc5Unorm:
452 break;
453 case Bc5Snorm:
455 break;
456 case Bc6HUfloat:
458 break;
459 case Bc6HSfloat:
461 break;
462 case Bc7Unorm:
464 break;
465 case Bc7Srgb:
467 break;
468 case R8G8B8A8Unorm:
470 break;
471 case R8G8B8A8Srgb:
473 break;
474 case A2B10G10R10Unorm:
476 break;
477 case R16G16B16A16SignedFloat:
479 break;
480 case B8G8R8A8Unrom:
482 break;
483 case B8G8R8A8Srgb:
485 break;
486 case R32SignedFloat:
488 break;
489 case R32G32SignedFloat:
491 break;
492 case R32G32B32A32SignedFloat:
494 break;
495 default:
496 header.ddspf.fourCC = 0;
497 header.ddspf.flags = 0;
499 break;
500 }
501}
502// NOLINTEND
#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_A8_UNORM
@ DXGI_FORMAT_BC5_UNORM
@ DXGI_FORMAT_BC4_TYPELESS
@ DXGI_FORMAT_R1_UNORM
@ DXGI_FORMAT_B8G8R8A8_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_TYPELESS
@ DXGI_FORMAT_R8G8_SINT
@ DXGI_FORMAT_BC7_TYPELESS
@ DXGI_FORMAT_BC2_UNORM_SRGB
@ DXGI_FORMAT_BC6H_TYPELESS
@ DXGI_FORMAT_R8G8_UNORM
@ DXGI_FORMAT_X32_TYPELESS_G8X24_UINT
@ DXGI_FORMAT_R16G16_FLOAT
@ DXGI_FORMAT_R32_FLOAT
@ DXGI_FORMAT_BC3_TYPELESS
@ DXGI_FORMAT_B5G5R5A1_UNORM
@ DXGI_FORMAT_R32G32B32_UINT
@ DXGI_FORMAT_BC2_TYPELESS
@ DXGI_FORMAT_BC4_UNORM
@ DXGI_FORMAT_R32_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_SINT
@ DXGI_FORMAT_R16G16B16A16_UINT
@ DXGI_FORMAT_D32_FLOAT
@ DXGI_FORMAT_R32G32_SINT
@ DXGI_FORMAT_R8G8_UINT
@ DXGI_FORMAT_BC3_UNORM
@ DXGI_FORMAT_R8_TYPELESS
@ DXGI_FORMAT_D16_UNORM
@ DXGI_FORMAT_R10G10B10A2_UNORM
@ DXGI_FORMAT_R32G32B32_TYPELESS
@ DXGI_FORMAT_BC6H_SF16
@ DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
@ DXGI_FORMAT_R24G8_TYPELESS
@ DXGI_FORMAT_R16G16B16A16_FLOAT
@ DXGI_FORMAT_BC5_SNORM
@ DXGI_FORMAT_B8G8R8X8_UNORM
@ DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
@ DXGI_FORMAT_R10G10B10A2_TYPELESS
@ DXGI_FORMAT_BC4_SNORM
@ DXGI_FORMAT_R16_TYPELESS
@ DXGI_FORMAT_R32G32_UINT
@ DXGI_FORMAT_R8G8B8A8_SNORM
@ DXGI_FORMAT_R16_FLOAT
@ DXGI_FORMAT_X24_TYPELESS_G8_UINT
@ DXGI_FORMAT_FORCE_UINT
@ DXGI_FORMAT_R32G32B32A32_FLOAT
@ DXGI_FORMAT_R16G16_SINT
@ DXGI_FORMAT_R8G8B8A8_UNORM
@ DXGI_FORMAT_BC7_UNORM_SRGB
@ DXGI_FORMAT_R8G8_SNORM
@ DXGI_FORMAT_R24_UNORM_X8_TYPELESS
@ DXGI_FORMAT_BC7_UNORM
@ 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_420_OPAQUE
@ 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_R16_SNORM
@ DXGI_FORMAT_B4G4R4A4_UNORM
@ DXGI_FORMAT_R8G8B8A8_UINT
@ DXGI_FORMAT_R16_UINT
@ DXGI_FORMAT_R32G32B32A32_SINT
@ DXGI_FORMAT_B8G8R8X8_TYPELESS
@ DXGI_FORMAT_R16_UNORM
@ DXGI_FORMAT_BC2_UNORM
@ DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
@ DXGI_FORMAT_BC3_UNORM_SRGB
@ DXGI_FORMAT_D24_UNORM_S8_UINT
@ DXGI_FORMAT_R32G32B32_SINT
@ DXGI_FORMAT_BC1_UNORM
@ DXGI_FORMAT_R8G8_B8G8_UNORM
@ DXGI_FORMAT_R8G8B8A8_SINT
@ DXGI_FORMAT_R8_SNORM
@ DXGI_FORMAT_R16_SINT
@ DXGI_FORMAT_R32G32B32A32_UINT
@ DXGI_FORMAT_R8_UNORM
@ DXGI_FORMAT_R32_SINT
@ DXGI_FORMAT_R9G9B9E5_SHAREDEXP
@ DXGI_FORMAT_R16G16_TYPELESS
@ DXGI_FORMAT_R32_UINT
@ DXGI_FORMAT_B5G6R5_UNORM
@ DXGI_FORMAT_R16G16_UINT
@ DXGI_FORMAT_R32G32_FLOAT
@ DXGI_FORMAT_BC6H_UF16
@ 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
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
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
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
Definition TextureDDS.hpp:355
DDS_RESOURCE_DIMENSION resourceDimension
Definition TextureDDS.hpp:357
DXGI_FORMAT dxgiFormat
Definition TextureDDS.hpp:356
DDS_MISC_FLAGS2 miscFlags2
Definition TextureDDS.hpp:360
uint32_t arraySize
Definition TextureDDS.hpp:359
DDS_RESOURCE_MISC_FLAG miscFlag
Definition TextureDDS.hpp:358
Definition TextureDDS.hpp:337
uint32_t mipMapCount
Definition TextureDDS.hpp:344
DDS_PIXELFORMAT ddspf
Definition TextureDDS.hpp:346
uint32_t width
Definition TextureDDS.hpp:341
uint32_t reserved2
Definition TextureDDS.hpp:351
uint32_t flags
Definition TextureDDS.hpp:339
uint32_t height
Definition TextureDDS.hpp:340
uint32_t reserved1[11]
Definition TextureDDS.hpp:345
uint32_t pitchOrLinearSize
Definition TextureDDS.hpp:342
uint32_t caps4
Definition TextureDDS.hpp:350
uint32_t caps3
Definition TextureDDS.hpp:349
uint32_t size
Definition TextureDDS.hpp:338
uint32_t depth
Definition TextureDDS.hpp:343
uint32_t caps2
Definition TextureDDS.hpp:348
uint32_t caps
Definition TextureDDS.hpp:347
Definition TextureDDS.hpp:138
uint32_t GBitMask
Definition TextureDDS.hpp:144
uint32_t flags
Definition TextureDDS.hpp:140
uint32_t RBitMask
Definition TextureDDS.hpp:143
uint32_t BBitMask
Definition TextureDDS.hpp:145
uint32_t fourCC
Definition TextureDDS.hpp:141
uint32_t ABitMask
Definition TextureDDS.hpp:146
uint32_t size
Definition TextureDDS.hpp:139
uint32_t RGBBitCount
Definition TextureDDS.hpp:142