diff options
author | clayjohn <claynjohn@gmail.com> | 2024-05-03 17:11:05 -0700 |
---|---|---|
committer | clayjohn <claynjohn@gmail.com> | 2024-05-03 17:11:05 -0700 |
commit | caeef3473bfc0168f275a973aa8f0b703d40c6ef (patch) | |
tree | f3fbc75d673cf9b713ab516086e5070ccac173c0 | |
parent | 03e6fbb010c3546593bd91a0dabc045a9882705a (diff) | |
download | redot-engine-caeef3473bfc0168f275a973aa8f0b703d40c6ef.tar.gz |
Properly set size of shadow atlas quadrant when subdivision is 8 or higher.
Also fix renderpass rect validation
-rw-r--r-- | servers/rendering/renderer_rd/storage_rd/light_storage.cpp | 2 | ||||
-rw-r--r-- | servers/rendering/rendering_device.cpp | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/light_storage.cpp b/servers/rendering/renderer_rd/storage_rd/light_storage.cpp index d1ff9fc362..3d294ca8cb 100644 --- a/servers/rendering/renderer_rd/storage_rd/light_storage.cpp +++ b/servers/rendering/renderer_rd/storage_rd/light_storage.cpp @@ -2025,7 +2025,7 @@ void LightStorage::shadow_atlas_set_size(RID p_atlas, int p_size, bool p_16_bits for (int i = 0; i < 4; i++) { //clear subdivisions shadow_atlas->quadrants[i].shadows.clear(); - shadow_atlas->quadrants[i].shadows.resize(int64_t(1) << int64_t(shadow_atlas->quadrants[i].subdivision)); + shadow_atlas->quadrants[i].shadows.resize(int64_t(shadow_atlas->quadrants[i].subdivision * shadow_atlas->quadrants[i].subdivision)); } //erase shadow atlas reference from lights diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp index 962531c866..e46f08c7b0 100644 --- a/servers/rendering/rendering_device.cpp +++ b/servers/rendering/rendering_device.cpp @@ -3451,9 +3451,9 @@ RenderingDevice::DrawListID RenderingDevice::draw_list_begin(RID p_framebuffer, if (p_region != Rect2() && p_region != Rect2(Vector2(), viewport_size)) { // Check custom region. Rect2i viewport(viewport_offset, viewport_size); Rect2i regioni = p_region; - if (!(regioni.position.x >= viewport.position.x) && (regioni.position.y >= viewport.position.y) && - ((regioni.position.x + regioni.size.x) <= (viewport.position.x + viewport.size.x)) && - ((regioni.position.y + regioni.size.y) <= (viewport.position.y + viewport.size.y))) { + if (!((regioni.position.x >= viewport.position.x) && (regioni.position.y >= viewport.position.y) && + ((regioni.position.x + regioni.size.x) <= (viewport.position.x + viewport.size.x)) && + ((regioni.position.y + regioni.size.y) <= (viewport.position.y + viewport.size.y)))) { ERR_FAIL_V_MSG(INVALID_ID, "When supplying a custom region, it must be contained within the framebuffer rectangle"); } |