18static std::chrono::nanoseconds mix(std::chrono::nanoseconds duration1, std::chrono::nanoseconds duration2,
double ratio)
23void RenderJournal::add(std::chrono::nanoseconds renderTime, std::chrono::nanoseconds presentationTimestamp)
25 const auto timeDifference = m_lastAdd ? presentationTimestamp - *m_lastAdd : 10s;
26 m_lastAdd = presentationTimestamp;
28 static constexpr std::chrono::nanoseconds varianceTimeConstant = 3s;
29 const double varianceRatio = std::clamp(timeDifference.count() /
double(varianceTimeConstant.count()), 0.1, 1.0);
30 const auto renderTimeDiff = std::max(renderTime - m_result, 0ns);
31 m_variance = std::max(mix(renderTimeDiff, m_variance, varianceRatio), renderTimeDiff);
33 static constexpr std::chrono::nanoseconds timeConstant = 500ms;
34 const double ratio = std::clamp(timeDifference.count() /
double(timeConstant.count()), 0.1, 1.0);
35 m_result = mix(renderTime, m_result, ratio);