diff --git a/data/gui/dialogs/custom_video_settings.stkgui b/data/gui/dialogs/custom_video_settings.stkgui
index 814ea699c2a..840890f479a 100644
--- a/data/gui/dialogs/custom_video_settings.stkgui
+++ b/data/gui/dialogs/custom_video_settings.stkgui
@@ -29,7 +29,7 @@
-
+
@@ -39,17 +39,17 @@
-
+
-
+
-
+
-
+
@@ -59,17 +59,17 @@
-
+
-
+
-
+
-
+
@@ -77,19 +77,19 @@
@@ -97,19 +97,11 @@
@@ -117,11 +109,19 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
@@ -167,11 +167,7 @@
-
-
-
-
-
+
2048))
+ UserConfigParams::m_shadows_resolution > 4096))
{
Log::warn("irr_driver",
"Invalid value for UserConfigParams::m_shadows_resolution : %i",
diff --git a/src/graphics/shadow_matrices.cpp b/src/graphics/shadow_matrices.cpp
index 1d048f721e2..c655e1b0c74 100644
--- a/src/graphics/shadow_matrices.cpp
+++ b/src/graphics/shadow_matrices.cpp
@@ -143,11 +143,9 @@ static std::vector getFrustrumVertex(const scene::SViewFrustum &frust
* and 1.
* \param transform a transform matrix.
* \param pointsInside a vector of point in 3d space.
- * \param size returns the size (width, height) of shadowmap coverage
*/
-core::matrix4 ShadowMatrices::getTighestFitOrthoProj(const core::matrix4 &transform,
- const std::vector &pointsInside,
- std::pair &size)
+core::matrix4 ShadowMatrices::getTightestFitOrthoProj(const core::matrix4 &transform,
+ const std::vector &pointsInside)
{
float xmin = std::numeric_limits::infinity();
float xmax = -std::numeric_limits::infinity();
@@ -173,9 +171,6 @@ core::matrix4 ShadowMatrices::getTighestFitOrthoProj(const core::matrix4 &transf
float up = ymin;
float down = ymax;
- size.first = right - left;
- size.second = down - up;
-
core::matrix4 tmp_matrix;
// Prevent Matrix without extend
if (left == right || up == down)
@@ -184,7 +179,7 @@ core::matrix4 ShadowMatrices::getTighestFitOrthoProj(const core::matrix4 &transf
down, up,
zmin - 100, zmax);
return tmp_matrix;
-} // getTighestFitOrthoProj
+} // getTightestFitOrthoProj
// ----------------------------------------------------------------------------
/** Generate View, Projection, Inverse View, Inverse Projection, ViewProjection
@@ -280,8 +275,7 @@ void ShadowMatrices::computeMatrixesAndCameras(scene::ICameraSceneNode *const ca
memcpy(m_shadows_cam[i], tmp, 24 * sizeof(float));
std::vector vectors = getFrustrumVertex(*frustrum);
- tmp_matrix = getTighestFitOrthoProj(sun_cam_view_matrix, vectors,
- m_shadow_scales[i]);
+ tmp_matrix = getTightestFitOrthoProj(sun_cam_view_matrix, vectors);
m_shadow_cam_nodes[i]->setProjectionMatrix(tmp_matrix, true);
diff --git a/src/graphics/shadow_matrices.hpp b/src/graphics/shadow_matrices.hpp
index 82918955a90..183438f9226 100644
--- a/src/graphics/shadow_matrices.hpp
+++ b/src/graphics/shadow_matrices.hpp
@@ -46,16 +46,14 @@ class ShadowMatrices
std::vector m_sun_ortho_matrices;
scene::ICameraSceneNode *m_sun_cam;
scene::ICameraSceneNode *m_shadow_cam_nodes[4];
- std::pair m_shadow_scales[4];
core::matrix4 m_rsm_matrix;
bool m_rsm_matrix_initialized;
float m_shadows_cam[4][24];
bool m_rsm_map_available;
float m_mat_ubo[16 * 9 + 2];
- core::matrix4 getTighestFitOrthoProj(const core::matrix4 &transform,
- const std::vector &pointsInside,
- std::pair &size);
+ core::matrix4 getTightestFitOrthoProj(const core::matrix4 &transform,
+ const std::vector &pointsInside);
void renderWireFrameFrustrum(float *tmp, unsigned i);
public:
@@ -84,11 +82,6 @@ class ShadowMatrices
return m_sun_ortho_matrices;
}
// ------------------------------------------------------------------------
- const std::pair* getShadowScales() const
- {
- return m_shadow_scales;
- }
- // ------------------------------------------------------------------------
const float* getMatricesData() const { return m_mat_ubo; }
}; // class ShadowMatrices
diff --git a/src/states_screens/dialogs/custom_video_settings.cpp b/src/states_screens/dialogs/custom_video_settings.cpp
index 9aad0d9ba92..738f9b0a79f 100644
--- a/src/states_screens/dialogs/custom_video_settings.cpp
+++ b/src/states_screens/dialogs/custom_video_settings.cpp
@@ -103,7 +103,9 @@ void CustomVideoSettingsDialog::beforeAddingWidgets()
shadows->addLabel(_("Low")); // 1
shadows->addLabel(_("Medium")); // 2
shadows->addLabel(_("High")); // 3
- shadows->setValue(UserConfigParams::m_shadows_resolution == 2048 ? 3 :
+ shadows->addLabel(_("Very High")); // 4
+ shadows->setValue(UserConfigParams::m_shadows_resolution == 4096 ? 4 :
+ UserConfigParams::m_shadows_resolution == 2048 ? 3 :
UserConfigParams::m_shadows_resolution == 1024 ? 2 :
UserConfigParams::m_shadows_resolution == 512 ? 1 : 0);
@@ -161,7 +163,8 @@ GUIEngine::EventPropagation CustomVideoSettingsDialog::processEvent(const std::s
UserConfigParams::m_shadows_resolution =
getWidget("shadows")->getValue() == 1 ? 512 :
getWidget("shadows")->getValue() == 2 ? 1024 :
- getWidget("shadows")->getValue() == 3 ? 2048 : 0;
+ getWidget("shadows")->getValue() == 3 ? 2048 :
+ getWidget("shadows")->getValue() == 4 ? 4096 : 0;
}
else
{
diff --git a/src/states_screens/options/options_screen_video.cpp b/src/states_screens/options/options_screen_video.cpp
index 5c6423bea21..43049976c9e 100644
--- a/src/states_screens/options/options_screen_video.cpp
+++ b/src/states_screens/options/options_screen_video.cpp
@@ -64,7 +64,7 @@ void OptionsScreenVideo::initPresets()
m_presets.push_back // Level 4
({
- true /* light */, 0 /* shadow */, false /* bloom */, true /* lightshaft */,
+ true /* light */, 0 /* shadow */, false /* bloom */, false /* lightshaft */,
true /* glow */, true /* mlaa */, false /* ssao */, true /* light scatter */,
true /* animatedCharacters */, 2 /* particles */, 2 /* image_quality */,
false /* degraded IBL */, 3 /* Geometry Detail */
@@ -81,7 +81,7 @@ void OptionsScreenVideo::initPresets()
m_presets.push_back // Level 6
({
true /* light */, 1024 /* shadow */, true /* bloom */, true /* lightshaft */,
- true /* glow */, true /* mlaa */, true /* ssao */, true /* light scatter */,
+ true /* glow */, true /* mlaa */, false /* ssao */, true /* light scatter */,
true /* animatedCharacters */, 2 /* particles */, 3 /* image_quality */,
false /* degraded IBL */, 4 /* Geometry Detail */
});
@@ -94,17 +94,25 @@ void OptionsScreenVideo::initPresets()
false /* degraded IBL */, 5 /* Geometry Detail */
});
- m_blur_presets.push_back
+ m_presets.push_back // Level 8
+ ({
+ true /* light */, 4096 /* shadow */, true /* bloom */, true /* lightshaft */,
+ true /* glow */, true /* mlaa */, true /* ssao */, true /* light scatter */,
+ true /* animatedCharacters */, 2 /* particles */, 3 /* image_quality */,
+ false /* degraded IBL */, 5 /* Geometry Detail */
+ });
+
+ m_blur_presets.push_back // Level 0
({
false /* motionblur */, false /* depth of field */
});
- m_blur_presets.push_back
+ m_blur_presets.push_back // Level 1
({
true /* motionblur */, false /* depth of field */
});
- m_blur_presets.push_back
+ m_blur_presets.push_back // Level 2
({
true /* motionblur */, true /* depth of field */
});