diff --git a/Apps/Sandcastle/gallery/Imagery Layers Palette.html b/Apps/Sandcastle/gallery/Imagery Layers Palette.html
new file mode 100644
index 000000000000..658292cbfcbb
--- /dev/null
+++ b/Apps/Sandcastle/gallery/Imagery Layers Palette.html
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+ Cesium Demo
+
+
+
+
+
+
+
+
+
+Loading...
+
+
+
+
+
+
diff --git a/Source/Renderer/UniformState.js b/Source/Renderer/UniformState.js
index 759659750639..41da0ddb1265 100644
--- a/Source/Renderer/UniformState.js
+++ b/Source/Renderer/UniformState.js
@@ -150,6 +150,7 @@ define([
this._fogDensity = undefined;
+ this._imageryColorPalette = 1.0;
this._imagerySplitPosition = 0.0;
this._pixelSizePerMeter = undefined;
this._geometricToleranceOverMeter = undefined;
@@ -800,6 +801,16 @@ define([
get : function() {
return this._imagerySplitPosition;
}
+ },
+
+ /**
+ * @memberof UniformState.prototype
+ * @type {Array}
+ */
+ imageryColorPalette : {
+ get : function() {
+ return this._imageryColorPalette;
+ }
}
});
@@ -962,6 +973,7 @@ define([
this._temeToPseudoFixed = Transforms.computeTemeToPseudoFixedMatrix(frameState.time, this._temeToPseudoFixed);
this._imagerySplitPosition = frameState.imagerySplitPosition;
+ this._imageryColorPalette = frameState.imageryColorPalette;
var fov = camera.frustum.fov;
var viewport = this._viewport;
var pixelSizePerMeter;
diff --git a/Source/Scene/CustomTemplateImageryProvider.js b/Source/Scene/CustomTemplateImageryProvider.js
new file mode 100644
index 000000000000..b9e5c9dfb24f
--- /dev/null
+++ b/Source/Scene/CustomTemplateImageryProvider.js
@@ -0,0 +1,990 @@
+/*global define*/
+define([
+ '../Core/Cartesian2',
+ '../Core/Cartesian3',
+ '../Core/Cartographic',
+ '../Core/combine',
+ '../Core/Credit',
+ '../Core/defaultValue',
+ '../Core/defined',
+ '../Core/defineProperties',
+ '../Core/DeveloperError',
+ '../Core/Event',
+ '../Core/freezeObject',
+ '../Core/GeographicTilingScheme',
+ '../Core/isArray',
+ '../Core/loadJson',
+ '../Core/loadText',
+ '../Core/loadWithXhr',
+ '../Core/loadXML',
+ '../Core/Math',
+ '../Core/Rectangle',
+ '../Core/TileProviderError',
+ '../Core/WebMercatorTilingScheme',
+ '../ThirdParty/when',
+ './ImageryProvider'
+ ], function(
+ Cartesian2,
+ Cartesian3,
+ Cartographic,
+ combine,
+ Credit,
+ defaultValue,
+ defined,
+ defineProperties,
+ DeveloperError,
+ Event,
+ freezeObject,
+ GeographicTilingScheme,
+ isArray,
+ loadJson,
+ loadText,
+ loadWithXhr,
+ loadXML,
+ CesiumMath,
+ Rectangle,
+ TileProviderError,
+ WebMercatorTilingScheme,
+ when,
+ ImageryProvider
+ ) {
+ 'use strict';
+
+ /**
+ * Provides imagery by requesting tiles using a specified URL template.
+ *
+ * @alias CustomTemplateImageryProvider
+ * @constructor
+ *
+ * @param {Promise.