Minor overworld update, add switch to disable pixel shaders, fix custom settings to not be accessible in in-game menu
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@10489 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -53,6 +53,14 @@
|
||||
<label text="Post-processing (motion blur)" I18N="Video settings"/>
|
||||
</div>
|
||||
|
||||
<spacer height="5" width="10" />
|
||||
|
||||
<div layout="horizontal-row" width="100%" height="fit">
|
||||
<checkbox id="pixelshaders"/>
|
||||
<spacer width="10" height="10"/>
|
||||
<label text="Pixel Shaders" I18N="Video settings"/>
|
||||
</div>
|
||||
|
||||
<spacer proportion="1"/>
|
||||
|
||||
<button id="close" text="Close" align="center"/>
|
||||
|
||||
@@ -479,6 +479,10 @@ namespace UserConfigParams
|
||||
PARAM_DEFAULT( BoolUserConfigParam(false, "vsync",
|
||||
&m_graphics_quality,
|
||||
"Whether vertical sync is enabled") );
|
||||
PARAM_PREFIX BoolUserConfigParam m_pixel_shaders
|
||||
PARAM_DEFAULT( BoolUserConfigParam(true, "pixel_shaders",
|
||||
&m_graphics_quality,
|
||||
"Whether to enable pixel shaders (splatting, normal maps, ...)") );
|
||||
PARAM_PREFIX BoolUserConfigParam m_postprocess_enabled
|
||||
PARAM_DEFAULT( BoolUserConfigParam(false,
|
||||
"postprocess_enabled", &m_graphics_quality,
|
||||
|
||||
@@ -1459,7 +1459,8 @@ bool IrrDriver::OnEvent(const irr::SEvent &event)
|
||||
|
||||
bool IrrDriver::supportsSplatting()
|
||||
{
|
||||
return m_video_driver->queryFeature(video::EVDF_ARB_GLSL) &&
|
||||
return UserConfigParams::m_pixel_shaders &&
|
||||
m_video_driver->queryFeature(video::EVDF_ARB_GLSL) &&
|
||||
m_video_driver->queryFeature(video::EVDF_PIXEL_SHADER_2_0) &&
|
||||
m_video_driver->queryFeature(video::EVDF_MULTITEXTURE );
|
||||
}
|
||||
|
||||
@@ -655,7 +655,7 @@ void Material::setMaterialProperties(video::SMaterial *m)
|
||||
video::EAS_VERTEX_COLOR);
|
||||
modes++;
|
||||
}
|
||||
if (m_normal_map)
|
||||
if (m_normal_map && UserConfigParams::m_pixel_shaders)
|
||||
{
|
||||
IVideoDriver* video_driver = irr_driver->getVideoDriver();
|
||||
if (video_driver->queryFeature(video::EVDF_ARB_GLSL) &&
|
||||
@@ -713,56 +713,49 @@ void Material::setMaterialProperties(video::SMaterial *m)
|
||||
m->SpecularColor.set(0,0,0,0);
|
||||
modes++;
|
||||
}
|
||||
if (m_splatting)
|
||||
if (m_splatting && irr_driver->supportsSplatting())
|
||||
{
|
||||
if (irr_driver->supportsSplatting())
|
||||
ITexture* tex = irr_driver->getTexture(m_splatting_texture_1);
|
||||
m->setTexture(1, tex);
|
||||
|
||||
if (m_splatting_texture_2.size() > 0)
|
||||
{
|
||||
ITexture* tex = irr_driver->getTexture(m_splatting_texture_1);
|
||||
m->setTexture(1, tex);
|
||||
|
||||
if (m_splatting_texture_2.size() > 0)
|
||||
{
|
||||
tex = irr_driver->getTexture(m_splatting_texture_2);
|
||||
}
|
||||
m->setTexture(2, tex);
|
||||
|
||||
if (m_splatting_texture_3.size() > 0)
|
||||
{
|
||||
tex = irr_driver->getTexture(m_splatting_texture_3);
|
||||
}
|
||||
m->setTexture(3, tex);
|
||||
|
||||
if (m_splatting_texture_4.size() > 0)
|
||||
{
|
||||
tex = irr_driver->getTexture(m_splatting_texture_4);
|
||||
}
|
||||
m->setTexture(4, tex);
|
||||
|
||||
if (m_splatting_provider == NULL)
|
||||
{
|
||||
m_splatting_provider = new SplattingProvider();
|
||||
}
|
||||
|
||||
// Material and shaders
|
||||
IGPUProgrammingServices* gpu =
|
||||
irr_driver->getVideoDriver()->getGPUProgrammingServices();
|
||||
s32 material_type = gpu->addHighLevelShaderMaterialFromFiles(
|
||||
(file_manager->getDataDir() +
|
||||
"shaders/splatting.vert").c_str(),
|
||||
"main",
|
||||
video::EVST_VS_2_0,
|
||||
(file_manager->getDataDir() +
|
||||
"shaders/splatting.frag").c_str(),
|
||||
"main",
|
||||
video::EPST_PS_2_0,
|
||||
m_splatting_provider,
|
||||
video::EMT_SOLID_2_LAYER );
|
||||
m->MaterialType = (E_MATERIAL_TYPE)material_type;
|
||||
tex = irr_driver->getTexture(m_splatting_texture_2);
|
||||
}
|
||||
else
|
||||
m->setTexture(2, tex);
|
||||
|
||||
if (m_splatting_texture_3.size() > 0)
|
||||
{
|
||||
// TODO: we need a sane fallback when splatting is not available!
|
||||
tex = irr_driver->getTexture(m_splatting_texture_3);
|
||||
}
|
||||
m->setTexture(3, tex);
|
||||
|
||||
if (m_splatting_texture_4.size() > 0)
|
||||
{
|
||||
tex = irr_driver->getTexture(m_splatting_texture_4);
|
||||
}
|
||||
m->setTexture(4, tex);
|
||||
|
||||
if (m_splatting_provider == NULL)
|
||||
{
|
||||
m_splatting_provider = new SplattingProvider();
|
||||
}
|
||||
|
||||
// Material and shaders
|
||||
IGPUProgrammingServices* gpu =
|
||||
irr_driver->getVideoDriver()->getGPUProgrammingServices();
|
||||
s32 material_type = gpu->addHighLevelShaderMaterialFromFiles(
|
||||
(file_manager->getDataDir() +
|
||||
"shaders/splatting.vert").c_str(),
|
||||
"main",
|
||||
video::EVST_VS_2_0,
|
||||
(file_manager->getDataDir() +
|
||||
"shaders/splatting.frag").c_str(),
|
||||
"main",
|
||||
video::EPST_PS_2_0,
|
||||
m_splatting_provider,
|
||||
video::EMT_SOLID_2_LAYER );
|
||||
m->MaterialType = (E_MATERIAL_TYPE)material_type;
|
||||
}
|
||||
|
||||
if (modes > 1)
|
||||
|
||||
@@ -72,6 +72,7 @@ void CustomVideoSettingsialog::beforeAddingWidgets()
|
||||
|
||||
getWidget<CheckBoxWidget>("antialiasing")->setState( UserConfigParams::m_fullscreen_antialiasing );
|
||||
getWidget<CheckBoxWidget>("postprocessing")->setState( UserConfigParams::m_postprocess_enabled );
|
||||
getWidget<CheckBoxWidget>("pixelshaders")->setState( UserConfigParams::m_pixel_shaders );
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -90,6 +91,8 @@ GUIEngine::EventPropagation CustomVideoSettingsialog::processEvent(const std::st
|
||||
getWidget<CheckBoxWidget>("postprocessing")->getState();
|
||||
UserConfigParams::m_show_steering_animations =
|
||||
getWidget<SpinnerWidget>("steering_animations")->getValue();
|
||||
UserConfigParams::m_pixel_shaders =
|
||||
getWidget<CheckBoxWidget>("pixelshaders")->getState();
|
||||
|
||||
switch (getWidget<SpinnerWidget>("filtering")->getValue())
|
||||
{
|
||||
|
||||
@@ -51,6 +51,8 @@ const bool GFX_WEATHER [] = {false, false, false, false, true, true, true};
|
||||
const bool GFX_ANTIALIAS [] = {false, false, false, false, false, true, true};
|
||||
const bool GFX_POSTPROCESSING[] =
|
||||
{false, false, false, false, false, false, true};
|
||||
const bool GFX_PIXEL_SHADERS[] =
|
||||
{false, false, false, false, true, true, true};
|
||||
const int GFX_LEVEL_AMOUNT = 7;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -122,6 +124,7 @@ void OptionsScreenVideo::init()
|
||||
full->setActivated();
|
||||
applyBtn->setActivated();
|
||||
gfx->setActivated();
|
||||
getWidget<ButtonWidget>("custom")->setActivated();
|
||||
}
|
||||
|
||||
// --- get resolution list from irrlicht the first time
|
||||
@@ -287,6 +290,7 @@ void OptionsScreenVideo::init()
|
||||
full->setDeactivated();
|
||||
applyBtn->setDeactivated();
|
||||
gfx->setDeactivated();
|
||||
getWidget<ButtonWidget>("custom")->setDeactivated();
|
||||
}
|
||||
|
||||
updateTooltip();
|
||||
@@ -307,7 +311,8 @@ void OptionsScreenVideo::updateGfxSlider()
|
||||
UserConfigParams::m_graphical_effects == GFX[l] &&
|
||||
UserConfigParams::m_weather_effects == GFX_WEATHER[l] &&
|
||||
UserConfigParams::m_fullscreen_antialiasing == GFX_ANTIALIAS[l] &&
|
||||
UserConfigParams::m_postprocess_enabled == GFX_POSTPROCESSING[l])
|
||||
UserConfigParams::m_postprocess_enabled == GFX_POSTPROCESSING[l] &&
|
||||
UserConfigParams::m_pixel_shaders == GFX_PIXEL_SHADERS[l])
|
||||
{
|
||||
gfx->setValue(l+1);
|
||||
found = true;
|
||||
@@ -361,6 +366,9 @@ void OptionsScreenVideo::updateTooltip()
|
||||
tooltip = tooltip + L"\n" + _("Anti-aliasing (requires restart) : %s",
|
||||
UserConfigParams::m_fullscreen_antialiasing ? enabled : disabled);
|
||||
//I18N: in graphical options
|
||||
tooltip = tooltip + L"\n" + _("Pixel shaders : %s",
|
||||
UserConfigParams::m_pixel_shaders ? enabled : disabled);
|
||||
//I18N: in graphical options
|
||||
tooltip = tooltip + L"\n" + _("Post-processing (motion blur) : %s",
|
||||
UserConfigParams::m_postprocess_enabled ? enabled : disabled);
|
||||
gfx->setTooltip(tooltip);
|
||||
@@ -435,7 +443,8 @@ void OptionsScreenVideo::eventCallback(Widget* widget, const std::string& name,
|
||||
UserConfigParams::m_graphical_effects = GFX[level-1];
|
||||
UserConfigParams::m_weather_effects = GFX_WEATHER[level-1];
|
||||
UserConfigParams::m_fullscreen_antialiasing = GFX_ANTIALIAS[level-1];
|
||||
UserConfigParams::m_postprocess_enabled = GFX_POSTPROCESSING[level-1];
|
||||
UserConfigParams::m_postprocess_enabled = GFX_POSTPROCESSING[level-1];
|
||||
UserConfigParams::m_pixel_shaders = GFX_PIXEL_SHADERS[level-1];
|
||||
|
||||
updateTooltip();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user