Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-05-12 01:52:04 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-05-13 00:28:55 +0300
commit74a08cf12854308af166742f7dcaa5c7c227fcd4 (patch)
treecb3b7bcc24bb75d16f706317dcc987a4fb3e67b3 /source/blender/draw/engines/eevee/eevee_depth_of_field.c
parent894639f9a59c3a4f1ae1b3fb4ccbf1f46e31669c (diff)
Eevee: Depth of field: Change final blending.
This new blending allows background to fill the gaps left by forground objects. However this has a drawback, background objects that should be partially occluded in this case can be seen through the blurred objects. This does not fix the problem of blurred foreground over sharp background. Also cleanup code to be simpler and remove unused geometry shader.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_depth_of_field.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_depth_of_field.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_depth_of_field.c b/source/blender/draw/engines/eevee/eevee_depth_of_field.c
index 393dbede00f..c17378a48e3 100644
--- a/source/blender/draw/engines/eevee/eevee_depth_of_field.c
+++ b/source/blender/draw/engines/eevee/eevee_depth_of_field.c
@@ -62,17 +62,17 @@ static struct {
} e_data = {NULL}; /* Engine data */
extern char datatoc_effect_dof_vert_glsl[];
-extern char datatoc_effect_dof_geom_glsl[];
extern char datatoc_effect_dof_frag_glsl[];
static void eevee_create_shader_depth_of_field(void)
{
- e_data.dof_downsample_sh = DRW_shader_create(datatoc_effect_dof_vert_glsl, NULL,
- datatoc_effect_dof_frag_glsl, "#define STEP_DOWNSAMPLE\n");
- e_data.dof_scatter_sh = DRW_shader_create(datatoc_effect_dof_vert_glsl, NULL,
- datatoc_effect_dof_frag_glsl, "#define STEP_SCATTER\n");
- e_data.dof_resolve_sh = DRW_shader_create(datatoc_effect_dof_vert_glsl, NULL,
- datatoc_effect_dof_frag_glsl, "#define STEP_RESOLVE\n");
+ e_data.dof_downsample_sh = DRW_shader_create_fullscreen(
+ datatoc_effect_dof_frag_glsl, "#define STEP_DOWNSAMPLE\n");
+ e_data.dof_scatter_sh = DRW_shader_create(
+ datatoc_effect_dof_vert_glsl, NULL,
+ datatoc_effect_dof_frag_glsl, "#define STEP_SCATTER\n");
+ e_data.dof_resolve_sh = DRW_shader_create_fullscreen(
+ datatoc_effect_dof_frag_glsl, "#define STEP_RESOLVE\n");
}
int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *vedata, Object *camera)
@@ -144,8 +144,6 @@ int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *v
float focus_dist = BKE_camera_object_dof_distance(camera);
float focal_len = cam->lens;
- UNUSED_VARS(rotation, ratio);
-
/* this is factor that converts to the scene scale. focal length and sensor are expressed in mm
* unit.scale_length is how many meters per blender unit we have. We want to convert to blender units though
* because the shader reads coordinates in world space, which is in blender units.