[Bf-blender-cvs] [4b89bf88c7f] blender2.8: Revert "DRW: Remove unecessary GL calls"

Clément Foucault noreply at git.blender.org
Mon Aug 27 18:53:00 CEST 2018


Commit: 4b89bf88c7f0c4d8c8543bd73e632ed6ce898772
Author: Clément Foucault
Date:   Mon Aug 27 18:02:48 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB4b89bf88c7f0c4d8c8543bd73e632ed6ce898772

Revert "DRW: Remove unecessary GL calls"

This reverts commit f8c857ad72e29eb509bd04067f94cd3df8a54aa4.

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

M	source/blender/draw/intern/draw_common.c
M	source/blender/draw/intern/draw_manager_exec.c

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

diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c
index f90028d4486..30b1ebe07cd 100644
--- a/source/blender/draw/intern/draw_common.c
+++ b/source/blender/draw/intern/draw_common.c
@@ -47,30 +47,6 @@ GlobalsUboStorage ts;
 struct GPUUniformBuffer *globals_ubo = NULL;
 struct GPUTexture *globals_ramp = NULL;
 
-static struct GPUTexture *create_weight_ramp_texture(void)
-{
-	ColorBand ramp = {0};
-	float *colors;
-	int col_size;
-
-	ramp.tot = 3;
-	ramp.data[0].b = 1.0f;
-	ramp.data[1].g = 1.0f;
-	ramp.data[2].r = 1.0f;
-	ramp.data[0].a = ramp.data[1].a = ramp.data[2].a = 1.0f;
-	ramp.data[0].pos = 0.0f;
-	ramp.data[1].pos = 0.5f;
-	ramp.data[2].pos = 1.0f;
-
-	BKE_colorband_evaluate_table_rgba(&ramp, &colors, &col_size);
-
-	struct GPUTexture *tex = GPU_texture_create_1D(col_size, GPU_RGBA8, colors, NULL);
-
-	MEM_freeN(colors);
-
-	return tex;
-}
-
 void DRW_globals_update(void)
 {
 	UI_GetThemeColor4fv(TH_WIRE, ts.colorWire);
@@ -155,9 +131,29 @@ void DRW_globals_update(void)
 
 	DRW_uniformbuffer_update(globals_ubo, &ts);
 
-	if (globals_ramp == NULL) {
-		globals_ramp = create_weight_ramp_texture();
+	ColorBand ramp = {0};
+	float *colors;
+	int col_size;
+
+	ramp.tot = 3;
+	ramp.data[0].a = 1.0f;
+	ramp.data[0].b = 1.0f;
+	ramp.data[0].pos = 0.0f;
+	ramp.data[1].a = 1.0f;
+	ramp.data[1].g = 1.0f;
+	ramp.data[1].pos = 0.5f;
+	ramp.data[2].a = 1.0f;
+	ramp.data[2].r = 1.0f;
+	ramp.data[2].pos = 1.0f;
+
+	BKE_colorband_evaluate_table_rgba(&ramp, &colors, &col_size);
+
+	if (globals_ramp) {
+		GPU_texture_free(globals_ramp);
 	}
+	globals_ramp = GPU_texture_create_1D(col_size, GPU_RGBA8, colors, NULL);
+
+	MEM_freeN(colors);
 }
 
 /* ********************************* SHGROUP ************************************* */
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c
index e99d95282a0..3180cf5c459 100644
--- a/source/blender/draw/intern/draw_manager_exec.c
+++ b/source/blender/draw/intern/draw_manager_exec.c
@@ -263,7 +263,7 @@ void drw_state_set(DRWState state)
 			}
 			else {
 				glDisable(GL_BLEND);
-				// glBlendFunc(GL_ONE, GL_ONE); /* Don't multiply incoming color by alpha. */
+				glBlendFunc(GL_ONE, GL_ONE); /* Don't multiply incoming color by alpha. */
 			}
 		}
 	}
@@ -1023,11 +1023,8 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
 	release_ubo_slots(shader_changed);
 	release_texture_slots(shader_changed);
 
-	/* Only set the state if there is something to draw. */
-	if (!DRW_shgroup_is_empty(shgroup)) {
-		drw_state_set((pass_state & shgroup->state_extra_disable) | shgroup->state_extra);
-		drw_stencil_set(shgroup->stencil_mask);
-	}
+	drw_state_set((pass_state & shgroup->state_extra_disable) | shgroup->state_extra);
+	drw_stencil_set(shgroup->stencil_mask);
 
 	/* Binding Uniform */
 	for (DRWUniform *uni = shgroup->uniforms; uni; uni = uni->next) {
@@ -1237,6 +1234,9 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
 	if (use_tfeedback) {
 		GPU_shader_transform_feedback_disable(shgroup->shader);
 	}
+
+	/* TODO: remove, (currently causes alpha issue with sculpt, need to investigate) */
+	DRW_state_reset();
 }
 
 static void drw_update_view(void)
@@ -1275,10 +1275,6 @@ static void drw_draw_pass_ex(DRWPass *pass, DRWShadingGroup *start_group, DRWSha
 
 	BLI_assert(DST.buffer_finish_called && "DRW_render_instance_buffer_finish had not been called before drawing");
 
-	if (DRW_pass_is_empty(pass)) {
-		return;
-	}
-
 	drw_update_view();
 
 	drw_state_set(pass->state);



More information about the Bf-blender-cvs mailing list