Rework launcher tabs

ini_importer_tests
Andrei Kortunov 4 months ago
parent 51426eb754
commit 6cefe2c118

@ -34,7 +34,6 @@ Launcher::GraphicsPage::GraphicsPage(QWidget* parent)
connect(standardRadioButton, &QRadioButton::toggled, this, &GraphicsPage::slotStandardToggled);
connect(screenComboBox, qOverload<int>(&QComboBox::currentIndexChanged), this, &GraphicsPage::screenChanged);
connect(framerateLimitCheckBox, &QCheckBox::toggled, this, &GraphicsPage::slotFramerateLimitToggled);
connect(shadowDistanceCheckBox, &QCheckBox::toggled, this, &GraphicsPage::slotShadowDistLimitToggled);
}
bool Launcher::GraphicsPage::setupSDL()
@ -126,58 +125,6 @@ bool Launcher::GraphicsPage::loadSettings()
framerateLimitSpinBox->setValue(fpsLimit);
}
// Lighting
int lightingMethod = 1;
switch (Settings::shaders().mLightingMethod)
{
case SceneUtil::LightingMethod::FFP:
lightingMethod = 0;
break;
case SceneUtil::LightingMethod::PerObjectUniform:
lightingMethod = 1;
break;
case SceneUtil::LightingMethod::SingleUBO:
lightingMethod = 2;
break;
}
lightingMethodComboBox->setCurrentIndex(lightingMethod);
// Shadows
if (Settings::shadows().mActorShadows)
actorShadowsCheckBox->setCheckState(Qt::Checked);
if (Settings::shadows().mPlayerShadows)
playerShadowsCheckBox->setCheckState(Qt::Checked);
if (Settings::shadows().mTerrainShadows)
terrainShadowsCheckBox->setCheckState(Qt::Checked);
if (Settings::shadows().mObjectShadows)
objectShadowsCheckBox->setCheckState(Qt::Checked);
if (Settings::shadows().mEnableIndoorShadows)
indoorShadowsCheckBox->setCheckState(Qt::Checked);
const auto& boundMethod = Settings::shadows().mComputeSceneBounds.get();
if (boundMethod == "bounds")
shadowComputeSceneBoundsComboBox->setCurrentIndex(0);
else if (boundMethod == "primitives")
shadowComputeSceneBoundsComboBox->setCurrentIndex(1);
else
shadowComputeSceneBoundsComboBox->setCurrentIndex(2);
const int shadowDistLimit = Settings::shadows().mMaximumShadowMapDistance;
if (shadowDistLimit > 0)
{
shadowDistanceCheckBox->setCheckState(Qt::Checked);
shadowDistanceSpinBox->setValue(shadowDistLimit);
}
const float shadowFadeStart = Settings::shadows().mShadowFadeStart;
if (shadowFadeStart != 0)
fadeStartSpinBox->setValue(shadowFadeStart);
const int shadowRes = Settings::shadows().mShadowMapResolution;
int shadowResIndex = shadowResolutionComboBox->findText(QString::number(shadowRes));
if (shadowResIndex != -1)
shadowResolutionComboBox->setCurrentIndex(shadowResIndex);
return true;
}
@ -220,53 +167,6 @@ void Launcher::GraphicsPage::saveSettings()
{
Settings::video().mFramerateLimit.set(0);
}
// Lighting
static constexpr std::array<SceneUtil::LightingMethod, 3> lightingMethodMap = {
SceneUtil::LightingMethod::FFP,
SceneUtil::LightingMethod::PerObjectUniform,
SceneUtil::LightingMethod::SingleUBO,
};
Settings::shaders().mLightingMethod.set(lightingMethodMap[lightingMethodComboBox->currentIndex()]);
// Shadows
const int cShadowDist = shadowDistanceCheckBox->checkState() != Qt::Unchecked ? shadowDistanceSpinBox->value() : 0;
Settings::shadows().mMaximumShadowMapDistance.set(cShadowDist);
const float cFadeStart = fadeStartSpinBox->value();
if (cShadowDist > 0)
Settings::shadows().mShadowFadeStart.set(cFadeStart);
const bool cActorShadows = actorShadowsCheckBox->checkState() != Qt::Unchecked;
const bool cObjectShadows = objectShadowsCheckBox->checkState() != Qt::Unchecked;
const bool cTerrainShadows = terrainShadowsCheckBox->checkState() != Qt::Unchecked;
const bool cPlayerShadows = playerShadowsCheckBox->checkState() != Qt::Unchecked;
if (cActorShadows || cObjectShadows || cTerrainShadows || cPlayerShadows)
{
Settings::shadows().mEnableShadows.set(true);
Settings::shadows().mActorShadows.set(cActorShadows);
Settings::shadows().mPlayerShadows.set(cPlayerShadows);
Settings::shadows().mObjectShadows.set(cObjectShadows);
Settings::shadows().mTerrainShadows.set(cTerrainShadows);
}
else
{
Settings::shadows().mEnableShadows.set(false);
Settings::shadows().mActorShadows.set(false);
Settings::shadows().mPlayerShadows.set(false);
Settings::shadows().mObjectShadows.set(false);
Settings::shadows().mTerrainShadows.set(false);
}
Settings::shadows().mEnableIndoorShadows.set(indoorShadowsCheckBox->checkState() != Qt::Unchecked);
Settings::shadows().mShadowMapResolution.set(shadowResolutionComboBox->currentText().toInt());
auto index = shadowComputeSceneBoundsComboBox->currentIndex();
if (index == 0)
Settings::shadows().mComputeSceneBounds.set("bounds");
else if (index == 1)
Settings::shadows().mComputeSceneBounds.set("primitives");
else
Settings::shadows().mComputeSceneBounds.set("none");
}
QStringList Launcher::GraphicsPage::getAvailableResolutions(int screen)
@ -377,9 +277,3 @@ void Launcher::GraphicsPage::slotFramerateLimitToggled(bool checked)
{
framerateLimitSpinBox->setEnabled(checked);
}
void Launcher::GraphicsPage::slotShadowDistLimitToggled(bool checked)
{
shadowDistanceSpinBox->setEnabled(checked);
fadeStartSpinBox->setEnabled(checked);
}

