Requested changes for merging. Part V.

This commit is contained in:
Jonathas Costa
2018-04-20 21:11:01 -04:00
parent d42bd39fa2
commit 87d1072712
3 changed files with 70 additions and 58 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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<GLfloat>(_nAaSamples);
sizeX = -1.f;
step = 2.f / static_cast<GLfloat>(_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);