mirror of
https://github.com/overte-org/overte.git
synced 2025-04-13 16:05:17 +02:00
Implement the ppi scaling in sync with the platform tier
This commit is contained in:
parent
6ef652038b
commit
11f036246e
2 changed files with 20 additions and 2 deletions
|
@ -10,6 +10,8 @@
|
||||||
//
|
//
|
||||||
#include "PerformanceManager.h"
|
#include "PerformanceManager.h"
|
||||||
|
|
||||||
|
#include <platform/Platform.h>
|
||||||
|
#include <platform/PlatformKeys.h>
|
||||||
#include <platform/Profiler.h>
|
#include <platform/Profiler.h>
|
||||||
|
|
||||||
#include "scripting/RenderScriptingInterface.h"
|
#include "scripting/RenderScriptingInterface.h"
|
||||||
|
@ -65,6 +67,16 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
|
||||||
|
|
||||||
// Ugly case that prevent us to run deferred everywhere...
|
// Ugly case that prevent us to run deferred everywhere...
|
||||||
bool isDeferredCapable = platform::Profiler::isRenderMethodDeferredCapable();
|
bool isDeferredCapable = platform::Profiler::isRenderMethodDeferredCapable();
|
||||||
|
auto masterDisplay = platform::getDisplay(platform::getMasterDisplay());
|
||||||
|
|
||||||
|
// eval recommanded PPI and Scale
|
||||||
|
float ppi{96};
|
||||||
|
float recommandedPpiScale = 1.0f;
|
||||||
|
const float RECOMMANDED_PPI[] = { 200.0f, 120.f, 160.f, 250.f};
|
||||||
|
if (!masterDisplay.empty() && masterDisplay.count(platform::keys::display::ppi)) {
|
||||||
|
ppi = masterDisplay[platform::keys::display::ppi];
|
||||||
|
recommandedPpiScale = std::min(1.0f, RECOMMANDED_PPI[preset] / (float) ppi);
|
||||||
|
}
|
||||||
|
|
||||||
switch (preset) {
|
switch (preset) {
|
||||||
case PerformancePreset::HIGH:
|
case PerformancePreset::HIGH:
|
||||||
|
@ -72,17 +84,21 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
|
||||||
RenderScriptingInterface::RenderMethod::DEFERRED :
|
RenderScriptingInterface::RenderMethod::DEFERRED :
|
||||||
RenderScriptingInterface::RenderMethod::FORWARD ) );
|
RenderScriptingInterface::RenderMethod::FORWARD ) );
|
||||||
|
|
||||||
|
RenderScriptingInterface::getInstance()->setViewportResolutionScale(recommandedPpiScale);
|
||||||
|
|
||||||
RenderScriptingInterface::getInstance()->setShadowsEnabled(true);
|
RenderScriptingInterface::getInstance()->setShadowsEnabled(true);
|
||||||
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME);
|
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME);
|
||||||
|
|
||||||
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);
|
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case PerformancePreset::MID:
|
case PerformancePreset::MID:
|
||||||
RenderScriptingInterface::getInstance()->setRenderMethod((isDeferredCapable ?
|
RenderScriptingInterface::getInstance()->setRenderMethod((isDeferredCapable ?
|
||||||
RenderScriptingInterface::RenderMethod::DEFERRED :
|
RenderScriptingInterface::RenderMethod::DEFERRED :
|
||||||
RenderScriptingInterface::RenderMethod::FORWARD));
|
RenderScriptingInterface::RenderMethod::FORWARD));
|
||||||
|
|
||||||
|
RenderScriptingInterface::getInstance()->setViewportResolutionScale(recommandedPpiScale);
|
||||||
|
|
||||||
RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
|
RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
|
||||||
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE);
|
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE);
|
||||||
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);
|
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);
|
||||||
|
@ -93,6 +109,8 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
|
||||||
RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
|
RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
|
||||||
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::ECO);
|
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::ECO);
|
||||||
|
|
||||||
|
RenderScriptingInterface::getInstance()->setViewportResolutionScale(recommandedPpiScale);
|
||||||
|
|
||||||
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.75f);
|
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.75f);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -113,7 +113,7 @@ void MACOSInstance::enumerateGpusAndDisplays() {
|
||||||
display[keys::display::modeRefreshrate] = displayRefreshrate;
|
display[keys::display::modeRefreshrate] = displayRefreshrate;
|
||||||
|
|
||||||
// Master display ?
|
// Master display ?
|
||||||
display[keys::display::isMaster] = displayMaster;
|
display[keys::display::isMaster] = (displayMaster ? true : false);
|
||||||
|
|
||||||
// Macos specific
|
// Macos specific
|
||||||
display["macos_unit"] = displayUnit;
|
display["macos_unit"] = displayUnit;
|
||||||
|
|
Loading…
Reference in a new issue