GPencil: Remove blend_opacity from shader

The opacity was already used and using it in the shader only duplicate the blend.
This commit is contained in:
Antonio Vazquez 2019-06-12 17:15:50 +02:00
parent 36faf739a7
commit e0c98e18f9
3 changed files with 7 additions and 11 deletions

View File

@ -535,7 +535,6 @@ void GPENCIL_cache_init(void *vedata)
DRW_shgroup_uniform_texture_ref(blend_shgrp, "blendDepth", &e_data.temp_depth_tx_fx);
DRW_shgroup_uniform_int(blend_shgrp, "mode", &stl->storage->blend_mode, 1);
DRW_shgroup_uniform_int(blend_shgrp, "clamp_layer", &stl->storage->clamp_layer, 1);
DRW_shgroup_uniform_float(blend_shgrp, "blend_opacity", &stl->storage->blend_opacity, 1);
DRW_shgroup_uniform_int(mix_shgrp, "tonemapping", &stl->storage->tonemapping, 1);
/* create effects passes */
@ -975,7 +974,6 @@ void GPENCIL_draw_scene(void *ved)
GPU_framebuffer_clear_color_depth(fbl->temp_fb_b, clearcol, 1.0f);
stl->storage->blend_mode = array_elm->mode;
stl->storage->clamp_layer = (int)array_elm->clamp_layer;
stl->storage->blend_opacity = array_elm->blend_opacity;
stl->storage->tonemapping = DRW_state_do_color_management() ? 0 : 1;
DRW_draw_pass(psl->blend_pass);
stl->storage->tonemapping = 0;

View File

@ -174,7 +174,6 @@ typedef struct GPENCIL_Storage {
int blend_mode;
int clamp_layer;
float blend_opacity;
/* simplify settings*/
bool simplify_fill;

View File

@ -8,7 +8,6 @@ uniform sampler2D blendColor;
uniform sampler2D blendDepth;
uniform int mode;
uniform int clamp_layer;
uniform float blend_opacity;
uniform int tonemapping;
#define ON 1
@ -43,34 +42,34 @@ vec4 get_blend_color(int mode, vec4 src_color, vec4 blend_color)
outcolor = src_color;
}
else if (mode == MODE_OVERLAY) {
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a * blend_opacity);
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a);
outcolor.r = overlay_color(src_color.r, mix_color.r);
outcolor.g = overlay_color(src_color.g, mix_color.g);
outcolor.b = overlay_color(src_color.b, mix_color.b);
outcolor.a = src_color.a;
}
else if (mode == MODE_ADD) {
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a * blend_opacity);
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a);
outcolor = src_color + mix_color;
outcolor.a = src_color.a;
}
else if (mode == MODE_SUB) {
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a * blend_opacity);
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a);
outcolor = src_color - mix_color;
outcolor.a = clamp(src_color.a - (mix_color.a * blend_opacity), 0.0, 1.0);
outcolor.a = clamp(src_color.a - mix_color.a, 0.0, 1.0);
}
else if (mode == MODE_MULTIPLY) {
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a * blend_opacity);
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a);
outcolor = src_color * mix_color;
outcolor.a = src_color.a;
}
else if (mode == MODE_DIVIDE) {
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a * blend_opacity);
mix_color.rgb = mix(src_color.rgb, mix_color.rgb, mix_color.a);
outcolor = src_color / mix_color;
outcolor.a = src_color.a;
}
else {
outcolor = mix_color * blend_opacity;
outcolor = mix_color;
outcolor.a = src_color.a;
}