From b70b840840e32dad0fc1c84b67ca20d924a8a458 Mon Sep 17 00:00:00 2001 From: Ickshonpe Date: Fri, 24 Feb 2023 13:41:47 +0000 Subject: [PATCH 1/2] skip uv calcs on default image --- crates/bevy_ui/src/render/mod.rs | 65 +++++++++++++++++++------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/crates/bevy_ui/src/render/mod.rs b/crates/bevy_ui/src/render/mod.rs index 0bc8a7ce39c86..1fdcd4b34b3e7 100644 --- a/crates/bevy_ui/src/render/mod.rs +++ b/crates/bevy_ui/src/render/mod.rs @@ -418,6 +418,7 @@ pub fn prepare_uinodes( mut extracted_uinodes: ResMut, ) { ui_meta.vertices.clear(); + let default_image: Handle = DEFAULT_IMAGE_HANDLE.typed().clone_weak(); // sort by ui stack index, starting from the deepest node extracted_uinodes @@ -496,34 +497,44 @@ pub fn prepare_uinodes( continue; } } + let uvs = + if current_batch_handle == default_image { + [ + Vec2::ZERO, + Vec2::X, + Vec2::ONE, + Vec2::Y, + ] + } else { + let atlas_extent = extracted_uinode.atlas_size.unwrap_or(uinode_rect.max); + let mut uvs = [ + Vec2::new( + uinode_rect.min.x + positions_diff[0].x, + uinode_rect.min.y + positions_diff[0].y, + ), + Vec2::new( + uinode_rect.max.x + positions_diff[1].x, + uinode_rect.min.y + positions_diff[1].y, + ), + Vec2::new( + uinode_rect.max.x + positions_diff[2].x, + uinode_rect.max.y + positions_diff[2].y, + ), + Vec2::new( + uinode_rect.min.x + positions_diff[3].x, + uinode_rect.max.y + positions_diff[3].y, + ), + ] + .map(|pos| pos / atlas_extent); - let atlas_extent = extracted_uinode.atlas_size.unwrap_or(uinode_rect.max); - let mut uvs = [ - Vec2::new( - uinode_rect.min.x + positions_diff[0].x, - uinode_rect.min.y + positions_diff[0].y, - ), - Vec2::new( - uinode_rect.max.x + positions_diff[1].x, - uinode_rect.min.y + positions_diff[1].y, - ), - Vec2::new( - uinode_rect.max.x + positions_diff[2].x, - uinode_rect.max.y + positions_diff[2].y, - ), - Vec2::new( - uinode_rect.min.x + positions_diff[3].x, - uinode_rect.max.y + positions_diff[3].y, - ), - ] - .map(|pos| pos / atlas_extent); - - if extracted_uinode.flip_x { - uvs = [uvs[1], uvs[0], uvs[3], uvs[2]]; - } - if extracted_uinode.flip_y { - uvs = [uvs[3], uvs[2], uvs[1], uvs[0]]; - } + if extracted_uinode.flip_x { + uvs = [uvs[1], uvs[0], uvs[3], uvs[2]]; + } + if extracted_uinode.flip_y { + uvs = [uvs[3], uvs[2], uvs[1], uvs[0]]; + } + uvs + }; let color = extracted_uinode.color.as_linear_rgba_f32(); for i in QUAD_INDICES { From f01d8d827cc7f5f60142b7880a487808cac2f667 Mon Sep 17 00:00:00 2001 From: Ickshonpe Date: Fri, 24 Feb 2023 14:05:58 +0000 Subject: [PATCH 2/2] compare ids instead --- crates/bevy_ui/src/render/mod.rs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/crates/bevy_ui/src/render/mod.rs b/crates/bevy_ui/src/render/mod.rs index 1fdcd4b34b3e7..9bf9481df816c 100644 --- a/crates/bevy_ui/src/render/mod.rs +++ b/crates/bevy_ui/src/render/mod.rs @@ -418,7 +418,6 @@ pub fn prepare_uinodes( mut extracted_uinodes: ResMut, ) { ui_meta.vertices.clear(); - let default_image: Handle = DEFAULT_IMAGE_HANDLE.typed().clone_weak(); // sort by ui stack index, starting from the deepest node extracted_uinodes @@ -497,14 +496,8 @@ pub fn prepare_uinodes( continue; } } - let uvs = - if current_batch_handle == default_image { - [ - Vec2::ZERO, - Vec2::X, - Vec2::ONE, - Vec2::Y, - ] + let uvs = if current_batch_handle.id() == DEFAULT_IMAGE_HANDLE.id() { + [Vec2::ZERO, Vec2::X, Vec2::ONE, Vec2::Y] } else { let atlas_extent = extracted_uinode.atlas_size.unwrap_or(uinode_rect.max); let mut uvs = [