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_anisotropy
extension #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
optimize
multi-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
--format
option to CLIvalidate
command #778 - NodeIO creates missing directories when writing .gltf resources #779
- Add
clearNodeParent()
,clearNodeTransform()
,getNodeScene()
#784 - (EXPERIMENTAL) Add
--config
flag 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
, andgetTextureChannelMask
to not requiredocument
parameter #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
ILogger
interface for user-specified logging. #653 - Add support for
.extras
on TextureInfo. #646 - Show normalized attributes in
inspect()
output. #638
v2.2 (Milestone)
Features:
Changedpackage.json#module
entrypoint 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_iridescence
extension. #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_ld
extension. #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_strength
extension. #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
.extras
on 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/extensions
and@gltf-transform/functions
, with Typedoc v0.20.
Breaking changes:
- Rename
@gltf-transform/lib
to@gltf-transform/functions
. #249 - Move
ao()
from@gltf-transform/functions
to the CLI, cutting size and dependencies of the functions package. - I/O
writeJSON
optionisGLB: true
changed 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_volume
extension. #161 - Add
EXT_mesh_gpu_instancing
extension. #115 - Add
--format={pretty,csv,md}
output options for CLIinspect
command. - 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_variants
extension.
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_compression
extension (decode only). - Add
KHR_texture_transform
extension. - Add
EXT_texture_webp
extension. - Add
KHR_materials_sheen
extension.
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
merge
command.
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.