Releases: spnda/fastgltf
Releases · spnda/fastgltf
v0.8.0
What's Changed
- Add: GltfFileStream and rewritten GltfDataBuffer (@spnda, #49)
- The interface now uses factory constructors, and allows for custom methods for providing the glTF. See documentation for more details.
auto jsonData = fastgltf::GltfDataBuffer::FromPath("./asset.gltf"); if (jsonData.error() != fastgltf::Error::None) return false; // Parse the asset with jsonData.get()
- There is also a
GltfFileStream
class which wraps astd::ifstream
which can potentially increase memory loading speeds. - This allows support for memory mapped files on platforms which provide this functionality using
MappedGltfFile
.
- The interface now uses factory constructors, and allows for custom methods for providing the glTF. See documentation for more details.
- 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, which is accessible through CMake with the
fastgltf::module
target. This feature is still somewhat experimental, so please report any issues you find.
- Initial revision of a fastgltf.ixx named module, which is accessible through CMake with the
- Add: Load external files from an APK (@DethRaid, @spnda, #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
GltfDataBuffer
and the Android interface.
- 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
- Add: Support for
KHR_accessor_float64
- Add: 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 (de4af98)
- The
BufferDataAdapter
interface now takes a buffer view index instead of theBuffer
reference. Older custom functors will need upgrading.
- The
- Change: Reduce ComponentType to 16 bits & AccessorType to 8 bits.
- Change: Use
std::invoke
in the tools header to be compatible with more function wrappers. - Change: Make Buffer data
std::byte
instead ofstd::uint8_t
- Fix: The
EXT_meshopt_compression
wasn't parsed correctly.- The test suite around extensions has been expanded to cover more edge cases, and bugs have been fixed accordingly.
- 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 (@Cyphall, #56)
- Fix: Bad chunk padding for GLB export (@Cyphall, #57)
- Add: Animation support to Exporter (@Deweh, #64)
- Fix: Guard usages of throw (@apache-hb, #50)
- Fix: Accessor's component type is forced (@Razakhel, #59)
- Fix: Validate UTF-8 for exported JSON strings
- Fix: Always use exceptionless
std::filesystem
API - Fix: Always write/read GLB data in little-endian
- Fix many different compiler and clang-tidy warnings
New Contributors
- @apache-hb made their first contribution in #50
- @Cyphall made their first contribution in #56
- @Razakhel made their first contribution in #59
- @stripe2933 made their first contribution in #61
Full Changelog: v0.7.1...v0.8.0
v0.7.2
This release only contains backported fixes from the v0.8 release.
- Add: Predefined element traits for DirectXMath types
- Fix: The
KHR_materials_anisotropy
extension wasn't parsed correctly. - Fix: The
EXT_meshopt_compression
wasn't parsed correctly.- The test suite around extensions has been expanded to cover more edge cases, and bugs have been fixed accordingly.
- 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 (@Cyphall, #56)
- Fix: Bad chunk padding for GLB export (@Cyphall, #57)
- Fix: Guard usages of throw (@apache-hb, #50)
- Fix: Accessor's component type is forced (@Razakhel, #59)
- Fix: Always use exceptionless
std::filesystem
API - Fix: Always write/read GLB data in little-endian
- Fix some compiler and static analysis warnings
New Contributors
- @apache-hb made their first contribution in #50
- @Cyphall made their first contribution in #56
- @Razakhel made their first contribution in #59
Full Changelog: v0.7.1...v0.7.2
v0.7.1
- Add: Support for glTF extras
- Add:
KHR_materials_variants
- Fix: Inline
deserializeComponent
template specializations (#47, @hilloftheking) - Fix #48: Allow exporting
ByteView
in GLB & catch file write errors - Fix: Support
KHR_materials_dispersion
when exporting - Fix: Decode percents when loading local files
- Fix: Set
MimeType::None
in all sources - Fix: 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
v0.7.0
What's Changed
- Add: glTF Exporter (#33)
- Add:
MSFT_packing
texture extensions - Add:
KHR_materials_dispersion
extension - Add: More validation around byteOffsets & byteStride
- Add #42: Set default values in struct initializers
- Add: Validation for correctly enabled material extensions
- Change: Combine
loadGLTF
andloadBinaryGLTF
- Change: Move
TRS
struct out of Node - Change: Use custom
StaticVector
for base64/buffer data usingsources::Array
- Change #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_compression
used wrong json object - Fix: 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
-Og
fix for MINGW - Fix: Don't needlessly parse entire data URIs
- Fix: Catch errors on light/instancing extensions
Full Changelog: v0.6.1...v0.7.0
v0.6.1
- Add: Option to disable polymorphic allocator (@spnda)
- Add: Option to use 64-bit floats for parsing (@spnda)
- Fix #34: Support for fallback buffers with EXT_meshopt_compression (@spnda)
- Fix: Support old GCC ABI (@spnda)
- Fix: Automatically disable polymorphic allocators on non-supporting compilers (@spnda)
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
- Add: Doxygen & Sphinx online documentation (https://spnda.github.io/fastgltf/) (@spnda)
- Add: Custom optimised
Optional
class (@spnda) - Add: Accessor iterators (@spnda)
- Add: Header with ElementTraits for glm types (@spnda)
- Add:
GenerateMeshIndices
option (@spnda) - Added support for
EXT_mesh_gpu_instancing
by @DragonJoker in #30 - Added support for
KHR_materials_pbrSpecularGlossiness
by @DragonJoker in #31 - Add:
KHR_materials_anisotropy
(@spnda) - Add: Error-to-string functions (@spnda)
- Add:
iterateAccessorWithIndex
(@spnda) - Add: Support normalized accessors in accessor tools (@spnda)
- Add: Polymorphic allocator support for SmallVector (@spnda)
- Change: Combine
Parser
andglTF
class (01960f9, @spnda) - Change: Use individual image indices for each texture extension (@spnda)
- Change: Use linear polymorphic allocator (@spnda)
- Change: Replaced unordered_map with small_vector for primitive attributes (@spnda)
- Fix: Mark findSparseIndex as inline (@spnda)
- Fix: Properly supported UTF-8 strings & URIs (@spnda)
- Fix: Add missing 'strength' field for occlusion textures (@spnda)
- Fixed various issues with URI parsing & introduced URIView (@spnda)
- Fixed various issues with
SmallVector
(@spnda) - Fixed 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 (@JuanDiegoMontoya, @spnda)
New Contributors
- @JuanDiegoMontoya made their first contribution in #23
- @DragonJoker made their first contribution in #30
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- Add: Android file utilities by @DethRaid in #14
- Add: Utilities to extract data from accessors by @forenoonwatch in #20
- Add: URI parsing by @spnda
- Add: Accessor min/max by @spnda
- 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_unlit by @spnda
- Change: Add
LoadExternalImages
by @spnda - Change: Move headers to dedicated include folder by @spnda
- Change: Represent GLB buffers using a span by @spnda
- Change: Rename SparseAccessor fields by @spnda
- And many other various fixes
New Contributors
- @DethRaid made their first contribution in #14
- @forenoonwatch made their first contribution in #20
Full Changelog: v0.4.0...v0.5.0
v0.4.0
What's Changed
- Add: Custom base64 decode callbacks by @spnda
- Change: Rework DataSource to use std::variant by @spnda
- Change: Remove
Options::DontUseSIMD
by @spnda - Change: Don't always check if the given directory is valid by @spnda
- Change: Use std:: prefixed integer types by @spnda
- Fix: Avoid segfault with MinGW by @spnda
- Fix: Rework Category enum due to parsing bug by @spnda
- Fix: More C++ version checks by @spnda
- Fix: Avoid dangling pointer to GLB bytes by @spnda
- Fix: Rare overflow warning due to signed-by-default char by @spnda
- Fix: Various minor CMake issues by @spnda
- Bump simdjson to 3.1.6 by @spnda
- Const-ify GltfBufferData::copyBytes by @Eearslya in #10
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Add: KHR_lights_punctual (@spnda)
- Add: EXT_texture_webp (@spnda)
- Add: glTF and GLB detection (@spnda)
- Add: Optional SmallVector optimisation (@spnda)
- Add: Asset information (@spnda)
- Add: Morph targets & sparse accessors (@spnda)
- Add: Optionally minimise JSON before parsing (@spnda)
- Change: Cache cpuid calls for base64 decoding (@spnda)
- Fix: Invalid C++20 concept (@spnda)
- Fix: Loosen ARM64 detection for more platforms (@spnda)
- Bump simdjson from 3.0.0 to 3.1.0 (@spnda)
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- Add KHR_mesh_quantization by @Eearslya in #2
- Add material parameters and fix defaults by @Eearslya in #3
- Add: glTF::validate function by @spnda
- Add: Custom buffer memory allocator callbacks by @spnda
- Add: Ability to decompose transformation matrices by @spnda
- Fix: Set dataLocation for images with buffer view by @spnda
- Fix Base64 decoding for + and / by @Eearslya in #4
- Perf: Avoid (large) allocations in base64 decoders by @spnda
- Perf: Always move vectors if possible by @spnda
- Change: Expose more raw base64 decode functions by @spnda
- Change: New parse API by @spnda
- Change: Use std::variant over raw unions by @spnda
- Change: Use of concepts in headers if C++20 is used by @spnda
Full Changelog: v0.1.0...v0.2.0