Releases: cwfitzgerald/ctt
Releases · cwfitzgerald/ctt
Release list
v0.4.0
Immutable
release. Only release title and notes can be modified.
Added
- C API: new
ctt-c-apicrate produces static/dynamic libraries plus a hand-curatedctt.hheader. Signed, attested prebuilt archives are published for Windows, macOS, and Linux on x86_64 and aarch64. - 3D (volume) texture support end-to-end: load/encode/store 3D textures via DDS and KTX2. New CLI
--volumeflag stacks input files as Z slices. - AVX-512 sRGB load/store kernels (x86_64) and NEON sRGB load/store kernels (aarch64), selected at runtime.
- Bulk f16 ↔ f32 processing kernels.
- Per-encoder option flags:
--astcenc-opts,--bc7e-opts,--intel-opts,--etcpak-opts,--amd-optsacceptkey=val[;key=val...]strings.--help-encoder <name>lists available keys with types and docs. - Substantially expanded
astcencsettings: usage modes (Color,NormalMapwithBc5Compat/AstcDefaultswizzle,SingleChannel,TwoChannel,HdrRgb,HdrRgba,Rgbm), perceptual mode, alpha-weighted error,decode_unorm8tuning, RGBM scale, custom preset override. - CLI integration test suite covering color/alpha conversion, containers, cubemaps, cubemap arrays, mipmaps, volumes, swizzle, supercompression, passthrough, and error paths.
Changed
- API:
TargetFormat::Compressednow carries a typedencoder: Encoderenum (with per-backend settings) instead ofencoder_name: Option<String>. UseEncoder::Autofor "any encoder that supports this format". - API:
parse_formatsignature is nowparse_format(&str) -> Result<TargetFormat>— theEncoderRegistryparameter is gone; compiled-in encoders are discovered statically. - API:
Image::is_cubemap: boolreplaced withImage::kind: TextureKind(Texture2D/Cubemap/Texture3D). - API:
Surfacegainsdepthandslice_stridefields for 3D surfaces (setdepth = 1,slice_stride = 0for 2D). - CLI
--helpoutput wraps to the terminal width. - ASTC encoder defaults tuned for better quality out of the box.
- Passthrough path widened — more input/output combinations skip re-encoding.
Fixed
ctt-compressonatornow builds on older GCC versions.
v0.3.0
Immutable
release. Only release title and notes can be modified.
Added
- New encoder backend: ARM
astcencfor ASTC (ctt-astcenccrate,encoder-astcencfeature). - New encoder backend: AMD Compressonator for BC1–BC7 (
ctt-compressonatorcrate,encoder-amdfeature). - New encoder backend: etcpak for ETC/EAC and a subset of BCn (
ctt-etcpakcrate,encoder-etcpakfeature). - High-level library API:
ctt::convertwithConvertSettings, plus crate-level documentation and examples covering the end-to-end pipeline. - KTX and DDS input support: existing compressed textures can now be re-encoded or transcoded, not just raw PNG/JPEG/etc.
- KTX2 supercompression: optional zstd and zlib compression of the payload (
--zstd/--zlib). - Color space and alpha mode conversion: sRGB↔linear and straight↔premultiplied conversions are modeled in the pipeline and triggered automatically when source and target disagree.
- Mipmap generation.
- NPOT (non-power-of-two) textures are now handled correctly throughout the pipeline, including mipmap generation.
- Profiling scopes via the
profilingcrate across the pipeline.
Changed
- Core transformation pipeline rewritten around a conversion graph and typed transform nodes, unifying how format conversion, color space conversion, alpha handling, swizzling, mipmapping, and compression are scheduled.
- Mipmap downsampling now uses
fast_image_resize; the default filter is box. - sRGB encode/decode uses an approximate OETF/EOTF on the hot path, significantly speeding up loading and conversion of sRGB images.
- Output handling reworked: clearer container selection from extension, better diagnostics, and cleaner layering between the container writers and the pipeline.
Removed
- Dropped the Intel ISPC Texture Compressor's built-in ASTC path in favor of
astcenc, which produces higher-quality output.
v0.2.0
Immutable
release. Only release title and notes can be modified.
What's Changed
- Update Cargo.lock by @renovate[bot] in #4
- Update GitHub Artifact Actions (major) by @renovate[bot] in #3
- Update actions/checkout action to v6 by @renovate[bot] in #2
- Update Cargo.lock by @renovate[bot] in #5
- Unify with repository procedures by @cwfitzgerald in #6
- Update Cargo.lock by @renovate[bot] in #7
- Update Cargo.lock by @renovate[bot] in #8
- Update Cargo.lock by @renovate[bot] in #15
- Prebuilt binaries by @cwfitzgerald in #16
- Attest binary builds by @cwfitzgerald in #17
New Contributors
- @renovate[bot] made their first contribution in #4
- @cwfitzgerald made their first contribution in #6
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Initial release of ctt
Full Changelog: https://github.com/cwfitzgerald/ctt/commits/v0.1.0