mirror of
https://github.com/overte-org/overte.git
synced 2025-04-07 15:34:05 +02:00
Merging with latest master and bringin low hanging fruits from Andrews pr
This commit is contained in:
parent
40370f860a
commit
c29b93b986
2 changed files with 28 additions and 17 deletions
|
@ -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<float, std::milli>(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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,10 @@ QVariantList toVariantList(const QList<T> &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 {
|
||||
|
|
Loading…
Reference in a new issue