@cesium/engine 2.4.1 → 3.0.0

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 (88) hide show
  1. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  2. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -22
  3. package/Build/Workers/package.js +1 -1
  4. package/Build/Workers/transferTypedArrayTest.js +1 -1
  5. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +0 -75
  6. package/Source/Core/CesiumTerrainProvider.js +0 -75
  7. package/Source/Core/CustomHeightmapTerrainProvider.js +0 -38
  8. package/Source/Core/EllipsoidTerrainProvider.js +0 -37
  9. package/Source/Core/GoogleEarthEnterpriseMetadata.js +0 -53
  10. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -101
  11. package/Source/Core/GoogleMaps.js +1 -1
  12. package/Source/Core/Ion.js +1 -2
  13. package/Source/Core/TerrainProvider.js +0 -22
  14. package/Source/Core/VRTheWorldTerrainProvider.js +0 -59
  15. package/Source/Core/sampleTerrain.js +0 -7
  16. package/Source/Core/sampleTerrainMostDetailed.js +0 -7
  17. package/Source/DataSources/Cesium3DTilesetVisualizer.js +6 -5
  18. package/Source/DataSources/KmlTour.js +1 -12
  19. package/Source/DataSources/ModelVisualizer.js +0 -12
  20. package/Source/Renderer/Context.js +10 -2
  21. package/Source/Scene/ArcGisMapServerImageryProvider.js +7 -335
  22. package/Source/Scene/ArcGisMapService.js +1 -1
  23. package/Source/Scene/Billboard.js +7 -0
  24. package/Source/Scene/BingMapsImageryProvider.js +0 -326
  25. package/Source/Scene/Camera.js +1 -1
  26. package/Source/Scene/Cesium3DTile.js +4 -5
  27. package/Source/Scene/Cesium3DTileContent.js +0 -16
  28. package/Source/Scene/Cesium3DTilesVoxelProvider.js +0 -123
  29. package/Source/Scene/Cesium3DTileset.js +183 -184
  30. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +1 -1
  31. package/Source/Scene/Cesium3DTilesetCache.js +1 -3
  32. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +5 -2
  33. package/Source/Scene/Cesium3DTilesetTraversal.js +2 -2
  34. package/Source/Scene/ClassificationPrimitive.js +5 -43
  35. package/Source/Scene/Composite3DTileContent.js +0 -27
  36. package/Source/Scene/CreditDisplay.js +0 -54
  37. package/Source/Scene/DerivedCommand.js +15 -10
  38. package/Source/Scene/Empty3DTileContent.js +0 -21
  39. package/Source/Scene/Geometry3DTileContent.js +0 -29
  40. package/Source/Scene/Globe.js +1 -9
  41. package/Source/Scene/GlobeSurfaceTile.js +13 -8
  42. package/Source/Scene/GlobeSurfaceTileProvider.js +8 -60
  43. package/Source/Scene/GltfPipeline/removeUnusedElements.js +27 -0
  44. package/Source/Scene/GltfPipeline/updateVersion.js +21 -4
  45. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +1 -339
  46. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +0 -326
  47. package/Source/Scene/GridImageryProvider.js +0 -274
  48. package/Source/Scene/GroundPolylinePrimitive.js +5 -38
  49. package/Source/Scene/GroundPrimitive.js +5 -43
  50. package/Source/Scene/I3SDataProvider.js +4 -99
  51. package/Source/Scene/I3SLayer.js +15 -22
  52. package/Source/Scene/Imagery.js +1 -9
  53. package/Source/Scene/ImageryLayer.js +1 -40
  54. package/Source/Scene/ImageryProvider.js +0 -138
  55. package/Source/Scene/Implicit3DTileContent.js +0 -23
  56. package/Source/Scene/IonImageryProvider.js +1 -369
  57. package/Source/Scene/MapboxImageryProvider.js +0 -276
  58. package/Source/Scene/MapboxStyleImageryProvider.js +0 -274
  59. package/Source/Scene/Model/Model.js +6 -249
  60. package/Source/Scene/Model/Model3DTileContent.js +0 -50
  61. package/Source/Scene/Model/ModelAnimationCollection.js +1 -1
  62. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -1
  63. package/Source/Scene/Multiple3DTileContent.js +0 -27
  64. package/Source/Scene/Primitive.js +10 -38
  65. package/Source/Scene/QuadtreePrimitive.js +3 -5
  66. package/Source/Scene/QuadtreeTileProvider.js +0 -10
  67. package/Source/Scene/Scene.js +3 -3
  68. package/Source/Scene/ScreenSpaceCameraController.js +5 -5
  69. package/Source/Scene/SingleTileImageryProvider.js +6 -302
  70. package/Source/Scene/TileCoordinatesImageryProvider.js +0 -273
  71. package/Source/Scene/TileMapServiceImageryProvider.js +3 -48
  72. package/Source/Scene/Tileset3DTileContent.js +0 -22
  73. package/Source/Scene/TimeDynamicPointCloud.js +0 -28
  74. package/Source/Scene/UrlTemplateImageryProvider.js +0 -375
  75. package/Source/Scene/Vector3DTileContent.js +0 -29
  76. package/Source/Scene/VoxelPrimitive.js +9 -49
  77. package/Source/Scene/VoxelProvider.js +0 -24
  78. package/Source/Scene/WebMapServiceImageryProvider.js +0 -274
  79. package/Source/Scene/WebMapTileServiceImageryProvider.js +0 -274
  80. package/Source/Scene/computeFlyToLocationForRectangle.js +0 -6
  81. package/Source/Scene/createGooglePhotorealistic3DTileset.js +5 -0
  82. package/Source/Widget/CesiumWidget.js +2 -19
  83. package/index.d.ts +62 -1183
  84. package/index.js +54 -57
  85. package/package.json +2 -2
  86. package/Source/Core/createWorldTerrain.js +0 -61
  87. package/Source/Scene/createOsmBuildings.js +0 -82
  88. package/Source/Scene/createWorldImagery.js +0 -47
