forked from organicmaps/organicmaps
Merge pull request #4742 from darina/clear-cache
Clearing and recovering traffic data.
This commit is contained in:
commit
17538605a9
19 changed files with 456 additions and 187 deletions
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -69,6 +69,7 @@ public:
|
|||
SetTrafficTexCoords,
|
||||
UpdateTraffic,
|
||||
FlushTrafficData,
|
||||
ClearTrafficData,
|
||||
DrapeApiAddLines,
|
||||
DrapeApiRemove,
|
||||
DrapeApiFlush,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1682,7 +1682,7 @@ void Framework::UpdateDrapeEngine(int width, int height)
|
|||
|
||||
m_drapeApi.Invalidate();
|
||||
|
||||
//TODO: update traffic data
|
||||
m_trafficManager.OnRecover();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 */,
|
||||
|
|
|
@ -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 */,
|
||||
|
|
3
xcode/omim.xcworkspace/contents.xcworkspacedata
generated
3
xcode/omim.xcworkspace/contents.xcworkspacedata
generated
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue