diff options
Diffstat (limited to 'source')
4 files changed, 22 insertions, 26 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 ec6770e4549..4a3cc36ddef 100644 --- a/source/blender/draw/engines/eevee/eevee_depth_of_field.c +++ b/source/blender/draw/engines/eevee/eevee_depth_of_field.c @@ -31,6 +31,8 @@ #include "BKE_camera.h" +#include "BLI_string_utils.h" + #include "DEG_depsgraph.h" #include "DEG_depsgraph_query.h" @@ -48,24 +50,28 @@ static struct { extern char datatoc_effect_dof_vert_glsl[]; extern char datatoc_effect_dof_frag_glsl[]; +extern char datatoc_common_view_lib_glsl[]; + static void eevee_create_shader_depth_of_field(const bool use_alpha) { + char *frag = BLI_string_joinN(datatoc_common_view_lib_glsl, datatoc_effect_dof_frag_glsl); e_data.dof_downsample_sh[use_alpha] = DRW_shader_create_fullscreen( - datatoc_effect_dof_frag_glsl, + frag, use_alpha ? "#define USE_ALPHA_DOF\n" "#define STEP_DOWNSAMPLE\n" : "#define STEP_DOWNSAMPLE\n"); e_data.dof_scatter_sh[use_alpha] = DRW_shader_create(datatoc_effect_dof_vert_glsl, NULL, - datatoc_effect_dof_frag_glsl, + frag, use_alpha ? "#define USE_ALPHA_DOF\n" "#define STEP_SCATTER\n" : "#define STEP_SCATTER\n"); - e_data.dof_resolve_sh[use_alpha] = DRW_shader_create_fullscreen(datatoc_effect_dof_frag_glsl, + e_data.dof_resolve_sh[use_alpha] = DRW_shader_create_fullscreen(frag, use_alpha ? "#define USE_ALPHA_DOF\n" "#define STEP_RESOLVE\n" : "#define STEP_RESOLVE\n"); + MEM_freeN(frag); } int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), diff --git a/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl index 5277bfa32bb..d56890769a7 100644 --- a/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl +++ b/source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl @@ -1,6 +1,4 @@ -uniform mat4 ProjectionMatrix; - uniform sampler2D colorBuffer; uniform sampler2D depthBuffer; diff --git a/source/blender/draw/engines/workbench/shaders/workbench_effect_dof_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_effect_dof_frag.glsl index 0efcfb35929..51007a9f246 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_effect_dof_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_effect_dof_frag.glsl @@ -4,7 +4,6 @@ * Converted and adapted from HLSL to GLSL by Clément Foucault */ -uniform mat4 ProjectionMatrix; uniform vec2 invertedViewportSize; uniform vec2 nearFar; uniform vec3 dofParams; diff --git a/source/blender/draw/engines/workbench/workbench_shader.c b/source/blender/draw/engines/workbench/workbench_shader.c index 2e796056029..99366779b22 100644 --- a/source/blender/draw/engines/workbench/workbench_shader.c +++ b/source/blender/draw/engines/workbench/workbench_shader.c @@ -23,6 +23,7 @@ #include "DRW_render.h" #include "BLI_dynstr.h" +#include "BLI_string_utils.h" #include "workbench_engine.h" #include "workbench_private.h" @@ -359,32 +360,24 @@ void workbench_shader_depth_of_field_get(GPUShader **prepare_sh, GPUShader **resolve_sh) { if (e_data.dof_prepare_sh == NULL) { - e_data.dof_prepare_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, - "#define PREPARE\n"); - - e_data.dof_downsample_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, - "#define DOWNSAMPLE\n"); + char *frag = BLI_string_joinN(datatoc_common_view_lib_glsl, + datatoc_workbench_effect_dof_frag_glsl); + e_data.dof_prepare_sh = DRW_shader_create_fullscreen(frag, "#define PREPARE\n"); + e_data.dof_downsample_sh = DRW_shader_create_fullscreen(frag, "#define DOWNSAMPLE\n"); #if 0 /* TODO(fclem) finish COC min_max optimization */ - e_data.dof_flatten_v_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, + e_data.dof_flatten_v_sh = DRW_shader_create_fullscreen(frag, "#define FLATTEN_VERTICAL\n"); - - e_data.dof_flatten_h_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, + e_data.dof_flatten_h_sh = DRW_shader_create_fullscreen(frag, "#define FLATTEN_HORIZONTAL\n"); - - e_data.dof_dilate_v_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, + e_data.dof_dilate_v_sh = DRW_shader_create_fullscreen(frag, "#define DILATE_VERTICAL\n"); - - e_data.dof_dilate_h_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, + e_data.dof_dilate_h_sh = DRW_shader_create_fullscreen(frag, "#define DILATE_HORIZONTAL\n"); #endif - e_data.dof_blur1_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, - "#define BLUR1\n"); - - e_data.dof_blur2_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, - "#define BLUR2\n"); - - e_data.dof_resolve_sh = DRW_shader_create_fullscreen(datatoc_workbench_effect_dof_frag_glsl, - "#define RESOLVE\n"); + e_data.dof_blur1_sh = DRW_shader_create_fullscreen(frag, "#define BLUR1\n"); + e_data.dof_blur2_sh = DRW_shader_create_fullscreen(frag, "#define BLUR2\n"); + e_data.dof_resolve_sh = DRW_shader_create_fullscreen(frag, "#define RESOLVE\n"); + MEM_freeN(frag); } *prepare_sh = e_data.dof_prepare_sh; |