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
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/engines/overlay/overlay_shader.c52
-rw-r--r--source/blender/draw/engines/overlay/shaders/infos/volume_info.hh93
-rw-r--r--source/blender/draw/engines/overlay/shaders/volume_gridlines_vert.glsl25
-rw-r--r--source/blender/draw/engines/overlay/shaders/volume_velocity_vert.glsl26
-rw-r--r--source/blender/gpu/CMakeLists.txt1
5 files changed, 107 insertions, 90 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c
index da06a5f5b78..a721b05cba3 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.c
+++ b/source/blender/draw/engines/overlay/overlay_shader.c
@@ -1205,38 +1205,23 @@ 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) {
- sh_data->volume_velocity_needle_sh = DRW_shader_create_with_lib(
- datatoc_volume_velocity_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 USE_NEEDLE\n");
+ sh_data->volume_velocity_needle_sh = GPU_shader_create_from_info_name(
+ "overlay_volume_velocity_needle");
}
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");
+ sh_data->volume_velocity_mac_sh = GPU_shader_create_from_info_name(
+ "overlay_volume_velocity_mac");
}
else if (!sh_data->volume_velocity_sh) {
- sh_data->volume_velocity_sh = DRW_shader_create_with_lib(
- datatoc_volume_velocity_vert_glsl,
- NULL,
- datatoc_gpu_shader_flat_color_frag_glsl,
- datatoc_common_view_lib_glsl,
- "#define blender_srgb_to_framebuffer_space(a) a\n");
+ sh_data->volume_velocity_sh = GPU_shader_create_from_info_name("overlay_volume_velocity");
}
+
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;
}
@@ -1244,30 +1229,15 @@ struct GPUShader *OVERLAY_shader_volume_gridlines(bool color_with_flags, bool co
{
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");
+ sh_data->volume_gridlines_flags_sh = GPU_shader_create_from_info_name(
+ "overlay_volume_gridlines_flags");
}
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");
+ sh_data->volume_gridlines_range_sh = GPU_shader_create_from_info_name(
+ "overlay_volume_gridlines_range");
}
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");
+ sh_data->volume_gridlines_sh = GPU_shader_create_from_info_name("overlay_volume_gridlines");
}
if (color_with_flags) {
diff --git a/source/blender/draw/engines/overlay/shaders/infos/volume_info.hh b/source/blender/draw/engines/overlay/shaders/infos/volume_info.hh
new file mode 100644
index 00000000000..713c8c2dc4b
--- /dev/null
+++ b/source/blender/draw/engines/overlay/shaders/infos/volume_info.hh
@@ -0,0 +1,93 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "gpu_shader_create_info.hh"
+
+/* -------------------------------------------------------------------- */
+/** \name Volume Velocity
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_volume_velocity_iface, "").smooth(Type::VEC4, "finalColor");
+
+GPU_SHADER_CREATE_INFO(overlay_volume_velocity)
+ .do_static_compilation(true)
+ /* Colors are already in linear space. */
+ .define("srgbTarget", "false")
+ .sampler(0, ImageType::FLOAT_3D, "velocityX")
+ .sampler(1, ImageType::FLOAT_3D, "velocityY")
+ .sampler(2, ImageType::FLOAT_3D, "velocityZ")
+ .push_constant(Type::FLOAT, "displaySize")
+ .push_constant(Type::FLOAT, "slicePosition")
+ .push_constant(Type::INT, "sliceAxis")
+ .push_constant(Type::BOOL, "scaleWithMagnitude")
+ .push_constant(Type::BOOL, "isCellCentered")
+ /* FluidDomainSettings.cell_size */
+ .push_constant(Type::VEC3, "cellSize")
+ /* FluidDomainSettings.p0 */
+ .push_constant(Type::VEC3, "domainOriginOffset")
+ /* FluidDomainSettings.res_min */
+ .push_constant(Type::IVEC3, "adaptiveCellOffset")
+ .vertex_out(overlay_volume_velocity_iface)
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("volume_velocity_vert.glsl")
+ .fragment_source("gpu_shader_3D_smooth_color_frag.glsl")
+ .additional_info("draw_volume");
+
+GPU_SHADER_CREATE_INFO(overlay_volume_velocity_mac)
+ .do_static_compilation(true)
+ .define("USE_MAC")
+ .push_constant(Type::BOOL, "drawMACX")
+ .push_constant(Type::BOOL, "drawMACY")
+ .push_constant(Type::BOOL, "drawMACZ")
+ .additional_info("overlay_volume_velocity");
+
+GPU_SHADER_CREATE_INFO(overlay_volume_velocity_needle)
+ .do_static_compilation(true)
+ .define("USE_NEEDLE")
+ .additional_info("overlay_volume_velocity");
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Volume Gridlines
+ * \{ */
+
+GPU_SHADER_INTERFACE_INFO(overlay_volume_gridlines_iface, "").flat(Type::VEC4, "finalColor");
+
+GPU_SHADER_CREATE_INFO(overlay_volume_gridlines)
+ .do_static_compilation(true)
+ /* Colors are already in linear space. */
+ .define("srgbTarget", "false")
+ .push_constant(Type::FLOAT, "slicePosition")
+ .push_constant(Type::INT, "sliceAxis")
+ /* FluidDomainSettings.res */
+ .push_constant(Type::IVEC3, "volumeSize")
+ /* FluidDomainSettings.cell_size */
+ .push_constant(Type::VEC3, "cellSize")
+ /* FluidDomainSettings.p0 */
+ .push_constant(Type::VEC3, "domainOriginOffset")
+ /* FluidDomainSettings.res_min */
+ .push_constant(Type::IVEC3, "adaptiveCellOffset")
+ .vertex_out(overlay_volume_gridlines_iface)
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("volume_gridlines_vert.glsl")
+ .fragment_source("gpu_shader_flat_color_frag.glsl")
+ .additional_info("draw_volume");
+
+GPU_SHADER_CREATE_INFO(overlay_volume_gridlines_flags)
+ .do_static_compilation(true)
+ .define("SHOW_FLAGS")
+ .sampler(0, ImageType::UINT_3D, "flagTexture")
+ .additional_info("overlay_volume_gridlines");
+
+GPU_SHADER_CREATE_INFO(overlay_volume_gridlines_range)
+ .do_static_compilation(true)
+ .define("SHOW_RANGE")
+ .push_constant(Type::FLOAT, "lowerBound")
+ .push_constant(Type::FLOAT, "upperBound")
+ .push_constant(Type::VEC4, "rangeColor")
+ .push_constant(Type::INT, "cellFilter")
+ .sampler(0, ImageType::UINT_3D, "flagTexture")
+ .sampler(1, ImageType::FLOAT_3D, "fieldTexture")
+ .additional_info("overlay_volume_gridlines");
+
+/** \} */
diff --git a/source/blender/draw/engines/overlay/shaders/volume_gridlines_vert.glsl b/source/blender/draw/engines/overlay/shaders/volume_gridlines_vert.glsl
index 507beb8a418..11a04dddd2a 100644
--- a/source/blender/draw/engines/overlay/shaders/volume_gridlines_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/volume_gridlines_vert.glsl
@@ -1,28 +1,5 @@
-uniform float slicePosition;
-uniform int sliceAxis; /* -1 is no slice, 0 is X, 1 is Y, 2 is Z. */
-/* FluidDomainSettings.res */
-uniform ivec3 volumeSize;
-/* FluidDomainSettings.cell_size */
-uniform vec3 cellSize;
-/* FluidDomainSettings.p0 */
-uniform vec3 domainOriginOffset;
-/* FluidDomainSettings.res_min */
-uniform ivec3 adaptiveCellOffset;
-
-#if defined(SHOW_FLAGS) || defined(SHOW_RANGE)
-uniform usampler3D flagTexture;
-#endif
-
-#ifdef SHOW_RANGE
-uniform sampler3D fieldTexture;
-uniform float lowerBound = 0.0;
-uniform float upperBound = 0.0;
-uniform vec4 rangeColor;
-uniform int cellFilter;
-#endif
-
-flat out vec4 finalColor;
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
/* Corners for cell outlines. 0.45 is arbitrary. Any value below 0.5 can be used to avoid
* overlapping of the outlines. */
diff --git a/source/blender/draw/engines/overlay/shaders/volume_velocity_vert.glsl b/source/blender/draw/engines/overlay/shaders/volume_velocity_vert.glsl
index 174b31b6816..a33d27676c3 100644
--- a/source/blender/draw/engines/overlay/shaders/volume_velocity_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/volume_velocity_vert.glsl
@@ -1,29 +1,5 @@
-uniform sampler3D velocityX;
-uniform sampler3D velocityY;
-uniform sampler3D velocityZ;
-uniform float displaySize = 1.0;
-uniform float slicePosition;
-uniform int sliceAxis; /* -1 is no slice, 0 is X, 1 is Y, 2 is Z. */
-uniform bool scaleWithMagnitude = false;
-uniform bool isCellCentered = false;
-
-/* FluidDomainSettings.cell_size */
-uniform vec3 cellSize;
-/* FluidDomainSettings.p0 */
-uniform vec3 domainOriginOffset;
-/* FluidDomainSettings.res_min */
-uniform ivec3 adaptiveCellOffset;
-
-#ifdef USE_MAC
-uniform bool drawMACX;
-uniform bool drawMACY;
-uniform bool drawMACZ;
-
-out vec4 finalColor;
-#else
-flat out vec4 finalColor;
-#endif
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
const vec3 corners[4] = vec3[4](vec3(0.0, 0.2, -0.5),
vec3(-0.2 * 0.866, -0.2 * 0.5, -0.5),
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 310592d0b5d..e72ed9d6135 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -447,6 +447,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/volume_info.hh
../draw/engines/select/shaders/infos/select_id_info.hh
../draw/engines/workbench/shaders/infos/workbench_composite_info.hh
../draw/engines/workbench/shaders/infos/workbench_effect_antialiasing_info.hh