v3.9 (Milestone)
Features:
- Update
prune()to remove redundant mesh indices #1164 - Update meshoptimizer to v0.20
v3.8 (Milestone)
Features:
- Add quantization options in
meshopt()function #1144 - Improve encoding of morh normals with quantization and meshopt encoding #1151
v3.7 (Milestone)
Features:
Other:
- Fix encoding of special characters in filenames when writing to disk #1118
- Fixed regression in quality of Draco compression #1077
- Updated
sharpCLI dependency to address high-priority WebP vulnerability in libwebp- See CVE-2023-4863 and CVE-2023-41064
v3.6 (Milestone)
Features:
- Add limited
textureCompress()support in web browsers (PNG, JPEG, WebP) #1075 - Bug fixes and quality improvements in
optimize(),dedup(),instance(),flatten()andjoin()operations #1073 textureCompress()PNG compression is now lossless by default #1068join()now supports quantized meshes #1067simplify()now cleans up degenerate mesh primitives #1066- Moved CLI to a fork of Caporal.js #1065
v3.5 (Milestone)
Features:
- Improvements to
weld()#1029 by @rotu - Add
--patternflag inetc1sanduastcCLI commands #1037 - Add
toleranceNormaloption inweld()#1046- Default vertex normal tolerance has been reduced (#1035), reducing loss of quality in some cases. Where more aggressive welding is required (such as simplification and LODs), users should specify
toleranceNormal=0.5to restore the previous default.
- Default vertex normal tolerance has been reduced (#1035), reducing loss of quality in some cases. Where more aggressive welding is required (such as simplification and LODs), users should specify
v3.4 (Milestone)
Special thanks to Muse for supporting development of the palette() feature.
Features:
v3.3 (Milestone)
Special thanks to @kzhsw for help with performance improvements in v3.3.
Features:
- Add
listTextureInfoByMaterial()function #947 - Add
getTextureColorSpacefunction #944 - Sync with
KHR_materials_anisotropyrelease candidate #946 - Improve performance of
dedup#945 - Improve performance of
resample, port to WASM #934
Internal:
v3.2 (Milestone)
Features:
v3.1 (Milestone)
Features:
- Add
--join <bool>and--flatten <bool>flags to `optimize' CLI command #838 by @xlsfs - Add
KHR_materials_anisotropyextension #748 - Allow root Nodes to be shared by multiple Scenes #833
- Deprecate
Node#getParent(), preferNode#getParentNode() - Deprecate
getNodeScene(), preferlistNodeScenes()
- Deprecate
v3.0 (Milestone)
Features:
- Add
optimizemulti-command to CLI, "optimize all the things" #819 - Replace Squoosh with Sharp, new
textureCompress()API #752 - Add
flatten()function, reduce scene graph nesting #790 - Add
join()andjoinPrimitives()functions, reduce draw calls #707, #658 - Add support for sparse accessors #793
- Add
--formatoption to CLIvalidatecommand #778 - NodeIO creates missing directories when writing .gltf resources #779
- Add
clearNodeParent(),clearNodeTransform(),getNodeScene()#784 - (EXPERIMENTAL) Add
--configflag to CLI, support userland extensions and commands #791
Breaking changes:
- Rename extension classes, include vendor prefixes #776
- Rename
bounds()→getBounds()#774 - Rename MathUtils
normalize()/denormalize()→encodeNormalizedInt()/decodeNormalizedInt()#777 - Rename ImageUtils
getMemSize()→getVRAMByteLength()#812 - Replace Squoosh with Sharp, new
textureCompress()API #752 - Update signatures of
listTextureChannels,listTextureInfo,listTextureSlots, andgetTextureChannelMaskto not requiredocumentparameter #787 - Store array literals (color, vector, ...) as copies #796
Internal:
v2.5 (Milestone)
Features:
- Add
weldPrimitive(document, prim, options)function #767 by @marwie - Support resampling quaternion keyframe tracks in
resample()#760 - Remove unused vertex attributes in
prune()#759 - Display KTX2 compression type in
inspect()report #757 - Add morph target support in
transformMesh(),transformPrimitive()#756 - Improve detection of duplicate meshes in
dedup()#663 by @robertlong
v2.4 — (Milestone)
Features:
- Add
sortPrimitiveWeights(prim, limit)function #670 - Add
listTextureInfo(texture)function #692 - Add
transformMesh(mesh, matrix)andtransformPrimitive(prim, matrix)functions #657 - Rewrite
weld()function, improving weld results #661 - Handle conflicting URLs during merge #677
- Add documentation for writing custom extensions #678
v2.3 (Milestone)
Features:
- Add
simplify()function. #655 - Add
ILoggerinterface for user-specified logging. #653 - Add support for
.extrason TextureInfo. #646 - Show normalized attributes in
inspect()output. #638
v2.2 (Milestone)
Features:
Changedpackage.json#moduleentrypoint extension to.mjs#619- Add 'slots' option to
textureResize()function. #622 by @snagy
v2.1 (Milestone)
Features:
- Vastly improved KTX compression speed. #389 by @mikejurka, @spatialsys
- Add
KHR_materials_iridescenceextension. #518 - Add WebP, OxiPNG, and MozJPEG image optimization with
@squoosh/lib. #506 - Add
draco(),meshopt(),unlit(), andktxfix()functions to@gltf-transform/functions(moved from CLI). #544 - Add
listTextureSlots(),listTextureChannels(),getTextureChannelMask(). #506
v2.0 (Milestone)
Features:
- Improved and simplified extension API. #437
- Add
a.equals(b)method for all property types. #437 - Add
KHR_xmp_json_ldextension. #468 - Add
NodeIO.setAllowHTTP(<boolean>). #466 - Non-blocking NodeIO read/write. #441
- Add
DenoIO(experimental). #380 - Add
normals()function. #497
Breaking changes:
- API for custom extensions updated. #437
- I/O, Texture and other classes use Uint8Array for binary data, not ArrayBuffer. #447
- I/O read/write methods are now asynchronous. #441
- Removed support for Node.js ≤ 12.x
v1.2 (Milestone)
Features:
- Add
dequantize()function. #431 - Add
KHR_materials_emissive_strengthextension. #422 - Add
ImageUtils.getMimeType(buffer). #432
v1.1 (Milestone)
Features:
- Extensions registered with I/O are written if used; unregistered extensions are skipped. #421
- Stages in
document.transform()can detect other stages and optimize accordingly. #417 - Added
material.equals(otherMaterial)method. #405 by @MrMagicPenguin - Added support for materials in
dedup()function. #407 by @MrMagicPenguin
v1.0 (Milestone)
Stable release.
v0.12 (Milestone)
Features:
- Add compression/decompression support for
EXT_meshopt_compression. #314 #323 - Add
reorder()function. #321 - Faster, smaller CLI installation. #281
- Improved
textureResize()API. #282 - Add
node.setMatrix(...). #270 - Parse in-memory Data URIs with
readJSON. #266 - Support
.extrason Root object #339
Breaking changes:
- Remove ao() function and dependencies. #281
v0.11 (Milestone)
Features:
- Add
textureResize()function. #267 - Add
quantizationVolume: 'scene' | 'mesh'option toquantize()and Draco compression. Fixes #257. #272 - Support GLB files without binary data (e.g. just a node graph). #245
- Improve type-checking throughout the library, with TypeScript's strict checks.
- Add API documentation for
@gltf-transform/extensionsand@gltf-transform/functions, with Typedoc v0.20.
Breaking changes:
- Rename
@gltf-transform/libto@gltf-transform/functions. #249 - Move
ao()from@gltf-transform/functionsto the CLI, cutting size and dependencies of the functions package. - I/O
writeJSONoptionisGLB: truechanged toformat: Format.GLB.
v0.10 (Milestone)
Features:
Breaking changes:
- Material extensions now track RGBA channel usage of each texture, allowing improvements in KTX 2.0 support. #221
v0.9 (Milestone)
Features:
- Add 'instance' transform. #169
- Add 'prune' transform. #162
- Add 'resample' transform. #158
- Add 'tangents' transform. #175
- Add 'quantize' transform. #59
- Add
KHR_materials_volumeextension. #161 - Add
EXT_mesh_gpu_instancingextension. #115 - Add
--format={pretty,csv,md}output options for CLIinspectcommand. - Add
--vertex-layout={interleaved,separate}options for CLI output.
Breaking changes:
- Stricter type checking.
- Enum values moved from
GLTF.*to static properties of the relevant class. Primitive enum values are now allowed. - Enable esModuleInterop in TS config.
- 'dedup' transform takes a
propertyTypes: string[]array, rather than boolean flags for each property type. - 'draco' CLI command options renamed (hyphenated) for consistency.
v0.8 (Milestone)
Features:
- Add 'weld' and 'unweld' transforms.
- Add encoding/compression support for
KHR_draco_mesh_compression. - Add KTX and WebP support in utils and 'inspect' function.
- Add
KHR_materials_variantsextension.
Breaking changes:
- Stricter type checking.
- External type definitions are now installed as dependencies.
v0.7 (Milestone)
Features:
- Add 'center' and 'sequence' transforms.
- Add 'bounds' helper.
- Enhance 'partition' transform to support animations.
- Add
KHR_draco_mesh_compressionextension (decode only). - Add
KHR_texture_transformextension. - Add
EXT_texture_webpextension. - Add
KHR_materials_sheenextension.
Breaking changes:
- Merged TextureSampler properties into TextureInfo.
- TextureInfo now extends from ExtensibleProperty.
- Simplified I/O API. Renamed:
- NativeDocument -> JSONDocument
- unpackGLB -> readBinary
- packGLB -> writeBinary
- createDocument -> readJSON
- createNativeDocument -> writeJSON
- unpackGLBToNativeDocument -> binaryToJSON
v0.6 (Milestone)
Features:
- Add world transform API (getWorldTranslation/getWorldRotation/getWorldScale/getWorldMatrix) and getMatrix to Node.
- Add ColorUtils and helper methods to work with colors in hexadecimal and sRGB.
- Add traverse method to Node.
- Simplified Extension API.
- Add Extras API.
CLI:
- Accept textures in
mergecommand.
Breaking changes:
- getExtension/setExtension syntax changed to accept extension names, not constructors. See ExtensibleProperty.
- Scene addNode/removeNode/listNodes are now addChild/removeChild/listChildren, for consistency with Node API.