History

fix AA in mirrors

HifiExperiments committed 2 years ago

Commit 3e617d01 parent 25945831 file · +41 −23Browse files

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

Unified · Split

interface/src/scripting/RenderScriptingInterface.cpp+41−23
@@ -292,43 +292,51 @@ void setAntialiasingModeForView(AntialiasingConfig::Mode mode, JitterSampleConfi · 291 unmodified lines
292292 }
293293 }
294294
295−void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) {
296− _renderSettingLock.withWriteLock([&] {
297− _antialiasingMode = mode;
298−
299− auto mainViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderMainView.JitterCam");
300− auto mainViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderMainView.Antialiasing");
295+void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, AntialiasingConfig::Mode mode, int depth = -1) {
296+ if (depth == -1) {
301297 auto secondViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderSecondView.JitterCam");
302298 auto secondViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderSecondView.Antialiasing");
303− if (mode != AntialiasingConfig::Mode::NONE
304− && mode != AntialiasingConfig::Mode::TAA
305− && mode != AntialiasingConfig::Mode::FXAA) {
306− _antialiasingMode = AntialiasingConfig::Mode::NONE;
299+ if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
300+ setAntialiasingModeForView(mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
307301 }
302+
303+ auto mainViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderMainView.JitterCam");
304+ auto mainViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderMainView.Antialiasing");
308305 if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {
309306 setAntialiasingModeForView( mode, mainViewJitterCamConfig, mainViewAntialiasingConfig);
310307 }
311− if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
312− setAntialiasingModeForView( mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
313− }
314308
315− _antialiasingModeSetting.set(_antialiasingMode);
316− });
317−}
309+ recursivelyUpdateAntialiasingMode("RenderMainView", mode, depth + 1);
310+ } else if (depth == RenderMirrorTask::MAX_MIRROR_DEPTH) {
311+ return;
312+ }
318313
319−float RenderScriptingInterface::getViewportResolutionScale() const {
320− return _viewportResolutionScale;
314+ for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
315+ std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);
316+ auto jitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>(mirrorTaskString + ".JitterCam");
317+ auto antialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>(mirrorTaskString + ".Antialiasing");
318+ if (jitterCamConfig && antialiasingConfig) {
319+ setAntialiasingModeForView(mode, jitterCamConfig, antialiasingConfig);
320+ recursivelyUpdateAntialiasingMode(QString::fromStdString(mirrorTaskString), mode, depth + 1);
321+ }
322+ }
321323 }
322324
323−void RenderScriptingInterface::setViewportResolutionScale(float scale) {
324− if (_viewportResolutionScale != scale) {
325− forceViewportResolutionScale(scale);
326− emit settingsChanged();
325+void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) {
326+ if ((int)mode < 0 || mode >= AntialiasingConfig::Mode::MODE_COUNT) {
327+ mode = AntialiasingConfig::Mode::NONE;
327328 }
329+
330+ _renderSettingLock.withWriteLock([&] {
331+ _antialiasingMode = mode;
332+ _antialiasingModeSetting.set(_antialiasingMode);
333+
334+ recursivelyUpdateAntialiasingMode("", _antialiasingMode);
335+ });
328336 }
329337
330338 void RenderScriptingInterface::setVerticalFieldOfView(float fieldOfView) {
331− if (getViewportResolutionScale() != fieldOfView) {
339+ if (qApp->getFieldOfView() != fieldOfView) {
332340 qApp->setFieldOfView(fieldOfView);
333341 emit settingsChanged();
334342 }
@@ -368,6 +376,16 @@ QString RenderScriptingInterface::getFullScreenScreen() const { · 33 unmodified lines
368376 return _fullScreenScreen;
369377 }
370378
379+float RenderScriptingInterface::getViewportResolutionScale() const {
380+ return _viewportResolutionScale;
381+}
382+
383+void RenderScriptingInterface::setViewportResolutionScale(float scale) {
384+ if (_viewportResolutionScale != scale) {
385+ forceViewportResolutionScale(scale);
386+ emit settingsChanged();
387+ }
388+}
371389
372390 void RenderScriptingInterface::forceViewportResolutionScale(float scale) {
373391 // just not negative values or zero