moved progress calculations from openglworker to transitionblock

These functions are universal transition functions that have use outside of
the OpenGL workers.
This commit is contained in:
itsmattkc
2020-01-06 16:35:45 +11:00
parent 8391a732b1
commit 8358d7d221
3 changed files with 49 additions and 18 deletions
+3 -18
View File
@@ -275,29 +275,14 @@ void OpenGLWorker::RunNodeAccelerated(const Node *node, const TimeRange &range,
if (block_node->type() == Block::kTransition) {
const TransitionBlock* transition_node = static_cast<const TransitionBlock*>(node);
// Provide transition information
double internal_time = (range.in() - block_node->in()).toDouble();
GLfloat all_prog = static_cast<GLfloat>(internal_time / block_node->length().toDouble());
GLfloat out_prog = 0;
GLfloat in_prog = 0;
if (transition_node->out_offset() != 0) {
out_prog = static_cast<GLfloat>(clamp(1.0 - (internal_time / transition_node->out_offset().toDouble()), 0.0, 1.0));
}
if (transition_node->in_offset() != 0) {
in_prog = static_cast<GLfloat>(clamp((internal_time - transition_node->out_offset().toDouble()) / transition_node->in_offset().toDouble(), 0.0, 1.0));
}
// Provides total transition progress from 0.0 (start) - 1.0 (end)
shader->setUniformValue("ove_tprog_all", all_prog);
shader->setUniformValue("ove_tprog_all", static_cast<GLfloat>(transition_node->GetTotalProgress(range.in())));
// Provides progress of out section from 1.0 (start) - 0.0 (end)
shader->setUniformValue("ove_tprog_out", out_prog);
shader->setUniformValue("ove_tprog_out", static_cast<GLfloat>(transition_node->GetOutProgress(range.in())));
// Provides progress of in section from 0.0 (start) - 1.0 (end)
shader->setUniformValue("ove_tprog_in", in_prog);
shader->setUniformValue("ove_tprog_in", static_cast<GLfloat>(transition_node->GetInProgress(range.in())));
}
}