@cesium/engine 2.4.0 → 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 (111) hide show
  1. package/Build/Workers/{Color-e5bfda3f.js → Color-8e135f71.js} +4 -4
  2. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  3. package/Build/Workers/createPolylineGeometry.js +1 -1
  4. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  5. package/Build/Workers/createVectorTileGeometries.js +1 -1
  6. package/Build/Workers/createVectorTilePolygons.js +1 -1
  7. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +0 -22
  8. package/Build/Workers/package.js +1 -1
  9. package/Build/Workers/transferTypedArrayTest.js +1 -1
  10. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +0 -75
  11. package/Source/Core/CesiumTerrainProvider.js +25 -75
  12. package/Source/Core/Color.js +4 -4
  13. package/Source/Core/CustomHeightmapTerrainProvider.js +0 -38
  14. package/Source/Core/EllipsoidTerrainProvider.js +0 -37
  15. package/Source/Core/GoogleEarthEnterpriseMetadata.js +0 -53
  16. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +1 -101
  17. package/Source/Core/GoogleMaps.js +1 -1
  18. package/Source/Core/Ion.js +1 -1
  19. package/Source/Core/TerrainProvider.js +0 -22
  20. package/Source/Core/VRTheWorldTerrainProvider.js +0 -59
  21. package/Source/Core/sampleTerrain.js +0 -3
  22. package/Source/Core/sampleTerrainMostDetailed.js +0 -3
  23. package/Source/DataSources/Cesium3DTilesetVisualizer.js +6 -5
  24. package/Source/DataSources/DataSourceDisplay.js +3 -2
  25. package/Source/DataSources/Entity.js +2 -3
  26. package/Source/DataSources/KmlTour.js +1 -12
  27. package/Source/DataSources/ModelVisualizer.js +0 -7
  28. package/Source/Renderer/Context.js +10 -2
  29. package/Source/Renderer/demodernizeShader.js +3 -0
  30. package/Source/Scene/ArcGisMapServerImageryProvider.js +7 -335
  31. package/Source/Scene/ArcGisMapService.js +1 -1
  32. package/Source/Scene/Billboard.js +7 -7
  33. package/Source/Scene/BingMapsImageryProvider.js +0 -326
  34. package/Source/Scene/Camera.js +1 -1
  35. package/Source/Scene/Cesium3DTile.js +4 -5
  36. package/Source/Scene/Cesium3DTileBatchTable.js +0 -3
  37. package/Source/Scene/Cesium3DTileContent.js +0 -16
  38. package/Source/Scene/Cesium3DTilesVoxelProvider.js +0 -123
  39. package/Source/Scene/Cesium3DTileset.js +183 -184
  40. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +1 -1
  41. package/Source/Scene/Cesium3DTilesetCache.js +1 -3
  42. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +5 -2
  43. package/Source/Scene/Cesium3DTilesetTraversal.js +2 -2
  44. package/Source/Scene/ClassificationPrimitive.js +5 -43
  45. package/Source/Scene/Composite3DTileContent.js +0 -27
  46. package/Source/Scene/CreditDisplay.js +0 -54
  47. package/Source/Scene/DerivedCommand.js +15 -10
  48. package/Source/Scene/Empty3DTileContent.js +0 -21
  49. package/Source/Scene/Geometry3DTileContent.js +0 -29
  50. package/Source/Scene/Globe.js +0 -4
  51. package/Source/Scene/GlobeSurfaceTile.js +13 -2
  52. package/Source/Scene/GlobeSurfaceTileProvider.js +10 -37
  53. package/Source/Scene/GltfPipeline/removeUnusedElements.js +27 -0
  54. package/Source/Scene/GltfPipeline/updateVersion.js +21 -4
  55. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +1 -339
  56. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +0 -326
  57. package/Source/Scene/GridImageryProvider.js +0 -274
  58. package/Source/Scene/GroundPolylinePrimitive.js +5 -38
  59. package/Source/Scene/GroundPrimitive.js +5 -43
  60. package/Source/Scene/I3SDataProvider.js +4 -99
  61. package/Source/Scene/I3SLayer.js +15 -22
  62. package/Source/Scene/Imagery.js +1 -6
  63. package/Source/Scene/ImageryLayer.js +1 -30
  64. package/Source/Scene/ImageryProvider.js +0 -138
  65. package/Source/Scene/Implicit3DTileContent.js +0 -23
  66. package/Source/Scene/IonImageryProvider.js +1 -369
  67. package/Source/Scene/MapboxImageryProvider.js +0 -276
  68. package/Source/Scene/MapboxStyleImageryProvider.js +0 -274
  69. package/Source/Scene/Model/CustomShader.js +1 -1
  70. package/Source/Scene/Model/Model.js +6 -249
  71. package/Source/Scene/Model/Model3DTileContent.js +0 -50
  72. package/Source/Scene/Model/ModelAnimationCollection.js +1 -1
  73. package/Source/Scene/Model/PointCloudStylingPipelineStage.js +1 -1
  74. package/Source/Scene/Multiple3DTileContent.js +0 -27
  75. package/Source/Scene/Primitive.js +10 -38
  76. package/Source/Scene/QuadtreePrimitive.js +3 -5
  77. package/Source/Scene/QuadtreeTileProvider.js +0 -10
  78. package/Source/Scene/Scene.js +3 -3
  79. package/Source/Scene/ScreenSpaceCameraController.js +7 -6
  80. package/Source/Scene/SingleTileImageryProvider.js +6 -302
  81. package/Source/Scene/TileCoordinatesImageryProvider.js +0 -273
  82. package/Source/Scene/TileMapServiceImageryProvider.js +3 -48
  83. package/Source/Scene/Tileset3DTileContent.js +0 -22
  84. package/Source/Scene/TimeDynamicPointCloud.js +0 -28
  85. package/Source/Scene/UrlTemplateImageryProvider.js +0 -375
  86. package/Source/Scene/Vector3DTileContent.js +0 -29
  87. package/Source/Scene/VoxelPrimitive.js +9 -49
  88. package/Source/Scene/VoxelProvider.js +0 -24
  89. package/Source/Scene/WebMapServiceImageryProvider.js +0 -274
  90. package/Source/Scene/WebMapTileServiceImageryProvider.js +0 -274
  91. package/Source/Scene/computeFlyToLocationForRectangle.js +0 -2
  92. package/Source/Scene/createGooglePhotorealistic3DTileset.js +5 -0
  93. package/Source/Shaders/BillboardCollectionFS.glsl +0 -4
  94. package/Source/Shaders/BillboardCollectionFS.js +1 -5
  95. package/Source/Shaders/Builtin/Functions/writeLogDepth.glsl +0 -3
  96. package/Source/Shaders/Builtin/Functions/writeLogDepth.js +0 -3
  97. package/Source/Shaders/Materials/ElevationContourMaterial.glsl +0 -4
  98. package/Source/Shaders/Materials/ElevationContourMaterial.js +1 -5
  99. package/Source/Shaders/Materials/GridMaterial.glsl +0 -4
  100. package/Source/Shaders/Materials/GridMaterial.js +1 -5
  101. package/Source/Shaders/Materials/PolylineArrowMaterial.glsl +0 -4
  102. package/Source/Shaders/Materials/PolylineArrowMaterial.js +1 -5
  103. package/Source/Shaders/Model/ModelFS.glsl +0 -6
  104. package/Source/Shaders/Model/ModelFS.js +1 -7
  105. package/Source/Widget/CesiumWidget.js +2 -19
  106. package/index.d.ts +69 -1190
  107. package/index.js +95 -98
  108. package/package.json +3 -3
  109. package/Source/Core/createWorldTerrain.js +0 -60
  110. package/Source/Scene/createOsmBuildings.js +0 -81
  111. 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