@ -31,7 +31,6 @@ namespace Launcher
void slotFullScreenChanged(int state);
void slotStandardToggled(bool checked);
void slotFramerateLimitToggled(bool checked);
void slotShadowDistLimitToggled(bool checked);
private:
QVector<QStringList> mResolutionsPerScreen;

@ -212,6 +212,55 @@ bool Launcher::SettingsPage::loadSettings()
loadSettingBool(Settings::fog().mExponentialFog, *exponentialFogCheckBox);
loadSettingBool(Settings::fog().mSkyBlending, *skyBlendingCheckBox);
skyBlendingStartComboBox->setValue(Settings::fog().mSkyBlendingStart);
int lightingMethod = 1;
switch (Settings::shaders().mLightingMethod)
{
case SceneUtil::LightingMethod::FFP:
lightingMethod = 0;
break;
case SceneUtil::LightingMethod::PerObjectUniform:
lightingMethod = 1;
break;
case SceneUtil::LightingMethod::SingleUBO:
lightingMethod = 2;
break;
}
lightingMethodComboBox->setCurrentIndex(lightingMethod);
loadSettingBool(Settings::shadows().mActorShadows, *actorShadowsCheckBox);
loadSettingBool(Settings::shadows().mPlayerShadows, *playerShadowsCheckBox);
loadSettingBool(Settings::shadows().mTerrainShadows, *terrainShadowsCheckBox);
loadSettingBool(Settings::shadows().mObjectShadows, *objectShadowsCheckBox);
loadSettingBool(Settings::shadows().mEnableIndoorShadows, *indoorShadowsCheckBox);
const auto& boundMethod = Settings::shadows().mComputeSceneBounds.get();
if (boundMethod == "bounds")
shadowComputeSceneBoundsComboBox->setCurrentIndex(0);
else if (boundMethod == "primitives")
shadowComputeSceneBoundsComboBox->setCurrentIndex(1);
else
shadowComputeSceneBoundsComboBox->setCurrentIndex(2);
const int shadowDistLimit = Settings::shadows().mMaximumShadowMapDistance;
if (shadowDistLimit > 0)
{
shadowDistanceCheckBox->setCheckState(Qt::Checked);
shadowDistanceSpinBox->setValue(shadowDistLimit);
shadowDistanceSpinBox->setEnabled(true);
fadeStartSpinBox->setEnabled(true);
}
const float shadowFadeStart = Settings::shadows().mShadowFadeStart;
if (shadowFadeStart != 0)
fadeStartSpinBox->setValue(shadowFadeStart);
const int shadowRes = Settings::shadows().mShadowMapResolution;
int shadowResIndex = shadowResolutionComboBox->findText(QString::number(shadowRes));
if (shadowResIndex != -1)
shadowResolutionComboBox->setCurrentIndex(shadowResIndex);
connect(shadowDistanceCheckBox, &QCheckBox::toggled, this, &SettingsPage::slotShadowDistLimitToggled);
}
// Audio
@ -359,6 +408,52 @@ void Launcher::SettingsPage::saveSettings()
saveSettingBool(*exponentialFogCheckBox, Settings::fog().mExponentialFog);
saveSettingBool(*skyBlendingCheckBox, Settings::fog().mSkyBlending);
Settings::fog().mSkyBlendingStart.set(skyBlendingStartComboBox->value());
static constexpr std::array<SceneUtil::LightingMethod, 3> lightingMethodMap = {
SceneUtil::LightingMethod::FFP,
SceneUtil::LightingMethod::PerObjectUniform,
SceneUtil::LightingMethod::SingleUBO,
};
Settings::shaders().mLightingMethod.set(lightingMethodMap[lightingMethodComboBox->currentIndex()]);
const int cShadowDist
= shadowDistanceCheckBox->checkState() != Qt::Unchecked ? shadowDistanceSpinBox->value() : 0;
Settings::shadows().mMaximumShadowMapDistance.set(cShadowDist);
const float cFadeStart = fadeStartSpinBox->value();
if (cShadowDist > 0)
Settings::shadows().mShadowFadeStart.set(cFadeStart);
const bool cActorShadows = actorShadowsCheckBox->checkState() != Qt::Unchecked;
const bool cObjectShadows = objectShadowsCheckBox->checkState() != Qt::Unchecked;
const bool cTerrainShadows = terrainShadowsCheckBox->checkState() != Qt::Unchecked;
const bool cPlayerShadows = playerShadowsCheckBox->checkState() != Qt::Unchecked;
if (cActorShadows || cObjectShadows || cTerrainShadows || cPlayerShadows)
{
Settings::shadows().mEnableShadows.set(true);
Settings::shadows().mActorShadows.set(cActorShadows);
Settings::shadows().mPlayerShadows.set(cPlayerShadows);
Settings::shadows().mObjectShadows.set(cObjectShadows);
Settings::shadows().mTerrainShadows.set(cTerrainShadows);
}
else
{
Settings::shadows().mEnableShadows.set(false);
Settings::shadows().mActorShadows.set(false);
Settings::shadows().mPlayerShadows.set(false);
Settings::shadows().mObjectShadows.set(false);
Settings::shadows().mTerrainShadows.set(false);
}
Settings::shadows().mEnableIndoorShadows.set(indoorShadowsCheckBox->checkState() != Qt::Unchecked);
Settings::shadows().mShadowMapResolution.set(shadowResolutionComboBox->currentText().toInt());
auto index = shadowComputeSceneBoundsComboBox->currentIndex();
if (index == 0)
Settings::shadows().mComputeSceneBounds.set("bounds");
else if (index == 1)
Settings::shadows().mComputeSceneBounds.set("primitives");
else
Settings::shadows().mComputeSceneBounds.set("none");
}
// Audio
@ -461,3 +556,9 @@ void Launcher::SettingsPage::slotSkyBlendingToggled(bool checked)
skyBlendingStartComboBox->setEnabled(checked);
skyBlendingStartLabel->setEnabled(checked);
}
void Launcher::SettingsPage::slotShadowDistLimitToggled(bool checked)
{
shadowDistanceSpinBox->setEnabled(checked);
fadeStartSpinBox->setEnabled(checked);
}

