Merge pull request #4742 from darina/clear-cache

Clearing and recovering traffic data.
This commit is contained in:
Vladimir Byko-Ianko 2016-11-18 16:34:29 +03:00 committed by GitHub
commit 17538605a9
19 changed files with 456 additions and 187 deletions

View file

@ -28,7 +28,7 @@ BackendRenderer::BackendRenderer(Params const & params)
: BaseRenderer(ThreadsCommutator::ResourceUploadThread, params)
, m_model(params.m_model)
, m_readManager(make_unique_dp<ReadManager>(params.m_commutator, m_model, params.m_allow3dBuildings))
, m_trafficGenerator(make_unique_dp<TrafficGenerator>())
, m_trafficGenerator(make_unique_dp<TrafficGenerator>(bind(&BackendRenderer::FlushTrafficRenderData, this, _1)))
, m_requestedTiles(params.m_requestedTiles)
, m_updateCurrentCountryFn(params.m_updateCurrentCountryFn)
{
@ -200,7 +200,7 @@ void BackendRenderer::AcceptMessage(ref_ptr<Message> message)
auto const & tileKey = msg->GetKey();
if (m_requestedTiles->CheckTileKey(tileKey) && m_readManager->CheckTileKey(tileKey))
{
ref_ptr<dp::Batcher> batcher = m_batchersPool->GetTileBatcher(tileKey);
ref_ptr<dp::Batcher> batcher = m_batchersPool->GetBatcher(tileKey);
for (drape_ptr<MapShape> const & shape : msg->GetShapes())
{
batcher->SetFeatureMinZoom(shape->GetFeatureMinZoom());
@ -352,11 +352,7 @@ void BackendRenderer::AcceptMessage(ref_ptr<Message> message)
if (segments.size() < msg->GetSegmentsColoring().size())
{
vector<TrafficRenderData> data;
m_trafficGenerator->GetTrafficGeom(m_texMng, msg->GetSegmentsColoring(), data);
m_commutator->PostMessage(ThreadsCommutator::RenderThread,
make_unique_dp<FlushTrafficDataMessage>(move(data)),
MessagePriority::Normal);
m_trafficGenerator->GetTrafficGeom(m_texMng, msg->GetSegmentsColoring());
if (m_trafficGenerator->IsColorsCacheRefreshed())
{
@ -368,7 +364,17 @@ void BackendRenderer::AcceptMessage(ref_ptr<Message> message)
}
break;
}
case Message::ClearTrafficData:
{
ref_ptr<ClearTrafficDataMessage> msg = message;
m_trafficGenerator->ClearCache(msg->GetMwmId());
m_commutator->PostMessage(ThreadsCommutator::RenderThread,
make_unique_dp<ClearTrafficDataMessage>(msg->GetMwmId()),
MessagePriority::Normal);
break;
}
case Message::DrapeApiAddLines:
{
ref_ptr<DrapeApiAddLinesMessage> msg = message;
@ -403,6 +409,7 @@ void BackendRenderer::ReleaseResources()
m_batchersPool.reset();
m_routeBuilder.reset();
m_overlays.clear();
m_trafficGenerator.reset();
m_texMng->Release();
m_contextFactory->getResourcesUploadContext()->doneCurrent();
@ -426,7 +433,7 @@ void BackendRenderer::OnContextDestroy()
m_batchersPool.reset();
m_texMng->Release();
m_overlays.clear();
m_trafficGenerator->ClearCache();
m_trafficGenerator->ClearGLDependentResources();
m_contextFactory->getResourcesUploadContext()->doneCurrent();
}
@ -449,8 +456,10 @@ void BackendRenderer::Routine::Do()
void BackendRenderer::InitGLDependentResource()
{
m_batchersPool = make_unique_dp<BatchersPool>(ReadManager::ReadCount(),
bind(&BackendRenderer::FlushGeometry, this, _1));
m_batchersPool = make_unique_dp<BatchersPool<TileKey, TileKeyStrictComparator>>(ReadManager::ReadCount(),
bind(&BackendRenderer::FlushGeometry, this, _1, _2, _3));
m_trafficGenerator->Init();
dp::TextureManager::Params params;
params.m_resPostfix = VisualParams::Instance().GetResourcePostfix();
params.m_visualScale = df::VisualParams::Instance().GetVisualScale();
@ -475,10 +484,19 @@ void BackendRenderer::RecacheMapShapes()
m_commutator->PostMessage(ThreadsCommutator::RenderThread, move(msg), MessagePriority::High);
}
void BackendRenderer::FlushGeometry(drape_ptr<Message> && message)
void BackendRenderer::FlushGeometry(TileKey const & key, dp::GLState const & state, drape_ptr<dp::RenderBucket> && buffer)
{
GLFunctions::glFlush();
m_commutator->PostMessage(ThreadsCommutator::RenderThread, move(message), MessagePriority::Normal);
m_commutator->PostMessage(ThreadsCommutator::RenderThread,
make_unique_dp<FlushRenderBucketMessage>(key, state, move(buffer)),
MessagePriority::Normal);
}
void BackendRenderer::FlushTrafficRenderData(TrafficRenderData && renderData)
{
m_commutator->PostMessage(ThreadsCommutator::RenderThread,
make_unique_dp<FlushTrafficDataMessage>(move(renderData)),
MessagePriority::Normal);
}
void BackendRenderer::CleanupOverlays(TileKey const & tileKey)

View file

@ -3,6 +3,7 @@
#include "drape_frontend/gui/layer_render.hpp"
#include "drape_frontend/base_renderer.hpp"
#include "drape_frontend/batchers_pool.hpp"
#include "drape_frontend/drape_api_builder.hpp"
#include "drape_frontend/map_data_provider.hpp"
#include "drape_frontend/overlay_batcher.hpp"
@ -24,7 +25,6 @@ namespace df
{
class Message;
class BatchersPool;
class ReadManager;
class RouteBuilder;
@ -88,12 +88,14 @@ private:
void ReleaseResources();
void InitGLDependentResource();
void FlushGeometry(drape_ptr<Message> && message);
void FlushGeometry(TileKey const & key, dp::GLState const & state, drape_ptr<dp::RenderBucket> && buffer);
void FlushTrafficRenderData(TrafficRenderData && renderData);
void CleanupOverlays(TileKey const & tileKey);
MapDataProvider m_model;
drape_ptr<BatchersPool> m_batchersPool;
drape_ptr<BatchersPool<TileKey, TileKeyStrictComparator>> m_batchersPool;
drape_ptr<ReadManager> m_readManager;
drape_ptr<RouteBuilder> m_routeBuilder;
drape_ptr<TrafficGenerator> m_trafficGenerator;

View file

@ -1,77 +0,0 @@
#include "drape_frontend/batchers_pool.hpp"
#include "drape_frontend/message_subclasses.hpp"
#include "drape/batcher.hpp"
#include "base/assert.hpp"
#include "std/bind.hpp"
namespace df
{
using dp::Batcher;
namespace
{
void FlushGeometry(BatchersPool::TSendMessageFn const & sendMessage,
TileKey const & key,
dp::GLState const & state,
drape_ptr<dp::RenderBucket> && buffer)
{
sendMessage(make_unique_dp<FlushRenderBucketMessage>(key, state, move(buffer)));
}
} // namespace
BatchersPool::BatchersPool(int initBatcherCount, TSendMessageFn const & sendMessageFn)
: m_sendMessageFn(sendMessageFn)
, m_pool(initBatcherCount, dp::BatcherFactory())
{}
BatchersPool::~BatchersPool()
{
for_each(m_batchs.begin(), m_batchs.end(), [this](pair<TileKey, TBatcherPair> const & p)
{
m_pool.Return(p.second.first);
});
m_batchs.clear();
}
void BatchersPool::ReserveBatcher(TileKey const & key)
{
TIterator it = m_batchs.find(key);
if (it != m_batchs.end())
{
it->second.second++;
return;
}
Batcher * batcher = m_pool.Get();
m_batchs.insert(make_pair(key, make_pair(batcher, 1)));
batcher->StartSession(bind(&FlushGeometry, m_sendMessageFn, key, _1, _2));
}
ref_ptr<dp::Batcher> BatchersPool::GetTileBatcher(TileKey const & key)
{
TIterator it = m_batchs.find(key);
ASSERT(it != m_batchs.end(), ());
return make_ref(it->second.first);
}
void BatchersPool::ReleaseBatcher(TileKey const & key)
{
TIterator it = m_batchs.find(key);
ASSERT(it != m_batchs.end(), ());
ASSERT_GREATER(it->second.second, 0, ());
if ((--it->second.second)== 0)
{
Batcher * batcher = it->second.first;
batcher->EndSession();
m_pool.Return(batcher);
m_batchs.erase(it);
}
}
} // namespace df

View file

@ -1,40 +1,78 @@
#pragma once
#include "drape_frontend/tile_info.hpp"
#include "drape/pointers.hpp"
#include "drape/object_pool.hpp"
#include "drape/batcher.hpp"
#include "drape/object_pool.hpp"
#include "std/map.hpp"
#include "std/stack.hpp"
#include "base/assert.hpp"
#include "std/bind.hpp"
#include "std/function.hpp"
#include "std/map.hpp"
namespace df
{
class Message;
// Not thread safe
template <typename TKey, typename TKeyComparator>
class BatchersPool
{
public:
typedef function<void (drape_ptr<Message> &&)> TSendMessageFn;
using TFlushFn = function<void (TKey const & key, dp::GLState const & state, drape_ptr<dp::RenderBucket> && buffer)>;
BatchersPool(int initBatcherCount, TSendMessageFn const & sendMessageFn);
~BatchersPool();
BatchersPool(int initBatchersCount, TFlushFn const & flushFn)
: m_flushFn(flushFn)
, m_pool(initBatchersCount, dp::BatcherFactory())
{}
void ReserveBatcher(TileKey const & key);
ref_ptr<dp::Batcher> GetTileBatcher(TileKey const & key);
void ReleaseBatcher(TileKey const & key);
~BatchersPool()
{
for (auto const & p : m_batchers)
m_pool.Return(p.second.first);
m_batchers.clear();
}
void ReserveBatcher(TKey const & key)
{
auto it = m_batchers.find(key);
if (it != m_batchers.end())
{
it->second.second++;
return;
}
dp::Batcher * batcher = m_pool.Get();
m_batchers.insert(make_pair(key, make_pair(batcher, 1)));
batcher->StartSession(bind(m_flushFn, key, _1, _2));
}
ref_ptr<dp::Batcher> GetBatcher(TKey const & key)
{
auto it = m_batchers.find(key);
ASSERT(it != m_batchers.end(), ());
return make_ref(it->second.first);
}
void ReleaseBatcher(TKey const & key)
{
auto it = m_batchers.find(key);
ASSERT(it != m_batchers.end(), ());
ASSERT_GREATER(it->second.second, 0, ());
if ((--it->second.second)== 0)
{
dp::Batcher * batcher = it->second.first;
batcher->EndSession();
m_pool.Return(batcher);
m_batchers.erase(it);
}
}
private:
typedef pair<dp::Batcher *, int> TBatcherPair;
typedef map<TileKey, TBatcherPair, TileKeyStrictComparator> TBatcherMap;
typedef TBatcherMap::iterator TIterator;
TSendMessageFn m_sendMessageFn;
using TBatcherPair = pair<dp::Batcher *, int>;
using TBatcherMap = map<TKey, TBatcherPair, TKeyComparator>;
TFlushFn m_flushFn;
ObjectPool<dp::Batcher, dp::BatcherFactory> m_pool;
TBatcherMap m_batchs;
TBatcherMap m_batchers;
};
} // namespace df

View file

@ -555,7 +555,9 @@ void DrapeEngine::UpdateTraffic(TrafficSegmentsColoring const & segmentsColoring
void DrapeEngine::ClearTrafficCache(MwmSet::MwmId const & mwmId)
{
// TODO(@rokuz): implement
m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<ClearTrafficDataMessage>(mwmId),
MessagePriority::Normal);
}
void DrapeEngine::SetFontScaleFactor(double scaleFactor)

View file

@ -43,7 +43,6 @@ SOURCES += \
arrow3d.cpp \
backend_renderer.cpp \
base_renderer.cpp \
batchers_pool.cpp \
batch_merge_helper.cpp \
circle_shape.cpp \
color_constants.cpp \

View file

@ -760,6 +760,12 @@ void FrontendRenderer::AcceptMessage(ref_ptr<Message> message)
break;
}
case Message::ClearTrafficData:
{
ref_ptr<ClearTrafficDataMessage> msg = message;
m_trafficRenderer->Clear(msg->GetMwmId());
break;
}
case Message::DrapeApiFlush:
{
ref_ptr<DrapeApiFlushMessage> msg = message;
@ -823,6 +829,8 @@ void FrontendRenderer::UpdateGLResources()
MessagePriority::Normal);
}
m_trafficRenderer->ClearGLDependentResources();
// Request new tiles.
ScreenBase screen = m_userEventStream.GetCurrentScreen();
m_lastReadedModelView = screen;
@ -1599,7 +1607,7 @@ void FrontendRenderer::OnContextDestroy()
m_myPositionController->ResetRenderShape();
m_routeRenderer->ClearGLDependentResources();
m_gpsTrackRenderer->ClearRenderData();
m_trafficRenderer->Clear();
m_trafficRenderer->ClearGLDependentResources();
m_drapeApiRenderer->Clear();
#ifdef RENDER_DEBUG_RECTS
@ -1766,6 +1774,7 @@ void FrontendRenderer::ReleaseResources()
m_routeRenderer.reset();
m_framebuffer.reset();
m_transparentLayer.reset();
m_trafficRenderer.reset();
m_gpuProgramManager.reset();
m_contextFactory->getDrawContext()->doneCurrent();

View file

@ -69,6 +69,7 @@ public:
SetTrafficTexCoords,
UpdateTraffic,
FlushTrafficData,
ClearTrafficData,
DrapeApiAddLines,
DrapeApiRemove,
DrapeApiFlush,

View file

@ -96,6 +96,7 @@ class FinishReadingMessage : public Message
{
public:
FinishReadingMessage() = default;
Type GetType() const override { return Message::FinishReading; }
};
@ -167,6 +168,7 @@ class UpdateReadManagerMessage : public Message
{
public:
UpdateReadManagerMessage(){}
Type GetType() const override { return Message::UpdateReadManager; }
};
@ -187,7 +189,6 @@ public:
Type GetType() const override { return Message::InvalidateReadManagerRect; }
TTilesCollection const & GetTilesForInvalidate() const { return m_tiles; }
bool NeedInvalidateAll() const { return m_needInvalidateAll; }
private:
@ -372,6 +373,7 @@ public:
{}
Type GetType() const override { return Message::SetKineticScrollEnabled; }
bool IsEnabled() const { return m_enabled; }
private:
@ -391,6 +393,7 @@ public:
{}
Type GetType() const override { return Message::SetAddNewPlaceMode; }
vector<m2::TriangleD> && AcceptBoundArea() { return move(m_boundArea); }
bool IsEnabled() const { return m_enable; }
bool IsKineticScrollEnabled() const { return m_enableKineticScroll; }
@ -468,6 +471,7 @@ public:
{}
Type GetType() const override { return Message::CompassInfo; }
location::CompassInfo const & GetInfo() const { return m_info; }
private:
@ -485,6 +489,7 @@ public:
{}
Type GetType() const override { return Message::GpsInfo; }
location::GpsInfo const & GetInfo() const { return m_info; }
bool IsNavigable() const { return m_isNavigable; }
location::RouteMatchingInfo const & GetRouteInfo() const { return m_routeInfo; }
@ -538,6 +543,7 @@ public:
{}
Type GetType() const override { return SelectObject; }
m2::PointD const & GetPosition() const { return m_glbPoint; }
SelectionShape::ESelectedObject GetSelectedObject() const { return m_selected; }
FeatureID const & GetFeatureID() const { return m_featureID; }
@ -718,6 +724,7 @@ public:
{}
Type GetType() const override { return Message::FlushRouteArrows; }
drape_ptr<RouteArrowsData> && AcceptRouteArrowsData() { return move(m_routeArrowsData); }
private:
@ -760,6 +767,7 @@ public:
{}
Type GetType() const override { return Message::FollowRoute; }
int GetPreferredZoomLevel() const { return m_preferredZoomLevel; }
int GetPreferredZoomLevelIn3d() const { return m_preferredZoomLevelIn3d; }
bool EnableAutoZoom() const { return m_enableAutoZoom; }
@ -805,6 +813,7 @@ public:
{}
Type GetType() const override { return Message::SetVisibleViewport; }
m2::RectD const & GetRect() const { return m_rect; }
private:
@ -828,6 +837,7 @@ public:
{}
Type GetType() const override { return Message::Allow3dMode; }
bool AllowPerspective() const { return m_allowPerspective; }
bool Allow3dBuildings() const { return m_allow3dBuildings; }
@ -844,6 +854,7 @@ public:
{}
Type GetType() const override { return Message::AllowAutoZoom; }
bool AllowAutoZoom() const { return m_allowAutoZoom; }
private:
@ -858,6 +869,7 @@ public:
{}
Type GetType() const override { return Message::Allow3dBuildings; }
bool Allow3dBuildings() const { return m_allow3dBuildings; }
private:
@ -876,7 +888,9 @@ class CacheGpsTrackPointsMessage : public Message
{
public:
CacheGpsTrackPointsMessage(size_t pointsCount) : m_pointsCount(pointsCount) {}
Type GetType() const override { return Message::CacheGpsTrackPoints; }
size_t GetPointsCount() const { return m_pointsCount; }
private:
@ -908,6 +922,7 @@ public:
{}
Type GetType() const override { return Message::UpdateGpsTrackPoints; }
vector<GpsTrackPoint> const & GetPointsToAdd() { return m_pointsToAdd; }
vector<uint32_t> const & GetPointsToRemove() { return m_pointsToRemove; }
@ -919,8 +934,10 @@ private:
class ClearGpsTrackPointsMessage : public Message
{
public:
ClearGpsTrackPointsMessage(){}
ClearGpsTrackPointsMessage() = default;
Type GetType() const override { return Message::ClearGpsTrackPoints; }
};
class SetTimeInBackgroundMessage : public Message
@ -931,6 +948,7 @@ public:
{}
Type GetType() const override { return Message::SetTimeInBackground; }
double GetTime() const { return m_time; }
private:
@ -945,6 +963,7 @@ public:
{}
Type GetType() const override { return Message::SetDisplacementMode; }
int GetMode() const { return m_mode; }
private:
@ -985,6 +1004,7 @@ public:
{}
Type GetType() const override { return Message::CacheTrafficSegments; }
TrafficSegmentsGeometry const & GetSegments() const { return m_segments; }
private:
@ -999,6 +1019,8 @@ public:
{}
Type GetType() const override { return Message::SetTrafficTexCoords; }
bool IsGLContextDependent() const override { return true; }
TrafficTexCoords && AcceptTexCoords() { return move(m_texCoords); }
private:
@ -1013,6 +1035,8 @@ public:
{}
Type GetType() const override { return Message::UpdateTraffic; }
bool IsGLContextDependent() const override { return true; }
TrafficSegmentsColoring const & GetSegmentsColoring() const { return m_segmentsColoring; }
private:
@ -1022,15 +1046,32 @@ private:
class FlushTrafficDataMessage : public Message
{
public:
explicit FlushTrafficDataMessage(vector<TrafficRenderData> && trafficData)
explicit FlushTrafficDataMessage(TrafficRenderData && trafficData)
: m_trafficData(move(trafficData))
{}
Type GetType() const override { return Message::FlushTrafficData; }
vector<TrafficRenderData> && AcceptTrafficData() { return move(m_trafficData); }
bool IsGLContextDependent() const override { return true; }
TrafficRenderData && AcceptTrafficData() { return move(m_trafficData); }
private:
vector<TrafficRenderData> m_trafficData;
TrafficRenderData m_trafficData;
};
class ClearTrafficDataMessage : public Message
{
public:
explicit ClearTrafficDataMessage(MwmSet::MwmId const & mwmId)
: m_mwmId(mwmId)
{}
Type GetType() const override { return Message::ClearTrafficData; }
MwmSet::MwmId const & GetMwmId() { return m_mwmId; }
private:
MwmSet::MwmId m_mwmId;
};
class DrapeApiAddLinesMessage : public Message

View file

@ -7,7 +7,6 @@
#include "drape_frontend/tile_utils.hpp"
#include "drape/attribute_provider.hpp"
#include "drape/batcher.hpp"
#include "drape/glsl_func.hpp"
#include "drape/shader_def.hpp"
#include "drape/texture_manager.hpp"
@ -154,6 +153,19 @@ TrafficSegmentID TrafficHandle::GetSegmentId() const
return m_segmentId;
}
void TrafficGenerator::Init()
{
int const kBatchersCount = 3;
m_batchersPool = make_unique_dp<BatchersPool<TrafficBatcherKey, TrafficBatcherKeyComparator>>(
kBatchersCount, bind(&TrafficGenerator::FlushGeometry, this, _1, _2, _3));
}
void TrafficGenerator::ClearGLDependentResources()
{
ClearCache();
m_batchersPool.reset();
}
void TrafficGenerator::AddSegment(TrafficSegmentID const & segmentId, m2::PolylineD const & polyline)
{
m_segments.insert(make_pair(segmentId, polyline));
@ -165,6 +177,18 @@ void TrafficGenerator::ClearCache()
m_segmentsCache.clear();
}
void TrafficGenerator::ClearCache(MwmSet::MwmId const & mwmId)
{
auto it = m_segmentsCache.begin();
while (it != m_segmentsCache.end())
{
if (it->m_mwmId == mwmId)
it = m_segmentsCache.erase(it);
else
++it;
}
}
TrafficSegmentsColoring TrafficGenerator::GetSegmentsToUpdate(TrafficSegmentsColoring const & trafficColoring) const
{
TrafficSegmentsColoring result;
@ -176,9 +200,17 @@ TrafficSegmentsColoring TrafficGenerator::GetSegmentsToUpdate(TrafficSegmentsCol
return result;
}
void TrafficGenerator::FlushGeometry(TrafficBatcherKey const & key, dp::GLState const & state, drape_ptr<dp::RenderBucket> && buffer)
{
TrafficRenderData renderData(state);
renderData.m_bucket = move(buffer);
renderData.m_mwmId = key.m_mwmId;
renderData.m_tileKey = key.m_tileKey;
m_flushRenderDataFn(move(renderData));
}
void TrafficGenerator::GetTrafficGeom(ref_ptr<dp::TextureManager> textures,
TrafficSegmentsColoring const & trafficColoring,
vector<TrafficRenderData> & data)
TrafficSegmentsColoring const & trafficColoring)
{
FillColorsCache(textures);
@ -188,7 +220,6 @@ void TrafficGenerator::GetTrafficGeom(ref_ptr<dp::TextureManager> textures,
state.SetMaskTexture(textures->GetTrafficArrowTexture());
int const kZoomLevel = 10;
uint32_t const kBatchSize = 5000;
using TSegIter = TSegmentCollection::iterator;
map<TileKey, list<pair<TSegIter, traffic::SpeedGroup>>> segmentsByTiles;
@ -211,18 +242,16 @@ void TrafficGenerator::GetTrafficGeom(ref_ptr<dp::TextureManager> textures,
for (auto const & s : segmentsByTiles)
{
TileKey const & tileKey = s.first;
dp::Batcher batcher(kBatchSize, kBatchSize);
dp::SessionGuard guard(batcher, [&data, &tileKey](dp::GLState const & state, drape_ptr<dp::RenderBucket> && b)
{
TrafficRenderData bucket(state);
bucket.m_bucket = move(b);
bucket.m_tileKey = tileKey;
data.emplace_back(move(bucket));
});
for (auto const & segmentPair : s.second)
{
TSegIter it = segmentPair.first;
TrafficBatcherKey bk(it->first.m_mwmId, tileKey);
m_batchersPool->ReserveBatcher(bk);
ref_ptr<dp::Batcher> batcher = m_batchersPool->GetBatcher(bk);
ASSERT(m_colorsCacheValid, ());
dp::TextureManager::ColorRegion const & colorRegion = m_colorsCache[static_cast<size_t>(segmentPair.second)];
m2::PolylineD const & polyline = it->second;
@ -241,8 +270,11 @@ void TrafficGenerator::GetTrafficGeom(ref_ptr<dp::TextureManager> textures,
dp::AttributeProvider provider(2 /* stream count */, staticGeometry.size());
provider.InitStream(0 /* stream index */, GetTrafficStaticBindingInfo(), make_ref(staticGeometry.data()));
provider.InitStream(1 /* stream index */, GetTrafficDynamicBindingInfo(), make_ref(dynamicGeometry.data()));
batcher.InsertTriangleList(state, make_ref(&provider), move(handle));
batcher->InsertTriangleList(state, make_ref(&provider), move(handle));
}
for (auto const & segmentPair : s.second)
m_batchersPool->ReleaseBatcher(TrafficBatcherKey(segmentPair.first->first.m_mwmId, tileKey));
}
GLFunctions::glFlush();

View file

@ -1,5 +1,6 @@
#pragma once
#include "drape_frontend/batchers_pool.hpp"
#include "drape_frontend/tile_key.hpp"
#include "drape/color.hpp"
@ -71,6 +72,7 @@ struct TrafficRenderData
dp::GLState m_state;
drape_ptr<dp::RenderBucket> m_bucket;
TileKey m_tileKey;
MwmSet::MwmId m_mwmId;
TrafficRenderData(dp::GLState const & state) : m_state(state) {}
};
@ -128,22 +130,51 @@ using TrafficTexCoords = unordered_map<size_t, glsl::vec2>;
class TrafficGenerator final
{
public:
TrafficGenerator() = default;
using TFlushRenderDataFn = function<void (TrafficRenderData && renderData)>;
explicit TrafficGenerator(TFlushRenderDataFn flushFn)
: m_flushRenderDataFn(flushFn)
{}
void Init();
void ClearGLDependentResources();
void AddSegment(TrafficSegmentID const & segmentId, m2::PolylineD const & polyline);
TrafficSegmentsColoring GetSegmentsToUpdate(TrafficSegmentsColoring const & trafficColoring) const;
void GetTrafficGeom(ref_ptr<dp::TextureManager> textures,
TrafficSegmentsColoring const & trafficColoring,
vector<TrafficRenderData> & data);
TrafficSegmentsColoring const & trafficColoring);
void ClearCache();
void ClearCache(MwmSet::MwmId const & mwmId);
bool IsColorsCacheRefreshed() const { return m_colorsCacheRefreshed; }
TrafficTexCoords ProcessCacheRefreshing();
private:
struct TrafficBatcherKey
{
TrafficBatcherKey() = default;
TrafficBatcherKey(MwmSet::MwmId const & mwmId, TileKey const & tileKey)
: m_mwmId(mwmId)
, m_tileKey(tileKey)
{}
MwmSet::MwmId m_mwmId;
TileKey m_tileKey;
};
struct TrafficBatcherKeyComparator
{
bool operator() (TrafficBatcherKey const & lhs, TrafficBatcherKey const & rhs) const
{
if (lhs.m_mwmId == rhs.m_mwmId)
return lhs.m_tileKey < rhs.m_tileKey;
return lhs.m_mwmId < rhs.m_mwmId;
}
};
using TSegmentCollection = map<TrafficSegmentID, m2::PolylineD>;
void GenerateSegment(dp::TextureManager::ColorRegion const & colorRegion,
@ -152,12 +183,17 @@ private:
vector<TrafficDynamicVertex> & dynamicGeometry);
void FillColorsCache(ref_ptr<dp::TextureManager> textures);
void FlushGeometry(TrafficBatcherKey const & key, dp::GLState const & state, drape_ptr<dp::RenderBucket> && buffer);
TSegmentCollection m_segments;
set<TrafficSegmentID> m_segmentsCache;
array<dp::TextureManager::ColorRegion, static_cast<size_t>(traffic::SpeedGroup::Count)> m_colorsCache;
bool m_colorsCacheValid = false;
bool m_colorsCacheRefreshed = false;
drape_ptr<BatchersPool<TrafficBatcherKey, TrafficBatcherKeyComparator>> m_batchersPool;
TFlushRenderDataFn m_flushRenderDataFn;
};
} // namespace df

View file

@ -60,24 +60,18 @@ float CalculateHalfWidth(ScreenBase const & screen, bool left)
} // namespace
void TrafficRenderer::AddRenderData(ref_ptr<dp::GpuProgramManager> mng,
vector<TrafficRenderData> && renderData)
TrafficRenderData && renderData)
{
if (renderData.empty())
return;
m_renderData.emplace_back(move(renderData));
size_t const startIndex = m_renderData.size();
m_renderData.reserve(m_renderData.size() + renderData.size());
move(renderData.begin(), renderData.end(), std::back_inserter(m_renderData));
for (size_t i = startIndex; i < m_renderData.size(); i++)
ref_ptr<dp::GpuProgram> program = mng->GetProgram(m_renderData.back().m_state.GetProgramIndex());
program->Bind();
m_renderData.back().m_bucket->GetBuffer()->Build(program);
for (size_t j = 0; j < m_renderData.back().m_bucket->GetOverlayHandlesCount(); j++)
{
ref_ptr<dp::GpuProgram> program = mng->GetProgram(m_renderData[i].m_state.GetProgramIndex());
program->Bind();
m_renderData[i].m_bucket->GetBuffer()->Build(program);
for (size_t j = 0; j < m_renderData[i].m_bucket->GetOverlayHandlesCount(); j++)
{
TrafficHandle * handle = static_cast<TrafficHandle *>(m_renderData[i].m_bucket->GetOverlayHandle(j).get());
m_handles.insert(make_pair(handle->GetSegmentId(), handle));
}
TrafficHandle * handle = static_cast<TrafficHandle *>(m_renderData.back().m_bucket->GetOverlayHandle(j).get());
m_handles.insert(make_pair(handle->GetSegmentId(), handle));
}
}
@ -129,10 +123,21 @@ void TrafficRenderer::SetTexCoords(TrafficTexCoords && texCoords)
m_texCoords = move(texCoords);
}
void TrafficRenderer::Clear()
void TrafficRenderer::ClearGLDependentResources()
{
m_renderData.clear();
m_handles.clear();
m_texCoords.clear();
}
void TrafficRenderer::Clear(MwmSet::MwmId const & mwmId)
{
auto removePredicate = [&mwmId](TrafficRenderData const & data)
{
return data.m_mwmId == mwmId;
};
m_renderData.erase(remove_if(m_renderData.begin(), m_renderData.end(), removePredicate), m_renderData.end());
}
} // namespace df

