History

Merge remote-tracking branch 'overte/master' into application

HifiExperiments committed 1 year ago

Commit d6d9cff2 parents 343a8ac 09f8d07201 files · +4933 −2209Browse files

Showing the changes to interface/src/scripting/RenderScriptingInterface.cpp (1 of 201 files). Show all

Unified · Split

interface/src/scripting/RenderScriptingInterface.cpp+57−36
@@ -25,14 +25,14 @@ STATIC_SCRIPT_TYPES_INITIALIZER((+[](ScriptManager* manager){ · 24 unmodified lines
25 auto scriptEngine = manager->engine().get();25 auto scriptEngine = manager->engine().get();
26 26
27 scriptRegisterMetaType<RenderScriptingInterface::RenderMethod, scriptValueFromEnumClass<RenderScriptingInterface::RenderMethod>, scriptValueToEnumClass<RenderScriptingInterface::RenderMethod> >(scriptEngine, "RenderMethod");27 scriptRegisterMetaType<RenderScriptingInterface::RenderMethod, scriptValueFromEnumClass<RenderScriptingInterface::RenderMethod>, scriptValueToEnumClass<RenderScriptingInterface::RenderMethod> >(scriptEngine, "RenderMethod");
28 scriptRegisterMetaType<AntialiasingConfig::Mode, scriptValueFromEnumClass<AntialiasingConfig::Mode>, scriptValueToEnumClass<AntialiasingConfig::Mode> >(scriptEngine, "Mode");28 scriptRegisterMetaType<AntialiasingSetupConfig::Mode, scriptValueFromEnumClass<AntialiasingSetupConfig::Mode>, scriptValueToEnumClass<AntialiasingSetupConfig::Mode> >(scriptEngine, "Mode");
29}));29}));
30 30
31STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager){31STATIC_SCRIPT_INITIALIZER(+[](ScriptManager* manager){
32 auto scriptEngine = manager->engine().get();32 auto scriptEngine = manager->engine().get();
33 33
34 scriptEngine->registerEnum("Render.RenderMethod",QMetaEnum::fromType<RenderScriptingInterface::RenderMethod>());34 scriptEngine->registerEnum("Render.RenderMethod",QMetaEnum::fromType<RenderScriptingInterface::RenderMethod>());
35 scriptEngine->registerEnum("AntialiasingMode",QMetaEnum::fromType<AntialiasingConfig::Mode>());35 scriptEngine->registerEnum("AntialiasingMode",QMetaEnum::fromType<AntialiasingSetupConfig::Mode>());
36});36});
37 37
38RenderScriptingInterface* RenderScriptingInterface::getInstance() {38RenderScriptingInterface* RenderScriptingInterface::getInstance() {
@@ -56,7 +56,7 @@ void RenderScriptingInterface::loadSettings() { · 17 unmodified lines
56 _bloomEnabled = _bloomEnabledSetting.get();56 _bloomEnabled = _bloomEnabledSetting.get();
57 _ambientOcclusionEnabled = _ambientOcclusionEnabledSetting.get();57 _ambientOcclusionEnabled = _ambientOcclusionEnabledSetting.get();
58 _proceduralMaterialsEnabled = _proceduralMaterialsEnabledSetting.get();58 _proceduralMaterialsEnabled = _proceduralMaterialsEnabledSetting.get();
59 _antialiasingMode = static_cast<AntialiasingConfig::Mode>(_antialiasingModeSetting.get());59 _antialiasingMode = static_cast<AntialiasingSetupConfig::Mode>(_antialiasingModeSetting.get());
60 _viewportResolutionScale = _viewportResolutionScaleSetting.get();60 _viewportResolutionScale = _viewportResolutionScaleSetting.get();
61 _fullScreenScreen = _fullScreenScreenSetting.get();61 _fullScreenScreen = _fullScreenScreenSetting.get();
62 });62 });
@@ -95,9 +95,10 @@ void recursivelyUpdateMirrorRenderMethods(const QString& parentTaskName, int ren · 32 unmodified lines
95 return;95 return;
96 }96 }
97 97
98 auto renderConfig = qApp->getRenderEngine()->getConfiguration();
98 for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {99 for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
99 std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth) + ".DeferredForwardSwitch";100 std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth) + ".DeferredForwardSwitch";
100 auto mirrorConfig = dynamic_cast<render::SwitchConfig*>(qApp->getRenderEngine()->getConfiguration()->getConfig(QString::fromStdString(mirrorTaskString)));101 auto mirrorConfig = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig(QString::fromStdString(mirrorTaskString)));
101 if (mirrorConfig) {102 if (mirrorConfig) {
102 mirrorConfig->setBranch((int)renderMethod);103 mirrorConfig->setBranch((int)renderMethod);
103 recursivelyUpdateMirrorRenderMethods(QString::fromStdString(mirrorTaskString) + (renderMethod == 1 ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),104 recursivelyUpdateMirrorRenderMethods(QString::fromStdString(mirrorTaskString) + (renderMethod == 1 ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),
@@ -111,14 +112,20 @@ void RenderScriptingInterface::forceRenderMethod(RenderMethod renderMethod) { · 7 unmodified lines
111 _renderMethod = (int)renderMethod;112 _renderMethod = (int)renderMethod;
112 _renderMethodSetting.set((int)renderMethod);113 _renderMethodSetting.set((int)renderMethod);
113 114
115 auto renderConfig = qApp->getRenderEngine()->getConfiguration();
114 QString configName = "RenderMainView.DeferredForwardSwitch";116 QString configName = "RenderMainView.DeferredForwardSwitch";
115 auto config = dynamic_cast<render::SwitchConfig*>(qApp->getRenderEngine()->getConfiguration()->getConfig(configName));117 auto config = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig(configName));
116 if (config) {118 if (config) {
117 config->setBranch((int)renderMethod);119 config->setBranch((int)renderMethod);
118 120
119 recursivelyUpdateMirrorRenderMethods(configName + (renderMethod == RenderMethod::FORWARD ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),121 recursivelyUpdateMirrorRenderMethods(configName + (renderMethod == RenderMethod::FORWARD ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),
120 (int)renderMethod, 0);122 (int)renderMethod, 0);
121 }123 }
124
125 auto secondaryConfig = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig("RenderSecondView.DeferredForwardSwitch"));
126 if (secondaryConfig) {
127 secondaryConfig->setBranch((int)renderMethod);
128 }
122 });129 });
123}130}
124 131
@@ -128,13 +135,14 @@ QStringList RenderScriptingInterface::getRenderMethodNames() const { · 3 unmodified lines
128}135}
129 136
130void recursivelyUpdateLightingModel(const QString& parentTaskName, std::function<void(MakeLightingModelConfig *)> updateLambda, int depth = -1) {137void recursivelyUpdateLightingModel(const QString& parentTaskName, std::function<void(MakeLightingModelConfig *)> updateLambda, int depth = -1) {
138 auto renderConfig = qApp->getRenderEngine()->getConfiguration();
131 if (depth == -1) {139 if (depth == -1) {
132 auto secondaryLightingModelConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<MakeLightingModel>("RenderSecondView.LightingModel");140 auto secondaryLightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderSecondView.LightingModel");
133 if (secondaryLightingModelConfig) {141 if (secondaryLightingModelConfig) {
134 updateLambda(secondaryLightingModelConfig);142 updateLambda(secondaryLightingModelConfig);
135 }143 }
136 144
137 auto mainLightingModelConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<MakeLightingModel>("RenderMainView.LightingModel");145 auto mainLightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderMainView.LightingModel");
138 if (mainLightingModelConfig) {146 if (mainLightingModelConfig) {
139 updateLambda(mainLightingModelConfig);147 updateLambda(mainLightingModelConfig);
140 }148 }
@@ -146,7 +154,7 @@ void recursivelyUpdateLightingModel(const QString& parentTaskName, std::function · 5 unmodified lines
146 154
147 for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {155 for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
148 std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);156 std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);
149 auto lightingModelConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<MakeLightingModel>(mirrorTaskString + ".LightingModel");157 auto lightingModelConfig = renderConfig->getConfig<MakeLightingModel>(mirrorTaskString + ".LightingModel");
150 if (lightingModelConfig) {158 if (lightingModelConfig) {
151 updateLambda(lightingModelConfig);159 updateLambda(lightingModelConfig);
152 recursivelyUpdateLightingModel(QString::fromStdString(mirrorTaskString), updateLambda, depth + 1);160 recursivelyUpdateLightingModel(QString::fromStdString(mirrorTaskString), updateLambda, depth + 1);
@@ -169,7 +177,6 @@ void RenderScriptingInterface::forceShadowsEnabled(bool enabled) { · 16 unmodified lines
169 _renderSettingLock.withWriteLock([&] {177 _renderSettingLock.withWriteLock([&] {
170 _shadowsEnabled = (enabled);178 _shadowsEnabled = (enabled);
171 _shadowsEnabledSetting.set(enabled);179 _shadowsEnabledSetting.set(enabled);
172
173 Menu::getInstance()->setIsOptionChecked(MenuOption::Shadows, enabled);180 Menu::getInstance()->setIsOptionChecked(MenuOption::Shadows, enabled);
174 181
175 recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setShadow(enabled); });182 recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setShadow(enabled); });
@@ -231,7 +238,6 @@ void RenderScriptingInterface::forceAmbientOcclusionEnabled(bool enabled) { · 55 unmodified lines
231 _renderSettingLock.withWriteLock([&] {238 _renderSettingLock.withWriteLock([&] {
232 _ambientOcclusionEnabled = (enabled);239 _ambientOcclusionEnabled = (enabled);
233 _ambientOcclusionEnabledSetting.set(enabled);240 _ambientOcclusionEnabledSetting.set(enabled);
234
235 Menu::getInstance()->setIsOptionChecked(MenuOption::AmbientOcclusion, enabled);241 Menu::getInstance()->setIsOptionChecked(MenuOption::AmbientOcclusion, enabled);
236 242
237 recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setAmbientOcclusion(enabled); });243 recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setAmbientOcclusion(enabled); });
@@ -259,52 +265,53 @@ void RenderScriptingInterface::forceProceduralMaterialsEnabled(bool enabled) { · 21 unmodified lines
259 });265 });
260}266}
261 267
262AntialiasingConfig::Mode RenderScriptingInterface::getAntialiasingMode() const {268AntialiasingSetupConfig::Mode RenderScriptingInterface::getAntialiasingMode() const {
263 return _antialiasingMode;269 return _antialiasingMode;
264}270}
265 271
266void RenderScriptingInterface::setAntialiasingMode(AntialiasingConfig::Mode mode) {272void RenderScriptingInterface::setAntialiasingMode(AntialiasingSetupConfig::Mode mode) {
267 if (_antialiasingMode != mode) {273 if (_antialiasingMode != mode) {
268 forceAntialiasingMode(mode);274 forceAntialiasingMode(mode);
269 emit settingsChanged();275 emit settingsChanged();
270 }276 }
271}277}
272 278
273void setAntialiasingModeForView(AntialiasingConfig::Mode mode, JitterSampleConfig *jitterCamConfig, AntialiasingConfig *antialiasingConfig) {279void setAntialiasingModeForView(AntialiasingSetupConfig::Mode mode, AntialiasingSetupConfig *antialiasingSetupConfig, AntialiasingConfig *antialiasingConfig) {
274 switch (mode) {280 switch (mode) {
275 case AntialiasingConfig::Mode::NONE:281 case AntialiasingSetupConfig::Mode::NONE:
276 jitterCamConfig->none();282 antialiasingSetupConfig->none();
277 antialiasingConfig->blend = 1;283 antialiasingConfig->blend = 1;
278 antialiasingConfig->setDebugFXAA(false);284 antialiasingConfig->setDebugFXAA(false);
279 break;285 break;
280 case AntialiasingConfig::Mode::TAA:286 case AntialiasingSetupConfig::Mode::TAA:
281 jitterCamConfig->play();287 antialiasingSetupConfig->play();
282 antialiasingConfig->blend = 0.25;288 antialiasingConfig->blend = 0.25;
283 antialiasingConfig->setDebugFXAA(false);289 antialiasingConfig->setDebugFXAA(false);
284 break;290 break;
285 case AntialiasingConfig::Mode::FXAA:291 case AntialiasingSetupConfig::Mode::FXAA:
286 jitterCamConfig->none();292 antialiasingSetupConfig->none();
287 antialiasingConfig->blend = 0.25;293 antialiasingConfig->blend = 0.25;
288 antialiasingConfig->setDebugFXAA(true);294 antialiasingConfig->setDebugFXAA(true);
289 break;295 break;
290 default:296 default:
291 jitterCamConfig->none();297 antialiasingSetupConfig->none();
292 antialiasingConfig->blend = 1;298 antialiasingConfig->blend = 1;
293 antialiasingConfig->setDebugFXAA(false);299 antialiasingConfig->setDebugFXAA(false);
294 break;300 break;
295 }301 }
296}302}
297 303
298void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, AntialiasingConfig::Mode mode, int depth = -1) {304void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, AntialiasingSetupConfig::Mode mode, int depth = -1) {
305 auto renderConfig = qApp->getRenderEngine()->getConfiguration();
299 if (depth == -1) {306 if (depth == -1) {
300 auto secondViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderSecondView.JitterCam");307 auto secondViewJitterCamConfig = renderConfig->getConfig<AntialiasingSetup>("RenderSecondView.AntialiasingSetup");
301 auto secondViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderSecondView.Antialiasing");308 auto secondViewAntialiasingConfig = renderConfig->getConfig<Antialiasing>("RenderSecondView.Antialiasing");
302 if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {309 if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
303 setAntialiasingModeForView(mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);310 setAntialiasingModeForView(mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
304 }311 }
305 312
306 auto mainViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderMainView.JitterCam");313 auto mainViewJitterCamConfig = renderConfig->getConfig<AntialiasingSetup>("RenderMainView.AntialiasingSetup");
307 auto mainViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderMainView.Antialiasing");314 auto mainViewAntialiasingConfig = renderConfig->getConfig<Antialiasing>("RenderMainView.Antialiasing");
308 if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {315 if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {
309 setAntialiasingModeForView( mode, mainViewJitterCamConfig, mainViewAntialiasingConfig);316 setAntialiasingModeForView( mode, mainViewJitterCamConfig, mainViewAntialiasingConfig);
310 }317 }
@@ -316,8 +323,8 @@ void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, Antialiasi · 5 unmodified lines
316 323
317 for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {324 for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
318 std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);325 std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);
319 auto jitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>(mirrorTaskString + ".JitterCam");326 auto jitterCamConfig = renderConfig->getConfig<AntialiasingSetup>(mirrorTaskString + ".AntialiasingSetup");
320 auto antialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>(mirrorTaskString + ".Antialiasing");327 auto antialiasingConfig = renderConfig->getConfig<Antialiasing>(mirrorTaskString + ".Antialiasing");
321 if (jitterCamConfig && antialiasingConfig) {328 if (jitterCamConfig && antialiasingConfig) {
322 setAntialiasingModeForView(mode, jitterCamConfig, antialiasingConfig);329 setAntialiasingModeForView(mode, jitterCamConfig, antialiasingConfig);
323 recursivelyUpdateAntialiasingMode(QString::fromStdString(mirrorTaskString), mode, depth + 1);330 recursivelyUpdateAntialiasingMode(QString::fromStdString(mirrorTaskString), mode, depth + 1);
@@ -325,14 +332,14 @@ void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, Antialiasi · 1 unmodified line
325 }332 }
326}333}
327 334
328void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) {335void RenderScriptingInterface::forceAntialiasingMode(AntialiasingSetupConfig::Mode mode) {
329 if ((int)mode < 0 || mode >= AntialiasingConfig::Mode::MODE_COUNT) {336 if ((int)mode < 0 || mode >= AntialiasingSetupConfig::Mode::MODE_COUNT) {
330 mode = AntialiasingConfig::Mode::NONE;337 mode = AntialiasingSetupConfig::Mode::NONE;
331 }338 }
332 339
333 _renderSettingLock.withWriteLock([&] {340 _renderSettingLock.withWriteLock([&] {
334 _antialiasingMode = mode;341 _antialiasingMode = mode;
335 _antialiasingModeSetting.set(_antialiasingMode);342 _antialiasingModeSetting.set((int)_antialiasingMode);
336 343
337 recursivelyUpdateAntialiasingMode("", _antialiasingMode);344 recursivelyUpdateAntialiasingMode("", _antialiasingMode);
338 });345 });
@@ -345,6 +352,13 @@ void RenderScriptingInterface::setVerticalFieldOfView(float fieldOfView) { · 6 unmodified lines
345 }352 }
346}353}
347 354
355void RenderScriptingInterface::setCameraClippingEnabled(bool enabled) {
356 if (qApp->getCameraClippingEnabled() != enabled) {
357 qApp->setCameraClippingEnabled(enabled);
358 emit settingsChanged();
359 }
360}
361
348QStringList RenderScriptingInterface::getScreens() const {362QStringList RenderScriptingInterface::getScreens() const {
349 QStringList screens;363 QStringList screens;
350 364
@@ -396,20 +410,27 @@ void RenderScriptingInterface::forceViewportResolutionScale(float scale) { · 45 unmodified lines
396 return;410 return;
397 }411 }
398 _renderSettingLock.withWriteLock([&] {412 _renderSettingLock.withWriteLock([&] {
399 _viewportResolutionScale = (scale);413 _viewportResolutionScale = scale;
400 _viewportResolutionScaleSetting.set(scale);414 _viewportResolutionScaleSetting.set(scale);
401 415
402 auto renderConfig = qApp->getRenderEngine()->getConfiguration();416 auto renderConfig = qApp->getRenderEngine()->getConfiguration();
403 assert(renderConfig);417 assert(renderConfig);
404 auto deferredView = renderConfig->getConfig("RenderMainView.RenderDeferredTask");418 auto deferredView = renderConfig->getConfig("RenderMainView.RenderDeferredTask");
405 // mainView can be null if we're rendering in forward mode
406 if (deferredView) {419 if (deferredView) {
407 deferredView->setProperty("resolutionScale", _viewportResolutionScale);420 deferredView->setProperty("resolutionScale", scale);
408 }421 }
409 auto forwardView = renderConfig->getConfig("RenderMainView.RenderForwardTask");422 auto forwardView = renderConfig->getConfig("RenderMainView.RenderForwardTask");
410 // mainView can be null if we're rendering in forward mode
411 if (forwardView) {423 if (forwardView) {
412 forwardView->setProperty("resolutionScale", _viewportResolutionScale);424 forwardView->setProperty("resolutionScale", scale);
425 }
426
427 auto deferredSecondView = renderConfig->getConfig("RenderSecondView.RenderDeferredTask");
428 if (deferredSecondView) {
429 deferredSecondView->setProperty("resolutionScale", scale);
430 }
431 auto forwardSecondView = renderConfig->getConfig("RenderSecondView.RenderForwardTask");
432 if (forwardSecondView) {
433 forwardSecondView->setProperty("resolutionScale", scale);
413 }434 }
414 });435 });
415}436}