From 3ad5d15058c450fcbba3f77c2b5ecc4138931f1a Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Thu, 17 Nov 2016 16:47:35 +0300 Subject: [PATCH] Tuned traffic vizualization --- data/resources-6plus_clear/traffic-arrow.png | Bin 508 -> 241 bytes data/resources-6plus_dark/traffic-arrow.png | Bin 508 -> 241 bytes data/resources-6plus_legacy/traffic-arrow.png | Bin 508 -> 241 bytes data/resources-hdpi_clear/traffic-arrow.png | Bin 508 -> 162 bytes data/resources-hdpi_dark/traffic-arrow.png | Bin 508 -> 162 bytes data/resources-hdpi_legacy/traffic-arrow.png | Bin 508 -> 162 bytes data/resources-ldpi_clear/traffic-arrow.png | Bin 508 -> 321 bytes data/resources-ldpi_dark/traffic-arrow.png | Bin 508 -> 321 bytes data/resources-ldpi_legacy/traffic-arrow.png | Bin 508 -> 321 bytes data/resources-mdpi_clear/traffic-arrow.png | Bin 508 -> 126 bytes data/resources-mdpi_dark/traffic-arrow.png | Bin 508 -> 126 bytes data/resources-mdpi_legacy/traffic-arrow.png | Bin 508 -> 126 bytes data/resources-xhdpi_clear/traffic-arrow.png | Bin 508 -> 174 bytes data/resources-xhdpi_dark/traffic-arrow.png | Bin 508 -> 174 bytes data/resources-xhdpi_legacy/traffic-arrow.png | Bin 508 -> 174 bytes data/resources-xxhdpi_clear/traffic-arrow.png | Bin 508 -> 227 bytes data/resources-xxhdpi_dark/traffic-arrow.png | Bin 508 -> 227 bytes .../resources-xxhdpi_legacy/traffic-arrow.png | Bin 508 -> 227 bytes drape/shaders/traffic_fragment_shader.fsh | 20 +++++++++++---- drape/shaders/traffic_vertex_shader.vsh | 2 ++ drape_frontend/color_constants.cpp | 24 +++++++++--------- drape_frontend/traffic_renderer.cpp | 2 +- 22 files changed, 30 insertions(+), 18 deletions(-) diff --git a/data/resources-6plus_clear/traffic-arrow.png b/data/resources-6plus_clear/traffic-arrow.png index ff4e41a01a8901da544bfab4fd96f39ffe354def..88d0e762fe5faa57e859b9eba99e381a79fbb7cc 100644 GIT binary patch literal 241 zcmVf!6*O#3=WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUf!6*O#3=WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUf!6*O#3=WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUvW*QkkAEjv*C{$r6GO{{R2K&f$#3 z44E%79r;X!dIF#M*x2X(?`N3bP$49+dSbSOw7}WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUvW*QkkAEjv*C{$r6GO{{R2K&f$#3 z44E%79r;X!dIF#M*x2X(?`N3bP$49+dSbSOw7}WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUvW*QkkAEjv*C{$r6GO{{R2K&f$#3 z44E%79r;X!dIF#M*x2X(?`N3bP$49+dSbSOw7}WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUPx#`$;OFBo3~U2*uO> z%=1QO7aXP3WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUPx#`$;OFBo3~U2*uO> z%=1QO7aXP3WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUPx#`$;OFBo3~U2*uO> z%=1QO7aXP3WFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU@SW{>K>pw2ruhzgSUS$GNIh8nM=U_jW&4Dt6^tS-Upi8L aF*A7i?KgN>nfn)LAcLo?pUXO@geCy`1ukF! literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU@SW{>K>pw2ruhzgSUS$GNIh8nM=U_jW&4Dt6^tS-Upi8L aF*A7i?KgN>nfn)LAcLo?pUXO@geCy`1ukF! literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU@SW{>K>pw2ruhzgSUS$GNIh8nM=U_jW&4Dt6^tS-Upi8L aF*A7i?KgN>nfn)LAcLo?pUXO@geCy`1ukF! literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU$9-d_1t~|Bi#6E}s_NS!5#hu=zhH z^Qp<#|1+}AIGMeo`aq3=>cUzVwS{etkxq=VTjy-@vH2ipVQ{7UV)ToXDO)rR8xlkq Z82)e{dt&xEvl{3C22WQ%mvv4FO#t@oMvMRe literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU$9-d_1t~|Bi#6E}s_NS!5#hu=zhH z^Qp<#|1+}AIGMeo`aq3=>cUzVwS{etkxq=VTjy-@vH2ipVQ{7UV)ToXDO)rR8xlkq Z82)e{dt&xEvl{3C22WQ%mvv4FO#t@oMvMRe literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU$9-d_1t~|Bi#6E}s_NS!5#hu=zhH z^Qp<#|1+}AIGMeo`aq3=>cUzVwS{etkxq=VTjy-@vH2ipVQ{7UV)ToXDO)rR8xlkq Z82)e{dt&xEvl{3C22WQ%mvv4FO#t@oMvMRe literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUlqZU;u zJcc8ejxmHH-3r)p-wCEsbM`x6(ew6Emvw%a^tycWL$BBUPJXEV17E9;Ir#ScREEd- z#Rh#ezu2G|lt7aS-eRb>DG002ovPDHLkV1ho7S}6bk literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUlqZU;u zJcc8ejxmHH-3r)p-wCEsbM`x6(ew6Emvw%a^tycWL$BBUPJXEV17E9;Ir#ScREEd- z#Rh#ezu2G|lt7aS-eRb>DG002ovPDHLkV1ho7S}6bk literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vUlqZU;u zJcc8ejxmHH-3r)p-wCEsbM`x6(ew6Emvw%a^tycWL$BBUPJXEV17E9;Ir#ScREEd- z#Rh#ezu2G|lt7aS-eRb>DG002ovPDHLkV1ho7S}6bk literal 508 zcmVWFU8GbZ8()Nlj2>E@cM*00Cf0L_t(o!{wJhOM@{G z#(&o;TG}FYa&U0#(Ah~rchS+&RnX0^;HKgr*vU 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; diff --git a/drape_frontend/color_constants.cpp b/drape_frontend/color_constants.cpp index a3053de113..b940c297ca 100644 --- a/drape_frontend/color_constants.cpp +++ b/drape_frontend/color_constants.cpp @@ -24,12 +24,12 @@ unordered_map> kColorConstants = { TrackCarSpeed, dp::Color(21, 121, 244, 255) }, { TrackPlaneSpeed, dp::Color(10, 196, 255, 255) }, { TrackUnknownDistance, dp::Color(97, 97, 97, 255) }, - { TrafficG0, dp::Color(60, 170, 60, 255) }, - { TrafficG1, dp::Color(60, 170, 60, 255) }, - { TrafficG2, dp::Color(227, 38, 54, 255) }, - { TrafficG3, dp::Color(0, 100, 100, 255) }, - { TrafficG4, dp::Color(100, 0, 100, 255) }, - { TrafficG5, dp::Color(100, 100, 0, 255) }, + { TrafficG0, dp::Color(180, 25, 25, 255) }, + { TrafficG1, dp::Color(230, 60, 55, 255) }, + { TrafficG2, dp::Color(230, 60, 55, 255) }, + { TrafficG3, dp::Color(250, 190, 45, 127) }, + { TrafficG4, dp::Color(250, 190, 45, 127) }, + { TrafficG5, dp::Color(55, 165, 55, 255) }, { TrafficTempBlock, dp::Color(0, 0, 0, 255) }, { TrafficUnknown, dp::Color(0, 0, 0, 0) }, } @@ -48,12 +48,12 @@ unordered_map> kColorConstants = { TrackCarSpeed, dp::Color(255, 202, 40, 255) }, { TrackPlaneSpeed, dp::Color(255, 245, 160, 255) }, { TrackUnknownDistance, dp::Color(150, 150, 150, 255) }, - { TrafficG0, dp::Color(60, 170, 60, 255) }, - { TrafficG1, dp::Color(60, 170, 60, 255) }, - { TrafficG2, dp::Color(227, 38, 54, 255) }, - { TrafficG3, dp::Color(100, 100, 100, 255) }, - { TrafficG4, dp::Color(100, 100, 100, 255) }, - { TrafficG5, dp::Color(100, 100, 100, 255) }, + { TrafficG0, dp::Color(180, 25, 25, 255) }, + { TrafficG1, dp::Color(230, 60, 55, 255) }, + { TrafficG2, dp::Color(230, 60, 55, 255) }, + { TrafficG3, dp::Color(250, 190, 45, 127) }, + { TrafficG4, dp::Color(250, 190, 45, 127) }, + { TrafficG5, dp::Color(55, 165, 55, 255) }, { TrafficTempBlock, dp::Color(0, 0, 0, 255) }, { TrafficUnknown, dp::Color(0, 0, 0, 0) }, } diff --git a/drape_frontend/traffic_renderer.cpp b/drape_frontend/traffic_renderer.cpp index c8d1d9906b..8444aab29d 100644 --- a/drape_frontend/traffic_renderer.cpp +++ b/drape_frontend/traffic_renderer.cpp @@ -22,7 +22,7 @@ namespace int const kMinVisibleZoomLevel = 10; int const kMinVisibleArrowZoomLevel = 16; -float const kTrafficArrowAspect = 64.0f / 16.0f; +float const kTrafficArrowAspect = 24.0f / 8.0f; float const kLeftWidthInPixel[] = {