PackageTrack
Sign in Get early access

gltf

glTF 2.0 loader

1.4.1 8.9M downloads/mo #3321 most downloaded on crates.io gltf-rs/gltf

What this package is like to depend on

Last release 2 years ago

no release in 18 months

Release timing varies

gaps range from 2 weeks to 1.1 years

Nearly every release is documented

notes for 40 of 41 stable releases

1 version withdrawn

withdrawn after publishing

10 years old

42 releases · first in 2016

0 releases in the last 12 months

see the full history below

Release timeline

42 releases · Nov 2016 to May 2024
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 42
  1. 1.4.1 10 May 2024
    Release notes

    Added

    • New functions animation::Channel::index and animation::Sampler::index.
    • New feature flag allow_empty_texture to avoid required extension checks.

    Fixed

    • Fix attempt to to subtract with overflow-panic in size_hint() of sparse accessor when collecting items.
    • Fix incorrect values returned from size_hint() in sparse accessor.
    • Add support to read items from sparse accessor without base buffer view.

    Changed

    • Update image to 0.25.0.
    • Validation will now fail if a glTF document requires extensions that are not supported by the crate.

    Removed

    • Feature image_jpeg_rayon no longer needed, as image 0.25.0 now uses zune-jpeg for jpeg decoding.

    Changed

    • Update image to 0.25.0.

    Removed

    • Feature image_jpeg_rayon no longer needed, as image 0.25.0 now uses zune-jpeg for jpeg decoding.
    Open source →
  2. 1.4.0 17 Dec 2023
    Release notes

    Added

    • New API for reading arbitary extension data.
    • Interval improvements to prevent panics on 32 bit systems when loading large glTF files.

    Changed

    • Offsets and sizes in the gltf-json crate have been widened to 64 bits.
    • Loading glTF on a 32 bit system containing offsets or sizes larger than u32 will result in a validation error.

    Fixed

    • Gltf::from_reader no longer winds the reader back to offset zero.
    • Broken link in Material::unlit documentation.
    Open source →
  3. 1.3.0 21 Aug 2023
    Release notes

    Added

    • Support for the KHR_materials_emissive_strength extension.

    Fixed

    • Accessor::byte_offset is now optional for sparse accessors.
    Open source →
  4. 1.2.0 08 Jun 2023
    Release notes

    Added

    • New functions import_buffers and import_images for advanced import use cases.

    Changed

    • Primitive::attributes now uses BTreeMap instead of HashMap deterministic serialization.
    Open source →
  5. 1.1.0 01 Feb 2023
    Release notes

    Fixed

    • Fix relative file path imports with url encoded characters.
    • Fix bounds calculation in export example.
    Open source →
  6. 1.0.0 30 Jan 2022
    Release notes

    [1.0.0] - 2022-01-29

    Added

    • Support for the KHR_materials_specular extension.
    • Support for the KHR_materials_variants extension.
    • Support for the KHR_materials_volume extension.
    • ExactSizeIterator implementation for Joints iterator.

    Changed

    • The mesh.primitives property is now always serialized.

    Fixed

    • Incorrect implementation of Normalize<u16> and Normalize<f32> for u16.
    Open source →
    Release notes

    Added

    • Support for the KHR_materials_specular extension.
    • Support for the KHR_materials_variants extension.
    • Support for the KHR_materials_volume extension.
    • ExactSizeIterator implementation for Joints iterator.

    Changed

    • The mesh.primitives property is now always serialized.

    Fixed

    • Incorrect implementation of Normalize<u16> and Normalize<f32> for u16.
    Open source →
  7. 0.16.0 13 May 2021
    Release notes

    Added

    • Support for the KHR_texture_transform extension.
    • Support for the KHR_materials_transmission_ior extension.

    Changed

    • Material::alpha_cutoff is now optional.

    Fixed

    • URIs with embedded data failing to import when using import_slice.
    • Serialization of empty primitives object being skipped.
    Open source →
  8. 0.15.2 29 Mar 2020
    Release notes

    Changed

    • All features are now exposed in the online documentation.
    • Primary iterators now implement Iterator::nth explicitly for improved performance.

    Fixed

    • Compiler warnings regarding deprecation of std::error::Error::description.
    Open source →
  9. 0.15.1 15 Mar 2020
    Release notes

    Added

    • New feature guess_mime_type which, as the name suggests, attempts to guess the MIME type of an image if it doesn't exactly match the standard.

    Changed

    • base64 updated to 0.11.
    • byteorder updated to 1.3.
    • image updated to 0.23.0.
    • Format has additional variants for 16-bit pixel formats.

    Fixed

    • Off-by-one error when reading whole files incurring a gratuitous reallocation.
    Open source →
  10. 0.15.0 18 Jan 2020
    Release notes

    2020-01-18

    Added

    • Support for the KHR_materials_unlit extension, which adds an unlit field
      to Material.
    • ExactSizeIterator implementations for accessor iterators.

    Fixed

    • Some lifetimes for accessing fields (e.g. Node::children) have been relaxed.
    • Accessor::buffer_view is now optional for the benefit of sparse accessors.

    Removed

    • animation::Interpolation::CatmullRomSpline
    Open source →
    Release notes

    Added

    • Support for the KHR_materials_unlit extension, which adds an unlit field to Material.
    • ExactSizeIterator implementations for accessor iterators.

    Fixed

    • Some lifetimes for accessing fields (e.g. Node::children) have been relaxed.
    • Accessor::buffer_view is now optional for the benefit of sparse accessors.

    Removed

    • animation::Interpolation::CatmullRomSpline
    Open source →
  11. 0.14.0 06 Oct 2019
    Release notes

    2019-10-06

    Added

    • import_slice function.
    • Clone and Debug implementations for Material.
    • accessor::util::SparseIter and accessor::util::SparseIndicesIter which
      iterate over items and indices in sparse accessors respectively.

    Changed

    • accessor::util::Iter is now an enum; sparse accessors are now read correctly.
    • The original version of accessor::util::Iter has been renamed as ItemIter.
    Open source →
    Release notes

    Added

    • import_slice function.
    • Clone and Debug implementations for Material.
    • accessor::util::SparseIter and accessor::util::SparseIndicesIter which iterate over items and indices in sparse accessors respectively.

    Changed

    • accessor::util::Iter is now an enum; sparse accessors are now read correctly.
    • The original version of accessor::util::Iter has been renamed as ItemIter.
    Open source →
  12. 0.13.0 27 Jul 2019
    Release notes

    2019-07-27

    Added

    • Support for the KHR_lights_punctual extension.
    • gltf-roundtrip example.

    Changed

    • Renamed validate_minimally as validate.
    • Removed dependency on cgmath.

    Fixed

    • Incorrect version in README instructions.
    • Compiler warnings.

    Removed

    • Trait function Validate::validate_completely and its implementations.
    Open source →
    Release notes

    Added

    • Support for the KHR_lights_punctual extension.
    • gltf-roundtrip example.

    Changed

    • Renamed validate_minimally as validate.
    • Removed dependency on cgmath.

    Fixed

    • Incorrect version in README instructions.
    • Compiler warnings.

    Removed

    • Trait function Validate::validate_completely and its implementations.
    Open source →
  13. 0.12.0 21 Apr 2019
    Release notes

    2019-04-21

    Added

    • New image format variants B8G8R8 and B8G8R8A8.
    • New export example.

    Changed

    • The crate now builds with Rust 2018 edition.
    • Extras are now exposed as RawValue.
    • Index now implements Copy.
    • Meshes will no longer report a zero byte stride.
    • Updated the following dependendies:
      • approx
      • base64
      • cgmath
      • image
      • lazy_static
      • proc_macro2
      • quote
      • syn

    Fixed

    • Removed an unused field in Accessor which was a cause of poor performance.
    • Borrow checker complaint regarding Glb::from_reader.
    Open source →
    Release notes

    Added

    • New image format variants B8G8R8 and B8G8R8A8.
    • New export example.

    Changed

    • The crate now builds with Rust 2018 edition.
    • Extras are now exposed as RawValue.
    • Index now implements Copy.
    • Meshes will no longer report a zero byte stride.
    • Updated the following dependendies:
      • approx
      • base64
      • cgmath
      • image
      • lazy_static
      • proc_macro2
      • quote
      • syn

    Fixed

    • Removed an unused field in Accessor which was a cause of poor performance.
    • Borrow checker complaint regarding Glb::from_reader.
    Open source →
  14. 0.11.3 21 Feb 2019
    Release notes

    2019-02-21

    Added

    • New function gltf_json::Index::new for export.
    • Support for the KHR_materials_pbrSpecularGlossiness extension.
    • Extra Eq and PartialEq implementations.

    Fixed

    • Accessor::min is no longer serialized if None.
    • Extras::_allow_unknown_fields is no longer serialized.
    • bufferView.byteOffset is now optional.
    • Node translation/rotation/scale values are now optional.
    • Removed serialization of some default values.
    • extras::Void is no longer serialized.
    Open source →
    Release notes

    Added

    • New function gltf_json::Index::new for export.
    • Support for the KHR_materials_pbrSpecularGlossiness extension.
    • Extra Eq and PartialEq implementations.

    Fixed

    • Accessor::min is no longer serialized if None.
    • Extras::_allow_unknown_fields is no longer serialized.
    • bufferView.byteOffset is now optional.
    • Node translation/rotation/scale values are now optional.
    • Removed serialization of some default values.
    • extras::Void is no longer serialized.
    Open source →
  15. 0.11.2 17 Jul 2018
    Release notes

    2018-07-08

    Fixed

    • JSON chunk padding is now padded with spaces (0x20) rather than zeros.
    • None is no longer serialized.
    • Vec is no longer serialized when empty.
    Open source →
    Release notes

    Fixed

    • JSON chunk padding is now padded with spaces (0x20) rather than zeros.
    • None is no longer serialized.
    • Vec is no longer serialized when empty.
    Open source →
  16. 0.11.1 10 Jun 2018
    Release notes

    2018-06-10

    Added

    • payload field in Gltf in order to handle binary glTF directly.
    • Error::Io enum variant.
    • Gltf::from_reader_without_validation and Gltf::from_slice_without_validation.
    • All functionality from the gltf-utils crate, feature gated with the new
      utils feature.
    • Most functionality from the gltf-importer crate, feature gated with the
      new import feature.
    • enum Uri to represent uniform resource locators.

    Changed

    • fn Gltf::from_* now imports binary glTF as well as standard glTF.
    • fn Gltf::from_reader now requires reader to implement std::io::Seek.
    • Buffer::uri now returns None in the case of binary glTF payload instead
      of the magic string "#bin".
    • The POSITION attribute is now required by all mesh primitives.
    • Several renames:
      • glbbinary.
      • Error::GlbError::Binary.
      • TrsPropertyProperty.
      • InterpolationAlgorithmInterpolation.
      • Target::pathTarget::property.
      • Primitive::position_boundsPrimitive::bounding_box.
    • The names feature is now enabled by default, along with utils and
      import. Rationale: Pareto principle.

    Fixed

    • Data structures in gltf_json now implement Serialize.

    Removed

    • fn Gltf::from_str -- use fn Gltf::from_slice instead.
    • fn Gltf::from_value -- no longer supported.
    • fn gltf::is_binary -- use slice.starts_with("glTF") instead.
    • struct Unvalidated -- replaced with enum Validation.
    • crate gltf-importer -- no longer supported.
    • Node::matrix -- use transform().matrix() instead.
    • Node::rotation -- use transform().decomposed() instead.
    • All hidden as_json functions -- no longer supported.
    Open source →
    Release notes

    Added

    • payload field in Gltf in order to handle binary glTF directly.
    • Error::Io enum variant.
    • Gltf::from_reader_without_validation and Gltf::from_slice_without_validation.
    • All functionality from the gltf-utils crate, feature gated with the new utils feature.
    • Most functionality from the gltf-importer crate, feature gated with the new import feature.
    • enum Uri to represent uniform resource locators.

    Changed

    • fn Gltf::from_* now imports binary glTF as well as standard glTF.
    • fn Gltf::from_reader now requires reader to implement std::io::Seek.
    • Buffer::uri now returns None in the case of binary glTF payload instead of the magic string "#bin".
    • The POSITION attribute is now required by all mesh primitives.
    • Several renames:
      • glbbinary.
      • Error::GlbError::Binary.
      • TrsPropertyProperty.
      • InterpolationAlgorithmInterpolation.
      • Target::pathTarget::property.
      • Primitive::position_boundsPrimitive::bounding_box.
    • The names feature is now enabled by default, along with utils and import. Rationale: Pareto principle.

    Fixed

    • Data structures in gltf_json now implement Serialize.

    Removed

    • fn Gltf::from_str -- use fn Gltf::from_slice instead.
    • fn Gltf::from_value -- no longer supported.
    • fn gltf::is_binary -- use slice.starts_with("glTF") instead.
    • struct Unvalidated -- replaced with enum Validation.
    • crate gltf-importer -- no longer supported.
    • Node::matrix -- use transform().matrix() instead.
    • Node::rotation -- use transform().decomposed() instead.
    • All hidden as_json functions -- no longer supported.
    Open source →
  17. 0.11.0 10 Jun 2018 withdrawn
    Release notes

    Yanked

    Open source →
  18. 0.10.1 05 Mar 2018
    Release notes

    2018-03-05

    Fixed

    • gltf_utils::AccessorIter::new is marked pub again.
    Open source →
    Release notes

    Fixed

    • gltf_utils::AccessorIter::new is marked pub again.
    Open source →
  19. 0.10.0 04 Mar 2018
    Release notes

    2018-03-04

    Added

    • ChannelIterators.

    Changed

    • Rework of GLB parser and AccessorIter in order to reduce unsafe code and
      to allow loading of binary glTF data on non-little-endian machines.
    • More descriptive errors in the gltf and gltf_importer crates.
    • Gltf::skip_validation is no longer marked unsafe.
    Open source →
    Release notes

    Added

    • ChannelIterators.

    Changed

    • Rework of GLB parser and AccessorIter in order to reduce unsafe code and to allow loading of binary glTF data on non-little-endian machines.
    • More descriptive errors in the gltf and gltf_importer crates.
    • Gltf::skip_validation is no longer marked unsafe.
    Open source →
  20. 0.9.3 28 Oct 2017
    Release notes

    Fixed

    • gltf_utils::PrimitiveIterators::joints_u16 implementation.
    Open source →
  21. 0.9.2 10 Sep 2017
    Release notes

    Fixed

    • Incorrect implementation of Transform::decomposed (issue #99)
    Open source →
  22. 0.9.1 05 Sep 2017
    Release notes

    Added

    • scene::Transform type, returned by Node::transform.
    • MorphTarget type and a corresponding MorphTargets iterator.
    • Gltf::from_glb function.
    • Gltf::default_scene function.

    Changed

    • as_json functions are now hidden from the documentation.
    • scene::Children is bound to the lifetime of Gltf instead its parent Node
    • Documentation has been improved across the crate.

    Removed

    • root module.
    • Default constructors for Material and texture::Sampler.

    Deprecated

    • Node::matrix/translation/rotation/scale in favour of Node::transform.
    • json module.
    Open source →
  23. 0.9.0 27 Aug 2017
    Release notes

    Added

    • New gltf-utils crate, which removes the need for the Loaded wrapper struct.
    • New Attributes iterator, which visits all vertex attributes of a Primitive.
    • New glb module, containing functions for parsing .glb (binary glTF) files.
    • New is_binary function, which tests for the glTF magic string.
    • New 'explicit' validation strategy with the gltf::Unvalidated type.
    • New Bounds type describing the minimum and maximum values of accessors.
    • New Accessor::position_bounds convenience function.
    • Info, NormalTexture, and OcclusionTexture now implement AsRef<Texture>.

    Removed

    • Removed the Loaded struct in favour of new traits in the gltf-utils crate.
    Open source →
  24. 0.8.6 26 Aug 2017
    Release notes

    Added

    • Implemented ExactSizeIterator for primitive iterators.
    Open source →
  25. 0.8.5 11 Aug 2017
    Release notes

    Changed

    • Fixed incorrect buffer view slicing from accessors.
    • Wrapper struct constructors now use pub(crate) instead of #[doc(hidden)].
    • Hence the crate now requires rustc version 1.18 or above to build.
    Open source →
  26. 0.8.4 10 Aug 2017
    Release notes

    Added

    • Added the gltf-tree example which displays the node heirarchies of scenes.
    Open source →
  27. 0.8.3 10 Aug 2017
    Release notes

    Changed

    • Fixed mismatched names and extras feature flags.
    Open source →
  28. 0.8.2 09 Aug 2017
    Release notes

    Removed

    • Removed broken link to gltf-importer in the crate documentation.
    Open source →
  29. 0.8.1 09 Aug 2017
    Release notes

    Changed

    • No concrete changes (unsuccessful update to documentation).
    Open source →
  30. 0.8.0 09 Aug 2017
    Release notes

    Added

    • New Loaded type, which provides glTF objects with buffer data.
    • New gltf-json crate which replaces the json module. This is intended to improve build times.
    • Exported names and extras features from the new gltf-json crate.

    Changed

    • Redesign of the Source trait so that it no longer performs I/O.
    Open source →
  31. 0.7.0 28 Jul 2017
    Release notes

    Added

    • Image::data now returns a DynamicImage, allowing for post-processing.
    Open source →
  32. 0.6.1 15 Jul 2017

    Nothing published for this version

  33. 0.6.0 15 Jul 2017
    Release notes

    Added

    • New wrapper interface.
    • Source trait, which allows for customizing the import process.
    • Reference Source trait implementation, namely FromPath, that can read from the file system and decode embedded base64 data URIs.
    • Support for binary glTF.
    • Validate trait, which validates glTF JSON metadata.
    • Import struct which drives the asynchronous loading of glTF data.
    • "Poor man's zero-copy deserialization".

    Changed

    • Moved all extension data structures into a new extensions module.
    • Made the Get trait behave the same as the TryGet trait.

    Removed

    • Removed the v1 module, as the crate no longer supports glTF 1.0.
    • Removed the TryGet trait in favour of the redesigned Get trait.
    Open source →
  34. 0.5.0 10 Jun 2017
    Release notes

    Added

    • New v2 module, containing all glTF 2.0 data structures.
    • Initial implementation of the glTF 2.0 data structures.
    Open source →
  35. 0.4.1 06 May 2017
    Release notes

    Changed

    • Internal improvements to decrease the crate build time.
    Open source →
  36. 0.4.0 24 Mar 2017
    Release notes

    Added

    • New v1 module, containing all glTF 1.0 data structures.
    • glTF objects are now categorised in submodules.
    • Complete implementation of the glTF 1.0 data structures.

    Removed

    • Removed gl crate dependency.
    Open source →
  37. 0.3.1 17 Mar 2017
    Release notes

    Changed

    • Updated links to the official glTF documentation.
    Open source →
  38. 0.3.0 16 Feb 2017
    Release notes

    Changed

    • Allowed the crate to build on the latest stable rustc (1.15) using the new serde frontend, i.e. with the serde proc_macro.
    Open source →
  39. 0.2.1 17 Nov 2016
    Release notes

    Changed

    • Allowed the crate to build on the latest stable rustc (1.14) using the serde_codegen crate.
    Open source →
  40. 0.2.0 15 Nov 2016
    Release notes

    Added

    • Added Technique data structure for glTF 1.0.
    Open source →
  41. 0.1.1 13 Nov 2016
    Release notes

    Added

    • New documentation for glTF 1.0.
    Open source →
  42. 0.1.0 13 Nov 2016
    Release notes

    Added

    • Initial (incomplete) glTF 1.0 implementation.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive