UV Layout: don't convert line coordinates to 3d

Although shader uses 3D attribute, it fills missing components with
vec4(0,0,0,1).

This was changed in rBA563ea27eb1a8
This commit is contained in:
Germano Cavalcante 2022-07-28 16:12:06 -03:00
parent ec558f2a91
commit fdebdd681f
2 changed files with 11 additions and 9 deletions

View File

@ -3,7 +3,7 @@
bl_info = {
"name": "UV Layout",
"author": "Campbell Barton, Matt Ebb",
"version": (1, 1, 2),
"version": (1, 1, 3),
"blender": (3, 0, 0),
"location": "Image-Window > UVs > Export UV Layout",
"description": "Export the UV layout as a 2D graphic",
@ -128,10 +128,10 @@ class ExportUVLayout(bpy.types.Operator):
polygon_data = list(self.iter_polygon_data_to_draw(context, meshes))
different_colors = set(color for _, color in polygon_data)
if self.modified:
depsgraph = context.evaluated_depsgraph_get()
for obj in self.iter_objects_to_export(context):
obj_eval = obj.evaluated_get(depsgraph)
obj_eval.to_mesh_clear()
depsgraph = context.evaluated_depsgraph_get()
for obj in self.iter_objects_to_export(context):
obj_eval = obj.evaluated_get(depsgraph)
obj_eval.to_mesh_clear()
export = self.get_exporter()
export(filepath, polygon_data, different_colors, self.size[0], self.size[1], self.opacity)

View File

@ -70,12 +70,14 @@ def draw_lines(face_data):
for i in range(len(uvs)):
start = uvs[i]
end = uvs[(i+1) % len(uvs)]
coords.append((start[0], start[1], 0.0))
coords.append((end[0], end[1], 0.0))
coords.append((start[0], start[1]))
coords.append((end[0], end[1]))
# Use '2D_UNIFORM_COLOR' if smooth lines are not required.
# Use '2D_UNIFORM_COLOR' in the `batch_for_shader` so we don't need to
# convert the coordinates to 3D as in the case of
# '3D_POLYLINE_UNIFORM_COLOR'.
batch = batch_for_shader(gpu.shader.from_builtin('2D_UNIFORM_COLOR'), 'LINES', {"pos" : coords})
shader = gpu.shader.from_builtin('3D_POLYLINE_UNIFORM_COLOR')
batch = batch_for_shader(shader, 'LINES', {"pos" : coords})
shader.bind()
shader.uniform_float("viewportSize", gpu.state.viewport_get()[2:])
shader.uniform_float("lineWidth", 0.5)