[Bf-blender-cvs] [f3fc8721712] master: Cleanup: Paint Overlays: Remove DRW_STATE_OFFSET_*

Clément Foucault noreply at git.blender.org
Mon May 27 12:58:20 CEST 2019


Commit: f3fc872171203e51109b6500bbaa969933997209
Author: Clément Foucault
Date:   Sun May 26 01:42:36 2019 +0200
Branches: master
https://developer.blender.org/rBf3fc872171203e51109b6500bbaa969933997209

Cleanup: Paint Overlays: Remove DRW_STATE_OFFSET_*

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

M	source/blender/draw/modes/overlay_mode.c
M	source/blender/draw/modes/paint_texture_mode.c
M	source/blender/draw/modes/paint_vertex_mode.c

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

diff --git a/source/blender/draw/modes/overlay_mode.c b/source/blender/draw/modes/overlay_mode.c
index 8e50d08be23..e202dcf01ee 100644
--- a/source/blender/draw/modes/overlay_mode.c
+++ b/source/blender/draw/modes/overlay_mode.c
@@ -71,6 +71,7 @@ typedef struct OVERLAY_Data {
 typedef struct OVERLAY_PrivateData {
   DRWShadingGroup *face_orientation_shgrp;
   DRWShadingGroup *face_wires_shgrp;
+  DRWView *view_wires;
   BLI_mempool *wire_color_mempool;
   View3DOverlay overlay;
   float wire_step_param;
@@ -163,6 +164,8 @@ static void overlay_engine_init(void *vedata)
     });
 #endif
   }
+
+  stl->g_data->view_wires = DRW_view_create_with_zoffset(draw_ctx->rv3d, 1.0f);
 }
 
 static void overlay_cache_init(void *vedata)
@@ -214,7 +217,7 @@ static void overlay_cache_init(void *vedata)
   {
     /* Wireframe */
     DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS |
-                     DRW_STATE_FIRST_VERTEX_CONVENTION | DRW_STATE_OFFSET_NEGATIVE;
+                     DRW_STATE_FIRST_VERTEX_CONVENTION;
     float wire_size = U.pixelsize * 0.5f;
 
     float winmat[4][4];
@@ -489,8 +492,11 @@ static void overlay_draw_scene(void *vedata)
     DRW_stats_query_end();
   }
 
+  DRW_view_set_active(stl->g_data->view_wires);
   DRW_draw_pass(psl->face_wireframe_pass);
 
+  DRW_view_set_active(NULL);
+
   /* TODO(fclem): find a way to unify the multisample pass together
    * (non meshes + armature + wireframe) */
   MULTISAMPLE_SYNC_DISABLE(dfbl, dtxl);
diff --git a/source/blender/draw/modes/paint_texture_mode.c b/source/blender/draw/modes/paint_texture_mode.c
index ee8ec78e91b..7c87a6d402c 100644
--- a/source/blender/draw/modes/paint_texture_mode.c
+++ b/source/blender/draw/modes/paint_texture_mode.c
@@ -128,14 +128,17 @@ typedef struct PAINT_TEXTURE_PrivateData {
   /* face-mask  */
   DRWShadingGroup *lwire_select_shgrp;
   DRWShadingGroup *face_select_shgrp;
+
+  DRWView *view_wires;
 } PAINT_TEXTURE_PrivateData; /* Transient data */
 
 /* *********** FUNCTIONS *********** */
 
 /* Init Textures, Framebuffers, Storage and Shaders.
  * It is called for every frames. */
-static void PAINT_TEXTURE_engine_init(void *UNUSED(vedata))
+static void PAINT_TEXTURE_engine_init(void *vedata)
 {
+  PAINT_TEXTURE_StorageList *stl = ((PAINT_TEXTURE_Data *)vedata)->stl;
   const DRWContextState *draw_ctx = DRW_context_state_get();
   PAINT_TEXTURE_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
 
@@ -185,6 +188,14 @@ static void PAINT_TEXTURE_engine_init(void *UNUSED(vedata))
         .defs = (const char *[]){sh_cfg_data->def, NULL},
     });
   }
+
+  if (!stl->g_data) {
+    /* Alloc transient pointers */
+    stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
+    stl->g_data->shgroup_image_array = NULL;
+  }
+
+  stl->g_data->view_wires = DRW_view_create_with_zoffset(draw_ctx->rv3d, 1.0f);
 }
 
 static DRWShadingGroup *create_texture_paint_shading_group(PAINT_TEXTURE_PassList *psl,
@@ -222,12 +233,6 @@ static void PAINT_TEXTURE_cache_init(void *vedata)
   PAINT_TEXTURE_PassList *psl = ((PAINT_TEXTURE_Data *)vedata)->psl;
   PAINT_TEXTURE_StorageList *stl = ((PAINT_TEXTURE_Data *)vedata)->stl;
 
-  if (!stl->g_data) {
-    /* Alloc transient pointers */
-    stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
-    stl->g_data->shgroup_image_array = NULL;
-  }
-
   const DRWContextState *draw_ctx = DRW_context_state_get();
   PAINT_TEXTURE_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
 
@@ -296,9 +301,8 @@ static void PAINT_TEXTURE_cache_init(void *vedata)
 
   /* Face Mask */
   {
-    DRWPass *pass = DRW_pass_create("Wire Mask Pass",
-                                    (DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH |
-                                     DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_OFFSET_NEGATIVE));
+    DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL;
+    DRWPass *pass = DRW_pass_create("Wire Mask Pass", state);
     DRWShadingGroup *shgrp = DRW_shgroup_create(sh_data->wire_select_overlay, pass);
 
     DRW_shgroup_uniform_block(shgrp, "globalsBlock", G_draw.block_ubo);
@@ -311,10 +315,9 @@ static void PAINT_TEXTURE_cache_init(void *vedata)
   }
 
   {
-
-    DRWPass *pass = DRW_pass_create("Face Mask Pass",
-                                    DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH |
-                                        DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_BLEND);
+    DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL |
+                     DRW_STATE_BLEND;
+    DRWPass *pass = DRW_pass_create("Face Mask Pass", state);
     DRWShadingGroup *shgrp = DRW_shgroup_create(sh_data->face_select_overlay, pass);
     static float col[4] = {1.0f, 1.0f, 1.0f, 0.2f};
     DRW_shgroup_uniform_vec4(shgrp, "color", col, 1);
@@ -405,6 +408,7 @@ static void PAINT_TEXTURE_draw_scene(void *vedata)
 {
   PAINT_TEXTURE_PassList *psl = ((PAINT_TEXTURE_Data *)vedata)->psl;
   PAINT_TEXTURE_FramebufferList *fbl = ((PAINT_TEXTURE_Data *)vedata)->fbl;
+  PAINT_TEXTURE_StorageList *stl = ((PAINT_TEXTURE_Data *)vedata)->stl;
 
   /* Default framebuffer and texture */
   DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
@@ -415,7 +419,11 @@ static void PAINT_TEXTURE_draw_scene(void *vedata)
   DRW_draw_pass(psl->image_faces);
 
   DRW_draw_pass(psl->face_select_overlay);
+
+  DRW_view_set_active(stl->g_data->view_wires);
   DRW_draw_pass(psl->wire_select_overlay);
+
+  DRW_view_set_active(NULL);
 }
 
 /* Cleanup when destroying the engine.
diff --git a/source/blender/draw/modes/paint_vertex_mode.c b/source/blender/draw/modes/paint_vertex_mode.c
index 815cf09487e..1deee01a779 100644
--- a/source/blender/draw/modes/paint_vertex_mode.c
+++ b/source/blender/draw/modes/paint_vertex_mode.c
@@ -100,12 +100,14 @@ typedef struct PAINT_VERTEX_PrivateData {
   } by_mode[MODE_LEN];
   DRWShadingGroup *face_select_shgrp;
   DRWShadingGroup *vert_select_shgrp;
+  DRWView *view_wires;
 } PAINT_VERTEX_PrivateData; /* Transient data */
 
 /* *********** FUNCTIONS *********** */
 
-static void PAINT_VERTEX_engine_init(void *UNUSED(vedata))
+static void PAINT_VERTEX_engine_init(void *vedata)
 {
+  PAINT_VERTEX_StorageList *stl = ((PAINT_VERTEX_Data *)vedata)->stl;
   const DRWContextState *draw_ctx = DRW_context_state_get();
   PAINT_VERTEX_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
 
@@ -175,6 +177,13 @@ static void PAINT_VERTEX_engine_init(void *UNUSED(vedata))
       });
     }
   }
