181 lines
4.8 KiB
C++
181 lines
4.8 KiB
C++
#pragma once
|
|
|
|
namespace Juliet
|
|
{
|
|
enum struct TextureFormat : uint8
|
|
{
|
|
Invalid,
|
|
|
|
/* Unsigned Normalized Float Color Formats */
|
|
A8_UNORM,
|
|
R8_UNORM,
|
|
R8G8_UNORM,
|
|
R8G8B8A8_UNORM,
|
|
R16_UNORM,
|
|
R16G16_UNORM,
|
|
R16G16B16A16_UNORM,
|
|
R10G10B10A2_UNORM,
|
|
B5G6R5_UNORM,
|
|
B5G5R5A1_UNORM,
|
|
B4G4R4A4_UNORM,
|
|
B8G8R8A8_UNORM,
|
|
/* Compressed Unsigned Normalized Float Color Formats */
|
|
BC1_RGBA_UNORM,
|
|
BC2_RGBA_UNORM,
|
|
BC3_RGBA_UNORM,
|
|
BC4_R_UNORM,
|
|
BC5_RG_UNORM,
|
|
BC7_RGBA_UNORM,
|
|
/* Compressed Signed Float Color Formats */
|
|
BC6H_RGB_FLOAT,
|
|
/* Compressed Unsigned Float Color Formats */
|
|
BC6H_RGB_UFLOAT,
|
|
/* Signed Normalized Float Color Formats */
|
|
R8_SNORM,
|
|
R8G8_SNORM,
|
|
R8G8B8A8_SNORM,
|
|
R16_SNORM,
|
|
R16G16_SNORM,
|
|
R16G16B16A16_SNORM,
|
|
/* Signed Float Color Formats */
|
|
R16_FLOAT,
|
|
R16G16_FLOAT,
|
|
R16G16B16A16_FLOAT,
|
|
R32_FLOAT,
|
|
R32G32_FLOAT,
|
|
R32G32B32A32_FLOAT,
|
|
/* Unsigned Float Color Formats */
|
|
R11G11B10_UFLOAT,
|
|
/* Unsigned Integer Color Formats */
|
|
R8_UINT,
|
|
R8G8_UINT,
|
|
R8G8B8A8_UINT,
|
|
R16_UINT,
|
|
R16G16_UINT,
|
|
R16G16B16A16_UINT,
|
|
R32_UINT,
|
|
R32G32_UINT,
|
|
R32G32B32A32_UINT,
|
|
/* Signed Integer Color Formats */
|
|
R8_INT,
|
|
R8G8_INT,
|
|
R8G8B8A8_INT,
|
|
R16_INT,
|
|
R16G16_INT,
|
|
R16G16B16A16_INT,
|
|
R32_INT,
|
|
R32G32_INT,
|
|
R32G32B32A32_INT,
|
|
/* SRGB Unsigned Normalized Color Formats */
|
|
R8G8B8A8_UNORM_SRGB,
|
|
B8G8R8A8_UNORM_SRGB,
|
|
/* Compressed SRGB Unsigned Normalized Color Formats */
|
|
BC1_RGBA_UNORM_SRGB,
|
|
BC2_RGBA_UNORM_SRGB,
|
|
BC3_RGBA_UNORM_SRGB,
|
|
BC7_RGBA_UNORM_SRGB,
|
|
/* Depth Formats */
|
|
D16_UNORM,
|
|
D24_UNORM,
|
|
D32_FLOAT,
|
|
D24_UNORM_S8_UINT,
|
|
D32_FLOAT_S8_UINT,
|
|
/* Compressed ASTC Normalized Float Color Formats*/
|
|
ASTC_4x4_UNORM,
|
|
ASTC_5x4_UNORM,
|
|
ASTC_5x5_UNORM,
|
|
ASTC_6x5_UNORM,
|
|
ASTC_6x6_UNORM,
|
|
ASTC_8x5_UNORM,
|
|
ASTC_8x6_UNORM,
|
|
ASTC_8x8_UNORM,
|
|
ASTC_10x5_UNORM,
|
|
ASTC_10x6_UNORM,
|
|
ASTC_10x8_UNORM,
|
|
ASTC_10x10_UNORM,
|
|
ASTC_12x10_UNORM,
|
|
ASTC_12x12_UNORM,
|
|
/* Compressed SRGB ASTC Normalized Float Color Formats*/
|
|
ASTC_4x4_UNORM_SRGB,
|
|
ASTC_5x4_UNORM_SRGB,
|
|
ASTC_5x5_UNORM_SRGB,
|
|
ASTC_6x5_UNORM_SRGB,
|
|
ASTC_6x6_UNORM_SRGB,
|
|
ASTC_8x5_UNORM_SRGB,
|
|
ASTC_8x6_UNORM_SRGB,
|
|
ASTC_8x8_UNORM_SRGB,
|
|
ASTC_10x5_UNORM_SRGB,
|
|
ASTC_10x6_UNORM_SRGB,
|
|
ASTC_10x8_UNORM_SRGB,
|
|
ASTC_10x10_UNORM_SRGB,
|
|
ASTC_12x10_UNORM_SRGB,
|
|
ASTC_12x12_UNORM_SRGB,
|
|
/* Compressed ASTC Signed Float Color Formats*/
|
|
ASTC_4x4_FLOAT,
|
|
ASTC_5x4_FLOAT,
|
|
ASTC_5x5_FLOAT,
|
|
ASTC_6x5_FLOAT,
|
|
ASTC_6x6_FLOAT,
|
|
ASTC_8x5_FLOAT,
|
|
ASTC_8x6_FLOAT,
|
|
ASTC_8x8_FLOAT,
|
|
ASTC_10x5_FLOAT,
|
|
ASTC_10x6_FLOAT,
|
|
ASTC_10x8_FLOAT,
|
|
ASTC_10x10_FLOAT,
|
|
ASTC_12x10_FLOAT,
|
|
ASTC_12x12_FLOAT
|
|
};
|
|
|
|
enum struct TextureUsageFlag : uint8
|
|
{
|
|
None = 0,
|
|
Sampler = 1 << 0, // Textures supports sampling
|
|
ColorTarget = 1 << 1, // Texture is color render target
|
|
DepthStencilTarget = 1 << 2, // Texture is depth stencil target
|
|
GraphicsStorageRead = 1 << 3, // Support Storage read at graphics stage
|
|
ComputeStorageRead = 1 << 4, // Support Storage read at compute stage
|
|
ComputeStorageWrite = 1 << 5, // Support Storage Write at compute stage
|
|
ComputeStorageSimultaneousReadWrite =
|
|
1 << 6, // Supports reads and writes in the same compute shader. Not equivalent to ComputeStorageRead | ComputeStorageWrite
|
|
};
|
|
|
|
enum struct TextureType : uint8
|
|
{
|
|
Texture_2D,
|
|
Texture_2DArray,
|
|
Texture_3D,
|
|
Texture_3DArray,
|
|
Texture_Cube,
|
|
Texture_CubeArray,
|
|
};
|
|
|
|
enum struct TextureSampleCount : uint8
|
|
{
|
|
One,
|
|
Two,
|
|
Four,
|
|
Eight,
|
|
};
|
|
|
|
// Create Information structs
|
|
struct TextureCreateInfo
|
|
{
|
|
TextureType Type;
|
|
TextureFormat Format;
|
|
TextureUsageFlag Flags;
|
|
TextureSampleCount SampleCount;
|
|
|
|
uint32 Width;
|
|
uint32 Height;
|
|
union
|
|
{
|
|
uint32 LayerCount;
|
|
uint32 Depth;
|
|
}; // LayerCount is used in 2d array textures and Depth for 3d textures
|
|
uint32 MipLevelCount;
|
|
};
|
|
|
|
struct Texture;
|
|
} // namespace Juliet
|