Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/overlay/overlay_facing.c
| Show All 15 Lines | |||||
| * Copyright 2019, Blender Foundation. | * Copyright 2019, Blender Foundation. | ||||
| */ | */ | ||||
| /** \file | /** \file | ||||
| * \ingroup draw_engine | * \ingroup draw_engine | ||||
| */ | */ | ||||
| #include "DRW_render.h" | #include "DRW_render.h" | ||||
| #include "BKE_paint.h" | |||||
| #include "overlay_private.h" | #include "overlay_private.h" | ||||
| void OVERLAY_facing_init(OVERLAY_Data *UNUSED(vedata)) | void OVERLAY_facing_init(OVERLAY_Data *UNUSED(vedata)) | ||||
| { | { | ||||
| } | } | ||||
| void OVERLAY_facing_cache_init(OVERLAY_Data *vedata) | void OVERLAY_facing_cache_init(OVERLAY_Data *vedata) | ||||
| { | { | ||||
| OVERLAY_PassList *psl = vedata->psl; | OVERLAY_PassList *psl = vedata->psl; | ||||
| OVERLAY_PrivateData *pd = vedata->stl->pd; | OVERLAY_PrivateData *pd = vedata->stl->pd; | ||||
| DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL | DRW_STATE_BLEND_ALPHA; | DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL | DRW_STATE_BLEND_ALPHA; | ||||
| DRW_PASS_CREATE(psl->facing_ps, state | pd->clipping_state); | DRW_PASS_CREATE(psl->facing_ps, state | pd->clipping_state); | ||||
| GPUShader *sh = OVERLAY_shader_facing(); | GPUShader *sh = OVERLAY_shader_facing(); | ||||
| pd->facing_grp = DRW_shgroup_create(sh, psl->facing_ps); | pd->facing_grp = DRW_shgroup_create(sh, psl->facing_ps); | ||||
| DRW_shgroup_uniform_block_persistent(pd->facing_grp, "globalsBlock", G_draw.block_ubo); | DRW_shgroup_uniform_block_persistent(pd->facing_grp, "globalsBlock", G_draw.block_ubo); | ||||
| } | } | ||||
| void OVERLAY_facing_cache_populate(OVERLAY_Data *vedata, Object *ob) | void OVERLAY_facing_cache_populate(OVERLAY_Data *vedata, Object *ob) | ||||
| { | { | ||||
| OVERLAY_PrivateData *pd = vedata->stl->pd; | OVERLAY_PrivateData *pd = vedata->stl->pd; | ||||
| const DRWContextState *draw_ctx = DRW_context_state_get(); | |||||
| const bool use_sculpt_pbvh = BKE_sculptsession_use_pbvh_draw(ob, draw_ctx->v3d) && | |||||
| !DRW_state_is_image_render(); | |||||
| if (use_sculpt_pbvh) { | |||||
| DRW_shgroup_call_sculpt(pd->facing_grp, ob, false, false, false); | |||||
| } | |||||
| else { | |||||
| struct GPUBatch *geom = DRW_cache_object_surface_get(ob); | struct GPUBatch *geom = DRW_cache_object_surface_get(ob); | ||||
| if (geom) { | if (geom) { | ||||
| DRW_shgroup_call(pd->facing_grp, geom, ob); | DRW_shgroup_call(pd->facing_grp, geom, ob); | ||||
| } | } | ||||
jbakker: we normally do
```
const DRWContextState *draw_ctx = DRW_context_state_get();
const bool… | |||||
| } | } | ||||
| } | |||||
| void OVERLAY_facing_draw(OVERLAY_Data *vedata) | void OVERLAY_facing_draw(OVERLAY_Data *vedata) | ||||
| { | { | ||||
| OVERLAY_PassList *psl = vedata->psl; | OVERLAY_PassList *psl = vedata->psl; | ||||
| DRW_draw_pass(psl->facing_ps); | DRW_draw_pass(psl->facing_ps); | ||||
| } | } | ||||
we normally do
const DRWContextState *draw_ctx = DRW_context_state_get(); const bool use_sculpt_pbvh = BKE_sculptsession_use_pbvh_draw(ob, draw_ctx->v3d) && !DRW_state_is_image_render(); if (use_sculpt_pbvh) {This also checks for modifiers and shading