[Bf-blender-cvs] [d4f1efad005] master: DRW: Remove use of builtin matrices and replace by common_view_lib

Clément Foucault noreply at git.blender.org
Wed Jun 3 11:03:15 CEST 2020


Commit: d4f1efad00566ddc22dc3c99a67456e57e1bcb7c
Author: Clément Foucault
Date:   Wed Jun 3 10:53:21 2020 +0200
Branches: master
https://developer.blender.org/rBd4f1efad00566ddc22dc3c99a67456e57e1bcb7c

DRW: Remove use of builtin matrices and replace by common_view_lib

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

M	source/blender/draw/engines/eevee/eevee_depth_of_field.c
M	source/blender/draw/engines/eevee/shaders/effect_dof_frag.glsl
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/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;



More information about the Bf-blender-cvs mailing list