diff --git a/modules/atmosphere/rendering/atmospheredeferredcaster.cpp b/modules/atmosphere/rendering/atmospheredeferredcaster.cpp index 6c4fd10880..a4a07807ca 100644 --- a/modules/atmosphere/rendering/atmospheredeferredcaster.cpp +++ b/modules/atmosphere/rendering/atmospheredeferredcaster.cpp @@ -199,7 +199,7 @@ namespace openspace { ) * renderData.camera.combinedViewMatrix(); if (!isAtmosphereInFrustum( - glm::value_ptr(MV), + MV, tPlanetPosWorld, (_atmosphereRadius + ATM_EPS)*KM_TO_M) ) @@ -1477,16 +1477,21 @@ namespace openspace { } } - bool AtmosphereDeferredcaster::isAtmosphereInFrustum(const double* MVMatrix, + bool AtmosphereDeferredcaster::isAtmosphereInFrustum(const glm::dmat4& MVMatrix, const glm::dvec3& position, double radius) const { // Frustum Planes - glm::dvec3 col1(MVMatrix[0], MVMatrix[4], MVMatrix[8]); - glm::dvec3 col2(MVMatrix[1], MVMatrix[5], MVMatrix[9]); - glm::dvec3 col3(MVMatrix[2], MVMatrix[6], MVMatrix[10]); - glm::dvec3 col4(MVMatrix[3], MVMatrix[7], MVMatrix[11]); + //glm::dvec3 col1(MVMatrix[0], MVMatrix[4], MVMatrix[8]); + //glm::dvec3 col2(MVMatrix[1], MVMatrix[5], MVMatrix[9]); + //glm::dvec3 col3(MVMatrix[2], MVMatrix[6], MVMatrix[10]); + //glm::dvec3 col4(MVMatrix[3], MVMatrix[7], MVMatrix[11]); + + glm::dvec3 col1(MVMatrix[0][0], MVMatrix[1][0], MVMatrix[2][0]); + glm::dvec3 col2(MVMatrix[0][1], MVMatrix[1][1], MVMatrix[2][1]); + glm::dvec3 col3(MVMatrix[0][2], MVMatrix[1][2], MVMatrix[2][2]); + glm::dvec3 col4(MVMatrix[0][3], MVMatrix[1][3], MVMatrix[2][3]); glm::dvec3 leftNormal = col4 + col1; glm::dvec3 rightNormal = col4 - col1; @@ -1496,12 +1501,19 @@ namespace openspace { glm::dvec3 farNormal = col4 - col3; // Plane Distances - double leftDistance = MVMatrix[15] + MVMatrix[12]; - double rightDistance = MVMatrix[15] - MVMatrix[12]; - double bottomDistance = MVMatrix[15] + MVMatrix[13]; - double topDistance = MVMatrix[15] - MVMatrix[13]; - double nearDistance = MVMatrix[15] + MVMatrix[14]; - double farDistance = MVMatrix[15] - MVMatrix[14]; + //double leftDistance = MVMatrix[15] + MVMatrix[12]; + //double rightDistance = MVMatrix[15] - MVMatrix[12]; + //double bottomDistance = MVMatrix[15] + MVMatrix[13]; + //double topDistance = MVMatrix[15] - MVMatrix[13]; + //double nearDistance = MVMatrix[15] + MVMatrix[14]; + //double farDistance = MVMatrix[15] - MVMatrix[14]; + + double leftDistance = MVMatrix[3][3] + MVMatrix[3][0]; + double rightDistance = MVMatrix[3][3] - MVMatrix[3][0]; + double bottomDistance = MVMatrix[3][3] + MVMatrix[3][1]; + double topDistance = MVMatrix[3][3] - MVMatrix[3][1]; + double nearDistance = MVMatrix[3][3] + MVMatrix[3][2]; + double farDistance = MVMatrix[3][3] - MVMatrix[3][2]; // Normalize Planes double invMag = 1.0 / glm::length(leftNormal); diff --git a/modules/atmosphere/rendering/atmospheredeferredcaster.h b/modules/atmosphere/rendering/atmospheredeferredcaster.h index c53981fdb6..78814104b6 100644 --- a/modules/atmosphere/rendering/atmospheredeferredcaster.h +++ b/modules/atmosphere/rendering/atmospheredeferredcaster.h @@ -110,7 +110,7 @@ private: void renderQuadForCalc(GLuint vao, GLsizei numberOfVertices); void saveTextureToPPMFile(GLenum color_buffer_attachment, const std::string& fileName, int width, int height) const; - bool isAtmosphereInFrustum(const double* MVMatrix, const glm::dvec3& position, + bool isAtmosphereInFrustum(const glm::dmat4& MVMatrix, const glm::dvec3& position, double radius) const; const double DISTANCE_CULLING = 1e10; diff --git a/src/rendering/framebufferrenderer.cpp b/src/rendering/framebufferrenderer.cpp index f12de6e6f9..96140bd733 100644 --- a/src/rendering/framebufferrenderer.cpp +++ b/src/rendering/framebufferrenderer.cpp @@ -576,33 +576,33 @@ namespace openspace { for (int x = 0; x < GRIDSIZE; ++x) { vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX] = sizeX; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 1] = sizeY - step; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 2] = 0.0f; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 3] = 1.0f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 2] = 0.f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 3] = 1.f; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 4] = sizeX + step; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 5] = sizeY; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 6] = 0.0f; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 7] = 1.0f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 6] = 0.f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 7] = 1.f; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 8] = sizeX; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 9] = sizeY; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 10] = 0.0f; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 11] = 1.0f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 10] = 0.f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 11] = 1.f; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 12] = sizeX; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 13] = sizeY - step; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 14] = 0.0f; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 15] = 1.0f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 14] = 0.f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 15] = 1.f; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 16] = sizeX + step; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 17] = sizeY - step; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 18] = 0.0f; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 19] = 1.0f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 18] = 0.f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 19] = 1.f; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 20] = sizeX + step; vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 21] = sizeY; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 22] = 0.0f; - vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 23] = 1.0f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 22] = 0.f; + vertexData[y * GRIDSIZE * NVERTEX + x * NVERTEX + 23] = 1.f; sizeX += step; } @@ -718,53 +718,53 @@ namespace openspace { GLuint nOneStripVBO = 0; GLuint nOneStripTexture = 0; - sizeX = -1.0f; - step = 2.0f / static_cast(_nAaSamples); + sizeX = -1.f; + step = 2.f / static_cast(_nAaSamples); GLfloat * nOneStripVertexData = new GLfloat[_nAaSamples * (NVERTEX + 12)]; for (int x = 0; x < _nAaSamples; ++x) { nOneStripVertexData[x * (NVERTEX + 12)] = sizeX; - nOneStripVertexData[x * (NVERTEX + 12) + 1] = -1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 2] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 3] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 4] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 5] = 0.0f; + nOneStripVertexData[x * (NVERTEX + 12) + 1] = -1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 2] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 3] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 4] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 5] = 0.f; nOneStripVertexData[x * (NVERTEX + 12) + 6] = sizeX + step; - nOneStripVertexData[x * (NVERTEX + 12) + 7] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 8] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 9] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 10] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 11] = 1.0f; + nOneStripVertexData[x * (NVERTEX + 12) + 7] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 8] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 9] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 10] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 11] = 1.f; nOneStripVertexData[x * (NVERTEX + 12) + 12] = sizeX; - nOneStripVertexData[x * (NVERTEX + 12) + 13] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 14] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 15] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 16] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 17] = 0.0f; + nOneStripVertexData[x * (NVERTEX + 12) + 13] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 14] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 15] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 16] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 17] = 0.f; nOneStripVertexData[x * (NVERTEX + 12) + 18] = sizeX; - nOneStripVertexData[x * (NVERTEX + 12) + 19] = -1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 20] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 21] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 22] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 23] = 0.0f; + nOneStripVertexData[x * (NVERTEX + 12) + 19] = -1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 20] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 21] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 22] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 23] = 0.f; nOneStripVertexData[x * (NVERTEX + 12) + 24] = sizeX + step; - nOneStripVertexData[x * (NVERTEX + 12) + 25] = -1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 26] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 27] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 28] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 29] = 1.0f; + nOneStripVertexData[x * (NVERTEX + 12) + 25] = -1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 26] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 27] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 28] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 29] = 1.f; nOneStripVertexData[x * (NVERTEX + 12) + 30] = sizeX + step; - nOneStripVertexData[x * (NVERTEX + 12) + 31] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 32] = 0.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 33] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 34] = 1.0f; - nOneStripVertexData[x * (NVERTEX + 12) + 35] = 1.0f; + nOneStripVertexData[x * (NVERTEX + 12) + 31] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 32] = 0.f; + nOneStripVertexData[x * (NVERTEX + 12) + 33] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 34] = 1.f; + nOneStripVertexData[x * (NVERTEX + 12) + 35] = 1.f; sizeX += step; } @@ -855,7 +855,7 @@ namespace openspace { // render strip glDrawBuffers(1, textureBuffers); - glClearColor(0.0f, 1.0f, 0.0f, 1.0f); + glClearColor(0.f, 1.f, 0.f, 1.f); glClear(GL_COLOR_BUFFER_BIT); glBindVertexArray(nOneStripVAO); glDisable(GL_DEPTH_TEST);