Feature/globebrowsing (#281)

* Solve bug related to corrupted texture tiles for certain sizes.

* Regard layer settings when sampling height map.

* Make Tile in to a class instead of a struct.

* Memory aware lru cache. Needs cleanup.

* Clean up and comment.

* Clean up and comment.

* Clean up

* Clean up and comment.

* Fix compilation error on Windows.

* Specify data type explicitly in GDAL xml config files for Utah height maps. Closes #242

* Update the key type for the memory aware lru cache and use a unordered map instead of a map.

* Solve pixel row size bug.

* Solve initialization bug.

* Add cache size as property of the globe browsing module.

* Use memory aware tile cache for text tile provider.

* Log GDAL errors as GHOUL messages

* Add the ability to toggle tile level limiting by available data

* Add ability to toggle GDAL logging

* Add lock guard to memory aware tile cache

* create base class rawtiledatareader that can be extended with different implementations than GDAL.

* Let GdalWrapper take care of global GDAL settings.

* Move iodescription to separate file

* Move some functionality from gdalrawtiledatareader to rawtiledatareader

* Move functionality from gdalrawtiledatareader to rawtiledatareader.

* GDAL is no longer a necessary dependency for the globebrowsing module. However to read tiles, the SimpleRawTileDataReader needs to be implemented. Otherwise GDAL is needed.

* Add ifdef check for GLOBEBROWSING_USE_GDAL

* Implement SimpleRawTileDataReader. Currently can only read pow 2 textures.

* Change ints to unsigned long longs

* Limit number of texture creations per tile provider per frame

* Solve linker error on windows

* Fix Windows build errors

* Fix crash in reading local patches

* Update lodglobe descriptions

* Abstract away overviews in gdal raw tile data reader

* Update Mars and Moon configs.

* Update screenshot script

* Update ghoul version

* Remove use of interaction depth below ellipsoid

* Normalize direction vector

* Use scale for distance swotch

* Go back to use of interaction depth below ellipsoid

* Fix comments on pull request.

* TileProviderByLevel error does not propagate up.

* Comment on mars and moon mod file

* Add model space cut off level as a property

* Update ChunkTile struct

* Minor clean up

* Go back tu constructor for ChunkTile
This commit is contained in:
Kalle Bladin
2017-04-13 10:14:47 +02:00
committed by GitHub
parent 53e2aedd81
commit 8a617ee254
88 changed files with 3895 additions and 1490 deletions
@@ -30,6 +30,7 @@
#include <modules/globebrowsing/rendering/layershadermanager.h>
#include <modules/globebrowsing/rendering/gpu/gpulayermanager.h>
#include <modules/globebrowsing/rendering/layer/layergroup.h>
#include <modules/globebrowsing/tile/rawtiledatareader/rawtiledatareader.h>
namespace {
const char* keyFrame = "Frame";
@@ -64,7 +65,8 @@ ChunkRenderer::ChunkRenderer(std::shared_ptr<Grid> grid,
void ChunkRenderer::renderChunk(const Chunk& chunk, const RenderData& data) {
// A little arbitrary with 10 but it works
if (chunk.owner().debugProperties().onlyModelSpaceRendering || chunk.tileIndex().level < 10) {
if (chunk.tileIndex().level <
chunk.owner().debugProperties().modelSpaceRenderingCutoffLevel) {
renderChunkGlobally(chunk, data);
}
else {
@@ -98,18 +100,25 @@ ghoul::opengl::ProgramObject* ChunkRenderer::getActivatedProgramWithTileData(
const auto& debugProps = chunk.owner().debugProperties();
auto& pairs = layeredTexturePreprocessingData.keyValuePairs;
pairs.push_back(std::make_pair("useAtmosphere",
std::to_string(generalProps.atmosphereEnabled)));
pairs.push_back(std::make_pair("performShading",
std::to_string(generalProps.performShading)));
pairs.push_back(std::make_pair("showChunkEdges",
std::to_string(debugProps.showChunkEdges)));
pairs.push_back(std::make_pair("showHeightResolution",
std::to_string(debugProps.showHeightResolution)));
pairs.push_back(std::make_pair("showHeightIntensities",
std::to_string(debugProps.showHeightIntensities)));
pairs.push_back(std::make_pair("defaultHeight",
std::to_string(Chunk::DEFAULT_HEIGHT)));
pairs.emplace_back("useAtmosphere", std::to_string(generalProps.atmosphereEnabled));
pairs.emplace_back("performShading", std::to_string(generalProps.performShading));
pairs.emplace_back("showChunkEdges", std::to_string(debugProps.showChunkEdges));
pairs.emplace_back("showHeightResolution",
std::to_string(debugProps.showHeightResolution));
pairs.emplace_back("showHeightIntensities",
std::to_string(debugProps.showHeightIntensities));
pairs.emplace_back("defaultHeight", std::to_string(Chunk::DEFAULT_HEIGHT));
pairs.emplace_back("tilePaddingStart",
"ivec2(" +
std::to_string(RawTileDataReader::padding.start.x) + "," +
std::to_string(RawTileDataReader::padding.start.y) + ")"
);
pairs.emplace_back("tilePaddingSizeDiff",
"ivec2(" +
std::to_string(RawTileDataReader::padding.numPixels.x) + "," +
std::to_string(RawTileDataReader::padding.numPixels.y) + ")"
);
// Now the shader program can be accessed
ghoul::opengl::ProgramObject* programObject =