Skip to content

Releases: spnda/fastgltf

v0.8.0

25 Jul 18:08
Compare
Choose a tag to compare

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 a std::ifstream which 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 as glm::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.
  • 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.
  • 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 the Buffer reference. Older custom functors will need upgrading.
  • 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 of std::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

Full Changelog: v0.7.1...v0.8.0

v0.7.2

19 Jun 19:43
Compare
Choose a tag to compare

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

Full Changelog: v0.7.1...v0.7.2

v0.7.1

02 Mar 20:52
Compare
Choose a tag to compare
  • 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

08 Feb 20:20
Compare
Choose a tag to compare

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 and loadBinaryGLTF
  • Change: Move TRS struct out of Node
  • Change: Use custom StaticVector for base64/buffer data using sources::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

22 Dec 17:41
77e9b34
Compare
Choose a tag to compare
  • 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

31 Oct 22:44
66fbe38
Compare
Choose a tag to compare

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 and glTF 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

Full Changelog: v0.5.0...v0.6.0

v0.5.0

21 May 17:41
2d3a645
Compare
Choose a tag to compare

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

Full Changelog: v0.4.0...v0.5.0

v0.4.0

23 Mar 15:50
4a90faa
Compare
Choose a tag to compare

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

22 Jan 20:25
7395ca2
Compare
Choose a tag to compare

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

14 Nov 23:06
699b118
Compare
Choose a tag to compare

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