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
diff options
context:
space:
mode:
-rw-r--r--drape/color.cpp9
-rw-r--r--drape/color.hpp2
-rw-r--r--drape_frontend/apply_feature_functors.cpp6
-rw-r--r--drape_frontend/drape_engine.cpp1
-rw-r--r--drape_frontend/poi_symbol_shape.cpp16
-rw-r--r--drape_frontend/shape_view_params.hpp2
-rw-r--r--drape_frontend/user_mark_shapes.cpp119
-rw-r--r--drape_frontend/user_mark_shapes.hpp1
-rw-r--r--drape_frontend/user_marks_provider.hpp2
-rw-r--r--map/search_mark.cpp19
-rw-r--r--map/search_mark.hpp1
-rw-r--r--map/user_mark.hpp1
-rw-r--r--shaders/metal_program_pool.mm112
13 files changed, 164 insertions, 127 deletions
diff --git a/drape/color.cpp b/drape/color.cpp
index 437326d2e8..c8258daa03 100644
--- a/drape/color.cpp
+++ b/drape/color.cpp
@@ -1,5 +1,7 @@
#include "drape/color.hpp"
+#include <algorithm>
+
namespace dp
{
@@ -66,6 +68,13 @@ float Color::GetAlphaF() const
return CHANNEL_TO_FLOAT(GetAlpha());
}
+void Color::PremultiplyAlpha(float opacity)
+{
+ float const newAlpha =
+ std::clamp<float>(GetAlpha() * opacity, 0.0f, static_cast<float>(MaxChannelValue));
+ m_rgba = GetRed() << 24 | GetGreen() << 16 | GetBlue() << 8 | static_cast<uint8_t>(newAlpha);
+}
+
uint8_t ExtractRed(uint32_t argb)
{
return (argb >> 16) & 0xFF;
diff --git a/drape/color.hpp b/drape/color.hpp
index 962ea18896..b46edacc14 100644
--- a/drape/color.hpp
+++ b/drape/color.hpp
@@ -35,6 +35,8 @@ struct Color
static_cast<uint8_t>(base::Clamp(GetBlueF() * s, 0.0f, 1.0f) * 255.0f), GetAlpha());
}
+ void PremultiplyAlpha(float opacity);
+
static Color Black() { return Color(0, 0, 0, 255); }
static Color White() { return Color(255, 255, 255, 255); }
static Color Red() { return Color(255, 0, 0, 255); }
diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp
index 4b0ab2279b..910126205e 100644
--- a/drape_frontend/apply_feature_functors.cpp
+++ b/drape_frontend/apply_feature_functors.cpp
@@ -52,6 +52,7 @@ double const kMinVisibleFontSize = 8.0;
std::string const kStarSymbol = "★";
std::string const kPriceSymbol = "$";
+df::ColorConstant const kPoiDeletedMaskColor = "PoiDeletedMask";
df::ColorConstant const kPoiHotelTextOutlineColor = "PoiHotelTextOutline";
df::ColorConstant const kRoadShieldBlackTextColor = "RoadShieldBlackText";
df::ColorConstant const kRoadShieldWhiteTextColor = "RoadShieldWhiteText";
@@ -592,7 +593,8 @@ void ApplyPointFeature::Finish(ref_ptr<dp::TextureManager> texMng)
params.m_posZ = m_posZ;
params.m_hasArea = m_hasArea;
params.m_prioritized = m_createdByEditor;
- params.m_obsoleteInEditor = m_obsoleteInEditor;
+ if (m_obsoleteInEditor)
+ params.m_maskColor = kPoiDeletedMaskColor;
params.m_specialDisplacement = specialDisplacementMode ? SpecialDisplacement::SpecialMode
: SpecialDisplacement::None;
params.m_specialPriority = specialModePriority;
@@ -1123,7 +1125,7 @@ void ApplyLineFeatureAdditional::GetRoadShieldsViewParams(ref_ptr<dp::TextureMan
poiParams.m_posZ = 0.0f;
poiParams.m_hasArea = false;
poiParams.m_prioritized = false;
- poiParams.m_obsoleteInEditor = false;
+ poiParams.m_maskColor.clear();
poiParams.m_anchor = anchor;
poiParams.m_offset = GetShieldOffset(anchor, 0.5, 0.5);
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp
index eee38244ed..4f86266291 100644
--- a/drape_frontend/drape_engine.cpp
+++ b/drape_frontend/drape_engine.cpp
@@ -948,6 +948,7 @@ drape_ptr<UserMarkRenderParams> DrapeEngine::GenerateMarkRenderInfo(UserPointMar
renderInfo->m_featureId = mark->GetFeatureID();
renderInfo->m_hasCreationAnimation = mark->HasCreationAnimation();
renderInfo->m_isMarkAboveText = mark->IsMarkAboveText();
+ renderInfo->m_symbolOpacity = mark->GetSymbolOpacity();
return renderInfo;
}
diff --git a/drape_frontend/poi_symbol_shape.cpp b/drape_frontend/poi_symbol_shape.cpp
index 33d74326f0..e40d299980 100644
--- a/drape_frontend/poi_symbol_shape.cpp
+++ b/drape_frontend/poi_symbol_shape.cpp
@@ -14,8 +14,6 @@
namespace
{
-df::ColorConstant const kPoiDeletedMaskColor = "PoiDeletedMask";
-
using SV = gpu::SolidTexturingVertex;
using MV = gpu::MaskedTexturingVertex;
@@ -187,17 +185,17 @@ void PoiSymbolShape::Draw(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Batc
glsl::vec4 const position = glsl::vec4(pt, m_params.m_depth, -m_params.m_posZ);
m2::PointF const pixelSize = region.GetPixelSize();
- if (m_params.m_obsoleteInEditor)
+ if (m_params.m_maskColor.empty())
{
- dp::TextureManager::ColorRegion maskColorRegion;
- textures->GetColorRegion(df::GetColorConstant(kPoiDeletedMaskColor), maskColorRegion);
- Batch<MV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params,
- region, maskColorRegion);
+ Batch<SV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params, region,
+ dp::TextureManager::ColorRegion());
}
else
{
- Batch<SV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params,
- region, dp::TextureManager::ColorRegion());
+ dp::TextureManager::ColorRegion maskColorRegion;
+ textures->GetColorRegion(df::GetColorConstant(m_params.m_maskColor), maskColorRegion);
+ Batch<MV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params, region,
+ maskColorRegion);
}
}
diff --git a/drape_frontend/shape_view_params.hpp b/drape_frontend/shape_view_params.hpp
index df75814ca6..b1e57e97ee 100644
--- a/drape_frontend/shape_view_params.hpp
+++ b/drape_frontend/shape_view_params.hpp
@@ -56,7 +56,7 @@ struct PoiSymbolViewParams : CommonOverlayViewParams
float m_posZ = 0.0f;
bool m_hasArea = false;
bool m_prioritized = false;
- bool m_obsoleteInEditor = false;
+ std::string m_maskColor;
dp::Anchor m_anchor = dp::Center;
m2::PointF m_offset = m2::PointF(0.0f, 0.0f);
diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp
index b44994bac8..8b6076ac2b 100644
--- a/drape_frontend/user_mark_shapes.cpp
+++ b/drape_frontend/user_mark_shapes.cpp
@@ -81,13 +81,18 @@ TextLayout MakePrimaryTextLayout(dp::TitleDecl const & titleDecl,
struct UserPointVertex : public gpu::BaseVertex
{
+ using TNormalAndAnimateOrZ = glsl::vec3;
using TTexCoord = glsl::vec4;
- using TColorAndAnimate = glsl::vec4;
+ using TColor = glsl::vec4;
+ using TAnimateOrZ = float;
UserPointVertex() = default;
- UserPointVertex(TPosition const & pos, TNormal const & normal, TTexCoord const & texCoord,
- TColorAndAnimate const & colorAndAnimate)
- : m_position(pos), m_normal(normal), m_texCoord(texCoord), m_colorAndAnimate(colorAndAnimate)
+ UserPointVertex(TPosition const & pos, TNormalAndAnimateOrZ const & normalAndAnimateOrZ,
+ TTexCoord const & texCoord, TColor const & color)
+ : m_position(pos)
+ , m_normalAndAnimateOrZ(normalAndAnimateOrZ)
+ , m_texCoord(texCoord)
+ , m_color(color)
{}
static dp::BindingInfo GetBinding()
@@ -95,18 +100,18 @@ struct UserPointVertex : public gpu::BaseVertex
dp::BindingInfo info(4);
uint8_t offset = 0;
offset += dp::FillDecl<TPosition, UserPointVertex>(0, "a_position", info, offset);
- offset += dp::FillDecl<TNormal, UserPointVertex>(1, "a_normal", info, offset);
+ offset += dp::FillDecl<TNormalAndAnimateOrZ, UserPointVertex>(1, "a_normalAndAnimateOrZ", info,
+ offset);
offset += dp::FillDecl<TTexCoord, UserPointVertex>(2, "a_texCoords", info, offset);
- offset += dp::FillDecl<TColorAndAnimate, UserPointVertex>(3, "a_colorAndAnimateOrZ", info,
- offset);
+ offset += dp::FillDecl<TColor, UserPointVertex>(3, "a_color", info, offset);
return info;
}
TPosition m_position;
- TNormal m_normal;
+ TNormalAndAnimateOrZ m_normalAndAnimateOrZ;
TTexCoord m_texCoord;
- TColorAndAnimate m_colorAndAnimate;
+ TColor m_color;
};
std::string GetSymbolNameForZoomLevel(ref_ptr<UserPointMark::SymbolNameZoomInfo> symbolNames, TileKey const & tileKey)
@@ -229,29 +234,6 @@ void GeneratePoiSymbolShape(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Te
m2::PointF const & symbolOffset, dp::Batcher & batcher)
{
PoiSymbolViewParams params(renderInfo.m_featureId);
- params.m_offset = symbolOffset;
-
- if (renderInfo.m_badgeInfo != nullptr && renderInfo.m_badgeInfo->m_badgeTitleIndex)
- {
- size_t const badgeTitleIndex = *renderInfo.m_badgeInfo->m_badgeTitleIndex;
- CHECK_LESS(badgeTitleIndex, renderInfo.m_titleDecl->size(), ());
-
- dp::TitleDecl const & titleDecl = (*renderInfo.m_titleDecl)[badgeTitleIndex];
- TextLayout textLayout = MakePrimaryTextLayout(titleDecl, textures);
- float const textWidth = textLayout.GetPixelLength();
-
- dp::TextureManager::SymbolRegion region;
- textures->GetSymbolRegion(symbolName, region);
- float const pixelHalfWidth = 0.5f * region.GetPixelSize().x;
-
- float constexpr kBadgeSpecialMarginsAdjustmentMultplier = 4.0f;
- float const badgeSpecialMarginsAdjustment =
- kBadgeSpecialMarginsAdjustmentMultplier * titleDecl.m_primaryOffset.x;
-
- params.m_pixelWidth = 3.0f * pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment;
- params.m_offset.x += 0.5f * (pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment);
- }
-
params.m_tileCenter = tileCenter;
params.m_depthTestEnabled = renderInfo.m_depthTestEnabled;
params.m_depth = renderInfo.m_depth;
@@ -261,6 +243,32 @@ void GeneratePoiSymbolShape(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Te
params.m_specialPriority = renderInfo.m_priority;
params.m_symbolName = symbolName;
params.m_anchor = renderInfo.m_anchor;
+ params.m_offset = symbolOffset;
+
+ if (renderInfo.m_badgeInfo)
+ {
+ params.m_maskColor = renderInfo.m_badgeInfo->m_maskColor;
+ if (renderInfo.m_badgeInfo->m_badgeTitleIndex)
+ {
+ size_t const badgeTitleIndex = *renderInfo.m_badgeInfo->m_badgeTitleIndex;
+ CHECK_LESS(badgeTitleIndex, renderInfo.m_titleDecl->size(), ());
+
+ dp::TitleDecl const & titleDecl = (*renderInfo.m_titleDecl)[badgeTitleIndex];
+ TextLayout textLayout = MakePrimaryTextLayout(titleDecl, textures);
+ float const textWidth = textLayout.GetPixelLength();
+
+ dp::TextureManager::SymbolRegion region;
+ textures->GetSymbolRegion(symbolName, region);
+ float const pixelHalfWidth = 0.5f * region.GetPixelSize().x;
+
+ float constexpr kBadgeSpecialMarginsAdjustmentMultplier = 4.0f;
+ float const badgeSpecialMarginsAdjustment =
+ kBadgeSpecialMarginsAdjustmentMultplier * titleDecl.m_primaryOffset.x;
+
+ params.m_pixelWidth = 3.0f * pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment;
+ params.m_offset.x += 0.5f * (pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment);
+ }
+ }
bool const hasColoredOverlay = renderInfo.m_coloredSymbols != nullptr && renderInfo.m_coloredSymbols->m_needOverlay;
params.m_startOverlayRank = hasColoredOverlay ? dp::OverlayRank1 : dp::OverlayRank0;
@@ -298,9 +306,9 @@ void GenerateTextShapes(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Textur
params.m_titleDecl.m_secondaryOffset *= vs;
bool const isSdf = df::VisualParams::Instance().IsSdfPrefered();
params.m_titleDecl.m_primaryTextFont.m_isSdf =
- params.m_titleDecl.m_primaryTextFont.m_outlineColor != dp::Color::Transparent() ? true : isSdf;
+ params.m_titleDecl.m_primaryTextFont.m_outlineColor != dp::Color::Transparent() || isSdf;
params.m_titleDecl.m_secondaryTextFont.m_isSdf =
- params.m_titleDecl.m_secondaryTextFont.m_outlineColor != dp::Color::Transparent() ? true : isSdf;
+ params.m_titleDecl.m_secondaryTextFont.m_outlineColor != dp::Color::Transparent() || isSdf;
params.m_depthTestEnabled = renderInfo.m_depthTestEnabled;
params.m_depth = renderInfo.m_depth;
@@ -456,27 +464,28 @@ void CacheUserMarks(ref_ptr<dp::GraphicsContext> context, TileKey const & tileKe
if (!renderInfo.m_color.empty())
color = df::GetColorConstant(renderInfo.m_color);
- glsl::vec4 colorAndAnimate(color.GetRedF(), color.GetGreenF(), color.GetBlueF(),
- runAnim ? 1.0f : -1.0f);
- if (renderInfo.m_customDepth)
- colorAndAnimate.w = 0.0f;
-
- buffer.emplace_back(pos, left + down + offset,
- glsl::ToVec4(m2::PointD(texRect.LeftTop()),
- m2::PointD(bgTexRect.LeftTop())),
- colorAndAnimate);
- buffer.emplace_back(pos, left + up + offset,
- glsl::ToVec4(m2::PointD(texRect.LeftBottom()),
- m2::PointD(bgTexRect.LeftBottom())),
- colorAndAnimate);
- buffer.emplace_back(pos, right + down + offset,
- glsl::ToVec4(m2::PointD(texRect.RightTop()),
- m2::PointD(bgTexRect.RightTop())),
- colorAndAnimate);
- buffer.emplace_back(pos, right + up + offset,
- glsl::ToVec4(m2::PointD(texRect.RightBottom()),
- m2::PointD(bgTexRect.RightBottom())),
- colorAndAnimate);
+ glsl::vec4 maskColor(color.GetRedF(), color.GetGreenF(), color.GetBlueF(),
+ renderInfo.m_symbolOpacity);
+ float animateOrZ = 0.0f;
+ if (!renderInfo.m_customDepth)
+ animateOrZ = runAnim ? 1.0f : -1.0f;
+
+ buffer.emplace_back(
+ pos, glsl::vec3(left + down + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.LeftTop()), m2::PointD(bgTexRect.LeftTop())),
+ maskColor);
+ buffer.emplace_back(
+ pos, glsl::vec3(left + up + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.LeftBottom()), m2::PointD(bgTexRect.LeftBottom())),
+ maskColor);
+ buffer.emplace_back(
+ pos, glsl::vec3(right + down + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.RightTop()), m2::PointD(bgTexRect.RightTop())),
+ maskColor);
+ buffer.emplace_back(
+ pos, glsl::vec3(right + up + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.RightBottom()), m2::PointD(bgTexRect.RightBottom())),
+ maskColor);
gpu::Program program;
gpu::Program program3d;
diff --git a/drape_frontend/user_mark_shapes.hpp b/drape_frontend/user_mark_shapes.hpp
index 9f76244190..b90e9c0664 100644
--- a/drape_frontend/user_mark_shapes.hpp
+++ b/drape_frontend/user_mark_shapes.hpp
@@ -42,6 +42,7 @@ struct UserMarkRenderParams
bool m_isVisible = true;
FeatureID m_featureId;
bool m_isMarkAboveText = false;
+ float m_symbolOpacity = 1.0f;
};
struct LineLayer
diff --git a/drape_frontend/user_marks_provider.hpp b/drape_frontend/user_marks_provider.hpp
index b0a0170217..c5b7c16dbc 100644
--- a/drape_frontend/user_marks_provider.hpp
+++ b/drape_frontend/user_marks_provider.hpp
@@ -53,6 +53,7 @@ public:
{
SymbolNameZoomInfo m_zoomInfo;
std::optional<size_t> m_badgeTitleIndex;
+ std::string m_maskColor;
};
static float constexpr kInvalidDepth = dp::kMinDepth - 1.0;
@@ -90,6 +91,7 @@ public:
virtual bool HasCreationAnimation() const = 0;
virtual df::ColorConstant GetColorConstant() const = 0;
virtual bool IsMarkAboveText() const = 0;
+ virtual float GetSymbolOpacity() const = 0;
private:
kml::MarkId m_id;
diff --git a/map/search_mark.cpp b/map/search_mark.cpp
index 740a975dd2..7c6bdb1909 100644
--- a/map/search_mark.cpp
+++ b/map/search_mark.cpp
@@ -62,6 +62,10 @@ enum class SearchMarkType
static_assert(static_cast<uint32_t>(SearchMarkType::Count) <= std::numeric_limits<uint8_t>::max(),
"Change SearchMarkPoint::m_type type.");
+df::ColorConstant const kPoiVisitedMaskColor = "PoiVisitedMask";
+
+float const kVisitedSymbolOpacity = 0.7f;
+
SearchMarkType SMT(uint8_t type)
{
return static_cast<SearchMarkType>(type);
@@ -320,6 +324,8 @@ drape_ptr<df::UserPointMark::BageInfo> SearchMarkPoint::GetBadgeInfo() const
if (IsBookingSpecialMark() && (HasPrice() || HasPricing()))
{
auto badgeInfo = make_unique_dp<BageInfo>();
+ if (m_isVisited)
+ badgeInfo->m_maskColor = kPoiVisitedMaskColor;
badgeInfo->m_badgeTitleIndex = 1;
if (HasGoodRating())
badgeInfo->m_zoomInfo.emplace(GetGoodRatingZoomLevel(), badgeName);
@@ -368,6 +374,11 @@ bool SearchMarkPoint::IsMarkAboveText() const
return !IsBookingSpecialMark();
}
+float SearchMarkPoint::GetSymbolOpacity() const
+{
+ return m_isVisited ? kVisitedSymbolOpacity : 1.0f;
+}
+
df::ColorConstant SearchMarkPoint::GetColorConstant() const
{
if (!IsBookingSpecialMark())
@@ -418,15 +429,15 @@ drape_ptr<df::UserPointMark::TitlesInfo> SearchMarkPoint::GetTitleDecl() const
{
if (HasPrice())
{
- dp::TitleDecl badgeTitleDecl = m_badgeTitleDecl;
+ dp::TitleDecl & badgeTitleDecl = titles->emplace_back(m_badgeTitleDecl);
badgeTitleDecl.m_primaryText = m_price;
- titles->push_back(badgeTitleDecl);
+ badgeTitleDecl.m_primaryTextFont.m_color.PremultiplyAlpha(GetSymbolOpacity());
}
else if (HasPricing())
{
- dp::TitleDecl badgeTitleDecl = m_badgeTitleDecl;
+ dp::TitleDecl & badgeTitleDecl = titles->emplace_back(m_badgeTitleDecl);
badgeTitleDecl.m_primaryText.assign(static_cast<size_t>(m_pricing), '$');
- titles->push_back(badgeTitleDecl);
+ badgeTitleDecl.m_primaryTextFont.m_color.PremultiplyAlpha(GetSymbolOpacity());
}
}
}
diff --git a/map/search_mark.hpp b/map/search_mark.hpp
index a2f194ddd3..aa8be2b55a 100644
--- a/map/search_mark.hpp
+++ b/map/search_mark.hpp
@@ -34,6 +34,7 @@ public:
drape_ptr<SymbolOffsets> GetSymbolOffsets() const override;
bool GetDepthTestEnabled() const override { return false; }
bool IsMarkAboveText() const override;
+ float GetSymbolOpacity() const override;
FeatureID GetFeatureID() const override { return m_featureID; }
void SetFoundFeature(FeatureID const & feature);
diff --git a/map/user_mark.hpp b/map/user_mark.hpp
index 0f25835fbb..92f62cc400 100644
--- a/map/user_mark.hpp
+++ b/map/user_mark.hpp
@@ -92,6 +92,7 @@ public:
bool HasCreationAnimation() const override { return false; }
df::ColorConstant GetColorConstant() const override { return {}; }
bool IsMarkAboveText() const override { return false; }
+ float GetSymbolOpacity() const override { return 1.0f; }
ms::LatLon GetLatLon() const;
diff --git a/shaders/metal_program_pool.mm b/shaders/metal_program_pool.mm
index 577fa4bcdb..1385f4d41f 100644
--- a/shaders/metal_program_pool.mm
+++ b/shaders/metal_program_pool.mm
@@ -45,65 +45,65 @@ std::array<ProgramInfo, static_cast<size_t>(SystemProgram::SystemProgramsCount)>
ProgramInfo("vsCleaner", "fsClearDepth", {{0, 0}}), // ClearDepth
ProgramInfo("vsCleaner", "fsClearColorAndDepth", {{0, 0}}), // ClearColorAndDepth
}};
-
+
std::array<ProgramInfo, static_cast<size_t>(Program::ProgramsCount)> const kMetalProgramsInfo = {{
- ProgramInfo("vsColoredSymbol", "fsColoredSymbol", {{0, 2}}), // ColoredSymbol
- ProgramInfo("vsTexturing", "fsTexturing", {{0, 2}}), // Texturing
- ProgramInfo("vsMaskedTexturing", "fsMaskedTexturing", {{0, 3}}), // MaskedTexturing
- ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // Bookmark
- ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // BookmarkAnim
- ProgramInfo("vsTextOutlined", "fsText", {{0, 2}, {3, 4}}), // TextOutlined
- ProgramInfo("vsText", "fsText", {{0, 1}, {2, 3}}), // Text
- ProgramInfo("vsText", "fsTextFixed", {{0, 1}, {2, 3}}), // TextFixed
- ProgramInfo("vsTextStaticOutlinedGui", "fsTextOutlinedGui", {{0, 4}}), // TextStaticOutlinedGui
- ProgramInfo("vsTextOutlinedGui", "fsTextOutlinedGui", {{0, 2}, {3, 4}}), // TextOutlinedGui
- ProgramInfo("vsArea", "fsArea", {{0, 1}}), // Area
- ProgramInfo("vsArea", "fsArea", {{0, 1}}), // AreaOutline
- ProgramInfo("vsArea3d", "fsArea3d", {{0, 2}}), // Area3d
- ProgramInfo("vsArea3dOutline", "fsArea", {{0, 1}}), // Area3dOutline
- ProgramInfo("vsLine", "fsLine", {{0, 2}}), // Line
- ProgramInfo("vsCapJoin", "fsCapJoin", {{0, 2}}), // CapJoin
- ProgramInfo("vsTransitCircle", "fsTransitCircle", {{0, 2}}), // TransitCircle
- ProgramInfo("vsDashedLine", "fsDashedLine", {{0, 3}}), // DashedLine
- ProgramInfo("vsPathSymbol", "fsPathSymbol", {{0, 2}}), // PathSymbol
- ProgramInfo("vsHatchingArea", "fsHatchingArea", {{0, 2}}), // HatchingArea
- ProgramInfo("vsTexturingGui", "fsTexturingGui", {{0, 1}}), // TexturingGui
- ProgramInfo("vsRuler", "fsRuler", {{0, 2}}), // Ruler
- ProgramInfo("vsAccuracy", "fsAccuracy", {{0, 1}}), // Accuracy
- ProgramInfo("vsMyPosition", "fsMyPosition", {{0, 1}}), // MyPosition
- ProgramInfo("vsSelectionLine", "fsSelectionLine", {{0, 3}}), // SelectionLine
- ProgramInfo("vsTransit", "fsTransit", {{0, 2}}), // Transit
- ProgramInfo("vsTransitMarker", "fsTransitMarker", {{0, 2}}), // TransitMarker
- ProgramInfo("vsRoute", "fsRoute", {{0, 3}}), // Route
- ProgramInfo("vsRoute", "fsRouteDash", {{0, 3}}), // RouteDash
- ProgramInfo("vsRouteArrow", "fsRouteArrow", {{0, 2}}), // RouteArrow
- ProgramInfo("vsRouteMarker", "fsRouteMarker", {{0, 2}}), // RouteMarker
- ProgramInfo("vsCirclePoint", "fsCirclePoint", {{0, 0}, {1, 2}}), // CirclePoint
- ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // BookmarkAboveText
- ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // BookmarkAnimAboveText
- ProgramInfo("vsDebugRect", "fsDebugRect", {{0, 0}}), // DebugRect
- ProgramInfo("vsScreenQuad", "fsScreenQuad", {{0, 1}}), // ScreenQuad
- ProgramInfo("vsArrow3d", "fsArrow3d", {{0, 0}, {1, 1}}), // Arrow3d
- ProgramInfo("vsArrow3dShadow", "fsArrow3dShadow", {{0, 0}}), // Arrow3dShadow
- ProgramInfo("vsArrow3dShadow", "fsArrow3dOutline", {{0, 0}}), // Arrow3dOutline
- ProgramInfo("vsColoredSymbolBillboard", "fsColoredSymbol", {{0, 2}}), // ColoredSymbolBillboard
- ProgramInfo("vsTexturingBillboard", "fsTexturing", {{0, 2}}), // TexturingBillboard
+ ProgramInfo("vsColoredSymbol", "fsColoredSymbol", {{0, 2}}), // ColoredSymbol
+ ProgramInfo("vsTexturing", "fsTexturing", {{0, 2}}), // Texturing
+ ProgramInfo("vsMaskedTexturing", "fsMaskedTexturing", {{0, 3}}), // MaskedTexturing
+ ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // Bookmark
+ ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // BookmarkAnim
+ ProgramInfo("vsTextOutlined", "fsText", {{0, 2}, {3, 4}}), // TextOutlined
+ ProgramInfo("vsText", "fsText", {{0, 1}, {2, 3}}), // Text
+ ProgramInfo("vsText", "fsTextFixed", {{0, 1}, {2, 3}}), // TextFixed
+ ProgramInfo("vsTextStaticOutlinedGui", "fsTextOutlinedGui", {{0, 4}}), // TextStaticOutlinedGui
+ ProgramInfo("vsTextOutlinedGui", "fsTextOutlinedGui", {{0, 2}, {3, 4}}), // TextOutlinedGui
+ ProgramInfo("vsArea", "fsArea", {{0, 1}}), // Area
+ ProgramInfo("vsArea", "fsArea", {{0, 1}}), // AreaOutline
+ ProgramInfo("vsArea3d", "fsArea3d", {{0, 2}}), // Area3d
+ ProgramInfo("vsArea3dOutline", "fsArea", {{0, 1}}), // Area3dOutline
+ ProgramInfo("vsLine", "fsLine", {{0, 2}}), // Line
+ ProgramInfo("vsCapJoin", "fsCapJoin", {{0, 2}}), // CapJoin
+ ProgramInfo("vsTransitCircle", "fsTransitCircle", {{0, 2}}), // TransitCircle
+ ProgramInfo("vsDashedLine", "fsDashedLine", {{0, 3}}), // DashedLine
+ ProgramInfo("vsPathSymbol", "fsPathSymbol", {{0, 2}}), // PathSymbol
+ ProgramInfo("vsHatchingArea", "fsHatchingArea", {{0, 2}}), // HatchingArea
+ ProgramInfo("vsTexturingGui", "fsTexturingGui", {{0, 1}}), // TexturingGui
+ ProgramInfo("vsRuler", "fsRuler", {{0, 2}}), // Ruler
+ ProgramInfo("vsAccuracy", "fsAccuracy", {{0, 1}}), // Accuracy
+ ProgramInfo("vsMyPosition", "fsMyPosition", {{0, 1}}), // MyPosition
+ ProgramInfo("vsSelectionLine", "fsSelectionLine", {{0, 3}}), // SelectionLine
+ ProgramInfo("vsTransit", "fsTransit", {{0, 2}}), // Transit
+ ProgramInfo("vsTransitMarker", "fsTransitMarker", {{0, 2}}), // TransitMarker
+ ProgramInfo("vsRoute", "fsRoute", {{0, 3}}), // Route
+ ProgramInfo("vsRoute", "fsRouteDash", {{0, 3}}), // RouteDash
+ ProgramInfo("vsRouteArrow", "fsRouteArrow", {{0, 2}}), // RouteArrow
+ ProgramInfo("vsRouteMarker", "fsRouteMarker", {{0, 2}}), // RouteMarker
+ ProgramInfo("vsCirclePoint", "fsCirclePoint", {{0, 0}, {1, 2}}), // CirclePoint
+ ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // BookmarkAboveText
+ ProgramInfo("vsUserMark", "fsUserMark", {{0, 3}}), // BookmarkAnimAboveText
+ ProgramInfo("vsDebugRect", "fsDebugRect", {{0, 0}}), // DebugRect
+ ProgramInfo("vsScreenQuad", "fsScreenQuad", {{0, 1}}), // ScreenQuad
+ ProgramInfo("vsArrow3d", "fsArrow3d", {{0, 0}, {1, 1}}), // Arrow3d
+ ProgramInfo("vsArrow3dShadow", "fsArrow3dShadow", {{0, 0}}), // Arrow3dShadow
+ ProgramInfo("vsArrow3dShadow", "fsArrow3dOutline", {{0, 0}}), // Arrow3dOutline
+ ProgramInfo("vsColoredSymbolBillboard", "fsColoredSymbol", {{0, 2}}), // ColoredSymbolBillboard
+ ProgramInfo("vsTexturingBillboard", "fsTexturing", {{0, 2}}), // TexturingBillboard
ProgramInfo("vsMaskedTexturingBillboard", "fsMaskedTexturing", {{0, 3}}), // MaskedTexturingBillboard
- ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkBillboard
- ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkAnimBillboard
- ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkAboveTextBillboard
- ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkAnimAboveTextBillboard
- ProgramInfo("vsTextOutlinedBillboard", "fsText", {{0, 2}, {3, 4}}), // TextOutlinedBillboard
- ProgramInfo("vsTextBillboard", "fsText", {{0, 1}, {2, 3}}), // TextBillboard
- ProgramInfo("vsTextBollboard", "fsTextFixed", {{0, 1}, {2, 3}}), // TextFixedBillboard
- ProgramInfo("vsTraffic", "fsTraffic", {{0, 2}}), // Traffic
- ProgramInfo("vsTrafficLine", "fsTrafficLine", {{0, 1}}), // TrafficLine
- ProgramInfo("vsTrafficCircle", "fsTrafficCircle", {{0, 2}}), // TrafficCircle
- ProgramInfo("vsSmaaEdges", "fsSmaaEdges", {{0, 1}}), // SmaaEdges
- ProgramInfo("vsSmaaBlendingWeight", "fsSmaaBlendingWeight", {{0, 1}}), // SmaaBlendingWeight
- ProgramInfo("vsSmaaFinal", "fsSmaaFinal", {{0, 1}}), // SmaaFinal
+ ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkBillboard
+ ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkAnimBillboard
+ ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkAboveTextBillboard
+ ProgramInfo("vsUserMarkBillboard", "fsUserMark", {{0, 3}}), // BookmarkAnimAboveTextBillboard
+ ProgramInfo("vsTextOutlinedBillboard", "fsText", {{0, 2}, {3, 4}}), // TextOutlinedBillboard
+ ProgramInfo("vsTextBillboard", "fsText", {{0, 1}, {2, 3}}), // TextBillboard
+ ProgramInfo("vsTextBollboard", "fsTextFixed", {{0, 1}, {2, 3}}), // TextFixedBillboard
+ ProgramInfo("vsTraffic", "fsTraffic", {{0, 2}}), // Traffic
+ ProgramInfo("vsTrafficLine", "fsTrafficLine", {{0, 1}}), // TrafficLine
+ ProgramInfo("vsTrafficCircle", "fsTrafficCircle", {{0, 2}}), // TrafficCircle
+ ProgramInfo("vsSmaaEdges", "fsSmaaEdges", {{0, 1}}), // SmaaEdges
+ ProgramInfo("vsSmaaBlendingWeight", "fsSmaaBlendingWeight", {{0, 1}}), // SmaaBlendingWeight
+ ProgramInfo("vsSmaaFinal", "fsSmaaFinal", {{0, 1}}), // SmaaFinal
}};
-
+
MTLVertexFormat GetFormatByDataType(MTLDataType dataType)
{
switch (dataType)