@ -32,6 +32,7 @@ namespace Launcher
void slotAnimSourcesToggled(bool checked);
void slotPostProcessToggled(bool checked);
void slotSkyBlendingToggled(bool checked);
void slotShadowDistLimitToggled(bool checked);
private:
Config::GameSettings& mGameSettings;

@ -11,459 +11,229 @@
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item alignment="Qt::AlignTop">
<widget class="QTabWidget" name="DisplayTabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="DisplayWrapper">
<attribute name="title">
<string>Display</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QGridLayout" name="gridLayout_4" columnstretch="1,1">
<item row="5" column="0">
<widget class="QLabel" name="screenLabel">
<property name="text">
<string>Screen:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="antiAliasingComboBox">
<item>
<property name="text">
<string>0</string>
</property>
</item>
<item>
<property name="text">
<string>2</string>
</property>
</item>
<item>
<property name="text">
<string>4</string>
</property>
</item>
<item>
<property name="text">
<string>8</string>
</property>
</item>
<item>
<property name="text">
<string>16</string>
</property>
</item>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="screenComboBox"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="windowModeLabel">
<property name="text">
<string>Window Mode:</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="resolutionLabel">
<property name="text">
<string>Resolution:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="vSyncLabel">
<property name="text">
<string>Vertical Sync:</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="antiAliasingLabel">
<property name="text">
<string>Anti-aliasing:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<layout class="QGridLayout" name="resolutionLayout">
<item row="1" column="2">
<layout class="QHBoxLayout" name="customResolutionLayout" stretch="1,0,1">
<item>
<widget class="QSpinBox" name="customWidthSpinBox">
<property name="minimum">
<number>800</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="multiplyLabel">
<property name="text">
<string> × </string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="customHeightSpinBox">
<property name="minimum">
<number>600</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="customRadioButton">
<property name="text">
<string>Custom:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="standardRadioButton">
<property name="text">
<string>Standard:</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="resolutionComboBox"/>
</item>
</layout>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="windowModeComboBox">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Fullscreen</string>
</property>
</item>
<item>
<property name="text">
<string>Windowed Fullscreen</string>
</property>
</item>
<item>
<property name="text">
<string>Windowed</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="windowBorderCheckBox">
<property name="text">
<string>Window Border</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="vSyncComboBox">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Disabled</string>
</property>
</item>
<item>
<property name="text">
<string>Enabled</string>
</property>
</item>
<item>
<property name="text">
<string>Adaptive</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="framerateLimitCheckBox">
<property name="text">
<string>Framerate Limit:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="framerateLimitSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="suffix">
<string> FPS</string>
</property>
<property name="decimals">
<number>1</number>
</property>
<property name="minimum">
<double>1.000000000000000</double>
</property>
<property name="maximum">
<double>1000.000000000000000</double>
</property>
<property name="singleStep">
<double>15.000000000000000</double>
</property>
<property name="value">
<double>300.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="LightingWrapper">
<attribute name="title">
<string>Lighting</string>
</attribute>
<layout class="QVBoxLayout" name="lightingLayout">
<item>
<layout class="QHBoxLayout" name="lightingMethodLayout">
<item>
<widget class="QLabel" name="lightingMethodLabel">
<property name="text">
<string>Lighting Method:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="lightingMethodComboBox">
<item>
<property name="text">
<string>legacy</string>
</property>
</item>
<item>
<property name="text">
<string>shaders compatibility</string>
</property>
</item>
<item>
<property name="text">
<string>shaders</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="ShadowWrapper">
<attribute name="title">
<string>Shadows</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="shadowsLayout" columnstretch="0,0">
<item row="0" column="0">
<widget class="QCheckBox" name="playerShadowsCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable shadows exclusively for the player character. May have a very minor performance impact.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Enable Player Shadows</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="actorShadowsCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable shadows for NPCs and creatures besides the player character. May have a minor performance impact.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Enable Actor Shadows</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="objectShadowsCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable shadows for primarily inanimate objects. May have a significant performance impact.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Enable Object Shadows</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="terrainShadowsCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable shadows for the terrain including distant terrain. May have a significant performance and shadow quality impact.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Enable Terrain Shadows</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="indoorShadowsCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Due to limitations with Morrowind's data, only actors can cast shadows indoors, which some might feel is distracting.&lt;/p&gt;&lt;p&gt;Has no effect if actor/player shadows are not enabled.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Enable Indoor Shadows</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="shadowComputeSceneBoundsLabel">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Type of &quot;compute scene bounds&quot; computation method to be used. Bounds (default) for good balance between performance and shadow quality, primitives for better looking shadows or none for no computation.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Shadow Near Far Computation Method:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="shadowComputeSceneBoundsComboBox">
<item>
<property name="text">
<string>bounds</string>
</property>
</item>
<item>
<property name="text">
<string>primitives</string>
</property>
</item>
<item>
<property name="text">
<string>none</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="shadowResolutionLabel">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The resolution of each individual shadow map. Increasing it significantly improves shadow quality but may have a minor performance impact.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Shadow Map Resolution:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="shadowResolutionComboBox">
<item>
<property name="text">
<string>512</string>
</property>
</item>
<item>
<property name="text">
<string>1024</string>
</property>
</item>
<item>
<property name="text">
<string>2048</string>
</property>
</item>
<item>
<property name="text">
<string>4096</string>
</property>
</item>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="shadowDistanceCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The distance from the camera at which shadows completely disappear.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Shadow Distance Limit:</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QSpinBox" name="shadowDistanceSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;64 game units is 1 real life yard or about 0.9 m&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="suffix">
<string> unit(s)</string>
</property>
<property name="minimum">
<number>512</number>
</property>
<property name="maximum">
<number>81920</number>
</property>
<property name="value">
<number>8192</number>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="fadeStartLabel">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The fraction of the limit above at which shadows begin to gradually fade away.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Fade Start Multiplier:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QDoubleSpinBox" name="fadeStartSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="decimals">
<number>2</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1.000000000000000</double>
</property>
<property name="value">
<double>0.900000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<item>
<widget class="QGroupBox" name="groupBox">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_4" columnstretch="1,1">
<item row="5" column="0">
<widget class="QLabel" name="screenLabel">
<property name="text">
<string>Screen</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="windowModeLabel">
<property name="text">
<string>Window mode</string>
</property>
</widget>
</item>
<item row="6" column="1">
<layout class="QGridLayout" name="resolutionLayout">
<item row="1" column="2">
<layout class="QHBoxLayout" name="customResolutionLayout" stretch="1,0,1">
<item>
<widget class="QSpinBox" name="customWidthSpinBox">
<property name="minimum">
<number>800</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="multiplyLabel">
<property name="text">
<string> × </string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="customHeightSpinBox">
<property name="minimum">
<number>600</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="customRadioButton">
<property name="text">
<string>Custom:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="standardRadioButton">
<property name="text">
<string>Standard:</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="resolutionComboBox"/>
</item>
</layout>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="antiAliasingComboBox">
<item>
<property name="text">
<string>0</string>
</property>
</item>
<item>
<property name="text">
<string>2</string>
</property>
</item>
<item>
<property name="text">
<string>4</string>
</property>
</item>
<item>
<property name="text">
<string>8</string>
</property>
</item>
<item>
<property name="text">
<string>16</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="framerateLimitCheckBox">
<property name="text">
<string>Framerate limit</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="windowBorderCheckBox">
<property name="text">
<string>Window border</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="screenComboBox"/>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="vSyncComboBox">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Disabled</string>
</property>
</item>
<item>
<property name="text">
<string>Enabled</string>
</property>
</item>
<item>
<property name="text">
<string>Adaptive</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="windowModeComboBox">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Fullscreen</string>
</property>
</item>
<item>
<property name="text">
<string>Windowed Fullscreen</string>
</property>
</item>
<item>
<property name="text">
<string>Windowed</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="resolutionLabel">
<property name="text">
<string>Resolution</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="framerateLimitSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="suffix">
<string> FPS</string>
</property>
<property name="decimals">
<number>1</number>
</property>
<property name="minimum">
<double>1.000000000000000</double>
</property>
<property name="maximum">
<double>1000.000000000000000</double>
</property>
<property name="singleStep">
<double>15.000000000000000</double>
</property>
<property name="value">
<double>300.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="antiAliasingLabel">
<property name="text">
<string>Anti-aliasing</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="vSyncLabel">
<property name="text">
<string>Vertical synchronization</string>
</property>
</widget>
</item>
<item row="7" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>514</width>
<width>515</width>
<height>397</height>
</rect>
</property>
@ -129,16 +129,22 @@ to default Morrowind fonts. Check this box if you still prefer original fonts ov
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>

