[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