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

Download history 26/week @ 2024-05-03 20/week @ 2024-05-10 51/week @ 2024-05-17 41/week @ 2024-05-24 45/week @ 2024-05-31 65/week @ 2024-06-07 59/week @ 2024-06-14 146/week @ 2024-06-21 137/week @ 2024-06-28 36/week @ 2024-07-05 40/week @ 2024-07-12 114/week @ 2024-07-19 280/week @ 2024-07-26 207/week @ 2024-08-02 142/week @ 2024-08-09 88/week @ 2024-08-16

每月下载量 750
用于 5 仓库(直接使用3个)

MIT许可 MIT

190KB
4K SLoC

image_dds

Latest Version docs.rs

一个库,用于将未压缩的图像数据转换为压缩格式。

示例

提供的示例项目演示了转换函数的基本用法。库还提供了直接与表面原始字节工作的函数,而不是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 ✔️ ✔️

功能

支持在功能标志下使用来自imageddsfile存储库的帮助函数,默认启用。默认启用encoding功能,但可以根据需要禁用,以解决某些目标上的编译问题。image存储库的默认功能默认禁用。功能是累加的,因此只需在Cargo.toml中添加对image相应版本的引用,即可启用所有默认功能。

构建

使用安装了较新版本Rust工具链的cargo build --release命令构建项目。构建支持Windows、Linux和MacOS。由于intel-tex-rs-2中缺少预编译的ISP内核,某些目标可能无法正确构建。

依赖关系

~2–11MB
~59K SLoC