Releases: recp/AssetKit
Release list
v0.6.2: CI and Build Fixes
v0.6.2: CI and Build Fixes
This patch release focuses on build reliability and a numeric parsing correctness fix found during Linux ARM / optimized CI validation.
Next:
- docs
- more samples
Full Changelog: v0.6.0...v0.6.1
❤️ Sponsorship: Consider become a sponsor for AssetKit
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp
v0.6.1: 3MF, CLI, samples and performance
v0.6.1: 3MF, CLI, samples and performance
This release adds 3MF / print document support, cli, samples, and build improvements.
It is still not the end of 3MF work, but AssetKit can now read, preserve and write much more of real print-oriented 3MF packages
CLI:
> ./assetkit --help
AssetKit 0.6.1
Fast 3D asset inspection and conversion tool.
Reads and writes scene, mesh, material, animation and print formats.
Home: https://github.com/recp/assetkit
Issues: https://github.com/recp/assetkit/issues
Usage:
assetkit --convert <input> <output> [options]
assetkit --inspect <input> [output] [options]
Aliases:
-c, --convert Convert an asset
-i, --inspect Inspect an asset
-h, --help Show help
--version Show AssetKit version
Convert options:
--format <fmt> Use when output has no extension, or force this format
--bin Binary output when supported: stl, ply, glb
--ascii Text output when supported: stl, ply, gltf
--asset-version <ver> Output asset version: auto, 1.4.1, 1.5.0, 2.0, 2.1
Inspect options:
--json JSON report
--text Text report
-o, --output <path> Write report to file
🎓 New Features:
- 3MF supp
- Print validation: add initial mesh validation, negative transform detection and print feature flags
- CLI
- add samples
- build: add configurable exporter builds for import-only or smaller packages
- build: add static internal dependency mode for package / wheel / CLI builds
- glTF: add early glTF 2.1 infrastructure work
🛠️ Bugfixes and Improvements:
- performance improvements
- OBJ / DAE / glTF / 3MF: deduplicate URI, image and buffer helper paths
- build: tune optimized build flags and clean package build warnings
- fix Draco / meshopt / SPZ / KTX2 builds across macOS, Linux, Windows and MSVC
- DAE: fix XML document lifetime leak
- DAE / XML: fix MSVC value parsing and DAE float-param byte offsets
- PLY: fix MSVC conversion warnings
- lights: fix preview resolve and path ownership for app / Blender consumers
- windows: fix exporter directory checks, ARM warnings and decoder shim linkage
Next:
- docs
- more samples
Full Changelog: v0.6.0...v0.6.1
❤️ Sponsorship: Consider become a sponsor for AssetKit
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp
v0.6.0: export
Finally we have export support.
Next:
- 3mf, x3d
- Docs
- Samples
❤️ Sponsorship: Consider become a sponsor for AssetKit
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp
v0.5.1: public api cleanup
v0.5.1: drop COLALDA complexity and public API cleanup
This release cleans up the remaining DAE-shaped public APIs. It removes legacy source, library, scene, image, instance and profiling leftovers, and makes the core model more format-agnostic.
Highlights
- removed public
AkSourcefrom the normal accessor/buffer flow - replaced
AkVisualScenewith the simplerAkScenemodel - simplified document libraries with typed
AkLibrarylists - made scene roots and node instances more format-agnostic
- updated image source and light APIs
Next:
- Export
- 3mf, x3d
- Docs
- Samples
❤️ Sponsorship: Consider become a sponsor for AssetKit
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp
v0.5.0: new material system
v0.5.0: new material system
This release replaces AssetKit's legacy effect/profile-centered material path with a modern, format-agnostic material system. The new model is designed around renderable surfaces, typed inputs, sparse material features and explicit binding resolution, while keeping importer and consumer hot paths lightweight.
Breaking Changes: Material
- replaced the old public
AkEffect/AkProfile/AkTechniqueFxCommon-style material path withAkMaterialSurface,AkMaterialInputand typed material features. - legacy DAE effect/profile structures are now internal adapter data instead of the primary public material API.
- consumers should use
ak_materialResolve(), directAkMaterialSurfacefields, typed feature structs andak_materialInputBySemantic()for generic lookup instead of re-deriving format-specific material state.
Old:
AkMaterial *mat = prim->material;
AkInstanceEffect *instEffect = mat->effect;
AkEffect *effect = instEffect->effect;
AkProfile *profile = effect->profile;
AkTechniqueFxCommon *cmn = profile->technique->common;
/* mat->instanceEffect->effect->profile->technique->common->diffuse */
diffuse = cmn->diffuse;
transparent = cmn->transparent;
normal = cmn->normalMap;
occlusion = cmn->occlusion;
if (cmn->transparent) {
switch (cmn->transparent->opaque) {
case AK_OPAQUE_A_ONE:
case AK_OPAQUE_A_ZERO:
case AK_OPAQUE_RGB_ONE:
case AK_OPAQUE_RGB_ZERO:
...
}
}
if (diffuse->tex) {
// DAE bind_vertex_input / texcoord semantic
}
if (gltf_material) {
// separate glTF PBR path
}
if (obj_mtl) {
// separate OBJ illum / Tr / d / map_Kd path
}New:
AkResolvedMaterial rm;
if (ak_materialResolve(prim, instance, UINT32_MAX, &rm) && rm.surface) {
AkMaterialSurface *s = rm.surface;
/* preferred hot-path access for known built-in inputs. */
const AkMaterialInput *baseColor = s->baseColor;
const AkMaterialInput *opacity = s->opacity;
const AkMaterialInput *normal = s->normal;
/* generic / inspector-style access, still O(1) for known semantics. */
const AkMaterialInput *baseColor = ak_materialInputBySemantic(s, AK_MATERIAL_SEMANTIC_BASE_COLOR);
AkTextureRef *tex = ak_materialInputTexture(baseColor);
float alpha = ak_materialInputScalar(opacity, 1.0f);
}🎓 New Features:
- material: add modern surface model with base color, opacity, metallic, roughness, normal, occlusion, emissive, alpha mode, IOR and emissive strength.
- material: add typed feature structs for clearcoat, specular, specular-glossiness, transmission, sheen, iridescence, volume, anisotropy, dispersion, diffuse transmission, subsurface and classic material data.
- material: add semantic lookup helpers and O(1) semantic input access for consumer hot paths.
- material: add material binding and resolved material APIs for primitive / instance / variant workflows.
- material: add property-set groundwork for future 3MF, X3D and USD material/property models.
- glTF: map PBR material extensions directly into the new material feature model.
- DAE: normalize common-profile materials into modern material surfaces while preserving legacy source data internally.
- OBJ / MTL: map classic MTL fields into modern surface + classic feature data.
- PLY / STL: keep vertex/face color materials aligned with the new surface model.
🛠️ Bugfixes and Improvements:
- material: fix DAE transparency handling across A_ONE, A_ZERO, RGB_ONE, RGB_ZERO, MASK and BLEND modes.
- material: preserve texture channel semantics for opacity, metallic/roughness, occlusion and extension textures.
- material: centralize material semantic strings through generated strpool constants.
- material: improve alpha-mode handling for glTF OPAQUE, MASK and BLEND.
- material: align RGB transparency luminance with COLLADA / cglm coefficients.
- consumers: simplify texture-coordinate slot resolution through AssetKit helpers.
- build: suppress C++ header initializer warnings and keep public inline helpers warning-clean.
Next:
- Export
- 3mf, x3d
- Docs
- Samples
❤️ Sponsorship: Consider become a sponsor for AssetKit
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp
v0.4.0: Morph & Skin, extensions and optimizations
v0.4.0: Morph & Skin, extensions and optimizations
This release expands AssetKit's glTF support, adds new skin / morph controller utilities, and improves importer performance across glTF, DAE, OBJ, PLY and STL.
New Features:
- glTF: optional decoder side libraries for Draco, meshoptimizer, SPZ / Gaussian splats and KTX2 / BasisU textures.
- glTF: typed support for material variants, Gaussian splatting, animation pointer, punctual lights and GPU instancing.
- glTF: support sparse accessors and
KHR_mesh_quantization, with an option to preserve quantized attributes. - Skin: add format-agnostic helpers for DAE and glTF bone weights.
- Morph: add inspect / interleave helpers, target names, presets and override weights.
- Animation: add resolved animation targets and bake helpers.
- Material: support more PBR extensions including clearcoat, specular, transmission, IOR, unlit and emissive strength.
- Extras: preserve glTF
extras, preserved extension payloads and COLLADA<extra>throughak_extra(). - Build: CMake is now the canonical build system.
Bugfixes and Improvements:
- glTF / GLB: fix loading paths, accessor ref-counting, byteStride / byteLength, texture refs and scene nodes.
- DAE: fix external
<vertices>, polygon loading, SceneKit cases, controller fixups and axis / matrix conventions. - OBJ / MTL: improve vertex, normal, texcoord, name and material parsing.
- PLY / STL: fix ASCII / binary edge cases, zero-count elements, binary STL headers and position dedup paths.
- Performance: optimize string / numeric parsing, typed index storage, DAE index parsing and OBJ / PLY / STL hot paths.
- Platform / build: improve MinGW / MSYS support, dependency updates and warning cleanup.
- Documentation: add extras / extensions docs and refresh build docs.
Next:
- Material system updates
- Docs
- Samples
Full Changelog: v0.3.1...v0.4.0
❤️ Sponsorship: Consider become a sponsor for AssetKit
Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:
https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp
v0.3.1: Read File Optimizations - mmap
AssetKit now provides an option to read files with mmap (Windows also supported). This options is enabled as default. To disable mmap
ak_opt_set(AK_OPT_USE_MMAP, false);New Features:
- New Option:
AK_OPT_USE_MMAPboolean, default is true. - Expose mmap api to usable externally
- mmap-ed memories can be attached to a memory node, unmap will be called before memory node is free-ed
ak_mmap_rdonly(int fd, size_t size)- map file as READONLYak_unmap(void *file, size_t size)- unmap fileak_mmap_attach(void *obj, void *mapped, size_t sized)- attach mmap to memory to unmap automaticallyak_unmmap_attached(void *obj)- unmap all attached mmap files
Bugfixes and Improvements:
- fix ak_strtok_count_fast for READONLY memory
- util: remove modes from ak_readfile and make it "rb" globally
- dae: fix writing READONLY memory
- memory: fix URL memory extension
- some other improvements
v0.3.0: PLY (Binary + ASCII) + Bugfixes and Improvements
New Features:
- AssetKit now supports PLY (both ASCII and Binary) files
- endian helper to read binary data; use common endian header for all formats (endian.h)
- documentation
Bugfixes and Improvements:
- wobj: fix loading wavefront object if there is no NORMAL (position + texture case)
- wobj: improve switching between objects (use triangle object if the target is not poly)
- wobj: join group and object separations
- add new compare func for ivec3
- wobj: group/separate primitives by usemtl: mesh primitives created for each usemtl, base buffers and accessors are shared between them
- reuse postscript functions and files
- use short names for input semantics; remove _SEMANTIC from enum constants
- improve byte swap operations and make cross platform
- rename _assetkit_hide macros to AK_HIDE
- add common strpool to avoid duplications
- stl: fix loading normals in Binary STL
- dae: fix load skin controllers
- dae: move controller postscripts to separate file
- drop stb image, let user load images themselves
- provide callbacks for loading images
- move dependencies from lib/ folder to deps/
- remove unused files, suppress warnings, update README
- remove sample-model sub repo for tests
IO: New Formats (.obj, .mtl, .stl)
AssetKit now supports Wavefront Object (.obj), Wavefront Object Material (.mtl), STL (both ASCII and Binary)
v0.1.0: Initial Release
AssetKit can glTF 2.0, COLLADA 1.4/1.4.1 and COLLADA 1.5 with single interface. It makes it easy and fast to load 3D scene to GPU.