Added MSAA to settings screen
parent
90756f8b34
commit
e2ebcb769e
|
@ -420,6 +420,18 @@ msgstr ""
|
||||||
msgid "Autosave slots\\How many autosave slots you'll have"
|
msgid "Autosave slots\\How many autosave slots you'll have"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Texture filtering\\Texture filtering"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Mipmap level\\Mipmap level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Anisotropy level\\Anisotropy level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "MSAA\\Multisample anti-aliasing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Standard controls\\Standard key functions"
|
msgid "Standard controls\\Standard key functions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
12
po/de.po
12
po/de.po
|
@ -133,6 +133,9 @@ msgstr "Analyse vollendet"
|
||||||
msgid "Analyzes only organic matter"
|
msgid "Analyzes only organic matter"
|
||||||
msgstr "Analysiert nur Orgastoff"
|
msgstr "Analysiert nur Orgastoff"
|
||||||
|
|
||||||
|
msgid "Anisotropy level\\Anisotropy level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Ant"
|
msgid "Ant"
|
||||||
msgstr "Ameise"
|
msgstr "Ameise"
|
||||||
|
|
||||||
|
@ -831,6 +834,9 @@ msgstr "Min.\\Minimale Qualität (großes Framerate)"
|
||||||
msgid "Lunar Roving Vehicle"
|
msgid "Lunar Roving Vehicle"
|
||||||
msgstr "Lunar Roving Vehicle"
|
msgstr "Lunar Roving Vehicle"
|
||||||
|
|
||||||
|
msgid "MSAA\\Multisample anti-aliasing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Marks on the ground\\Marks on the ground"
|
msgid "Marks on the ground\\Marks on the ground"
|
||||||
msgstr "Markierungen\\Markierungen auf dem Boden"
|
msgstr "Markierungen\\Markierungen auf dem Boden"
|
||||||
|
|
||||||
|
@ -840,6 +846,9 @@ msgstr "Großes Fenster"
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Reduzieren"
|
msgstr "Reduzieren"
|
||||||
|
|
||||||
|
msgid "Mipmap level\\Mipmap level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Mission name"
|
msgid "Mission name"
|
||||||
msgstr "Name der Mission"
|
msgstr "Name der Mission"
|
||||||
|
|
||||||
|
@ -1464,6 +1473,9 @@ msgstr "Zielscheibe"
|
||||||
msgid "Target bot"
|
msgid "Target bot"
|
||||||
msgstr "Mobile Zielscheibe"
|
msgstr "Mobile Zielscheibe"
|
||||||
|
|
||||||
|
msgid "Texture filtering\\Texture filtering"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The expression must return a boolean value"
|
msgid "The expression must return a boolean value"
|
||||||
msgstr "Der Ausdruck muss einen boolschen Wert ergeben"
|
msgstr "Der Ausdruck muss einen boolschen Wert ergeben"
|
||||||
|
|
||||||
|
|
12
po/fr.po
12
po/fr.po
|
@ -128,6 +128,9 @@ msgstr "Analyse terminée"
|
||||||
msgid "Analyzes only organic matter"
|
msgid "Analyzes only organic matter"
|
||||||
msgstr "N'analyse que la matière organique"
|
msgstr "N'analyse que la matière organique"
|
||||||
|
|
||||||
|
msgid "Anisotropy level\\Anisotropy level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Ant"
|
msgid "Ant"
|
||||||
msgstr "Fourmi"
|
msgstr "Fourmi"
|
||||||
|
|
||||||
|
@ -825,6 +828,9 @@ msgstr "Mini\\Qualité minimale (+ rapide)"
|
||||||
msgid "Lunar Roving Vehicle"
|
msgid "Lunar Roving Vehicle"
|
||||||
msgstr "Lunar Roving Vehicle"
|
msgstr "Lunar Roving Vehicle"
|
||||||
|
|
||||||
|
msgid "MSAA\\Multisample anti-aliasing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Marks on the ground\\Marks on the ground"
|
msgid "Marks on the ground\\Marks on the ground"
|
||||||
msgstr "Marques sur le sol\\Marques dessinées sur le sol"
|
msgstr "Marques sur le sol\\Marques dessinées sur le sol"
|
||||||
|
|
||||||
|
@ -834,6 +840,9 @@ msgstr "Taille maximale"
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Taille réduite"
|
msgstr "Taille réduite"
|
||||||
|
|
||||||
|
msgid "Mipmap level\\Mipmap level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Mission name"
|
msgid "Mission name"
|
||||||
msgstr "Nom de la mission"
|
msgstr "Nom de la mission"
|
||||||
|
|
||||||
|
@ -1460,6 +1469,9 @@ msgstr "Cible"
|
||||||
msgid "Target bot"
|
msgid "Target bot"
|
||||||
msgstr "Cible d'entraînement"
|
msgstr "Cible d'entraînement"
|
||||||
|
|
||||||
|
msgid "Texture filtering\\Texture filtering"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The expression must return a boolean value"
|
msgid "The expression must return a boolean value"
|
||||||
msgstr "L'expression doit ętre un boolean"
|
msgstr "L'expression doit ętre un boolean"
|
||||||
|
|
||||||
|
|
12
po/pl.po
12
po/pl.po
|
@ -133,6 +133,9 @@ msgstr "Analiza wykonana"
|
||||||
msgid "Analyzes only organic matter"
|
msgid "Analyzes only organic matter"
|
||||||
msgstr "Analizuje jedynie materię organiczną"
|
msgstr "Analizuje jedynie materię organiczną"
|
||||||
|
|
||||||
|
msgid "Anisotropy level\\Anisotropy level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Ant"
|
msgid "Ant"
|
||||||
msgstr "Mrówka"
|
msgstr "Mrówka"
|
||||||
|
|
||||||
|
@ -833,6 +836,9 @@ msgstr ""
|
||||||
msgid "Lunar Roving Vehicle"
|
msgid "Lunar Roving Vehicle"
|
||||||
msgstr "Pojazd Księżycowy"
|
msgstr "Pojazd Księżycowy"
|
||||||
|
|
||||||
|
msgid "MSAA\\Multisample anti-aliasing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Marks on the ground\\Marks on the ground"
|
msgid "Marks on the ground\\Marks on the ground"
|
||||||
msgstr "Znaki na ziemi\\Znaki na ziemi"
|
msgstr "Znaki na ziemi\\Znaki na ziemi"
|
||||||
|
|
||||||
|
@ -842,6 +848,9 @@ msgstr "Powiększ"
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Pomniejsz"
|
msgstr "Pomniejsz"
|
||||||
|
|
||||||
|
msgid "Mipmap level\\Mipmap level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Mission name"
|
msgid "Mission name"
|
||||||
msgstr "Nazwa misji"
|
msgstr "Nazwa misji"
|
||||||
|
|
||||||
|
@ -1461,6 +1470,9 @@ msgstr "Cel"
|
||||||
msgid "Target bot"
|
msgid "Target bot"
|
||||||
msgstr "Robot cel"
|
msgstr "Robot cel"
|
||||||
|
|
||||||
|
msgid "Texture filtering\\Texture filtering"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The expression must return a boolean value"
|
msgid "The expression must return a boolean value"
|
||||||
msgstr "Wyrażenie musi zwrócić wartość logiczną"
|
msgstr "Wyrażenie musi zwrócić wartość logiczną"
|
||||||
|
|
||||||
|
|
12
po/ru.po
12
po/ru.po
|
@ -128,6 +128,9 @@ msgstr "Анализ выполнен"
|
||||||
msgid "Analyzes only organic matter"
|
msgid "Analyzes only organic matter"
|
||||||
msgstr "Анализирую только органические вещества"
|
msgstr "Анализирую только органические вещества"
|
||||||
|
|
||||||
|
msgid "Anisotropy level\\Anisotropy level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Ant"
|
msgid "Ant"
|
||||||
msgstr "Муравей"
|
msgstr "Муравей"
|
||||||
|
|
||||||
|
@ -824,6 +827,9 @@ msgstr "Низкое\\Минимальное качество графики (б
|
||||||
msgid "Lunar Roving Vehicle"
|
msgid "Lunar Roving Vehicle"
|
||||||
msgstr "Луноход"
|
msgstr "Луноход"
|
||||||
|
|
||||||
|
msgid "MSAA\\Multisample anti-aliasing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Marks on the ground\\Marks on the ground"
|
msgid "Marks on the ground\\Marks on the ground"
|
||||||
msgstr "Метки на земле\\Метки на земле"
|
msgstr "Метки на земле\\Метки на земле"
|
||||||
|
|
||||||
|
@ -833,6 +839,9 @@ msgstr "Развернуть"
|
||||||
msgid "Minimize"
|
msgid "Minimize"
|
||||||
msgstr "Свернуть"
|
msgstr "Свернуть"
|
||||||
|
|
||||||
|
msgid "Mipmap level\\Mipmap level"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Mission name"
|
msgid "Mission name"
|
||||||
msgstr "Название миссии"
|
msgstr "Название миссии"
|
||||||
|
|
||||||
|
@ -1456,6 +1465,9 @@ msgstr "Цель"
|
||||||
msgid "Target bot"
|
msgid "Target bot"
|
||||||
msgstr "Целевой бот"
|
msgstr "Целевой бот"
|
||||||
|
|
||||||
|
msgid "Texture filtering\\Texture filtering"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "The expression must return a boolean value"
|
msgid "The expression must return a boolean value"
|
||||||
msgstr "Выражение должно возвращать логическое значение"
|
msgstr "Выражение должно возвращать логическое значение"
|
||||||
|
|
||||||
|
|
|
@ -218,6 +218,14 @@ void InitializeEventTypeTexts()
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_EDITMODE]= "EVENT_INTERFACE_EDITMODE";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_EDITMODE]= "EVENT_INTERFACE_EDITMODE";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_EDITVALUE]= "EVENT_INTERFACE_EDITVALUE";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_EDITVALUE]= "EVENT_INTERFACE_EDITVALUE";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_SOLUCE4] = "EVENT_INTERFACE_SOLUCE4";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_SOLUCE4] = "EVENT_INTERFACE_SOLUCE4";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_BLOOD] = "EVENT_INTERFACE_BLOOD";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_AUTOSAVE_ENABLE] = "EVENT_INTERFACE_AUTOSAVE_ENABLE";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_AUTOSAVE_INTERVAL] = "EVENT_INTERFACE_AUTOSAVE_INTERVAL";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_AUTOSAVE_SLOTS] = "EVENT_INTERFACE_AUTOSAVE_SLOTS";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_TEXTURE_FILTER] = "EVENT_INTERFACE_TEXTURE_FILTER";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_TEXTURE_MIPMAP] = "EVENT_INTERFACE_TEXTURE_MIPMAP";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_TEXTURE_ANISOTROPY] = "EVENT_INTERFACE_TEXTURE_ANISOTROPY";
|
||||||
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_MSAA] = "EVENT_INTERFACE_MSAA";
|
||||||
|
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_KINFO1] = "EVENT_INTERFACE_KINFO1";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_KINFO1] = "EVENT_INTERFACE_KINFO1";
|
||||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_KINFO2] = "EVENT_INTERFACE_KINFO2";
|
EVENT_TYPE_TEXT[EVENT_INTERFACE_KINFO2] = "EVENT_INTERFACE_KINFO2";
|
||||||
|
|
|
@ -243,10 +243,10 @@ enum EventType
|
||||||
EVENT_INTERFACE_AUTOSAVE_ENABLE = 780,
|
EVENT_INTERFACE_AUTOSAVE_ENABLE = 780,
|
||||||
EVENT_INTERFACE_AUTOSAVE_INTERVAL = 781,
|
EVENT_INTERFACE_AUTOSAVE_INTERVAL = 781,
|
||||||
EVENT_INTERFACE_AUTOSAVE_SLOTS = 782,
|
EVENT_INTERFACE_AUTOSAVE_SLOTS = 782,
|
||||||
// new
|
|
||||||
EVENT_INTERFACE_TEXTURE_FILTER = 783,
|
EVENT_INTERFACE_TEXTURE_FILTER = 783,
|
||||||
EVENT_INTERFACE_TEXTURE_MIPMAP = 784,
|
EVENT_INTERFACE_TEXTURE_MIPMAP = 784,
|
||||||
EVENT_INTERFACE_TEXTURE_ANISOTROPY = 785,
|
EVENT_INTERFACE_TEXTURE_ANISOTROPY = 785,
|
||||||
|
EVENT_INTERFACE_MSAA = 786,
|
||||||
|
|
||||||
EVENT_INTERFACE_KINFO1 = 500,
|
EVENT_INTERFACE_KINFO1 = 500,
|
||||||
EVENT_INTERFACE_KINFO2 = 501,
|
EVENT_INTERFACE_KINFO2 = 501,
|
||||||
|
|
|
@ -216,6 +216,7 @@ void InitializeRestext()
|
||||||
stringsEvent[EVENT_INTERFACE_TEXTURE_FILTER] = TR("Texture filtering\\Texture filtering");
|
stringsEvent[EVENT_INTERFACE_TEXTURE_FILTER] = TR("Texture filtering\\Texture filtering");
|
||||||
stringsEvent[EVENT_INTERFACE_TEXTURE_MIPMAP] = TR("Mipmap level\\Mipmap level");
|
stringsEvent[EVENT_INTERFACE_TEXTURE_MIPMAP] = TR("Mipmap level\\Mipmap level");
|
||||||
stringsEvent[EVENT_INTERFACE_TEXTURE_ANISOTROPY]= TR("Anisotropy level\\Anisotropy level");
|
stringsEvent[EVENT_INTERFACE_TEXTURE_ANISOTROPY]= TR("Anisotropy level\\Anisotropy level");
|
||||||
|
stringsEvent[EVENT_INTERFACE_MSAA] = TR("MSAA\\Multisample anti-aliasing");
|
||||||
|
|
||||||
stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions");
|
stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions");
|
||||||
assert(INPUT_SLOT_MAX < EVENT_INTERFACE_KEY_END-EVENT_INTERFACE_KEY);
|
assert(INPUT_SLOT_MAX < EVENT_INTERFACE_KEY_END-EVENT_INTERFACE_KEY);
|
||||||
|
|
|
@ -441,6 +441,9 @@ public:
|
||||||
|
|
||||||
//! Returns max anisotropy level supported
|
//! Returns max anisotropy level supported
|
||||||
virtual int GetMaxAnisotropyLevel() = 0;
|
virtual int GetMaxAnisotropyLevel() = 0;
|
||||||
|
|
||||||
|
//! Returns max samples supported
|
||||||
|
virtual int GetMaxSamples() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -392,4 +392,9 @@ int CNullDevice::GetMaxAnisotropyLevel()
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CNullDevice::GetMaxSamples()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Gfx
|
} // namespace Gfx
|
||||||
|
|
|
@ -155,6 +155,8 @@ public:
|
||||||
virtual bool IsAnisotropySupported();
|
virtual bool IsAnisotropySupported();
|
||||||
virtual int GetMaxAnisotropyLevel();
|
virtual int GetMaxAnisotropyLevel();
|
||||||
|
|
||||||
|
virtual int GetMaxSamples();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Math::Matrix m_matrix;
|
Math::Matrix m_matrix;
|
||||||
Material m_material;
|
Material m_material;
|
||||||
|
|
|
@ -2584,7 +2584,12 @@ float CEngine::GetShadowRange()
|
||||||
|
|
||||||
void CEngine::SetMultiSample(int value)
|
void CEngine::SetMultiSample(int value)
|
||||||
{
|
{
|
||||||
|
bool changed = m_multisample != value;
|
||||||
m_multisample = value;
|
m_multisample = value;
|
||||||
|
if(changed)
|
||||||
|
{
|
||||||
|
m_device->DeleteFramebuffer("multisample");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int CEngine::GetMultiSample()
|
int CEngine::GetMultiSample()
|
||||||
|
|
|
@ -46,6 +46,7 @@ CGL21Device::CGL21Device(const DeviceConfig &config)
|
||||||
m_lastVboId = 0;
|
m_lastVboId = 0;
|
||||||
m_anisotropyAvailable = false;
|
m_anisotropyAvailable = false;
|
||||||
m_maxAnisotropy = 1;
|
m_maxAnisotropy = 1;
|
||||||
|
m_maxSamples = 1;
|
||||||
m_glMajor = 1;
|
m_glMajor = 1;
|
||||||
m_glMinor = 1;
|
m_glMinor = 1;
|
||||||
|
|
||||||
|
@ -211,6 +212,17 @@ bool CGL21Device::Create()
|
||||||
{
|
{
|
||||||
GetLogger()->Info("Anisotropic filtering not available\n");
|
GetLogger()->Info("Anisotropic filtering not available\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read maximum sample count for MSAA
|
||||||
|
if(glewIsSupported("GL_ARB_multisample"))
|
||||||
|
{
|
||||||
|
glGetIntegerv(GL_MAX_SAMPLES_EXT, &m_maxSamples);
|
||||||
|
GetLogger()->Info("Multisampling supported, max samples: %d\n", m_maxSamples);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetLogger()->Info("Multisampling not supported\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is mostly done in all modern hardware by default
|
// This is mostly done in all modern hardware by default
|
||||||
|
@ -1771,4 +1783,9 @@ int CGL21Device::GetMaxAnisotropyLevel()
|
||||||
return m_maxAnisotropy;
|
return m_maxAnisotropy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CGL21Device::GetMaxSamples()
|
||||||
|
{
|
||||||
|
return m_maxSamples;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Gfx
|
} // namespace Gfx
|
||||||
|
|
|
@ -150,6 +150,8 @@ public:
|
||||||
virtual bool IsAnisotropySupported() override;
|
virtual bool IsAnisotropySupported() override;
|
||||||
virtual int GetMaxAnisotropyLevel() override;
|
virtual int GetMaxAnisotropyLevel() override;
|
||||||
|
|
||||||
|
virtual int GetMaxSamples() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Updates position for given light based on transformation matrices
|
//! Updates position for given light based on transformation matrices
|
||||||
void UpdateLightPosition(int index);
|
void UpdateLightPosition(int index);
|
||||||
|
@ -221,6 +223,8 @@ private:
|
||||||
bool m_anisotropyAvailable;
|
bool m_anisotropyAvailable;
|
||||||
//! Maximum anisotropy level
|
//! Maximum anisotropy level
|
||||||
int m_maxAnisotropy;
|
int m_maxAnisotropy;
|
||||||
|
//! Maximum samples
|
||||||
|
int m_maxSamples;
|
||||||
//! Framebuffer support
|
//! Framebuffer support
|
||||||
FramebufferSupport m_framebufferSupport;
|
FramebufferSupport m_framebufferSupport;
|
||||||
//! Map of saved VBO objects
|
//! Map of saved VBO objects
|
||||||
|
|
|
@ -45,6 +45,7 @@ CGL33Device::CGL33Device(const DeviceConfig &config)
|
||||||
m_lastVboId = 0;
|
m_lastVboId = 0;
|
||||||
m_anisotropyAvailable = false;
|
m_anisotropyAvailable = false;
|
||||||
m_maxAnisotropy = 1;
|
m_maxAnisotropy = 1;
|
||||||
|
m_maxSamples = 1;
|
||||||
m_glMajor = 1;
|
m_glMajor = 1;
|
||||||
m_glMinor = 1;
|
m_glMinor = 1;
|
||||||
|
|
||||||
|
@ -217,6 +218,17 @@ bool CGL33Device::Create()
|
||||||
{
|
{
|
||||||
GetLogger()->Info("Anisotropic filtering not available\n");
|
GetLogger()->Info("Anisotropic filtering not available\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read maximum sample count for MSAA
|
||||||
|
if(glewIsSupported("GL_ARB_multisample"))
|
||||||
|
{
|
||||||
|
glGetIntegerv(GL_MAX_SAMPLES_EXT, &m_maxSamples);
|
||||||
|
GetLogger()->Info("Multisampling supported, max samples: %d\n", m_maxSamples);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetLogger()->Info("Multisampling not supported\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set just to be sure
|
// Set just to be sure
|
||||||
|
@ -1964,4 +1976,9 @@ int CGL33Device::GetMaxAnisotropyLevel()
|
||||||
return m_maxAnisotropy;
|
return m_maxAnisotropy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CGL33Device::GetMaxSamples()
|
||||||
|
{
|
||||||
|
return m_maxSamples;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Gfx
|
} // namespace Gfx
|
||||||
|
|
|
@ -149,6 +149,8 @@ public:
|
||||||
virtual bool IsAnisotropySupported() override;
|
virtual bool IsAnisotropySupported() override;
|
||||||
virtual int GetMaxAnisotropyLevel() override;
|
virtual int GetMaxAnisotropyLevel() override;
|
||||||
|
|
||||||
|
virtual int GetMaxSamples() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Updates position for given light based on transformation matrices
|
//! Updates position for given light based on transformation matrices
|
||||||
void UpdateLightPosition(int index);
|
void UpdateLightPosition(int index);
|
||||||
|
@ -221,6 +223,8 @@ private:
|
||||||
bool m_anisotropyAvailable;
|
bool m_anisotropyAvailable;
|
||||||
//! Maximum anisotropy level
|
//! Maximum anisotropy level
|
||||||
int m_maxAnisotropy;
|
int m_maxAnisotropy;
|
||||||
|
//! Maximum samples
|
||||||
|
int m_maxSamples;
|
||||||
//! Map of saved VBO objects
|
//! Map of saved VBO objects
|
||||||
std::map<unsigned int, VertexBufferInfo> m_vboObjects;
|
std::map<unsigned int, VertexBufferInfo> m_vboObjects;
|
||||||
//! Last ID of VBO object
|
//! Last ID of VBO object
|
||||||
|
|
|
@ -47,6 +47,7 @@ CGLDevice::CGLDevice(const DeviceConfig &config)
|
||||||
m_vertexBufferType = VBT_DISPLAY_LIST;
|
m_vertexBufferType = VBT_DISPLAY_LIST;
|
||||||
m_anisotropyAvailable = false;
|
m_anisotropyAvailable = false;
|
||||||
m_maxAnisotropy = 1;
|
m_maxAnisotropy = 1;
|
||||||
|
m_maxSamples = 1;
|
||||||
m_glMajor = 1;
|
m_glMajor = 1;
|
||||||
m_glMinor = 1;
|
m_glMinor = 1;
|
||||||
m_shadowMappingSupport = SMS_NONE;
|
m_shadowMappingSupport = SMS_NONE;
|
||||||
|
@ -231,6 +232,17 @@ bool CGLDevice::Create()
|
||||||
GetLogger()->Info("Anisotropic filtering not available\n");
|
GetLogger()->Info("Anisotropic filtering not available\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read maximum sample count for MSAA
|
||||||
|
if(glewIsSupported("GL_ARB_multisample"))
|
||||||
|
{
|
||||||
|
glGetIntegerv(GL_MAX_SAMPLES_EXT, &m_maxSamples);
|
||||||
|
GetLogger()->Info("Multisampling supported, max samples: %d\n", m_maxSamples);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetLogger()->Info("Multisampling not supported\n");
|
||||||
|
}
|
||||||
|
|
||||||
GetLogger()->Info("Auto-detecting VBO support\n");
|
GetLogger()->Info("Auto-detecting VBO support\n");
|
||||||
|
|
||||||
// detecting VBO ARB extension
|
// detecting VBO ARB extension
|
||||||
|
@ -1903,4 +1915,9 @@ int CGLDevice::GetMaxAnisotropyLevel()
|
||||||
return m_maxAnisotropy;
|
return m_maxAnisotropy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CGLDevice::GetMaxSamples()
|
||||||
|
{
|
||||||
|
return m_maxSamples;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Gfx
|
} // namespace Gfx
|
||||||
|
|
|
@ -169,6 +169,8 @@ public:
|
||||||
virtual bool IsAnisotropySupported() override;
|
virtual bool IsAnisotropySupported() override;
|
||||||
virtual int GetMaxAnisotropyLevel() override;
|
virtual int GetMaxAnisotropyLevel() override;
|
||||||
|
|
||||||
|
virtual int GetMaxSamples() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Updates internal modelview matrix
|
//! Updates internal modelview matrix
|
||||||
void UpdateModelviewMatrix();
|
void UpdateModelviewMatrix();
|
||||||
|
@ -245,6 +247,8 @@ private:
|
||||||
bool m_anisotropyAvailable;
|
bool m_anisotropyAvailable;
|
||||||
//! Maximum anisotropy level
|
//! Maximum anisotropy level
|
||||||
int m_maxAnisotropy;
|
int m_maxAnisotropy;
|
||||||
|
//! Maximum samples
|
||||||
|
int m_maxSamples;
|
||||||
//! Framebuffer support
|
//! Framebuffer support
|
||||||
FramebufferSupport m_framebufferSupport;
|
FramebufferSupport m_framebufferSupport;
|
||||||
//! Which vertex buffer type to use
|
//! Which vertex buffer type to use
|
||||||
|
|
|
@ -214,6 +214,7 @@ void CMainDialog::ChangePhase(Phase phase)
|
||||||
CCheck* pc;
|
CCheck* pc;
|
||||||
CScroll* ps;
|
CScroll* ps;
|
||||||
CSlider* psl;
|
CSlider* psl;
|
||||||
|
CEnumSlider* pes;
|
||||||
CButton* pb;
|
CButton* pb;
|
||||||
CColor* pco;
|
CColor* pco;
|
||||||
CGroup* pg;
|
CGroup* pg;
|
||||||
|
@ -1090,6 +1091,25 @@ void CMainDialog::ChangePhase(Phase phase)
|
||||||
pc->SetState(STATE_SHADOW);
|
pc->SetState(STATE_SHADOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pos.x = ox+sx*3;
|
||||||
|
pos.y = 0.245f;
|
||||||
|
ddim.x = dim.x*2.2f;
|
||||||
|
ddim.y = 18.0f/480.0f;
|
||||||
|
pes = pw->CreateEnumSlider(pos, ddim, 0, EVENT_INTERFACE_MSAA);
|
||||||
|
pes->SetState(STATE_SHADOW);
|
||||||
|
std::vector<float> msaaOptions;
|
||||||
|
for(int i = 1; i <= m_engine->GetDevice()->GetMaxSamples(); i *= 2)
|
||||||
|
msaaOptions.push_back(i);
|
||||||
|
pes->SetPossibleValues(msaaOptions);
|
||||||
|
if(m_engine->GetDevice()->GetMaxSamples() < 2)
|
||||||
|
pes->ClearState(STATE_ENABLE);
|
||||||
|
pos.y += ddim.y/2;
|
||||||
|
pos.x += 0.005f;
|
||||||
|
ddim.x = 0.40f;
|
||||||
|
GetResource(RES_EVENT, EVENT_INTERFACE_MSAA, name);
|
||||||
|
pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, name);
|
||||||
|
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
|
||||||
|
|
||||||
pos.x = ox+sx*8.5f;
|
pos.x = ox+sx*8.5f;
|
||||||
pos.y = 0.65f;
|
pos.y = 0.65f;
|
||||||
ddim.x = dim.x*2.2f;
|
ddim.x = dim.x*2.2f;
|
||||||
|
@ -1153,8 +1173,6 @@ void CMainDialog::ChangePhase(Phase phase)
|
||||||
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
|
pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
CEnumSlider* pes;
|
|
||||||
|
|
||||||
pos.x = ox+sx*8.5f;
|
pos.x = ox+sx*8.5f;
|
||||||
pos.y = 0.385f;
|
pos.y = 0.385f;
|
||||||
ddim.x = dim.x*2.2f;
|
ddim.x = dim.x*2.2f;
|
||||||
|
@ -2465,6 +2483,7 @@ bool CMainDialog::EventProcess(const Event &event)
|
||||||
case EVENT_INTERFACE_TEXTURE_FILTER:
|
case EVENT_INTERFACE_TEXTURE_FILTER:
|
||||||
case EVENT_INTERFACE_TEXTURE_MIPMAP:
|
case EVENT_INTERFACE_TEXTURE_MIPMAP:
|
||||||
case EVENT_INTERFACE_TEXTURE_ANISOTROPY:
|
case EVENT_INTERFACE_TEXTURE_ANISOTROPY:
|
||||||
|
case EVENT_INTERFACE_MSAA:
|
||||||
ChangeSetupButtons();
|
ChangeSetupButtons();
|
||||||
UpdateSetupButtons();
|
UpdateSetupButtons();
|
||||||
break;
|
break;
|
||||||
|
@ -4668,6 +4687,12 @@ void CMainDialog::UpdateSetupButtons()
|
||||||
pes->SetVisibleValue(m_engine->GetTextureAnisotropyLevel());
|
pes->SetVisibleValue(m_engine->GetTextureAnisotropyLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pes = static_cast<CEnumSlider*>(pw->SearchControl(EVENT_INTERFACE_MSAA));
|
||||||
|
if ( pes != 0 )
|
||||||
|
{
|
||||||
|
pes->SetVisibleValue(m_engine->GetMultiSample());
|
||||||
|
}
|
||||||
|
|
||||||
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_SHADOW));
|
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_SHADOW));
|
||||||
if ( pc != 0 )
|
if ( pc != 0 )
|
||||||
{
|
{
|
||||||
|
@ -4855,6 +4880,13 @@ void CMainDialog::ChangeSetupButtons()
|
||||||
value = pes->GetVisibleValue();
|
value = pes->GetVisibleValue();
|
||||||
m_engine->SetTextureAnisotropyLevel(static_cast<int>(value));
|
m_engine->SetTextureAnisotropyLevel(static_cast<int>(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pes = static_cast<CEnumSlider*>(pw->SearchControl(EVENT_INTERFACE_MSAA));
|
||||||
|
if ( pes != 0 )
|
||||||
|
{
|
||||||
|
value = pes->GetVisibleValue();
|
||||||
|
m_engine->SetMultiSample(static_cast<int>(value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue