Cleanup: Paint Overlays: Remove DRW_STATE_OFFSET_*
This commit is contained in:
parent
01f5ef82af
commit
f3fc872171
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue