Skip to content

Commit

Permalink
Ensure r_aabb is always used when creating surfaces through the Rende…
Browse files Browse the repository at this point in the history
…ringServer
  • Loading branch information
clayjohn committed Oct 23, 2023
1 parent c21c270 commit 3c17f55
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions servers/rendering_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,16 +441,15 @@ Error RenderingServer::_surface_set_data(Array p_arrays, uint64_t p_format, uint

const Vector3 *src = array.ptr();

// Setting vertices means regenerating the AABB.
AABB aabb;
r_aabb = AABB();

if (p_format & ARRAY_FLAG_COMPRESS_ATTRIBUTES) {
// First we need to generate the AABB for the entire surface.
for (int i = 0; i < p_vertex_array_len; i++) {
if (i == 0) {
aabb = AABB(src[i], SMALL_VEC3);
r_aabb = AABB(src[i], SMALL_VEC3);
} else {
aabb.expand_to(src[i]);
r_aabb.expand_to(src[i]);
}
}

Expand All @@ -459,7 +458,7 @@ Error RenderingServer::_surface_set_data(Array p_arrays, uint64_t p_format, uint
if (!using_normals_tangents) {
// Early out if we are only setting vertex positions.
for (int i = 0; i < p_vertex_array_len; i++) {
Vector3 pos = (src[i] - aabb.position) / aabb.size;
Vector3 pos = (src[i] - r_aabb.position) / r_aabb.size;
uint16_t vector[4] = {
(uint16_t)CLAMP(pos.x * 65535, 0, 65535),
(uint16_t)CLAMP(pos.y * 65535, 0, 65535),
Expand Down Expand Up @@ -507,7 +506,7 @@ Error RenderingServer::_surface_set_data(Array p_arrays, uint64_t p_format, uint

// Store vertex position + angle.
{
Vector3 pos = (src[i] - aabb.position) / aabb.size;
Vector3 pos = (src[i] - r_aabb.position) / r_aabb.size;
uint16_t vector[4] = {
(uint16_t)CLAMP(pos.x * 65535, 0, 65535),
(uint16_t)CLAMP(pos.y * 65535, 0, 65535),
Expand Down Expand Up @@ -543,7 +542,7 @@ Error RenderingServer::_surface_set_data(Array p_arrays, uint64_t p_format, uint

// Store vertex position + angle.
{
Vector3 pos = (src[i] - aabb.position) / aabb.size;
Vector3 pos = (src[i] - r_aabb.position) / r_aabb.size;
uint16_t vector[4] = {
(uint16_t)CLAMP(pos.x * 65535, 0, 65535),
(uint16_t)CLAMP(pos.y * 65535, 0, 65535),
Expand All @@ -562,14 +561,12 @@ Error RenderingServer::_surface_set_data(Array p_arrays, uint64_t p_format, uint
memcpy(&vw[p_offsets[ai] + i * p_vertex_stride], vector, sizeof(float) * 3);

if (i == 0) {
aabb = AABB(src[i], SMALL_VEC3);
r_aabb = AABB(src[i], SMALL_VEC3);
} else {
aabb.expand_to(src[i]);
r_aabb.expand_to(src[i]);
}
}
}

r_aabb = aabb;
}

} break;
Expand Down

0 comments on commit 3c17f55

Please sign in to comment.