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