basis_universal/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//! Bindings for Binomial LLC's basis-universal Supercompressed GPU Texture Codec
//!
//! basis-universal functionality can be grouped into two categories:
//!
//! * Encoding: Compresses and encode textures (optionally combining multiple images and mipmap
//! layers in a single file/binary blob)
//! * Transcoding: Unpacks the texture into GPU-friendly compression formats. The final format can
//! be chosen based on what the available GPU hardware can support.
//!
//! Encoding can be done ahead of time using a command line tool in the upstream repository.
//!
//! The encoded data can either be stored as a file or a binary blob. This data can include multiple
//! images, and each image can store multiple levels. This is commonly used for storing cube
//! textures and textures with precomputed mipmaps. This library also supports generating mipmaps
//! for you.
//!
//! Please refer to https://github.com/BinomialLLC/basis_universal for more details.
/// Support for transcoding basis-universal form to GPU-friendly formats.
pub mod transcoding;
pub use transcoding::*;
/// Support for compressing raw image data to basis-universal form
pub mod encoding;
pub use encoding::*;
pub use basis_universal_sys as sys;
/// Arbitrary data that can be attached to a basis-universal file/binary blob
#[derive(Default, Debug, Copy, Clone)]
pub struct UserData {
pub userdata0: u32,
pub userdata1: u32,
}
/// The default quality level used if [CompressorParams::set_etc1s_quality_level] is not called
pub const ETC1S_QUALITY_DEFAULT: u32 = sys::basisu_BASISU_DEFAULT_QUALITY as u32;
/// The minimum quality level that can be provided to [CompressorParams::set_etc1s_quality_level]
pub const ETC1S_QUALITY_MIN: u32 = sys::basisu_BASISU_QUALITY_MIN as u32;
/// The maximum quality level that can be provided to [CompressorParams::set_etc1s_quality_level]
pub const ETC1S_QUALITY_MAX: u32 = sys::basisu_BASISU_QUALITY_MAX as u32;
/// The default quality level used if [CompressorParams::set_uastc_quality_level] is not called
pub const UASTC_QUALITY_DEFAULT: u32 = sys::UastcPackFlags_PackUASTCLevelDefault as u32;
/// The minimum quality level that can be provided to [CompressorParams::set_uastc_quality_level]
pub const UASTC_QUALITY_MIN: u32 = sys::UastcPackFlags_PackUASTCLevelFastest as u32;
/// The maximum quality level that can be provided to [CompressorParams::set_uastc_quality_level]
pub const UASTC_QUALITY_MAX: u32 = sys::UastcPackFlags_PackUASTCLevelVerySlow as u32;
/// Maximum supported texture dimension
pub const TEXTURE_DIMENSION_MAX: u32 = sys::basisu_BASISU_MAX_SUPPORTED_TEXTURE_DIMENSION as u32;
/// Maximum supported image dimension
pub const IMAGE_DIMENSION_MAX: u32 = sys::basisu_BASISU_MAX_IMAGE_DIMENSION as u32;