From c29b93b986c755b4e8735254feb394c58e16c2c9 Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 23 May 2018 17:49:10 -0700 Subject: [PATCH] Merging with latest master and bringin low hanging fruits from Andrews pr --- libraries/workload/src/workload/ViewTask.cpp | 28 ++++++++++++-------- libraries/workload/src/workload/ViewTask.h | 17 +++++++----- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/libraries/workload/src/workload/ViewTask.cpp b/libraries/workload/src/workload/ViewTask.cpp index 0c3f2cc873..1f8ea883ed 100644 --- a/libraries/workload/src/workload/ViewTask.cpp +++ b/libraries/workload/src/workload/ViewTask.cpp @@ -71,9 +71,9 @@ void SetupViews::run(const WorkloadContextPointer& renderContext, const Input& i ControlViews::ControlViews() { - regionBackFronts[0] = glm::vec2(1.0f, 3.0f); - regionBackFronts[1] = glm::vec2(1.0f, 5.0f); - regionBackFronts[2] = glm::vec2(1.0f, 10.0f); + regionBackFronts[0] = DEFAULT_R1_BACK_FRONT; + regionBackFronts[1] = DEFAULT_R2_BACK_FRONT; + regionBackFronts[2] = DEFAULT_R3_BACK_FRONT; regionRegulators[0] = Regulator(std::chrono::milliseconds(2), regionBackFronts[0], 5.0f * regionBackFronts[0], glm::vec2(0.4f, 0.2f), 0.5f * glm::vec2(0.3f, 0.2f)); regionRegulators[1] = Regulator(std::chrono::milliseconds(2), regionBackFronts[1], 8.0f * regionBackFronts[1], glm::vec2(0.4f, 0.2f), 0.5f * glm::vec2(0.3f, 0.2f)); regionRegulators[2] = Regulator(std::chrono::milliseconds(2), regionBackFronts[2], 10.0f * regionBackFronts[2], glm::vec2(0.4f, 0.2f), 0.5f * glm::vec2(0.3f, 0.2f)); @@ -114,12 +114,15 @@ glm::vec2 Regulator::run(const Timing_ns& regulationDuration, const Timing_ns& m float coef = error_ms / std::chrono::duration(regulationDuration).count(); next += coef * (error_ms < 0.0f ? _speedDown : _speedUp); - // Clamp to min max - next = glm::clamp(next, _minRange, _maxRange); - return next; } +glm::vec2 Regulator::clamp(const glm::vec2& backFront) const { + // Clamp to min max + return glm::clamp(backFront, _minRange, _maxRange); +} + + void ControlViews::regulateViews(workload::Views& outViews, const workload::Timings& timings) { for (auto& outView : outViews) { @@ -129,9 +132,14 @@ void ControlViews::regulateViews(workload::Views& outViews, const workload::Timi } auto loopDuration = std::chrono::nanoseconds{ std::chrono::milliseconds(16) }; - _dataExport.ranges[workload::Region::R1] = regionBackFronts[workload::Region::R1] = regionRegulators[workload::Region::R1].run(loopDuration, timings[0], regionBackFronts[workload::Region::R1]); - _dataExport.ranges[workload::Region::R2] = regionBackFronts[workload::Region::R2] = regionRegulators[workload::Region::R2].run(loopDuration, timings[0], regionBackFronts[workload::Region::R2]); - _dataExport.ranges[workload::Region::R3] = regionBackFronts[workload::Region::R3] = regionRegulators[workload::Region::R3].run(loopDuration, timings[1], regionBackFronts[workload::Region::R3]); + regionBackFronts[workload::Region::R1] = regionRegulators[workload::Region::R1].clamp(regionRegulators[workload::Region::R1].run(loopDuration, timings[0], regionBackFronts[workload::Region::R1])); + regionBackFronts[workload::Region::R2] = regionRegulators[workload::Region::R2].clamp(regionRegulators[workload::Region::R2].run(loopDuration, timings[0], regionBackFronts[workload::Region::R2])); + regionBackFronts[workload::Region::R3] = regionRegulators[workload::Region::R3].clamp(regionRegulators[workload::Region::R3].run(loopDuration, timings[1], regionBackFronts[workload::Region::R3])); + + // Export data config + _dataExport.ranges[workload::Region::R1] = regionBackFronts[workload::Region::R1]; + _dataExport.ranges[workload::Region::R2] = regionBackFronts[workload::Region::R2]; + _dataExport.ranges[workload::Region::R3] = regionBackFronts[workload::Region::R3]; for (auto& outView : outViews) { outView.regionBackFronts[workload::Region::R1] = regionBackFronts[workload::Region::R1]; @@ -141,5 +149,3 @@ void ControlViews::regulateViews(workload::Views& outViews, const workload::Timi workload::View::updateRegionsFromBackFronts(outView); } } - - diff --git a/libraries/workload/src/workload/ViewTask.h b/libraries/workload/src/workload/ViewTask.h index 481d833a0b..93035503c7 100644 --- a/libraries/workload/src/workload/ViewTask.h +++ b/libraries/workload/src/workload/ViewTask.h @@ -24,6 +24,10 @@ QVariantList toVariantList(const QList &list) } namespace workload { + const glm::vec2 DEFAULT_R1_BACK_FRONT = { 50.0f, 100.0f }; + const glm::vec2 DEFAULT_R2_BACK_FRONT = { 75.0f, 150.0f }; + const glm::vec2 DEFAULT_R3_BACK_FRONT = { 100.0f, 250.0f }; + class SetupViewsConfig : public Job::Config{ Q_OBJECT Q_PROPERTY(float r1Front READ getR1Front WRITE setR1Front NOTIFY dirty) @@ -66,14 +70,14 @@ namespace workload { void setSimulateSecondaryCamera(bool use) { data.simulateSecondaryCamera = use; emit dirty(); } struct Data { - float r1Back { 2.0f }; - float r1Front { 10.0f }; + float r1Back { DEFAULT_R1_BACK_FRONT.x }; + float r1Front { DEFAULT_R1_BACK_FRONT.y }; - float r2Back{ 5.0f }; - float r2Front{ 30.0f }; + float r2Back{ DEFAULT_R2_BACK_FRONT.x }; + float r2Front{ DEFAULT_R2_BACK_FRONT.y }; - float r3Back{ 10.0f }; - float r3Front{ 100.0f }; + float r3Back{ DEFAULT_R3_BACK_FRONT.x }; + float r3Front{ DEFAULT_R3_BACK_FRONT.y }; bool freezeViews{ false }; bool useAvatarView{ false }; @@ -211,6 +215,7 @@ namespace workload { _budget(budget_ns), _minRange(minRange), _maxRange(maxRange), _speedDown(speedDown), _speedUp(speedUp) {} glm::vec2 run(const Timing_ns& regulationDuration, const Timing_ns& measured, const glm::vec2& current); + glm::vec2 clamp(const glm::vec2& backFront) const; }; class ControlViews {