From 4fb9680f3b96654675cff9fcec91b6efcb64755f Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 19 Dec 2017 16:43:49 -0800 Subject: [PATCH] also consider GPU render time for LOD adjust --- interface/src/Application.cpp | 4 +++- interface/src/LODManager.cpp | 5 ++--- interface/src/LODManager.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 174424f4ca..f17e06cb35 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4325,7 +4325,9 @@ void Application::updateLOD(float deltaTime) const { if (!isThrottleRendering()) { float presentTime = getActiveDisplayPlugin()->getAveragePresentTime(); float engineRunTime = (float)(_renderEngine->getConfiguration().get()->getCPURunTime()); - DependencyManager::get()->autoAdjustLOD(presentTime, engineRunTime, deltaTime); + float gpuTime = getGPUContext()->getFrameTimerGPUAverage(); + float maxRenderTime = glm::max(gpuTime, glm::max(presentTime, engineRunTime)); + DependencyManager::get()->autoAdjustLOD(maxRenderTime, deltaTime); } else { DependencyManager::get()->resetLODAdjust(); } diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 77aabccb78..c369920cf3 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -44,12 +44,11 @@ float LODManager::getLODIncreaseFPS() { return getDesktopLODIncreaseFPS(); } -void LODManager::autoAdjustLOD(float presentTime, float engineRunTime, float deltaTimeSec) { +void LODManager::autoAdjustLOD(float renderTime, float deltaTimeSec) { // compute time-weighted running average renderTime - float maxTime = glm::max(presentTime, engineRunTime); const float LOD_ADJUST_TIMESCALE = 0.1f; // sec float blend = (deltaTimeSec < LOD_ADJUST_TIMESCALE) ? deltaTimeSec / LOD_ADJUST_TIMESCALE : 1.0f; - _avgRenderTime = (1.0f - blend) * _avgRenderTime + blend * maxTime; // msec + _avgRenderTime = (1.0f - blend) * _avgRenderTime + blend * renderTime; // msec if (!_automaticLODAdjust) { // early exit return; diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index 4ec36e613b..eadb3f2e5c 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -62,7 +62,7 @@ public: Q_INVOKABLE float getLODIncreaseFPS(); static bool shouldRender(const RenderArgs* args, const AABox& bounds); - void autoAdjustLOD(float presentTime, float engineRunTime, float deltaTimeSec); + void autoAdjustLOD(float renderTime, float deltaTimeSec); void loadSettings(); void saveSettings();