Assets: KTX2 compressed texture format

Material textures currently decode via stb_image (PNG/JPG/...) to RGBA8 (engine/assets/ImageLoader.zig). Add support for KTX2 containers carrying GPU-compressed (BCn / ASTC, optionally Basis Universal transcoded) texture data.

Scope

  • Parse KTX2 containers; expose format, mip levels, and compressed payload.
  • GPU path: upload compressed blocks directly to SDL3GPU textures (BCn on desktop) instead of decoding to RGBA8.
  • Software path: decode/transcode to RGBA8 as a fallback.
  • Slot in behind the existing loadTexture / loadTextureFromMemory seam so materials/importers are format-agnostic.
  • Register .ktx2 in the image asset type + importer.

Acceptance

  • A.ktx2 texture binds in a material and renders in both the viewport and built game; mips respected.

Note: the c:assets label already lists 'glTF, KTX2' as in scope.

Edited by Bruno Massa