[Bf-blender-cvs] [30cbbccc600] blender-v2.83-release: Fix (unreported) UV shadow not drawing smooth

Philipp Oeser noreply at git.blender.org
Tue May 19 14:44:41 CEST 2020


Commit: 30cbbccc6002e6cd992e4f1432bec06755d0b2e7
Author: Philipp Oeser
Date:   Mon May 18 10:41:02 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rB30cbbccc6002e6cd992e4f1432bec06755d0b2e7

Fix (unreported) UV shadow not drawing smooth

When showing UV edges after modifiers [draw_uvs_shadow], these were never
drawn anti-aliased [in contrast to the 'main' UVs].

Also: they did not respect the new 'UV Opacity' setting.

Differential Revision: https://developer.blender.org/D7764

===================================================================

M	source/blender/editors/uvedit/uvedit_draw.c

===================================================================

diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index 6ea1bbbcc10..74f58589f11 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -216,13 +216,14 @@ static void uvedit_get_batches(Object *ob,
   }
 }
 
-static void draw_uvs_shadow(SpaceImage *UNUSED(sima),
+static void draw_uvs_shadow(SpaceImage *sima,
                             const Scene *scene,
                             Object *obedit,
                             Depsgraph *depsgraph)
 {
   Object *ob_eval = DEG_get_evaluated_object(depsgraph, obedit);
   Mesh *me = ob_eval->data;
+  const float overlay_alpha = sima->uv_opacity;
   float col[4];
   UI_GetThemeColor4fv(TH_UV_SHADOW, col);
 
@@ -231,9 +232,26 @@ static void draw_uvs_shadow(SpaceImage *UNUSED(sima),
   DRW_mesh_batch_cache_create_requested(ob_eval, me, scene, false, false);
 
   if (edges) {
+    if (sima->flag & SI_SMOOTH_UV) {
+      GPU_line_smooth(true);
+      GPU_blend(true);
+    }
+    else if (overlay_alpha < 1.0f) {
+      GPU_blend(true);
+    }
+
+    col[3] = overlay_alpha;
     GPU_batch_program_set_builtin(edges, GPU_SHADER_2D_UV_UNIFORM_COLOR);
     GPU_batch_uniform_4fv(edges, "color", col);
     GPU_batch_draw(edges);
+
+    if (sima->flag & SI_SMOOTH_UV) {
+      GPU_line_smooth(false);
+      GPU_blend(false);
+    }
+    else if (overlay_alpha < 1.0f) {
+      GPU_blend(false);
+    }
   }
 }



More information about the Bf-blender-cvs mailing list