[Bf-blender-cvs] [bde44994967] blender2.8: Fix draw manager w/ cycles

Campbell Barton noreply at git.blender.org
Wed May 3 12:06:27 CEST 2017


Commit: bde449949678ab14d70509e3f69b4fafa24cfcb6
Author: Campbell Barton
Date:   Wed May 3 20:09:17 2017 +1000
Branches: blender2.8
https://developer.blender.org/rBbde449949678ab14d70509e3f69b4fafa24cfcb6

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.

===================================================================

M	source/blender/draw/engines/external/external_engine.c
M	source/blender/draw/intern/DRW_render.h
M	source/blender/draw/intern/draw_manager.c

===================================================================

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);
+}
+
 /** \} */




More information about the Bf-blender-cvs mailing list