Releases: atteneder/glTFast
Releases · atteneder/glTFast
glTFast 6.0.0
Added
- Custom Add-On API (
GLTFast.Addons
namespace) - Support for alternative JSON parsing via Newtonsoft JSON
Accessor.ElementByteSize
: Byte size of one element of that accessorAccessor.ByteSize
: Overall byte sizeIGltfReadable.GetAccessor
: Generic byte-array view into an accessorGameObjectInstantiator
events that allow further instantiation customizationsNodeCreated
MeshAdded
EndSceneCompleted
- Value array JSON parsing tests
- String/enum conversions tests
- (Import) Clearcoat material support in HDRP and URP (via KHR_materials_clearcoat extension)
- (Export) Clearcoat material export support for HDRP Lit shader
Changed
- Bumped minimum Unity version to 2020.3.48f1
- Renamed
GltfAnimation
toAnimation
for consistent naming. - Bumped Burst dependency version to 1.8.4
- Bumped Mathematics dependency version to 1.3.1
Fixed
- Added Obsolete attribute to public schema class fields that are for serialization only and should not get modified directly.
- More robust parsing of (invalid) enum values
glTFast 5.2.0
Added
- Runtime tests
- (Export) Setting for deterministic export (limits concurrency to ensure consistent output)
- (DOTS) Support for Entities 1.0
Changed
- Optimized
Accessor.GetAccessorAttributeType
- Optimized
GltfEntityAsset.ClearScenes
via Burst - Bump minimum unity version from 2019.4.7f1 to 2019.4.40f1
Fixed
- Compiler errors and warnings on Unity 2023.2 (and newer) due to using obsolete types.
glTFast 5.1.0
Added
- (Export) Support for Draco mesh compressed exports
Changed
- Added proper root namespace to all assembly definitions
- License and copyright notices
glTFast 5.0.4
Changed
- (Export) Texture coordinates are now flipped vertically, similar to how it's performed at import. This ensures round-trip consistency (#342).
Fixed
- (Export) Invalid blend indices or blend weights are not exported anymore (as skinning is not supported yet; #556)
- Compiler error when using .NET Framework on 2021.3 and newer (#550)
GltfBoundsAsset
's instantiation settings are applied nowGltfBoundsAsset
'sBoxCollider
is positioned correctly, even if GameObject is not at scene origin (#565)
glTFast 5.0.0
This release contains multiple breaking changes. Please read the upgrade guide for details.
Added
settings
parameter toGameObjectBoundsInstantiator
's constructor- (Import) Support for lights via KHR_lights_punctual extension (#17)
- (Import) Exclude/include certain features (e.g. camera, animation, lights) via
InstantiationSettings.Mask
(of typeComponentType
) - DOTS instantiation settings support
- (Import) Additional load methods in
GltfImport
(#409)Load
override to load from abyte[]
LoadFile
to load from local filesLoadGltfJson
to load a glTF JSON from string
- (Import)
SceneObjectCreation
instantiation setting. It controls whether/when a GameObject/Entity should be created for the scene. Options:Always
,Never
,WhenSingleRootNode
. (#320) - (Import) Design-time import inspector now offers many more settings (feature parity with run-time settings)
- Extended access to
IGltfReadable
GetSourceRoot
GetSourceNode
GetBindPoses
GltfAsset
component got new properties for code-less setup- Import Settings
- Instantiation Settings
- Warning when trying to load the main scene if it is not defined (Editor and development builds only; #450)
- (Export) Support for camera export
- (Export) Support for lights export
- glTF icon assigned to imported glTF assets,
GltfAsset*
components and and various setting classes - (Import) Support for up to 8 UV sets (note: glTF shaders still support only two sets; part of #206)
IMaterialGenerator
was extended with support for points topology- (Export)
GameObjectExportSettings.DisabledComponents
to explicitely enable export of disabled components (e.g.MeshRenderer
,Camera
, orLight
) - (Export)
ExportSettings.ComponentMask
to include or exclude components from export based on type - (Export)
GameObjectExportSettings.LayerMask
to include or exclude GameObjects from export based on their layer - (Import) Async instantiation methods. This helps to ensure a stable frame rate when loading bigger glTF scenes (#205)
GltfGlobals
is public nowGameObjectInstantiator.SceneTransform
is public now
Changed
- The API was changed considerably to conform closer to Unity's coding standard and the Microsoft's Framework Design Guidelines. Some notable items:
- PascalCase on properties
- Removed direct access to fields
- More consistent naming of assemblies, namespaces, classes, constants, static members, etc.
- Removed majority of Rider code analysis warnings and suggestions
- Converted a lot of unintentionally public classes, types and properties to internal ones
- Replaced
CollectingLogger.item
with.Count
and.Items
iterator - Moved logging related code into
GLTFast.Logging
namespace - Renamed
Schema.RootChild
toSchema.NamedObject
and made it abstract - Converted
GameObjectInstantiator.Settings
toInstantiationSettings
- Removed
RenderPipelineUtils.DetectRenderPipeline
in favor ofRenderPipelineUtils.RenderPipeline
- Additional methods/properties (e.g. from class
GameObjectInstantiator
) are virtual, so they can be overriden GltfImport
implementsIDisposable
now (#194)- Support for PNG/Jpeg textures (via built-in packages Unity Web Request Texture and Image Conversion) is now optional (#321)
- Root entity created by
GltfEntityAsset
will inherit its GameObject's name, position, rotation and scale (at instantiation time) - Removed
GltfImport.GetAccessor
from public API (to be replace by a better API; see #426 for details) - Converted
emissiveFactor
shader property from low to high dynamic range (HDR) and removed the now obsoleteemissiveIntensity
shader property (float) - Shader keyword
_UV_ROTATION
was replaced by_TEXTURE_TRANSFORM
, which now controls tiling, offset and rotation all together - Animation is not played by default anymore (check the upgrade guide on how to restore this behavior; #339)
- (Import) Deprecated existing, sync instantiation methods in favor of new async ones
- KTX textures load much smoother thanks to bumping KtxUnity to 1.3.0 or 2.2.1
- Sped up loading of external KTX textures by avoid making a redundant memory copy.
IDownload
does not derive fromIEnumertor
anymore- (Import) Successfully tested mesh primitive draw mode
lines
and removed error message about it being untested - (Export) Disabled components (e.g.
MeshRenderer
,Camera
, orLight
) are not exported by default (see also: newGameObjectExportSettings.DisabledComponents
setting to get old behavior) - (Export) GameObjects with tag
EditorOnly
(including children) don't get exported (similar to building a scene) - Added optional
CancellationToken
parameter to async import/export methods. This is preparation work for proper cancellation. Does not work as expected just yet. - Refactored Assembly Definitions
glTFastSchema
was merged intoglTFast
and thus removedglTFastEditor
was renamed toglTFast.Editor
glTFastEditorTests
was renamed toglTFast.Editor.Tests
GltfAsset.FullUrl
is public now (convenient for some tests)IInstantiator
changesIInstantiator.BeginScene
signature dropped third parameterAnimationClip[] animationClips
that was depending on built-in Animation module to be enabled.IInstantiator.AddAnimation
was added. Only available when built-in Animation module is enabled.
- Converted properties that were hiding conversion logic or caching into methods
Accessor
:typeEnum
toGetAttributeType
/SetAttributeType
BufferView
:modeEnum
toGetMode
BufferView
:filterEnum
toGetFilter
AnimationChannelTarget
:pathEnum
toGetPath
AnimationSampler
:interpolationEnum
toGetInterpolationType
Camera
:typeEnum
toGetCameraType
/SetCameraType
LightPunctual
:typeEnum
toGetLightType
/SetLightType
Material
:alphaModeEnum
toGetAlphaMode
/SetAlphaMode
- Moved some nested classes into dedicated files and up the namespace hierarchy
GameObjectInstantiator.SceneInstance
is nowGameObjectSceneInstance
ImportSettings.NameImportMethod
is nowNameImportMethod
InstantiationSettings.SceneObjectCreation
is nowSceneObjectCreation
HttpHeader
's properties are readonly now. A constructor was added as compensation.
Removed
- Obsolete code
GltfImport.Destroy
(was renamed toGltfImport.Dispose
)GLTFast.GltFast
(was renamed toGltfImport
)GltfImport.InstantiateGltf
(was replaced byInstantiateMainScene
andInstantiateScene
)- Remains of Basis Universal extension draft state
Schema.Image.extensions
Schema.Image.ImageExtension
Schema.Image.ImageKtx2
Fixed
- Shader graphs' BaseColor, BaseColorTexture and vertex color calculations are now in correct color space
- Export MeshRenderer where number of materials does not match number of submeshes (thanks @DanDovi for #428)
- Shaders and shader graphs now have a proper main color and main texture assigned (except legacy shader graphs where this is not supported)
- No more redundant default (fallback) materials are being generated
- (JSON parsing) Potential NPDR when just one of many node extensions is present (#464)
- (Import) Draco meshes are correctly named (#527)
- (Import) Gracefully fallback to loading textures from byte arrays if UnityWebRequestTexture module is not enabled and trigger a warning.
- (Import)
GltfBoundsAsset.Load
properly passes on the logger now. - (Import) Exception upon loading a file that uses the
KHR_animation_pointer
extension.
glTFast 4.9.1
Changed
- (Import) An
Animator
component is added to the scene root GameObject when Mecanim is used as animation method (thanks @hybridherbst for #519). This is convenient at design-time and a preparation for Playable API support. - (Import) Frame rate improvement when using Draco compression (thanks @hybridherbst for #520).
glTFast 4.9.0
Added
- (Export) HDRP metallic/roughness texture assignment can be omitted by setting the corresponding smoothness remap range min equal to max and metallic factor to 0. Useful for only exporting the ambient occlusion channel of a mask map.
- (Export) HDRP occlusion texture assignment can be omitted by setting the corresponding AO remap minimum to 1.0. Useful for only exporting the metallic/smoothness channels of a mask map.
Changed
- (Export) Reduced memory footprint when exporting textures
- (Export) Faster temporary texture construction in Unity 2022 and newer
- (Import) Faster texture creation in Unity 2022 and newer
- (Import) Default (fallback) material now gets named
glTF-Default-Material
instead of shader's name, which is deterministic across render pipelines - (Export) Don't use HDRP Lit MaskMap metallic/smoothness channels if they are not used (i.e. metallicFactor is zero and smoothness remap range is zero)
- (Export) HDRP Lit base color map is exported as Jpeg, if alpha channel is not used (similar to other render pipelines)
IDownload
now has to implementIDisposable
as well which ensures resources are disposed correctly.
Fixed
- (Export) No empty filename for textures with no valid name (e.g.
.jpg
;#458) - (Export) Memory leak: Temporary textures are properly destroyed (happened on non-readable or ORM textures; fixes #502)
- (Import) Don't duplicate texture assets (textures referenced by relative URI; #508)
- (Shader) Built-in pbrMetallicRougness shader's metallicFactor property defaults to 1.0, according to the glTF spec
- (Export) HDRP Lit shader's normal scale is exported correctly now
- (Export) HDRP Lit shader's double sided property is exported correctly now
- (Export) HDRP Lit shader's smoothness remap property is exported correctly now
- (Export) HDRP Lit shader's occlusion texture has correct transform now (was vertically inverted before)
- (Export) HDRP Unlit color is exported correctly
- (Import) Unity 2020+ crash in Editor and builds due to undisposed
DownloadHandler
s - (Export) Case of duplicate meshes (even with identical primitives/attributes/indices/materials) when using .NET Standard in your project