diff options
author | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2016-11-17 16:47:35 +0300 |
---|---|---|
committer | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2016-11-17 16:47:35 +0300 |
commit | 3ad5d15058c450fcbba3f77c2b5ecc4138931f1a (patch) | |
tree | a82f7d1dcaf7d1e0b7f440543306b292da6c715a /drape | |
parent | 915d8130a778955455e899b973a1b93479c8ba36 (diff) |
Tuned traffic vizualization
Diffstat (limited to 'drape')
-rw-r--r-- | drape/shaders/traffic_fragment_shader.fsh | 20 | ||||
-rw-r--r-- | drape/shaders/traffic_vertex_shader.vsh | 2 |
2 files changed, 17 insertions, 5 deletions
diff --git a/drape/shaders/traffic_fragment_shader.fsh b/drape/shaders/traffic_fragment_shader.fsh index 287ea0b076..46fb3fa247 100644 --- a/drape/shaders/traffic_fragment_shader.fsh +++ b/drape/shaders/traffic_fragment_shader.fsh @@ -8,12 +8,22 @@ uniform float u_opacity; const float kAntialiasingThreshold = 0.92; +const vec3 kLightArrow = vec3(1.0, 1.0, 1.0); +const vec3 kDarkArrow = vec3(160.0 / 255.0, 120.0 / 255.0, 30.0 / 255.0); + void main(void) { vec4 color = texture2D(u_colorTex, v_colorTexCoord); - vec4 mask = texture2D(u_maskTex, v_maskTexCoord); - color.a = color.a * u_opacity * (1.0 - smoothstep(kAntialiasingThreshold, 1.0, abs(v_halfLength))); - color.rgb = mix(color.rgb, mask.rgb, mask.a); - - gl_FragColor = color; + 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); + gl_FragColor = color; + } + else + { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + } } diff --git a/drape/shaders/traffic_vertex_shader.vsh b/drape/shaders/traffic_vertex_shader.vsh index d66d811df9..7625f7cc79 100644 --- a/drape/shaders/traffic_vertex_shader.vsh +++ b/drape/shaders/traffic_vertex_shader.vsh @@ -13,6 +13,7 @@ varying vec2 v_maskTexCoord; varying float v_halfLength; const float kShapeCoordScalar = 1000.0; +const float kMinVisibleArrowPart = 0.9; void main(void) { @@ -34,6 +35,7 @@ void main(void) float uOffset = length(vec4(kShapeCoordScalar, 0, 0, 0) * modelView) * a_normal.w; v_colorTexCoord = a_colorTexCoord; v_maskTexCoord = vec2(uOffset * u_trafficParams.z, 0.5 * a_normal.z + 0.5) * u_trafficParams.w; + v_maskTexCoord.x *= step(kMinVisibleArrowPart, v_maskTexCoord.x); v_halfLength = a_normal.z; vec4 pos = vec4(transformedAxisPos, a_position.z, 1.0) * projection; float w = pos.w; |