mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-27 07:18:57 -06:00
Requested changes for merging. Part V.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user