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:
authorClément Foucault <foucault.clem@gmail.com>2022-05-01 22:12:59 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-05-01 22:12:59 +0300
commitfc872d738ef1526fd251f073c1a495344360a667 (patch)
tree9f0676b1156f59e636500285502f7bb633d2693e /source/blender/gpu/shaders
parenta330b9b0eac6ad1a71ee1cad974f673f26ec0cd3 (diff)
GPUShader: Port 2D widget shaders to use shaderCreateInfo
This should have no functional changes.
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r--source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl17
-rw-r--r--source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl37
-rw-r--r--source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_frag.glsl8
-rw-r--r--source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_vert.glsl12
-rw-r--r--source/blender/gpu/shaders/infos/gpu_shader_2D_widget_info.hh62
5 files changed, 63 insertions, 73 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl
index a03b88db342..662589fb2ce 100644
--- a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_frag.glsl
@@ -1,19 +1,4 @@
-#ifndef USE_GPU_SHADER_CREATE_INFO
-uniform vec3 checkerColorAndSize;
-
-noperspective in vec2 uvInterp;
-noperspective in float butCo;
-flat in float discardFac;
-flat in float shadeTri;
-flat in vec2 outRectSize;
-flat in vec4 outRoundCorners;
-noperspective in vec4 innerColor;
-flat in vec4 borderColor;
-flat in vec4 embossColor;
-flat in float lineWidth;
-
-out vec4 fragColor;
-#endif
+#pragma BLENDER_REQUIRE(gpu_shader_colorspace_lib.glsl)
vec3 compute_masks(vec2 uv)
{
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl
index 3a39cd8b847..c102b422211 100644
--- a/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl
@@ -1,24 +1,3 @@
-#ifndef USE_GPU_SHADER_CREATE_INFO
-uniform mat4 ModelViewProjectionMatrix;
-
-# define MAX_PARAM 12
-# ifdef USE_INSTANCE
-# define MAX_INSTANCE 6
-uniform vec4 parameters[MAX_PARAM * MAX_INSTANCE];
-# else
-uniform vec4 parameters[MAX_PARAM];
-# endif
-#endif
-
-/* gl_InstanceID is supposed to be 0 if not drawing instances, but this seems
- * to be violated in some drivers. For example, macOS 10.15.4 and Intel Iris
- * causes T78307 when using gl_InstanceID outside of instance. */
-#ifdef USE_INSTANCE
-# define widgetID gl_InstanceID
-#else
-# define widgetID 0
-#endif
-
#define recti parameters[widgetID * MAX_PARAM + 0]
#define rect parameters[widgetID * MAX_PARAM + 1]
#define radsi parameters[widgetID * MAX_PARAM + 2].x
@@ -42,22 +21,6 @@ uniform vec4 parameters[MAX_PARAM];
#define doAlphaCheck (alphaDiscard < 0.0)
#define discardFactor abs(alphaDiscard)
-#ifndef USE_GPU_SHADER_CREATE_INFO
-noperspective out vec2 uvInterp;
-flat out vec2 outRectSize;
-flat out vec4 outRoundCorners;
-noperspective out vec4 innerColor;
-flat out vec4 borderColor;
-flat out vec4 embossColor;
-flat out float lineWidth;
-noperspective out float butCo;
-flat out float discardFac;
-
-# if defined(OS_MAC) && defined(GPU_OPENGL)
-in float dummy;
-# endif
-#endif
-
vec2 do_widget(void)
{
/* Offset to avoid losing pixels (mimics conservative rasterization). */
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_frag.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_frag.glsl
index a624d3f2f8b..4d153102e41 100644
--- a/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_frag.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_frag.glsl
@@ -1,12 +1,4 @@
-#ifndef USE_GPU_SHADER_CREATE_INFO
-in float shadowFalloff;
-
-out vec4 fragColor;
-
-uniform float alpha;
-#endif
-
void main()
{
fragColor = vec4(0.0);
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_vert.glsl b/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_vert.glsl
index d3eed997292..de1da01ff98 100644
--- a/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_vert.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_2D_widget_shadow_vert.glsl
@@ -51,12 +51,6 @@ const vec2 cornervec[36] = vec2[36](vec2(0.0, 1.0),
#define INNER_FLAG uint(1 << 10) /* is inner vert */
-#ifndef USE_GPU_SHADER_CREATE_INFO
-uniform mat4 ModelViewProjectionMatrix;
-
-uniform vec4 parameters[4];
-#endif
-
/* radi and rad per corner */
#define recti parameters[0]
#define rect parameters[1]
@@ -64,12 +58,6 @@ uniform vec4 parameters[4];
#define rads parameters[2].y
#define roundCorners parameters[3]
-#ifndef USE_GPU_SHADER_CREATE_INFO
-in uint vflag;
-
-out float shadowFalloff;
-#endif
-
void main()
{
uint cflag = vflag & CNR_FLAG_RANGE;
diff --git a/source/blender/gpu/shaders/infos/gpu_shader_2D_widget_info.hh b/source/blender/gpu/shaders/infos/gpu_shader_2D_widget_info.hh
new file mode 100644
index 00000000000..7a430717f85
--- /dev/null
+++ b/source/blender/gpu/shaders/infos/gpu_shader_2D_widget_info.hh
@@ -0,0 +1,62 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2022 Blender Foundation. All rights reserved. */
+
+/** \file
+ * \ingroup gpu
+ */
+
+#include "gpu_interface_info.hh"
+#include "gpu_shader_create_info.hh"
+
+GPU_SHADER_INTERFACE_INFO(gpu_widget_iface, "")
+ .flat(Type::FLOAT, "discardFac")
+ .flat(Type::FLOAT, "lineWidth")
+ .flat(Type::VEC2, "outRectSize")
+ .flat(Type::VEC4, "borderColor")
+ .flat(Type::VEC4, "embossColor")
+ .flat(Type::VEC4, "outRoundCorners")
+ .no_perspective(Type::FLOAT, "butCo")
+ .no_perspective(Type::VEC2, "uvInterp")
+ .no_perspective(Type::VEC4, "innerColor");
+
+/* TODO(fclem): Share with C code. */
+#define MAX_PARAM 12
+#define MAX_INSTANCE 6
+
+GPU_SHADER_CREATE_INFO(gpu_shader_2D_widget_shared)
+ .define("MAX_PARAM", STRINGIFY(MAX_PARAM))
+ .push_constant(Type::MAT4, "ModelViewProjectionMatrix")
+ .push_constant(Type::VEC3, "checkerColorAndSize")
+ .vertex_out(gpu_widget_iface)
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("gpu_shader_2D_widget_base_vert.glsl")
+ .fragment_source("gpu_shader_2D_widget_base_frag.glsl")
+ .additional_info("gpu_srgb_to_framebuffer_space");
+
+GPU_SHADER_CREATE_INFO(gpu_shader_2D_widget_base)
+ .do_static_compilation(true)
+ /* gl_InstanceID is supposed to be 0 if not drawing instances, but this seems
+ * to be violated in some drivers. For example, macOS 10.15.4 and Intel Iris
+ * causes T78307 when using gl_InstanceID outside of instance. */
+ .define("widgetID", "0")
+ .push_constant(Type::VEC4, "parameters", MAX_PARAM)
+ .additional_info("gpu_shader_2D_widget_shared");
+
+GPU_SHADER_CREATE_INFO(gpu_shader_2D_widget_base_inst)
+ .do_static_compilation(true)
+ .define("widgetID", "gl_InstanceID")
+ .push_constant(Type::VEC4, "parameters", (MAX_PARAM * MAX_INSTANCE))
+ .additional_info("gpu_shader_2D_widget_shared");
+
+GPU_SHADER_INTERFACE_INFO(gpu_widget_shadow_iface, "").smooth(Type::FLOAT, "shadowFalloff");
+
+GPU_SHADER_CREATE_INFO(gpu_shader_2D_widget_shadow)
+ .do_static_compilation(true)
+ .push_constant(Type::MAT4, "ModelViewProjectionMatrix")
+ .push_constant(Type::VEC4, "parameters", 4)
+ .push_constant(Type::FLOAT, "alpha")
+ .vertex_in(0, Type::UINT, "vflag")
+ .vertex_out(gpu_widget_shadow_iface)
+ .fragment_out(0, Type::VEC4, "fragColor")
+ .vertex_source("gpu_shader_2D_widget_shadow_vert.glsl")
+ .fragment_source("gpu_shader_2D_widget_shadow_frag.glsl");