Commit: 6b5582c7f7b9f11b70d1d33bfd8e8de9429d75c3
Author: Jeroen Bakker
Date:   Mon Aug 17 10:48:31 2020 +0200
Branches: master
https://developer.blender.org/rB6b5582c7f7b9f11b70d1d33bfd8e8de9429d75c3

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.

===================================================================

M       
source/blender/draw/engines/workbench/shaders/workbench_effect_dof_frag.glsl
M       source/blender/draw/engines/workbench/workbench_shader.c

===================================================================

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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to