From 7cc0f181c998b4a461236e69431242defe293af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Wed, 29 Apr 2020 22:33:03 +0200 Subject: [PATCH] Improve shader time roll over - Resurrect it for GL ES 2 - Apply roll over with `fmod()` instead of resetting it to 0 - Expose the setting from the `VisualServer`, since it does not belong in any specific rasterizer --- drivers/gles2/rasterizer_gles2.cpp | 5 ++--- drivers/gles3/rasterizer_gles3.cpp | 5 +---- servers/visual_server.cpp | 3 +++ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index c4e9541a36..9539cb3eb7 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -277,9 +277,8 @@ void RasterizerGLES2::begin_frame(double frame_step) { frame_step = 0.001; } - // double time_roll_over = GLOBAL_GET("rendering/limits/time/time_rollover_secs"); - // if (time_total > time_roll_over) - // time_total = 0; //roll over every day (should be customz + double time_roll_over = GLOBAL_GET("rendering/limits/time/time_rollover_secs"); + time_total = Math::fmod(time_total, time_roll_over); storage->frame.time[0] = time_total; storage->frame.time[1] = Math::fmod(time_total, 3600); diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index a24147146f..4f6a56549a 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -202,8 +202,7 @@ void RasterizerGLES3::begin_frame(double frame_step) { } double time_roll_over = GLOBAL_GET("rendering/limits/time/time_rollover_secs"); - if (time_total > time_roll_over) - time_total = 0; //roll over every day (should be customz + time_total = Math::fmod(time_total, time_roll_over); storage->frame.time[0] = time_total; storage->frame.time[1] = Math::fmod(time_total, 3600); @@ -418,8 +417,6 @@ void RasterizerGLES3::register_config() { GLOBAL_DEF("rendering/quality/filters/anisotropic_filter_level", 4); ProjectSettings::get_singleton()->set_custom_property_info("rendering/quality/filters/anisotropic_filter_level", PropertyInfo(Variant::INT, "rendering/quality/filters/anisotropic_filter_level", PROPERTY_HINT_RANGE, "1,16,1")); - GLOBAL_DEF("rendering/limits/time/time_rollover_secs", 3600); - ProjectSettings::get_singleton()->set_custom_property_info("rendering/limits/time/time_rollover_secs", PropertyInfo(Variant::REAL, "rendering/limits/time/time_rollover_secs", PROPERTY_HINT_RANGE, "0,10000,1,or_greater")); } RasterizerGLES3::RasterizerGLES3() { diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index 18fcdeee37..cd9db8e6b3 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -2378,6 +2378,9 @@ VisualServer::VisualServer() { GLOBAL_DEF_RST("rendering/vram_compression/import_etc2", true); GLOBAL_DEF_RST("rendering/vram_compression/import_pvrtc", false); + GLOBAL_DEF("rendering/limits/time/time_rollover_secs", 3600); + ProjectSettings::get_singleton()->set_custom_property_info("rendering/limits/time/time_rollover_secs", PropertyInfo(Variant::REAL, "rendering/limits/time/time_rollover_secs", PROPERTY_HINT_RANGE, "0,10000,1,or_greater")); + GLOBAL_DEF("rendering/quality/directional_shadow/size", 4096); GLOBAL_DEF("rendering/quality/directional_shadow/size.mobile", 2048); ProjectSettings::get_singleton()->set_custom_property_info("rendering/quality/directional_shadow/size", PropertyInfo(Variant::INT, "rendering/quality/directional_shadow/size", PROPERTY_HINT_RANGE, "256,16384"));