Commit: 6c63790c2ecd69b585ad13ad9d99a03f947d84bd
Author: Jeroen Bakker
Date:   Tue Aug 18 13:48:36 2020 +0200
Branches: uvimage-editor-drawing
https://developer.blender.org/rB6c63790c2ecd69b585ad13ad9d99a03f947d84bd

Migrated overlay2d to overlay

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

M       source/blender/draw/CMakeLists.txt
M       source/blender/draw/engines/overlay/overlay_background.c
A       source/blender/draw/engines/overlay/overlay_edit_uv.c
M       source/blender/draw/engines/overlay/overlay_engine.c
M       source/blender/draw/engines/overlay/overlay_private.h
M       source/blender/draw/engines/overlay/overlay_shader.c
M       source/blender/draw/engines/overlay/shaders/background_frag.glsl
R100    source/blender/draw/engines/overlay2d/shaders/common_overlay2d_lib.glsl 
source/blender/draw/engines/overlay/shaders/common_overlay_lib.glsl
R098    
source/blender/draw/engines/overlay2d/shaders/overlay2d_wireframe_frag.glsl     
source/blender/draw/engines/overlay/shaders/edit_uv_edges_frag.glsl
R097    
source/blender/draw/engines/overlay2d/shaders/overlay2d_wireframe_geom.glsl     
source/blender/draw/engines/overlay/shaders/edit_uv_edges_geom.glsl
R100    
source/blender/draw/engines/overlay2d/shaders/overlay2d_wireframe_vert.glsl     
source/blender/draw/engines/overlay/shaders/edit_uv_edges_vert.glsl
R100    source/blender/draw/engines/overlay2d/shaders/uv_face_dots_vert.glsl    
source/blender/draw/engines/overlay/shaders/edit_uv_face_dots_vert.glsl
R100    source/blender/draw/engines/overlay2d/shaders/uv_faces_vert.glsl        
source/blender/draw/engines/overlay/shaders/edit_uv_faces_vert.glsl
R100    
source/blender/draw/engines/overlay2d/shaders/overlay2d_uv_stretching_vert.glsl 
source/blender/draw/engines/overlay/shaders/edit_uv_stretching_vert.glsl
R100    
source/blender/draw/engines/overlay2d/shaders/overlay2d_tiled_image_border_vert.glsl
    
