Take resolution into account when setting the max shadow cubemap size

Co-authored-by: Clay John <clayjohn@gmail.com>
This commit is contained in:
Arman 2021-03-18 22:57:58 -07:00
parent 15ff752737
commit 8d156d9e5c
7 changed files with 10 additions and 6 deletions

View File

@ -3728,7 +3728,7 @@ void RasterizerSceneGLES2::render_shadow(RID p_light, RID p_shadow_atlas, int p_
// find an appropriate cubemap to render to
for (int i = shadow_cubemaps.size() - 1; i >= 0; i--) {
if (shadow_cubemaps[i].size > shadow_size * 2) {
if (shadow_cubemaps[i].size > shadow_size) {
break;
}
@ -4006,7 +4006,7 @@ void RasterizerSceneGLES2::initialize() {
// cubemaps for shadows
if (storage->config.support_shadow_cubemaps) { //not going to be used
int max_shadow_cubemap_sampler_size = 512;
int max_shadow_cubemap_sampler_size = CLAMP(int(next_power_of_2(GLOBAL_GET("rendering/quality/shadow_atlas/size")) >> 1), 256, storage->config.max_cubemap_texture_size);
int cube_size = max_shadow_cubemap_sampler_size;

View File

@ -6217,6 +6217,7 @@ void RasterizerStorageGLES2::initialize() {
glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &config.max_vertex_texture_image_units);
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &config.max_texture_image_units);
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &config.max_texture_size);
glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &config.max_cubemap_texture_size);
glGetIntegerv(GL_MAX_VIEWPORT_DIMS, config.max_viewport_dimensions);
// the use skeleton software path should be used if either float texture is not supported,

View File

@ -63,6 +63,7 @@ public:
int max_vertex_texture_image_units;
int max_texture_image_units;
int max_texture_size;
int max_cubemap_texture_size;
int max_viewport_dimensions[2];
// TODO implement wireframe in GLES2

View File

@ -4811,7 +4811,7 @@ void RasterizerSceneGLES3::render_shadow(RID p_light, RID p_shadow_atlas, int p_
for (int i = shadow_cubemaps.size() - 1; i >= 0; i--) {
//find appropriate cubemap to render to
if (shadow_cubemaps[i].size > shadow_size * 2)
if (shadow_cubemaps[i].size > shadow_size)
break;
cubemap_index = i;
@ -5105,7 +5105,7 @@ void RasterizerSceneGLES3::initialize() {
shadow_atlas_realloc_tolerance_msec = 500;
int max_shadow_cubemap_sampler_size = 512;
int max_shadow_cubemap_sampler_size = CLAMP(int(next_power_of_2(GLOBAL_GET("rendering/quality/shadow_atlas/size")) >> 1), 256, storage->config.max_cubemap_texture_size);
int cube_size = max_shadow_cubemap_sampler_size;

View File

@ -8498,6 +8498,7 @@ void RasterizerStorageGLES3::initialize() {
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &config.max_texture_image_units);
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &config.max_texture_size);
glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &config.max_cubemap_texture_size);
config.use_rgba_2d_shadows = !config.framebuffer_float_supported;

View File

@ -97,6 +97,7 @@ public:
int max_texture_image_units;
int max_texture_size;
int max_cubemap_texture_size;
bool generate_wireframes;

View File

@ -2403,10 +2403,10 @@ VisualServer::VisualServer() {
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_RST("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"));
GLOBAL_DEF("rendering/quality/shadow_atlas/size", 4096);
GLOBAL_DEF_RST("rendering/quality/shadow_atlas/size", 4096);
GLOBAL_DEF("rendering/quality/shadow_atlas/size.mobile", 2048);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/quality/shadow_atlas/size", PropertyInfo(Variant::INT, "rendering/quality/shadow_atlas/size", PROPERTY_HINT_RANGE, "256,16384"));
GLOBAL_DEF("rendering/quality/shadow_atlas/quadrant_0_subdiv", 1);