Skip to content

Releases: atteneder/glTFast

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

glTFast 2.5.0

14 Dec 12:49
Compare
Choose a tag to compare

Added

  • Ported partial support for transmission materials to URP/HDRP 7.x
  • Improved/alternative transmission mode for Universal Render Pipeline that kicks in if Opaque Texture is enabled in URP settings

glTFast 2.4.0

10 Dec 13:01
Compare
Choose a tag to compare

Added

Changed

  • Performance improvement: Avoid redundant Shader.Find invocations by making cached shader references static
  • Built-In shaders can customized now by overriding BuiltInMaterialGenerator.FindShader* methods

Fixed

  • Unlit double sided shader graph materials

Note: The next major release (3.0.0) will raise the minimum required Unity version to 2020.2 and subsequently up to 2020.4 LTS. This is necessary to support new material features in Universal and High Definition Render Pipelines.

glTFast 2.3.0

04 Dec 22:59
Compare
Choose a tag to compare

Added

  • Support for Shader Graph based Render Pipelines including Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP) (#41,#42)
  • Material inspector: texture rotation value (in degrees) for both built-in and Shader Graph materials
  • GltfAsset now provides a streamingAssets option (default is off), for loading relative paths from the StreamingAssets folder
  • GameObjectBoundsInstantiator, a derived version of GameObjectInstantiator that calculates the glTF's axis-aligned bounding box
  • GltfBoundsAsset, a derived version of GltfAsset that adds a BoxCollider to instantiations
  • Render Tests: Minimize chance of visual regression by checking import results against reference images

Changed

  • Texture transform UV rotation: Using standard _ST property (Scale-Translation) by default. When rotation is enabled, scale values act as m00/m11 values of 2-by-2 rotation/scale matrix and are supplemented by two rotation values (for m01/m10).
  • Textures that fail to load don't cause the whole loading process to fail (thanks @Bersaelor for #117)
  • Unit Tests: Sample model list is now part of GltfSampleSet objects and not loaded from text file anymore

Fixed

  • Removed shader compiler warnings for built-in shaders
  • Removed compiler warnings in Unity 2020.1/2020.2
  • Changes to materials (in custom shader GUI) are saved now
  • Invalid matrix error. ValidTRS reports error in matrix data that does look correct (fixes #116)
  • Removed potential memory leak warnings by allocating all buffers permanently (#115)

glTFast 2.2.0

20 Nov 11:52
Compare
Choose a tag to compare

Added

  • Blend mode can be set in inspector for glTF materials via custom ShaderGUI (thanks @camnewnham for #89)
  • Option to make all mesh data readable via GLTFAST_KEEP_MESH_DATA scripting define (alternative to #86)
  • Better support for URLs without file extension. glTF type (JSON or binary) is derived from HTTP Content-Type header, if present. (thanks @camnewnham for #87)
  • Method GltFast.LoadGltfBinary to load .glb files from byte arrays is public now (#81)

Changed

  • Switched internal URL type from string to Uri
  • Dependency on com.unity.mathematics was added (for matrix decomposition; see fix below)

Fixed

  • Unit tests updated to latest glTF-Sample-Models
  • Absolute URI in external resources
  • Special characters in URL (#79)
  • Corner-case matrix decomposition errors (#99)
  • Missing Shader results in error message instead of exception (#88)