Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'magic_uv/op/uv_inspection.py')
-rw-r--r--magic_uv/op/uv_inspection.py102
1 files changed, 46 insertions, 56 deletions
diff --git a/magic_uv/op/uv_inspection.py b/magic_uv/op/uv_inspection.py
index bcfe80be..4dab465a 100644
--- a/magic_uv/op/uv_inspection.py
+++ b/magic_uv/op/uv_inspection.py
@@ -2,7 +2,7 @@
__author__ = "Nutti <nutti.metro@gmail.com>"
__status__ = "production"
-__version__ = "6.6"
+__version__ = "6.7"
__date__ = "22 Apr 2022"
import random
@@ -17,10 +17,8 @@ from ..utils.bl_class_registry import BlClassRegistry
from ..utils.property_class_registry import PropertyClassRegistry
from ..utils import compatibility as compat
-if compat.check_version(2, 80, 0) >= 0:
- from ..lib import bglx as bgl
-else:
- import bgl
+import gpu
+from gpu_extras.batch import batch_for_shader
def _is_valid_context(context):
@@ -234,41 +232,40 @@ class MUV_OT_UVInspection_Render(bpy.types.Operator):
return
# OpenGL configuration.
- bgl.glEnable(bgl.GL_BLEND)
- bgl.glEnable(bgl.GL_DEPTH_TEST)
+ gpu.state.blend_set('ALPHA')
+ gpu.state.depth_test_set('LESS_EQUAL')
+
+ shader = gpu.shader.from_builtin("UNIFORM_COLOR")
+ shader.bind()
# Render faces whose UV is overlapped.
if sc.muv_uv_inspection_show_overlapped:
- color = prefs.uv_inspection_overlapped_color_for_v3d
+ shader.uniform_float("color", prefs.uv_inspection_overlapped_color_for_v3d)
+
for obj, findices in props.overlapped_info_for_v3d.items():
world_mat = obj.matrix_world
bm = bmesh.from_edit_mesh(obj.data)
for fidx in findices:
- bgl.glBegin(bgl.GL_TRIANGLE_FAN)
- bgl.glColor4f(color[0], color[1], color[2], color[3])
- for l in bm.faces[fidx].loops:
- co = compat.matmul(world_mat, l.vert.co)
- bgl.glVertex3f(co[0], co[1], co[2])
- bgl.glEnd()
+ coords = [compat.matmul(world_mat, l.vert.co) for l in bm.faces[fidx].loops]
+ batch = batch_for_shader(shader, 'TRI_FAN', {"pos": coords})
+ batch.draw(shader)
# Render faces whose UV is flipped.
if sc.muv_uv_inspection_show_flipped:
- color = prefs.uv_inspection_flipped_color_for_v3d
+ shader.uniform_float("color", prefs.uv_inspection_flipped_color_for_v3d)
+
for obj, findices in props.filpped_info_for_v3d.items():
world_mat = obj.matrix_world
bm = bmesh.from_edit_mesh(obj.data)
for fidx in findices:
- bgl.glBegin(bgl.GL_TRIANGLE_FAN)
- bgl.glColor4f(color[0], color[1], color[2], color[3])
- for l in bm.faces[fidx].loops:
- co = compat.matmul(world_mat, l.vert.co)
- bgl.glVertex3f(co[0], co[1], co[2])
- bgl.glEnd()
+ coords = [compat.matmul(world_mat, l.vert.co) for l in bm.faces[fidx].loops]
+ batch = batch_for_shader(shader, 'TRI_FAN', {"pos": coords})
+ batch.draw(shader)
- bgl.glDisable(bgl.GL_DEPTH_TEST)
- bgl.glDisable(bgl.GL_BLEND)
+ gpu.state.depth_test_set('NONE')
+ gpu.state.blend_set('NONE')
@staticmethod
def draw(_, context):
@@ -281,53 +278,46 @@ class MUV_OT_UVInspection_Render(bpy.types.Operator):
return
# OpenGL configuration
- bgl.glEnable(bgl.GL_BLEND)
+ gpu.state.blend_set('ALPHA')
+
+ shader = gpu.shader.from_builtin("UNIFORM_COLOR")
+ shader.bind()
# render overlapped UV
if sc.muv_uv_inspection_show_overlapped:
- color = prefs.uv_inspection_overlapped_color
+ shader.uniform_float("color", prefs.uv_inspection_overlapped_color)
+
for info in props.overlapped_info:
if sc.muv_uv_inspection_show_mode == 'PART':
for poly in info["polygons"]:
- bgl.glBegin(bgl.GL_TRIANGLE_FAN)
- bgl.glColor4f(color[0], color[1], color[2], color[3])
- for uv in poly:
- x, y = context.region.view2d.view_to_region(
- uv.x, uv.y, clip=False)
- bgl.glVertex2f(x, y)
- bgl.glEnd()
+ coords = [context.region.view2d.view_to_region(uv.x, uv.y, clip=False) for uv in poly]
+ batch = batch_for_shader(shader, 'TRI_FAN', {"pos": coords})
+ batch.draw(shader)
+
elif sc.muv_uv_inspection_show_mode == 'FACE':
- bgl.glBegin(bgl.GL_TRIANGLE_FAN)
- bgl.glColor4f(color[0], color[1], color[2], color[3])
- for uv in info["subject_uvs"]:
- x, y = context.region.view2d.view_to_region(
- uv.x, uv.y, clip=False)
- bgl.glVertex2f(x, y)
- bgl.glEnd()
+ coords = [
+ context.region.view2d.view_to_region(
+ uv.x, uv.y, clip=False) for uv in info["subject_uvs"]]
+ batch = batch_for_shader(shader, 'TRI_FAN', {"pos": coords})
+ batch.draw(shader)
# render flipped UV
if sc.muv_uv_inspection_show_flipped:
- color = prefs.uv_inspection_flipped_color
+ shader.uniform_float("color", prefs.uv_inspection_flipped_color)
+
for info in props.flipped_info:
if sc.muv_uv_inspection_show_mode == 'PART':
for poly in info["polygons"]:
- bgl.glBegin(bgl.GL_TRIANGLE_FAN)
- bgl.glColor4f(color[0], color[1], color[2], color[3])
- for uv in poly:
- x, y = context.region.view2d.view_to_region(
- uv.x, uv.y, clip=False)
- bgl.glVertex2f(x, y)
- bgl.glEnd()
+ coords = [context.region.view2d.view_to_region(uv.x, uv.y, clip=False) for uv in poly]
+ batch = batch_for_shader(shader, 'TRI_FAN', {"pos": coords})
+ batch.draw(shader)
+
elif sc.muv_uv_inspection_show_mode == 'FACE':
- bgl.glBegin(bgl.GL_TRIANGLE_FAN)
- bgl.glColor4f(color[0], color[1], color[2], color[3])
- for uv in info["uvs"]:
- x, y = context.region.view2d.view_to_region(
- uv.x, uv.y, clip=False)
- bgl.glVertex2f(x, y)
- bgl.glEnd()
-
- bgl.glDisable(bgl.GL_BLEND)
+ coords = [context.region.view2d.view_to_region(uv.x, uv.y, clip=False) for uv in info["uvs"]]
+ batch = batch_for_shader(shader, 'TRI_FAN', {"pos": coords})
+ batch.draw(shader)
+
+ gpu.state.blend_set('NONE')
def invoke(self, context, _):
if not MUV_OT_UVInspection_Render.is_running(context):