diff --git a/modules/globebrowsing/CMakeLists.txt b/modules/globebrowsing/CMakeLists.txt index 036e5abccf..7a21f0f5e0 100644 --- a/modules/globebrowsing/CMakeLists.txt +++ b/modules/globebrowsing/CMakeLists.txt @@ -63,7 +63,7 @@ set(HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tile/tiledepthtransform.h ${CMAKE_CURRENT_SOURCE_DIR}/tile/tileioresult.h ${CMAKE_CURRENT_SOURCE_DIR}/tile/asynctilereader.h - ${CMAKE_CURRENT_SOURCE_DIR}/tile/tileprovidermanager.h + ${CMAKE_CURRENT_SOURCE_DIR}/tile/layermanager.h ${CMAKE_CURRENT_SOURCE_DIR}/tile/pixelregion.h ${CMAKE_CURRENT_SOURCE_DIR}/layered_rendering/layeredtextureshaderprovider.h @@ -118,7 +118,7 @@ set(SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tile/tiledatatype.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tile/tileioresult.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tile/asynctilereader.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/tile/tileprovidermanager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tile/layermanager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tile/pixelregion.cpp ${CMAKE_CURRENT_SOURCE_DIR}/layer/layer.cpp diff --git a/modules/globebrowsing/chunk/chunk.cpp b/modules/globebrowsing/chunk/chunk.cpp index 8bd1b004aa..8d05d94321 100644 --- a/modules/globebrowsing/chunk/chunk.cpp +++ b/modules/globebrowsing/chunk/chunk.cpp @@ -101,14 +101,14 @@ namespace globebrowsing { // In the future, this should be abstracted away and more easily queryable. // One must also handle how to sample pick one out of multiplte heightmaps - auto tileProviderManager = owner().chunkedLodGlobe()->getTileProviderManager(); + auto layerManager = owner().chunkedLodGlobe()->layerManager(); - auto heightMapProviders = tileProviderManager->layerGroup(LayeredTextures::HeightMaps).activeLayers(); + auto heightMapProviders = layerManager->layerGroup(LayeredTextures::HeightMaps).activeLayers(); size_t HEIGHT_CHANNEL = 0; - const LayerGroup& heightmaps = tileProviderManager->layerGroup(LayeredTextures::HeightMaps); + const LayerGroup& heightmaps = layerManager->layerGroup(LayeredTextures::HeightMaps); std::vector tiles = TileSelector::getTilesSortedByHighestResolution(heightmaps, _tileIndex); bool lastHadMissingData = true; for (auto tile : tiles) { diff --git a/modules/globebrowsing/chunk/chunklevelevaluator.cpp b/modules/globebrowsing/chunk/chunklevelevaluator.cpp index fe13d6e23c..62a9c53552 100644 --- a/modules/globebrowsing/chunk/chunklevelevaluator.cpp +++ b/modules/globebrowsing/chunk/chunklevelevaluator.cpp @@ -162,7 +162,7 @@ namespace globebrowsing { } int EvaluateChunkLevelByAvailableTileData::getDesiredLevel(const Chunk& chunk, const RenderData& data) const { - auto tileProvidermanager = chunk.owner().chunkedLodGlobe()->getTileProviderManager(); + auto tileProvidermanager = chunk.owner().chunkedLodGlobe()->layerManager(); auto heightLayers = tileProvidermanager->layerGroup(LayeredTextures::HeightMaps).activeLayers(); int currLevel = chunk.tileIndex().level; diff --git a/modules/globebrowsing/chunk/chunkrenderer.cpp b/modules/globebrowsing/chunk/chunkrenderer.cpp index 958fe28bd1..a277bd9333 100644 --- a/modules/globebrowsing/chunk/chunkrenderer.cpp +++ b/modules/globebrowsing/chunk/chunkrenderer.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include // open space includes #include @@ -60,8 +60,8 @@ namespace globebrowsing { ChunkRenderer::ChunkRenderer( std::shared_ptr grid, - std::shared_ptr tileProviderManager) - : _tileProviderManager(tileProviderManager) + std::shared_ptr layerManager) + : _layerManager(layerManager) , _grid(grid) { _globalRenderingShaderProvider = std::make_shared( @@ -186,7 +186,7 @@ namespace globebrowsing { category++) { LayeredTextureInfo layeredTextureInfo; - auto layerGroup = _tileProviderManager->layerGroup(category); + auto layerGroup = _layerManager->layerGroup(category); layeredTextureInfo.lastLayerIdx = layerGroup.activeLayers().size() - 1; layeredTextureInfo.layerBlendingEnabled = layerGroup.levelBlendingEnabled; @@ -241,16 +241,15 @@ namespace globebrowsing { }; std::array, LayeredTextures::NUM_TEXTURE_CATEGORIES> texUnits; for (size_t category = 0; category < LayeredTextures::NUM_TEXTURE_CATEGORIES; category++) { - auto layerGroup = _tileProviderManager->layerGroup(category); - texUnits[category].resize(layerGroup.activeLayers().size()); + size_t activeLayers = _layerManager->layerGroup(category).activeLayers().size(); + texUnits[category].resize(activeLayers); } // Go through all the categories for (size_t category = 0; category < LayeredTextures::NUM_TEXTURE_CATEGORIES; category++) { // Go through all the providers in this category - const auto& layers = _tileProviderManager->layerGroup(category).activeLayers(); int i = 0; - for (const Layer& layer : layers) { + for (const Layer& layer : _layerManager->layerGroup(category).activeLayers()) { TileProvider* tileProvider = layer.tileProvider.get(); // Get the texture that should be used for rendering ChunkTile chunkTile = TileSelector::getHighestResolutionTile(tileProvider, tileIndex); @@ -316,7 +315,7 @@ namespace globebrowsing { // Go through all the height maps and set depth tranforms int i = 0; - const auto& heightLayers = _tileProviderManager->layerGroup(LayeredTextures::HeightMaps).activeLayers(); + const auto& heightLayers = _layerManager->layerGroup(LayeredTextures::HeightMaps).activeLayers(); for (const Layer& heightLayer : heightLayers) { TileDepthTransform depthTransform = heightLayer.tileProvider->depthTransform(); @@ -356,7 +355,7 @@ namespace globebrowsing { for (int i = 0; i < LayeredTextures::NUM_TEXTURE_CATEGORIES; ++i) { - const LayerGroup& layerGroup = _tileProviderManager->layerGroup(i); + const LayerGroup& layerGroup = _layerManager->layerGroup(i); if(layerGroup.levelBlendingEnabled && layerGroup.activeLayers().size() > 0){ performAnyBlending = true; break; @@ -389,9 +388,9 @@ namespace globebrowsing { programObject->setUniform("lonLatScalingFactor", vec2(patchSize.toLonLatVec2())); programObject->setUniform("radiiSquared", vec3(ellipsoid.radiiSquared())); - if (_tileProviderManager->layerGroup( + if (_layerManager->layerGroup( LayeredTextures::NightTextures).activeLayers().size() > 0 || - _tileProviderManager->layerGroup( + _layerManager->layerGroup( LayeredTextures::WaterMasks).activeLayers().size() > 0 || chunk.owner().generalProperties().atmosphereEnabled || chunk.owner().generalProperties().performShading) { @@ -436,7 +435,7 @@ namespace globebrowsing { bool performAnyBlending = false; for (int i = 0; i < LayeredTextures::NUM_TEXTURE_CATEGORIES; ++i) { LayeredTextures::TextureCategory category = (LayeredTextures::TextureCategory)i; - if (_tileProviderManager->layerGroup(i).levelBlendingEnabled && _tileProviderManager->layerGroup(category).activeLayers().size() > 0) { + if (_layerManager->layerGroup(i).levelBlendingEnabled && _layerManager->layerGroup(category).activeLayers().size() > 0) { performAnyBlending = true; break; } @@ -470,9 +469,9 @@ namespace globebrowsing { programObject->setUniform("patchNormalCameraSpace", patchNormalCameraSpace); programObject->setUniform("projectionTransform", data.camera.projectionMatrix()); - if (_tileProviderManager->layerGroup( + if (_layerManager->layerGroup( LayeredTextures::NightTextures).activeLayers().size() > 0 || - _tileProviderManager->layerGroup( + _layerManager->layerGroup( LayeredTextures::WaterMasks).activeLayers().size() > 0 || chunk.owner().generalProperties().atmosphereEnabled || chunk.owner().generalProperties().performShading) { diff --git a/modules/globebrowsing/chunk/chunkrenderer.h b/modules/globebrowsing/chunk/chunkrenderer.h index 52f79847fb..ff7daa8118 100644 --- a/modules/globebrowsing/chunk/chunkrenderer.h +++ b/modules/globebrowsing/chunk/chunkrenderer.h @@ -56,7 +56,7 @@ namespace globebrowsing { class ChunkRenderer { public: ChunkRenderer(std::shared_ptr grid, - std::shared_ptr tileProviderManager); + std::shared_ptr layerManager); /** Chooses to render a chunk either locally or globally depending on the chunklevel @@ -117,7 +117,7 @@ namespace globebrowsing { // shared pointer to a grid which can be the same for all rendered chunks. std::shared_ptr _grid; - std::shared_ptr _tileProviderManager; + std::shared_ptr _layerManager; // Two different shader programs. One for global and one for local rendering. std::shared_ptr _globalRenderingShaderProvider; diff --git a/modules/globebrowsing/globes/chunkedlodglobe.cpp b/modules/globebrowsing/globes/chunkedlodglobe.cpp index ebb2ded236..e241f6040a 100644 --- a/modules/globebrowsing/globes/chunkedlodglobe.cpp +++ b/modules/globebrowsing/globes/chunkedlodglobe.cpp @@ -65,7 +65,7 @@ namespace globebrowsing { ChunkedLodGlobe::ChunkedLodGlobe( const RenderableGlobe& owner, size_t segmentsPerPatch, - std::shared_ptr tileProviderManager) + std::shared_ptr layerManager) : _owner(owner) , _leftRoot(std::make_unique( Chunk(owner, LEFT_HEMISPHERE_INDEX))) @@ -73,7 +73,7 @@ namespace globebrowsing { Chunk(owner, RIGHT_HEMISPHERE_INDEX))) , minSplitDepth(2) , maxSplitDepth(22) - , _tileProviderManager(tileProviderManager) + , _layerManager(layerManager) , stats(StatsCollector(absPath("test_stats"), 1, StatsCollector::Enabled::No)) { auto geometry = std::make_shared( @@ -95,7 +95,7 @@ namespace globebrowsing { std::make_unique(); _renderer = - std::make_unique(geometry, tileProviderManager); + std::make_unique(geometry, layerManager); } ChunkedLodGlobe::~ChunkedLodGlobe() { @@ -115,9 +115,9 @@ namespace globebrowsing { return ready; } - std::shared_ptr - ChunkedLodGlobe::getTileProviderManager() const { - return _tileProviderManager; + std::shared_ptr + ChunkedLodGlobe::layerManager() const { + return _layerManager; } bool ChunkedLodGlobe::testIfCullable( diff --git a/modules/globebrowsing/globes/chunkedlodglobe.h b/modules/globebrowsing/globes/chunkedlodglobe.h index 7a92cd36cb..6f288081ca 100644 --- a/modules/globebrowsing/globes/chunkedlodglobe.h +++ b/modules/globebrowsing/globes/chunkedlodglobe.h @@ -52,7 +52,7 @@ namespace globebrowsing { ChunkedLodGlobe( const RenderableGlobe& owner, size_t segmentsPerPatch, - std::shared_ptr tileProviderManager); + std::shared_ptr layerManager); virtual ~ChunkedLodGlobe(); bool initialize() override; @@ -71,7 +71,7 @@ namespace globebrowsing { const int minSplitDepth; const int maxSplitDepth; - std::shared_ptr getTileProviderManager() const; + std::shared_ptr layerManager() const; StatsCollector stats; @@ -97,7 +97,7 @@ namespace globebrowsing { std::unique_ptr _chunkEvaluatorByProjectedArea; std::unique_ptr _chunkEvaluatorByDistance; - std::shared_ptr _tileProviderManager; + std::shared_ptr _layerManager; const RenderableGlobe& _owner; }; diff --git a/modules/globebrowsing/globes/renderableglobe.cpp b/modules/globebrowsing/globes/renderableglobe.cpp index e5e7714fb0..d71f818b23 100644 --- a/modules/globebrowsing/globes/renderableglobe.cpp +++ b/modules/globebrowsing/globes/renderableglobe.cpp @@ -27,7 +27,7 @@ #include #include -#include +#include // open space includes #include @@ -71,13 +71,13 @@ namespace globebrowsing { LayeredCategoryPropertyOwner::LayeredCategoryPropertyOwner( LayeredTextures::TextureCategory category, - TileProviderManager& tileProviderManager) - : _tileProviderManager(tileProviderManager) + LayerManager& layerManager) + : _layerManager(layerManager) , _levelBlendingEnabled("blendTileLevels", "blend tile levels", true){ setName(LayeredTextures::TEXTURE_CATEGORY_NAMES[category]); // Create the property owners - auto& layerGroup = _tileProviderManager.layerGroup(category); + auto& layerGroup = _layerManager.layerGroup(category); for (Layer& layer : layerGroup.layers) { _texturePropertyOwners.push_back( std::make_unique(layer.name)); @@ -165,11 +165,11 @@ namespace globebrowsing { dictionary.getValue(keyTextureInitData, textureInitDataDictionary); dictionary.getValue(keyTextures, texturesDictionary); - _tileProviderManager = std::make_shared( + _layerManager = std::make_shared( texturesDictionary, textureInitDataDictionary); _chunkedLodGlobe = std::make_shared( - *this, patchSegments, _tileProviderManager); + *this, patchSegments, _layerManager); _pointGlobe = std::make_shared(*this); _distanceSwitch.addSwitchValue(_chunkedLodGlobe, 1e9); @@ -199,7 +199,7 @@ namespace globebrowsing { for (int i = 0; i < LayeredTextures::NUM_TEXTURE_CATEGORIES; i++) { _textureProperties.push_back(std::make_unique - (LayeredTextures::TextureCategory(i), *_tileProviderManager)); + (LayeredTextures::TextureCategory(i), *_layerManager)); _texturePropertyOwner.addPropertySubOwner(*_textureProperties[i]); } @@ -263,10 +263,10 @@ namespace globebrowsing { _cachedInverseModelTransform = glm::inverse(_cachedModelTransform); if (_debugProperties.resetTileProviders) { - _tileProviderManager->reset(); + _layerManager->reset(); _debugProperties.resetTileProviders = false; } - _tileProviderManager->update(); + _layerManager->update(); _chunkedLodGlobe->update(data); } @@ -276,7 +276,7 @@ namespace globebrowsing { float RenderableGlobe::getHeight(glm::dvec3 position) { // Get the tile provider for the height map - const auto& heightLayers = _tileProviderManager->layerGroup( + const auto& heightLayers = _layerManager->layerGroup( LayeredTextures::HeightMaps).activeLayers(); if (heightLayers.size() == 0) return 0; diff --git a/modules/globebrowsing/globes/renderableglobe.h b/modules/globebrowsing/globes/renderableglobe.h index bd1b673ff0..be7c08109b 100644 --- a/modules/globebrowsing/globes/renderableglobe.h +++ b/modules/globebrowsing/globes/renderableglobe.h @@ -48,7 +48,7 @@ namespace openspace { namespace globebrowsing { class ChunkedLodGlobe; -class TileProviderManager; +class LayerManager; /** Property owner that owns all property of a single texture layer. @@ -75,10 +75,10 @@ class LayeredCategoryPropertyOwner : public properties::PropertyOwner public: LayeredCategoryPropertyOwner( LayeredTextures::TextureCategory category, - TileProviderManager& tileProviderManager); + LayerManager& layerManager); ~LayeredCategoryPropertyOwner(); private: - TileProviderManager& _tileProviderManager; + LayerManager& _layerManager; std::vector > _texturePropertyOwners; properties::BoolProperty _levelBlendingEnabled; @@ -151,7 +151,7 @@ private: std::shared_ptr _pointGlobe; Ellipsoid _ellipsoid; - std::shared_ptr _tileProviderManager; + std::shared_ptr _layerManager; DistanceSwitch _distanceSwitch; std::shared_ptr _savedCamera; diff --git a/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.cpp b/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.cpp index 1a96ba75c4..74013aa815 100644 --- a/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.cpp +++ b/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.cpp @@ -23,7 +23,7 @@ ****************************************************************************************/ #include -#include +#include #include #include @@ -39,7 +39,7 @@ namespace { namespace openspace { namespace globebrowsing { - LayeredTexturePreprocessingData::LayeredTexturePreprocessingData(TileProviderManager* tpm){ + LayeredTexturePreprocessingData::LayeredTexturePreprocessingData(LayerManager* tpm){ } @@ -58,19 +58,14 @@ namespace globebrowsing { keyValuePairs.size() != other.keyValuePairs.size()) { return false; } - else - { + else { bool equal = true; for (size_t i = 0; i < layeredTextureInfo.size(); i++) { - equal = equal && (layeredTextureInfo[i] == other.layeredTextureInfo[i]); + equal &= (layeredTextureInfo[i] == other.layeredTextureInfo[i]); + } + for (size_t i = 0; i < keyValuePairs.size(); i++) { + equal &= (keyValuePairs[i] == other.keyValuePairs[i]); } - // Commented this for-loop. Not necessary since the keyValuePairs - // are always supposed to be equal. Comparing strings takes time. - - //for (size_t i = 0; i < keyValuePairs.size(); i++) { - // equal = equal && (keyValuePairs[i] == other.keyValuePairs[i]); - //} - return equal; } } diff --git a/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.h b/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.h index b309449d90..bdde453f72 100644 --- a/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.h +++ b/modules/globebrowsing/layered_rendering/layeredtextureshaderprovider.h @@ -38,7 +38,7 @@ namespace globebrowsing { using namespace ghoul::opengl; - class TileProviderManager; + class LayerManager; class LayeredTextureShaderUniformIdHandler; @@ -64,7 +64,7 @@ namespace globebrowsing { * levels. */ struct LayeredTexturePreprocessingData { - LayeredTexturePreprocessingData(TileProviderManager* tpm = nullptr); + LayeredTexturePreprocessingData(LayerManager* tpm = nullptr); std::array layeredTextureInfo; diff --git a/modules/globebrowsing/tile/tileprovidermanager.cpp b/modules/globebrowsing/tile/layermanager.cpp similarity index 93% rename from modules/globebrowsing/tile/tileprovidermanager.cpp rename to modules/globebrowsing/tile/layermanager.cpp index 9c5e00ad8e..cb7d19356e 100644 --- a/modules/globebrowsing/tile/tileprovidermanager.cpp +++ b/modules/globebrowsing/tile/layermanager.cpp @@ -24,14 +24,14 @@ #include -#include +#include #include #include "cpl_minixml.h" namespace { - const std::string _loggerCat = "TileProviderManager"; + const std::string _loggerCat = "LayerManager"; } namespace openspace { @@ -58,7 +58,7 @@ namespace globebrowsing { ////////////////////////////////////////////////////////////////////////////////////// // Tile Provider Manager // ////////////////////////////////////////////////////////////////////////////////////// - TileProviderManager::TileProviderManager( + LayerManager::LayerManager( const ghoul::Dictionary& textureCategoriesDictionary, const ghoul::Dictionary& textureInitDictionary){ // Create all the categories of tile providers @@ -105,11 +105,11 @@ namespace globebrowsing { } } - TileProviderManager::~TileProviderManager() + LayerManager::~LayerManager() { } - void TileProviderManager::initTexures(std::vector& dest, + void LayerManager::initTexures(std::vector& dest, const ghoul::Dictionary& texturesDict, const TileProviderInitData& initData) { // Create TileProviders for all textures within this category @@ -148,21 +148,21 @@ namespace globebrowsing { } } - LayerGroup& TileProviderManager::layerGroup(size_t groupId) { + LayerGroup& LayerManager::layerGroup(size_t groupId) { return layerGroups[groupId]; } - LayerGroup& TileProviderManager::layerGroup(LayeredTextures::TextureCategory category) { + LayerGroup& LayerManager::layerGroup(LayeredTextures::TextureCategory category) { return layerGroups[category]; } - void TileProviderManager::update() { + void LayerManager::update() { for (LayerGroup& layerGroup : layerGroups) { layerGroup.update(); } } - void TileProviderManager::reset(bool includingInactive) { + void LayerManager::reset(bool includingInactive) { for (LayerGroup& layerGroup : layerGroups) { for (Layer& layer : layerGroup.layers) { if (layer.isActive) { diff --git a/modules/globebrowsing/tile/tileprovidermanager.h b/modules/globebrowsing/tile/layermanager.h similarity index 97% rename from modules/globebrowsing/tile/tileprovidermanager.h rename to modules/globebrowsing/tile/layermanager.h index 3b8efd2ab8..166cb13de5 100644 --- a/modules/globebrowsing/tile/tileprovidermanager.h +++ b/modules/globebrowsing/tile/layermanager.h @@ -59,13 +59,13 @@ namespace globebrowsing { std::vector _activeLayers; }; - class TileProviderManager { + class LayerManager { public: - TileProviderManager( + LayerManager( const ghoul::Dictionary& textureCategoriesDictionary, const ghoul::Dictionary& textureInitDictionary); - ~TileProviderManager(); + ~LayerManager(); LayerGroup& layerGroup(size_t groupId); LayerGroup& layerGroup(LayeredTextures::TextureCategory); diff --git a/modules/globebrowsing/tile/tileselector.h b/modules/globebrowsing/tile/tileselector.h index 87671b003e..4a3a09c8b4 100644 --- a/modules/globebrowsing/tile/tileselector.h +++ b/modules/globebrowsing/tile/tileselector.h @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include