Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/drape
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-11-28 16:02:40 +0300
committerr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-11-28 16:02:40 +0300
commit51b7eae456439bbb1faea1bc05ee01a6e90765f6 (patch)
treee006112c81ca2f5c38cce34d2752915dcfbea59a /drape
parentb3f62ee7cb0392ed918e3f9d1898a8ae09c61fee (diff)
Added line simplification to traffic renderer
Diffstat (limited to 'drape')
-rw-r--r--drape/drape.pro2
-rw-r--r--drape/shaders/shader_index.txt1
-rw-r--r--drape/shaders/traffic_fragment_shader.fsh21
-rw-r--r--drape/shaders/traffic_line_fragment_shader.fsh10
-rw-r--r--drape/shaders/traffic_line_vertex_shader.vsh19
5 files changed, 39 insertions, 14 deletions
diff --git a/drape/drape.pro b/drape/drape.pro
index e13cad0f68..7c4dbeb6c3 100644
--- a/drape/drape.pro
+++ b/drape/drape.pro
@@ -56,6 +56,8 @@ OTHER_FILES += \
shaders/trackpoint_fragment_shader.fsh \
shaders/traffic_fragment_shader.fsh \
shaders/traffic_vertex_shader.vsh \
+ shaders/traffic_line_fragment_shader.fsh \
+ shaders/traffic_line_vertex_shader.vsh \
shaders/transparent_layer_fragment_shader.fsh \
shaders/transparent_layer_vertex_shader.vsh \
shaders/user_mark.vsh \
diff --git a/drape/shaders/shader_index.txt b/drape/shaders/shader_index.txt
index 73fc39a3ce..aa61633a49 100644
--- a/drape/shaders/shader_index.txt
+++ b/drape/shaders/shader_index.txt
@@ -30,3 +30,4 @@ TEXT_OUTLINED_BILLBOARD_PROGRAM text_outlined_billboard_vertex_shader.vsh text_f
TEXT_BILLBOARD_PROGRAM text_billboard_vertex_shader.vsh text_fragment_shader.fsh
BOOKMARK_BILLBOARD_PROGRAM user_mark_billboard.vsh texturing_fragment_shader.fsh
TRAFFIC_PROGRAM traffic_vertex_shader.vsh traffic_fragment_shader.fsh
+TRAFFIC_LINE_PROGRAM traffic_line_vertex_shader.vsh traffic_line_fragment_shader.fsh
diff --git a/drape/shaders/traffic_fragment_shader.fsh b/drape/shaders/traffic_fragment_shader.fsh
index f432f86b62..2a190d10c3 100644
--- a/drape/shaders/traffic_fragment_shader.fsh
+++ b/drape/shaders/traffic_fragment_shader.fsh
@@ -19,20 +19,13 @@ void main(void)
{
vec4 color = texture2D(u_colorTex, v_colorTexCoord);
float alphaCode = color.a;
- if (alphaCode > 0.1)
+ vec4 mask = texture2D(u_maskTex, v_maskTexCoord);
+ color.a = u_opacity * (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_halfLength)));
+ color.rgb = mix(color.rgb, mask.rgb * mix(kLightArrow, kDarkArrow, step(alphaCode, 0.6)), mask.a);
+ if (u_outline > 0.0)
{
- vec4 mask = texture2D(u_maskTex, v_maskTexCoord);
- color.a = u_opacity * (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_halfLength)));
- color.rgb = mix(color.rgb, mask.rgb * mix(kLightArrow, kDarkArrow, step(alphaCode, 0.6)), mask.a);
- if (u_outline > 0.0)
- {
- color.rgb = mix(color.rgb, vec3(1.0, 1.0, 1.0), step(kOutlineThreshold1, abs(v_halfLength)));
- color.rgb = mix(color.rgb, vec3(1.0, 1.0, 1.0), smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_halfLength)));
- }
- gl_FragColor = color;
- }
- else
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
+ color.rgb = mix(color.rgb, vec3(1.0, 1.0, 1.0), step(kOutlineThreshold1, abs(v_halfLength)));
+ color.rgb = mix(color.rgb, vec3(1.0, 1.0, 1.0), smoothstep(kOutlineThreshold2, kOutlineThreshold1, abs(v_halfLength)));
}
+ gl_FragColor = color;
}
diff --git a/drape/shaders/traffic_line_fragment_shader.fsh b/drape/shaders/traffic_line_fragment_shader.fsh
new file mode 100644
index 0000000000..37403d8f2e
--- /dev/null
+++ b/drape/shaders/traffic_line_fragment_shader.fsh
@@ -0,0 +1,10 @@
+varying vec2 v_colorTexCoord;
+
+uniform sampler2D u_colorTex;
+uniform float u_opacity;
+
+void main(void)
+{
+ vec4 color = texture2D(u_colorTex, v_colorTexCoord);
+ gl_FragColor = vec4(color.rgb, u_opacity);
+}
diff --git a/drape/shaders/traffic_line_vertex_shader.vsh b/drape/shaders/traffic_line_vertex_shader.vsh
new file mode 100644
index 0000000000..63ad1bef3c
--- /dev/null
+++ b/drape/shaders/traffic_line_vertex_shader.vsh
@@ -0,0 +1,19 @@
+attribute vec3 a_position;
+attribute vec2 a_colorTexCoord;
+
+uniform mat4 modelView;
+uniform mat4 projection;
+uniform mat4 pivotTransform;
+
+varying vec2 v_colorTexCoord;
+
+void main(void)
+{
+ vec2 transformedAxisPos = (vec4(a_position.xy, 0.0, 1.0) * modelView).xy;
+ vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection;
+ float w = pos.w;
+ pos.xyw = (pivotTransform * vec4(pos.xy, 0.0, w)).xyw;
+ pos.z *= pos.w / w;
+ v_colorTexCoord = a_colorTexCoord;
+ gl_Position = pos;
+}