@needle-tools/gltf-build-pipeline 2.13.1 → 2.14.0-next.1f37dca

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +521 -520
  2. package/README.md +38 -38
  3. package/dist/cache/cache.d.ts +55 -55
  4. package/dist/cache/cache.js +326 -326
  5. package/dist/cache/index.d.ts +1 -1
  6. package/dist/cache/index.js +1 -1
  7. package/dist/cli/index.d.ts +2 -2
  8. package/dist/cli/index.js +198 -198
  9. package/dist/config/index.d.ts +53 -53
  10. package/dist/config/index.js +152 -152
  11. package/dist/constants.d.ts +7 -7
  12. package/dist/constants.js +7 -7
  13. package/dist/extensions/NEEDLE_compression_texture/NEEDLE_compression_texture.d.ts +24 -24
  14. package/dist/extensions/NEEDLE_compression_texture/NEEDLE_compression_texture.js +54 -54
  15. package/dist/extensions/NEEDLE_compression_texture/index.d.ts +1 -1
  16. package/dist/extensions/NEEDLE_compression_texture/index.js +1 -1
  17. package/dist/extensions/NEEDLE_mesh_compression/NEEDLE_mesh_compression.d.ts +27 -27
  18. package/dist/extensions/NEEDLE_mesh_compression/NEEDLE_mesh_compression.js +88 -88
  19. package/dist/extensions/NEEDLE_mesh_compression/index.d.ts +1 -1
  20. package/dist/extensions/NEEDLE_mesh_compression/index.js +1 -1
  21. package/dist/extensions/NEEDLE_opaque/NEEDLE_opaque.d.ts +27 -27
  22. package/dist/extensions/NEEDLE_opaque/NEEDLE_opaque.js +980 -980
  23. package/dist/extensions/NEEDLE_opaque/index.d.ts +3 -3
  24. package/dist/extensions/NEEDLE_opaque/index.js +30 -30
  25. package/dist/extensions/NEEDLE_progressive/NEEDLE_progressive.d.ts +48 -48
  26. package/dist/extensions/NEEDLE_progressive/NEEDLE_progressive.js +69 -69
  27. package/dist/extensions/NEEDLE_progressive/index.d.ts +1 -1
  28. package/dist/extensions/NEEDLE_progressive/index.js +1 -1
  29. package/dist/extensions/NEEDLE_progressive_mesh_settings/index.d.ts +23 -23
  30. package/dist/extensions/NEEDLE_progressive_mesh_settings/index.js +41 -41
  31. package/dist/extensions/NEEDLE_progressive_texture_settings/index.d.ts +25 -25
  32. package/dist/extensions/NEEDLE_progressive_texture_settings/index.js +38 -38
  33. package/dist/extensions/index.d.ts +7 -7
  34. package/dist/extensions/index.js +17 -17
  35. package/dist/extensions/utils.d.ts +6 -6
  36. package/dist/extensions/utils.js +72 -72
  37. package/dist/functions/weld.3.d.ts +76 -76
  38. package/dist/functions/weld.3.js +414 -414
  39. package/dist/index.d.ts +8 -8
  40. package/dist/index.js +8 -8
  41. package/dist/scripts/index.d.ts +2 -2
  42. package/dist/scripts/index.js +2 -2
  43. package/dist/scripts/pack-gltf.d.ts +15 -15
  44. package/dist/scripts/pack-gltf.js +136 -135
  45. package/dist/scripts/stats.d.ts +2 -2
  46. package/dist/scripts/stats.js +19 -19
  47. package/dist/transforms/index.d.ts +9 -9
  48. package/dist/transforms/index.js +9 -9
  49. package/dist/transforms/needle_animation_transform.d.ts +2 -2
  50. package/dist/transforms/needle_animation_transform.js +5 -5
  51. package/dist/transforms/needle_asset.d.ts +3 -3
  52. package/dist/transforms/needle_asset.js +50 -50
  53. package/dist/transforms/needle_common.d.ts +17 -17
  54. package/dist/transforms/needle_common.js +1 -1
  55. package/dist/transforms/needle_mesh_transform.d.ts +15 -15
  56. package/dist/transforms/needle_mesh_transform.js +223 -223
  57. package/dist/transforms/needle_progressive.d.ts +45 -45
  58. package/dist/transforms/needle_progressive.js +1075 -1043
  59. package/dist/transforms/needle_texture_transform.d.ts +13 -13
  60. package/dist/transforms/needle_texture_transform.js +257 -257
  61. package/dist/transforms/needle_toktx.d.ts +26 -26
  62. package/dist/transforms/needle_toktx.js +243 -243
  63. package/dist/transforms/needle_webp.d.ts +15 -15
  64. package/dist/transforms/needle_webp.js +53 -53
  65. package/dist/transforms/toktx.d.ts +52 -52
  66. package/dist/transforms/toktx.js +221 -221
  67. package/dist/transforms/toktx_types.d.ts +78 -78
  68. package/dist/transforms/toktx_types.js +62 -62
  69. package/dist/transforms/util.d.ts +21 -21
  70. package/dist/transforms/util.js +90 -90
  71. package/dist/utils/compression_utils.d.ts +2 -2
  72. package/dist/utils/compression_utils.js +6 -6
  73. package/dist/utils/fileutils.d.ts +19 -19
  74. package/dist/utils/fileutils.js +177 -177
  75. package/dist/utils/guid.d.ts +1 -1
  76. package/dist/utils/guid.js +5 -5
  77. package/dist/utils/index.d.ts +10 -10
  78. package/dist/utils/index.js +10 -10
  79. package/dist/utils/merge.d.ts +12 -12
  80. package/dist/utils/merge.js +31 -31
  81. package/dist/utils/mesh.d.ts +13 -13
  82. package/dist/utils/mesh.js +124 -124
  83. package/dist/utils/nodeio.d.ts +6 -6
  84. package/dist/utils/nodeio.js +86 -86
  85. package/dist/utils/stats.d.ts +70 -70
  86. package/dist/utils/stats.js +258 -258
  87. package/dist/utils/texture.d.ts +5 -5
  88. package/dist/utils/texture.js +14 -14
  89. package/dist/utils/validate.d.ts +5 -5
  90. package/dist/utils/validate.js +17 -17
  91. package/dist/utils/version.d.ts +1 -1
  92. package/dist/utils/version.gen.d.ts +1 -1
  93. package/dist/utils/version.gen.js +1 -1
  94. package/dist/utils/version.js +4 -4
  95. package/package.json +79 -79
  96. package/scripts/clear-caches.mjs +3 -3
  97. package/scripts/defaults.mjs +11 -11
  98. package/scripts/fileutils.mjs +5 -5
  99. package/scripts/index.mjs +41 -41
  100. package/scripts/limit-caches.mjs +3 -3
  101. package/scripts/make-progressive.mjs +16 -16
  102. package/scripts/pack-gltf.mjs +106 -106
  103. package/tsconfig.json +19 -19
