diff --git a/modules/globebrowsing/cache/memoryawaretilecache.cpp b/modules/globebrowsing/cache/memoryawaretilecache.cpp index b146f31f36..3dd31eef5d 100644 --- a/modules/globebrowsing/cache/memoryawaretilecache.cpp +++ b/modules/globebrowsing/cache/memoryawaretilecache.cpp @@ -143,7 +143,7 @@ void MemoryAwareTileCache::clear() { void MemoryAwareTileCache::createDefaultTextureContainers() { for (int id = 0; id < layergroupid::NUM_LAYER_GROUPS; id++) { TileTextureInitData initData = - LayerManager::getTileTextureInitData(layergroupid::GroupID(id)); + LayerManager::getTileTextureInitData(layergroupid::GroupID(id), true); assureTextureContainerExists(initData); } } diff --git a/modules/globebrowsing/rendering/layer/layer.cpp b/modules/globebrowsing/rendering/layer/layer.cpp index 727eb42542..40ad9f472a 100644 --- a/modules/globebrowsing/rendering/layer/layer.cpp +++ b/modules/globebrowsing/rendering/layer/layer.cpp @@ -40,6 +40,7 @@ namespace { const char* keySettings = "Settings"; const char* keyAdjustment = "Adjustment"; const char* KeyBlendMode = "BlendMode"; + const char* KeyPadTiles = "PadTiles"; static const openspace::properties::Property::PropertyInfo TypeInfo = { "Type", @@ -104,7 +105,11 @@ Layer::Layer(layergroupid::GroupID id, const ghoul::Dictionary& layerDict) layerDict.getValue(keyEnabled, enabled); _enabled.setValue(enabled); - TileTextureInitData initData = LayerManager::getTileTextureInitData(_layerGroupId); + bool padTiles = true; + layerDict.getValue(KeyPadTiles, padTiles); + + TileTextureInitData initData = LayerManager::getTileTextureInitData(_layerGroupId, + padTiles); _padTilePixelStartOffset = initData.tilePixelStartOffset(); _padTilePixelSizeDifference = initData.tilePixelSizeDifference(); diff --git a/modules/globebrowsing/rendering/layer/layermanager.cpp b/modules/globebrowsing/rendering/layer/layermanager.cpp index cf397c9f68..7efa897c47 100644 --- a/modules/globebrowsing/rendering/layer/layermanager.cpp +++ b/modules/globebrowsing/rendering/layer/layermanager.cpp @@ -117,6 +117,7 @@ void LayerManager::reset(bool includeDisabled) { } TileTextureInitData LayerManager::getTileTextureInitData(layergroupid::GroupID id, + bool padTiles, size_t preferredTileSize) { switch (id) { @@ -124,34 +125,34 @@ TileTextureInitData LayerManager::getTileTextureInitData(layergroupid::GroupID i size_t tileSize = preferredTileSize ? preferredTileSize : 64; return TileTextureInitData(tileSize, tileSize, GL_FLOAT, ghoul::opengl::Texture::Format::Red, - true, + padTiles, TileTextureInitData::ShouldAllocateDataOnCPU::Yes); } case layergroupid::GroupID::ColorLayers: { size_t tileSize = preferredTileSize ? preferredTileSize : 512; return TileTextureInitData(tileSize, tileSize, GL_UNSIGNED_BYTE, - ghoul::opengl::Texture::Format::BGRA, false); + ghoul::opengl::Texture::Format::BGRA, padTiles); } case layergroupid::GroupID::Overlays: { size_t tileSize = preferredTileSize ? preferredTileSize : 512; return TileTextureInitData(tileSize, tileSize, GL_UNSIGNED_BYTE, - ghoul::opengl::Texture::Format::BGRA, false); + ghoul::opengl::Texture::Format::BGRA, padTiles); } case layergroupid::GroupID::NightLayers: { size_t tileSize = preferredTileSize ? preferredTileSize : 512; return TileTextureInitData(tileSize, tileSize, GL_UNSIGNED_BYTE, - ghoul::opengl::Texture::Format::BGRA, false); + ghoul::opengl::Texture::Format::BGRA, padTiles); } case layergroupid::GroupID::WaterMasks: { size_t tileSize = preferredTileSize ? preferredTileSize : 512; return TileTextureInitData(tileSize, tileSize, GL_UNSIGNED_BYTE, - ghoul::opengl::Texture::Format::BGRA, false); + ghoul::opengl::Texture::Format::BGRA, padTiles); } default: { ghoul_assert(false, "Unknown layer group ID"); size_t tileSize = preferredTileSize ? preferredTileSize : 512; return TileTextureInitData(tileSize, tileSize, GL_UNSIGNED_BYTE, - ghoul::opengl::Texture::Format::BGRA, false); + ghoul::opengl::Texture::Format::BGRA, padTiles); } } } diff --git a/modules/globebrowsing/rendering/layer/layermanager.h b/modules/globebrowsing/rendering/layer/layermanager.h index 6fda583ded..b5f88f0eed 100644 --- a/modules/globebrowsing/rendering/layer/layermanager.h +++ b/modules/globebrowsing/rendering/layer/layermanager.h @@ -59,7 +59,7 @@ public: void reset(bool includingDisabled = false); static TileTextureInitData getTileTextureInitData(layergroupid::GroupID id, - size_t preferredTileSize = 0); + bool padTiles, size_t preferredTileSize = 0); static bool shouldPerformPreProcessingOnLayergroup(layergroupid::GroupID id); void onChange(std::function callback); diff --git a/modules/globebrowsing/tile/tileprovider/defaulttileprovider.cpp b/modules/globebrowsing/tile/tileprovider/defaulttileprovider.cpp index c7b47b612b..1bfd89d684 100644 --- a/modules/globebrowsing/tile/tileprovider/defaulttileprovider.cpp +++ b/modules/globebrowsing/tile/tileprovider/defaulttileprovider.cpp @@ -49,6 +49,7 @@ namespace { const char* KeyFilePath = "FilePath"; const char* KeyBasePath = "BasePath"; const char* KeyPreCacheLevel = "PreCacheLevel"; + const char* KeyPadTiles = "PadTiles"; static const openspace::properties::Property::PropertyInfo FilePathInfo = { "FilePath", @@ -98,8 +99,12 @@ DefaultTileProvider::DefaultTileProvider(const ghoul::Dictionary& dictionary) LDEBUG("Default pixel size overridden: " << pixelSize); tilePixelSize = static_cast(pixelSize); } + + _padTiles = true; + dictionary.getValue(KeyPadTiles, _padTiles); + TileTextureInitData initData(LayerManager::getTileTextureInitData( - _layerGroupID, tilePixelSize)); + _layerGroupID, _padTiles, tilePixelSize)); _tilePixelSize.setValue(initData.dimensionsWithoutPadding().x); _performPreProcessing = @@ -136,7 +141,7 @@ void DefaultTileProvider::update() { if (_asyncTextureDataProvider->shouldBeDeleted()) { _asyncTextureDataProvider = nullptr; TileTextureInitData initData(LayerManager::getTileTextureInitData( - _layerGroupID, _tilePixelSize)); + _layerGroupID, _padTiles, _tilePixelSize)); initAsyncTileDataReader(initData); } } @@ -149,7 +154,7 @@ void DefaultTileProvider::reset() { } else { TileTextureInitData initData(LayerManager::getTileTextureInitData( - _layerGroupID, _tilePixelSize)); + _layerGroupID, _padTiles, _tilePixelSize)); initAsyncTileDataReader(initData); } } diff --git a/modules/globebrowsing/tile/tileprovider/defaulttileprovider.h b/modules/globebrowsing/tile/tileprovider/defaulttileprovider.h index e9f68f21b9..5039373c4f 100644 --- a/modules/globebrowsing/tile/tileprovider/defaulttileprovider.h +++ b/modules/globebrowsing/tile/tileprovider/defaulttileprovider.h @@ -86,6 +86,7 @@ private: std::string _basePath; int _preCacheLevel; bool _performPreProcessing; + bool _padTiles; }; } // namespace openspace::globebrowsing::tileprovider diff --git a/modules/globebrowsing/tile/tileprovider/sizereferencetileprovider.cpp b/modules/globebrowsing/tile/tileprovider/sizereferencetileprovider.cpp index 4f02613a7c..286dc969c9 100644 --- a/modules/globebrowsing/tile/tileprovider/sizereferencetileprovider.cpp +++ b/modules/globebrowsing/tile/tileprovider/sizereferencetileprovider.cpp @@ -43,7 +43,8 @@ namespace { namespace openspace::globebrowsing::tileprovider { SizeReferenceTileProvider::SizeReferenceTileProvider(const ghoul::Dictionary& dictionary) - : TextTileProvider(LayerManager::getTileTextureInitData(layergroupid::GroupID::ColorLayers)) + : TextTileProvider( + LayerManager::getTileTextureInitData(layergroupid::GroupID::ColorLayers, false)) , _backgroundTile(Tile::TileUnavailable) { _fontSize = 50; diff --git a/modules/globebrowsing/tile/tileprovider/tileindextileprovider.cpp b/modules/globebrowsing/tile/tileprovider/tileindextileprovider.cpp index 4baf0608a0..4c945c359f 100644 --- a/modules/globebrowsing/tile/tileprovider/tileindextileprovider.cpp +++ b/modules/globebrowsing/tile/tileprovider/tileindextileprovider.cpp @@ -32,7 +32,8 @@ namespace openspace::globebrowsing::tileprovider { TileIndexTileProvider::TileIndexTileProvider(const ghoul::Dictionary&) : TextTileProvider(LayerManager::getTileTextureInitData( - layergroupid::GroupID::ColorLayers + layergroupid::GroupID::ColorLayers, + false )) {} diff --git a/modules/globebrowsing/tile/tileprovider/tileproviderbylevel.cpp b/modules/globebrowsing/tile/tileprovider/tileproviderbylevel.cpp index 2b12f4dca9..8a83737b22 100644 --- a/modules/globebrowsing/tile/tileprovider/tileproviderbylevel.cpp +++ b/modules/globebrowsing/tile/tileprovider/tileproviderbylevel.cpp @@ -29,8 +29,6 @@ #include namespace { - const char* _loggerCat = "TileProviderByLevel"; - const char* KeyProviders = "LevelTileProviders"; const char* KeyMaxLevel = "MaxLevel"; const char* KeyTileProvider = "TileProvider"; diff --git a/modules/globebrowsing/tile/tiletextureinitdata.cpp b/modules/globebrowsing/tile/tiletextureinitdata.cpp index b2608eac21..69d2cc9cec 100644 --- a/modules/globebrowsing/tile/tiletextureinitdata.cpp +++ b/modules/globebrowsing/tile/tiletextureinitdata.cpp @@ -28,13 +28,14 @@ namespace openspace::globebrowsing { -const glm::ivec2 TileTextureInitData::TilePixelStartOffset = glm::ivec2(-2); -const glm::ivec2 TileTextureInitData::TilePixelSizeDifference = glm::ivec2(4); +const glm::ivec2 TileTextureInitData::TilePixelStartOffset = glm::ivec2(-1); +const glm::ivec2 TileTextureInitData::TilePixelSizeDifference = glm::ivec2(2); TileTextureInitData::TileTextureInitData(size_t width, size_t height, GLenum glType, Format textureFormat, bool padTiles, ShouldAllocateDataOnCPU shouldAllocateDataOnCPU) : _glType(glType) , _ghoulTextureFormat(textureFormat) + , _padTiles(padTiles) , _shouldAllocateDataOnCPU(shouldAllocateDataOnCPU) { _tilePixelStartOffset = padTiles ? TilePixelStartOffset : glm::ivec2(0); @@ -59,6 +60,7 @@ TileTextureInitData::TileTextureInitData(const TileTextureInitData& original) original.dimensionsWithoutPadding().y, original.glType(), original.ghoulTextureFormat(), + original._padTiles, original.shouldAllocateDataOnCPU() ? ShouldAllocateDataOnCPU::Yes : ShouldAllocateDataOnCPU::No) { }; diff --git a/modules/globebrowsing/tile/tiletextureinitdata.h b/modules/globebrowsing/tile/tiletextureinitdata.h index ff939770c4..decf3a57b2 100644 --- a/modules/globebrowsing/tile/tiletextureinitdata.h +++ b/modules/globebrowsing/tile/tiletextureinitdata.h @@ -87,6 +87,7 @@ private: size_t _bytesPerLine; size_t _totalNumBytes; bool _shouldAllocateDataOnCPU; + bool _padTiles; }; } // namespace openspace::globebrowsing