diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-08-27 19:02:48 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-08-27 19:02:48 +0300 |
commit | 4b89bf88c7f0c4d8c8543bd73e632ed6ce898772 (patch) | |
tree | 3255a2646e462b68f5622b1570c08a0ccadeb9e2 /source/blender/draw | |
parent | 5238456adce2bb57a2ef0ae0546cb8786ba5cb04 (diff) |
Revert "DRW: Remove unecessary GL calls"
This reverts commit f8c857ad72e29eb509bd04067f94cd3df8a54aa4.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/intern/draw_common.c | 48 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager_exec.c | 16 |
2 files changed, 28 insertions, 36 deletions
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); |