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:
Diffstat (limited to 'source/blender/draw/engines/overlay/overlay_shader.c')
-rw-r--r--source/blender/draw/engines/overlay/overlay_shader.c65
1 files changed, 63 insertions, 2 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index 4530d6e8adf..5c1b7c786f4 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -115,6 +115,7 @@ extern char datatoc_particle_frag_glsl[];
extern char datatoc_sculpt_mask_vert_glsl[];
extern char datatoc_sculpt_mask_frag_glsl[];
extern char datatoc_volume_velocity_vert_glsl[];
+extern char datatoc_volume_gridlines_vert_glsl[];
extern char datatoc_wireframe_vert_glsl[];
extern char datatoc_wireframe_frag_glsl[];
extern char datatoc_xray_fade_frag_glsl[];
@@ -214,7 +215,11 @@ typedef struct OVERLAY_Shaders {
GPUShader *sculpt_mask;
GPUShader *uniform_color;
GPUShader *volume_velocity_needle_sh;
+ GPUShader *volume_velocity_mac_sh;
GPUShader *volume_velocity_sh;
+ GPUShader *volume_gridlines_sh;
+ GPUShader *volume_gridlines_flags_sh;
+ GPUShader *volume_gridlines_range_sh;
GPUShader *wireframe_select;
GPUShader *wireframe[2];
GPUShader *xray_fade;
@@ -1414,7 +1419,7 @@ struct GPUShader *OVERLAY_shader_uniform_color(void)
return sh_data->uniform_color;
}
-struct GPUShader *OVERLAY_shader_volume_velocity(bool use_needle)
+struct GPUShader *OVERLAY_shader_volume_velocity(bool use_needle, bool use_mac)
{
OVERLAY_Shaders *sh_data = &e_data.sh_data[0];
if (use_needle && !sh_data->volume_velocity_needle_sh) {
@@ -1426,6 +1431,15 @@ struct GPUShader *OVERLAY_shader_volume_velocity(bool use_needle)
"#define blender_srgb_to_framebuffer_space(a) a\n"
"#define USE_NEEDLE\n");
}
+ else if (use_mac && !sh_data->volume_velocity_mac_sh) {
+ sh_data->volume_velocity_mac_sh = DRW_shader_create_with_lib(
+ datatoc_volume_velocity_vert_glsl,
+ NULL,
+ datatoc_gpu_shader_3D_smooth_color_frag_glsl,
+ datatoc_common_view_lib_glsl,
+ "#define blender_srgb_to_framebuffer_space(a) a\n"
+ "#define USE_MAC\n");
+ }
else if (!sh_data->volume_velocity_sh) {
sh_data->volume_velocity_sh = DRW_shader_create_with_lib(
datatoc_volume_velocity_vert_glsl,
@@ -1434,7 +1448,54 @@ struct GPUShader *OVERLAY_shader_volume_velocity(bool use_needle)
datatoc_common_view_lib_glsl,
"#define blender_srgb_to_framebuffer_space(a) a\n");
}
- return (use_needle) ? sh_data->volume_velocity_needle_sh : sh_data->volume_velocity_sh;
+ if (use_needle) {
+ return sh_data->volume_velocity_needle_sh;
+ }
+ if (use_mac) {
+ return sh_data->volume_velocity_mac_sh;
+ }
+
+ return sh_data->volume_velocity_sh;
+}
+
+struct GPUShader *OVERLAY_shader_volume_gridlines(bool color_with_flags, bool color_range)
+{
+ OVERLAY_Shaders *sh_data = &e_data.sh_data[0];
+ if (!sh_data->volume_gridlines_flags_sh && color_with_flags) {
+ sh_data->volume_gridlines_flags_sh = DRW_shader_create_with_lib(
+ datatoc_volume_gridlines_vert_glsl,
+ NULL,
+ datatoc_gpu_shader_flat_color_frag_glsl,
+ datatoc_common_view_lib_glsl,
+ "#define blender_srgb_to_framebuffer_space(a) a\n"
+ "#define SHOW_FLAGS\n");
+ }
+ else if (!sh_data->volume_gridlines_range_sh && color_range) {
+ sh_data->volume_gridlines_range_sh = DRW_shader_create_with_lib(
+ datatoc_volume_gridlines_vert_glsl,
+ NULL,
+ datatoc_gpu_shader_flat_color_frag_glsl,
+ datatoc_common_view_lib_glsl,
+ "#define blender_srgb_to_framebuffer_space(a) a\n"
+ "#define SHOW_RANGE\n");
+ }
+ else if (!sh_data->volume_gridlines_sh) {
+ sh_data->volume_gridlines_sh = DRW_shader_create_with_lib(
+ datatoc_volume_gridlines_vert_glsl,
+ NULL,
+ datatoc_gpu_shader_flat_color_frag_glsl,
+ datatoc_common_view_lib_glsl,
+ "#define blender_srgb_to_framebuffer_space(a) a\n");
+ }
+
+ if (color_with_flags) {
+ return sh_data->volume_gridlines_flags_sh;
+ }
+ if (color_range) {
+ return sh_data->volume_gridlines_range_sh;
+ }
+
+ return sh_data->volume_gridlines_sh;
}
GPUShader *OVERLAY_shader_wireframe_select(void)