From 3511f4543a9a6515b6d5632c4cfe3bc0b2241dac Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Fri, 8 Apr 2016 14:08:27 -0400 Subject: [PATCH 01/10] Create the initial texture when the first image is added --- Source/Scene/TextureAtlas.js | 53 ++++-------------------------------- 1 file changed, 5 insertions(+), 48 deletions(-) diff --git a/Source/Scene/TextureAtlas.js b/Source/Scene/TextureAtlas.js index 47dc728b1f83..259cbd674fd1 100644 --- a/Source/Scene/TextureAtlas.js +++ b/Source/Scene/TextureAtlas.js @@ -42,8 +42,6 @@ define([ this.imageIndex = imageIndex; } - var defaultInitialSize = new Cartesian2(16.0, 16.0); - /** * A TextureAtlas stores multiple images in one square texture and keeps * track of the texture coordinates for each image. TextureAtlas is dynamic, @@ -68,7 +66,6 @@ define([ function TextureAtlas(options) { options = defaultValue(options, defaultValue.EMPTY_OBJECT); var borderWidthInPixels = defaultValue(options.borderWidthInPixels, 1.0); - var initialSize = defaultValue(options.initialSize, defaultInitialSize); //>>includeStart('debug', pragmas.debug); if (!defined(options.context)) { @@ -77,9 +74,6 @@ define([ if (borderWidthInPixels < 0) { throw new DeveloperError('borderWidthInPixels must be greater than or equal to zero.'); } - if (initialSize.x < 1 || initialSize.y < 1) { - throw new DeveloperError('initialSize must be greater than zero.'); - } //>>includeEnd('debug'); this._context = options.context; @@ -89,34 +83,7 @@ define([ this._guid = createGuid(); this._idHash = {}; - // Create initial texture and root. - this._texture = new Texture({ - context : this._context, - width : initialSize.x, - height : initialSize.y, - pixelFormat : this._pixelFormat - }); - this._root = new TextureAtlasNode(new Cartesian2(), new Cartesian2(initialSize.x, initialSize.y)); - - var that = this; - var uniformMap = { - u_texture : function() { - return that._texture; - } - }; - - var fs = - 'uniform sampler2D u_texture;\n' + - 'varying vec2 v_textureCoordinates;\n' + - 'void main()\n' + - '{\n' + - ' gl_FragColor = texture2D(u_texture, v_textureCoordinates);\n' + - '}\n'; - - - this._copyCommand = this._context.createViewportQuadCommand(fs, { - uniformMap : uniformMap - }); + this._root = undefined; } defineProperties(TextureAtlas.prototype, { @@ -202,7 +169,6 @@ define([ var nodeBottomHalf = new TextureAtlasNode(new Cartesian2(), new Cartesian2(atlasWidth, oldAtlasHeight), textureAtlas._root, nodeBottomRight); var nodeTopHalf = new TextureAtlasNode(new Cartesian2(0.0, oldAtlasHeight + textureAtlas._borderWidthInPixels), new Cartesian2(atlasWidth, atlasHeight)); var nodeMain = new TextureAtlasNode(new Cartesian2(), new Cartesian2(atlasWidth, atlasHeight), nodeBottomHalf, nodeTopHalf); - textureAtlas._root = nodeMain; // Resize texture coordinates. for (var i = 0; i < textureAtlas._textureCoordinates.length; i++) { @@ -225,26 +191,17 @@ define([ var framebuffer = new Framebuffer({ context : context, - colorTextures : [newTexture], + colorTextures : [textureAtlas._texture], destroyAttachments : false }); - var command = textureAtlas._copyCommand; - var renderState = { - viewport : new BoundingRectangle(0, 0, oldAtlasWidth, oldAtlasHeight) - }; - command.renderState = RenderState.fromCache(renderState); - - // Copy by rendering a viewport quad, instead of using Texture.copyFromFramebuffer, - // to workaround a Chrome 45 issue, https://github.com/AnalyticalGraphicsInc/cesium/issues/2997 framebuffer._bind(); - command.execute(textureAtlas._context); + newTexture.copyFromFramebuffer(0, 0, 0, 0, atlasWidth, atlasHeight); framebuffer._unBind(); framebuffer.destroy(); + textureAtlas._texture = textureAtlas._texture && textureAtlas._texture.destroy(); textureAtlas._texture = newTexture; - - RenderState.removeFromCache(renderState); - command.renderState = undefined; + textureAtlas._root = nodeMain; } else { // First image exceeds initialSize var initialWidth = scalingFactor * (image.width + textureAtlas._borderWidthInPixels); From b0f82176d4d3f3480f89b5a6f032ee80c7ba738f Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Fri, 8 Apr 2016 14:46:20 -0400 Subject: [PATCH 02/10] Should still respect initial size --- Source/Scene/TextureAtlas.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Source/Scene/TextureAtlas.js b/Source/Scene/TextureAtlas.js index 259cbd674fd1..9bcf63b1ff36 100644 --- a/Source/Scene/TextureAtlas.js +++ b/Source/Scene/TextureAtlas.js @@ -42,6 +42,8 @@ define([ this.imageIndex = imageIndex; } + var defaultInitialSize = new Cartesian2(16.0, 16.0); + /** * A TextureAtlas stores multiple images in one square texture and keeps * track of the texture coordinates for each image. TextureAtlas is dynamic, @@ -66,6 +68,7 @@ define([ function TextureAtlas(options) { options = defaultValue(options, defaultValue.EMPTY_OBJECT); var borderWidthInPixels = defaultValue(options.borderWidthInPixels, 1.0); + var initialSize = defaultValue(options.initialSize, defaultInitialSize); //>>includeStart('debug', pragmas.debug); if (!defined(options.context)) { @@ -74,6 +77,9 @@ define([ if (borderWidthInPixels < 0) { throw new DeveloperError('borderWidthInPixels must be greater than or equal to zero.'); } + if (initialSize.x < 1 || initialSize.y < 1) { + throw new DeveloperError('initialSize must be greater than zero.'); + } //>>includeEnd('debug'); this._context = options.context; @@ -82,6 +88,7 @@ define([ this._textureCoordinates = []; this._guid = createGuid(); this._idHash = {}; + this._initialSize = initialSize; this._root = undefined; } @@ -213,6 +220,12 @@ define([ height : initialHeight, pixelFormat : textureAtlas._pixelFormat }); + if(initialWidth < textureAtlas._initialSize.x) { + initialWidth = textureAtlas._initialSize.x; + } + if(initialHeight < textureAtlas._initialSize.y) { + initialHeight = textureAtlas._initialSize.y; + } textureAtlas._root = new TextureAtlasNode(new Cartesian2(), new Cartesian2(initialWidth, initialHeight)); } } From 69e73ccf0128e4cbcfc997f017668b3f6dc635ad Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Mon, 11 Apr 2016 11:00:39 -0400 Subject: [PATCH 03/10] Updated CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 4b086c08faba..fbd86540d141 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ Change Log * Fixed issue causing the sun not to render. [#3801](https://github.com/AnalyticalGraphicsInc/cesium/pull/3801) * Fixed issue where `Camera.flyTo` does not go to the rectangle. [#3688](https://github.com/AnalyticalGraphicsInc/cesium/issues/3688) * Fixed issue causing the fog to go dark and the atmosphere to flicker when the camera clips the globe. [#3178](https://github.com/AnalyticalGraphicsInc/cesium/issues/3178) +* Fixed issue where labels were disappearing. [3730](https://github.com/AnalyticalGraphicsInc/cesium/issues/3730) ### 1.20 - 2016-04-01 From 8ff811eb9fe8da63e9c34a8c28c1b29d9850e5d4 Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Tue, 12 Apr 2016 09:24:00 -0400 Subject: [PATCH 04/10] Corrected dimensions for the textureatlas --- Specs/Scene/TextureAtlasSpec.js | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Specs/Scene/TextureAtlasSpec.js b/Specs/Scene/TextureAtlasSpec.js index a5684adae1eb..33f0651411ee 100644 --- a/Specs/Scene/TextureAtlasSpec.js +++ b/Specs/Scene/TextureAtlasSpec.js @@ -145,8 +145,8 @@ void main() {\n\ expect(atlas.borderWidthInPixels).toEqual(0); var texture = atlas.texture; - var atlasWidth = 1.0; - var atlasHeight = 1.0; + var atlasWidth = 2.0; + var atlasHeight = 2.0; expect(texture.pixelFormat).toEqual(PixelFormat.RGBA); expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -187,8 +187,8 @@ void main() {\n\ var texture = atlas.texture; - var atlasWidth = 16.0; - var atlasHeight = 16.0; + var atlasWidth = 4.0; + var atlasHeight = 4.0; expect(texture.pixelFormat).toEqual(PixelFormat.RGBA); expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -228,8 +228,8 @@ void main() {\n\ var texture = atlas.texture; - var atlasWidth = 1.0; - var atlasHeight = 5.0; + var atlasWidth = 2.0; + var atlasHeight = 8.0; expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -378,8 +378,8 @@ void main() {\n\ var c2 = atlas.textureCoordinates[bigRedIndex]; var c3 = atlas.textureCoordinates[bigBlueIndex]; - var atlasWidth = 68.0; - var atlasHeight = 68.0; + var atlasWidth = 48.0; + var atlasHeight = 48.0; expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -451,8 +451,8 @@ void main() {\n\ var texture = atlas.texture; var coordinates = atlas.textureCoordinates; - var atlasWidth = 1.0; - var atlasHeight = 1.0; + var atlasWidth = 2.0; + var atlasHeight = 2.0; expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -469,8 +469,8 @@ void main() {\n\ var texture = atlas.texture; var coordinates = atlas.textureCoordinates; - var atlasWidth = 10.0; - var atlasHeight = 10.0; + var atlasWidth = 12.0; + var atlasHeight = 12.0; expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -482,7 +482,7 @@ void main() {\n\ // big green image expect(coordinates[greenIndex].x).toEqual(0.0 / atlasWidth); - expect(coordinates[greenIndex].y).toEqual(1.0 / atlasHeight); + expect(coordinates[greenIndex].y).toEqual(2.0 / atlasHeight); expect(coordinates[greenIndex].width).toEqual(4.0 / atlasWidth); expect(coordinates[greenIndex].height).toEqual(4.0 / atlasHeight); }); @@ -577,8 +577,8 @@ void main() {\n\ var texture = atlas.texture; var coordinates = atlas.textureCoordinates; - var atlasWidth = 10.0; - var atlasHeight = 10.0; + var atlasWidth = 6.0; + var atlasHeight = 6.0; expect(atlas.borderWidthInPixels).toEqual(2); expect(atlas.numberOfImages).toEqual(2); expect(texture.width).toEqual(atlasWidth); @@ -742,8 +742,8 @@ void main() {\n\ expect(atlas.numberOfImages).toEqual(5); var coordinates = atlas.textureCoordinates; - var atlasWidth = 1.0; - var atlasHeight = 1.0; + var atlasWidth = 2.0; + var atlasHeight = 2.0; expect(coordinates[index1].x).toEqual(0.0 / atlasWidth); expect(coordinates[index1].y).toEqual(0.0 / atlasHeight); @@ -793,8 +793,8 @@ void main() {\n\ expect(atlas.numberOfImages).toEqual(6); var coordinates = atlas.textureCoordinates; - var atlasWidth = 4.0; - var atlasHeight = 4.0; + var atlasWidth = 2.0; + var atlasHeight = 2.0; expect(coordinates[index1].x).toEqual(0.0 / atlasWidth); expect(coordinates[index1].y).toEqual(0.0 / atlasHeight); From 3b492ee6def42e495c74e24785bf6c6032a32c7e Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Thu, 14 Apr 2016 10:46:24 -0400 Subject: [PATCH 05/10] Initialize null texture to clear --- Source/Renderer/Texture.js | 28 +++++++++++++++++++++++----- Source/Scene/TextureAtlas.js | 12 ++++++------ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/Source/Renderer/Texture.js b/Source/Renderer/Texture.js index 305f15215adc..9a2e32272c51 100644 --- a/Source/Renderer/Texture.js +++ b/Source/Renderer/Texture.js @@ -136,12 +136,14 @@ define([ var gl = context._gl; var textureTarget = gl.TEXTURE_2D; - var texture = gl.createTexture(); - - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(textureTarget, texture); + var framebufferTarget = gl.FRAMEBUFFER; + var texture; if (defined(source)) { + texture = gl.createTexture(); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(textureTarget, texture); + // TODO: _gl.pixelStorei(_gl._UNPACK_ALIGNMENT, 4); gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, preMultiplyAlpha); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); @@ -164,10 +166,26 @@ define([ // Source: ImageData, HTMLImageElement, HTMLCanvasElement, or HTMLVideoElement gl.texImage2D(textureTarget, 0, internalFormat, pixelFormat, pixelDatatype, source); } + gl.bindTexture(textureTarget, null); } else { + // Initialize the pixels to zero to make sure that the texture was loaded, this is a workaround for chrome and may not always be necessary + var framebuffer = gl.createFramebuffer(); + gl.bindFramebuffer(framebufferTarget, framebuffer); + + texture = gl.createTexture(); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(textureTarget, texture); gl.texImage2D(textureTarget, 0, internalFormat, width, height, 0, pixelFormat, pixelDatatype, null); + gl.framebufferTexture2D(framebufferTarget, gl.COLOR_ATTACHMENT0, textureTarget, texture, 0); + + if(pixelFormat === gl.RGBA) { + gl.clearColor(0.0, 0.0, 0.0, 1.0); + gl.clear(gl.COLOR_BUFFER_BIT); + } + + gl.bindTexture(textureTarget, null); + gl.bindFramebuffer(framebufferTarget, null); } - gl.bindTexture(textureTarget, null); this._context = context; this._textureFilterAnisotropic = context._textureFilterAnisotropic; diff --git a/Source/Scene/TextureAtlas.js b/Source/Scene/TextureAtlas.js index 9bcf63b1ff36..aec3b2bc9093 100644 --- a/Source/Scene/TextureAtlas.js +++ b/Source/Scene/TextureAtlas.js @@ -213,6 +213,12 @@ define([ // First image exceeds initialSize var initialWidth = scalingFactor * (image.width + textureAtlas._borderWidthInPixels); var initialHeight = scalingFactor * (image.height + textureAtlas._borderWidthInPixels); + if(initialWidth < textureAtlas._initialSize.x) { + initialWidth = textureAtlas._initialSize.x; + } + if(initialHeight < textureAtlas._initialSize.y) { + initialHeight = textureAtlas._initialSize.y; + } textureAtlas._texture = textureAtlas._texture && textureAtlas._texture.destroy(); textureAtlas._texture = new Texture({ context : textureAtlas._context, @@ -220,12 +226,6 @@ define([ height : initialHeight, pixelFormat : textureAtlas._pixelFormat }); - if(initialWidth < textureAtlas._initialSize.x) { - initialWidth = textureAtlas._initialSize.x; - } - if(initialHeight < textureAtlas._initialSize.y) { - initialHeight = textureAtlas._initialSize.y; - } textureAtlas._root = new TextureAtlasNode(new Cartesian2(), new Cartesian2(initialWidth, initialHeight)); } } From 44d5f6fff21ca68f62859b571ae08b7020d08bfc Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Thu, 14 Apr 2016 10:47:03 -0400 Subject: [PATCH 06/10] Updated tests --- Specs/Scene/TextureAtlasSpec.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Specs/Scene/TextureAtlasSpec.js b/Specs/Scene/TextureAtlasSpec.js index 33f0651411ee..2d2a81c164aa 100644 --- a/Specs/Scene/TextureAtlasSpec.js +++ b/Specs/Scene/TextureAtlasSpec.js @@ -187,8 +187,8 @@ void main() {\n\ var texture = atlas.texture; - var atlasWidth = 4.0; - var atlasHeight = 4.0; + var atlasWidth = 16.0; + var atlasHeight = 16.0; expect(texture.pixelFormat).toEqual(PixelFormat.RGBA); expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -378,8 +378,8 @@ void main() {\n\ var c2 = atlas.textureCoordinates[bigRedIndex]; var c3 = atlas.textureCoordinates[bigBlueIndex]; - var atlasWidth = 48.0; - var atlasHeight = 48.0; + var atlasWidth = 68.0; + var atlasHeight = 68.0; expect(texture.width).toEqual(atlasWidth); expect(texture.height).toEqual(atlasHeight); @@ -589,7 +589,7 @@ void main() {\n\ expect(coordinates[greenIndex].width).toEqual(1.0 / atlasWidth); expect(coordinates[greenIndex].height).toEqual(1.0 / atlasHeight); - expect(coordinates[blueIndex].x).toEqual(4.0 / atlasWidth); + expect(coordinates[blueIndex].x).toEqual(3.0 / atlasWidth); expect(coordinates[blueIndex].y).toEqual(0.0 / atlasHeight); expect(coordinates[blueIndex].width).toEqual(1.0 / atlasWidth); expect(coordinates[blueIndex].height).toEqual(1.0 / atlasHeight); From b387671e18da80bbcd323a133fed75e78e0ffc49 Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Thu, 14 Apr 2016 10:56:35 -0400 Subject: [PATCH 07/10] Initialize texture to clear, not black --- Source/Renderer/Texture.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Renderer/Texture.js b/Source/Renderer/Texture.js index 9a2e32272c51..8112227cd81d 100644 --- a/Source/Renderer/Texture.js +++ b/Source/Renderer/Texture.js @@ -179,7 +179,7 @@ define([ gl.framebufferTexture2D(framebufferTarget, gl.COLOR_ATTACHMENT0, textureTarget, texture, 0); if(pixelFormat === gl.RGBA) { - gl.clearColor(0.0, 0.0, 0.0, 1.0); + gl.clearColor(0.0, 0.0, 0.0, 0.0); gl.clear(gl.COLOR_BUFFER_BIT); } From 86a7177149160356b37d226ef6f6964e31cdaa5e Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Tue, 26 Apr 2016 15:09:07 -0400 Subject: [PATCH 08/10] Fixed test failures --- Source/Renderer/Texture.js | 2 +- Source/Scene/TextureAtlas.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Source/Renderer/Texture.js b/Source/Renderer/Texture.js index 8112227cd81d..421dbd7f931c 100644 --- a/Source/Renderer/Texture.js +++ b/Source/Renderer/Texture.js @@ -179,12 +179,12 @@ define([ gl.framebufferTexture2D(framebufferTarget, gl.COLOR_ATTACHMENT0, textureTarget, texture, 0); if(pixelFormat === gl.RGBA) { - gl.clearColor(0.0, 0.0, 0.0, 0.0); gl.clear(gl.COLOR_BUFFER_BIT); } gl.bindTexture(textureTarget, null); gl.bindFramebuffer(framebufferTarget, null); + gl.deleteFramebuffer(framebuffer); } this._context = context; diff --git a/Source/Scene/TextureAtlas.js b/Source/Scene/TextureAtlas.js index aec3b2bc9093..adf579f2c555 100644 --- a/Source/Scene/TextureAtlas.js +++ b/Source/Scene/TextureAtlas.js @@ -125,6 +125,14 @@ define([ */ texture : { get : function() { + if(!defined(this._texture)) { + this._texture = new Texture({ + context : this._context, + width : this._initialSize.x, + height : this._initialSize.y, + pixelFormat : this._pixelFormat + }); + } return this._texture; } }, From 58fbd24a2b1e33fd2171b2bd4bee9cde8ae23199 Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Wed, 11 May 2016 09:48:27 -0400 Subject: [PATCH 09/10] Reverted changes to Texture.js --- Source/Renderer/Texture.js | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/Source/Renderer/Texture.js b/Source/Renderer/Texture.js index 421dbd7f931c..305f15215adc 100644 --- a/Source/Renderer/Texture.js +++ b/Source/Renderer/Texture.js @@ -136,14 +136,12 @@ define([ var gl = context._gl; var textureTarget = gl.TEXTURE_2D; - var framebufferTarget = gl.FRAMEBUFFER; - var texture; + var texture = gl.createTexture(); - if (defined(source)) { - texture = gl.createTexture(); - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(textureTarget, texture); + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(textureTarget, texture); + if (defined(source)) { // TODO: _gl.pixelStorei(_gl._UNPACK_ALIGNMENT, 4); gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, preMultiplyAlpha); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY); @@ -166,26 +164,10 @@ define([ // Source: ImageData, HTMLImageElement, HTMLCanvasElement, or HTMLVideoElement gl.texImage2D(textureTarget, 0, internalFormat, pixelFormat, pixelDatatype, source); } - gl.bindTexture(textureTarget, null); } else { - // Initialize the pixels to zero to make sure that the texture was loaded, this is a workaround for chrome and may not always be necessary - var framebuffer = gl.createFramebuffer(); - gl.bindFramebuffer(framebufferTarget, framebuffer); - - texture = gl.createTexture(); - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(textureTarget, texture); gl.texImage2D(textureTarget, 0, internalFormat, width, height, 0, pixelFormat, pixelDatatype, null); - gl.framebufferTexture2D(framebufferTarget, gl.COLOR_ATTACHMENT0, textureTarget, texture, 0); - - if(pixelFormat === gl.RGBA) { - gl.clear(gl.COLOR_BUFFER_BIT); - } - - gl.bindTexture(textureTarget, null); - gl.bindFramebuffer(framebufferTarget, null); - gl.deleteFramebuffer(framebuffer); } + gl.bindTexture(textureTarget, null); this._context = context; this._textureFilterAnisotropic = context._textureFilterAnisotropic; From 2aa1df04b8fcb58c5b2b7be36fef96e0907e1eaa Mon Sep 17 00:00:00 2001 From: Robert Taglang Date: Wed, 11 May 2016 09:53:56 -0400 Subject: [PATCH 10/10] Moved change to 1.22 --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 841992dbd69e..7217f5f74124 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ Change Log * Fixed exaggerated terrain tiles disappearing. [#3676](https://github.com/AnalyticalGraphicsInc/cesium/issues/3676) * Fixed infinite horizontal 2D scrolling in IE/Edge. [#3893](https://github.com/AnalyticalGraphicsInc/cesium/issues/3893) * Fixed a bug that could cause incorrect normals to be computed for exaggerated terrain, especially for low-detail tiles. [#3904](https://github.com/AnalyticalGraphicsInc/cesium/pull/3904) +* Fixed issue where labels were disappearing. [3730](https://github.com/AnalyticalGraphicsInc/cesium/issues/3730) ### 1.21 - 2016-05-02 @@ -25,7 +26,6 @@ Change Log * Fixed issue causing the fog to go dark and the atmosphere to flicker when the camera clips the globe. [#3178](https://github.com/AnalyticalGraphicsInc/cesium/issues/3178) * Fixed a bug that caused an exception and rendering to stop when using `ArcGisMapServerImageryProvider` to connect to a MapServer specifying the Web Mercator projection and a fullExtent bigger than the valid extent of the projection. [#3854](https://github.com/AnalyticalGraphicsInc/cesium/pull/3854) * Fixed issue causing an exception when switching scene modes with an active KML network link. [#3865](https://github.com/AnalyticalGraphicsInc/cesium/issues/3865) -* Fixed issue where labels were disappearing. [3730](https://github.com/AnalyticalGraphicsInc/cesium/issues/3730) ### 1.20 - 2016-04-01