-
Added support for the
KHR_node_visibilityextension. -
Added new
NODE_SKINNED_MESH_PARENT_TRANSFORMSvalidation warning.
- Changed
NODE_SKINNED_MESH_NON_ROOTdefault severity to Information.
-
Added support for
KHR_materials_anisotropyextension.- Added
KHR_MATERIALS_ANISOTROPY_ANISOTROPY_TEXTURE_TEXCOORDvalidation warning.
- Added
-
Added support for
KHR_materials_dispersionextension.- Added
KHR_MATERIALS_DISPERSION_NO_VOLUMEvalidation warning.
- Added
-
Added new tangent space validations:
MESH_PRIMITIVE_NO_TANGENT_SPACEvalidation error andMESH_PRIMITIVE_GENERATED_TANGENT_SPACEvalidation warning. -
Added new
KHR_MATERIALS_CLEARCOAT_CLEARCOAT_NORMAL_TEXTURE_TEXCOORDvalidation warning. -
Added partial support for the
KHR_animation_pointerextension.- Added new
KHR_ANIMATION_POINTER_ANIMATION_CHANNEL_TARGET_NODEandKHR_ANIMATION_POINTER_ANIMATION_CHANNEL_TARGET_PATHvalidation errors. - Added new
INCOMPLETE_EXTENSION_SUPPORTvalidation info.
- Added new
-
Web version now supports external resources in directories.
-
Removed
UNRESERVED_EXTENSION_PREFIXvalidation warning. -
Removed
KHR_MATERIALS_IRIDESCENCE_THICKNESS_RANGE_INVALIDvalidation error following the spec update.
-
Fixed incorrect errors when an indexed attribute, e.g.,
COLOR_0, is used in morph targets (#178, #213). -
Fixed incorrect errors in the Web version when an asset contains non-relative URIs (#229).
-
Fixed crash when skin weights data is missing (#196).
-
The
validateBytesJS API function now supports aformatvalidation option to bypass format detection and force GLB or glTF JSON explicitly. -
Added an option to ignore all validation issues except those passed explicitly; supported in both JS API and YAML config file.
-
Fixed false positive
ANIMATION_DUPLICATE_TARGETScaused by animation targets withoutnode(#190). -
Fixed false positive
ANIMATION_SAMPLER_OUTPUT_ACCESSOR_INVALID_COUNTcaused by animation targets with unknownpath.
-
Added support for
KHR_materials_iridescenceextension. Added:KHR_MATERIALS_IRIDESCENCE_THICKNESS_RANGE_INVALIDerror;KHR_MATERIALS_IRIDESCENCE_THICKNESS_RANGE_WITHOUT_TEXTUREinfo;KHR_MATERIALS_IRIDESCENCE_THICKNESS_TEXTURE_UNUSEDinfo.
-
Added
KHR_MATERIALS_VOLUME_DOUBLE_SIDEDwarning. -
Added new vendor prefixes.
- Fixed inconsistent handling of meshes with morphed and non-morphed primitives.
- Added
GLB_EXTRA_DATAwarning. Extra bytes beyond the declared GLB total length are now ignored.
-
Fixed crash when exceeding the maximum reported issues threshold while parsing GLB structures.
-
Fixed erroneous line break in the generated issues table.
- ZIP-archives generated on Windows can now be opened on other platforms.
-
Added support for
KHR_materials_emissive_strengthextension; addedKHR_MATERIALS_EMISSIVE_STRENGTH_ZERO_FACTORwarning. -
Added
KHR_MATERIALS_VOLUME_NO_TRANSMISSIONwarning. -
Added 10 new vendor prefixes.
-
Added allowed accessor formats for
TEXCOORD_nandCOLOR_nmorph target attributes. -
Added
ANIMATION_SAMPLER_ACCESSOR_WITH_BYTESTRIDEerror. -
Added
BUFFER_BYTE_LENGTH_MISMATCHerror. -
Added
BUFFER_VIEW_TARGET_MISSINGhint. -
Added
CAMERA_XMAG_YMAG_NEGATIVEwarning. -
Added
GLB_EMPTY_BIN_CHUNKinfo. -
Added
URI_GLBinfo. -
Added
UNUSED_MESH_WEIGHTSandUNUSED_MESH_TANGENTinfos.
-
Skipped range-checking for vertex color attributes not defined in the spec.
-
Data URIs with content not matching the declared
mediatypenow triggerINVALID_URIerror. -
Updated
INVALID_IBM_ACCESSOR_COUNTvalidation logic and message. -
Updated
MESH_PRIMITIVE_MORPH_TARGET_NO_BASE_ACCESSORvalidation message. -
Fixed JSON-pointers for
IMAGE_MIME_TYPE_INVALIDerror. -
Changed
ASSET_MIN_VERSION_GREATER_THAN_VERSIONdefault severity to Error. -
Changed
CAMERA_XMAG_YMAG_ZEROdefault severity to Error. -
Changed
DATA_URI_GLBdefault severity to Warning. -
Removed
BUFFER_EMBEDDED_BYTELENGTH_MISMATCHerror. -
Removed
BUFFER_EXTERNAL_BYTELENGTH_MISMATCHerror. -
Removed
INTEGER_WRITTEN_AS_FLOATwarning. -
Removed
MESH_PRIMITIVE_TANGENT_POINTSandMESH_PRIMITIVES_UNEQUAL_JOINTS_COUNTvalidation issues.
-
Fixed false positive
NODE_EMPTYcaused by unknown extensions. -
Fixed assertion on JSON arrays containing numbers that do not fit into double precision.
-
Made
BUFFER_DATA_URI_MIME_TYPE_INVALIDvalidation case-insensitive. -
Tightened JPEG and WebP detection logic.
- Updated 3rd-party licenses and included docs in all generated archives.
-
Added support for
KHR_materials_variantsextension. -
Added support for new PBR extensions:
KHR_materials_ior,KHR_materials_specular, andKHR_materials_volume. -
Added
MESH_PRIMITIVE_ATTRIBUTES_ACCESSOR_UNSIGNED_INTvalidation error (#154). -
Added new vendor prefixes:
ASOBO,CITRUS,CLO,OFT.
-
Fixed incomplete JSON pointers for out-of-range array elements.
-
Web build is now usable from a local filesystem.
-
Added
exe-archiveandweb-archivetasks to generate release archives. -
Fixed test names for
KHR_lights_punctualextension. -
Changed default severity of
UNSUPPORTED_EXTENSIONto Info.
-
Added support for new PBR extensions:
KHR_materials_clearcoat,KHR_materials_transmission, andKHR_materials_sheen. -
Added
CAMERA_YFOV_GEQUAL_PIvalidation warning (#140). -
Added new
SKIN_IBM_ACCESSOR_WITH_BYTESTRIDEerror for IBM accessors using buffer views with definedbyteStride. -
Added new
IMAGE_BUFFER_VIEW_WITH_BYTESTRIDEerror for images using buffer views with definedbyteStride. -
Added new vendor prefixes:
ANIMECH,EPIC,GRIFFEL,MAXAR,MPEG,PANDA3D,PTC,SEIN,SPECTRUM,TRYON,UX3D, andVRMC.
-
Modified
MULTIPLE_EXTENSIONSwarning. It is now reported only for explicitly standalone extensions (#145 and #146). -
Added missing check for morph target accessors overriding buffer view usage.
-
Fixed an endless loop on assets with a node loop within a scene (#141).
-
Fixed wrong pointer for undeclared root extensions (#150).
-
Fixed building all targets at once (
pub run grinderwith no args). -
Fixed missing JS API error messages when the validator is compiled in debug mode.
-
Web drag-n-drop tool now shows a correct message when no glTF assets were provided.
-
npm tool no longer re-defines
require(#139). -
npm tool no longer requires
options.externalResourceFunctionfor GLB or assets with embedded data (#138). -
options.validateAccessorDatanpm tool flag is removed, accessors' data validation is always enabled. -
npm tool now reports
IO_ERRORfor external resources whenoptions.externalResourceFunctionis not provided. -
CLI tool now supports
--stdoutflag for writing a single validation report to STDOUT instead of a new file. -
CLI tool validates binary data by default (#138).
-
Validating an asset with an extension that alters allowed enum values (like MIME types for images or vertex formats for accessors) no longer affects subsequent validation runs (introduced in
2.0.0-dev.3.0). -
Special characters (
~and/) in JSON Pointers (RFC 6901) are now properly escaped.
-
(CLI) When validating a directory, the validator now additionally lists assets with errors in the end.
-
(CLI) Usage info and runtime errors are more accurate now.
-
Fixed crash on unresolved node children used in a scene (introduced in
2.0.0-dev.3.0). -
Fixed incorrect error message in
ARRAY_LENGTH_NOT_IN_LISTfor accessors of integer component type. -
ARRAY_LENGTH_NOT_IN_LISTno longer reported for accessors of unknown type. -
IBM and attribute accessor data is no longer validated when the accessors have invalid formats.
-
(CLI) Uncaught runtime errors no longer hang directory validation.
-
(CLI) Await until the report is written and flushed to disk (#126).
-
(npm) Fixed crash on missing validation options JS object (introduced in
2.0.0-dev.3.0). -
(npm) Fixed compatibility with Web Workers (was broken in
2.0.0-dev.3.0).
-
Added support for
EXT_texture_webpextension.- When the extension is not declared in
extensionsUsed, image objects with WebP data are reported with a newIMAGE_NON_ENABLED_MIME_TYPEerror.
- When the extension is not declared in
-
Added support for
KHR_mesh_quantizationextension. -
Added
NON_REQUIRED_EXTENSIONerror for extensions that cannot be optional (such asKHR_quantized_geometry). -
Added vendor prefixes:
MESHOPT,POLUTROPON, andAGT(#119). -
Added vendor prefixes:
ALCMandSKYLINE. -
Added vendor prefixes:
FOXIT,KDAB, andCAPTURE. -
Extension names are now validated to have an upper-case prefix separated from the rest on the name with underscore (new
INVALID_EXTENSION_NAME_FORMATwarning). -
Referencing an image of type defined by an extension from the core objects now results in
TEXTURE_INVALID_IMAGE_MIME_TYPEerror. -
Added
IMAGE_FEATURES_UNSUPPORTEDwarning for images that contain features (like animation in WebP) not supported by glTF. -
Validation report now includes color-space information for provided images.
-
Validation report
infoobject now includes more information about asset's performance characteristics (see #120). -
Vertex colors with values outside of
[0.0 .. 1.0]range now issueACCESSOR_NON_CLAMPEDerror. -
Skinning validation (fixes #58):
-
When a node with a skinned mesh is used in a scene, the skeleton's common root must be available in the same scene (
NODE_SKIN_NO_SCENEerror). -
The skeleton nodes of a skin must have a common root (
SKIN_NO_COMMON_ROOTerror). -
The
skin.skeletonproperty, when present, must point to a common root (SKIN_SKELETON_INVALIDerror). -
Animation channels should not target a node with a skinned mesh (
ANIMATION_CHANNEL_TARGET_NODE_SKINwarning). -
A node with a skinned mesh should be a root node (
NODE_SKINNED_MESH_NON_ROOTwarning). -
A node with a skinned mesh should not have local transforms (
NODE_SKINNED_MESH_LOCAL_TRANSFORMSwarning). -
Vertex influences validation:
-
All joints values must be within the range of joints in the skin (
ACCESSOR_JOINTS_INDEX_OOBerror). -
No joint may have more than one non-zero weight for a given vertex (
ACCESSOR_JOINTS_INDEX_DUPLICATEerror). -
Weights must be non-negative (
ACCESSOR_WEIGHTS_NEGATIVEerror). -
Weights for each vertex must be normalized to have a linear sum of
1.0(ACCESSOR_WEIGHTS_NON_NORMALIZEDerror). -
Unused joint values (i.e. joints with a weight of zero) should be set to zero (
ACCESSOR_JOINTS_USED_ZERO_WEIGHTwarning).
-
-
-
Upgraded to the latest stable SDK.
-
Generated npm package no longer requires polyfills when using webpack with certain configurations (fixes #110).
-
It is now possible to omit timestamps from validation reports.
-
It is now possible to set the number of used threads for directory validation (cmd-line tool only).
-
Validation report now consistently uses lower-case enums.
-
Native executable binaries can now be compiled. See the readme for details (fixes #113).
-
Generated report filename is now
<asset>.report.json. -
Unit tests (300+) are now consistently stored: an asset and its validation report. Combined with provided JSON catalogs, they could be used for testing other glTF implementations.
-
Major refactoring of binary data validation. Now, mesh and animation accessor issues are attributed to the corresponding binding points rather than to accessor objects. This change makes validation reports more precise when accessors are reused. Namely:
-
ACCESSOR_ANIMATION_INPUT_NEGATIVEandACCESSOR_ANIMATION_INPUT_NON_INCREASINGare attributed toanimation.sampler.input. -
ANIMATION_SAMPLER_OUTPUT_ACCESSOR_NON_NORMALIZED_QUATERNION(new) is attributed toanimation.channel.sampler. -
ACCESSOR_INVALID_SIGNis attributed tomesh.primitive.attributes.TANGENT; its message is more sound now. -
ACCESSOR_VECTOR3_NON_UNIT(renamed fromACCESSOR_NON_UNIT) is attributed tomesh.primitive.attributes.NORMALormesh.primitive.attributes.TANGENT. -
ACCESSOR_NON_CLAMPEDis attributed tomesh.primitive.attributes.COLOR. -
ACCESSOR_INVALID_IBMis attributed toskin.inverseBindMatrices. -
ACCESSOR_INDEX_OOB,ACCESSOR_INDEX_PRIMITIVE_RESTART, andACCESSOR_INDEX_TRIANGLE_DEGENERATEare attributed tomesh.primitive.indices.
-
-
ACCESSOR_INVALID_FLOATmessage is more specific. -
Fixed incorrect message in
ACCESSOR_INDEX_OOB. -
BUFFER_VIEW_TOO_LONGis now attributed tobufferView.byteLengthwhenbufferView.byteOffsetfits the referenced buffer. -
FILE_NOT_FOUNDis renamed toIO_ERROR; its error messages are now more consistent across platforms. -
Web drag-n-drop validator now issues an error when external resources are not available among dropped files.
-
ACCESSOR_INDECOMPOSABLE_MATRIXrenamed toACCESSOR_INVALID_IBM; IBM data is no longer checked for TRS decomposition. -
Unused texture coordinates are now consistently reported as
UNUSED_OBJECTwith proper pointers regardless of material presence;MESH_PRIMITIVE_UNUSED_TEXCOORDis removed (fixes #117). -
MESH_PRIMITIVE_JOINTS_WEIGHTS_MISMATCHnow reports mismatching numbers. -
Removed
BUFFER_NON_FIRST_GLBwarning (fixes #121). -
Removed
ANIMATION_SAMPLER_OUTPUT_INTERPOLATION. -
Removed
WEB3D_quantized_attributesandCESIUM_RTCextensions support.
-
Fixed possible crash on empty input stream.
-
Fixed possible crash on unresolved animation sampler inputs.
-
BUFFER_VIEW_TOO_LONGis now correctly attributed to the invalid property. -
When
buffer.byteLengthis undefined for an embedded buffer,BUFFER_EMBEDDED_BYTELENGTH_MISMATCHis no longer reported. -
When
asset.versionis undefined or incorrect,ASSET_MIN_VERSION_GREATER_THAN_VERSION,UNKNOWN_ASSET_MAJOR_VERSION, andUNKNOWN_ASSET_MINOR_VERSIONare no longer reported. -
When reported,
UNKNOWN_ASSET_MAJOR_VERSIONandUNKNOWN_ASSET_MINOR_VERSIONerrors now point toasset.version. -
MESH_PRIMITIVE_TANGENT_WITHOUT_NORMALandMESH_PRIMITIVE_TANGENT_POINTSnow point to tangent attribute instead ofprimitive.attributesobject. -
Numerical thresholds for unit-length vectors are now chosen to accommodate possibly-quantized values.
-
Fixed missing
UNRESOLVED_REFERENCEerrors forKHR_lights_punctualextension. -
When the root
KHR_lights_punctual(withlightsarray) extension object is not present, its node counterpart now issuesUNSATISFIED_DEPENDENCYerror. -
Reported issues about invalid JSON syntax or invalid root object type no longer have JSON pointers.
-
Fixed incorrect message in
BUFFER_VIEW_TOO_BIG_BYTE_STRIDE. -
Fixed possible crash on invalid buffer or image objects (#125).
-
Added
ACCESSOR_INDEX_PRIMITIVE_RESTART(#102). -
Added
DATA_URI_GLB(#103). -
Updated language for
UNSUPPORTED_EXTENSION, publish a list of supported extensions (#101). -
JS API can now provide a list of supported extensions.
-
Updated indexed semantics validation to match the updated spec (#107).
-
Unsupported extension objects cannot be
nullanymore (#108). -
Added
KHR_lights_punctualsupport. -
Renamed error code
NODE_ROTATION_NON_UNITtoROTATION_NON_UNIT.
-
Fixed crash on validating sparse accessors when data is unavailable (#99).
-
Added
NON_OBJECT_EXTRASvalidation issue.
- Updated extension reserved prefixes.
-
Improved errors on invalid JS API usage.
-
Fixed global namespace issues for npm build.
-
Added ES6 module definition.
-
Fixed an NPM package regression caused by the new building process.
-
Changed
INTEGER_WRITTEN_AS_FLOATdefault severity to Warning. -
Changed
UNUSED_OBJECTdefault severity to Info. -
Fixed handling of GLB assets with buffers with broken URIs.
-
Internal tweaks.
-
Added
UNUSED_OBJECThint (#80). -
Added
KHR_texture_transformsupport. -
Changed
MESH_PRIMITIVE_NO_POSITIONdefault severity to Warning. -
Added UTF-8 BOM detection for byte inputs.
- Fixed a crash in the NPM build when
externalResourceFunctionisn't provided (#81).
-
Changed
VALUE_NOT_IN_LISTandIMAGE_UNRECOGNIZED_FORMATdefault severities to Warning (#77). -
Using custom image format no longer issues
UNSATISFIED_DEPENDENCY(#77). -
Improved pointers for not found resources.
-
Buffers with broken URIs are no longer treated as GLB-stored.
-
Fixed a crash on images with broken URIs.
-
Updated validation report schema.
-
Added
MESH_PRIMITIVE_UNUSED_TEXCOORDissue. -
ACCESSOR_ELEMENT_OUT_OF_MIN_BOUNDandACCESSOR_ELEMENT_OUT_OF_MAX_BOUNDreport only summary of bounds violation. -
Changed
ACCESSOR_TOTAL_OFFSET_ALIGNMENTissue pointer to the whole accessor object.
-
Added
NODE_SKINNED_MESH_WITHOUT_SKIN,MESH_PRIMITIVES_UNEQUAL_JOINTS_COUNTissues. -
Removed Catmull-Rom as valid spline interpolation mode.
-
Fixed issue pointer corruption on empty accessors.
-
Improved drag-n-drop validator UX when assets contain many issues (#60, #65).
-
Fixed crash on malformed JSON (#66).
-
Fixed cubic splines unit length check (#70).
-
Added support for
KHR_materials_unlitextension. -
Added
MULTIPLE_EXTENSIONSwarning. -
Updated the list of reserved extension prefixes.
-
Added
GLB_UNEXPECTED_BIN_CHUNK,BUFFER_NON_FIRST_GLB, andBUFFER_MISSING_GLB_DATA(#67). -
Added
ANIMATION_SAMPLER_INPUT_ACCESSOR_TOO_FEW_ELEMENTSandANIMATION_SAMPLER_OUTPUT_INTERPOLATIONissues.
-
Fixed a crash when validating an asset from a string source with
maxIssuesoption set. -
Updated JS usage example to reflect that external resource callback should expect URI-encoded string.
- Users can now skip accessors data validation.
-
Added new validation checks
UNRESERVED_EXTENSION_PREFIXandMATERIAL_ALPHA_CUTOFF_INVALID_MODE. -
Refined JSON-Pointers for
DUPLICATE_ELEMENTS,UNSUPPORTED_EXTENSION,UNUSED_EXTENSION_REQUIRED,UNDEFINED_PROPERTY,ACCESSOR_ELEMENT_OUT_OF_MIN_BOUND,ACCESSOR_ELEMENT_OUT_OF_MAX_BOUND,ACCESSOR_MIN_MISMATCH, andACCESSOR_MAX_MISMATCH. -
Web front-end supports files selection in addition to drag-n-drop.
- JS docs update.
-
Updated JS API. See README.md for details.
-
Added external resources support for drag-n-drop web frontend.
-
Internal fixes.
-
New validation report format. See JSON Schema for details.
-
New validation checks:
MESH_PRIMITIVE_INDEXED_SEMANTIC_CONTINUITYandMESH_PRIMITIVE_TOO_FEW_TEXCOORDS. -
Users can now set max number of reported issues.
-
Users can now mute validation issues and/or override their severity.
-
Language and default severities of certain validation issues were refined.
-
Cmd-line version uses multiple threads when validating multiple assets.
-
Added
npm-publishgrinder task (for package maintainers only). -
Updated README with info about building from behind a corporate firewall.
- Initial tagged 2.0 release.