diff options
author | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2016-11-28 16:02:40 +0300 |
---|---|---|
committer | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2016-11-28 16:02:40 +0300 |
commit | 51b7eae456439bbb1faea1bc05ee01a6e90765f6 (patch) | |
tree | e006112c81ca2f5c38cce34d2752915dcfbea59a /drape | |
parent | b3f62ee7cb0392ed918e3f9d1898a8ae09c61fee (diff) |
Added line simplification to traffic renderer
Diffstat (limited to 'drape')
-rw-r--r-- | drape/drape.pro | 2 | ||||
-rw-r--r-- | drape/shaders/shader_index.txt | 1 | ||||
-rw-r--r-- | drape/shaders/traffic_fragment_shader.fsh | 21 | ||||
-rw-r--r-- | drape/shaders/traffic_line_fragment_shader.fsh | 10 | ||||
-rw-r--r-- | drape/shaders/traffic_line_vertex_shader.vsh | 19 |
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; +} |