@ -7,20 +7,20 @@
<x>0</x>
<y>0</y>
<width>720</width>
<height>565</height>
<height>635</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>720</width>
<height>565</height>
<height>635</height>
</size>
</property>
<property name="windowTitle">
<string>OpenMW Launcher</string>
</property>
<property name="windowIcon">
<iconset resource="../launcher/launcher.qrc">
<iconset resource="../../../files/launcher/launcher.qrc">
<normaloff>:/images/openmw.png</normaloff>:/images/openmw.png</iconset>
</property>
<widget class="QWidget" name="centralwidget">
@ -120,7 +120,7 @@ QToolButton {
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../launcher/launcher.qrc">
<iconset resource="../../../files/launcher/launcher.qrc">
<normaloff>:/images/openmw-plugin.png</normaloff>:/images/openmw-plugin.png</iconset>
</property>
<property name="text">
@ -141,11 +141,11 @@ QToolButton {
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../launcher/launcher.qrc">
<iconset resource="../../../files/launcher/launcher.qrc">
<normaloff>:/images/preferences-video.png</normaloff>:/images/preferences-video.png</iconset>
</property>
<property name="text">
<string>Graphics</string>
<string>Display</string>
</property>
<property name="toolTip">
<string>Allows to change graphics settings</string>
@ -156,7 +156,7 @@ QToolButton {
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../launcher/launcher.qrc">
<iconset resource="../../../files/launcher/launcher.qrc">
<normaloff>:/images/preferences.png</normaloff>:/images/preferences.png</iconset>
</property>
<property name="text">
@ -171,7 +171,7 @@ QToolButton {
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../launcher/launcher.qrc">
<iconset resource="../../../files/launcher/launcher.qrc">
<normaloff>:/images/preferences-advanced.png</normaloff>:/images/preferences-advanced.png</iconset>
</property>
<property name="text">
@ -183,7 +183,7 @@ QToolButton {
</action>
</widget>
<resources>
<include location="../launcher/launcher.qrc"/>
<include location="../../../files/launcher/launcher.qrc"/>
</resources>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

@ -11,7 +11,7 @@ scaling factor
This setting scales GUI windows.
A value of 1.0 results in the normal scale. Larger values are useful to increase the scale of the GUI for high resolution displays.
This setting can be configured in the Interface section of the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
font size
---------
@ -24,7 +24,7 @@ Allows to specify glyph size for in-game fonts.
Note: default bitmap fonts are supposed to work with 16px size, otherwise glyphs will be blurry.
TrueType fonts do not have this issue.
This setting can be configured in the Interface section of the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
menu transparency
-----------------
@ -65,7 +65,7 @@ The Bethesda provided assets have a 4:3 aspect ratio, but other assets are permi
If this setting is false, the assets will be centered in the mentioned 4:3 aspect ratio,
with black bars filling the remainder of the screen.
This setting can be configured in the Interface section of the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
subtitles
---------

@ -125,6 +125,8 @@ By default, the fog becomes thicker proportionally to your distance from the cli
This setting makes the fog use the actual eye point distance (or so called Euclidean distance) to calculate the fog, which makes the fog look less artificial, especially if you have a wide FOV.
Note that the rendering will act as if you have 'force shaders' option enabled with this on, which means that shaders will be used to render all objects and the terrain.
This setting can be controlled in the Settings tab of the launcher.
exponential fog
---------------
@ -135,6 +137,8 @@ exponential fog
Similar to "radial fog" but uses an exponential formula for the fog.
Note that the rendering will act as if you have 'force shaders' option enabled with this on, which means that shaders will be used to render all objects and the terrain.
This setting can be controlled in the Settings tab of the launcher.
sky blending
------------
@ -146,6 +150,8 @@ Whether to use blending with the sky for everything that is close to the clippin
If enabled the clipping plane becomes invisible.
Note that the rendering will act as if you have 'force shaders' option enabled with this on, which means that shaders will be used to render all objects and the terrain.
This setting can be controlled in the Settings tab of the launcher.
sky blending start
------------------
@ -155,6 +161,8 @@ sky blending start
The fraction of the maximum distance at which blending with the sky starts.
This setting can be controlled in the Settings tab of the launcher.
sky rtt resolution
------------------

@ -16,7 +16,7 @@ If the setting is 2, the crosshair is the colour of the colour crosshair owned s
If the setting is 3, both the tool tip background and the crosshair are coloured.
The crosshair is not visible if crosshair is false.
This setting can be configured in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
show projectile damage
----------------------
@ -27,7 +27,7 @@ show projectile damage
If this setting is true, the damage bonus of arrows and bolts will show on their tooltip.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
show melee info
---------------
@ -38,7 +38,7 @@ show melee info
If this setting is true, the reach and speed of weapons will show on their tooltip.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
show enchant chance
-------------------
@ -49,7 +49,7 @@ show enchant chance
Whether or not the chance of success will be displayed in the enchanting menu.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
best attack
-----------
@ -78,7 +78,7 @@ If this setting is false, player has to wait until end of death animation in all
Makes using of summoned creatures exploit (looting summoned Dremoras and Golden Saints for expensive weapons) a lot harder.
Conflicts with mannequin mods, which use SkipAnim to prevent end of death animation.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
difficulty
----------
@ -123,7 +123,7 @@ and the caster will absorb their own stat resulting in no effect on either the c
This makes the gameplay as a mage easier, but these spells become imbalanced.
This is how Morrowind behaves.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
classic calm spells behavior
----------------------------------------
@ -137,7 +137,7 @@ This means that a Calm spell of any magnitude will always take actors out of com
This is how Morrowind behaves without the Morrowind Code Patch. If this setting is off,
Calm spells will only take their target out of combat once. Allowing them to re-engage if the spell was not sufficiently strong.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
use magic item animations
-------------------------
@ -161,7 +161,7 @@ show effect duration
Show the remaining duration of magic effects and lights if this setting is true.
The remaining duration is displayed in the tooltip by hovering over the magical effect.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
enchanted weapons are magical
-----------------------------
@ -173,7 +173,7 @@ enchanted weapons are magical
Make enchanted weapons without Magical flag bypass normal weapons resistance (and weakness) certain creatures have.
This is how Morrowind behaves.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
prevent merchant equipping
--------------------------
@ -184,7 +184,7 @@ prevent merchant equipping
Prevent merchants from equipping items that are sold to them.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
followers attack on sight
-------------------------
@ -196,7 +196,8 @@ followers attack on sight
Make player followers and escorters start combat with enemies who have started combat with them or the player.
Otherwise they wait for the enemies or the player to do an attack first.
Please note this setting has not been extensively tested and could have side effects with certain quests.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
shield sheathing
----------------
@ -214,6 +215,8 @@ To avoid conflicts, you can use _sh mesh without "Bip01 Sheath" node for such "s
Also you can use an _sh node with empty "Bip01 Sheath" node.
In this case the engine will use basic shield model, but will use transformations from the "Bip01 Sheath" node.
This setting can be controlled in the Settings tab of the launcher.
weapon sheathing
----------------
@ -226,6 +229,8 @@ If this setting is true, OpenMW will utilize weapon sheathing-compatible assets
To make use of this, you need to have an xbase_anim_sh.nif file with weapon bones that will be injected into the skeleton.
Additional _sh suffix models are not essential for weapon sheathing to work but will act as quivers or scabbards for the weapons they correspond to.
This setting can be controlled in the Settings tab of the launcher.
use additional anim sources
---------------------------
@ -238,7 +243,8 @@ For example, if the main animation mesh has name Meshes/x.nif,
the engine will load all KF-files from Animations/x folder and its child folders.
This can be useful if you want to use several animation replacers without merging them.
Attention: animations from AnimKit have their own format and are not supposed to be directly loaded in-game!
This setting can only be configured by editing the settings configuration file.
This setting can be controlled in the Settings tab of the launcher.
barter disposition change is permanent
--------------------------------------
@ -251,7 +257,7 @@ If this setting is true,
disposition change of merchants caused by trading will be permanent and won't be discarded upon exiting dialogue with them.
This imitates the option that Morrowind Code Patch offers.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
only appropriate ammunition bypasses resistance
-----------------------------------------------
@ -264,7 +270,7 @@ If this setting is true, you will have to use the appropriate ammunition to bypa
An enchanted bow with chitin arrows will no longer be enough for the purpose, while a steel longbow with glass arrows will still work.
This was previously the default engine behavior that diverged from Morrowind design.
This setting can be toggled in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
strength influences hand to hand
--------------------------------
@ -454,6 +460,8 @@ Some mods add harvestable container models. When this setting is enabled, activa
When this setting is turned off or when activating a regular container, the menu will open as usual.
This setting can be controlled in the Settings tab of the launcher.
allow actors to follow over water surface
-----------------------------------------
@ -489,6 +497,8 @@ day night switches
Some mods add models which change visuals based on time of day. When this setting is enabled, supporting models will automatically make use of Day/night state.
This setting can be controlled in the Settings tab of the launcher.
unarmed creature attacks damage armor
-------------------------------------
@ -500,7 +510,7 @@ If disabled unarmed creature attacks do not reduce armor condition, just as with
If enabled unarmed creature attacks reduce armor condition, the same as attacks from NPCs and armed creatures.
This setting can be controlled in the Settings tab of the launcher, under Game Mechanics.
This setting can be controlled in the Settings tab of the launcher.
actor collision shape type
--------------------------
@ -518,6 +528,8 @@ will not be useful with another.
* 1: Rotating box
* 2: Cylinder
This setting can be controlled in the Settings tab of the launcher.
player movement ignores animation
---------------------------------
@ -528,4 +540,4 @@ player movement ignores animation
In third person, the camera will sway along with the movement animations of the player.
Enabling this option disables this swaying by having the player character move independently of its animation.
This setting can be controlled in the Settings tab of the launcher, under Visuals.
This setting can be controlled in the Settings tab of the launcher.

@ -29,7 +29,7 @@ Specify the format for screen shots taken by pressing the screen shot key (bound
This setting should be the file extension commonly associated with the desired format.
The formats supported will be determined at compilation, but "jpg", "png", and "tga" should be allowed.
This setting can be configured in the Settings tab of the launcher.
This setting can be controlled in the Settings tab of the launcher.
texture mag filter
------------------
@ -69,6 +69,8 @@ notify on saved screenshot
Show message box when screenshot is saved to a file.
This setting can be controlled in the Settings tab of the launcher.
preferred locales
-----------------

@ -16,6 +16,8 @@ Unlike in the original Morrowind engine, 'Shadow Mapping' is used, which can hav
Bear in mind that this will force OpenMW to use shaders as if :ref:`force shaders` was enabled.
A keen developer may be able to implement compatibility with fixed-function mode using the advice of `this post <https://github.com/OpenMW/openmw/pull/1547#issuecomment-369657381>`_, but it may be more difficult than it seems.
This setting can be controlled in the Settings tab of the launcher.
number of shadow maps
---------------------
@ -38,6 +40,8 @@ The maximum distance from the camera shadows cover, limiting their overall area
and improving their quality and performance at the cost of removing shadows of distant objects or terrain.
Set this to a non-positive value to remove the limit.
This setting can be controlled in the Settings tab of the launcher.
shadow fade start
-------------------
@ -49,6 +53,8 @@ The fraction of the maximum shadow map distance at which the shadows will begin
Tweaking it will make the transition proportionally more or less smooth.
This setting has no effect if the maximum shadow map distance is non-positive (infinite).
This setting can be controlled in the Settings tab of the launcher.
allow shadow map overlap
------------------------
@ -90,6 +96,8 @@ compute scene bounds
Two different ways to make better use of shadow map(s) by making them cover a smaller area.
While primitives give better shadows at expense of more CPU, bounds gives better performance overall but with lower quality shadows. There is also the ability to disable this computation with none.
This setting can be controlled in the Settings tab of the launcher.
shadow map resolution
---------------------
@ -101,6 +109,8 @@ Control How large to make the shadow map(s).
Higher values increase GPU load but can produce better-looking results.
Power-of-two values may turn out to be faster than smaller values which are not powers of two on some GPU/driver combinations.
This setting can be controlled in the Settings tab of the launcher.
actor shadows
-------------
@ -111,6 +121,8 @@ actor shadows
Allow actors to cast shadows.
Potentially decreases performance.
This setting can be controlled in the Settings tab of the launcher.
player shadows
--------------
@ -121,6 +133,8 @@ player shadows
Allow the player to cast shadows.
Potentially decreases performance.
This setting can be controlled in the Settings tab of the launcher.
terrain shadows
---------------
@ -131,6 +145,8 @@ terrain shadows
Allow terrain to cast shadows.
Potentially decreases performance.
This setting can be controlled in the Settings tab of the launcher.
object shadows
--------------
@ -141,6 +157,8 @@ object shadows
Allow static objects to cast shadows.
Potentially decreases performance.
This setting can be controlled in the Settings tab of the launcher.
enable indoor shadows
---------------------
@ -152,6 +170,8 @@ Allow shadows indoors.
Due to limitations with Morrowind's data, only actors can cast shadows indoors without the ceiling casting a shadow everywhere.
Some might feel this is distracting as shadows can be cast through other objects, so indoor shadows can be disabled completely.
This setting can be controlled in the Settings tab of the launcher.
Expert settings
***************

@ -13,7 +13,7 @@ which should usually be sufficient, but if you need to explicitly specify a devi
The names of detected devices can be found in the openmw.log file in your configuration directory.
This setting can be configured by editing the settings configuration file, or in the Audio tab of the OpenMW Launcher.
This setting can be controlled in the Settings tab of the launcher.
master volume
-------------
@ -111,7 +111,8 @@ Enabling HRTF may also require an OpenAL Soft version greater than 1.17.0,
and possibly some operating system configuration.
A value of 0 disables HRTF processing, while a value of 1 explicitly enables HRTF processing.
The default value is -1, which should enable the feature automatically for most users when possible.
This setting can be configured by editing the settings configuration file, or in the Audio tab of the OpenMW Launcher.
This setting can be controlled in the Settings tab of the launcher.
hrtf
----
@ -123,6 +124,6 @@ hrtf
This setting specifies which HRTF profile to use when HRTF is enabled. Blank means use the default.
This setting has no effect if HRTF is not enabled based on the hrtf enable setting.
Allowed values for this field are enumerated in openmw.log file is an HRTF enabled audio system is installed.
The default value is empty, which uses the default profile.
This setting can be configured by editing the settings configuration file, or in the Audio tab of the OpenMW Launcher.
This setting can be controlled in the Settings tab of the launcher.

@ -13,8 +13,8 @@ Larger values produce more detailed images within the constraints of your graphi
but may reduce the frame rate.
The window resolution can be selected from a menu of common screen sizes
in the Video tab of the Video Panel of the Options menu, or in the Graphics tab of the OpenMW Launcher.
The horizontal resolution can also be set to a custom value in the Graphics tab of the OpenMW Launcher.
in the Video tab of the Video Panel of the Options menu, or in the Display tab of the launcher.
The horizontal resolution can also be set to a custom value in the Display tab of the launcher.
resolution y
------------
@ -28,8 +28,8 @@ Larger values produce more detailed images within the constraints of your graphi
but may reduce the frame rate.
The window resolution can be selected from a menu of common screen sizes
in the Video tab of the Video Panel of the Options menu, or in the Graphics tab of the OpenMW Launcher.
The vertical resolution can also be set to a custom value in the Graphics tab of the OpenMW Launcher.
in the Video tab of the Video Panel of the Options menu, or in the Display tab of the launcher.
The vertical resolution can also be set to a custom value in the Display tab of the launcher.
window mode
-----------
@ -48,7 +48,7 @@ This setting determines the window mode.
This setting can be toggled in game using the dropdown list in the Video tab of the Video panel in the Options menu.
It can also be toggled with the window mode dropdown in the Graphics tab of the OpenMW Launcher.
It can also be toggled with the window mode dropdown in the Display tab of the launcher.
screen
------
@ -63,7 +63,7 @@ since this is the only way to control which screen is used,
but it can also be used to control which screen a normal window or a borderless window opens on as well.
The screens are numbered in increasing order, beginning with 0.
This setting can be selected from a pull down menu in the Graphics tab of the OpenMW Launcher,
This setting can be selected from a pull down menu in the Display tab of the OpenMW Launcher,
but cannot be changed during game play.
minimize on focus loss
@ -143,7 +143,7 @@ cannot reach your display's refresh rate. This prevents the input lag from becom
Some hardware might not support this mode, in which case traditional vsync will be used.
This setting can be adjusted in game using the VSync combo box in the Video tab of the Video panel in the Options menu.
It can also be changed by toggling the Vertical Sync combo box in the Graphics tab of the OpenMW Launcher.
It can also be changed by toggling the Vertical Sync combo box in the Display tab of the launcher.
framerate limit
---------------

Loading…
Cancel
Save