@@ -987,8 +985,6 @@ Globe.prototype.beginFrame = function (frameState) {
987
985
  this.showWaterEffect &&
988
986
  defined(terrainProvider) &&
989
987
  terrainProvider.hasWaterMask &&
990
- // ready is deprecated; This is here for backwards compatibility
991
- terrainProvider._ready &&
992
988
  terrainProvider.hasWaterMask;
993
989
 
994
990
  if (hasWaterMask && this._oceanNormalMapResourceDirty) {
@@ -345,8 +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
- if (imageryLayer.ready && imageryLayer.imageryProvider._ready) {
348
+ if (imageryLayer.ready) {
350
349
  // Remove the placeholder and add the actual skeletons (if any)
351
350
  // at the same position. Then continue the loop at the same index.
352
351
  tileImagery.freeResources();
@@ -680,6 +679,11 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
680
679
 
681
680
  Promise.resolve(terrainDataPromise)
682
681
  .then(function (terrainData) {
682
+ if (!defined(terrainData)) {
683
+ // The upsample request has been deferred - try again later.
684
+ return;
685
+ }
686
+
683
687
  surfaceTile.terrainData = terrainData;
684
688
  surfaceTile.terrainState = TerrainState.RECEIVED;
685
689
  })
@@ -690,6 +694,13 @@ function upsample(surfaceTile, tile, frameState, terrainProvider, x, y, level) {
690
694
 
691
695
  function requestTileGeometry(surfaceTile, terrainProvider, x, y, level) {
692
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
+
693
704
  surfaceTile.terrainData = terrainData;
694
705
  surfaceTile.terrainState = TerrainState.RECEIVED;
695
706
  surfaceTile.request = undefined;
@@ -229,26 +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
- return (
241
- defined(this._terrainProvider) &&
242
- // TerrainProvider.ready is deprecated; This is here for backwards compatibility
243
- this._terrainProvider._ready &&
244
- (this._imageryLayers.length === 0 ||
245
- // ImageryProvider.ready is deprecated; This is here for backwards compatibility
246
- (this._imageryLayers.get(0).ready &&
247
- this._imageryLayers.get(0).imageryProvider._ready))
248
- );
249
- },
250
- },
251
-
252
232
  /**
253
233
  * Gets the tiling scheme used by the provider.
254
234
  * @memberof GlobeSurfaceTileProvider.prototype
@@ -256,6 +236,10 @@ Object.defineProperties(GlobeSurfaceTileProvider.prototype, {
256
236
  */
257
237
  tilingScheme: {
258
238
  get: function () {
239
+ if (!defined(this._terrainProvider)) {
240
+ return undefined;
241
+ }
242
+
259
243
  return this._terrainProvider.tilingScheme;
260
244
  },
261
245
  },
@@ -346,24 +330,15 @@ GlobeSurfaceTileProvider.prototype.update = function (frameState) {
346
330
 
347
331
  function updateCredits(surface, frameState) {
348
332
  const creditDisplay = frameState.creditDisplay;
349
- if (
350
- defined(surface._terrainProvider) &&
351
- // ready is deprecated; This is here for backwards compatibility
352
- surface._terrainProvider._ready &&
353
- defined(surface._terrainProvider.credit)
354
- ) {
355
- creditDisplay.addCreditToNextFrame(surface._terrainProvider.credit);
333
+ const terrainProvider = surface._terrainProvider;
334
+ if (defined(terrainProvider) && defined(terrainProvider.credit)) {
335
+ creditDisplay.addCreditToNextFrame(terrainProvider.credit);
356
336
  }
357
337
 
358
338
  const imageryLayers = surface._imageryLayers;
359
339
  for (let i = 0, len = imageryLayers.length; i < len; ++i) {
360
340
  const layer = imageryLayers.get(i);
361
- // ImageryProvider.ready is deprecated; This is here for backwards compatibility
362
- if (
363
- layer.ready &&
364
- layer.imageryProvider._ready &&
365
- defined(layer.imageryProvider.credit)
366
- ) {
341
+ if (layer.ready && layer.show && defined(layer.imageryProvider.credit)) {
367
342
  creditDisplay.addCreditToNextFrame(layer.imageryProvider.credit);
368
343
  }
369
344
  }
@@ -2144,11 +2119,9 @@ function addDrawCommandsForTile(tileProvider, tile, frameState) {
2144
2119
  tileProvider.hasWaterMask && defined(waterMaskTexture);
2145
2120
  const oceanNormalMap = tileProvider.oceanNormalMap;
2146
2121
  const showOceanWaves = showReflectiveOcean && defined(oceanNormalMap);
2122
+ const terrainProvider = tileProvider.terrainProvider;
2147
2123
  const hasVertexNormals =
2148
- defined(tileProvider.terrainProvider) &&
2149
- // ready is deprecated; This is here for backwards compatibility
2150
- tileProvider.terrainProvider._ready &&
2151
- tileProvider.terrainProvider.hasVertexNormals;
2124
+ defined(terrainProvider) && tileProvider.terrainProvider.hasVertexNormals;
2152
2125
  const enableFog =
2153
2126
  frameState.fog.enabled && frameState.fog.renderable && !cameraUnderground;
2154
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) {