| Crates.io | gctex |
| lib.rs | gctex |
| version | 0.3.12 |
| created_at | 2023-07-09 20:32:27.724158+00 |
| updated_at | 2024-07-12 15:47:10.964519+00 |
| description | gctex is a Rust crate designed for encoding and decoding texture formats used in the Nintendo GameCube and Wii games. The library provides C bindings, making it useful in both Rust and C/C++ based projects. |
| homepage | https://github.com/riidefi/RiiStudio/tree/master/source/gctex |
| repository | https://github.com/riidefi/RiiStudio |
| max_upload_size | |
| id | 912319 |
| size | 456,427 |
gctexgctex is a Rust crate designed for encoding and decoding texture formats used in the Nintendo GameCube and Wii games. The library provides C bindings, making it useful in both Rust and C/C++ based projects.
The following snippet demonstrates how to encode a texture in CMPR format using Rust:
let width: u32 = 32;
let height: u32 = 32;
let src = vec![0; (width*height*4) as usize];
let dst = gctex::encode(gctex::TextureFormat::CMPR, &src, width, height);
See https://github.com/riidefi/RiiStudio/tree/master/source/gctex/examples/c%23
byte[] dst = new byte[dst_len];
byte[] src = new byte[src_len];
gctex.Encode(0xE /* CMPR */, dst, src, width, height);
See https://github.com/riidefi/RiiStudio/tree/master/source/gctex/examples/c%2b%2b
#include "gctex.h"
unsigned char dst[dst_len];
unsigned char src[src_len];
rii_encode_cmpr(dst, sizeof(dst), src, sizeof(src), width, height);
The relevant header is available in include/gctex.h.
All supported texture formats and their respective encoding and decoding sources are listed below.
| Format | Encoding Source | Decoding Source |
|---|---|---|
| CMPR | Builtin | Dolphin Emulator (SIMD) / Rust non-SIMD fallback |
| I4 | Builtin | Builtin (SIMD (SSE3)) |
| I8 | Builtin | Dolphin Emulator (SIMD) / Rust non-SIMD fallback |
| IA4 | Builtin | Builtin |
| IA8 | Builtin | Dolphin Emulator (SIMD) / Rust non-SIMD fallback |
| RGB565 | Builtin | Dolphin Emulator (SIMD) / Rust non-SIMD fallback |
| RGB5A3 | Builtin | Dolphin Emulator (SIMD) / Rust non-SIMD fallback |
| RGBA8 | Builtin | Builtin (SIMD (SSE3)) |
| C4 | - | Dolphin Emulator / No fallback |
| C8 | - | Dolphin Emulator / No fallback |
| C14 | - | Dolphin Emulator / No fallback |
Please note, SIMD texture decoding for I4, I8 and IA8 formats uses SSE3 instructions with a fallback to SSE2 if necessary (excepting I4), and these are implemented based on the Dolphin Emulator's texture decoding logic.
cpp_fallback feature to fallback to non-SIMD Rust implementations of I4/I8/IA8/RGB565/RGB5A3 decoding.simd feature can be disabled to use pure, standard Rust.This dynamically linked library is published under GPLv2.