History

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

HifiExperiments committed 2 years ago

Commit ce7c3042 parents f2ebca9 c660c22746 files · +27419 −26825Browse files

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

Unified · Split

interface/src/scripting/RenderScriptingInterface.cpp+170−53
@@ -9,12 +9,15 @@ · 8 unmodified lines
99 //
1010 #include "RenderScriptingInterface.h"
1111
12+#include <RenderCommonTask.h>
1213 #include <ScriptEngineCast.h>
1314
1415 #include "LightingModel.h"
1516 #include <QScreen>
1617 #include "ScreenName.h"
1718
19+#include <procedural/Procedural.h>
20+
1821 STATIC_SCRIPT_TYPES_INITIALIZER((+[](ScriptManager* manager){
1922 auto scriptEngine = manager->engine().get();
2023
@@ -42,16 +45,17 @@ RenderScriptingInterface::RenderScriptingInterface() { · 21 unmodified lines
4245 });
4346 }
4447
45−
4648 void RenderScriptingInterface::loadSettings() {
4749 _renderSettingLock.withReadLock([&] {
48− _renderMethod = (_renderMethodSetting.get());
49− _shadowsEnabled = (_shadowsEnabledSetting.get());
50− _ambientOcclusionEnabled = (_ambientOcclusionEnabledSetting.get());
51− //_antialiasingMode = (_antialiasingModeSetting.get());
50+ _renderMethod = _renderMethodSetting.get();
51+ _shadowsEnabled = _shadowsEnabledSetting.get();
52+ _hazeEnabled = _hazeEnabledSetting.get();
53+ _bloomEnabled = _bloomEnabledSetting.get();
54+ _ambientOcclusionEnabled = _ambientOcclusionEnabledSetting.get();
55+ _proceduralMaterialsEnabled = _proceduralMaterialsEnabledSetting.get();
5256 _antialiasingMode = static_cast<AntialiasingSetupConfig::Mode>(_antialiasingModeSetting.get());
53− _viewportResolutionScale = (_viewportResolutionScaleSetting.get());
54− _fullScreenScreen = (_fullScreenScreenSetting.get());
57+ _viewportResolutionScale = _viewportResolutionScaleSetting.get();
58+ _fullScreenScreen = _fullScreenScreenSetting.get();
5559 });
5660
5761 // If full screen screen is not initialized, or set to an invalid value,
@@ -64,7 +68,10 @@ void RenderScriptingInterface::loadSettings() { · 6 unmodified lines
6468
6569 forceRenderMethod((RenderMethod)_renderMethod);
6670 forceShadowsEnabled(_shadowsEnabled);
71+ forceHazeEnabled(_hazeEnabled);
72+ forceBloomEnabled(_bloomEnabled);
6773 forceAmbientOcclusionEnabled(_ambientOcclusionEnabled);
74+ forceProceduralMaterialsEnabled(_proceduralMaterialsEnabled);
6875 forceAntialiasingMode(_antialiasingMode);
6976 forceViewportResolutionScale(_viewportResolutionScale);
7077 }
@@ -79,15 +86,37 @@ void RenderScriptingInterface::setRenderMethod(RenderMethod renderMethod) { · 8 unmodified lines
7986 emit settingsChanged();
8087 }
8188 }
89+
90+void recursivelyUpdateMirrorRenderMethods(const QString& parentTaskName, int renderMethod, int depth) {
91+ if (depth == RenderMirrorTask::MAX_MIRROR_DEPTH) {
92+ return;
93+ }
94+
95+ auto renderConfig = qApp->getRenderEngine()->getConfiguration();
96+ for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
97+ std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth) + ".DeferredForwardSwitch";
98+ auto mirrorConfig = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig(QString::fromStdString(mirrorTaskString)));
99+ if (mirrorConfig) {
100+ mirrorConfig->setBranch((int)renderMethod);
101+ recursivelyUpdateMirrorRenderMethods(QString::fromStdString(mirrorTaskString) + (renderMethod == 1 ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),
102+ renderMethod, depth + 1);
103+ }
104+ }
105+}
106+
82107 void RenderScriptingInterface::forceRenderMethod(RenderMethod renderMethod) {
83108 _renderSettingLock.withWriteLock([&] {
84109 _renderMethod = (int)renderMethod;
85110 _renderMethodSetting.set((int)renderMethod);
86111
87112 auto renderConfig = qApp->getRenderEngine()->getConfiguration();
88− auto config = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig("RenderMainView.DeferredForwardSwitch"));
113+ QString configName = "RenderMainView.DeferredForwardSwitch";
114+ auto config = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig(configName));
89115 if (config) {
90116 config->setBranch((int)renderMethod);
117+
118+ recursivelyUpdateMirrorRenderMethods(configName + (renderMethod == RenderMethod::FORWARD ? ".RenderForwardTask" : ".RenderShadowsAndDeferredTask.RenderDeferredTask"),
119+ (int)renderMethod, 0);
91120 }
92121
93122 auto secondaryConfig = dynamic_cast<render::SwitchConfig*>(renderConfig->getConfig("RenderSecondView.DeferredForwardSwitch"));
@@ -102,6 +131,34 @@ QStringList RenderScriptingInterface::getRenderMethodNames() const { · 8 unmodified lines
102131 return refrenderMethodNames;
103132 }
104133
134+void recursivelyUpdateLightingModel(const QString& parentTaskName, std::function<void(MakeLightingModelConfig *)> updateLambda, int depth = -1) {
135+ auto renderConfig = qApp->getRenderEngine()->getConfiguration();
136+ if (depth == -1) {
137+ auto secondaryLightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderSecondView.LightingModel");
138+ if (secondaryLightingModelConfig) {
139+ updateLambda(secondaryLightingModelConfig);
140+ }
141+
142+ auto mainLightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderMainView.LightingModel");
143+ if (mainLightingModelConfig) {
144+ updateLambda(mainLightingModelConfig);
145+ }
146+
147+ recursivelyUpdateLightingModel("RenderMainView", updateLambda, depth + 1);
148+ } else if (depth == RenderMirrorTask::MAX_MIRROR_DEPTH) {
149+ return;
150+ }
151+
152+ for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
153+ std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);
154+ auto lightingModelConfig = renderConfig->getConfig<MakeLightingModel>(mirrorTaskString + ".LightingModel");
155+ if (lightingModelConfig) {
156+ updateLambda(lightingModelConfig);
157+ recursivelyUpdateLightingModel(QString::fromStdString(mirrorTaskString), updateLambda, depth + 1);
158+ }
159+ }
160+}
161+
105162 bool RenderScriptingInterface::getShadowsEnabled() const {
106163 return _shadowsEnabled;
107164 }
@@ -119,16 +176,47 @@ void RenderScriptingInterface::forceShadowsEnabled(bool enabled) { · 11 unmodified lines
119176 _shadowsEnabledSetting.set(enabled);
120177 Menu::getInstance()->setIsOptionChecked(MenuOption::Shadows, enabled);
121178
122− auto renderConfig = qApp->getRenderEngine()->getConfiguration();
123− assert(renderConfig);
124− auto lightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderMainView.LightingModel");
125− if (lightingModelConfig) {
126− lightingModelConfig->setShadow(enabled);
127− }
128− auto secondaryLightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderSecondView.LightingModel");
129− if (secondaryLightingModelConfig) {
130− secondaryLightingModelConfig->setShadow(enabled);
131− }
179+ recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setShadow(enabled); });
180+ });
181+}
182+
183+bool RenderScriptingInterface::getHazeEnabled() const {
184+ return _hazeEnabled;
185+}
186+
187+void RenderScriptingInterface::setHazeEnabled(bool enabled) {
188+ if (_hazeEnabled != enabled) {
189+ forceHazeEnabled(enabled);
190+ emit settingsChanged();
191+ }
192+}
193+
194+void RenderScriptingInterface::forceHazeEnabled(bool enabled) {
195+ _renderSettingLock.withWriteLock([&] {
196+ _hazeEnabled = (enabled);
197+ _hazeEnabledSetting.set(enabled);
198+
199+ recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setHaze(enabled); });
200+ });
201+}
202+
203+bool RenderScriptingInterface::getBloomEnabled() const {
204+ return _bloomEnabled;
205+}
206+
207+void RenderScriptingInterface::setBloomEnabled(bool enabled) {
208+ if (_bloomEnabled != enabled) {
209+ forceBloomEnabled(enabled);
210+ emit settingsChanged();
211+ }
212+}
213+
214+void RenderScriptingInterface::forceBloomEnabled(bool enabled) {
215+ _renderSettingLock.withWriteLock([&] {
216+ _bloomEnabled = (enabled);
217+ _bloomEnabledSetting.set(enabled);
218+
219+ recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setBloom(enabled); });
132220 });
133221 }
134222
@@ -149,16 +237,28 @@ void RenderScriptingInterface::forceAmbientOcclusionEnabled(bool enabled) { · 14 unmodified lines
149237 _ambientOcclusionEnabledSetting.set(enabled);
150238 Menu::getInstance()->setIsOptionChecked(MenuOption::AmbientOcclusion, enabled);
151239
152− auto renderConfig = qApp->getRenderEngine()->getConfiguration();
153− auto lightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderMainView.LightingModel");
154− if (lightingModelConfig) {
155− lightingModelConfig->setAmbientOcclusion(enabled);
156− }
240+ recursivelyUpdateLightingModel("", [enabled] (MakeLightingModelConfig *config) { config->setAmbientOcclusion(enabled); });
241+ });
242+}
157243
158− auto secondaryLightingModelConfig = renderConfig->getConfig<MakeLightingModel>("RenderSecondView.LightingModel");
159− if (secondaryLightingModelConfig) {
160− secondaryLightingModelConfig->setAmbientOcclusion(enabled);
161− }
244+bool RenderScriptingInterface::getProceduralMaterialsEnabled() const {
245+ return _proceduralMaterialsEnabled;
246+}
247+
248+void RenderScriptingInterface::setProceduralMaterialsEnabled(bool enabled) {
249+ if (_proceduralMaterialsEnabled != enabled) {
250+ forceProceduralMaterialsEnabled(enabled);
251+ emit settingsChanged();
252+ }
253+}
254+
255+void RenderScriptingInterface::forceProceduralMaterialsEnabled(bool enabled) {
256+ _renderSettingLock.withWriteLock([&] {
257+ _proceduralMaterialsEnabled = (enabled);
258+ _proceduralMaterialsEnabledSetting.set(enabled);
259+
260+ Menu::getInstance()->setIsOptionChecked(MenuOption::MaterialProceduralShaders, enabled);
261+ Procedural::enableProceduralShaders = enabled;
162262 });
163263 }
164264
@@ -198,45 +298,52 @@ void setAntialiasingModeForView(AntialiasingSetupConfig::Mode mode, Antialiasing · 33 unmodified lines
198298 }
199299 }
200300
201−void RenderScriptingInterface::forceAntialiasingMode(AntialiasingSetupConfig::Mode mode) {
202− _renderSettingLock.withWriteLock([&] {
203− _antialiasingMode = mode;
204−
205− auto renderConfig = qApp->getRenderEngine()->getConfiguration();
206− auto mainViewJitterCamConfig = renderConfig->getConfig<AntialiasingSetup>("RenderMainView.JitterCam");
207− auto mainViewAntialiasingConfig = renderConfig->getConfig<Antialiasing>("RenderMainView.Antialiasing");
208− auto secondViewJitterCamConfig = renderConfig->getConfig<AntialiasingSetup>("RenderSecondView.JitterCam");
301+void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, AntialiasingSetupConfig::Mode mode, int depth = -1) {
302+ auto renderConfig = qApp->getRenderEngine()->getConfiguration();
303+ if (depth == -1) {
304+ auto secondViewJitterCamConfig = renderConfig->getConfig<AntialiasingSetup>("RenderSecondView.AntialiasingSetup");
209305 auto secondViewAntialiasingConfig = renderConfig->getConfig<Antialiasing>("RenderSecondView.Antialiasing");
210− if (mode != AntialiasingSetupConfig::Mode::NONE
211− && mode != AntialiasingSetupConfig::Mode::TAA
212− && mode != AntialiasingSetupConfig::Mode::FXAA) {
213− _antialiasingMode = AntialiasingSetupConfig::Mode::NONE;
306+ if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
307+ setAntialiasingModeForView(mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
214308 }
309+
310+ auto mainViewJitterCamConfig = renderConfig->getConfig<AntialiasingSetup>("RenderMainView.AntialiasingSetup");
311+ auto mainViewAntialiasingConfig = renderConfig->getConfig<Antialiasing>("RenderMainView.Antialiasing");
215312 if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {
216313 setAntialiasingModeForView( mode, mainViewJitterCamConfig, mainViewAntialiasingConfig);
217314 }
218− if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
219− setAntialiasingModeForView( mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
220− }
221−
222− _antialiasingModeSetting.set((int)_antialiasingMode);
223− });
224−}
225315
316+ recursivelyUpdateAntialiasingMode("RenderMainView", mode, depth + 1);
317+ } else if (depth == RenderMirrorTask::MAX_MIRROR_DEPTH) {
318+ return;
319+ }
226320
227−float RenderScriptingInterface::getViewportResolutionScale() const {
228− return _viewportResolutionScale;
321+ for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
322+ std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);
323+ auto jitterCamConfig = renderConfig->getConfig<AntialiasingSetup>(mirrorTaskString + ".AntialiasingSetup");
324+ auto antialiasingConfig = renderConfig->getConfig<Antialiasing>(mirrorTaskString + ".Antialiasing");
325+ if (jitterCamConfig && antialiasingConfig) {
326+ setAntialiasingModeForView(mode, jitterCamConfig, antialiasingConfig);
327+ recursivelyUpdateAntialiasingMode(QString::fromStdString(mirrorTaskString), mode, depth + 1);
328+ }
329+ }
229330 }
230331
231−void RenderScriptingInterface::setViewportResolutionScale(float scale) {
232− if (_viewportResolutionScale != scale) {
233− forceViewportResolutionScale(scale);
234− emit settingsChanged();
332+void RenderScriptingInterface::forceAntialiasingMode(AntialiasingSetupConfig::Mode mode) {
333+ if ((int)mode < 0 || mode >= AntialiasingSetupConfig::Mode::MODE_COUNT) {
334+ mode = AntialiasingSetupConfig::Mode::NONE;
235335 }
336+
337+ _renderSettingLock.withWriteLock([&] {
338+ _antialiasingMode = mode;
339+ _antialiasingModeSetting.set((int)_antialiasingMode);
340+
341+ recursivelyUpdateAntialiasingMode("", _antialiasingMode);
342+ });
236343 }
237344
238345 void RenderScriptingInterface::setVerticalFieldOfView(float fieldOfView) {
239− if (getViewportResolutionScale() != fieldOfView) {
346+ if (qApp->getFieldOfView() != fieldOfView) {
240347 qApp->setFieldOfView(fieldOfView);
241348 emit settingsChanged();
242349 }
@@ -276,6 +383,16 @@ QString RenderScriptingInterface::getFullScreenScreen() const { · 33 unmodified lines
276383 return _fullScreenScreen;
277384 }
278385
386+float RenderScriptingInterface::getViewportResolutionScale() const {
387+ return _viewportResolutionScale;
388+}
389+
390+void RenderScriptingInterface::setViewportResolutionScale(float scale) {
391+ if (_viewportResolutionScale != scale) {
392+ forceViewportResolutionScale(scale);
393+ emit settingsChanged();
394+ }
395+}
279396
280397 void RenderScriptingInterface::forceViewportResolutionScale(float scale) {
281398 // just not negative values or zero

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t