Skip to content

Releases: atteneder/glTFast

glTFast 3.3.0

19 May 14:25
Compare
Choose a tag to compare

Added

Fixed

  • Ignore / don't show errors when newer DracoUnity versions with incompatible API are installed

glTFast 3.2.1

05 May 11:10
Compare
Choose a tag to compare

Fixed

  • Properly freeing up memory of animation clips
  • GameObjectBoundsInstantiator correctly calculates bounds for scenes that contain multi-primitive meshes (fixes #173)
  • Corrected linear/gamma sampling whenever texture index does not equal image index (fixes #172)

glTFast 3.2.0

13 Apr 12:00
Compare
Choose a tag to compare

Added

  • Support for animations via Unity's legacy animation system (Animation component; #124)

Fixed

  • Image format is properly detected from URIs with HTTP queries (thanks JonathanB-Vobling for #160; fixes #158)
  • Unlit shaders are now correctly assigned for double-sided variants (thanks @hybridherbst for #163)
  • Sample code for custom defer agent is now thread safe (fixes #161)
  • Meshes with two UV sets and vertex colors now work (fixes #162)

glTFast 3.1.0

16 Mar 22:44
Compare
Choose a tag to compare

Note: If you used GLTFast.LoadGltfBinary before you have to adopt your code. See the documentation for how to use it now.

Added

  • Unlit alpha blended ShaderGraph variants (thanks @hybridherbst for #144)
  • Support for unsigned byte joint indices

Changed

  • Accelerated loading meshes by obtaining and setting bounds from accessors min/max values instead of recalculating them
  • Improved log message when DracoUnity/KtxUnity packages are missing
  • Restored/simplified GLTFast.LoadGltfBinary, allowing users to load glTF binary files from byte arrays directly (also added documentation; fixes #148)

Fixed

  • Texture offset/tiling values don't get lost when switching shaders (thanks @hybridherbst for #140)
  • Correct vertex colors for RGB/unsigned short, RGBA/unsigned short and RGBA/unsigned byte. (thanks @camogram for #139)
  • Error when trying to set texture offset/scale but material doesn't have _MainTex property (thanks @hybridherbst for #142)
  • Crash when trying to combine meshes created by glTFast by setting proper submesh vertex count (fixes #100)

glTFast 3.0.2

07 Feb 12:44
Compare
Choose a tag to compare

Changed

  • Had to bring back GltfAsset.isDone for render tests

Fixed

  • WebGL loading by not using unsupported System.Threading.Task.Run (fixes #131)
  • Escaped, relative buffer/texture URIs now work on local file system consistently
  • Rendertests work again

glTFast 3.0.1

04 Feb 17:50
Compare
Choose a tag to compare

Hot Fix: glTF files with material variants don't crash anymore.

Added

  • Error message when a UV set other than the first one is used (is unsupported; see issue #34)
  • Unit test for loading all models once (good for quick checks in comparison to performance tests, which take very long)

Fixed

  • No more exception on models with KHR_materials_variants glTF extension (not supported yet)
  • Compiler errors in Tests assembly due to inconsistent/incomplete class names/namespaces changes

glTFast 3.0.0

03 Feb 23:09
Compare
Choose a tag to compare

This is a new major release, since the API chanced due to switching from coroutines to async.
However, the performance increases resulting from process optimizations that followed alone would justify a major release. Have a look:

The performance benchmark introduced in 2.6.0 allows comparing changes. The tests consisted of loading every glTF from the glTF-Sample-Model collection, which has a wide range of models (no KTX though).

On average models load ~35% faster.

smooth

If you look at individual tests (sorted from slowest to fastest in 2.6.0), you see that the majority got faster, some didn't change much and only a few regressed. The worst case got 25% slower and the best got 82% faster.

smooth_times

This regression is mostly because of a much more stable, smooth frame rate. Look at how the average maximum frame time decreased considerably while the average minimum and average(across tests) average(across frames within a test) increased. This means that that work is spread more evenly across frames, sometimes increasing the overall loading time slightly. The goal is maximum staying below 16.6 ms (for 60 fps), so there's still some work to do.

smooth_frames

But glTFast can also load as fast as possible, regardless of frame times. In this case the loading times also improved:

fast_times

Changed

  • Converted API and internals to async/await. This is more convenient in some cases and eases future optimizations.
  • Performance improvements
    • Non-trivial JSONs are parsed in a thread now
    • More consistent frame rates due to task duration estimation in various places along the loading code
    • Embed base 64 buffers are decoded in a thread now
    • Less memory usage (and likely faster) du to Jpeg and PNG textures being loaded non-readable (if possible)
  • Moved SampleSet related code into dedicated Assembly, so it can be used in unit tests as well client applications (but doesn't have to).

Fixed

  • Build size optimization: Physics package is not required anymore (GltfBoundsAsset won't work as expected in that case)
  • Build size optimization: Removed usage of System.Linq
  • Removed compiler warnings (in case KtxUnity is missing)
  • KtxUnity required version >=1.0.0
  • DracoUnity required version >=1.4.0

glTFast 3.0.0-preview

01 Feb 01:13
Compare
Choose a tag to compare
glTFast 3.0.0-preview Pre-release
Pre-release

Note: this is a preview release. Testing and feedback is highly appreciated.

This is a new major release, since the API chanced due to switching from coroutines to async.
However, the performance increases resulting from process optimizations that followed alone would justify a major release. Have a look:

The performance benchmark introduced in 2.6.0 allows comparing changes. The tests consisted of loading every glTF from the glTF-Sample-Model collection, which has a wide range of models (no KTX though).

On average models load ~35% faster.

smooth

If you look at individual tests (sorted from slowest to fastest in 2.6.0), you see that the majority got faster, some didn't change much and only a few regressed. The worst case got 25% slower and the best got 82% faster.

smooth_times

This regression is mostly because of a much more stable, smooth frame rate. Look at how the average maximum frame time decreased considerably while the average minimum and average(across tests) average(across frames within a test) increased. This means that that work is spread more evenly across frames, sometimes increasing the overall loading time slightly. The goal is maximum staying below 16.6 ms (for 60 fps), so there's still some work to do.

smooth_frames

But glTFast can also load as fast as possible, regardless of frame times. In this case the loading times also improved:

fast_times

Changed

  • Converted API and internals to async/await. This is more convenient in some cases and eases future optimizations.
  • Performance improvements
    • Non-trivial JSONs are parsed in a thread now
    • More consistent frame rates due to task duration estimation in various places along the loading code
    • Embed base 64 buffers are decoded in a thread now
    • Less memory usage (and likely faster) du to Jpeg and PNG textures being loaded non-readable (if possible)

glTFast 2.6.0

31 Jan 21:57
Compare
Choose a tag to compare

Fixed testing and added performance testing to have a base to compare upcoming version 3.0.0 against

Added

  • Support for performance benchmark package

Fixed

  • Unit tests are working in builds again (not just in the Editor)

glTFast 2.5.1

21 Jan 23:48
Compare
Choose a tag to compare

Changed

  • Renamed glTF shader graph properties to match Unity Lit/BuiltIn Standard shader properties. Switching shaders preserves more attributes this way.

Fixed

  • Consistent casing in shader graph names
  • Apply material's occlusion strength properly
  • Removed artifacts on double sided opaque materials
  • Properly clean up volatile download dictionaries
  • Build compilation when targeting URP/HDRP