source/blender/draw/engines/overlay/shaders/edit_uv_tiled_image_borders_vert.glsl
R100    source/blender/draw/engines/overlay2d/shaders/uv_verts_frag.glsl        
source/blender/draw/engines/overlay/shaders/edit_uv_verts_frag.glsl
R100    source/blender/draw/engines/overlay2d/shaders/uv_verts_vert.glsl        
source/blender/draw/engines/overlay/shaders/edit_uv_verts_vert.glsl
D       source/blender/draw/engines/overlay2d/overlay2d_background.c
D       source/blender/draw/engines/overlay2d/overlay2d_engine.c
D       source/blender/draw/engines/overlay2d/overlay2d_engine.h
D       source/blender/draw/engines/overlay2d/overlay2d_private.h
D       source/blender/draw/engines/overlay2d/overlay2d_shaders.c
D       source/blender/draw/engines/overlay2d/overlay2d_tiled_image.c
D       source/blender/draw/engines/overlay2d/overlay2d_uv.c
D       source/blender/draw/engines/overlay2d/overlay2d_uv_shadow.c
D       source/blender/draw/engines/overlay2d/overlay2d_uv_stretching.c
D       
source/blender/draw/engines/overlay2d/shaders/overlay2d_background_frag.glsl
M       source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/CMakeLists.txt 
b/source/blender/draw/CMakeLists.txt
index ed5fdac38e3..798e066c318 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -135,6 +135,7 @@ set(SRC
   engines/overlay/overlay_edit_curve.c
   engines/overlay/overlay_edit_mesh.c
   engines/overlay/overlay_edit_text.c
+  engines/overlay/overlay_edit_uv.c
   engines/overlay/overlay_engine.c
   engines/overlay/overlay_extra.c
   engines/overlay/overlay_facing.c
@@ -150,13 +151,6 @@ set(SRC
   engines/overlay/overlay_sculpt.c
   engines/overlay/overlay_shader.c
   engines/overlay/overlay_wireframe.c
-  engines/overlay2d/overlay2d_background.c
-  engines/overlay2d/overlay2d_engine.c
-  engines/overlay2d/overlay2d_tiled_image.c
-  engines/overlay2d/overlay2d_shaders.c
-  engines/overlay2d/overlay2d_uv.c
-  engines/overlay2d/overlay2d_uv_shadow.c
-  engines/overlay2d/overlay2d_uv_stretching.c
 
   DRW_engine.h
   DRW_engine_types.h
@@ -328,6 +322,7 @@ 
data_to_c_simple(engines/basic/shaders/conservative_depth_geom.glsl SRC)
 data_to_c_simple(engines/basic/shaders/depth_vert.glsl SRC)
 data_to_c_simple(engines/basic/shaders/depth_frag.glsl SRC)
 
+data_to_c_simple(engines/overlay/shaders/common_overlay_lib.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/antialiasing_frag.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/antialiasing_vert.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/armature_dof_vert.glsl SRC)
@@ -371,6 +366,15 @@ 
data_to_c_simple(engines/overlay/shaders/edit_mesh_skin_root_vert.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/edit_mesh_vert.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/edit_particle_strand_vert.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/edit_particle_point_vert.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_edges_vert.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_edges_geom.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_edges_frag.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_verts_vert.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_verts_frag.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_faces_vert.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_face_dots_vert.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_stretching_vert.glsl SRC)
+data_to_c_simple(engines/overlay/shaders/edit_uv_tiled_image_borders_vert.glsl 
SRC)
 data_to_c_simple(engines/overlay/shaders/extra_frag.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/extra_vert.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/extra_groundline_vert.glsl SRC)
@@ -411,18 +415,6 @@ 
data_to_c_simple(engines/overlay/shaders/wireframe_vert.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/wireframe_frag.glsl SRC)
 data_to_c_simple(engines/overlay/shaders/xray_fade_frag.glsl SRC)
 
-data_to_c_simple(engines/overlay2d/shaders/common_overlay2d_lib.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/overlay2d_background_frag.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/overlay2d_tiled_image_border_vert.glsl
 SRC)
-data_to_c_simple(engines/overlay2d/shaders/overlay2d_wireframe_frag.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/overlay2d_wireframe_geom.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/overlay2d_wireframe_vert.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/overlay2d_uv_stretching_vert.glsl 
SRC)
-data_to_c_simple(engines/overlay2d/shaders/uv_faces_vert.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/uv_face_dots_vert.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/uv_verts_vert.glsl SRC)
-data_to_c_simple(engines/overlay2d/shaders/uv_verts_frag.glsl SRC)
-
 data_to_c_simple(engines/image/shaders/engine_image_frag.glsl SRC)
 data_to_c_simple(engines/image/shaders/engine_image_unavailable_frag.glsl SRC)
 data_to_c_simple(engines/image/shaders/engine_image_unavailable_vert.glsl SRC)
diff --git a/source/blender/draw/engines/overlay/overlay_background.c 
b/source/blender/draw/engines/overlay/overlay_background.c
index f52ae691a35..c760e2c27e9 100644
--- a/source/blender/draw/engines/overlay/overlay_background.c
+++ b/source/blender/draw/engines/overlay/overlay_background.c
@@ -31,6 +31,7 @@
 #define BG_GRADIENT 1
 #define BG_CHECKER 2
 #define BG_RADIAL 3
+#define BG_SOLID_CHECKER 4
 
 void OVERLAY_background_cache_init(OVERLAY_Data *vedata)
 {
@@ -40,7 +41,7 @@ void OVERLAY_background_cache_init(OVERLAY_Data *vedata)
   const DRWContextState *draw_ctx = DRW_context_state_get();
   const Scene *scene = draw_ctx->scene;
   const RegionView3D *rv3d = draw_ctx->rv3d;
-  const BoundBox *bb = rv3d->clipbb;
+  const BoundBox *bb = rv3d ? rv3d->clipbb : NULL;
   const View3D *v3d = draw_ctx->v3d;
   bool draw_clipping_bounds = (pd->clipping_state != 0);
 
@@ -50,8 +51,9 @@ void OVERLAY_background_cache_init(OVERLAY_Data *vedata)
 
     if (DRW_state_is_opengl_render() && !DRW_state_draw_background()) {
       background_type = BG_SOLID;
-      zero_v3(color_override);
-      color_override[3] = 1.0f;
+    }
+    else if (pd->is_image_editor) {
+      background_type = BG_SOLID_CHECKER;
     }
     else if (!DRW_state_draw_background()) {
       background_type = BG_CHECKER;
diff --git a/source/blender/draw/engines/overlay/overlay_edit_uv.c 
b/source/blender/draw/engines/overlay/overlay_edit_uv.c
new file mode 100644
index 00000000000..c8a2379a016
--- /dev/null
+++ b/source/blender/draw/engines/overlay/overlay_edit_uv.c
@@ -0,0 +1,368 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Copyright 2019, Blender Foundation.
+ */
+
+/** \file
+ * \ingroup draw_engine
+ */
+#include "DRW_render.h"
+
+#include "draw_cache_impl.h"
+#include "draw_manager_text.h"
+
+#include "BKE_image.h"
+
+#include "DNA_mesh_types.h"
+
+#include "ED_image.h"
+
+#include "GPU_batch.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+#include "overlay_private.h"
+
+typedef struct OVERLAY_StretchingAreaTotals {
+  void *next, *prev;
+  float *total_area;
+  float *total_area_uv;
+} OVERLAY_StretchingAreaTotals;
+
+static struct {
+  GPUBatch *gpu_batch_instances;
+} e_data = {0}; /* Engine data */
+
+static OVERLAY_UVLineStyle edit_uv_line_style_from_space_image(const 
SpaceImage *sima)
+{
+  const bool is_uv_editor = sima->mode == SI_MODE_UV;
+  if (is_uv_editor) {
+    switch (sima->dt_uv) {
+      case SI_UVDT_OUTLINE:
+        return OVERLAY_UV_LINE_STYLE_OUTLINE;
+      case SI_UVDT_BLACK:
+        return OVERLAY_UV_LINE_STYLE_BLACK;
+      case SI_UVDT_WHITE:
+        return OVERLAY_UV_LINE_STYLE_WHITE;
+      case SI_UVDT_DASH:
+        return OVERLAY_UV_LINE_STYLE_DASH;
+      default:
+        return OVERLAY_UV_LINE_STYLE_BLACK;
+    }
+  }
+  else {
+    return OVERLAY_UV_LINE_STYLE_SHADOW;
+  }
+}
+
+/* -------------------------------------------------------------------- */
+/** \name Internal API
+ * \{ */
+
+void OVERLAY_edit_uv_init(OVERLAY_Data *vedata)
+{
+  OVERLAY_StorageList *stl = vedata->stl;
+  OVERLAY_PrivateData *pd = stl->pd;
+  const DRWContextState *draw_ctx = DRW_context_state_get();
+  SpaceImage *sima = (SpaceImage *)draw_ctx->space_data;
+  const Scene *scene = draw_ctx->scene;
+  const ToolSettings *ts = scene->toolsettings;
+
+  Image *image = sima->image;
+  const bool is_image_type =
+      image && ELEM(image->type, IMA_TYPE_IMAGE, IMA_TYPE_MULTILAYER, 
IMA_TYPE_UV_TEST);
+  const bool is_uv_editor = sima->mode == SI_MODE_UV;
+  const bool has_edit_object = (draw_ctx->object_edit) != NULL;
+  const bool is_paint_mode = sima->mode == SI_MODE_PAINT;
+  const bool is_view_mode = sima->mode == SI_MODE_VIEW;
+  const bool is_edit_mode = draw_ctx->object_mode == OB_MODE_EDIT;
+  const bool do_uv_overlay = is_image_type && is_uv_editor && has_edit_object;
+  const bool show_modified_uvs = sima->flag & SI_DRAWSHADOW;
+  const bool is_tiled_image = image && (image->source == IMA_SRC_TILED);
+  const bool do_faces = ((sima->flag & SI_NO_DRAWFACES) == 0);
+  const bool do_face_dots = (ts->uv_flag & UV_SYNC_SELECTION) ?
+                                (ts->selectmode & SCE_SELECT_FACE) != 0 :
+                                (ts->uv_selectmode == UV_SELECT_FACE);
+  const bool do_uvstretching_overlay = is_image_type && is_uv_editor && 
is_edit_mode &&
+                                       ((sima->flag & SI_DRAW_STRETCH) != 0);
+  pd->edit_uv.do_faces = do_faces && !do_uvstretching_overlay;
+  pd->edit_uv.do_face_dots = do_faces && do_face_dots;
+
+  pd->edit_uv.do_uv_overlay = do_uv_overlay;
+  pd->edit_uv.do_uv_shadow_overlay =
+      is_image_type &&
+      ((is_paint_mode &&
+        ((draw_ctx->object_mode & (OB_MODE_TEXTURE_PAINT | OB_MODE_EDIT)) != 
0)) ||
+       (is_view_mode && ((draw_ctx->object_mode & (OB_MODE_TEXTURE_PAINT)) != 
0)) ||
+       (do_uv_overlay && (show_modified_uvs)));
+  pd->edit_uv.do_uv_stretching_overlay = do_uvstretching_overlay;
+  pd->edit_uv.uv_opacity = sima->uv_opacity;
+  pd->edit_uv.do_tiled_image_overlay = is_image_type && is_tiled_image;
+
+  pd->edit_uv.dash_length = 4.0f * UI_DPI_FAC;
+  pd->edit_uv.line_style = edit_uv_line_style_from_space_image(sima);
+  pd->edit_uv.do_smooth_wire = (sima->flag & SI_SMOOTH_UV) != 0;
+
+  pd->edit_uv.draw_type = sima->dt_uvstretch;
+  BLI_listbase_clear(&pd->edit_uv.totals);
+  pd->edit_uv.total_area_ratio = 0.0f;
+  pd->edit_uv.total_area_ratio_inv = 0.0f;
+
+  ED_space_image_get_uv_aspect(sima, &pd->edit_uv.aspect[0], 
&pd->edit_uv.aspect[1]);
+}
+
+void OVERLAY_edit_uv_cache_init(OVERLAY_Data *vedata)
+{

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to