View file

@ -21,7 +21,7 @@ public:
TrafficRenderer() = default;
void AddRenderData(ref_ptr<dp::GpuProgramManager> mng,
vector<TrafficRenderData> && renderData);
TrafficRenderData && renderData);
void SetTexCoords(TrafficTexCoords && texCoords);
@ -31,7 +31,8 @@ public:
ref_ptr<dp::GpuProgramManager> mng,
dp::UniformValuesStorage const & commonUniforms);
void Clear();
void ClearGLDependentResources();
void Clear(MwmSet::MwmId const & mwmId);
private:
vector<TrafficRenderData> m_renderData;

View file

@ -1682,7 +1682,7 @@ void Framework::UpdateDrapeEngine(int width, int height)
m_drapeApi.Invalidate();
//TODO: update traffic data
m_trafficManager.OnRecover();
}
}

View file

@ -42,8 +42,19 @@ void TrafficManager::SetDrapeEngine(ref_ptr<df::DrapeEngine> engine)
m_drapeEngine = engine;
}
void TrafficManager::OnRecover()
{
m_requestTimings.clear();
m_mwmIds.clear();
UpdateViewport(m_currentModelView);
UpdateMyPosition(m_currentPosition);
}
void TrafficManager::UpdateViewport(ScreenBase const & screen)
{
m_currentModelView = screen;
if (!m_isEnabled)
return;
@ -64,6 +75,8 @@ void TrafficManager::UpdateViewport(ScreenBase const & screen)
void TrafficManager::UpdateMyPosition(MyPosition const & myPosition)
{
m_currentPosition = myPosition;
if (!m_isEnabled)
return;

View file

@ -50,6 +50,8 @@ public:
void UpdateViewport(ScreenBase const & screen);
void UpdateMyPosition(MyPosition const & myPosition);
void OnRecover();
void SetDrapeEngine(ref_ptr<df::DrapeEngine> engine);
private:
@ -70,7 +72,10 @@ private:
GetMwmsByRectFn m_getMwmsByRectFn;
ref_ptr<df::DrapeEngine> m_drapeEngine;
m2::PointD m_myPosition;
MyPosition m_currentPosition;
ScreenBase m_currentModelView;
set<MwmSet::MwmId> m_mwmIds;
map<MwmSet::MwmId, time_point<steady_clock>> m_requestTimings;

View file

@ -26,7 +26,6 @@
6709472E1BDF9A4F005014C0 /* index_storage.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947201BDF9A4F005014C0 /* index_storage.hpp */; };
6709472F1BDF9A4F005014C0 /* shader_def.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947211BDF9A4F005014C0 /* shader_def.cpp */; };
670947301BDF9A4F005014C0 /* shader_def.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947221BDF9A4F005014C0 /* shader_def.hpp */; };
670D059D1B0CC8A70013A7AC /* shader_index.txt in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5491A69213A007D5872 /* shader_index.txt */; };
6729A5631A69213A007D5872 /* attribute_buffer_mutator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6729A4FF1A69213A007D5872 /* attribute_buffer_mutator.cpp */; };
6729A5641A69213A007D5872 /* attribute_buffer_mutator.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6729A5001A69213A007D5872 /* attribute_buffer_mutator.hpp */; };
6729A5651A69213A007D5872 /* attribute_provider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5011A69213A007D5872 /* attribute_provider.cpp */; };
@ -106,19 +105,67 @@
6743D3451C3533AE0095054B /* support_manager.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6743D3431C3533AE0095054B /* support_manager.hpp */; };
675D21991BFB876E00717E4F /* projection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 675D21971BFB876E00717E4F /* projection.cpp */; };
675D219A1BFB876E00717E4F /* projection.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 675D21981BFB876E00717E4F /* projection.hpp */; };
BB06FBE91DDDFFBE00B41AF0 /* area_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC01DDDFDC300B41AF0 /* area_vertex_shader.vsh */; };
BB06FBEA1DDDFFBE00B41AF0 /* area3d_outline_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC11DDDFDC300B41AF0 /* area3d_outline_vertex_shader.vsh */; };
BB06FBEB1DDDFFBE00B41AF0 /* area3d_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC21DDDFDC300B41AF0 /* area3d_vertex_shader.vsh */; };
BB06FBEC1DDDFFBE00B41AF0 /* arrow3d_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC31DDDFDC300B41AF0 /* arrow3d_fragment_shader.fsh */; };
BB06FBED1DDDFFBE00B41AF0 /* arrow3d_shadow_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC41DDDFDC300B41AF0 /* arrow3d_shadow_fragment_shader.fsh */; };
BB06FBEE1DDDFFBE00B41AF0 /* arrow3d_shadow_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC51DDDFDC300B41AF0 /* arrow3d_shadow_vertex_shader.vsh */; };
BB06FBEF1DDDFFBE00B41AF0 /* arrow3d_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC61DDDFDC300B41AF0 /* arrow3d_vertex_shader.vsh */; };
BB06FBF01DDDFFBE00B41AF0 /* circle_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC71DDDFDC300B41AF0 /* circle_shader.fsh */; };
BB06FBF11DDDFFBE00B41AF0 /* circle_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC81DDDFDC300B41AF0 /* circle_shader.vsh */; };
BB06FBF21DDDFFBE00B41AF0 /* dashed_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBC91DDDFDC300B41AF0 /* dashed_fragment_shader.fsh */; };
BB06FBF31DDDFFBE00B41AF0 /* dashed_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCA1DDDFDC300B41AF0 /* dashed_vertex_shader.vsh */; };
BB06FBF41DDDFFBE00B41AF0 /* debug_rect_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCB1DDDFDC300B41AF0 /* debug_rect_fragment_shader.fsh */; };
BB06FBF51DDDFFBE00B41AF0 /* debug_rect_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCC1DDDFDC300B41AF0 /* debug_rect_vertex_shader.vsh */; };
BB06FBF61DDDFFBE00B41AF0 /* masked_texturing_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCD1DDDFDC300B41AF0 /* masked_texturing_billboard_vertex_shader.vsh */; };
BB06FBF71DDDFFBE00B41AF0 /* masked_texturing_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCE1DDDFDC300B41AF0 /* masked_texturing_fragment_shader.fsh */; };
BB06FBF81DDDFFBE00B41AF0 /* masked_texturing_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBCF1DDDFDC300B41AF0 /* masked_texturing_vertex_shader.vsh */; };
BB06FBF91DDDFFBE00B41AF0 /* my_position_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD01DDDFDC300B41AF0 /* my_position_shader.vsh */; };
BB06FBFA1DDDFFBE00B41AF0 /* path_symbol_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD11DDDFDC300B41AF0 /* path_symbol_vertex_shader.vsh */; };
BB06FBFB1DDDFFBE00B41AF0 /* position_accuracy3d_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD21DDDFDC300B41AF0 /* position_accuracy3d_shader.vsh */; };
BB06FBFC1DDDFFBE00B41AF0 /* route_arrow_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD31DDDFDC300B41AF0 /* route_arrow_vertex_shader.vsh */; };
BB06FBFD1DDDFFBE00B41AF0 /* route_dash_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD41DDDFDC300B41AF0 /* route_dash_fragment_shader.fsh */; };
BB06FBFE1DDDFFBE00B41AF0 /* route_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD51DDDFDC300B41AF0 /* route_fragment_shader.fsh */; };
BB06FBFF1DDDFFBE00B41AF0 /* route_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD61DDDFDC300B41AF0 /* route_vertex_shader.vsh */; };
BB06FC001DDDFFBE00B41AF0 /* ruler_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD71DDDFDC300B41AF0 /* ruler_vertex_shader.vsh */; };
BB06FC011DDDFFBE00B41AF0 /* solid_color_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD81DDDFDC300B41AF0 /* solid_color_fragment_shader.fsh */; };
BB06FC021DDDFFBE00B41AF0 /* text_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBD91DDDFDC300B41AF0 /* text_billboard_vertex_shader.vsh */; };
BB06FC031DDDFFBE00B41AF0 /* text_outlined_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDA1DDDFDC300B41AF0 /* text_outlined_billboard_vertex_shader.vsh */; };
BB06FC041DDDFFBE00B41AF0 /* text_outlined_gui_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDB1DDDFDC300B41AF0 /* text_outlined_gui_vertex_shader.vsh */; };
BB06FC051DDDFFBE00B41AF0 /* text_outlined_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDC1DDDFDC300B41AF0 /* text_outlined_vertex_shader.vsh */; };
BB06FC061DDDFFBE00B41AF0 /* texturing_billboard_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDD1DDDFDC300B41AF0 /* texturing_billboard_vertex_shader.vsh */; };
BB06FC071DDDFFBE00B41AF0 /* texturing_gui_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDE1DDDFDC300B41AF0 /* texturing_gui_vertex_shader.vsh */; };
BB06FC081DDDFFBE00B41AF0 /* texturing3d_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBDF1DDDFDC300B41AF0 /* texturing3d_fragment_shader.fsh */; };
BB06FC091DDDFFBE00B41AF0 /* trackpoint_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE01DDDFDC300B41AF0 /* trackpoint_fragment_shader.fsh */; };
BB06FC0A1DDDFFBE00B41AF0 /* trackpoint_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE11DDDFDC300B41AF0 /* trackpoint_vertex_shader.vsh */; };
BB06FC0B1DDDFFBE00B41AF0 /* traffic_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE21DDDFDC300B41AF0 /* traffic_fragment_shader.fsh */; };
BB06FC0C1DDDFFBE00B41AF0 /* traffic_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE31DDDFDC300B41AF0 /* traffic_vertex_shader.vsh */; };
BB06FC0D1DDDFFBE00B41AF0 /* transparent_layer_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE41DDDFDC300B41AF0 /* transparent_layer_fragment_shader.fsh */; };
BB06FC0E1DDDFFBE00B41AF0 /* transparent_layer_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE51DDDFDC300B41AF0 /* transparent_layer_vertex_shader.vsh */; };
BB06FC0F1DDDFFBE00B41AF0 /* user_mark_billboard.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE61DDDFDC300B41AF0 /* user_mark_billboard.vsh */; };
BB06FC101DDDFFBE00B41AF0 /* user_mark.vsh in Sources */ = {isa = PBXBuildFile; fileRef = BB06FBE71DDDFDC300B41AF0 /* user_mark.vsh */; };
BB06FC111DDDFFBE00B41AF0 /* line_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5471A69213A007D5872 /* line_fragment_shader.fsh */; };
BB06FC121DDDFFBE00B41AF0 /* line_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5481A69213A007D5872 /* line_vertex_shader.vsh */; };
BB06FC131DDDFFBE00B41AF0 /* shader_index.txt in Sources */ = {isa = PBXBuildFile; fileRef = 6729A5491A69213A007D5872 /* shader_index.txt */; };
BB06FC141DDDFFBE00B41AF0 /* text_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54A1A69213A007D5872 /* text_fragment_shader.fsh */; };
BB06FC151DDDFFBE00B41AF0 /* text_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54B1A69213A007D5872 /* text_vertex_shader.vsh */; };
BB06FC161DDDFFBE00B41AF0 /* texturing_fragment_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54C1A69213A007D5872 /* texturing_fragment_shader.fsh */; };
BB06FC171DDDFFBE00B41AF0 /* texturing_vertex_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 6729A54D1A69213A007D5872 /* texturing_vertex_shader.vsh */; };
/* End PBXBuildFile section */
/* Begin PBXBuildRule section */
670D055F1B0C9E4D0013A7AC /* PBXBuildRule */ = {
isa = PBXBuildRule;
compilerSpec = com.apple.compilers.proxy.script;
filePatterns = "*/shader_index.txt";
filePatterns = "*.vsh *.fsh */shader_index.txt";
fileType = pattern.proxy;
isEditable = 1;
name = "Shader compiler";
outputFiles = (
"$(INPUT_FILE_DIR)/../shader_def.cpp",
);
script = "python ${SRCROOT}/../../tools/autobuild/shader_preprocessor.py ${INPUT_FILE_DIR} ${INPUT_FILE_NAME} ${INPUT_FILE_DIR}/../shader_def";
script = "python ${SRCROOT}/../../tools/autobuild/shader_preprocessor.py ${INPUT_FILE_DIR} shader_index.txt ${INPUT_FILE_DIR}/../shader_def";
};
/* End PBXBuildRule section */
@ -202,13 +249,6 @@
6729A5371A69213A007D5872 /* render_bucket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = render_bucket.hpp; sourceTree = "<group>"; };
6729A53C1A69213A007D5872 /* shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = "<group>"; };
6729A53D1A69213A007D5872 /* shader.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = shader.hpp; sourceTree = "<group>"; };
6729A5401A69213A007D5872 /* line_fragment_shader_fsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = line_fragment_shader_fsh.txt; sourceTree = "<group>"; };
6729A5411A69213A007D5872 /* line_vertex_shader_vsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = line_vertex_shader_vsh.txt; sourceTree = "<group>"; };
6729A5421A69213A007D5872 /* normalize_vertex_shader_vsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = normalize_vertex_shader_vsh.txt; sourceTree = "<group>"; };
6729A5431A69213A007D5872 /* simple_vertex_shader_vsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = simple_vertex_shader_vsh.txt; sourceTree = "<group>"; };
6729A5441A69213A007D5872 /* solid_color_fragment_shader_fsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = solid_color_fragment_shader_fsh.txt; sourceTree = "<group>"; };
6729A5451A69213A007D5872 /* texturing_fragment_shader_fsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = texturing_fragment_shader_fsh.txt; sourceTree = "<group>"; };
6729A5461A69213A007D5872 /* texturing_vertex_shader_vsh.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = texturing_vertex_shader_vsh.txt; sourceTree = "<group>"; };
6729A5471A69213A007D5872 /* line_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = line_fragment_shader.fsh; sourceTree = "<group>"; };
6729A5481A69213A007D5872 /* line_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = line_vertex_shader.vsh; sourceTree = "<group>"; };
6729A5491A69213A007D5872 /* shader_index.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shader_index.txt; sourceTree = "<group>"; };
@ -238,6 +278,46 @@
6743D3431C3533AE0095054B /* support_manager.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = support_manager.hpp; sourceTree = "<group>"; };
675D21971BFB876E00717E4F /* projection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = projection.cpp; sourceTree = "<group>"; };
675D21981BFB876E00717E4F /* projection.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = projection.hpp; sourceTree = "<group>"; };
BB06FBC01DDDFDC300B41AF0 /* area_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = area_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBC11DDDFDC300B41AF0 /* area3d_outline_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = area3d_outline_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBC21DDDFDC300B41AF0 /* area3d_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = area3d_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBC31DDDFDC300B41AF0 /* arrow3d_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBC41DDDFDC300B41AF0 /* arrow3d_shadow_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_shadow_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBC51DDDFDC300B41AF0 /* arrow3d_shadow_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_shadow_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBC61DDDFDC300B41AF0 /* arrow3d_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = arrow3d_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBC71DDDFDC300B41AF0 /* circle_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = circle_shader.fsh; sourceTree = "<group>"; };
BB06FBC81DDDFDC300B41AF0 /* circle_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = circle_shader.vsh; sourceTree = "<group>"; };
BB06FBC91DDDFDC300B41AF0 /* dashed_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = dashed_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBCA1DDDFDC300B41AF0 /* dashed_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = dashed_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBCB1DDDFDC300B41AF0 /* debug_rect_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = debug_rect_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBCC1DDDFDC300B41AF0 /* debug_rect_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = debug_rect_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBCD1DDDFDC300B41AF0 /* masked_texturing_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = masked_texturing_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBCE1DDDFDC300B41AF0 /* masked_texturing_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = masked_texturing_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBCF1DDDFDC300B41AF0 /* masked_texturing_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = masked_texturing_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBD01DDDFDC300B41AF0 /* my_position_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = my_position_shader.vsh; sourceTree = "<group>"; };
BB06FBD11DDDFDC300B41AF0 /* path_symbol_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = path_symbol_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBD21DDDFDC300B41AF0 /* position_accuracy3d_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = position_accuracy3d_shader.vsh; sourceTree = "<group>"; };
BB06FBD31DDDFDC300B41AF0 /* route_arrow_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_arrow_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBD41DDDFDC300B41AF0 /* route_dash_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_dash_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBD51DDDFDC300B41AF0 /* route_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBD61DDDFDC300B41AF0 /* route_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = route_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBD71DDDFDC300B41AF0 /* ruler_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ruler_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBD81DDDFDC300B41AF0 /* solid_color_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = solid_color_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBD91DDDFDC300B41AF0 /* text_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBDA1DDDFDC300B41AF0 /* text_outlined_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_outlined_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBDB1DDDFDC300B41AF0 /* text_outlined_gui_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_outlined_gui_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBDC1DDDFDC300B41AF0 /* text_outlined_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = text_outlined_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBDD1DDDFDC300B41AF0 /* texturing_billboard_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing_billboard_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBDE1DDDFDC300B41AF0 /* texturing_gui_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing_gui_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBDF1DDDFDC300B41AF0 /* texturing3d_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = texturing3d_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBE01DDDFDC300B41AF0 /* trackpoint_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = trackpoint_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBE11DDDFDC300B41AF0 /* trackpoint_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = trackpoint_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBE21DDDFDC300B41AF0 /* traffic_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = traffic_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBE31DDDFDC300B41AF0 /* traffic_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = traffic_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBE41DDDFDC300B41AF0 /* transparent_layer_fragment_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = transparent_layer_fragment_shader.fsh; sourceTree = "<group>"; };
BB06FBE51DDDFDC300B41AF0 /* transparent_layer_vertex_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = transparent_layer_vertex_shader.vsh; sourceTree = "<group>"; };
BB06FBE61DDDFDC300B41AF0 /* user_mark_billboard.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = user_mark_billboard.vsh; sourceTree = "<group>"; };
BB06FBE71DDDFDC300B41AF0 /* user_mark.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = user_mark.vsh; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -376,7 +456,46 @@
6729A53E1A69213A007D5872 /* shaders */ = {
isa = PBXGroup;
children = (
6729A53F1A69213A007D5872 /* doc */,
BB06FBC01DDDFDC300B41AF0 /* area_vertex_shader.vsh */,
BB06FBC11DDDFDC300B41AF0 /* area3d_outline_vertex_shader.vsh */,
BB06FBC21DDDFDC300B41AF0 /* area3d_vertex_shader.vsh */,
BB06FBC31DDDFDC300B41AF0 /* arrow3d_fragment_shader.fsh */,
BB06FBC41DDDFDC300B41AF0 /* arrow3d_shadow_fragment_shader.fsh */,
BB06FBC51DDDFDC300B41AF0 /* arrow3d_shadow_vertex_shader.vsh */,
BB06FBC61DDDFDC300B41AF0 /* arrow3d_vertex_shader.vsh */,
BB06FBC71DDDFDC300B41AF0 /* circle_shader.fsh */,
BB06FBC81DDDFDC300B41AF0 /* circle_shader.vsh */,
BB06FBC91DDDFDC300B41AF0 /* dashed_fragment_shader.fsh */,
BB06FBCA1DDDFDC300B41AF0 /* dashed_vertex_shader.vsh */,
BB06FBCB1DDDFDC300B41AF0 /* debug_rect_fragment_shader.fsh */,
BB06FBCC1DDDFDC300B41AF0 /* debug_rect_vertex_shader.vsh */,
BB06FBCD1DDDFDC300B41AF0 /* masked_texturing_billboard_vertex_shader.vsh */,
BB06FBCE1DDDFDC300B41AF0 /* masked_texturing_fragment_shader.fsh */,
BB06FBCF1DDDFDC300B41AF0 /* masked_texturing_vertex_shader.vsh */,
BB06FBD01DDDFDC300B41AF0 /* my_position_shader.vsh */,
BB06FBD11DDDFDC300B41AF0 /* path_symbol_vertex_shader.vsh */,
BB06FBD21DDDFDC300B41AF0 /* position_accuracy3d_shader.vsh */,
BB06FBD31DDDFDC300B41AF0 /* route_arrow_vertex_shader.vsh */,
BB06FBD41DDDFDC300B41AF0 /* route_dash_fragment_shader.fsh */,
BB06FBD51DDDFDC300B41AF0 /* route_fragment_shader.fsh */,
BB06FBD61DDDFDC300B41AF0 /* route_vertex_shader.vsh */,
BB06FBD71DDDFDC300B41AF0 /* ruler_vertex_shader.vsh */,
BB06FBD81DDDFDC300B41AF0 /* solid_color_fragment_shader.fsh */,
BB06FBD91DDDFDC300B41AF0 /* text_billboard_vertex_shader.vsh */,
BB06FBDA1DDDFDC300B41AF0 /* text_outlined_billboard_vertex_shader.vsh */,
BB06FBDB1DDDFDC300B41AF0 /* text_outlined_gui_vertex_shader.vsh */,
BB06FBDC1DDDFDC300B41AF0 /* text_outlined_vertex_shader.vsh */,
BB06FBDD1DDDFDC300B41AF0 /* texturing_billboard_vertex_shader.vsh */,
BB06FBDE1DDDFDC300B41AF0 /* texturing_gui_vertex_shader.vsh */,
BB06FBDF1DDDFDC300B41AF0 /* texturing3d_fragment_shader.fsh */,
BB06FBE01DDDFDC300B41AF0 /* trackpoint_fragment_shader.fsh */,
BB06FBE11DDDFDC300B41AF0 /* trackpoint_vertex_shader.vsh */,
BB06FBE21DDDFDC300B41AF0 /* traffic_fragment_shader.fsh */,
BB06FBE31DDDFDC300B41AF0 /* traffic_vertex_shader.vsh */,
BB06FBE41DDDFDC300B41AF0 /* transparent_layer_fragment_shader.fsh */,
BB06FBE51DDDFDC300B41AF0 /* transparent_layer_vertex_shader.vsh */,
BB06FBE61DDDFDC300B41AF0 /* user_mark_billboard.vsh */,
BB06FBE71DDDFDC300B41AF0 /* user_mark.vsh */,
6729A5471A69213A007D5872 /* line_fragment_shader.fsh */,
6729A5481A69213A007D5872 /* line_vertex_shader.vsh */,
6729A5491A69213A007D5872 /* shader_index.txt */,
@ -388,20 +507,6 @@
path = shaders;
sourceTree = "<group>";
};
6729A53F1A69213A007D5872 /* doc */ = {
isa = PBXGroup;
children = (
6729A5401A69213A007D5872 /* line_fragment_shader_fsh.txt */,
6729A5411A69213A007D5872 /* line_vertex_shader_vsh.txt */,
6729A5421A69213A007D5872 /* normalize_vertex_shader_vsh.txt */,
6729A5431A69213A007D5872 /* simple_vertex_shader_vsh.txt */,
6729A5441A69213A007D5872 /* solid_color_fragment_shader_fsh.txt */,
6729A5451A69213A007D5872 /* texturing_fragment_shader_fsh.txt */,
6729A5461A69213A007D5872 /* texturing_vertex_shader_vsh.txt */,
);
path = doc;
sourceTree = "<group>";
};
6729A55C1A69213A007D5872 /* utils */ = {
isa = PBXGroup;
children = (
@ -534,7 +639,53 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
670D059D1B0CC8A70013A7AC /* shader_index.txt in Sources */,
BB06FBE91DDDFFBE00B41AF0 /* area_vertex_shader.vsh in Sources */,
BB06FBEA1DDDFFBE00B41AF0 /* area3d_outline_vertex_shader.vsh in Sources */,
BB06FBEB1DDDFFBE00B41AF0 /* area3d_vertex_shader.vsh in Sources */,
BB06FBEC1DDDFFBE00B41AF0 /* arrow3d_fragment_shader.fsh in Sources */,
BB06FBED1DDDFFBE00B41AF0 /* arrow3d_shadow_fragment_shader.fsh in Sources */,
BB06FBEE1DDDFFBE00B41AF0 /* arrow3d_shadow_vertex_shader.vsh in Sources */,
BB06FBEF1DDDFFBE00B41AF0 /* arrow3d_vertex_shader.vsh in Sources */,
BB06FBF01DDDFFBE00B41AF0 /* circle_shader.fsh in Sources */,
BB06FBF11DDDFFBE00B41AF0 /* circle_shader.vsh in Sources */,
BB06FBF21DDDFFBE00B41AF0 /* dashed_fragment_shader.fsh in Sources */,
BB06FBF31DDDFFBE00B41AF0 /* dashed_vertex_shader.vsh in Sources */,
BB06FBF41DDDFFBE00B41AF0 /* debug_rect_fragment_shader.fsh in Sources */,
BB06FBF51DDDFFBE00B41AF0 /* debug_rect_vertex_shader.vsh in Sources */,
BB06FBF61DDDFFBE00B41AF0 /* masked_texturing_billboard_vertex_shader.vsh in Sources */,
BB06FBF71DDDFFBE00B41AF0 /* masked_texturing_fragment_shader.fsh in Sources */,
BB06FBF81DDDFFBE00B41AF0 /* masked_texturing_vertex_shader.vsh in Sources */,
BB06FBF91DDDFFBE00B41AF0 /* my_position_shader.vsh in Sources */,
BB06FBFA1DDDFFBE00B41AF0 /* path_symbol_vertex_shader.vsh in Sources */,
BB06FBFB1DDDFFBE00B41AF0 /* position_accuracy3d_shader.vsh in Sources */,
BB06FBFC1DDDFFBE00B41AF0 /* route_arrow_vertex_shader.vsh in Sources */,
BB06FBFD1DDDFFBE00B41AF0 /* route_dash_fragment_shader.fsh in Sources */,
BB06FBFE1DDDFFBE00B41AF0 /* route_fragment_shader.fsh in Sources */,
BB06FBFF1DDDFFBE00B41AF0 /* route_vertex_shader.vsh in Sources */,
BB06FC001DDDFFBE00B41AF0 /* ruler_vertex_shader.vsh in Sources */,
BB06FC011DDDFFBE00B41AF0 /* solid_color_fragment_shader.fsh in Sources */,
BB06FC021DDDFFBE00B41AF0 /* text_billboard_vertex_shader.vsh in Sources */,
BB06FC031DDDFFBE00B41AF0 /* text_outlined_billboard_vertex_shader.vsh in Sources */,
BB06FC041DDDFFBE00B41AF0 /* text_outlined_gui_vertex_shader.vsh in Sources */,
BB06FC051DDDFFBE00B41AF0 /* text_outlined_vertex_shader.vsh in Sources */,
BB06FC061DDDFFBE00B41AF0 /* texturing_billboard_vertex_shader.vsh in Sources */,
BB06FC071DDDFFBE00B41AF0 /* texturing_gui_vertex_shader.vsh in Sources */,
BB06FC081DDDFFBE00B41AF0 /* texturing3d_fragment_shader.fsh in Sources */,
BB06FC091DDDFFBE00B41AF0 /* trackpoint_fragment_shader.fsh in Sources */,
BB06FC0A1DDDFFBE00B41AF0 /* trackpoint_vertex_shader.vsh in Sources */,
BB06FC0B1DDDFFBE00B41AF0 /* traffic_fragment_shader.fsh in Sources */,
BB06FC0C1DDDFFBE00B41AF0 /* traffic_vertex_shader.vsh in Sources */,
BB06FC0D1DDDFFBE00B41AF0 /* transparent_layer_fragment_shader.fsh in Sources */,
BB06FC0E1DDDFFBE00B41AF0 /* transparent_layer_vertex_shader.vsh in Sources */,
BB06FC0F1DDDFFBE00B41AF0 /* user_mark_billboard.vsh in Sources */,
BB06FC101DDDFFBE00B41AF0 /* user_mark.vsh in Sources */,
BB06FC111DDDFFBE00B41AF0 /* line_fragment_shader.fsh in Sources */,
BB06FC121DDDFFBE00B41AF0 /* line_vertex_shader.vsh in Sources */,
BB06FC131DDDFFBE00B41AF0 /* shader_index.txt in Sources */,
BB06FC141DDDFFBE00B41AF0 /* text_fragment_shader.fsh in Sources */,
BB06FC151DDDFFBE00B41AF0 /* text_vertex_shader.vsh in Sources */,
BB06FC161DDDFFBE00B41AF0 /* texturing_fragment_shader.fsh in Sources */,
BB06FC171DDDFFBE00B41AF0 /* texturing_vertex_shader.vsh in Sources */,
6729A5711A69213A007D5872 /* cpu_buffer.cpp in Sources */,
6729A5631A69213A007D5872 /* attribute_buffer_mutator.cpp in Sources */,
6729A56B1A69213A007D5872 /* binding_info.cpp in Sources */,

View file

@ -125,7 +125,6 @@
670947FA1BDF9BF5005014C0 /* backend_renderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947EC1BDF9BF5005014C0 /* backend_renderer.cpp */; };
670947FB1BDF9BF5005014C0 /* backend_renderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947ED1BDF9BF5005014C0 /* backend_renderer.hpp */; };
670947FD1BDF9BF5005014C0 /* base_renderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947EF1BDF9BF5005014C0 /* base_renderer.hpp */; };
670947FE1BDF9BF5005014C0 /* batchers_pool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947F01BDF9BF5005014C0 /* batchers_pool.cpp */; };
670947FF1BDF9BF5005014C0 /* batchers_pool.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947F11BDF9BF5005014C0 /* batchers_pool.hpp */; };
670948011BDF9BF5005014C0 /* circle_shape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 670947F31BDF9BF5005014C0 /* circle_shape.hpp */; };
670948021BDF9BF5005014C0 /* drape_engine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 670947F41BDF9BF5005014C0 /* drape_engine.cpp */; };
@ -343,7 +342,6 @@
670947ED1BDF9BF5005014C0 /* backend_renderer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = backend_renderer.hpp; sourceTree = "<group>"; };
670947EE1BDF9BF5005014C0 /* base_renderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = base_renderer.cpp; sourceTree = "<group>"; };
670947EF1BDF9BF5005014C0 /* base_renderer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = base_renderer.hpp; sourceTree = "<group>"; };
670947F01BDF9BF5005014C0 /* batchers_pool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = batchers_pool.cpp; sourceTree = "<group>"; };
670947F11BDF9BF5005014C0 /* batchers_pool.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = batchers_pool.hpp; sourceTree = "<group>"; };
670947F21BDF9BF5005014C0 /* circle_shape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = circle_shape.cpp; sourceTree = "<group>"; };
670947F31BDF9BF5005014C0 /* circle_shape.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = circle_shape.hpp; sourceTree = "<group>"; };
@ -509,7 +507,6 @@
670947ED1BDF9BF5005014C0 /* backend_renderer.hpp */,
670947EE1BDF9BF5005014C0 /* base_renderer.cpp */,
670947EF1BDF9BF5005014C0 /* base_renderer.hpp */,
670947F01BDF9BF5005014C0 /* batchers_pool.cpp */,
670947F11BDF9BF5005014C0 /* batchers_pool.hpp */,
670947F21BDF9BF5005014C0 /* circle_shape.cpp */,
670947F31BDF9BF5005014C0 /* circle_shape.hpp */,
@ -948,7 +945,6 @@
347F52111DC2334A0064B273 /* drape_api.cpp in Sources */,
347F520F1DC2334A0064B273 /* drape_api_renderer.cpp in Sources */,
347F520D1DC2334A0064B273 /* drape_api_builder.cpp in Sources */,
670947FE1BDF9BF5005014C0 /* batchers_pool.cpp in Sources */,
670947DC1BDF9BE1005014C0 /* viewport.cpp in Sources */,
670947CA1BDF9BE1005014C0 /* threads_commutator.cpp in Sources */,
670947981BDF9BE1005014C0 /* map_data_provider.cpp in Sources */,

View file

@ -201,9 +201,6 @@
<FileRef
location = "container:jansson/jansson.xcodeproj">
</FileRef>
<FileRef
location = "container:tomcrypt/tomcrypt.xcodeproj">
</FileRef>
<FileRef
location = "container:freetype/freetype.xcodeproj">
</FileRef>