diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-26 02:42:36 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-27 13:58:14 +0300 |
commit | f3fc872171203e51109b6500bbaa969933997209 (patch) | |
tree | 158a8fe5565428686f0629ef2d77853d1edcea2a /source | |
parent | 01f5ef82afddcdb078644ce6b63ce370784b2a84 (diff) |
Cleanup: Paint Overlays: Remove DRW_STATE_OFFSET_*
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/draw/modes/overlay_mode.c | 8 | ||||
-rw-r--r-- | source/blender/draw/modes/paint_texture_mode.c | 36 | ||||
-rw-r--r-- | source/blender/draw/modes/paint_vertex_mode.c | 32 |
3 files changed, 49 insertions, 27 deletions
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) |