8个版本 (5个重大更新)
0.6.0 | 2024年7月29日 |
---|---|
0.5.1 | 2024年4月16日 |
0.5.0 | 2024年3月1日 |
0.4.0 | 2023年12月24日 |
0.1.1 | 2023年3月21日 |
在 数据格式 中排名 15
每月下载量 750
用于 5 个 仓库(直接使用3个)
190KB
4K SLoC
image_dds
一个库,用于将未压缩的图像数据转换为压缩格式。
示例
提供的示例项目演示了转换函数的基本用法。库还提供了直接与表面原始字节工作的函数,而不是dds或图像文件。也支持像EXR文件或BC6 DDS文件这样的浮点数据。
cargo运行 --发布 --示例img2dds image.png out.dds BC3RgbaUnorm
cargo运行 --发布 --示例dds2img out.dds out.tiff
cargo运行 --发布 --示例img2ddsf32 image.exr out.dds
cargo运行 --发布 --示例dds2imgf32 out.dds out.exr
图像中的数组层和深度切片应垂直堆叠。这允许创建表面以避免创建额外的副本,因为RGBA数据已经位于所需的布局。
cargo运行 --发布 --示例img2dds 3d.dds 3d.png
cargo运行 --发布 --示例img2dds 3d.png out.dds Rgba8Unorm depth
cargo运行 --发布 --示例dds2imgf32 cube.dds cube.exr
cargo运行 --发布 --示例img2ddsf32 cube.exr out.dds BC6hRgbUfloat layers
支持格式
目前只支持BCN格式,因为这些是DDS文件和压缩GPU纹理常用的格式。此库不支持其他用于GPU纹理的压缩格式,如ETC1。压缩使用intel-tex-rs-2处理Intel的ISPC纹理压缩器的绑定。解压缩使用C语言中bcdec库的安全Rust端口。
格式 | 编码 | 解码 |
---|---|---|
BC1 | ✔️ | ✔️ |
BC2 | ❌ | ✔️ |
BC3 | ✔️ | ✔️ |
BC4 | ✔️ | ✔️ |
BC5 | ✔️ | ✔️ |
BC6 | ✔️ | ✔️ |
BC7 | ✔️ | ✔️ |
也支持一些未压缩的格式。这些格式由DDS支持,但在实践中很少与DDS文件一起使用。未压缩格式通常用于小型纹理或用于窗口表面和UI元素的纹理。
格式 | 编码 | 解码 |
---|---|---|
R8 | ✔️ | ✔️ |
R8G8B8A8 | ✔️ | ✔️ |
B8G8R8A8 | ✔️ | ✔️ |
R16G16B16A16Float | ✔️ | ✔️ |
R32G32B32A32Float | ✔️ | ✔️ |
功能
支持在功能标志下使用来自image和ddsfile存储库的帮助函数,默认启用。默认启用encoding
功能,但可以根据需要禁用,以解决某些目标上的编译问题。image存储库的默认功能默认禁用。功能是累加的,因此只需在Cargo.toml
中添加对image相应版本的引用,即可启用所有默认功能。
构建
使用安装了较新版本Rust工具链的cargo build --release
命令构建项目。构建支持Windows、Linux和MacOS。由于intel-tex-rs-2中缺少预编译的ISP内核,某些目标可能无法正确构建。
依赖关系
~2–11MB
~59K SLoC