All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support for skinning
- Instantiation can now be customized via injection
- Complete refactor to allow more optimization by using Unity's new Mesh API (introduced in 2019.1)
- Required Unity version was raised to 2019.1 or newer
- Material generator (IMaterialGenerator) is now properly exposed and can be injected ( thanks @p-skakun for #80 )
- Reduced memory usage by uploading mesh data instantly and make it no longer readable
- Unlit shader now works with vertex colors
GltFast.LoadingDonestate property indicates if loading routine has finishedGltfAssetBase, a minimum asset component for manual loading via scriptGetMaterialinterface, to retrieved imported materials by index.
- Added loading state sanity checks to instantiation
- Loading glTFs with materials only (no scene/geometry)
- Normal texture scale is applied correctly now
- Abstract interface
IDownloadProviderlet's users implement custom download behavior (useful for authentification or caching) - Added
CustomHeaderDownloadProvider, a reference implementation that downloads glTF's files with custom HTTP headers
- Removed support for obsolete draft extensions
KHR_texture_cttfandKHR_image_ktx2
- Correct (brighter) colors due to color-space conversion (conversion from linear to gamma before applying to material)
- Correct shading in linear color space projects due to correct (linear) sampling of normal, occlusion and metallic-roughness maps
- Memory leak: free up volatile array
imageFormats
- Support for Draco mesh compression is now optional (install DracoUnity package to enable it)
- Support for KTX2/Basis Universal textures is now optional (install KtxUnity package to enable it)
- Faster mesh creation due to using the advanced Mesh API on Unity 2019.3 and newer.
- Support for texture samplers' wrapping mode
- Support for texture samplers' filter modes (partial; see issue)
- Increased performance due to more balanced threading by making all C# Jobs parallel
- Refactored loading behavior
- Main loading class does not interfere with it's IDeferAgent anymore. It just follows its order.
GltfAssetnow has aloadOnStartupflat to disable automatic loadingGltfAsset.onLoadCompletenow also returns itsGltfAssetinstance for convenience
- Redundant Load calls when using
UninterruptedDeferAgent
- Normals and tangents (if not present) are only calculated if the assigned material actually requires them.
- Experimental KTX / Basis Universal support was merged (off by default)
- Proper error handling invalid URL/path
- Improved glTF-binary URL extension detection
- Correct index order for line strip primitives (#59)
- Support for Universal Windows Platform (not verified/tested myself)
- Refactored GltFast class to control loading coroutine in an effort to make usage and future port to async easier.
- Optimization: Data loading is now based on accessors (rather than primitives). This reduces redundant loading jobs wherever accessors are used across primitives.
- Optimization: Primitives of a mesh, that share vertex attributes now become sub-meshes of one Unity Mesh. This reduces memory usage and creates less Renderers/GameObjects.
- glTF type (JSON or binary) is now auto-detected based on file name extension. Removed obsolete
GlbAsset. This was done soGltfAssetcan be derived off more flexible.
- Support for quantized mesh data via
KHR_mesh_quantizationextension
- UV space conversion now happens per UV coordinate (not negatively scaled via texture tiling anymore). This helped to fix tangent calculation.
- glTF standard shaders now have a cull mode, allowing them to be double-sided. The now obsolete
Doublevariants were removed (thanks to Ben Golus for support)
- Certified correct normal mapping by making normals, UVs and tangents consistent
- Double sided material fixes
- Shader compilation error on Vulkan/GLES3
- Support for texture transform (extension KHR_texture_transform)
- Support for double sided materials
- Support for data URI / embedded buffers and images
- Support for vertex colors in materials
- Support for implicit/undefined primitive indices
- Experimental support for primitive modes points, lines, line strip and line loop
- Using custom glTF shaders instead of Unity Standard shaders. This speeds up occlusion and roughness/metallic texture loading since they don't have to be converted at runtime anymore.
- Factor and texture (for metallic-roughness and specular-glossiness) are now multiplied as defined in spec.
- Unlit materials now support baseColorTexture and texture transforms
- glTF binary with Draco compression (decoding error due to invalid buffer view access)
- Legacy .NET speed regression
- Unity backwards compatibility (tested with 2018.2 with .NET 3.5)
- Removed job-less support
- The node or primitive GameObjects now have their mesh's name, if there is no node name provided
- Correct transforms and coordinate space. The glTF scene's root node is not scaled negative in any axis anymore
- Texture default wrap mode is repeat (not set to clamp anymore)
- Support for unlit materials (KHR_materials_unlit extension)
- Support for specular-glossiness type materials (KHR_materials_pbrSpecularGlossiness extension)
- Fixed broken assembly references by switching to non-GUID refs (thanks Stephen Gower for pointing it out)
- Metallic-Roughness texture not working. Now they are created only after their source was properly loaded.
- Draco mesh compression support
- Report unsupported glTF extensions and gracefully fail if a required extension is not supported.
- Tranformed Project into a Unity Package, which can easily be installed via Package Manager
0.3.0 - 2019-06-30
- Threaded glTF loading via Unity Job System
- Update to Unity 2019.1.7f1
- Formatted ChangeLog markdown file
0.2.0 - 2019-02-22
- Support for regular JSON glTFs (non-binary)
- First pre-release
- Support for meshes with more than 65k vertices.
- free up memory when destroying content
- Added support for interleaved vertex data
- added support for 3 component vertex colors (rgb without alpha)
- added support for uint16 vertex colors
- fixed metallic roughness texture usage (workaround)
- fixed occlusion texture usage (workaround)
- initial version