+
+  if (!stl->g_data) {
+    /* Alloc transient pointers */
+    stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
+  }
+
+  stl->g_data->view_wires = DRW_view_create_with_zoffset(draw_ctx->rv3d, 1.0f);
 }
 
 static void PAINT_VERTEX_cache_init(void *vedata)
@@ -186,11 +195,6 @@ static void PAINT_VERTEX_cache_init(void *vedata)
   const RegionView3D *rv3d = draw_ctx->rv3d;
   PAINT_VERTEX_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
 
-  if (!stl->g_data) {
-    /* Alloc transient pointers */
-    stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
-  }
-
   /* Vertex color pass */
   {
     DRWPass *pass = DRW_pass_create(
@@ -223,9 +227,8 @@ static void PAINT_VERTEX_cache_init(void *vedata)
   }
 
   {
-    DRWPass *pass = DRW_pass_create("Wire Pass",
-                                    DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH |
-                                        DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_OFFSET_NEGATIVE);
+    DRWPass *pass = DRW_pass_create(
+        "Wire Pass", DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL);
     for (int i = 0; i < MODE_LEN; i++) {
       DRWShadingGroup *shgrp = DRW_shgroup_create(sh_data->by_mode[i].wire_overlay, pass);
       DRW_shgroup_uniform_block(shgrp, "globalsBlock", G_draw.block_ubo);
@@ -240,7 +243,7 @@ static void PAINT_VERTEX_cache_init(void *vedata)
   {
     DRWPass *pass = DRW_pass_create("Wire Mask Pass",
                                     DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH |
-                                        DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_OFFSET_NEGATIVE);
+                                        DRW_STATE_DEPTH_LESS_EQUAL);
     for (int i = 0; i < MODE_LEN; i++) {
       DRWShadingGroup *shgrp = DRW_shgroup_create(sh_data->by_mode[i].wire_select_overlay, pass);
       DRW_shgroup_uniform_block(shgrp, "globalsBlock", G_draw.block_ubo);
@@ -269,7 +272,7 @@ static void PAINT_VERTEX_cache_init(void *vedata)
   {
     DRWPass *pass = DRW_pass_create("Vert Mask Pass",
                                     DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH |
-                                        DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_OFFSET_NEGATIVE);
+                                        DRW_STATE_DEPTH_LESS_EQUAL);
     DRWShadingGroup *shgrp = DRW_shgroup_create(sh_data->vert_select_overlay, pass);
     DRW_shgroup_uniform_block(shgrp, "globalsBlock", G_draw.block_ubo);
     if (rv3d->rflag & RV3D_CLIPPING) {
@@ -334,13 +337,18 @@ static void PAINT_VERTEX_cache_populate(void *vedata, Object *ob)
 static void PAINT_VERTEX_draw_scene(void *vedata)
 {
   PAINT_VERTEX_PassList *psl = ((PAINT_VERTEX_Data *)vedata)->psl;
+  PAINT_VERTEX_StorageList *stl = ((PAINT_VERTEX_Data *)vedata)->stl;
   for (int i = 0; i < MODE_LEN; i++) {
     DRW_draw_pass(psl->by_mode[i].color_faces);
   }
+  DRW_draw_pass(psl->face_select_overlay);
+
+  DRW_view_set_active(stl->g_data->view_wires);
   DRW_draw_pass(psl->wire_overlay);
   DRW_draw_pass(psl->wire_select_overlay);
   DRW_draw_pass(psl->vert_select_overlay);
-  DRW_draw_pass(psl->face_select_overlay);
+
+  DRW_view_set_active(NULL);
 }
 
 static void PAINT_VERTEX_engine_free(void)



More information about the Bf-blender-cvs mailing list