mirror of
https://github.com/godotengine/godot.git
synced 2024-11-26 14:13:10 +00:00
Take resolution into account when setting the max shadow cubemap size
Co-authored-by: Clay John <clayjohn@gmail.com>
This commit is contained in:
parent
15ff752737
commit
8d156d9e5c
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -97,6 +97,7 @@ public:
|
||||
|
||||
int max_texture_image_units;
|
||||
int max_texture_size;
|
||||
int max_cubemap_texture_size;
|
||||
|
||||
bool generate_wireframes;
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user