Clumsy fix for enum storage.

This commit is contained in:
Penguin-Guru 2021-10-24 19:19:20 -07:00
parent 66fdfa40ad
commit 8386f2eb61
5 changed files with 13 additions and 14 deletions

View file

@ -405,9 +405,6 @@ Menu::Menu() {
// Developer > Render >>> // Developer > Render >>>
MenuWrapper* renderOptionsMenu = developerMenu->addMenu("Render"); MenuWrapper* renderOptionsMenu = developerMenu->addMenu("Render");
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AntiAliasing, 0, RenderScriptingInterface::getInstance()->getAntialiasingMode(),
RenderScriptingInterface::getInstance(), SLOT(setAntialiasingMode(int)));
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, RenderScriptingInterface::getInstance()->getShadowsEnabled(), addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, RenderScriptingInterface::getInstance()->getShadowsEnabled(),
RenderScriptingInterface::getInstance(), SLOT(setShadowsEnabled(bool))); RenderScriptingInterface::getInstance(), SLOT(setShadowsEnabled(bool)));

View file

@ -224,7 +224,9 @@ namespace MenuOption {
const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar"; const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar";
const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar"; const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar";
const QString Shadows = "Shadows"; const QString Shadows = "Shadows";
const QString AntiAliasing = "Temporal Antialiasing (FXAA if disabled)"; const QString AntiAliasingNONE = "Antialiasing Disabled";
const QString AntiAliasingTAA = "Temporal Anti-aliasing";
const QString AntiAliasingFXAA = "Fast Approximate Anti-aliasing";
const QString AmbientOcclusion = "Ambient Occlusion"; const QString AmbientOcclusion = "Ambient Occlusion";
const QString NotificationSounds = "play_notification_sounds"; const QString NotificationSounds = "play_notification_sounds";
const QString NotificationSoundsSnapshot = "play_notification_sounds_snapshot"; const QString NotificationSoundsSnapshot = "play_notification_sounds_snapshot";

View file

@ -28,14 +28,14 @@ void RenderScriptingInterface::loadSettings() {
_renderMethod = (_renderMethodSetting.get()); _renderMethod = (_renderMethodSetting.get());
_shadowsEnabled = (_shadowsEnabledSetting.get()); _shadowsEnabled = (_shadowsEnabledSetting.get());
_ambientOcclusionEnabled = (_ambientOcclusionEnabledSetting.get()); _ambientOcclusionEnabled = (_ambientOcclusionEnabledSetting.get());
_antialiasingMode = (_antialiasingModeSetting.get()); //_antialiasingMode = (_antialiasingModeSetting.get());
_antialiasingMode = static_cast<AntialiasingConfig::Mode>(_antialiasingModeSetting.get());
_viewportResolutionScale = (_viewportResolutionScaleSetting.get()); _viewportResolutionScale = (_viewportResolutionScaleSetting.get());
}); });
forceRenderMethod((RenderMethod)_renderMethod); forceRenderMethod((RenderMethod)_renderMethod);
forceShadowsEnabled(_shadowsEnabled); forceShadowsEnabled(_shadowsEnabled);
forceAmbientOcclusionEnabled(_ambientOcclusionEnabled); forceAmbientOcclusionEnabled(_ambientOcclusionEnabled);
forceAntialiasingMode(_antialiasingMode); forceAntialiasingMode(_antialiasingMode);
forceAntialiasingMode(_antialiasingMode);
forceViewportResolutionScale(_viewportResolutionScale); forceViewportResolutionScale(_viewportResolutionScale);
} }
@ -134,13 +134,11 @@ void RenderScriptingInterface::setAntialiasingMode(AntialiasingConfig::Mode mode
void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) { void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) {
_renderSettingLock.withWriteLock([&] { _renderSettingLock.withWriteLock([&] {
_antialiasingMode = static_cast<AntialiasingConfig::Mode>(mode); _antialiasingMode = mode;
_antialiasingModeSetting.set(mode);
auto mainViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderMainView.JitterCam"); auto mainViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderMainView.JitterCam");
auto mainViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderMainView.Antialiasing"); auto mainViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderMainView.Antialiasing");
if (mainViewJitterCamConfig && mainViewAntialiasingConfig) { if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {
Menu::getInstance()->setIsOptionChecked(MenuOption::AntiAliasing, mode);
switch (mode) { switch (mode) {
case AntialiasingConfig::Mode::NONE: case AntialiasingConfig::Mode::NONE:
mainViewJitterCamConfig->none(); mainViewJitterCamConfig->none();
@ -156,12 +154,13 @@ void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mo
break; break;
default: default:
_antialiasingMode = AntialiasingConfig::Mode::NONE; _antialiasingMode = AntialiasingConfig::Mode::NONE;
_antialiasingModeSetting.set(AntialiasingConfig::Mode::NONE);
mainViewJitterCamConfig->none(); mainViewJitterCamConfig->none();
mainViewAntialiasingConfig->setDebugFXAA(false); mainViewAntialiasingConfig->setDebugFXAA(false);
break; break;
} }
} }
_antialiasingModeSetting.set(_antialiasingMode);
}); });
} }

