mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01: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 <platform/Platform.h>
|
||||
#include <platform/PlatformKeys.h>
|
||||
#include <platform/Profiler.h>
|
||||
|
||||
#include "scripting/RenderScriptingInterface.h"
|
||||
|
@ -65,6 +67,16 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
|
|||
|
||||
// Ugly case that prevent us to run deferred everywhere...
|
||||
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) {
|
||||
case PerformancePreset::HIGH:
|
||||
|
@ -72,17 +84,21 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
|
|||
RenderScriptingInterface::RenderMethod::DEFERRED :
|
||||
RenderScriptingInterface::RenderMethod::FORWARD ) );
|
||||
|
||||
RenderScriptingInterface::getInstance()->setViewportResolutionScale(recommandedPpiScale);
|
||||
|
||||
RenderScriptingInterface::getInstance()->setShadowsEnabled(true);
|
||||
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::REALTIME);
|
||||
|
||||
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);
|
||||
|
||||
|
||||
break;
|
||||
case PerformancePreset::MID:
|
||||
RenderScriptingInterface::getInstance()->setRenderMethod((isDeferredCapable ?
|
||||
RenderScriptingInterface::RenderMethod::DEFERRED :
|
||||
RenderScriptingInterface::RenderMethod::FORWARD));
|
||||
|
||||
RenderScriptingInterface::getInstance()->setViewportResolutionScale(recommandedPpiScale);
|
||||
|
||||
RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
|
||||
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::INTERACTIVE);
|
||||
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.5f);
|
||||
|
@ -93,6 +109,8 @@ void PerformanceManager::applyPerformancePreset(PerformanceManager::PerformanceP
|
|||
RenderScriptingInterface::getInstance()->setShadowsEnabled(false);
|
||||
qApp->getRefreshRateManager().setRefreshRateProfile(RefreshRateManager::RefreshRateProfile::ECO);
|
||||
|
||||
RenderScriptingInterface::getInstance()->setViewportResolutionScale(recommandedPpiScale);
|
||||
|
||||
DependencyManager::get<LODManager>()->setWorldDetailQuality(0.75f);
|
||||
|
||||
break;
|
||||
|
|
|
@ -113,7 +113,7 @@ void MACOSInstance::enumerateGpusAndDisplays() {
|
|||
display[keys::display::modeRefreshrate] = displayRefreshrate;
|
||||
|
||||
// Master display ?
|
||||
display[keys::display::isMaster] = displayMaster;
|
||||
display[keys::display::isMaster] = (displayMaster ? true : false);
|
||||
|
||||
// Macos specific
|
||||
display["macos_unit"] = displayUnit;
|
||||
|
|
Loading…
Reference in a new issue