[Bf-blender-cvs] [65fcac26066] temp-gp-overlay-refactor: WIP: Refactor GPencil Overlays to use ShaderCreateInfo

Antonio Vazquez noreply at git.blender.org
Fri Apr 15 17:12:36 CEST 2022


Commit: 65fcac260663572c2c7c01f1670204f23916bf98
Author: Antonio Vazquez
Date:   Fri Apr 15 17:11:03 2022 +0200
Branches: temp-gp-overlay-refactor
https://developer.blender.org/rB65fcac260663572c2c7c01f1670204f23916bf98

WIP: Refactor GPencil Overlays to use ShaderCreateInfo

Still there are some compiler error

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

M	source/blender/draw/engines/overlay/overlay_shader.c
M	source/blender/draw/engines/overlay/shaders/edit_gpencil_guide_vert.glsl
M	source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
A	source/blender/draw/engines/overlay/shaders/infos/gpencil_overlay_info.hh
M	source/blender/gpu/CMakeLists.txt

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

diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index 278aefb8fec..0c27b3a4e38 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -494,12 +494,8 @@ GPUShader *OVERLAY_shader_edit_gpencil_guide_point(void)
 {
   OVERLAY_Shaders *sh_data = &e_data.sh_data[0];
   if (!sh_data->edit_gpencil_guide_point) {
-    sh_data->edit_gpencil_guide_point = GPU_shader_create_from_arrays({
-        .vert = (const char *[]){datatoc_common_view_lib_glsl,
-                                 datatoc_edit_gpencil_guide_vert_glsl,
-                                 NULL},
-        .frag = (const char *[]){datatoc_gpu_shader_point_varying_color_frag_glsl, NULL},
-    });
+    sh_data->edit_gpencil_guide_point = GPU_shader_create_from_info_name(
+        "overlay_edit_gpencil_guide_point");
   }
   return sh_data->edit_gpencil_guide_point;
 }
@@ -507,18 +503,9 @@ GPUShader *OVERLAY_shader_edit_gpencil_guide_point(void)
 GPUShader *OVERLAY_shader_edit_gpencil_point(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  const GPUShaderConfigData *sh_cfg = &GPU_shader_cfg_data[draw_ctx->sh_cfg];
   OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->edit_gpencil_point) {
-    sh_data->edit_gpencil_point = GPU_shader_create_from_arrays({
-        .vert = (const char *[]){sh_cfg->lib,
-                                 datatoc_common_globals_lib_glsl,
-                                 datatoc_common_view_lib_glsl,
-                                 datatoc_edit_gpencil_vert_glsl,
-                                 NULL},
-        .frag = (const char *[]){datatoc_gpu_shader_point_varying_color_frag_glsl, NULL},
-        .defs = (const char *[]){sh_cfg->def, "#define USE_POINTS\n", NULL},
-    });
+    sh_data->edit_gpencil_point = GPU_shader_create_from_info_name("overlay_edit_gpencil_point");
   }
   return sh_data->edit_gpencil_point;
 }
@@ -526,18 +513,9 @@ GPUShader *OVERLAY_shader_edit_gpencil_point(void)
 GPUShader *OVERLAY_shader_edit_gpencil_wire(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  const GPUShaderConfigData *sh_cfg = &GPU_shader_cfg_data[draw_ctx->sh_cfg];
   OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->edit_gpencil_wire) {
-    sh_data->edit_gpencil_wire = GPU_shader_create_from_arrays({
-        .vert = (const char *[]){sh_cfg->lib,
-                                 datatoc_common_globals_lib_glsl,
-                                 datatoc_common_view_lib_glsl,
-                                 datatoc_edit_gpencil_vert_glsl,
-                                 NULL},
-        .frag = (const char *[]){datatoc_gpu_shader_3D_smooth_color_frag_glsl, NULL},
-        .defs = (const char *[]){sh_cfg->def, NULL},
-    });
+    sh_data->edit_gpencil_point = GPU_shader_create_from_info_name("overlay_edit_gpencil_wire");
   }
   return sh_data->edit_gpencil_wire;
 }