@@ -4,7 +4,6 @@ import Check from "../Core/Check.js";
4
4
  import Credit from "../Core/Credit.js";
5
5
  import defaultValue from "../Core/defaultValue.js";
6
6
  import defined from "../Core/defined.js";
7
- import deprecationWarning from "../Core/deprecationWarning.js";
8
7
  import destroyObject from "../Core/destroyObject.js";
9
8
  import Uri from "urijs";
10
9
 
@@ -424,21 +423,6 @@ function setCredit(creditDisplay, credits, credit, count) {
424
423
  creditDisplayElement.count += count;
425
424
  }
426
425
  }
427
- /**
428
- * Adds a credit to the list of current credits to be displayed in the credit container
429
- * for the next frame
430
- *
431
- * @param {Credit} credit The credit to display
432
- * @deprecated
433
- */
434
- CreditDisplay.prototype.addCredit = function (credit) {
435
- deprecationWarning(
436
- "CreditDisplay.addCredit",
437
- "CreditDisplay.addCredit was deprecated in CesiumJS 1.105. It will be removed in CesiumJS 1.107. Use CreditDisplay.addCreditToNextFrame instead."
438
- );
439
-
440
- this.addCreditToNextFrame(credit);
441
- };
442
426
 
443
427
  /**
444
428
  * Adds a {@link Credit} that will show on screen or in the lightbox until
@@ -473,30 +457,6 @@ CreditDisplay.prototype.addCreditToNextFrame = function (credit) {
473
457
  setCredit(this, credits, credit);
474
458
  };
475
459
 
476
- /**
477
- * Adds credits that will persist until they are removed
478
- *
479
- * @param {Credit} credit The credit to added to defaults
480
- *
481
- * @deprecated
482
- */
483
- CreditDisplay.prototype.addDefaultCredit = function (credit) {
484
- //>>includeStart('debug', pragmas.debug);
485
- Check.defined("credit", credit);
486
- //>>includeEnd('debug');
487
-
488
- deprecationWarning(
489
- "CreditDisplay.addDefaultCredit",
490
- "CreditDisplay.addDefaultCredit was deprecated in CesiumJS 1.105. It will be removed in CesiumJS 1.107. Use CreditDisplay.addStaticCredit instead."
491
- );
492
-
493
- const defaultCredits = this._staticCredits;
494
- if (!contains(defaultCredits, credit)) {
495
- credit.showOnScreen = true;
496
- defaultCredits.push(credit);
497
- }
498
- };
499
-
500
460
  /**
501
461
  * Adds a {@link Credit} that will show on screen or in the lightbox until removed with {@link CreditDisplay.removeStaticCredit}.
502
462
  *
@@ -540,20 +500,6 @@ CreditDisplay.prototype.removeStaticCredit = function (credit) {
540
500
  }
541
501
  };
542
502
 
543
- /**
544
- * Removes a default credit.
545
- *
546
- * @param {Credit} credit The credit to be removed from defaults
547
- */
548
- CreditDisplay.prototype.removeDefaultCredit = function (credit) {
549
- deprecationWarning(
550
- "CreditDisplay.removeDefaultCredit",
551
- "CreditDisplay.removeDefaultCredit was deprecated in CesiumJS 1.105. It will be removed in CesiumJS 1.107. Use CreditDisplay.addStaticCredit instead."
552
- );
553
-
554
- this.removeStaticCredit(credit);
555
- };
556
-
557
503
  /**
558
504
  * @private
559
505
  */
