added transmission time vertex attribute

This commit is contained in:
Lovisa Hassler
2018-12-06 16:38:03 -05:00
parent 391e0a7033
commit cd095ea5d8
3 changed files with 32 additions and 18 deletions

View File

@@ -208,28 +208,34 @@ void RenderableSignals::updateVertexAttributes() {
// position attributes
glVertexAttribPointer(_vaLocVer, _sizeThreeVal, GL_FLOAT, GL_FALSE,
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(DistanceVBOLayout) + sizeof(float),
(void*)0);
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(FloatsVBOLayout),
(void*)0);
glEnableVertexAttribArray(_vaLocVer);
// color attributes
glVertexAttribPointer(_vaLocCol, _sizeFourVal, GL_FLOAT, GL_FALSE,
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(DistanceVBOLayout) + sizeof(float),
(void*)(sizeof(PositionVBOLayout)));
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(FloatsVBOLayout),
(void*)(sizeof(PositionVBOLayout)));
glEnableVertexAttribArray(_vaLocCol);
// distance attributes
glVertexAttribPointer(_vaLocDist, _sizeOneVal, GL_FLOAT, GL_FALSE,
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(DistanceVBOLayout) + sizeof(float),
(void*)(sizeof(PositionVBOLayout) + sizeof(ColorVBOLayout)));
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(FloatsVBOLayout),
(void*)(sizeof(PositionVBOLayout) + sizeof(ColorVBOLayout)));
glEnableVertexAttribArray(_vaLocDist);
// time attribute
// active time attribute
glVertexAttribPointer(_vaLocTimeSinceStart, _sizeOneVal, GL_FLOAT, GL_FALSE,
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(DistanceVBOLayout) + sizeof(float),
(void*)(sizeof(PositionVBOLayout) + sizeof(ColorVBOLayout) + sizeof(float)));
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(FloatsVBOLayout),
(void*)(sizeof(PositionVBOLayout) + sizeof(ColorVBOLayout) + sizeof(float)));
glEnableVertexAttribArray(_vaLocTimeSinceStart);
// total transmission time attribute
glVertexAttribPointer(_vaLocTransmissionTime, _sizeOneVal, GL_FLOAT, GL_FALSE,
sizeof(ColorVBOLayout) + sizeof(PositionVBOLayout) +
sizeof(FloatsVBOLayout),
(void*)(sizeof(PositionVBOLayout) + sizeof(ColorVBOLayout) + 2 * sizeof(float)));
glEnableVertexAttribArray(_vaLocTransmissionTime);
};
void RenderableSignals::render(const RenderData& data, RendererTasks&) {
@@ -334,7 +340,7 @@ void RenderableSignals::update(const UpdateData& data) {
// Update the number of lines to render
_lineRenderInformation.countLines = static_cast<GLsizei>(_vertexArray.size() /
(_sizeThreeVal + _sizeFourVal + 2 *_sizeOneVal));
(_sizeThreeVal + _sizeFourVal + 3 *_sizeOneVal));
//unbind vertexArray
unbindGL();
@@ -387,6 +393,7 @@ void RenderableSignals::pushSignalDataToVertexArray(SignalManager::Signal signal
_vertexArray.push_back(distance);
}
_vertexArray.push_back(timeSinceStart);
_vertexArray.push_back(signal.endTransmission-signal.startTransmission);
_vertexArray.push_back(posSpacecraft.x);
_vertexArray.push_back(posSpacecraft.y);
@@ -404,6 +411,7 @@ void RenderableSignals::pushSignalDataToVertexArray(SignalManager::Signal signal
_vertexArray.push_back(distance);
}
_vertexArray.push_back(timeSinceStart);
_vertexArray.push_back(signal.endTransmission - signal.startTransmission);
}
/* Since our station dishes have a static translation from Earth, we

View File

@@ -103,9 +103,9 @@ namespace openspace {
struct ColorVBOLayout {
float r, g, b, a;
};
/* The VBO layout of the distance */
struct DistanceVBOLayout {
float d;
/* The summated VBO layout of all the one value float attributes */
struct FloatsVBOLayout {
float distance, timeSinceStart, transmissionTime;
};
/// Number of variables in _uniformCache
@@ -168,6 +168,9 @@ namespace openspace {
/// The vertex attribute location time since signal started sending
/// must correlate to layout location in vertex shader
const GLuint _vaLocTimeSinceStart = 3;
/// The vertex attribute location for total transmission time
/// must correlate to layout location in vertex shader
const GLuint _vaLocTransmissionTime = 4;
/// Specifies the number of components per generic vertex attribute
const GLuint _sizeFourVal = 4;

View File

@@ -29,6 +29,7 @@ layout(location = 0) in vec3 in_point_position;
layout(location = 1) in vec4 in_color;
layout(location = 2) in float in_dist_from_start;
layout(location = 3) in float in_time_since_start;
layout(location = 4) in float in_transmission_time;
in int gl_VertexID;
@@ -37,6 +38,7 @@ out vec4 vs_gPosition;
out vec4 vs_color;
out float distanceFromStart;
out float timeSinceStart;
out float transmissionTime;
uniform dmat4 modelViewStation;
uniform dmat4 modelViewSpacecraft;
@@ -59,7 +61,8 @@ void main() {
gl_Position.z = 0.f;
// pass variables with no calculations directly to fragment
timeSinceStart = in_time_since_start;
timeSinceStart = in_time_since_start;
transmissionTime = in_transmission_time;
distanceFromStart = in_dist_from_start;
vs_color = in_color;
}