diff --git a/source/blender/draw/engines/overlay/shaders/edit_gpencil_guide_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_gpencil_guide_vert.glsl
index ef68b0f4e6f..13bea933522 100644
--- a/source/blender/draw/engines/overlay/shaders/edit_gpencil_guide_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/edit_gpencil_guide_vert.glsl
@@ -1,8 +1,4 @@
-uniform vec4 pColor;
-uniform float pSize;
-uniform vec3 pPosition;
-
-out vec4 finalColor;
+#pragma BLENDER_REQUIRE(common_gpencil_lib.glsl)
 
 void main()
 {
diff --git a/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
index a6161d36a07..bbf7c61dd8e 100644
--- a/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
@@ -1,19 +1,4 @@
-
-uniform float normalSize;
-uniform bool doMultiframe;
-uniform bool doStrokeEndpoints;
-uniform bool hideSelect;
-uniform bool doWeightColor;
-uniform float gpEditOpacity;
-uniform vec4 gpEditColor;
-uniform sampler1D weightTex;
-
-in vec3 pos;
-in int ma;
-in uint vflag;
-in float weight;
-
-out vec4 finalColor;
+#pragma BLENDER_REQUIRE(common_gpencil_lib.glsl)
 
 void discard_vert()
 {
diff --git a/source/blender/draw/engines/overlay/shaders/infos/gpencil_overlay_info.hh b/source/blender/draw/engines/overlay/shaders/infos/gpencil_overlay_info.hh
new file mode 100644
index 00000000000..a403cea0808
--- /dev/null
+++ b/source/blender/draw/engines/overlay/shaders/infos/gpencil_overlay_info.hh
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "gpu_shader_create_info.hh"
+
+/* -------------------------------------------------------------------- */
+/** \name Grease Pencil Overlay
+ * \{ */
+
+GPU_SHADER_CREATE_INFO(overlay_edit_gpencil_point)
+    .do_static_compilation(true)
+    .define("USE_POINTS")
+    .sampler(0, ImageType::FLOAT_1D, "weightTex")
+    .push_constant(Type::FLOAT, "normalSize")
+    .push_constant(Type::BOOL, "doMultiframe")
+    .push_constant(Type::BOOL, "doStrokeEndpoints")
+    .push_constant(Type::BOOL, "hideSelect")
+    .push_constant(Type::BOOL, "doWeightColor")
+    .push_constant(Type::FLOAT, "gpEditOpacity")
+    .push_constant(Type::IVEC4, "gpEditColor")
+    .vertex_in(0, Type::VEC3, "pos")
+    .vertex_in(1, Type::INT, "ma")
+    .vertex_in(2, Type::UINT, "vflag")
+    .vertex_in(3, Type::FLOAT, "weight")
+    .fragment_out(0, Type::VEC4, "finalColor")
+    .vertex_source("edit_gpencil_vert.glsl")
+    .fragment_source("gpu_shader_point_varying_color_frag.glsl")
+    .additional_info("draw_modelmat", "draw_globals");
+
+GPU_SHADER_CREATE_INFO(overlay_edit_gpencil_wire)
+    .do_static_compilation(true)
+    .sampler(0, ImageType::FLOAT_1D, "weightTex")
+    .push_constant(Type::FLOAT, "normalSize")
+    .push_constant(Type::BOOL, "doMultiframe")
+    .push_constant(Type::BOOL, "doStrokeEndpoints")
+    .push_constant(Type::BOOL, "hideSelect")
+    .push_constant(Type::BOOL, "doWeightColor")
+    .push_constant(Type::FLOAT, "gpEditOpacity")
+    .push_constant(Type::IVEC4, "gpEditColor")
+    .vertex_in(0, Type::VEC3, "pos")
+    .vertex_in(1, Type::INT, "ma")
+    .vertex_in(2, Type::UINT, "vflag")
+    .vertex_in(3, Type::FLOAT, "weight")
+    .fragment_out(0, Type::VEC4, "finalColor")
+    .vertex_source("edit_gpencil_vert.glsl")
+    .fragment_source("gpu_shader_3D_smooth_color_frag.glsl")
+    .additional_info("draw_modelmat", "draw_globals");
+
+GPU_SHADER_CREATE_INFO(overlay_edit_gpencil_guide_point)
+    .do_static_compilation(true)
+    .push_constant(Type::IVEC4, "pColor")
+    .push_constant(Type::FLOAT, "pSize")
+    .push_constant(Type::IVEC3, "pPosition")
+    .fragment_out(0, Type::VEC4, "finalColor")
+    .vertex_source("edit_gpencil_guide_vert.glsl")
+    .fragment_source("gpu_shader_point_varying_color_frag.glsl")
+    .additional_info("draw_modelmat", "draw_globals");
+
+/** \} */
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 98d15a1024c..4969d84fb54 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -416,6 +416,7 @@ set(SRC_SHADER_CREATE_INFOS
   ../draw/engines/gpencil/shaders/infos/gpencil_vfx_info.hh
   ../draw/engines/overlay/shaders/infos/armature_info.hh
   ../draw/engines/overlay/shaders/infos/edit_mode_info.hh
+  ../draw/engines/overlay/shaders/infos/gpencil_overlay_info.hh
   ../draw/engines/workbench/shaders/infos/workbench_composite_info.hh
   ../draw/engines/workbench/shaders/infos/workbench_effect_antialiasing_info.hh
   ../draw/engines/workbench/shaders/infos/workbench_effect_cavity_info.hh



More information about the Bf-blender-cvs mailing list