package/CHANGELOG.md CHANGED
@@ -1,521 +1,522 @@
1
- # Changelog
2
- All notable changes to this package will be documented in this file.
3
-
4
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
-
7
- ## [2.13.1] - 2026-01-30
8
- - Fix: issue where animation resampling caused invalid animation data for certain animations with very small keyframe differences (NE-6872)
9
-
10
- ## [2.13.0] - 2025-10-20
11
- - Use xxhash-wasm for buffer hashing
12
-
13
- ## [2.12.0] - 2025-09-13
14
- - Update meshoptimizer to 0.25 and use `simplifyWithAttributes` by default
15
-
16
- ## [2.11.4] - 2025-08-18
17
- - Change: Default draco compression settings
18
-
19
- ## [2.11.3] - 2025-08-08
20
- - Fix: texture compression settings not being applied correctly
21
- - Change: CLI `transform` with `--progressive` does now ignore LOD files
22
- - Change: Increase local cache size to 5 GB
23
-
24
- ## [2.11.2] - 2025-08-07
25
- - Change: `product` usecase should not flatten/join objects
26
-
27
- ## [2.11.1] - 2025-08-06
28
- - Fix: issue where caching didn't store pre-calculated primitive densities. This caused incorrect LOD level calculation at runtime due to missing data when processing the same files a second time with caching enabled.
29
-
30
- ## [2.11.0] - 2025-08-01
31
- - add: store densities per primitive
32
- - fix: exception during cache key calculation
33
-
34
- ## [2.10.2] - 2025-07-17
35
- - fix: issue where draco compression fails with `[KHR_draco_mesh_compression] Accessor cannot be shared by compressed and uncompressed primitives`
36
-
37
- ## [2.10.1] - 2025-07-09
38
- - add: support for Needle MaterialX extensions
39
- - bump gltf-transform to 4.1.4
40
-
41
- ## [2.9.5] - 2025-05-23
42
- - change: `product` usecase uses `UASTC` compression for 'normalTexture'
43
- - update gltf-transform to 4.1.3
44
-
45
- ## [2.9.0] - 2025-05-22
46
- - add: initial texture compression mode support for `world` and `product`
47
-
48
- ## [2.8.1] - 2025-04-17
49
- - bump version
50
-
51
- ## [2.8.1-alpha.0] - 2025-03-26
52
- - Fix: Issue where cache key gets longer depending on the primitive count
53
- - Fix: Cache key not taking index buffer into account
54
- - Fix: Caching of mesh LODs did clone shared mesh attributes for every primitive instead of re-using previous clones
55
-
56
- ## [2.8.0-alpha.2] - 2025-03-04
57
- - change: use webp compression for textures smaller than 32x32
58
- - fix: webp compression for small textures (64x64)
59
-
60
- ## [2.8.0-alpha.0] - 2025-02-27
61
- - change: `product` usecase now uses webp compression for 'normalTexture' and 'metallicRoughnessTexture' textures
62
-
63
- ## [2.7.1] - 2025-02-14
64
- - fix: bug in caching path due to change in 2.7.0-alpha.2
65
-
66
- ## [2.7.0] - 2025-02-13
67
- - bump version
68
-
69
- ## [2.7.0-alpha.2] - 2025-02-13
70
- - fix: processing for some very large meshes where hashing the meshes failed (for caching the results)
71
-
72
- ## [2.7.0-alpha.1] - 2025-01-13
73
- - fix: handle LOD omitting and remove deleted files from progressive transform results list
74
-
75
- ## [2.7.0-alpha] - 2025-01-13
76
- - add: VRM mesh simplification support
77
- - fix: issue where the output directory was not created if it didn't exist yet
78
- - fix: try resolve deduplicated meshes
79
- - change: update gltf-transform to 4.1.1
80
- - change: modify mesh LOD settings for more vertices
81
-
82
- ## [2.6.0-alpha] - 2024-12-16
83
- - add: create placeholder textures for missing jpg, png, webp, gif, tif on disc
84
- - fix: compressing a gltf file to a different output directory does not falsely delete old external textures on disc in the input directory
85
-
86
- ## [2.5.0] - 2024-12-16
87
- - release
88
-
89
- ## [2.4.0] - 2024-09-11
90
- - release
91
-
92
- ## [2.4.0-beta.5] - 2024-09-06
93
- - fix: issue where mesh LODs would in some cases be compressed with "draco" while the root file would be compressed with "mesh-opt" if not explicitly specified in the root file. This would cause invalid rendering and randomly scaled LOD meshes. Now mesh LODs will always use the same mesh compression. [NE 5297](https://linear.app/needle/issue/NE-5297)
94
- - change: update gltf-transform dependency to 4.0.8
95
-
96
- ## [2.4.0-beta] - 2024-08-13
97
- - fix: issue where a mesh lod is removed during second processing of a directory that contains existing mesh lods
98
-
99
- ## [2.4.0-alpha.3] - 2024-08-11
100
- - fix: issue where files would not correctly be overriden in subdirectories when no output directory was specified
101
-
102
- ## [2.4.0-alpha.2] - 2024-06-29
103
- - fix: prevent joining/flattening of progressive assets
104
-
105
- ## [2.4.0-alpha.1] - 2024-06-26
106
- - add: heuristic for choosing mesh compression if not explictly configured
107
-
108
- ## [2.3.0-alpha.2] - 2024-06-26
109
- - change: usecase `product` does compress with UASTC again (for certain slots)
110
-
111
- ## [2.3.0-alpha.1] - 2024-06-23
112
- - change: bump gltf-transform to 4.0.2 to fix meshopt skinning regression [1439](https://github.com/donmccurdy/glTF-Transform/pull/1439)
113
-
114
- ## [2.3.0-alpha] - 2024-06-22
115
- - add: flatten and join for `product` usecase
116
-
117
- ## [2.2.1-alpha.8] - 2023-06-22
118
- - add: CLI <output> support
119
- - fix: register webp extension for valid glTF files. [issue 5122](https://linear.app/needle/issue/NE-5122)
120
- - fix: issue where VRM material would be pruned
121
- - change: VRM use meshopt compression where any blendshapes are found
122
-
123
- ## [2.2.1-alpha.7] - 2023-06-19
124
- - fix: WARN if image validation can not run
125
- - change: compress lightmap textures with webp
126
-
127
- ## [2.2.1-alpha.5] - 2023-06-18
128
- - add: `stats` now includes json and animation size info
129
- - change: VRM's are compressed with meshopt again
130
- - change: usecase `product` now uses webp compression
131
-
132
- ## [2.2.1-alpha.4] - 2023-06-17
133
- - add: `--verbose` option to transform command
134
- - add: `stats` command to create stats.needle.json
135
- - add: automatically detect mimetype mismatch and attempt to fix it
136
-
137
- ## [2.2.1-alpha] - 2023-06-15
138
- - fix: issue with progressive mesh cache key calculation when running multiple transform processes with different configurations
139
-
140
- ## [2.2.0-alpha.11] - 2023-06-14
141
- - fix: issue where progressive transform with un-indexed meshes would fail
142
-
143
- ## [2.2.0-alpha.10] - 2023-06-13
144
- - fix: progressive transform of converted GLB files where meshes don't have indicies
145
- - fix: skip progressive texture generation for textures for textures that already match the lowest LOD size
146
- - fix: if compression is set to None the LOD textures should respect that setting and also not be compressed
147
- - fix: fallback mesh density calculation for meshes that aren't indexed
148
- - fix: NEEDLE_mesh_compression extension falsely overriding primitive extensions
149
-
150
- ## [2.2.0-alpha.5] - 2023-06-06
151
- - add: CLI `--progressive` option to `transform` command (default is true)
152
- - add: CLI `--compress` option to `transform` command (default is true)
153
- - add: config `meshes: { lods: boolean }` option
154
- - remove: CLI "compress" command
155
- - change: enable texture LODs by default
156
- - fix: `--config` path can now point to a directory or a `needle.config.json` file as well
157
- - fix: mesh LOD regression caused by change in gltf-transform `weld` behaviour
158
- - fix: KTX SOFTWARE >= 4.3.0 is installed
159
-
160
- ## [2.1.0-alpha.6] - 2023-06-04
161
- - fix: errors when invoking npm scripts caused by the cli program
162
- - fix: remove cache directory error
163
- - fix: remove dedup for textures since this currently causes issues with gltf-progressive loading
164
-
165
- ## [2.1.0-alpha] - 2023-06-03
166
- - add: compression config support for high-level usecases that can be passed via commandline arguments or via config. Available options are currently `default`, `world` and `product`.
167
- - add: texture LODs can now be generated by passing in the path to a compression config. `--config <path/to/config.json>`
168
- - change: VRMs now use draco mesh compression by default
169
-
170
- ### Config Examples
171
- - `default` - use default compression. When not explictly configured textures will be compressed with ETC1S
172
- - `product` - when not explictly configured textures will use UASTC for `metallicRoughnessTexture` and `normalTexture`
173
- - `world` - generate texture LODs when enabled (and not explictly disabled by `textures: { lods: false }`)
174
- ```json
175
- {
176
- "usecase": "default" // optional
177
- "textures" : {
178
- "lods": true
179
- }
180
- }
181
- ```
182
- The config can also be part of a `needle.config.json`:
183
- ```json
184
- {
185
- ... regular needle.config
186
- "gltf": {
187
- "usecase": "default" // optional
188
- "textures": {
189
- "lods": true
190
- }
191
- }
192
- }
193
- ```
194
-
195
- ## [2.0.0-alpha] - 2023-06-01
196
- - update gltf-transform dependency to 4.x
197
- - change: ensure ETC1S and UASTC textures are power of 2
198
-
199
- - CLI: commands can be run with `needle-gltf <command>`
200
- - CLI: add `--cache` to allow disabling cache with `--cache False` (default true)
201
- - CLI: add `--stats` to produce `.needle.stats.json` (default false)
202
- - CLI: change `--output` to be the optional second argument
203
-
204
- ## [1.6.0-alpha.7] - 2023-05-30
205
- - fix: npx cli command return wrong error due to `packGLTF` not returning a booelan
206
- - fix: mjs script import paths
207
-
208
- ## [1.6.0-alpha.5] - 2023-05-28
209
- - fix: determine build pipeline version
210
- - change: throw error and exit process if packing or transform fails
211
-
212
- ## [1.6.0-alpha.2] - 2023-05-27
213
- - add: `gltf-build-pipeline` commandline support with `transform` and `compress` (pack-gltf) options.
214
-
215
- ## [1.5.0-alpha.12] - 2023-05-20
216
- - add: pack-gltf now also runs `resample` for animations
217
- - fix: nullreference error in accessing opaque debug options
218
-
219
- ## [1.5.0-alpha.10] - 2023-05-17
220
- - add: `generateLods` option to progressive texture settings
221
-
222
- ## [1.5.0-alpha.9] - 2023-05-16
223
- - add: start of VRM 1.0 support. Not implemented is the `VRMC_materials_mtoon` extension
224
-
225
- ## [1.5.0-alpha.8] - 2023-05-16
226
- - fix: issue where updating ktx compressed texture extension also flattened the path
227
-
228
- ## [1.5.0-alpha.7] - 2023-05-16
229
- - fix: external resources that are KTX2 compressed are now saved with a `.ktx2` extension
230
- - change: toktx now uses compression "auto" mode to select uastc or etc1s
231
- - change: toktx now checks the slots and increases quality for `metallicRoughnessTexture` and `normalTexture` but keeps using ETC1S for smaller file size
232
-
233
- ## [1.5.0-alpha.6] - 2023-05-15
234
- - fix: If not further specified then automatically use UASTC for textures that are in either `normalTexture` or `metallicRoughnessTexture` slots
235
-
236
- ## [1.5.0-alpha.5] - 2023-05-04
237
- - fix: NEEDLE_opaque should handle if VRM texture index is negative
238
- - change: exit with code 1 if any file packing fails
239
-
240
- ## [1.5.0-alpha.4] - 2023-05-03
241
- - fix: issue in NEEDLE_opaque resolving of VRM textures, also resolve `meta.texture`
242
- - fix: VRMs now compress meshes with mesh-opt if nothing is specified
243
- - change: include version in cache directory
244
-
245
- ## [1.5.0-alpha.3] - 2023-05-03
246
- - add: VRM progressive textures support
247
- - fix: VRM format should be saved as GLB. See https://github.com/donmccurdy/glTF-Transform/issues/1390
248
- - fix: VRM texture index handling
249
-
250
- ## [1.5.0-alpha] - 2023-05-01
251
- - add: NEEDLE_opaque `node: <index>` retargeting
252
- - add: passthrough VRM extension
253
-
254
- ## [1.4.11] - 2023-04-29
255
- - add: NEEDLE_progressive mesh now run sparse transform
256
- - change: cli params for debug and caching are now `--debug` and `--no-caching`
257
-
258
- ## [1.4.10] - 2023-04-23
259
- - add: NEEDLE_progressive can now load and process already draco compressed meshes
260
-
261
- ## [1.4.9] - 2023-04-23
262
- - add: NEEDLE_progressive now have `hash` field for LODs which is generated using the content of the LOD and it's settings that produced it.
263
- - fix: NEEDLE_progressive catches error when copying mesh with extensions where the copy operation fails
264
-
265
- ## [1.4.8] - 2023-04-22
266
- - fix: update sharp package to `^0.32.6`
267
- - change: NEEDLE_progressive meshes max LOD error increased
268
-
269
- ## [1.4.7] - 2023-04-16
270
- - add: `asset.extras.needle` now contains information about used build pipeline
271
-
272
- ## [1.4.6] - 2023-04-10
273
- - fix: NEEDLE_progressive meshes do not revert primitive data for skinned meshes anymore. See NE-4596
274
-
275
- ## [1.4.5] - 2023-04-05
276
- - fix: generating mesh and texture LOD for glbs without `NEEDLE_` extension
277
- - fix: guid generation for progressive meshes when no `NEEDLE_` extension is present
278
-
279
- ## [1.4.4] - 2023-04-03
280
- - change: clamp simplification error for LOD meshes to 5%
281
-
282
- ## [1.4.3] - 2023-04-02
283
- - release
284
- - fix: generate cache key for meshes
285
-
286
- ## [1.4.1-beta.15] - 2023-04-02
287
- - fix: issue where discarding all LODs might result in broken mesh due to simplify having modified the original mesh
288
- - fix: don't produce LODs if GLB/glTF was produced with old generator
289
-
290
- ## [1.4.1-beta.13] - 2023-03-26
291
- - change: passthrough `NEEDLE_editor` & `NEEDLE_gltf_dependencies` extensions
292
-
293
- ## [1.4.1-beta.12] - 2023-03-23
294
- - add: NEEDLE_progressive LODs can now contain more info per texture or mesh. Meshes contain vertex- and index counts
295
- - change: the cache can now store and retrieve meta information
296
-
297
- ## [1.4.1-beta.11] - 2023-03-20
298
- - add: NEEDLE_progressive LOD meshes morph targets data
299
- - fix: NEEDLE_progressive should check if simplifcation did result in improved meshes (> 32 verts removed && > 5 % improvement) and otherwise discard LODs (and the whole extension if no improvement was made)
300
- - change: Unity NEEDLE_progressive logs
301
-
302
- ## [1.4.1-beta.10] - 2023-03-19
303
- - change: NEEDLE_progressive calculates density per mesh level
304
- - change: NEEDLE_progressive `uri` field is removed and added `lod` array of objects
305
-
306
- ## [1.4.1-beta.8] - 2023-03-18
307
- - change: if an asset doesnt have a guid we use a uuid package now
308
- - change: ignore mesh LODs with vertex count < 4
309
- - change: allow generating mesh LODs without extension (if the mesh has > 32 vertices)
310
- - change: omit generated LODs if the change is too small (e.g. the vertex count didnt change enough)
311
-
312
- ## [1.4.1-beta.6] - 2023-03-15
313
- - add: caching support for mesh LODs
314
-
315
- ## [1.4.1-beta.5] - 2023-03-15
316
- - add: auto LODs now calculate mesh density
317
- - change: generate 6 LOD level
318
- - change: use ratio 0.5 of the previous LOD level
319
- - change: bump gltf-transform to 3.10.1 to fix simplifier
320
- - change: add sparse transform to progressive transform
321
-
322
- ## [1.4.1-beta.3] - 2023-03-14
323
- - fix: wait for mesh simplifier to be ready
324
-
325
- ## [1.4.1-beta.2] - 2023-03-13
326
- - change: update gltf-transform to `^3.10.0`
327
- - change: progressive mesh transform does now set ratio for LODs (see [simplifier issue 661 on github](https://github.com/zeux/meshoptimizer/issues/661))
328
- - fix: issue where progressive meshes were not generated if a mesh was multiple times in the glTF
329
- - change: simplify to use ratio, fix issue where not all meshes were processed
330
- - change: auto LOD max error set to 0.1
331
-
332
- ## [1.4.0-beta] - 2023-03-12
333
- - add: progressive mesh transform to automatically generate mesh LOD levels (currently we only generate one low poly version)
334
-
335
- ## [1.3.1] - 2023-10-20
336
- - fix: meshopt with khr_animation_2 extension was not correctly processed: animated node and target were not passed to gltf-transform which caused a wrong processing of meshopt. We now pass this information to the gltf-transform AnimationChannel object
337
- - change: bump gltf-transform to 3.7.3
338
-
339
- ## [1.2.4] - 2023-09-30
340
- - fix: bug in progressive texture transform where extension wasnt added correctly (NE-3627)
341
-
342
- ## [1.2.3] - 2023-09-29
343
- - fix: bug in progressive texture transform where texture wasnt found
344
-
345
- ## [1.2.2] - 2023-08-14
346
- - remove: legacy squoosh dependency
347
-
348
- ## [1.2.1] - 2023-07-25
349
- - change: set reference to materials used by json pointers
350
-
351
- ## [1.2.0] - 2023-07-21
352
- - add: resolving of material json pointers
353
-
354
- ## [1.1.6] - 2023-07-10
355
- - change: bump gltf-transform dependency to latest 3.4.6
356
-
357
- ## [1.1.5] - 2023-06-26
358
- - change: bump gltf-transform dependency to latest 3.4.3
359
-
360
- ## [1.1.4] - 2023-06-09
361
- - fix: progressive texture transform didnt pass mesh compression setting through
362
-
363
- ## [1.1.3] - 2023-05-24
364
- - minor change adding info about reduced size after processing gltf files
365
-
366
- ## [1.1.2] - 2023-05-24
367
- - fix: wasm out of memory error caused by starting to many compression processes at once
368
-
369
- ## [1.1.1] - 2023-05-18
370
- - fix: fix progressive texture processing for empty slots array, assume texture slot "baseColorTexture" (for custom shader support)
371
-
372
- ## [1.1.0] - 2023-05-06
373
- - add: support for per glb mesh compression selection (none, draco or meshopt)
374
-
375
- ## [1.0.6] - 2023-05-06
376
- - fix: dont add textures to cache when toktx is not installed
377
-
378
- ## [1.0.5] - 2023-05-06
379
- - fix: catch exception in cases where toktx is not installed (e.g. in CI environment) and log warning instead
380
-
381
- ## [1.0.4] - 2023-04-24
382
- - fix: error caused by missing simplifier
383
-
384
- ## [1.0.3] - 2023-04-24
385
- - fix: webp quality setting not being rounded resulting in compression to fail
386
-
387
- ## [1.0.2] - 2023-04-19
388
- - change: progressive should not log error out when running for already compressed gltf
389
- - change: ignore EXT_texture_exr extension re-assignment
390
-
391
- ## [1.0.1] - 2023-04-17
392
- - fix: register meshopt decoder
393
- - fix: catch exception in document read
394
- - change: log gpu memory estimation for textures
395
-
396
- ## [1.0.0] - 2023-04-04
397
- - change: file utils use needle.config.json to find files if no directory was specified
398
- - change: add generator info
399
- - change: try catch toktx exception
400
- - change: improve relative path handling
401
- - change: use env variable set by npm to resolve relative paths
402
- - add: option to disallow toktx using `no-toktx` commandline parameter
403
- - update to gltf-transform 3.1.4
404
-
405
- ## [0.11.2-pre] - 2023-01-30
406
- - fix: clean up logic for finding toktx to only use one approach
407
-
408
- ## [0.11.1-pre] - 2023-01-27
409
- - fix: getting correct gltf transform texture for texture definition
410
- - fix: opaque extension now also uses getTexture util method
411
-
412
- ## [0.11.0-pre] - 2023-01-25
413
- - add: script `transform` does run progressive and gltf-pack
414
- - change: script `transform:progressive` can now process all files in passed in directory
415
-
416
- ## [0.10.10-pre] - 2023-01-25
417
- - add: `NEEDLE_TOKTX` environment variable
418
- - fix: env variable handling
419
-
420
- ## [0.10.9-pre] - 2023-01-20
421
- - fix: set mime-type to KTX2 when using cached texture data that was processed with default toktx settings
422
-
423
- ## [0.10.8-pre] - 2023-01-18
424
- - fix: pack-gltf should run toktx with default settings when no compression extension was found in texture
425
-
426
- ## [0.10.7-pre] - 2023-01-18
427
- - fix: pack-gltf when invoked with single glb path
428
-
429
- ## [0.10.6-pre.1] - 2023-01-13
430
- - fix: support for glbs using old texture pointer format ``textures/`` (new format is ``/textures/``)
431
-
432
- ## [0.10.5-pre] - 2023-01-12
433
- - fix: pack-gltf running in sequence again to avoid wasm memory error with many glbs
434
-
435
- ## [0.10.4-pre] - 2023-01-11
436
- - change: simplify mesh logs `lockBorder` setting
437
- - change: pack-gltf now searches glb files in subdirectories
438
-
439
- ## [0.10.3-pre] - 2023-01-09
440
- - fix: issue with pack-gltf running out of memory when invoked for directory with many glbs
441
- - change: await squoosh pool close
442
- - change: disable extension read-write logs by default
443
-
444
- ## [0.10.2-pre] - 2023-01-07
445
- - add: mesh simplification now welds vertices with tiny threshold to be able to simplify disjointed meshes
446
- - change: progressive loading handling of unknown slot, dont throw for unknown texture slot but instead log warning and proceed without making the texture progressively loaded
447
- - change: update gltf-transform dependency to 2.5.1
448
-
449
- ## [0.10.1-pre] - 2023-01-04
450
- - fix: error in progressive texture resize where `maxSize` could be 0
451
-
452
- ## [0.10.0-pre] - 2023-01-04
453
- - add: caching for texture transforms
454
- - change: use one needle_transform function to handle compressions of textures in one loop instead of mulitple toktx and squoosh transform methods
455
-
456
- ## [0.9.1-pre] - 2023-01-03
457
- - add: opaque extension support for primitive extensions to support mesh compression settings passed through when using progressive transformations
458
-
459
- ## [0.9.0-pre] - 2023-01-03
460
- - add: ``NEEDLE_mesh_compression`` support for running gltf-transform simplify per primitive
461
-
462
- ## [0.8.1-pre.1] - 2022-12-14
463
- - add: quality option to ``NEEDLE_compression_texture`` for webp compression
464
- - fix: progressive glb should always use name from guid and index
465
-
466
- ## [0.8.0-pre] - 2022-12-13
467
- - add: webp compression mode
468
- - change: progressive texture glbs use guid as filename
469
- - change: pack-gltf can now take directory as argument
470
-
471
- ## [0.7.1-pre] - 2022-12-08
472
- - fix: processing gltf multiple times did cause texture json pointers being resolved wrongly including loosing previously set extensions
473
-
474
- ## [0.7.0-pre] - 2022-12-05
475
- - add: make-progressive tool to transform an existing glbs and resize images with high res images being loaded from external glbs
476
-
477
- ## [0.6.4-pre] - 2022-12-03
478
- - add: compression mode ``none`` to skip toktx compression
479
- - fix: issue with texture pointer not finding previously assigned sampler when writing
480
- - fix: if commandline parsing fails take path containing ``KTX-Software`` as additional toktx search path
481
-
482
- ## [0.6.3-pre] - 2022-10-27
483
- - fix: options.file nullreference error
484
-
485
- ## [0.6.2-pre] - 2022-10-20
486
- - change: toktx temp folder adjusted, use uuid for shorter names, generate uuid once per file [PR](https://github.com/donmccurdy/glTF-Transform/pull/708)
487
-
488
- ## [0.6.1-pre] - 2022-10-20
489
- - fix: NEEDLE_compression_settings havent been passed to toktx anymore
490
-
491
- ## [0.6.0-pre] - 2022-10-19
492
- - add: generate toktx textures in ``glTF-transform`` subdirectory, input and output textures having the same random name and are prefixed with the texture index
493
-
494
- ## [0.5.1-pre] - 2022-10-12
495
- - fix texture extensions surviving multiple compressions (e.g. compression same glb multiple times)
496
- - fix cli args when invoked via npm run
497
-
498
- ## [0.5.0-pre] - 2022-10-11
499
- - add draco support again
500
-
501
- ## [0.4.1-pre] - 2022-10-11
502
- - fix texture extension pass-through
503
-
504
- ## [0.4.0-pre] - 2022-10-11
505
- - update toktx to gltf-Transform v2.4.4
506
-
507
- ## [0.3.0-pre] - 2022-10-06
508
- - add: handle NEEDLE_compression_texture extension and API to toktx to control cli arguments per texture
509
-
510
- ## [0.2.2-pre] - 2022-10-03
511
- - add: allow setting ``--toktxPath`` from commandline on windows
512
-
513
- ## [0.2.1-pre] - 2022-10-03
514
- - fix bug where EXT_texture_exr extension would be inserted in all textures
515
-
516
- ## [0.2.0-pre] - 2022-10-02
517
- - handle KHR_animation_pointer
518
- - handle texture json pointers
519
-
520
- ## [0.1.3-pre] - 2022-09-26
1
+ # Changelog
2
+ All notable changes to this package will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [2.14.0] - 2026-01-30
8
+ - add: KHR_materials_pbrSpecularGlossiness extension support
9
+ - fix: reduce `resample` tolerance to `1e-6` to avoid animation issues with some assets
10
+
11
+ ## [2.13.0] - 2025-10-20
12
+ - Use xxhash-wasm for buffer hashing
13
+
14
+ ## [2.12.0] - 2025-09-13
15
+ - Update meshoptimizer to 0.25 and use `simplifyWithAttributes` by default
16
+
17
+ ## [2.11.4] - 2025-08-18
18
+ - Change: Default draco compression settings
19
+
20
+ ## [2.11.3] - 2025-08-08
21
+ - Fix: texture compression settings not being applied correctly
22
+ - Change: CLI `transform` with `--progressive` does now ignore LOD files
23
+ - Change: Increase local cache size to 5 GB
24
+
25
+ ## [2.11.2] - 2025-08-07
26
+ - Change: `product` usecase should not flatten/join objects
27
+
28
+ ## [2.11.1] - 2025-08-06
29
+ - Fix: issue where caching didn't store pre-calculated primitive densities. This caused incorrect LOD level calculation at runtime due to missing data when processing the same files a second time with caching enabled.
30
+
31
+ ## [2.11.0] - 2025-08-01
32
+ - add: store densities per primitive
33
+ - fix: exception during cache key calculation
34
+
35
+ ## [2.10.2] - 2025-07-17
36
+ - fix: issue where draco compression fails with `[KHR_draco_mesh_compression] Accessor cannot be shared by compressed and uncompressed primitives`
37
+
38
+ ## [2.10.1] - 2025-07-09
39
+ - add: support for Needle MaterialX extensions
40
+ - bump gltf-transform to 4.1.4
41
+
42
+ ## [2.9.5] - 2025-05-23
43
+ - change: `product` usecase uses `UASTC` compression for 'normalTexture'
44
+ - update gltf-transform to 4.1.3
45
+
46
+ ## [2.9.0] - 2025-05-22
47
+ - add: initial texture compression mode support for `world` and `product`
48
+
49
+ ## [2.8.1] - 2025-04-17
50
+ - bump version
51
+
52
+ ## [2.8.1-alpha.0] - 2025-03-26
53
+ - Fix: Issue where cache key gets longer depending on the primitive count
54
+ - Fix: Cache key not taking index buffer into account
55
+ - Fix: Caching of mesh LODs did clone shared mesh attributes for every primitive instead of re-using previous clones
56
+
57
+ ## [2.8.0-alpha.2] - 2025-03-04
58
+ - change: use webp compression for textures smaller than 32x32
59
+ - fix: webp compression for small textures (64x64)
60
+
61
+ ## [2.8.0-alpha.0] - 2025-02-27
62
+ - change: `product` usecase now uses webp compression for 'normalTexture' and 'metallicRoughnessTexture' textures
63
+
64
+ ## [2.7.1] - 2025-02-14
65
+ - fix: bug in caching path due to change in 2.7.0-alpha.2
66
+
67
+ ## [2.7.0] - 2025-02-13
68
+ - bump version
69
+
70
+ ## [2.7.0-alpha.2] - 2025-02-13
71
+ - fix: processing for some very large meshes where hashing the meshes failed (for caching the results)
72
+
73
+ ## [2.7.0-alpha.1] - 2025-01-13
74
+ - fix: handle LOD omitting and remove deleted files from progressive transform results list
75
+
76
+ ## [2.7.0-alpha] - 2025-01-13
77
+ - add: VRM mesh simplification support
78
+ - fix: issue where the output directory was not created if it didn't exist yet
79
+ - fix: try resolve deduplicated meshes
80
+ - change: update gltf-transform to 4.1.1
81
+ - change: modify mesh LOD settings for more vertices
82
+
83
+ ## [2.6.0-alpha] - 2024-12-16
84
+ - add: create placeholder textures for missing jpg, png, webp, gif, tif on disc
85
+ - fix: compressing a gltf file to a different output directory does not falsely delete old external textures on disc in the input directory
86
+
87
+ ## [2.5.0] - 2024-12-16
88
+ - release
89
+
90
+ ## [2.4.0] - 2024-09-11
91
+ - release
92
+
93
+ ## [2.4.0-beta.5] - 2024-09-06
94
+ - fix: issue where mesh LODs would in some cases be compressed with "draco" while the root file would be compressed with "mesh-opt" if not explicitly specified in the root file. This would cause invalid rendering and randomly scaled LOD meshes. Now mesh LODs will always use the same mesh compression. [NE 5297](https://linear.app/needle/issue/NE-5297)
95
+ - change: update gltf-transform dependency to 4.0.8
96
+
97
+ ## [2.4.0-beta] - 2024-08-13
98
+ - fix: issue where a mesh lod is removed during second processing of a directory that contains existing mesh lods
99
+
100
+ ## [2.4.0-alpha.3] - 2024-08-11
101
+ - fix: issue where files would not correctly be overriden in subdirectories when no output directory was specified
102
+
103
+ ## [2.4.0-alpha.2] - 2024-06-29
104
+ - fix: prevent joining/flattening of progressive assets
105
+
106
+ ## [2.4.0-alpha.1] - 2024-06-26
107
+ - add: heuristic for choosing mesh compression if not explictly configured
108
+
109
+ ## [2.3.0-alpha.2] - 2024-06-26
110
+ - change: usecase `product` does compress with UASTC again (for certain slots)
111
+
112
+ ## [2.3.0-alpha.1] - 2024-06-23
113
+ - change: bump gltf-transform to 4.0.2 to fix meshopt skinning regression [1439](https://github.com/donmccurdy/glTF-Transform/pull/1439)
114
+
115
+ ## [2.3.0-alpha] - 2024-06-22
116
+ - add: flatten and join for `product` usecase
117
+
118
+ ## [2.2.1-alpha.8] - 2023-06-22
119
+ - add: CLI <output> support
120
+ - fix: register webp extension for valid glTF files. [issue 5122](https://linear.app/needle/issue/NE-5122)
121
+ - fix: issue where VRM material would be pruned
122
+ - change: VRM use meshopt compression where any blendshapes are found
123
+
124
+ ## [2.2.1-alpha.7] - 2023-06-19
125
+ - fix: WARN if image validation can not run
126
+ - change: compress lightmap textures with webp
127
+
128
+ ## [2.2.1-alpha.5] - 2023-06-18
129
+ - add: `stats` now includes json and animation size info
130
+ - change: VRM's are compressed with meshopt again
131
+ - change: usecase `product` now uses webp compression
132
+
133
+ ## [2.2.1-alpha.4] - 2023-06-17
134
+ - add: `--verbose` option to transform command
135
+ - add: `stats` command to create stats.needle.json
136
+ - add: automatically detect mimetype mismatch and attempt to fix it
137
+
138
+ ## [2.2.1-alpha] - 2023-06-15
139
+ - fix: issue with progressive mesh cache key calculation when running multiple transform processes with different configurations
140
+
141
+ ## [2.2.0-alpha.11] - 2023-06-14
142
+ - fix: issue where progressive transform with un-indexed meshes would fail
143
+
144
+ ## [2.2.0-alpha.10] - 2023-06-13
145
+ - fix: progressive transform of converted GLB files where meshes don't have indicies
146
+ - fix: skip progressive texture generation for textures for textures that already match the lowest LOD size
147
+ - fix: if compression is set to None the LOD textures should respect that setting and also not be compressed
148
+ - fix: fallback mesh density calculation for meshes that aren't indexed
149
+ - fix: NEEDLE_mesh_compression extension falsely overriding primitive extensions
150
+
151
+ ## [2.2.0-alpha.5] - 2023-06-06
152
+ - add: CLI `--progressive` option to `transform` command (default is true)
153
+ - add: CLI `--compress` option to `transform` command (default is true)
154
+ - add: config `meshes: { lods: boolean }` option
155
+ - remove: CLI "compress" command
156
+ - change: enable texture LODs by default
157
+ - fix: `--config` path can now point to a directory or a `needle.config.json` file as well
158
+ - fix: mesh LOD regression caused by change in gltf-transform `weld` behaviour
159
+ - fix: KTX SOFTWARE >= 4.3.0 is installed
160
+
161
+ ## [2.1.0-alpha.6] - 2023-06-04
162
+ - fix: errors when invoking npm scripts caused by the cli program
163
+ - fix: remove cache directory error
164
+ - fix: remove dedup for textures since this currently causes issues with gltf-progressive loading
165
+
166
+ ## [2.1.0-alpha] - 2023-06-03
167
+ - add: compression config support for high-level usecases that can be passed via commandline arguments or via config. Available options are currently `default`, `world` and `product`.
168
+ - add: texture LODs can now be generated by passing in the path to a compression config. `--config <path/to/config.json>`
169
+ - change: VRMs now use draco mesh compression by default
170
+
171
+ ### Config Examples
172
+ - `default` - use default compression. When not explictly configured textures will be compressed with ETC1S
173
+ - `product` - when not explictly configured textures will use UASTC for `metallicRoughnessTexture` and `normalTexture`
174
+ - `world` - generate texture LODs when enabled (and not explictly disabled by `textures: { lods: false }`)
175
+ ```json
176
+ {
177
+ "usecase": "default" // optional
178
+ "textures" : {
179
+ "lods": true
180
+ }
181
+ }
182
+ ```
183
+ The config can also be part of a `needle.config.json`:
184
+ ```json
185
+ {
186
+ ... regular needle.config
187
+ "gltf": {
188
+ "usecase": "default" // optional
189
+ "textures": {
190
+ "lods": true
191
+ }
192
+ }
193
+ }
194
+ ```
195
+
196
+ ## [2.0.0-alpha] - 2023-06-01
197
+ - update gltf-transform dependency to 4.x
198
+ - change: ensure ETC1S and UASTC textures are power of 2
199
+
200
+ - CLI: commands can be run with `needle-gltf <command>`
201
+ - CLI: add `--cache` to allow disabling cache with `--cache False` (default true)
202
+ - CLI: add `--stats` to produce `.needle.stats.json` (default false)
203
+ - CLI: change `--output` to be the optional second argument
204
+
205
+ ## [1.6.0-alpha.7] - 2023-05-30
206
+ - fix: npx cli command return wrong error due to `packGLTF` not returning a booelan
207
+ - fix: mjs script import paths
208
+
209
+ ## [1.6.0-alpha.5] - 2023-05-28
210
+ - fix: determine build pipeline version
211
+ - change: throw error and exit process if packing or transform fails
212
+
213
+ ## [1.6.0-alpha.2] - 2023-05-27
214
+ - add: `gltf-build-pipeline` commandline support with `transform` and `compress` (pack-gltf) options.
215
+
216
+ ## [1.5.0-alpha.12] - 2023-05-20
217
+ - add: pack-gltf now also runs `resample` for animations
218
+ - fix: nullreference error in accessing opaque debug options
219
+
220
+ ## [1.5.0-alpha.10] - 2023-05-17
221
+ - add: `generateLods` option to progressive texture settings
222
+
223
+ ## [1.5.0-alpha.9] - 2023-05-16
224
+ - add: start of VRM 1.0 support. Not implemented is the `VRMC_materials_mtoon` extension
225
+
226
+ ## [1.5.0-alpha.8] - 2023-05-16
227
+ - fix: issue where updating ktx compressed texture extension also flattened the path
228
+
229
+ ## [1.5.0-alpha.7] - 2023-05-16
230
+ - fix: external resources that are KTX2 compressed are now saved with a `.ktx2` extension
231
+ - change: toktx now uses compression "auto" mode to select uastc or etc1s
232
+ - change: toktx now checks the slots and increases quality for `metallicRoughnessTexture` and `normalTexture` but keeps using ETC1S for smaller file size
233
+
234
+ ## [1.5.0-alpha.6] - 2023-05-15
235
+ - fix: If not further specified then automatically use UASTC for textures that are in either `normalTexture` or `metallicRoughnessTexture` slots
236
+
237
+ ## [1.5.0-alpha.5] - 2023-05-04
238
+ - fix: NEEDLE_opaque should handle if VRM texture index is negative
239
+ - change: exit with code 1 if any file packing fails
240
+
241
+ ## [1.5.0-alpha.4] - 2023-05-03
242
+ - fix: issue in NEEDLE_opaque resolving of VRM textures, also resolve `meta.texture`
243
+ - fix: VRMs now compress meshes with mesh-opt if nothing is specified
244
+ - change: include version in cache directory
245
+
246
+ ## [1.5.0-alpha.3] - 2023-05-03
247
+ - add: VRM progressive textures support
248
+ - fix: VRM format should be saved as GLB. See https://github.com/donmccurdy/glTF-Transform/issues/1390
249
+ - fix: VRM texture index handling
250
+
251
+ ## [1.5.0-alpha] - 2023-05-01
252
+ - add: NEEDLE_opaque `node: <index>` retargeting
253
+ - add: passthrough VRM extension
254
+
255
+ ## [1.4.11] - 2023-04-29
256
+ - add: NEEDLE_progressive mesh now run sparse transform
257
+ - change: cli params for debug and caching are now `--debug` and `--no-caching`
258
+
259
+ ## [1.4.10] - 2023-04-23
260
+ - add: NEEDLE_progressive can now load and process already draco compressed meshes
261
+
262
+ ## [1.4.9] - 2023-04-23
263
+ - add: NEEDLE_progressive now have `hash` field for LODs which is generated using the content of the LOD and it's settings that produced it.
264
+ - fix: NEEDLE_progressive catches error when copying mesh with extensions where the copy operation fails
265
+
266
+ ## [1.4.8] - 2023-04-22
267
+ - fix: update sharp package to `^0.32.6`
268
+ - change: NEEDLE_progressive meshes max LOD error increased
269
+
270
+ ## [1.4.7] - 2023-04-16
271
+ - add: `asset.extras.needle` now contains information about used build pipeline
272
+
273
+ ## [1.4.6] - 2023-04-10
274
+ - fix: NEEDLE_progressive meshes do not revert primitive data for skinned meshes anymore. See NE-4596
275
+
276
+ ## [1.4.5] - 2023-04-05
277
+ - fix: generating mesh and texture LOD for glbs without `NEEDLE_` extension
278
+ - fix: guid generation for progressive meshes when no `NEEDLE_` extension is present
279
+
280
+ ## [1.4.4] - 2023-04-03
281
+ - change: clamp simplification error for LOD meshes to 5%
282
+
283
+ ## [1.4.3] - 2023-04-02
284
+ - release
285
+ - fix: generate cache key for meshes
286
+
287
+ ## [1.4.1-beta.15] - 2023-04-02
288
+ - fix: issue where discarding all LODs might result in broken mesh due to simplify having modified the original mesh
289
+ - fix: don't produce LODs if GLB/glTF was produced with old generator
290
+
291
+ ## [1.4.1-beta.13] - 2023-03-26
292
+ - change: passthrough `NEEDLE_editor` & `NEEDLE_gltf_dependencies` extensions
293
+
294
+ ## [1.4.1-beta.12] - 2023-03-23
295
+ - add: NEEDLE_progressive LODs can now contain more info per texture or mesh. Meshes contain vertex- and index counts
296
+ - change: the cache can now store and retrieve meta information
297
+
298
+ ## [1.4.1-beta.11] - 2023-03-20
299
+ - add: NEEDLE_progressive LOD meshes morph targets data
300
+ - fix: NEEDLE_progressive should check if simplifcation did result in improved meshes (> 32 verts removed && > 5 % improvement) and otherwise discard LODs (and the whole extension if no improvement was made)
301
+ - change: Unity NEEDLE_progressive logs
302
+
303
+ ## [1.4.1-beta.10] - 2023-03-19
304
+ - change: NEEDLE_progressive calculates density per mesh level
305
+ - change: NEEDLE_progressive `uri` field is removed and added `lod` array of objects
306
+
307
+ ## [1.4.1-beta.8] - 2023-03-18
308
+ - change: if an asset doesnt have a guid we use a uuid package now
309
+ - change: ignore mesh LODs with vertex count < 4
310
+ - change: allow generating mesh LODs without extension (if the mesh has > 32 vertices)
311
+ - change: omit generated LODs if the change is too small (e.g. the vertex count didnt change enough)
312
+
313
+ ## [1.4.1-beta.6] - 2023-03-15
314
+ - add: caching support for mesh LODs
315
+
316
+ ## [1.4.1-beta.5] - 2023-03-15
317
+ - add: auto LODs now calculate mesh density
318
+ - change: generate 6 LOD level
319
+ - change: use ratio 0.5 of the previous LOD level
320
+ - change: bump gltf-transform to 3.10.1 to fix simplifier
321
+ - change: add sparse transform to progressive transform
322
+
323
+ ## [1.4.1-beta.3] - 2023-03-14
324
+ - fix: wait for mesh simplifier to be ready
325
+
326
+ ## [1.4.1-beta.2] - 2023-03-13
327
+ - change: update gltf-transform to `^3.10.0`
328
+ - change: progressive mesh transform does now set ratio for LODs (see [simplifier issue 661 on github](https://github.com/zeux/meshoptimizer/issues/661))
329
+ - fix: issue where progressive meshes were not generated if a mesh was multiple times in the glTF
330
+ - change: simplify to use ratio, fix issue where not all meshes were processed
331
+ - change: auto LOD max error set to 0.1
332
+
333
+ ## [1.4.0-beta] - 2023-03-12
334
+ - add: progressive mesh transform to automatically generate mesh LOD levels (currently we only generate one low poly version)
335
+
336
+ ## [1.3.1] - 2023-10-20
337
+ - fix: meshopt with khr_animation_2 extension was not correctly processed: animated node and target were not passed to gltf-transform which caused a wrong processing of meshopt. We now pass this information to the gltf-transform AnimationChannel object
338
+ - change: bump gltf-transform to 3.7.3
339
+
340
+ ## [1.2.4] - 2023-09-30
341
+ - fix: bug in progressive texture transform where extension wasnt added correctly (NE-3627)
342
+
343
+ ## [1.2.3] - 2023-09-29
344
+ - fix: bug in progressive texture transform where texture wasnt found
345
+
346
+ ## [1.2.2] - 2023-08-14
347
+ - remove: legacy squoosh dependency
348
+
349
+ ## [1.2.1] - 2023-07-25
350
+ - change: set reference to materials used by json pointers
351
+
352
+ ## [1.2.0] - 2023-07-21
353
+ - add: resolving of material json pointers
354
+
355
+ ## [1.1.6] - 2023-07-10
356
+ - change: bump gltf-transform dependency to latest 3.4.6
357
+
358
+ ## [1.1.5] - 2023-06-26
359
+ - change: bump gltf-transform dependency to latest 3.4.3
360
+
361
+ ## [1.1.4] - 2023-06-09
362
+ - fix: progressive texture transform didnt pass mesh compression setting through
363
+
364
+ ## [1.1.3] - 2023-05-24
365
+ - minor change adding info about reduced size after processing gltf files
366
+
367
+ ## [1.1.2] - 2023-05-24
368
+ - fix: wasm out of memory error caused by starting to many compression processes at once
369
+
370
+ ## [1.1.1] - 2023-05-18
371
+ - fix: fix progressive texture processing for empty slots array, assume texture slot "baseColorTexture" (for custom shader support)
372
+
373
+ ## [1.1.0] - 2023-05-06
374
+ - add: support for per glb mesh compression selection (none, draco or meshopt)
375
+
376
+ ## [1.0.6] - 2023-05-06
377
+ - fix: dont add textures to cache when toktx is not installed
378
+
379
+ ## [1.0.5] - 2023-05-06
380
+ - fix: catch exception in cases where toktx is not installed (e.g. in CI environment) and log warning instead
381
+
382
+ ## [1.0.4] - 2023-04-24
383
+ - fix: error caused by missing simplifier
384
+
385
+ ## [1.0.3] - 2023-04-24
386
+ - fix: webp quality setting not being rounded resulting in compression to fail
387
+
388
+ ## [1.0.2] - 2023-04-19
389
+ - change: progressive should not log error out when running for already compressed gltf
390
+ - change: ignore EXT_texture_exr extension re-assignment
391
+
392
+ ## [1.0.1] - 2023-04-17
393
+ - fix: register meshopt decoder
394
+ - fix: catch exception in document read
395
+ - change: log gpu memory estimation for textures
396
+
397
+ ## [1.0.0] - 2023-04-04
398
+ - change: file utils use needle.config.json to find files if no directory was specified
399
+ - change: add generator info
400
+ - change: try catch toktx exception
401
+ - change: improve relative path handling
402
+ - change: use env variable set by npm to resolve relative paths
403
+ - add: option to disallow toktx using `no-toktx` commandline parameter
404
+ - update to gltf-transform 3.1.4
405
+
406
+ ## [0.11.2-pre] - 2023-01-30
407
+ - fix: clean up logic for finding toktx to only use one approach
408
+
409
+ ## [0.11.1-pre] - 2023-01-27
410
+ - fix: getting correct gltf transform texture for texture definition
411
+ - fix: opaque extension now also uses getTexture util method
412
+
413
+ ## [0.11.0-pre] - 2023-01-25
414
+ - add: script `transform` does run progressive and gltf-pack
415
+ - change: script `transform:progressive` can now process all files in passed in directory
416
+
417
+ ## [0.10.10-pre] - 2023-01-25
418
+ - add: `NEEDLE_TOKTX` environment variable
419
+ - fix: env variable handling
420
+
421
+ ## [0.10.9-pre] - 2023-01-20
422
+ - fix: set mime-type to KTX2 when using cached texture data that was processed with default toktx settings
423
+
424
+ ## [0.10.8-pre] - 2023-01-18
425
+ - fix: pack-gltf should run toktx with default settings when no compression extension was found in texture
426
+
427
+ ## [0.10.7-pre] - 2023-01-18
428
+ - fix: pack-gltf when invoked with single glb path
429
+
430
+ ## [0.10.6-pre.1] - 2023-01-13
431
+ - fix: support for glbs using old texture pointer format ``textures/`` (new format is ``/textures/``)
432
+
433
+ ## [0.10.5-pre] - 2023-01-12
434
+ - fix: pack-gltf running in sequence again to avoid wasm memory error with many glbs
435
+
436
+ ## [0.10.4-pre] - 2023-01-11
437
+ - change: simplify mesh logs `lockBorder` setting
438
+ - change: pack-gltf now searches glb files in subdirectories
439
+
440
+ ## [0.10.3-pre] - 2023-01-09
441
+ - fix: issue with pack-gltf running out of memory when invoked for directory with many glbs
442
+ - change: await squoosh pool close
443
+ - change: disable extension read-write logs by default
444
+
445
+ ## [0.10.2-pre] - 2023-01-07
446
+ - add: mesh simplification now welds vertices with tiny threshold to be able to simplify disjointed meshes
447
+ - change: progressive loading handling of unknown slot, dont throw for unknown texture slot but instead log warning and proceed without making the texture progressively loaded
448
+ - change: update gltf-transform dependency to 2.5.1
449
+
450
+ ## [0.10.1-pre] - 2023-01-04
451
+ - fix: error in progressive texture resize where `maxSize` could be 0
452
+
453
+ ## [0.10.0-pre] - 2023-01-04
454
+ - add: caching for texture transforms
455
+ - change: use one needle_transform function to handle compressions of textures in one loop instead of mulitple toktx and squoosh transform methods
456
+
457
+ ## [0.9.1-pre] - 2023-01-03
458
+ - add: opaque extension support for primitive extensions to support mesh compression settings passed through when using progressive transformations
459
+
460
+ ## [0.9.0-pre] - 2023-01-03
461
+ - add: ``NEEDLE_mesh_compression`` support for running gltf-transform simplify per primitive
462
+
463
+ ## [0.8.1-pre.1] - 2022-12-14
464
+ - add: quality option to ``NEEDLE_compression_texture`` for webp compression
465
+ - fix: progressive glb should always use name from guid and index
466
+
467
+ ## [0.8.0-pre] - 2022-12-13
468
+ - add: webp compression mode
469
+ - change: progressive texture glbs use guid as filename
470
+ - change: pack-gltf can now take directory as argument
471
+
472
+ ## [0.7.1-pre] - 2022-12-08
473
+ - fix: processing gltf multiple times did cause texture json pointers being resolved wrongly including loosing previously set extensions
474
+
475
+ ## [0.7.0-pre] - 2022-12-05
476
+ - add: make-progressive tool to transform an existing glbs and resize images with high res images being loaded from external glbs
477
+
478
+ ## [0.6.4-pre] - 2022-12-03
479
+ - add: compression mode ``none`` to skip toktx compression
480
+ - fix: issue with texture pointer not finding previously assigned sampler when writing
481
+ - fix: if commandline parsing fails take path containing ``KTX-Software`` as additional toktx search path
482
+
483
+ ## [0.6.3-pre] - 2022-10-27
484
+ - fix: options.file nullreference error
485
+
486
+ ## [0.6.2-pre] - 2022-10-20
487
+ - change: toktx temp folder adjusted, use uuid for shorter names, generate uuid once per file [PR](https://github.com/donmccurdy/glTF-Transform/pull/708)
488
+
489
+ ## [0.6.1-pre] - 2022-10-20
490
+ - fix: NEEDLE_compression_settings havent been passed to toktx anymore
491
+
492
+ ## [0.6.0-pre] - 2022-10-19
493
+ - add: generate toktx textures in ``glTF-transform`` subdirectory, input and output textures having the same random name and are prefixed with the texture index
494
+
495
+ ## [0.5.1-pre] - 2022-10-12
496
+ - fix texture extensions surviving multiple compressions (e.g. compression same glb multiple times)
497
+ - fix cli args when invoked via npm run
498
+
499
+ ## [0.5.0-pre] - 2022-10-11
500
+ - add draco support again
501
+
502
+ ## [0.4.1-pre] - 2022-10-11
503
+ - fix texture extension pass-through
504
+
505
+ ## [0.4.0-pre] - 2022-10-11
506
+ - update toktx to gltf-Transform v2.4.4
507
+
508
+ ## [0.3.0-pre] - 2022-10-06
509
+ - add: handle NEEDLE_compression_texture extension and API to toktx to control cli arguments per texture
510
+
511
+ ## [0.2.2-pre] - 2022-10-03
512
+ - add: allow setting ``--toktxPath`` from commandline on windows
513
+
514
+ ## [0.2.1-pre] - 2022-10-03
515
+ - fix bug where EXT_texture_exr extension would be inserted in all textures
516
+
517
+ ## [0.2.0-pre] - 2022-10-02
518
+ - handle KHR_animation_pointer
519
+ - handle texture json pointers
520
+
521
+ ## [0.1.3-pre] - 2022-09-26
521
522
  - initial release