Releases: atteneder/glTFast
glTFast 3.0.2
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
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
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.
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.
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.
But glTFast can also load as fast as possible, regardless of frame times. In this case the loading times also improved:
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
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.
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.
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.
But glTFast can also load as fast as possible, regardless of frame times. In this case the loading times also improved:
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
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
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
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
Added
- Partial support for transmission materials in built-in render pipeline (extension KHR_materials_transmission; see #111 for details)
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
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 astreamingAssets
option (default is off), for loading relative paths from the StreamingAssets folderGameObjectBoundsInstantiator
, a derived version ofGameObjectInstantiator
that calculates the glTF's axis-aligned bounding boxGltfBoundsAsset
, a derived version ofGltfAsset
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
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
toUri
- Dependency on com.unity.mathematics was added (for matrix decomposition; see fix below)