mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 09:29:02 +02:00
fix AA in mirrors
This commit is contained in:
parent
259458394e
commit
3e617d003a
1 changed files with 44 additions and 26 deletions
|
@ -292,43 +292,51 @@ void setAntialiasingModeForView(AntialiasingConfig::Mode mode, JitterSampleConfi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) {
|
void recursivelyUpdateAntialiasingMode(const QString& parentTaskName, AntialiasingConfig::Mode mode, int depth = -1) {
|
||||||
_renderSettingLock.withWriteLock([&] {
|
if (depth == -1) {
|
||||||
_antialiasingMode = mode;
|
auto secondViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderSecondView.JitterCam");
|
||||||
|
auto secondViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderSecondView.Antialiasing");
|
||||||
|
if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
|
||||||
|
setAntialiasingModeForView(mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
|
||||||
|
}
|
||||||
|
|
||||||
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");
|
||||||
auto secondViewJitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>("RenderSecondView.JitterCam");
|
|
||||||
auto secondViewAntialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>("RenderSecondView.Antialiasing");
|
|
||||||
if (mode != AntialiasingConfig::Mode::NONE
|
|
||||||
&& mode != AntialiasingConfig::Mode::TAA
|
|
||||||
&& mode != AntialiasingConfig::Mode::FXAA) {
|
|
||||||
_antialiasingMode = AntialiasingConfig::Mode::NONE;
|
|
||||||
}
|
|
||||||
if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {
|
if (mainViewJitterCamConfig && mainViewAntialiasingConfig) {
|
||||||
setAntialiasingModeForView( mode, mainViewJitterCamConfig, mainViewAntialiasingConfig);
|
setAntialiasingModeForView( mode, mainViewJitterCamConfig, mainViewAntialiasingConfig);
|
||||||
}
|
}
|
||||||
if (secondViewJitterCamConfig && secondViewAntialiasingConfig) {
|
|
||||||
setAntialiasingModeForView( mode, secondViewJitterCamConfig, secondViewAntialiasingConfig);
|
recursivelyUpdateAntialiasingMode("RenderMainView", mode, depth + 1);
|
||||||
|
} else if (depth == RenderMirrorTask::MAX_MIRROR_DEPTH) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t mirrorIndex = 0; mirrorIndex < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; mirrorIndex++) {
|
||||||
|
std::string mirrorTaskString = parentTaskName.toStdString() + ".RenderMirrorView" + std::to_string(mirrorIndex) + "Depth" + std::to_string(depth);
|
||||||
|
auto jitterCamConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<JitterSample>(mirrorTaskString + ".JitterCam");
|
||||||
|
auto antialiasingConfig = qApp->getRenderEngine()->getConfiguration()->getConfig<Antialiasing>(mirrorTaskString + ".Antialiasing");
|
||||||
|
if (jitterCamConfig && antialiasingConfig) {
|
||||||
|
setAntialiasingModeForView(mode, jitterCamConfig, antialiasingConfig);
|
||||||
|
recursivelyUpdateAntialiasingMode(QString::fromStdString(mirrorTaskString), mode, depth + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
_antialiasingModeSetting.set(_antialiasingMode);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
float RenderScriptingInterface::getViewportResolutionScale() const {
|
|
||||||
return _viewportResolutionScale;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RenderScriptingInterface::setViewportResolutionScale(float scale) {
|
|
||||||
if (_viewportResolutionScale != scale) {
|
|
||||||
forceViewportResolutionScale(scale);
|
|
||||||
emit settingsChanged();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderScriptingInterface::forceAntialiasingMode(AntialiasingConfig::Mode mode) {
|
||||||
|
if ((int)mode < 0 || mode >= AntialiasingConfig::Mode::MODE_COUNT) {
|
||||||
|
mode = AntialiasingConfig::Mode::NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_renderSettingLock.withWriteLock([&] {
|
||||||
|
_antialiasingMode = mode;
|
||||||
|
_antialiasingModeSetting.set(_antialiasingMode);
|
||||||
|
|
||||||
|
recursivelyUpdateAntialiasingMode("", _antialiasingMode);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void RenderScriptingInterface::setVerticalFieldOfView(float fieldOfView) {
|
void RenderScriptingInterface::setVerticalFieldOfView(float fieldOfView) {
|
||||||
if (getViewportResolutionScale() != fieldOfView) {
|
if (qApp->getFieldOfView() != fieldOfView) {
|
||||||
qApp->setFieldOfView(fieldOfView);
|
qApp->setFieldOfView(fieldOfView);
|
||||||
emit settingsChanged();
|
emit settingsChanged();
|
||||||
}
|
}
|
||||||
|
@ -368,6 +376,16 @@ QString RenderScriptingInterface::getFullScreenScreen() const {
|
||||||
return _fullScreenScreen;
|
return _fullScreenScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float RenderScriptingInterface::getViewportResolutionScale() const {
|
||||||
|
return _viewportResolutionScale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderScriptingInterface::setViewportResolutionScale(float scale) {
|
||||||
|
if (_viewportResolutionScale != scale) {
|
||||||
|
forceViewportResolutionScale(scale);
|
||||||
|
emit settingsChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RenderScriptingInterface::forceViewportResolutionScale(float scale) {
|
void RenderScriptingInterface::forceViewportResolutionScale(float scale) {
|
||||||
// just not negative values or zero
|
// just not negative values or zero
|
||||||
|
|
Loading…
Reference in a new issue