Changelog
To view the full changelogs for each release please see the GitHub releases.
0.9.0
An incredible amount of validation fixes, internal parsing/exporting fixes, and general code improvements
Add: More support for DXMath vectors/matrices
Add: C++23 monadic operators on custom OptionalWithFlagValue
Add:
IterableAccessorsatisfiesranges::input_rangeAdd: Custom accessor bound type for compile-time type checks
Fix: Guarantee floating point round-trip precision while parsing/exporting (#88)
Fix: Detect armv8 crc32 programmatically on Apple platforms
Fix: Use std::byte correctly in Android implementation
Fix: Make vectors and matrices trivially copyable
Fix: Validate GLB file/chunk byte length
… and quite a few more various minor improvements and fixes!
0.8.0
- Add: GltfFileStream and rewritten GltfDataBuffer (#49)
The interface now uses factory constructors, and allows for custom methods for providing the glTF. See documentation for more details.
There is also a
GltfFileStreamclass which wraps astd::ifstreamwhich can potentially increase memory loading speeds.This allows support for memory mapped files on platforms which provide this functionality using
MappedGltfFile.
- Add: Integrated math library (@spnda)
All colors and the node transform properties now use vectors/matrices from the built-in library. This library only covers basic maths, and just about everything one needs to work with glTF. There will be additions in the near future for adding more functionality. I’ve tried not to include too much bloat, but the header might still be a little template-heavy.
This change does not require any changes to old code, since the types are essentially just wrappers around
std::array. And code such asglm::make_vec3(pTranslation->data())will continue to work as expected.
- Add: Support C++20 modules (@stripe2933, @spnda, #61)
Initial revision of a fastgltf.ixx [named module](https://en.cppreference.com/w/cpp/language/modules), which is accessible through CMake with the
fastgltf::moduletarget. This feature is still somewhat experimental, so please report any issues you find.
- Add: Load external files from an APK (#15)
The interface for letting fastgltf interact with Android assets has fully changed. See documentation for more details.
- Add: Documentation on how to use specific features
The ‘Guides’ subsection now includes short documentation about various features which might not be directly obvious how to use. This also covers the recent changes to
GltfDataBufferand the Android interface.
Add: Support for
KHR_accessor_float64Add: Support for std::float{32,64}_t with accessor tools
Add: Predefined element traits for DirectXMath types
- Change: Only pass buffer view index to data adapter in tools
The
BufferDataAdapterinterface now takes a buffer view index instead of theBufferreference. Older custom functors will need upgrading.
Change: Reduce ComponentType to 16 bits & AccessorType to 8 bits.
Change: Use
std::invokein the tools header to be compatible with more function wrappers.Change: Make Buffer data
std::byteinstead ofstd::uint8_t- Fix: The
EXT_meshopt_compressionwasn’t parsed correctly. The test suite around extensions has been expanded to cover more edge cases, and bugs have been fixed accordingly.
- Fix: The
- Various fixes and improvements to the Exporter interface
Fix #51: Normalize resource paths & always use forward slashes
Fix #55: Cache positionCount & use correct buffer size
Fix #54: Use correct field name for primitive topology
Fix #53: Let FileExporter create target directories
Fix #52: Use const references to GLB buffer sources
Fix: Typo in wrapT field name (#56)
Fix: Bad chunk padding for GLB export (#57)
Add: Animation support to Exporter (#64)
Fix: Guard usages of throw (#50)
Fix: Accessor’s component type is forced (#59)
Fix: Validate UTF-8 for exported JSON strings
Fix: Always use exceptionless
std::filesystemAPIFix: Always write/read GLB data in little-endian
Fix many different compiler and clang-tidy warnings
0.7.2
This release only contains backported fixes from the v0.8 release.
0.7.1
Add: Support for glTF extras
Add:
KHR_materials_variantsFix: Inline
deserializeComponenttemplate specializations (#47)Fix #48: Allow exporting
ByteViewin GLB & catch file write errorsFix: Support
KHR_materials_dispersionwhen exportingFix: Decode percents when loading local files
Fix: Set
MimeType::Nonein all sourcesFix: Use correct error variable when parsing gpu instancing extension
Fix: Make sure gltf buffer is valid before determining type
Fix: Allow the GLB BIN chunk to be empty
0.7.0
Add: glTF Exporter (#33)
Add:
MSFT_packingtexture extensionsAdd:
KHR_materials_dispersionextensionAdd: More validation around byteOffsets & byteStride
Add #42: Set default values in struct initializers
Add: Validation for correctly enabled material extensions
Change: Combine
loadGLTFandloadBinaryGLTFChange: Move
TRSstruct out of NodeChange: Use custom
StaticVectorfor large (buffer) allocationsChange #35: Remove fastgltf_simdjson target
Change #45: Assert when using accessor tools with unloaded buffers
Fix #38: Switch documentation of rotation and uvOffset
Fix:
EXT_meshopt_compressionused wrong json objectFix: Correctly load iridescence texture infos
Fix #46: Make an animation channels’ node index optional
Fix: Always read accessor data as little-endian
Fix: Support padded matrix accessor data
Fix: Remove MeshoptCompressionMode::None
Fix: Also use unreachable macro on Clang
Fix: Use prefixed CMake variables
Fix: Only enable
-Ogfix for MINGWFix: Don’t needlessly parse entire data URIs
0.6.1
Add: Option to disable polymorphic allocator
Add: Option to use 64-bit floats for parsing
Fix #34: Support for fallback buffers with
EXT_meshopt_compressionFix: Support old GCC ABI
Fix: Automatically disable polymorphic allocators on non-supporting compilers
0.6.0
Add: Doxygen & Sphinx online documentation (https://spnda.github.io/fastgltf/)
Add: Custom optimised
OptionalclassAdd: Accessor iterators
Add: Header with ElementTraits for glm types
Add:
GenerateMeshIndicesoptionAdded support for
EXT_mesh_gpu_instancingby @DragonJoker in #30Added support for
KHR_materials_pbrSpecularGlossinessby @DragonJoker in #31Add:
KHR_materials_anisotropyAdd: Error-to-string functions
Add:
iterateAccessorWithIndexAdd: Support normalized accessors in accessor tools
Add: Polymorphic allocator support for SmallVector
Change: Combine
ParserandglTFclassChange: Use individual image indices for each texture extension
Change: Use linear polymorphic allocator
Change: Replaced unordered_map with small_vector for primitive attributes
Fix: Mark findSparseIndex as inline
Fix: Properly supported UTF-8 strings & URIs
Fix: Add missing ‘strength’ field for occlusion textures
Fixed various issues with URI parsing & introduced URIView
Fixed various issues with
SmallVectorFixed spot light cone angles not being loaded by @JuanDiegoMontoya in #27
Silenced unused parameter warning by @JuanDiegoMontoya in #23
Fixed narrowing conversion warnings by @JuanDiegoMontoya in #24
Fixed multiple typos in documentation
0.5.0
Add: Android file utilities by @DethRaid in #14
Add: Utilities to extract data from accessors by @forenoonwatch in #20
Add: URI parsing
Add: Accessor min/max
Add:
KHR_materials_specular,KHR_materials_ior,KHR_materials_iridescence,KHR_materials_volume,KHR_materials_transmission,KHR_materials_clearcoat,KHR_materials_emissive_strength,KHR_materials_sheen,KHR_materials_unlitChange: Add
LoadExternalImagesChange: Move headers to dedicated include folder
Change: Represent GLB buffers using a span
Change: Rename SparseAccessor fields
And many other various fixes
0.4.0
Add: Custom base64 decode callbacks
Change: Rework DataSource to use std::variant
Change: Remove
Options::DontUseSIMDChange: Don’t always check if the given directory is valid
Change: Use std:: prefixed integer types
Fix: Avoid segfault with MinGW
Fix: Rework Category enum due to parsing bug
Fix: More C++ version checks
Fix: Avoid dangling pointer to GLB bytes
Fix: Rare overflow warning due to signed-by-default char
Fix: Various minor CMake issues
Bump simdjson to 3.1.6
Const-ify
GltfBufferData::copyBytesby @Eearslya in #10
0.3.0
Add:
KHR_lights_punctualAdd:
EXT_texture_webpAdd: glTF and GLB detection
Add: Optional
SmallVectoroptimisationAdd: Asset information
Add: Morph targets & sparse accessors
Add: Optionally minimise JSON before parsing
Change: Cache cpuid calls for base64 decoding
Fix: Invalid C++20 concept
Fix: Loosen ARM64 detection for more platforms
Bump simdjson from 3.0.0 to 3.1.0
0.2.0
Add
KHR_mesh_quantizationby @Eearslya in #2Add material parameters and fix defaults by @Eearslya in #3
Add:
glTF::validatefunctionAdd: Custom buffer memory allocator callbacks
Add: Ability to decompose transformation matrices
Fix: Set dataLocation for images with buffer view
Fix Base64 decoding for + and / by @Eearslya in #4
Perf: Avoid (large) allocations in base64 decoders
Perf: Always move vectors if possible
Change: Expose more raw base64 decode functions
Change: New parse API
Change: Use
std::variantover raw unionsChange: Use of concepts in headers if C++20 is used