bevy_basisu_saver 0.3.0

A bevy asset processor to transform images to basisu ktx2 textures
Documentation

Bevy BasisU texture saver and asset processor

Build License Cargo Documentation

Basis universal texture encoder and bevy asset processor to transform images to basisu ktx2 textures.

This is based on basisu_c_sys and bevy_basisu_loader.

wasm32-unknown-unknown should be supported but is less tested.

Usage

  1. Add the Cargo dependency:
cargo add bevy_basisu_saver
  1. Add BasisuSaverPlugin which registers basisu asset processor:
use bevy_basisu_saver::BasisuSaverPlugin;

pub fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(BasisuSaverPlugin);
}
  1. High level basisu encoder API which is a wrapper of basisu_c_sys:
    let mut encoder = BasisuEncoder::new();
    for (i, path) in face_paths.iter().enumerate() {
        let image = Image::from_buffer(
            &std::fs::read(Path::new(dir).join(path)).unwrap(),
            bevy::image::ImageType::Extension(
                Path::new(path).extension().unwrap().to_str().unwrap(),
            ),
            CompressedImageFormats::empty(),
            true,
            bevy::image::ImageSampler::Default,
            RenderAssetUsages::all(),
        )
        .unwrap();
        encoder.set_image_slice(i as u32, &image).unwrap();
    }
    let compressed = encoder
        .compress(
            BasisuEncoderParams::new_with_srgb_defaults(
                bevy_basisu_saver::encoder::BasisTextureFormat::XuastcLdr6x6,
            )
            .with_tex_type(TextureViewDimension::Cube),
        )
        .unwrap();

See also examples/test_processor

Bevy version compatibility

bevy bevy_basisu_loader basis_universal
0.18 0.2, 0.3 v2_1_0

License

Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either:

at your option.