Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/draw/engines/overlay/overlay_shader.c106
-rw-r--r--source/blender/draw/engines/overlay/shaders/infos/paint_info.hh180
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_face_vert.glsl9
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_point_vert.glsl11
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl11
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_texture_vert.glsl11
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_vertcol_frag.glsl8
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_vertcol_vert.glsl11
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_weight_frag.glsl11
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_weight_vert.glsl16
-rw-r--r--source/blender/draw/engines/overlay/shaders/paint_wire_vert.glsl13
-rw-r--r--source/blender/gpu/CMakeLists.txt1
12 files changed, 227 insertions, 161 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index 6d6035be176..bd00d4d47f0 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -89,15 +89,6 @@ extern char datatoc_outline_detect_frag_glsl[];
extern char datatoc_outline_prepass_frag_glsl[];
extern char datatoc_outline_prepass_geom_glsl[];
extern char datatoc_outline_prepass_vert_glsl[];
-extern char datatoc_paint_face_vert_glsl[];
-extern char datatoc_paint_point_vert_glsl[];
-extern char datatoc_paint_texture_frag_glsl[];
-extern char datatoc_paint_texture_vert_glsl[];
-extern char datatoc_paint_vertcol_frag_glsl[];
-extern char datatoc_paint_vertcol_vert_glsl[];
-extern char datatoc_paint_weight_frag_glsl[];
-extern char datatoc_paint_weight_vert_glsl[];
-extern char datatoc_paint_wire_vert_glsl[];
extern char datatoc_particle_vert_glsl[];
extern char datatoc_particle_frag_glsl[];
extern char datatoc_sculpt_mask_vert_glsl[];
@@ -958,17 +949,11 @@ GPUShader *OVERLAY_shader_outline_detect(void)
GPUShader *OVERLAY_shader_paint_face(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];
+ eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
if (!sh_data->paint_face) {
- sh_data->paint_face = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_paint_face_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_gpu_shader_uniform_color_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg->def, NULL},
- });
+ sh_data->paint_face = GPU_shader_create_from_info_name(
+ sh_cfg == GPU_SHADER_CFG_CLIPPED ? "overlay_paint_face_clipped" : "overlay_paint_face");
}
return sh_data->paint_face;
}
@@ -976,18 +961,11 @@ GPUShader *OVERLAY_shader_paint_face(void)
GPUShader *OVERLAY_shader_paint_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];
+ eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
if (!sh_data->paint_point) {
- sh_data->paint_point = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_globals_lib_glsl,
- datatoc_common_view_lib_glsl,
- datatoc_paint_point_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_gpu_shader_point_varying_color_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg->def, NULL},
- });
+ sh_data->paint_point = GPU_shader_create_from_info_name(
+ sh_cfg == GPU_SHADER_CFG_CLIPPED ? "overlay_paint_point_clipped" : "overlay_paint_point");
}
return sh_data->paint_point;
}
@@ -995,19 +973,11 @@ GPUShader *OVERLAY_shader_paint_point(void)
GPUShader *OVERLAY_shader_paint_texture(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];
+ eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
if (!sh_data->paint_texture) {
- sh_data->paint_texture = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_view_lib_glsl,
- datatoc_paint_texture_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_common_colormanagement_lib_glsl,
- datatoc_paint_texture_frag_glsl,
- NULL},
- .defs = (const char *[]){sh_cfg->def, NULL},
- });
+ sh_data->paint_texture = GPU_shader_create_from_info_name(
+ sh_cfg ? "overlay_paint_texture_clipped" : "overlay_paint_texture");
}
return sh_data->paint_texture;
}
@@ -1015,42 +985,27 @@ GPUShader *OVERLAY_shader_paint_texture(void)
GPUShader *OVERLAY_shader_paint_vertcol(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];
+ eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
if (!sh_data->paint_vertcol) {
- sh_data->paint_vertcol = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_globals_lib_glsl,
- datatoc_common_view_lib_glsl,
- datatoc_paint_vertcol_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_common_globals_lib_glsl,
- datatoc_paint_vertcol_frag_glsl,
- NULL},
- .defs = (const char *[]){sh_cfg->def, NULL},
- });
+ sh_data->paint_vertcol = GPU_shader_create_from_info_name(
+ sh_cfg ? "overlay_paint_vertcol_clipped" : "overlay_paint_vertcol");
}
return sh_data->paint_vertcol;
}
GPUShader *OVERLAY_shader_paint_weight(const bool shading)
{
+ const char *info_name[2][2] = {
+ {"overlay_paint_weight", "overlay_paint_weight_fake_shading"},
+ {"overlay_paint_weight_clipped", "overlay_paint_weight_fake_shading_clipped"},
+ };
int index = shading ? 1 : 0;
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];
+ eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
if (!sh_data->paint_weight[index]) {
- sh_data->paint_weight[index] = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_globals_lib_glsl,
- datatoc_common_view_lib_glsl,
- datatoc_paint_weight_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_common_globals_lib_glsl,
- datatoc_paint_weight_frag_glsl,
- NULL},
- .defs = (const char *[]){sh_cfg->def, shading ? "#define FAKE_SHADING\n" : "", NULL},
- });
+ sh_data->paint_weight[index] = GPU_shader_create_from_info_name(info_name[sh_cfg][index]);
}
return sh_data->paint_weight[index];
}
@@ -1058,18 +1013,11 @@ GPUShader *OVERLAY_shader_paint_weight(const bool shading)
GPUShader *OVERLAY_shader_paint_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];
+ eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
if (!sh_data->paint_wire) {
- sh_data->paint_wire = GPU_shader_create_from_arrays({
- .vert = (const char *[]){sh_cfg->lib,
- datatoc_common_globals_lib_glsl,
- datatoc_common_view_lib_glsl,
- datatoc_paint_wire_vert_glsl,
- NULL},
- .frag = (const char *[]){datatoc_gpu_shader_flat_color_frag_glsl, NULL},
- .defs = (const char *[]){sh_cfg->def, NULL},
- });
+ sh_data->paint_wire = GPU_shader_create_from_info_name(sh_cfg ? "overlay_paint_wire_clipped" :
+ "overlay_paint_wire");
}
return sh_data->paint_wire;
}
diff --git a/source/blender/draw/engines/overlay/shaders/infos/paint_info.hh b/source/blender/draw/engines/overlay/shaders/infos/paint_info.hh
new file mode 100644
index 00000000000..bbec79d515f
--- /dev/null
+++ b/source/blender/draw/engines/overlay/shaders/infos/paint_info.hh
@@ -0,0 +1,180 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "gpu_shader_create_info.hh"
+
+/* -------------------------------------------------------------------- */
+/** \name OVERLAY_shader_paint_face.
+ *
+ * Used for face selection mode in Weight, Vertex and Texture Paint.
+ * \{ */
+
+GPU_SHADER_CREATE_INFO(overlay_paint_face)
+ .do_static_compilation(true)
+ .define("srgbTarget", "false") /* NOTE: Color already in Linear space. */
+ .vertex_in(0, Type::VEC3, "pos")
+ .vertex_in(1, Type::VEC4, "nor") /* Select flag on the 4th component. */
+ .push_constant(Type::VEC4, "color")
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("paint_face_vert.glsl")
+ .fragment_source("gpu_shader_uniform_color_frag.glsl")
+ .additional_info("draw_modelmat");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_face_clipped)
+ .additional_info("overlay_paint_face")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name OVERLAY_shader_paint_point.
+ *
+ * Used for vertex selection mode in Weight and Vertex Paint.
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_overlay_paint_point_iface, "").smooth(Type::VEC4, "finalColor");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_point)
+ .do_static_compilation(true)
+ .vertex_in(0, Type::VEC3, "pos")
+ .vertex_in(1, Type::VEC4, "nor") /* Select flag on the 4th component. */
+ .vertex_out(overlay_overlay_paint_point_iface)
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("paint_point_vert.glsl")
+ .fragment_source("gpu_shader_point_varying_color_frag.glsl")
+ .additional_info("draw_modelmat", "draw_globals");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_point_clipped)
+ .additional_info("overlay_paint_point")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name OVERLAY_shader_paint_texture.
+ *
+ * Used in Texture Paint mode for the Stencil Image Masking.
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_paint_texture_iface, "").smooth(Type::VEC2, "uv_interp");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_texture)
+ .do_static_compilation(true)
+ .vertex_in(0, Type::VEC3, "pos")
+ .vertex_in(1, Type::VEC2, "mu") /* Masking uv map. */
+ .vertex_out(overlay_paint_texture_iface)
+ .sampler(0, ImageType::FLOAT_2D, "maskImage")
+ .push_constant(Type::VEC3, "maskColor")
+ .push_constant(Type::FLOAT, "opacity") /* `1.0` by default. */
+ .push_constant(Type::BOOL, "maskInvertStencil")
+ .push_constant(Type::BOOL, "maskImagePremultiplied")
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("paint_texture_vert.glsl")
+ .fragment_source("paint_texture_frag.glsl")
+ .additional_info("draw_modelmat");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_texture_clipped)
+ .additional_info("overlay_paint_texture")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name OVERLAY_shader_paint_vertcol.
+ *
+ * It should be used to draw a Vertex Paint overlay. But it is currently unreachable.
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_paint_vertcol_iface, "").smooth(Type::VEC3, "finalColor");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_vertcol)
+ .do_static_compilation(true)
+ .vertex_in(0, Type::VEC3, "pos")
+ .vertex_in(1, Type::VEC3, "ac") /* Active color. */
+ .vertex_out(overlay_paint_vertcol_iface)
+ .push_constant(Type::FLOAT, "opacity") /* `1.0` by default. */
+ .push_constant(Type::BOOL, "useAlphaBlend") /* `false` by default. */
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("paint_vertcol_vert.glsl")
+ .fragment_source("paint_vertcol_frag.glsl")
+ .additional_info("draw_modelmat");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_vertcol_clipped)
+ .additional_info("overlay_paint_vertcol")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name OVERLAY_shader_paint_weight.
+ *
+ * Used to display Vertex Weights.
+ * `overlay paint weight` is for wireframe display mode.
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_paint_weight_iface, "")
+ .smooth(Type::VEC2, "weight_interp") /* (weight, alert) */
+ .smooth(Type::FLOAT, "color_fac");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_weight)
+ .do_static_compilation(true)
+ .vertex_in(0, Type::FLOAT, "weight")
+ .vertex_in(1, Type::VEC3, "pos")
+ .vertex_in(2, Type::VEC3, "nor")
+ .vertex_out(overlay_paint_weight_iface)
+ .sampler(0, ImageType::FLOAT_1D, "colorramp")
+ .push_constant(Type::FLOAT, "opacity") /* `1.0` by default. */
+ .push_constant(Type::BOOL, "drawContours") /* `false` by default. */
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("paint_weight_vert.glsl")
+ .fragment_source("paint_weight_frag.glsl")
+ .additional_info("draw_modelmat", "draw_globals");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_weight_fake_shading)
+ .additional_info("overlay_paint_weight")
+ .define("FAKE_SHADING")
+ .push_constant(Type::VEC3, "light_dir")
+ .do_static_compilation(true);
+
+GPU_SHADER_CREATE_INFO(overlay_paint_weight_clipped)
+ .additional_info("overlay_paint_weight")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+GPU_SHADER_CREATE_INFO(overlay_paint_weight_fake_shading_clipped)
+ .additional_info("overlay_paint_weight_fake_shading")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name OVERLAY_shader_paint_wire.
+ *
+ * Used in face selection mode to display edges of selected faces in Weight, Vertex and Texture
+ * paint modes.
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_paint_wire_iface, "").flat(Type::VEC4, "finalColor");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_wire)
+ .do_static_compilation(true)
+ .define("srgbTarget", "false") /* NOTE: Color already in Linear space. */
+ .vertex_in(0, Type::VEC3, "pos")
+ .vertex_in(1, Type::VEC4, "nor") /* flag stored in w */
+ .vertex_out(overlay_paint_wire_iface)
+ .push_constant(Type::BOOL, "useSelect")
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("paint_wire_vert.glsl")
+ .fragment_source("gpu_shader_flat_color_frag.glsl")
+ .additional_info("draw_modelmat", "draw_globals");
+
+GPU_SHADER_CREATE_INFO(overlay_paint_wire_clipped)
+ .additional_info("overlay_paint_vertcol")
+ .additional_info("drw_clipped")
+ .do_static_compilation(true);
+
+/** \} */
diff --git a/source/blender/draw/engines/overlay/shaders/paint_face_vert.glsl b/source/blender/draw/engines/overlay/shaders/paint_face_vert.glsl
index 2b5d586bdd1..22906bf1526 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_face_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_face_vert.glsl
@@ -1,6 +1,5 @@
-
-in vec3 pos;
-in vec4 nor; /* select flag on the 4th component */
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
void main()
{
@@ -17,8 +16,6 @@ void main()
gl_Position = vec4(-2.0, -2.0, -2.0, 1.0);
}
else {
-#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance(world_pos);
-#endif
+ view_clipping_distances(world_pos);
}
}
diff --git a/source/blender/draw/engines/overlay/shaders/paint_point_vert.glsl b/source/blender/draw/engines/overlay/shaders/paint_point_vert.glsl
index 052ad2a7f36..8736b2a87db 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_point_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_point_vert.glsl
@@ -1,8 +1,5 @@
-
-in vec3 pos;
-in vec4 nor; /* select flag on the 4th component */
-
-out vec4 finalColor;
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
void main()
{
@@ -26,7 +23,5 @@ void main()
gl_PointSize = sizeVertex * 2.0;
-#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance(world_pos);
-#endif
+ view_clipping_distances(world_pos);
}
diff --git a/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl b/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl
index ebaa898429d..e5af0e7bd88 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_texture_frag.glsl
@@ -1,13 +1,4 @@
-in vec2 uv_interp;
-
-out vec4 fragColor;
-
-uniform float opacity = 1.0;
-
-uniform sampler2D maskImage;
-uniform bool maskImagePremultiplied;
-uniform vec3 maskColor;
-uniform bool maskInvertStencil;
+#pragma BLENDER_REQUIRE(common_colormanagement_lib.glsl)
void main()
{
diff --git a/source/blender/draw/engines/overlay/shaders/paint_texture_vert.glsl b/source/blender/draw/engines/overlay/shaders/paint_texture_vert.glsl
index cb29fefb7ef..f93d0050950 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_texture_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_texture_vert.glsl
@@ -1,8 +1,5 @@
-
-in vec3 pos;
-in vec2 mu; /* masking uv map */
-
-out vec2 uv_interp;
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
void main()
{
@@ -13,7 +10,5 @@ void main()
uv_interp = mu;
-#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance(world_pos);
-#endif
+ view_clipping_distances(world_pos);
}
diff --git a/source/blender/draw/engines/overlay/shaders/paint_vertcol_frag.glsl b/source/blender/draw/engines/overlay/shaders/paint_vertcol_frag.glsl
index 2500ff83abe..193fabc65cb 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_vertcol_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_vertcol_frag.glsl
@@ -1,11 +1,3 @@
-
-in vec3 finalColor;
-
-out vec4 fragColor;
-
-uniform float opacity = 1.0;
-uniform bool useAlphaBlend = false;
-
vec3 linear_to_srgb_attr(vec3 c)
{
c = max(c, vec3(0.0));
diff --git a/source/blender/draw/engines/overlay/shaders/paint_vertcol_vert.glsl b/source/blender/draw/engines/overlay/shaders/paint_vertcol_vert.glsl
index e060e33deba..650070dcfd5 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_vertcol_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_vertcol_vert.glsl
@@ -1,8 +1,5 @@
-
-in vec3 pos;
-in vec3 ac; /* active color */
-
-out vec3 finalColor;
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
vec3 srgb_to_linear_attr(vec3 c)
{
@@ -21,7 +18,5 @@ void main()
finalColor = srgb_to_linear_attr(ac);
-#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance(world_pos);
-#endif
+ view_clipping_distances(world_pos);
}
diff --git a/source/blender/draw/engines/overlay/shaders/paint_weight_frag.glsl b/source/blender/draw/engines/overlay/shaders/paint_weight_frag.glsl
index 8009713d655..1befe7506c4 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_weight_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_weight_frag.glsl
@@ -1,14 +1,3 @@
-
-in vec2 weight_interp; /* (weight, alert) */
-in float color_fac;
-
-out vec4 fragColor;
-
-uniform float opacity = 1.0;
-uniform sampler1D colorramp;
-
-uniform bool drawContours = false;
-
float contours(float value, float steps, float width_px, float max_rel_width, float gradient)
{
/* Minimum visible and minimum full strength line width in screen space for fade out. */
diff --git a/source/blender/draw/engines/overlay/shaders/paint_weight_vert.glsl b/source/blender/draw/engines/overlay/shaders/paint_weight_vert.glsl
index 31b6dc42cf4..cff79d606d6 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_weight_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_weight_vert.glsl
@@ -1,13 +1,5 @@
-#ifdef FAKE_SHADING
-uniform vec3 light_dir;
-#endif
-
-in float weight;
-in vec3 pos;
-in vec3 nor;
-
-out vec2 weight_interp; /* (weight, alert) */
-out float color_fac;
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
void main()
{
@@ -29,7 +21,5 @@ void main()
color_fac = 1.0;
#endif
-#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance(world_pos);
-#endif
+ view_clipping_distances(world_pos);
}
diff --git a/source/blender/draw/engines/overlay/shaders/paint_wire_vert.glsl b/source/blender/draw/engines/overlay/shaders/paint_wire_vert.glsl
index 6a937d846c4..749cc92f082 100644
--- a/source/blender/draw/engines/overlay/shaders/paint_wire_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/paint_wire_vert.glsl
@@ -1,10 +1,5 @@
-
-uniform bool useSelect;
-
-in vec3 pos;
-in vec4 nor; /* flag stored in w */
-
-flat out vec4 finalColor;
+#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
void main()
{
@@ -32,7 +27,5 @@ void main()
finalColor = vec4(1.0, 1.0, 1.0, 0.3);
}
-#ifdef USE_WORLD_CLIP_PLANES
- world_clip_planes_calc_clip_distance(world_pos);
-#endif
+ view_clipping_distances(world_pos);
}
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 687ecd3ab63..f03de5288d6 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -448,6 +448,7 @@ set(SRC_SHADER_CREATE_INFOS
../draw/engines/overlay/shaders/infos/extra_info.hh
../draw/engines/overlay/shaders/infos/grid_info.hh
../draw/engines/overlay/shaders/infos/edit_mode_info.hh
+ ../draw/engines/overlay/shaders/infos/paint_info.hh
../draw/engines/overlay/shaders/infos/volume_info.hh
../draw/engines/select/shaders/infos/select_id_info.hh
../draw/engines/workbench/shaders/infos/workbench_composite_info.hh