diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-05-03 13:09:17 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-05-03 13:12:31 +0300 |
commit | bde449949678ab14d70509e3f69b4fafa24cfcb6 (patch) | |
tree | 4bbdc7fe5c3ca0af3d021c7dfe915fa66ffcd06f | |
parent | 2a8608294597f82add9c69b64bc11b9c492d46ac (diff) |
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.
-rw-r--r-- | source/blender/draw/engines/external/external_engine.c | 2 | ||||
-rw-r--r-- | source/blender/draw/intern/DRW_render.h | 3 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 11 |
3 files changed, 11 insertions, 5 deletions
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); +} + /** \} */ |