From e6d6aa8ea9c19f792e4694acfd179de54b815574 Mon Sep 17 00:00:00 2001
From: Kangning Li
Date: Fri, 27 May 2016 14:52:13 -0400
Subject: [PATCH 01/33] Added HSB color shifting to the atmosphere and a demo
in sandbox. Updated CHANGES.md
---
.../gallery/Atmosphere HSB Color.html | 108 ++++++++++++++++++
.../gallery/Atmosphere HSB Color.jpg | Bin 0 -> 9202 bytes
CHANGES.md | 1 +
Source/Scene/SkyAtmosphere.js | 31 +++++
Source/Shaders/SkyAtmosphereFS.glsl | 35 +++++-
5 files changed, 174 insertions(+), 1 deletion(-)
create mode 100644 Apps/Sandcastle/gallery/Atmosphere HSB Color.html
create mode 100644 Apps/Sandcastle/gallery/Atmosphere HSB Color.jpg
diff --git a/Apps/Sandcastle/gallery/Atmosphere HSB Color.html b/Apps/Sandcastle/gallery/Atmosphere HSB Color.html
new file mode 100644
index 000000000000..38667ba8183d
--- /dev/null
+++ b/Apps/Sandcastle/gallery/Atmosphere HSB Color.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+ Cesium Demo
+
+
+
+
+
+
+
+Loading...
+
+
+
+
diff --git a/Apps/Sandcastle/gallery/Atmosphere HSB Color.jpg b/Apps/Sandcastle/gallery/Atmosphere HSB Color.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..81efb03aaf2aa8014edd33df69691b0b18d4c7f3
GIT binary patch
literal 9202
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
literal 0
HcmV?d00001
diff --git a/CHANGES.md b/CHANGES.md
index 8913bcf7cd08..22d772ef9f72 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -27,6 +27,7 @@ Change Log
* Added `Scene.nearToFarDistance2D` that determines the size of each frustum of the multifrustum in 2D.
* Added support for rendering models in 2D and Columbus view.
* Fixed a bug that was causing the atmosphere to disappear when only atmosphere is visible. [#3347](https://github.com/AnalyticalGraphicsInc/cesium/issues/3347)
+* Added support for hue, saturation, and brightness color shifts in the atmosphere in `SkyAtmosphere` [3439](https://github.com/AnalyticalGraphicsInc/cesium/issues/3439)
### 1.21 - 2016-05-02
diff --git a/Source/Scene/SkyAtmosphere.js b/Source/Scene/SkyAtmosphere.js
index 6c28879bd86d..10e503f40e38 100644
--- a/Source/Scene/SkyAtmosphere.js
+++ b/Source/Scene/SkyAtmosphere.js
@@ -80,6 +80,31 @@ define([
});
this._spSkyFromSpace = undefined;
this._spSkyFromAtmosphere = undefined;
+
+ // hue, saturation, and brightness shift values for color adjustment
+ /**
+ * The hue shift to apply to the atmosphere. Defaults to 0.0 (no shift).
+ * @type {Number}
+ * @default 0.0
+ */
+ this.hueShift = 0.0;
+
+ /**
+ * The saturation shift to apply to the atmosphere. Defaults to 0.0 (no shift).
+ * @type {Number}
+ * @default 0.0
+ */
+ this.saturationShift = 0.0;
+
+ /**
+ * The brightness shift to apply to the atmosphere. Defaults to 0.0 (no shift).
+ * @type {Number}
+ * @default 0.0
+ */
+ this.brightnessShift = 0.0;
+
+ var hsbScratch = new Cartesian3(this.hueShift, this.saturationShift, this.brightnessShift);
+ this._hsbScratch = hsbScratch;
// camera height, outer radius, inner radius, dynamic atmosphere color flag
var cameraAndRadiiAndDynamicAtmosphereColor = new Cartesian4();
@@ -96,6 +121,12 @@ define([
this._command.uniformMap = {
cameraAndRadiiAndDynamicAtmosphereColor : function() {
return that._cameraAndRadiiAndDynamicAtmosphereColor;
+ },
+ u_hsvShift : function() {
+ hsbScratch.x = that.hueShift;
+ hsbScratch.y = that.saturationShift;
+ hsbScratch.z = that.brightnessShift;
+ return that._hsbScratch;
}
};
}
diff --git a/Source/Shaders/SkyAtmosphereFS.glsl b/Source/Shaders/SkyAtmosphereFS.glsl
index 5e9b75eab92c..9fbc3dab360b 100644
--- a/Source/Shaders/SkyAtmosphereFS.glsl
+++ b/Source/Shaders/SkyAtmosphereFS.glsl
@@ -32,15 +32,38 @@
// Code: http://sponeil.net/
// GPU Gems 2 Article: http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter16.html
-
+ // HSV <-> RGB conversion with minimal branching: http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
+
+uniform vec3 u_hsvShift; // hue, saturation, value
+
const float g = -0.95;
const float g2 = g * g;
+const float epsilon = 1.0e-10;
+const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
+const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
+
varying vec3 v_rayleighColor;
varying vec3 v_mieColor;
varying vec3 v_toCamera;
varying vec3 v_positionEC;
+vec3 rgb2hsb(vec3 rgbColor)
+{
+ vec4 p = mix(vec4(rgbColor.bg, K_RGB2HSB.wz), vec4(rgbColor.gb, K_RGB2HSB.xy), step(rgbColor.b, rgbColor.g));
+ vec4 q = mix(vec4(p.xyw, rgbColor.r), vec4(rgbColor.r, p.yzx), step(p.x, rgbColor.r));
+
+ float d = q.x - min(q.w, q.y);
+ float e = 1.0e-10;
+ return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
+}
+
+vec3 hsb2rgb(vec3 hsbColor)
+{
+ vec3 p = abs(fract(hsbColor.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www);
+ return hsbColor.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsbColor.y);
+}
+
void main (void)
{
// Extra normalize added for Android
@@ -52,6 +75,16 @@ void main (void)
vec3 rgb = rayleighPhase * v_rayleighColor + miePhase * v_mieColor;
rgb = vec3(1.0) - exp(-exposure * rgb);
+
+ // convert rgb color to hsv
+ vec3 hsv = rgb2hsb(rgb);
+ // perform hsv shift
+ hsv.x += u_hsvShift.x; // hue
+ hsv.y = clamp(hsv.y + u_hsvShift.y, 0.0, 1.0); // saturation
+ hsv.z += u_hsvShift.z; // brightness
+ // convert shifted hsv back to rgb
+ rgb = hsb2rgb(hsv);
+
float l = czm_luminance(rgb);
gl_FragColor = vec4(rgb, min(smoothstep(0.0, 0.1, l), 1.0) * smoothstep(0.0, 1.0, czm_morphTime));
}
From 8d6d235a1ec863b0e7a3bae809e3f4e48791c44d Mon Sep 17 00:00:00 2001
From: Kangning Li
Date: Fri, 27 May 2016 15:23:24 -0400
Subject: [PATCH 02/33] Moved luminance calculation to prevent weird night
skies with brightness shift.
---
Source/Shaders/SkyAtmosphereFS.glsl | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/Source/Shaders/SkyAtmosphereFS.glsl b/Source/Shaders/SkyAtmosphereFS.glsl
index 9fbc3dab360b..52b1f1fdddcc 100644
--- a/Source/Shaders/SkyAtmosphereFS.glsl
+++ b/Source/Shaders/SkyAtmosphereFS.glsl
@@ -75,16 +75,17 @@ void main (void)
vec3 rgb = rayleighPhase * v_rayleighColor + miePhase * v_mieColor;
rgb = vec3(1.0) - exp(-exposure * rgb);
+ // compute luminance before color correction to avoid strangely gray night skies
+ float l = czm_luminance(rgb);
// convert rgb color to hsv
vec3 hsv = rgb2hsb(rgb);
// perform hsv shift
hsv.x += u_hsvShift.x; // hue
hsv.y = clamp(hsv.y + u_hsvShift.y, 0.0, 1.0); // saturation
- hsv.z += u_hsvShift.z; // brightness
+ hsv.z = hsv.z > epsilon ? hsv.z + u_hsvShift.z : 0.0; // brightness
// convert shifted hsv back to rgb
rgb = hsb2rgb(hsv);
- float l = czm_luminance(rgb);
gl_FragColor = vec4(rgb, min(smoothstep(0.0, 0.1, l), 1.0) * smoothstep(0.0, 1.0, czm_morphTime));
}
From 078a0b594a02955e96ab63e7353a6fa0bb5a2046 Mon Sep 17 00:00:00 2001
From: Kangning Li
Date: Sat, 28 May 2016 03:09:28 -0400
Subject: [PATCH 03/33] Addressed some pull request items: changed some names,
updated some documentation, added some shader defines, added a test case
---
...e HSB Color.html => Atmosphere Color.html} | 29 ++++++++--
Apps/Sandcastle/gallery/Atmosphere Color.jpg | Bin 0 -> 9151 bytes
.../gallery/Atmosphere HSB Color.jpg | Bin 9202 -> 0 bytes
CHANGES.md | 2 +-
Source/Scene/SkyAtmosphere.js | 51 ++++++++++++++----
Source/Shaders/SkyAtmosphereFS.glsl | 33 +++++++-----
Specs/Scene/SkyAtmosphereSpec.js | 34 ++++++++++++
7 files changed, 120 insertions(+), 29 deletions(-)
rename Apps/Sandcastle/gallery/{Atmosphere HSB Color.html => Atmosphere Color.html} (78%)
create mode 100644 Apps/Sandcastle/gallery/Atmosphere Color.jpg
delete mode 100644 Apps/Sandcastle/gallery/Atmosphere HSB Color.jpg
diff --git a/Apps/Sandcastle/gallery/Atmosphere HSB Color.html b/Apps/Sandcastle/gallery/Atmosphere Color.html
similarity index 78%
rename from Apps/Sandcastle/gallery/Atmosphere HSB Color.html
rename to Apps/Sandcastle/gallery/Atmosphere Color.html
index 38667ba8183d..bbe7db3c4e0b 100644
--- a/Apps/Sandcastle/gallery/Atmosphere HSB Color.html
+++ b/Apps/Sandcastle/gallery/Atmosphere Color.html
@@ -4,7 +4,7 @@
-
+
Cesium Demo
@@ -56,14 +56,17 @@
+
+
+
+Loading...
+
+
+
diff --git a/Apps/Sandcastle/gallery/CZML Circles and Ellipses.html b/Apps/Sandcastle/gallery/CZML Circles and Ellipses.html
index 44869d48ee57..e9fd0a46f533 100644
--- a/Apps/Sandcastle/gallery/CZML Circles and Ellipses.html
+++ b/Apps/Sandcastle/gallery/CZML Circles and Ellipses.html
@@ -1,20 +1,20 @@