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