Optimize color computation in prepare_uinodes (#7311)
# Objective Speed up `prepare_uinodes`. The color `[f32; 4]` is being computed separately for every vertex in the UI, even though the color is the same for all 6 verticies. ## Solution Avoid recomputing the color and cache it for all 6 verticies. ## Performance On `many_buttons`, this shaved off 33% of the time in `prepare_uinodes` (7.67ms -> 5.09ms) on my local machine. 
This commit is contained in:
parent
a85b740f24
commit
7a176ae0a8
@ -523,11 +523,12 @@ pub fn prepare_uinodes(
|
|||||||
uvs = [uvs[3], uvs[2], uvs[1], uvs[0]];
|
uvs = [uvs[3], uvs[2], uvs[1], uvs[0]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let color = extracted_uinode.background_color.as_linear_rgba_f32();
|
||||||
for i in QUAD_INDICES {
|
for i in QUAD_INDICES {
|
||||||
ui_meta.vertices.push(UiVertex {
|
ui_meta.vertices.push(UiVertex {
|
||||||
position: positions_clipped[i].into(),
|
position: positions_clipped[i].into(),
|
||||||
uv: uvs[i].into(),
|
uv: uvs[i].into(),
|
||||||
color: extracted_uinode.background_color.as_linear_rgba_f32(),
|
color,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user