wgpu-mipmap

ci

Generate mipmaps for wgpu textures.

Usage

Add this to your Cargo.toml:

toml [dependencies] wgpu-mipmap = "0.1"

Example usage:

rust use wgpu_mipmap::*; fn example(device: &wgpu::Device, queue: &wgpu::Queue) -> Result<(), Error> { // create a recommended generator let generator = RecommendedMipmapGenerator::new(&device); // create and upload data to a texture let texture_descriptor = wgpu::TextureDescriptor { size: wgpu::Extent3d { width: 512, height: 512, depth: 1, }, mip_level_count: 10, // 1 + log2(512) sample_count: 1, format: wgpu::TextureFormat::Rgba8Unorm, dimension: wgpu::TextureDimension::D2, usage: wgpu::TextureUsage::STORAGE, label: None, }; let texture = device.create_texture(&texture_descriptor); // upload_data_to_texture(&texture); // create an encoder and generate mipmaps for the texture let mut encoder = device.create_command_encoder(&Default::default()); generator.generate(&device, &mut encoder, &texture, &texture_descriptor)?; queue.submit(std::iter::once(encoder.finish())); Ok(()) }

Features

wgpu-mipmap is in the early stages of development and can only generate mipmaps for 2D textures with floating-point formats. The library implements several backends in order to support various texture usage patterns:

Development

Run the examples

The examples test various use cases and generate images for manual inspection and comparsion.

console $ cargo run --example cat $ cargo run --example checkerboard

Run the tests

console $ cargo test

How to compile the shaders

console $ make build-shaders

See src/shaders/README.md for dependencies and more information.

Benchmarks

TODO

Resources