diff options
author | Jeroen Bakker <jeroen@blender.org> | 2020-08-17 11:48:31 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2020-08-17 11:50:22 +0300 |
commit | 6b5582c7f7b9f11b70d1d33bfd8e8de9429d75c3 (patch) | |
tree | 69112b1f3cba35691f8f06d09f49b3d0927af34a /source/blender/draw/engines/workbench | |
parent | 0967935b42bc73e65b910cabf3428485f113f1f5 (diff) |
Fix: Workbench Depth Of Field Crash
Depth of field compilation failed due to recent refactoring. This only
happened in blender 2.91. This change uses the shader lib to find
dependencies.
Diffstat (limited to 'source/blender/draw/engines/workbench')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_effect_dof_frag.glsl | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_shader.c | 34 |
2 files changed, 19 insertions, 17 deletions
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 71816f6ff6e..899ada852f9 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 @@ -1,4 +1,4 @@ - +#pragma BLENDER_REQUIRE(common_view_lib.glsl) #pragma BLENDER_REQUIRE(common_math_lib.glsl) /** diff --git a/source/blender/draw/engines/workbench/workbench_shader.c b/source/blender/draw/engines/workbench/workbench_shader.c index 9cc5087bd36..af3b5d31b2b 100644 --- a/source/blender/draw/engines/workbench/workbench_shader.c +++ b/source/blender/draw/engines/workbench/workbench_shader.c @@ -380,24 +380,26 @@ void workbench_shader_depth_of_field_get(GPUShader **prepare_sh, GPUShader **resolve_sh) { if (e_data.dof_prepare_sh == NULL) { - 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"); + e_data.dof_prepare_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define PREPARE\n"); + e_data.dof_downsample_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define DOWNSAMPLE\n"); #if 0 /* TODO(fclem) finish COC min_max optimization */ - 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(frag, - "#define FLATTEN_HORIZONTAL\n"); - 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(frag, - "#define DILATE_HORIZONTAL\n"); + e_data.dof_flatten_v_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define FLATTEN_VERTICAL\n"); + e_data.dof_flatten_h_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define FLATTEN_HORIZONTAL\n"); + e_data.dof_dilate_v_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define DILATE_VERTICAL\n"); + e_data.dof_dilate_h_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define DILATE_HORIZONTAL\n"); #endif - 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); + e_data.dof_blur1_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define BLUR1\n"); + e_data.dof_blur2_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define BLUR2\n"); + e_data.dof_resolve_sh = DRW_shader_create_fullscreen_with_shaderlib( + datatoc_workbench_effect_dof_frag_glsl, e_data.lib, "#define RESOLVE\n"); } *prepare_sh = e_data.dof_prepare_sh; |