@@ -278,16 +278,21 @@ function getPickShaderProgram(context, shaderProgram, pickId) {
278
278
  const sources = fs.sources;
279
279
  const length = sources.length;
280
280
 
281
- const newMain =
282
- `${
283
- "void main() \n" +
284
- "{ \n" +
285
- " czm_non_pick_main(); \n" +
286
- " if (out_FragColor.a == 0.0) { \n" +
287
- " discard; \n" +
288
- " } \n" +
289
- " out_FragColor = "
290
- }${pickId}; \n` + `} \n`;
281
+ const hasFragData = sources.some((source) =>
282
+ source.includes("out_FragData")
283
+ );
284
+ const outputColorVariable = hasFragData
285
+ ? "out_FragData_0"
286
+ : "out_FragColor";
287
+ const newMain = `void main ()
288
+ {
289
+ czm_non_pick_main();
290
+ if (${outputColorVariable}.a == 0.0) {
291
+ discard;
292
+ }
293
+ ${outputColorVariable} = ${pickId};
294
+ } `;
295
+
291
296
  const newSources = new Array(length + 1);
292
297
  for (let i = 0; i < length; ++i) {
293
298
  newSources[i] = ShaderSource.replaceMain(sources[i], "czm_non_pick_main");
@@ -1,4 +1,3 @@
1
- import deprecationWarning from "../Core/deprecationWarning.js";
2
1
  import destroyObject from "../Core/destroyObject.js";
3
2
  import DeveloperError from "../Core/DeveloperError.js";
4
3
 
@@ -80,26 +79,6 @@ Object.defineProperties(Empty3DTileContent.prototype, {
80
79
  },
81
80
  },
82
81
 
83
- /**
84
- * Gets the promise that will be resolved when the tile's content is ready to render.
85
- *
86
- * @memberof Empty3DTileContent.prototype
87
- *
88
- * @type {Promise<Empty3DTileContent>}
89
- * @readonly
90
- * @deprecated
91
- * @private
92
- */
93
- readyPromise: {
94
- get: function () {
95
- deprecationWarning(
96
- "Empty3DTileContent.readyPromise",
97
- "Empty3DTileContent.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for Empty3DTileContent.ready to return true instead."
98
- );
99
- return Promise.resolve(this);
100
- },
101
- },
102
-
103
82
  tileset: {
104
83
  get: function () {
105
84
  return this._tileset;
@@ -1,7 +1,6 @@
1
1
  import Cartesian3 from "../Core/Cartesian3.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
- import deprecationWarning from "../Core/deprecationWarning.js";
5
4
  import destroyObject from "../Core/destroyObject.js";
6
5
  import DeveloperError from "../Core/DeveloperError.js";
7
6
  import getJsonFromTypedArray from "../Core/getJsonFromTypedArray.js";
@@ -45,12 +44,6 @@ function Geometry3DTileContent(
45
44
 
46
45
  this._ready = false;
47
46
 
48
- // This is for backwards compatibility. It can be removed once readyPromise is removed.
49
- this._resolveContent = undefined;
50
- this._readyPromise = new Promise((resolve) => {
51
- this._resolveContent = resolve;
52
- });
53
-
54
47
  initialize(this, arrayBuffer, byteOffset);
55
48
  }
56
49
 
@@ -120,26 +113,6 @@ Object.defineProperties(Geometry3DTileContent.prototype, {
120
113
  },
121
114
  },
122
115
 
123
- /**
124
- * Gets the promise that will be resolved when the tile's content is ready to render.
125
- *
126
- * @memberof Geometry3DTileContent.prototype
127
- *
128
- * @type {Promise<Geometry3DTileContent>}
129
- * @readonly
130
- * @deprecated
131
- * @private
132
- */
133
- readyPromise: {
134
- get: function () {
135
- deprecationWarning(
136
- "Geometry3DTileContent.readyPromise",
137
- "Geometry3DTileContent.readyPromise was deprecated in CesiumJS 1.104. It will be removed in 1.107. Wait for Geometry3DTileContent.ready to return true instead."
138
- );
139
- return this._readyPromise;
140
- },
141
- },
142
-
143
116
  tileset: {
144
117
  get: function () {
145
118
  return this._tileset;
@@ -329,7 +302,6 @@ function initialize(content, arrayBuffer, byteOffset) {
329
302
 
330
303
  if (byteLength === 0) {
331
304
  content._ready = true;
332
- content._resolveContent(content);
333
305
  return;
334
306
  }
335
307
 
@@ -550,7 +522,6 @@ Geometry3DTileContent.prototype.update = function (tileset, frameState) {
550
522
  if (defined(this._batchTable) && this._geometries.ready) {
551
523
  this._batchTable.update(tileset, frameState);
552
524
  this._ready = true;
553
- this._resolveContent(this);
554
525
  }
555
526
  };
556
527
 
@@ -436,8 +436,6 @@ Object.defineProperties(Globe.prototype, {
436
436
  return true;
437
437
  }
438
438
  return (
439
- // ready is deprecated. This is here for backwards compatibility
440
- this._surface.tileProvider.ready &&
441
439
  this._surface._tileLoadQueueHigh.length === 0 &&
442
440
  this._surface._tileLoadQueueMedium.length === 0 &&
443
441
  this._surface._tileLoadQueueLow.length === 0
@@ -983,15 +981,9 @@ Globe.prototype.beginFrame = function (frameState) {
983
981
  const surface = this._surface;
984
982
  const tileProvider = surface.tileProvider;
985
983
  const terrainProvider = this.terrainProvider;
986
- // ready is deprecated; This is here for backwards compatibility
987
- const terrainReady =
988
- defined(terrainProvider) &&
989
- (defined(terrainProvider._ready)
990
- ? terrainProvider._ready
991
- : !defined(terrainProvider.ready) || terrainProvider.ready);
992
984
  const hasWaterMask =
993
985
  this.showWaterEffect &&
994
- terrainReady &&
986
+ defined(terrainProvider) &&
995
987
  terrainProvider.hasWaterMask &&
996
988
  terrainProvider.hasWaterMask;
997
989
 
@@ -345,14 +345,7 @@ GlobeSurfaceTile.prototype.processImagery = function (
345
345
 
346
346
  if (tileImagery.loadingImagery.state === ImageryState.PLACEHOLDER) {
347
347
  const imageryLayer = tileImagery.loadingImagery.imageryLayer;
348
- // ImageryProvider.ready is deprecated. This is here for backwards compatibility
349
- const imageryProvider = imageryLayer.imageryProvider;
350
- if (
351
- imageryLayer.ready &&
352
- (defined(imageryProvider._ready)
353
- ? imageryProvider._ready
354
- : !defined(imageryProvider.ready) || imageryProvider.ready)
355
- ) {
348
+ if (imageryLayer.ready) {
356
349
  // Remove the placeholder and add the actual skeletons (if any)
357
350
  // at the same position. Then continue the loop at the same index.
358
351
  tileImagery.freeResources();
@@ -686,6 +679,11 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
686
679
 
687
680
  Promise.resolve(terrainDataPromise)
688
681
  .then(function (terrainData) {
682
+ if (!defined(terrainData)) {
683
+ // The upsample request has been deferred - try again later.
684
+ return;
685
+ }
686
+
689
687
  surfaceTile.terrainData = terrainData;
690
688
  surfaceTile.terrainState = TerrainState.RECEIVED;
691
689
  })
@@ -696,6 +694,13 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
696
694
 
697
695
  function requestTileGeometry(surfaceTile, terrainProvider, x, y, level) {
698
696
  function success(terrainData) {
697
+ if (!defined(terrainData)) {
698
+ // Throttled due to low priority - try again later.
699
+ surfaceTile.terrainState = TerrainState.UNLOADED;
700
+ surfaceTile.request = undefined;
701
+ return;
702
+ }
703
+
699
704
  surfaceTile.terrainData = terrainData;
700
705
  surfaceTile.terrainState = TerrainState.RECEIVED;
701
706
  surfaceTile.request = undefined;
@@ -229,43 +229,6 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
229
229
  },
230
230
  },
231
231
 
232
- /**
233
- * Gets a value indicating whether or not the provider is ready for use.
234
- * @memberof GlobeSurfaceTileProvider.prototype
235
- * @type {boolean}
236
- * @deprecated
237
- */
238
- ready: {
239
- get: function () {
240
- const terrainProvider = this._terrainProvider;
241
- if (
242
- !defined(terrainProvider) ||
243
- // TerrainProvider.ready is deprecated; This is here for backwards compatibility
244
- (defined(terrainProvider._ready)
245
- ? !terrainProvider._ready
246
- : defined(terrainProvider.ready) && !terrainProvider.ready)
247
- ) {
248
- return false;
249
- }
250
-
251
- if (this._imageryLayers.length === 0) {
252
- return true;
253
- }
254
-
255
- const imageryLayer = this._imageryLayers.get(0);
256
- if (!imageryLayer.ready) {
257
- return false;
258
- }
259
-
260
- // ImageryProvider.ready is deprecated; This is here for backwards compatibility
261
- const imageryProvider = imageryLayer.imageryProvider;
262
- const imageryProviderReady = defined(imageryProvider._ready)
263
- ? imageryProvider._ready
264
- : !defined(imageryProvider.ready) || imageryProvider.ready;
265
- return imageryProviderReady;
266
- },
267
- },
268
-
269
232
  /**
270
233
  * Gets the tiling scheme used by the provider.
271
234
  * @memberof GlobeSurfaceTileProvider.prototype
@@ -273,6 +236,10 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
273
236
  */
274
237
  tilingScheme: {
275
238
  get: function () {
239
+ if (!defined(this._terrainProvider)) {
240
+ return undefined;
241
+ }
242
+
276
243
  return this._terrainProvider.tilingScheme;
277
244
  },
278
245
  },
@@ -364,29 +331,15 @@ GlobeSurfaceTileProvider.prototype.update = function (frameState) {
364
331
  function updateCredits(surface, frameState) {
365
332
  const creditDisplay = frameState.creditDisplay;
366
333
  const terrainProvider = surface._terrainProvider;
367
- if (
368
- defined(terrainProvider) &&
369
- // ready is deprecated; This is here for backwards compatibility
370
- (defined(terrainProvider._ready)
371
- ? terrainProvider._ready
372
- : !defined(terrainProvider.ready) || terrainProvider.ready) &&
373
- defined(terrainProvider.credit)
374
- ) {
334
+ if (defined(terrainProvider) && defined(terrainProvider.credit)) {
375
335
  creditDisplay.addCreditToNextFrame(terrainProvider.credit);
376
336
  }
377
337
 
378
338
  const imageryLayers = surface._imageryLayers;
379
339
  for (let i = 0, len = imageryLayers.length; i < len; ++i) {
380
340
  const layer = imageryLayers.get(i);
381
- if (layer.ready) {
382
- // ImageryProvider.ready is deprecated; This is here for backwards compatibility
383
- const imageryProvider = layer.imageryProvider;
384
- const imageryProviderReady = defined(imageryProvider._ready)
385
- ? imageryProvider._ready
386
- : !defined(imageryProvider.ready) || imageryProvider.ready;
387
- if (imageryProviderReady && defined(layer.imageryProvider.credit)) {
388
- creditDisplay.addCreditToNextFrame(layer.imageryProvider.credit);
389
- }
341
+ if (layer.ready && layer.show && defined(layer.imageryProvider.credit)) {
342
+ creditDisplay.addCreditToNextFrame(layer.imageryProvider.credit);
390
343
  }
391
344
  }
392
345
  }
@@ -2168,12 +2121,7 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2168
2121
  const showOceanWaves = showReflectiveOcean && defined(oceanNormalMap);
2169
2122
  const terrainProvider = tileProvider.terrainProvider;
2170
2123
  const hasVertexNormals =
2171
- defined(terrainProvider) &&
2172
- // ready is deprecated; This is here for backwards compatibility
2173
- (defined(terrainProvider._ready)
2174
- ? terrainProvider._ready
2175
- : !defined(terrainProvider.ready) || terrainProvider.ready) &&
2176
- tileProvider.terrainProvider.hasVertexNormals;
2124
+ defined(terrainProvider) && tileProvider.terrainProvider.hasVertexNormals;
2177
2125
  const enableFog =
2178
2126
  frameState.fog.enabled && frameState.fog.renderable && !cameraUnderground;
2179
2127
  const showGroundAtmosphere =
@@ -106,6 +106,15 @@ Remove.accessor = function (gltf, accessorId) {
106
106
  if (defined(indices) && indices > accessorId) {
107
107
  primitive.indices--;
108
108
  }
109
+
110
+ const ext = primitive.extensions;
111
+ if (
112
+ defined(ext) &&
113
+ defined(ext.CESIUM_primitive_outline) &&
114
+ ext.CESIUM_primitive_outline.indices > accessorId
115
+ ) {
116
+ --ext.CESIUM_primitive_outline.indices;
117
+ }
109
118
  });
110
119
  });
111
120
 
@@ -546,6 +555,24 @@ getListOfElementsIdsInUse.accessor = function (gltf) {
546
555
  });
547
556
  }
548
557
 
558
+ if (usesExtension(gltf, "CESIUM_primitive_outline")) {
559
+ ForEach.mesh(gltf, function (mesh) {
560
+ ForEach.meshPrimitive(mesh, function (primitive) {
561
+ const extensions = primitive.extensions;
562
+ if (
563
+ defined(extensions) &&
564
+ defined(extensions.CESIUM_primitive_outline)
565
+ ) {
566
+ const extension = extensions.CESIUM_primitive_outline;
567
+ const indicesAccessorId = extension.indices;
568
+ if (defined(indicesAccessorId)) {
569
+ usedAccessorIds[indicesAccessorId] = true;
570
+ }
571
+ }
572
+ });
573
+ });
574
+ }
575
+
549
576
  return usedAccessorIds;
550
577
  };
551
578
 
@@ -33,6 +33,8 @@ const updateFunctions = {
33
33
  * @param {object} gltf A javascript object containing a glTF asset.
34
34
  * @param {object} [options] Options for updating the glTF.
35
35
  * @param {string} [options.targetVersion] The glTF will be upgraded until it hits the specified version.
36
+ * @param {string[]} [options.baseColorTextureNames] Names of uniforms that indicate base color textures.
37
+ * @param {string[]} [options.baseColorFactorNames] Names of uniforms that indicate base color factors.
36
38
  * @returns {object} The updated glTF asset.
37
39
  *
38
40
  * @private
@@ -73,7 +75,7 @@ function updateVersion(gltf, options) {
73
75
  }
74
76
 
75
77
  if (!options.keepLegacyExtensions) {
76
- convertTechniquesToPbr(gltf);
78
+ convertTechniquesToPbr(gltf, options);
77
79
  convertMaterialsCommonToPbr(gltf);
78
80
  }
79
81
 
@@ -1003,8 +1005,13 @@ function glTF10to20(gltf) {
1003
1005
  // It's not possible to upgrade glTF 1.0 shaders to 2.0 PBR materials in a generic way,
1004
1006
  // but we can look for certain uniform names that are commonly found in glTF 1.0 assets
1005
1007
  // and create PBR materials out of those.
1006
- const baseColorTextureNames = ["u_tex", "u_diffuse", "u_emission"];
1007
- const baseColorFactorNames = ["u_diffuse"];
1008
+ const defaultBaseColorTextureNames = [
1009
+ "u_tex",
1010
+ "u_diffuse",
1011
+ "u_emission",
1012
+ "u_diffuse_tex",
1013
+ ];
1014
+ const defaultBaseColorFactorNames = ["u_diffuse", "u_diffuse_mat"];
1008
1015
 
1009
1016
  function initializePbrMaterial(material) {
1010
1017
  material.pbrMetallicRoughness = defined(material.pbrMetallicRoughness)
@@ -1044,7 +1051,17 @@ function srgbToLinear(srgb) {
1044
1051
  return linear;
1045
1052
  }
1046
1053
 
1047
- function convertTechniquesToPbr(gltf) {
1054
+ function convertTechniquesToPbr(gltf, options) {
1055
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
1056
+ const baseColorTextureNames = defaultValue(
1057
+ options.baseColorTextureNames,
1058
+ defaultBaseColorTextureNames
1059
+ );
1060
+ const baseColorFactorNames = defaultValue(
1061
+ options.baseColorFactorNames,
1062
+ defaultBaseColorFactorNames
1063
+ );
1064
+
1048
1065
  // Future work: convert other values like emissive, specular, etc. Only handling diffuse right now.
1049
1066
  ForEach.material(gltf, function (material) {
1050
1067
  ForEach.materialValue(material, function (value, name) {