From bde449949678ab14d70509e3f69b4fafa24cfcb6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 3 May 2017 20:09:17 +1000 Subject: Fix draw manager w/ cycles 8b2640f08 introduced the error, caused by external-engine needing depth mask to be disabled, which happened to be the case before changing state changing logic. --- source/blender/draw/engines/external/external_engine.c | 2 ++ source/blender/draw/intern/DRW_render.h | 3 +++ source/blender/draw/intern/draw_manager.c | 11 ++++++----- 3 files changed, 11 insertions(+), 5 deletions(-) (limited to 'source/blender') diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c index 34ca92038d1..5c7f507b34b 100644 --- a/source/blender/draw/engines/external/external_engine.c +++ b/source/blender/draw/engines/external/external_engine.c @@ -146,6 +146,8 @@ static void external_draw_scene(void *UNUSED(vedata)) ARegion *ar = draw_ctx->ar; RenderEngineType *type; + DRW_state_reset_ex(DRW_STATE_DEFAULT & ~DRW_STATE_DEPTH_LESS); + /* Create render engine. */ if (!rv3d->render_engine) { RenderEngine *engine; diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index 53fbd22e7ab..369f2f4f468 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -249,6 +249,8 @@ typedef enum { DRW_STATE_TEST_STENCIL_ACTIVE = (1 << 17), } DRWState; +#define DRW_STATE_DEFAULT (DRW_STATE_WRITE_DEPTH | DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_LESS) + DRWShadingGroup *DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass); DRWShadingGroup *DRW_shgroup_material_create(struct GPUMaterial *material, DRWPass *pass); @@ -324,6 +326,7 @@ void DRW_draw_text_cache_queue(struct DRWTextStore *dt); void DRW_draw_callbacks_pre_scene(void); void DRW_draw_callbacks_post_scene(void); +void DRW_state_reset_ex(DRWState state); void DRW_state_reset(void); /* Selection */ diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 196f239119e..8f103192ad8 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1527,16 +1527,17 @@ void DRW_draw_callbacks_post_scene(void) } /* Reset state to not interfer with other UI drawcall */ -void DRW_state_reset(void) +void DRW_state_reset_ex(DRWState state) { - DRWState state = - DRW_STATE_WRITE_DEPTH | - DRW_STATE_WRITE_COLOR | - DRW_STATE_DEPTH_LESS; DST.state = ~state; DRW_state_set(state); } +void DRW_state_reset(void) +{ + DRW_state_reset_ex(DRW_STATE_DEFAULT); +} + /** \} */ -- cgit v1.2.3