basisu::packed_uint<3>m_image_index;// The index of the source image provided to the encoder (will always appear in order from first to last, first image index is 0, no skipping allowed)
basisu::packed_uint<1>m_level_index;// The mipmap level index (mipmaps will always appear from largest to smallest)
basisu::packed_uint<2>m_orig_width;// The original image width (may not be a multiple of 4 pixels)
basisu::packed_uint<2>m_orig_height;// The original image height (may not be a multiple of 4 pixels)
basisu::packed_uint<2>m_num_blocks_x;// The slice's block X dimensions. Each block is 4x4 pixels. The slice's pixel resolution may or may not be a power of 2.
basisu::packed_uint<2>m_num_blocks_y;// The slice's block Y dimensions.
// The image type field attempts to describe how to interpret the image data in a Basis file.
// The encoder library doesn't really do anything special or different with these texture types, this is mostly here for the benefit of the user.
// We do make sure the various constraints are followed (2DArray/cubemap/videoframes/volume implies that each image has the same resolution and # of mipmap levels, etc., cubemap implies that the # of image slices is a multiple of 6)
enumbasis_texture_type
{
cBASISTexType2D=0,// An arbitrary array of 2D RGB or RGBA images with optional mipmaps, array size = # images, each image may have a different resolution and # of mipmap levels
cBASISTexType2DArray=1,// An array of 2D RGB or RGBA images with optional mipmaps, array size = # images, each image has the same resolution and mipmap levels
cBASISTexTypeCubemapArray=2,// an array of cubemap levels, total # of images must be divisable by 6, in X+, X-, Y+, Y-, Z+, Z- order, with optional mipmaps
cBASISTexTypeVideoFrames=3,// An array of 2D video frames, with optional mipmaps, # frames = # images, each image has the same resolution and # of mipmap levels
cBASISTexTypeVolume=4,// A 3D texture with optional mipmaps, Z dimension = # images, each image has the same resolution and # of mipmap levels