[Bf-blender-cvs] [88f98c0df41] temp-T97352-3d-texturing-seam-bleeding-b2: Improve performance fan uv coordinates.
Jeroen Bakker
noreply at git.blender.org
Wed Jul 6 13:26:54 CEST 2022
Commit: 88f98c0df4109dab264dda2239f1086f99d0ff4c
Author: Jeroen Bakker
Date: Wed Jul 6 13:26:39 2022 +0200
Branches: temp-T97352-3d-texturing-seam-bleeding-b2
https://developer.blender.org/rB88f98c0df4109dab264dda2239f1086f99d0ff4c
Improve performance fan uv coordinates.
===================================================================
M source/blender/blenkernel/intern/uv_islands.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/uv_islands.cc b/source/blender/blenkernel/intern/uv_islands.cc
index d3d31ecaa03..3bd9566898f 100644
--- a/source/blender/blenkernel/intern/uv_islands.cc
+++ b/source/blender/blenkernel/intern/uv_islands.cc
@@ -185,24 +185,21 @@ struct Fan {
}
}
- void init_uv_coordinates(UVVertex &uv_vertex, const UVIsland &island)
+ void init_uv_coordinates(UVVertex &uv_vertex)
{
for (InnerEdge &fan_edge : inner_edges) {
- int2 test_edge = int2(fan_edge.primitive->vertices[fan_edge.vert_order[0]].vertex->v,
- fan_edge.primitive->vertices[fan_edge.vert_order[1]].vertex->v);
- for (const UVPrimitive &uv_primitive : island.uv_primitives) {
- for (UVEdge *edge : uv_primitive.edges) {
- int2 o(edge->vertices[0]->vertex->v, edge->vertices[1]->vertex->v);
- if ((test_edge.x == o.x && test_edge.y == o.y) ||
- (test_edge.x == o.y && test_edge.y == o.x)) {
- fan_edge.uvs[0] = uv_vertex.uv;
- for (int i = 0; i < 2; i++) {
- if (edge->vertices[i]->uv == uv_vertex.uv) {
- fan_edge.uvs[1] = edge->vertices[1 - i]->uv;
- break;
- }
- }
- }
+ int64_t other_v = fan_edge.primitive->vertices[fan_edge.vert_order[0]].vertex->v;
+ if (other_v == uv_vertex.vertex->v) {
+ other_v = fan_edge.primitive->vertices[fan_edge.vert_order[1]].vertex->v;
+ }
+
+ for (UVEdge *edge : uv_vertex.uv_edges) {
+ const UVVertex *other_uv_vertex = edge->get_other_uv_vertex(uv_vertex.vertex);
+ int64_t other_edge_v = other_uv_vertex->vertex->v;
+ if (other_v == other_edge_v) {
+ fan_edge.uvs[0] = uv_vertex.uv;
+ fan_edge.uvs[1] = other_uv_vertex->uv;
+ break;
}
}
}
@@ -361,7 +358,7 @@ static void extend_at_vert(UVIsland &island, UVBorderCorner &corner)
printf("TODO: Unknown how to handle non-manifold meshes.\n");
return;
}
- fan.init_uv_coordinates(*uv_vertex, island);
+ fan.init_uv_coordinates(*uv_vertex);
fan.mark_already_added_segments(*uv_vertex);
#ifdef VALIDATE
print(fan);
More information about the Bf-blender-cvs
mailing list