summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-04-18 16:12:10 +0200
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-04-18 14:20:33 -0700
commita6fe087b4801292da658222f7dc4c30f7d62eea2 (patch)
treeb5ff463a6d44e5b45c602fb39f75e828d0cb4d47
parentddecdeca9493ac1caaae2301eb822bdbf2f75ff9 (diff)
downloadqtlocation-mapboxgl-a6fe087b4801292da658222f7dc4c30f7d62eea2.tar.gz
[core] remove undefined behavior from fill_outline shaders
m---------mapbox-gl-js0
-rw-r--r--src/mbgl/shaders/fill_outline.cpp2
-rw-r--r--src/mbgl/shaders/fill_outline_pattern.cpp2
-rw-r--r--src/mbgl/shaders/preludes.cpp5
4 files changed, 5 insertions, 4 deletions
diff --git a/mapbox-gl-js b/mapbox-gl-js
-Subproject 1bc8caa7c647d89200b974374b4476cef937aa0
+Subproject c1934a5ed812e5501895acbd3e5c7fcd5521b2c
diff --git a/src/mbgl/shaders/fill_outline.cpp b/src/mbgl/shaders/fill_outline.cpp
index 3e160ac6c2..91b5db49ba 100644
--- a/src/mbgl/shaders/fill_outline.cpp
+++ b/src/mbgl/shaders/fill_outline.cpp
@@ -41,7 +41,7 @@ void main() {
float dist = length(v_pos - gl_FragCoord.xy);
- float alpha = smoothstep(1.0, 0.0, dist);
+ float alpha = 1.0 - smoothstep(0.0, 1.0, dist);
gl_FragColor = outline_color * (alpha * opacity);
#ifdef OVERDRAW_INSPECTOR
diff --git a/src/mbgl/shaders/fill_outline_pattern.cpp b/src/mbgl/shaders/fill_outline_pattern.cpp
index 5e38023382..5825612e95 100644
--- a/src/mbgl/shaders/fill_outline_pattern.cpp
+++ b/src/mbgl/shaders/fill_outline_pattern.cpp
@@ -68,7 +68,7 @@ void main() {
// find distance to outline for alpha interpolation
float dist = length(v_pos - gl_FragCoord.xy);
- float alpha = smoothstep(1.0, 0.0, dist);
+ float alpha = 1.0 - smoothstep(0.0, 1.0, dist);
gl_FragColor = mix(color1, color2, u_mix) * alpha * opacity;
diff --git a/src/mbgl/shaders/preludes.cpp b/src/mbgl/shaders/preludes.cpp
index cca0f3e3f1..95fa624e8d 100644
--- a/src/mbgl/shaders/preludes.cpp
+++ b/src/mbgl/shaders/preludes.cpp
@@ -48,8 +48,9 @@ vec4 evaluate_zoom_function_4(const vec4 value0, const vec4 value1, const vec4 v
// packed like so:
// packedValue = floor(input[0]) * 256 + input[1],
vec2 unpack_float(const float packedValue) {
- float v0 = floor(packedValue / 256.0);
- return vec2(v0, packedValue - v0 * 256.0);
+ int packedIntValue = int(packedValue);
+ int v0 = packedIntValue / 256;
+ return vec2(v0, packedIntValue - v0 * 256);
}