DRW: Color Management improvement

Reviewed By: brecht sergey jbakker

Differential Revision: http://developer.blender.org/D6729
This commit is contained in:
2020-02-11 15:18:55 +01:00
parent 58cdab8b97
commit 804e90b42d
78 changed files with 2048 additions and 1727 deletions

View File

@@ -174,11 +174,6 @@ void EEVEE_effects_init(EEVEE_ViewLayerData *sldata,
effects->enabled_effects |= EFFECT_NORMAL_BUFFER;
}
/* Alpha checker if background is not drawn in viewport. */
if (!DRW_state_is_image_render() && !DRW_state_draw_background()) {
effects->enabled_effects |= EFFECT_ALPHA_CHECKER;
}
/**
* MinMax Pyramid
*/
@@ -342,31 +337,6 @@ void EEVEE_effects_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
DRW_shgroup_uniform_mat4(grp, "pastPersmat", effects->velocity_past_persmat);
DRW_shgroup_call(grp, quad, NULL);
}
if ((effects->enabled_effects & EFFECT_ALPHA_CHECKER) != 0) {
GPUShader *checker_sh = GPU_shader_get_builtin_shader(GPU_SHADER_2D_CHECKER);
copy_v4_fl4(effects->color_checker_dark, 0.15f, 0.15f, 0.15f, 1.0f);
copy_v4_fl4(effects->color_checker_light, 0.2f, 0.2f, 0.2f, 1.0f);
DRW_PASS_CREATE(psl->alpha_checker,
DRW_STATE_WRITE_COLOR | DRW_STATE_BLEND_ALPHA_UNDER_PREMUL);
grp = DRW_shgroup_create(checker_sh, psl->alpha_checker);
DRW_shgroup_uniform_vec4(grp, "color1", effects->color_checker_dark, 1);
DRW_shgroup_uniform_vec4(grp, "color2", effects->color_checker_light, 1);
DRW_shgroup_uniform_int_copy(grp, "size", 8);
DRW_shgroup_call(grp, quad, NULL);
float viewmat[4][4], winmat[4][4];
unit_m4(viewmat);
unit_m4(winmat);
/* Winmat must be negative. */
swap_v3_v3(winmat[0], winmat[1]);
/* Using default view bypasses the culling. */
const DRWView *default_view = DRW_view_default_get();
effects->checker_view = DRW_view_create_sub(default_view, viewmat, winmat);
}
}
void EEVEE_effects_draw_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata)
@@ -524,21 +494,6 @@ void EEVEE_downsample_cube_buffer(EEVEE_Data *vedata, GPUTexture *texture_src, i
DRW_stats_group_end();
}
void EEVEE_draw_alpha_checker(EEVEE_Data *vedata)
{
EEVEE_PassList *psl = vedata->psl;
EEVEE_StorageList *stl = vedata->stl;
EEVEE_EffectsInfo *effects = stl->effects;
if ((effects->enabled_effects & EFFECT_ALPHA_CHECKER) != 0) {
DRW_view_set_active(effects->checker_view);
DRW_draw_pass(psl->alpha_checker);
DRW_view_set_active(NULL);
}
}
static void EEVEE_velocity_resolve(EEVEE_Data *vedata)
{
EEVEE_PassList *psl = vedata->psl;