gltf-pipeline
Version:
Content pipeline tools for optimizing glTF assets.
251 lines (160 loc) • 15.4 kB
Markdown
# Change Log
### 4.1.0 - 2023-04-21
- Add `baseColorTextureNames` and `baseColorFactorNames` to the options that can be given at the command line and passed to `processGltf` and `updateVersion`, to specify the uniform names in a `KHR_techniques_webgl` extension that indicate that a certain texture or color should be used as the base color texture or base color factor of a PBR material. [#637](https://github.com/CesiumGS/gltf-pipeline/pull/637)
- Fixed handling of glTF models with the [`CESIUM_primitive_outline`](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/CESIUM_primitive_outline/README.md) extension. [#632](https://github.com/CesiumGS/gltf-pipeline/pull/631)
### 4.0.2 - 2023-02-10
- Update npm module dependencies.
### 4.0.1 - 2023-01-25
- Fixed crash when writing GLB files above 2GB. [#627](https://github.com/CesiumGS/gltf-pipeline/pull/627)
### 4.0.0 - 2022-08-01
- Breaking changes
- glTF 1.0 or glTF 2.0 with the `KHR_techniques_webgl`, `KHR_blend`, or `KHR_materials_common` extensions will be converted to glTF 2.0 with PBR materials by default. For the previous behavior pass in `--keepLegacyExtensions`.
### 3.0.5 - 2022-06-30
- Fixed handling of glTF models with the [`EXT_mesh_features`](https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features) and [`EXT_structural_metadata`](https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_structural_metadata) extensions.
### 3.0.4 - 2021-08-02
- Fixed buffer view alignment for `EXT_feature_metadata` extension. [#595](https://github.com/CesiumGS/gltf-pipeline/pull/595)
### 3.0.3 - 2021-07-24
- Fixed name of `KHR_materials_pbrSpecularGlossiness` extension in `addDefaults`. [#580](https://github.com/CesiumGS/gltf-pipeline/pull/580)
- Fixed glTF 1.0 to 2.0 conversion for buffers containing a placeholder data uri. [#578](https://github.com/CesiumGS/gltf-pipeline/pull/578)
- Fixed handling of glTF models with the [`EXT_meshopt_compression`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression) extension. [#593](https://github.com/CesiumGS/gltf-pipeline/pull/593)
- Fixed handling of glTF models with the [`EXT_feature_metadata`](https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata) extension. [#585](https://github.com/CesiumGS/gltf-pipeline/pull/585)
### 3.0.2 - 2020-12-07
- Added support for Draco 1.4.0. [#562](https://github.com/CesiumGS/gltf-pipeline/pull/562)
### 3.0.1 - 2020-11-14
- Locked Draco npm dependency to version 1.3.6 to avoid module initialization errors in 1.4.0. [#563](https://github.com/CesiumGS/gltf-pipeline/pull/563)
### 3.0.0 - 2020-07-22
- Breaking changes
- Dropped support for CRN and KTX textures. [#550](https://github.com/CesiumGS/gltf-pipeline/pull/550)
- Dropped support for `image.extras.compressedImage3DTiles`. [#550](https://github.com/CesiumGS/gltf-pipeline/pull/550)
- Added support for KTX2 textures. [#550](https://github.com/CesiumGS/gltf-pipeline/pull/550)
### 2.1.10 - 2020-05-11
- Improved accessor min/max for Draco attributes. [#540](https://github.com/CesiumGS/gltf-pipeline/pull/540)
- Updated to new Draco encode settings. [#538](https://github.com/CesiumGS/gltf-pipeline/pull/538)
- Fixed a bug where accessors used by `EXT_mesh_gpu_instancing` were being removed. [#535](https://github.com/CesiumGS/gltf-pipeline/pull/535)
### 2.1.9 - 2020-03-31
- Fixed a bug where unused nodes with used descendants would get deleted. [#533](https://github.com/CesiumGS/gltf-pipeline/pull/533)
- Fixed processing glTF 1.0 models that have multiple techniques with the same uniform name but different parameters. [#490](https://github.com/CesiumGS/gltf-pipeline/pull/490)
- Fixed writing duplicate resource that are referenced multiple times. [#483](https://github.com/CesiumGS/gltf-pipeline/pull/483)
### 2.1.8 - 2020-03-04
- Fixed a bug in `processGltf` and `gltfToGlb` where the user's `options` object was getting modified with internal options. [#528](https://github.com/CesiumGS/gltf-pipeline/pull/528)
### 2.1.7 - 2020-03-02
- Removed usage of deprecated function `Cesium.isArray`. [#526](https://github.com/CesiumGS/gltf-pipeline/pull/526)
### 2.1.6 - 2020-02-04
- Fixed a mistake in the 2.1.5 release where the changes from [#516](https://github.com/CesiumGS/gltf-pipeline/pull/516) were accidentally removed.
### 2.1.5 - 2020-02-04
- Added removal of unused textures, samplers, and images. [#516](https://github.com/CesiumGS/gltf-pipeline/pull/516)
### 2.1.4 - 2019-10-04
- Added removal of unused materials, nodes and meshes. [#465](https://github.com/CesiumGS/gltf-pipeline/pull/465)
- Added `keepUnusedElements` flag to keep unused materials, nodes and meshes. [#465](https://github.com/CesiumGS/gltf-pipeline/pull/465)
### 2.1.3 - 2019-03-21
- Fixed a crash when saving separate resources that would exceed the Node buffer size limit. [#468](https://github.com/CesiumGS/gltf-pipeline/pull/468)
### 2.1.2 - 2019-03-14
- Fixed reading absolute uris. [#466](https://github.com/CesiumGS/gltf-pipeline/pull/466)
### 2.1.1 - 2019-02-11
- Added ability to apply Draco compression to meshes without indices. [#424](https://github.com/CesiumGS/gltf-pipeline/pull/424)
### 2.1.0 - 2019-01-28
- Fixed a bug where nodes containing extensions or extras where being removed in the glTF 1.0 to 2.0 upgrade stage. [#431](https://github.com/CesiumGS/gltf-pipeline/pull/431)
- Added support for the `EXT_texture_webp` extension. [#450](https://github.com/CesiumGS/gltf-pipeline/pull/450)
### 2.0.1 - 2018-09-19
- Fixed a bug where the buffer `byteOffset` was not set properly when updating 1.0 accessor types to 2.0 allowed values. [#418](https://github.com/CesiumGS/gltf-pipeline/pull/418)
- Fixed a bug where bufferViews were not properly byte aligned when updating accessors from 1.0 to 2.0. [#421](https://github.com/CesiumGS/gltf-pipeline/pull/421)
- Fixed a bug in `removePipelineExtras` when run in the browser. [#422](https://github.com/CesiumGS/gltf-pipeline/pull/422)
### 2.0.0 - 2018-08-14
- Breaking changes
- Project updated to process glTF 2.0 models. Any glTF 1.0 models will be upgraded to glTF 2.0 automatically and use the `KHR_techniques_webgl` and `KHR_blend` extensions.
- The entire public API has changed. See usage examples in the project README.
- Removed many pipeline stages in an effort to simplify the project:
- Removed ambient occlusion baking.
- Removed texture compression.
- Removed support for the `KHR_materials_common` extension.
- Removed support for the `WEB3D_quantized_attributes` extension.
- Removed optimization stages.
- Removed generate normals stages.
- Added support for `KHR_draco_mesh_compression`.
### 1.0.6 - 2018-08-14
- Fixed `UNSIGNED_SHORT` overflow when generating face normals.
### 1.0.5 - 2018-07-13
- Fixed a bug where percent-encoded characters (like %20) were not decoded before attempting to read a uri.
### 1.0.4 - 2018-05-30
- Fixed a bug where multiple inclusions of the same mime type lead to conflicts.
### 1.0.3 - 2018-03-28
- Fixed a bug where animations in glTF 0.8 assets where not being converted from axis angle to quaternion.
- Fixed a bug where generating normals and materials did not take image transparency into account
### 1.0.2 - 2017-09-27
- Fixed specular computation for certain models using the `KHR_materials_common` extension. [#309](https://github.com/CesiumGS/gltf-pipeline/pull/309)
- Added a `optimizeDrawCalls` flag to merge nodes and meshes more aggressively to minimize draw calls. [#308](https://github.com/CesiumGS/gltf-pipeline/pull/308)
- Added minimum lighting to diffuse when the `cesium` flag is enabled. [#313](https://github.com/CesiumGS/gltf-pipeline/pull/313)
- Added a check for normals arrtibute for mesh in `modelMaterialsCommon`. [#318](https://github.com/CesiumGS/gltf-pipeline/pull/318)
- Fixed generating duplicate accessors in `cesiumGeometryToGltfPrimitive`. [#321](https://github.com/CesiumGS/gltf-pipeline/pull/321)
### 1.0.1 - 2017-07-07
- Fix `gltf-pipeline` to work with CesiumJS 1.36 and newer.
### 1.0.0 - 2017-07-07
- Fixed issue where shader comparison in `MergeDuplicateProperties` would cause a crash. [#297](https://github.com/CesiumGS/gltf-pipeline/pull/297)
- Fixed an issue where `mergeBuffers` would not align buffer views to 4-byte boundaries. [#298](https://github.com/CesiumGS/gltf-pipeline/pull/298)
- Fixed an issue where face normal generation would crash for degenerate triangles. [#298](https://github.com/CesiumGS/gltf-pipeline/pull/298)
### 0.1.0-alpha15 - 2017-06-06
- Fixed the `removeNormals` stage so that it can operate independently of `generateNormals`. [#287](https://github.com/CesiumGS/gltf-pipeline/pull/287)
- Fixed an issue with writing attributes with double underscores, which is reserved in GLSL. [#286](https://github.com/CesiumGS/gltf-pipeline/pull/286)
- Fixed issue with transparent diffuse texture overriding the render state of other materials. [#284](https://github.com/CesiumGS/gltf-pipeline/pull/284)
- Fixed crash when loading a model with a huge number of textures. [#283](https://github.com/CesiumGS/gltf-pipeline/pull/283)
### 0.1.0-alpha14 - 2017-05-09
- Fixed byte offset alignment issue when loading converted models in CesiumJS. [#279](https://github.com/CesiumGS/gltf-pipeline/pull/279)
- Added case-insensitive regex checking for image extensions. [#278](https://github.com/CesiumGS/gltf-pipeline/pull/278)
- Added `mergeVertices` option to merge duplicate vertices. This operation is now disabled by default. [#276](https://github.com/CesiumGS/gltf-pipeline/pull/276)
### 0.1.0-alpha13 - 2017-04-27
- Fixed a bug in `processModelMaterialsCommon` that produced out-of-spec technique states. [#269](https://github.com/CesiumGS/gltf-pipeline/pull/269)
### 0.1.0-alpha12 - 2017-04-13
- Fixed issue with ambient occlusion not working correctly with other stages. [#267](https://github.com/CesiumGS/gltf-pipeline/pull/267)
- Fixed handling of binary glTF with special characters. [#253](https://github.com/CesiumGS/gltf-pipeline/pull/253)
### 0.1.0-alpha11 - 2017-03-07
- Added `compressTextures` stage to compress input textures to a variety of compressed texture formats.
- Optimized `mergeBuffers` to avoid repeated copies, drastically improving performance when there are lots of buffers to merge.
- Fixed a bug in `addPipelineExtras` that made it try to add extras to null objects.
- Expose `triangleAxisAlignedBoundingBoxOverlap`, an implementation of Tomas Akenine-Möller algorithm for determining if a triangle overlaps an axis aligned bounding box.
- Merged [gltf-statistics](https://github.com/CesiumGS/gltf-statistics) as a stage in the pipeline.
- Added `updateVersion` stage for patching glTF `0.8` -> `1.0` changes; `addDefaults` no longer calls `processModelMaterialsCommon`. [#223](https://github.com/CesiumGS/gltf-pipeline/pull/223)
- Added `build-cesium-combined` command to gulp file for generating simple files for other projects. [#231](https://github.com/CesiumGS/gltf-pipeline/pull/231).
- Change CesiumJS `Geometry`'s and `VertexFormat`'s `binormal` attribute to bitangent.
- Fixed a bug in `combinePrimitives` where combining primitives can overflow uint16 for the resulting indices. [#230](https://github.com/CesiumGS/gltf-pipeline/issues/230)
- Made `generateNormals` stage optional and added `smoothNormals` option for generating smooth normals if the model does not have normals. [#240](https://github.com/CesiumGS/gltf-pipeline/pull/240)
- `updateVersion` stage for upgrades the glTF version of an asset from `1.0` to `2.0`. [#223](https://github.com/CesiumGS/gltf-pipeline/pull/223)
- All pipeline stages now operate on glTF `2.0` assets.
### 0.1.0-alpha10 - 2017-01-10
- Added `tangentsBitangents` generation option
### 0.1.0-alpha9 - 2017-01-03
- Fixed issue with embedding base64 encoded shader strings for assets using the KHR_materials_common extension
### 0.1.0-alpha8 - 2016-12-13
- Fixed issue with embedding base64 encoded shader strings inside the glTF.
- Added `-p` flag for preserving the glTF hierarchy. Optimization stages are not run when this flag is enabled.
### 0.1.0-alpha7 - 2016-12-08
- `modelMaterialsCommon` renamed to `processModelMaterialsCommon`.
- Added `generateModelMaterialsCommon` and command line `kmc` flags for generating models with the `KHR_materials_common` extension.
### 0.1.0-alpha6 - 2016-11-18
- Fixed `combinePrimitives` stage and re-added it to the pipeline. [#108](https://github.com/CesiumGS/gltf-pipeline/issues/108)
- Expose parsing argument arrays into an options object via `parseArguments`. [#183](https://github.com/CesiumGS/gltf-pipeline/pull/183)
### 0.1.0-alpha5 - 2016-11-02
- Added `MergeDuplicateProperties` for stages merging duplicate glTF properties, like materials and shaders. [#152](https://github.com/CesiumGS/gltf-pipeline/pull/152)
- `mergeDuplicateAccessors` is now a part of this stage.
- `RemoveUnusedProperties` stage names are changed from `removeUnusedXXX` to `removeXXX`. `MergeDuplicateProperties` conforms to this naming convention.
- `quantizedAttributes` has an optional `normalized` flag to use the glTF 1.0.1 `accessor.normalized` for a higher precision decode matrix. [#165](https://github.com/CesiumGS/gltf-pipeline/pull/165)
- Fixed an issue where pipeline extras are not removed when running `Pipeline.processJSON` and `Pipeline.processFile`. [#180](https://github.com/CesiumGS/gltf-pipeline/pull/180)
- Added support for generating hard normals with the `-f` flag and for removing normals with `-r`. [#173](https://github.com/CesiumGS/gltf-pipeline/pull/173)
- Preserve non-default shader attributes when generating shaders. [#175](https://github.com/CesiumGS/gltf-pipeline/pull/175)
- The `_3DTILESDIFFUSE` semantic is added to the model's technique when `optimizeForCesium` is true. [#174](https://github.com/CesiumGS/gltf-pipeline/pull/174)
### 0.1.0-alpha4 - 2016-08-25
- `cacheOptimization` no longer crashes on primitives without indices. [#154](https://github.com/CesiumGS/gltf-pipeline/issues/154)
- Public API is exposed via `index.js` [#153](https://github.com/CesiumGS/gltf-pipeline/issues/153)
- Documentation has been added for all exposed functions.
- `OptimizationStats` is removed from `removeUnused` stages.
- `gltfPipeline.js` is now named `Pipeline.js`.
- `bakeAmbientOcclusion.js` now directly exports the `bakeAmbientOcclusion` function.
- `bakeAmbientOcclusion` now takes a glTF asset as its first parameter to match the function signature of other stages.
- All `removeUnused` stages have been consolidated to `RemoveUnusedProperties` to clean up the global scope.
- `readBufferComponentType` and `writeBufferComponentType` have been renamed to `readBufferComponent` and `writeBufferComponent` respectively.
### 0.1.0-alpha3 - 2016-07-25
- Converted the API to now use promises instead of callbacks. [#135](https://github.com/CesiumGS/gltf-pipeline/pull/135)
### 0.1.0-alpha2 - 2016-07-21
- Fixed an issue causing some compressed accessors to not render. [#148](https://github.com/CesiumGS/gltf-pipeline/pull/148)
- Fixed a quantization rounding issue. [#147](https://github.com/CesiumGS/gltf-pipeline/pull/147)
### 0.1.0-alpha1 - 2016-07-20
- Initial release.