mirror of
https://github.com/overte-org/overte.git
synced 2025-04-19 13:43:49 +02:00
also consider GPU render time for LOD adjust
This commit is contained in:
parent
9c4a0c8c70
commit
4fb9680f3b
3 changed files with 6 additions and 5 deletions
|
@ -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<LODManager>()->autoAdjustLOD(presentTime, engineRunTime, deltaTime);
|
||||
float gpuTime = getGPUContext()->getFrameTimerGPUAverage();
|
||||
float maxRenderTime = glm::max(gpuTime, glm::max(presentTime, engineRunTime));
|
||||
DependencyManager::get<LODManager>()->autoAdjustLOD(maxRenderTime, deltaTime);
|
||||
} else {
|
||||
DependencyManager::get<LODManager>()->resetLODAdjust();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue