Using the std::chrono to measure the physics time

This commit is contained in:
Sam Gateau 2018-04-19 23:28:32 -07:00
parent 9b1a887469
commit cfaf75e196
2 changed files with 10 additions and 4 deletions

View file

@ -4295,8 +4295,8 @@ void Application::idle() {
} }
{ {
workload::Timings timings(1, PerformanceTimer::getTimerRecord("/idle/update/simulation").getAverage()); // workload::Timings timings(1, PerformanceTimer::getTimerRecord("/idle/update/simulation").getAverage());
_gameWorkload.updateSimulationTimings(timings); // _gameWorkload.updateSimulationTimings(timings);
_gameWorkload.updateViews(_viewFrustum, getMyAvatar()->getHeadPosition()); _gameWorkload.updateViews(_viewFrustum, getMyAvatar()->getHeadPosition());
_gameWorkload._engine->run(); _gameWorkload._engine->run();
} }
@ -5277,7 +5277,9 @@ void Application::update(float deltaTime) {
{ {
PROFILE_RANGE(simulation_physics, "Simulation"); PROFILE_RANGE(simulation_physics, "Simulation");
PerformanceTimer perfTimer("simulation"); PerformanceTimer perfTimer("simulation");
if (_physicsEnabled) { if (_physicsEnabled) {
auto t0 = std::chrono::high_resolution_clock::now();
{ {
PROFILE_RANGE(simulation_physics, "PrePhysics"); PROFILE_RANGE(simulation_physics, "PrePhysics");
PerformanceTimer perfTimer("prePhysics)"); PerformanceTimer perfTimer("prePhysics)");
@ -5365,6 +5367,10 @@ void Application::update(float deltaTime) {
// NOTE: the PhysicsEngine stats are written to stdout NOT to Qt log framework // NOTE: the PhysicsEngine stats are written to stdout NOT to Qt log framework
_physicsEngine->dumpStatsIfNecessary(); _physicsEngine->dumpStatsIfNecessary();
} }
auto t1 = std::chrono::high_resolution_clock::now();
workload::Timings timings(1);
timings[0] = float(std::chrono::nanoseconds(t1 - t0).count() * 0.000001);
_gameWorkload.updateSimulationTimings(timings);
if (!_aboutToQuit) { if (!_aboutToQuit) {
// NOTE: the getEntities()->update() call below will wait for lock // NOTE: the getEntities()->update() call below will wait for lock

View file

@ -34,13 +34,13 @@ void ControlViews::run(const workload::WorkloadContextPointer& runContext, const
outViews.clear(); outViews.clear();
outViews = inViews; outViews = inViews;
if (_data.regulateViewRanges) { if (_data.regulateViewRanges && inTimings.size()) {
regulateViews(outViews, inTimings); regulateViews(outViews, inTimings);
} }
} }
float wtf_adjust(float current, float timing) { float wtf_adjust(float current, float timing) {
float error = -((timing * 0.001f) - 2.0f); float error = -((timing) - 2.0f);
if (error < 0.0f) { if (error < 0.0f) {
current += 0.2f * (error) / 16.0f; current += 0.2f * (error) / 16.0f;
} else { } else {