Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-05-03 13:09:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-05-03 13:12:31 +0300
commitbde449949678ab14d70509e3f69b4fafa24cfcb6 (patch)
tree4bbdc7fe5c3ca0af3d021c7dfe915fa66ffcd06f /source/blender
parent2a8608294597f82add9c69b64bc11b9c492d46ac (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.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/draw/engines/external/external_engine.c2
-rw-r--r--source/blender/draw/intern/DRW_render.h3
-rw-r--r--source/blender/draw/intern/draw_manager.c11
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);
+}
+
/** \} */