diff --git a/.gitignore b/.gitignore index 43d8cc6..a5fb6df 100644 --- a/.gitignore +++ b/.gitignore @@ -54,4 +54,5 @@ Thumbs.db /dist/ # Libraries and dependencies -/lib/ \ No newline at end of file +/lib/ +/hgt/ \ No newline at end of file diff --git a/include/scene.h b/include/scene.h index fe83250..3b69356 100644 --- a/include/scene.h +++ b/include/scene.h @@ -45,8 +45,7 @@ class Scene { glm::mat4 projection_matrix_; void UpdateCamera(); - int16_t Scene::SwapEndian(int16_t val); - float NormalizeHeight(int16_t value, int16_t minVal, int16_t maxVal); + int16_t SwapEndian(int16_t val); GLuint CreateHeightmapTexture(std::vector data, int width, int height); }; diff --git a/source/scene.cpp b/source/scene.cpp index 88e824d..7e42f31 100644 --- a/source/scene.cpp +++ b/source/scene.cpp @@ -35,7 +35,7 @@ const std::string kFragmentShaderPath = "shaders/fragment.glsl"; const std::string kQuadVertexPath = "shaders/quad_vertex.glsl"; const std::string kQuadFragmentPath = "shaders/quad_fragment.glsl"; -const std::string kHGTPath = "C:/Users/jmchr/Downloads/N02E016.SRTMGL1.hgt/N02E016.hgt"; +const std::string kHGTPath = "hgt/N02E016.hgt"; GLuint tex_id = -1; @@ -317,41 +317,18 @@ void Scene::UpdateCamera() { projection_matrix_ = glm::perspective(fov_, aspect_, near_z_, far_z_); } -// HGT files are 16bit integers whereas OpenGL prefers floating point values for color data -float Scene::NormalizeHeight(int16_t value, int16_t minVal, int16_t maxVal) { - return static_cast(value - minVal) / (maxVal - minVal); -} - GLuint Scene::CreateHeightmapTexture(std::vector data, int width, int height) { int16_t minVal = *std::min_element(data.begin(), data.end()); int16_t maxVal = *std::max_element(data.begin(), data.end()); - std::cout << "Min Val: " << minVal << "\n"; - std::cout << "Max Val: " << maxVal << std::endl; - std::vector floatData; for (int16_t &d : data) { // Normalize the value between 0 and 1 based on the min/max range - d = static_cast( - 255 * (d - minVal) / (maxVal - minVal) - ); + d = static_cast(255 * (d - minVal) / (maxVal - minVal)); floatData.push_back(static_cast(d / 255.0f)); - //floatData.push_back((static_cast(d) / 32767.0f + 1.0f) / 2.0f); } - minVal = *std::min_element(data.begin(), data.end()); - maxVal = *std::max_element(data.begin(), data.end()); - - std::cout << "Min Val: " << minVal << "\n"; - std::cout << "Max Val: " << maxVal << std::endl; - - float minFloatVal = *std::min_element(floatData.begin(), floatData.end()); - float maxFloatVal = *std::max_element(floatData.begin(), floatData.end()); - - std::cout << "Min Float Val: " << minFloatVal << "\n"; - std::cout << "Max Float Val: " << maxFloatVal << std::endl; - GLuint textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_2D, textureID);