View file

@ -194,14 +194,15 @@ private:
int _renderMethod{ RENDER_FORWARD ? render::Args::RenderMethod::FORWARD : render::Args::RenderMethod::DEFERRED }; int _renderMethod{ RENDER_FORWARD ? render::Args::RenderMethod::FORWARD : render::Args::RenderMethod::DEFERRED };
bool _shadowsEnabled{ true }; bool _shadowsEnabled{ true };
bool _ambientOcclusionEnabled{ false }; bool _ambientOcclusionEnabled{ false };
AntialiasingConfig::Mode _antialiasingMode; AntialiasingConfig::Mode _antialiasingMode{ AntialiasingConfig::Mode::TAA };
float _viewportResolutionScale{ 1.0f }; float _viewportResolutionScale{ 1.0f };
// Actual settings saved on disk // Actual settings saved on disk
Setting::Handle<int> _renderMethodSetting { "renderMethod", RENDER_FORWARD ? render::Args::RenderMethod::FORWARD : render::Args::RenderMethod::DEFERRED }; Setting::Handle<int> _renderMethodSetting { "renderMethod", RENDER_FORWARD ? render::Args::RenderMethod::FORWARD : render::Args::RenderMethod::DEFERRED };
Setting::Handle<bool> _shadowsEnabledSetting { "shadowsEnabled", true }; Setting::Handle<bool> _shadowsEnabledSetting { "shadowsEnabled", true };
Setting::Handle<bool> _ambientOcclusionEnabledSetting { "ambientOcclusionEnabled", false }; Setting::Handle<bool> _ambientOcclusionEnabledSetting { "ambientOcclusionEnabled", false };
Setting::Handle<AntialiasingConfig::Mode> _antialiasingModeSetting { "antialiasingMode", AntialiasingConfig::Mode::TAA }; //Setting::Handle<AntialiasingConfig::Mode> _antialiasingModeSetting { "antialiasingMode", AntialiasingConfig::Mode::TAA };
Setting::Handle<int> _antialiasingModeSetting { "antialiasingMode", AntialiasingConfig::Mode::TAA };
Setting::Handle<float> _viewportResolutionScaleSetting { "viewportResolutionScale", 1.0f }; Setting::Handle<float> _viewportResolutionScaleSetting { "viewportResolutionScale", 1.0f };
// Force assign both setting AND runtime value to the parameter value // Force assign both setting AND runtime value to the parameter value

View file

@ -115,6 +115,7 @@ public:
FXAA, FXAA,
MODE_COUNT MODE_COUNT
}; };
Q_ENUM(Mode) // Stored as signed int.
void setAAMode(int mode); void setAAMode(int mode);
int getAAMode() const { return _mode; } int getAAMode() const { return _mode; }
@ -122,7 +123,7 @@ public:
void setDebugFXAA(bool debug) { debugFXAAX = (debug ? 0.0f : 1.0f); emit dirty();} void setDebugFXAA(bool debug) { debugFXAAX = (debug ? 0.0f : 1.0f); emit dirty();}
bool debugFXAA() const { return (debugFXAAX == 0.0f ? true : false); } bool debugFXAA() const { return (debugFXAAX == 0.0f ? true : false); }
int _mode{ TAA }; int _mode{ TAA }; // '_' prefix but not private?
float blend{ 0.25f }; float blend{ 0.25f };
float sharpen{ 0.05f }; float sharpen{ 0.05f };
@ -144,7 +145,6 @@ public:
signals: signals:
void dirty(); void dirty();
}; };
Q_DECLARE_METATYPE(AntialiasingConfig::Mode);
#define SET_BIT(bitfield, bitIndex, value) bitfield = ((bitfield) & ~(1 << (bitIndex))) | ((value) << (bitIndex)) #define SET_BIT(bitfield, bitIndex, value) bitfield = ((bitfield) & ~(1 << (bitIndex))) | ((value) << (bitIndex))
#define GET_BIT(bitfield, bitIndex) ((bitfield) & (1 << (bitIndex))) #define GET_BIT(bitfield, bitIndex) ((bitfield) & (1 << (bitIndex)))