mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-31 00:18:39 -06:00
added transmission time vertex attribute
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user