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:
authorJeroen Bakker <jeroen@blender.org>2022-01-17 16:45:22 +0300
committerJeroen Bakker <jeroen@blender.org>2022-01-17 16:46:32 +0300
commit9d3f35a0bf1bf5776363bfd61d53a7c85b5827a4 (patch)
tree595fe492f09aea9f97049339385f7966ac02f0e1 /source/blender/draw/intern/shaders
parentedee5a947b7ea3e1324aa334a22c7c9bbf47f5f7 (diff)
Revert "Revert "GPUShaderCreateInfo for interface abstraction""
This reverts commit edee5a947b7ea3e1324aa334a22c7c9bbf47f5f7. Fixes compilation error (Missing file BLI_float2.hh)
Diffstat (limited to 'source/blender/draw/intern/shaders')
-rw-r--r--source/blender/draw/intern/shaders/common_fullscreen_vert.glsl2
-rw-r--r--source/blender/draw/intern/shaders/common_pointcloud_lib.glsl4
-rw-r--r--source/blender/draw/intern/shaders/common_view_lib.glsl18
-rw-r--r--source/blender/draw/intern/shaders/draw_fullscreen_info.hh8
-rw-r--r--source/blender/draw/intern/shaders/draw_object_infos_info.hh5
-rw-r--r--source/blender/draw/intern/shaders/draw_view_info.hh40
6 files changed, 75 insertions, 2 deletions
diff --git a/source/blender/draw/intern/shaders/common_fullscreen_vert.glsl b/source/blender/draw/intern/shaders/common_fullscreen_vert.glsl
index 8a7fb97d98c..53ec38fea0b 100644
--- a/source/blender/draw/intern/shaders/common_fullscreen_vert.glsl
+++ b/source/blender/draw/intern/shaders/common_fullscreen_vert.glsl
@@ -1,5 +1,7 @@
+#ifndef USE_GPU_SHADER_CREATE_INFO
out vec4 uvcoordsvar;
+#endif
void main()
{
diff --git a/source/blender/draw/intern/shaders/common_pointcloud_lib.glsl b/source/blender/draw/intern/shaders/common_pointcloud_lib.glsl
index 74b989441a2..2da16d3f6a9 100644
--- a/source/blender/draw/intern/shaders/common_pointcloud_lib.glsl
+++ b/source/blender/draw/intern/shaders/common_pointcloud_lib.glsl
@@ -2,6 +2,8 @@
/* NOTE: To be used with UNIFORM_RESOURCE_ID and INSTANCED_ATTR as define. */
#pragma BLENDER_REQUIRE(common_view_lib.glsl)
+#ifndef DRW_SHADER_SHARED_H
+
in vec4 pos; /* Position and radius. */
/* ---- Instanced attribs ---- */
@@ -9,6 +11,8 @@ in vec4 pos; /* Position and radius. */
in vec3 pos_inst;
in vec3 nor;
+#endif
+
mat3 pointcloud_get_facing_matrix(vec3 p)
{
mat3 facing_mat;
diff --git a/source/blender/draw/intern/shaders/common_view_lib.glsl b/source/blender/draw/intern/shaders/common_view_lib.glsl
index e9912ba7d9a..b0d405165f2 100644
--- a/source/blender/draw/intern/shaders/common_view_lib.glsl
+++ b/source/blender/draw/intern/shaders/common_view_lib.glsl
@@ -1,5 +1,7 @@
-#define COMMON_VIEW_LIB
-#define DRW_RESOURCE_CHUNK_LEN 512
+/* Temporary until we fully make the switch. */
+#ifndef DRW_SHADER_SHARED_H
+
+# define DRW_RESOURCE_CHUNK_LEN 512
/* keep in sync with DRWManager.view_data */
layout(std140) uniform viewBlock
@@ -22,6 +24,8 @@ layout(std140) uniform viewBlock
vec4 CameraTexCoFactors;
};
+#endif /* DRW_SHADER_SHARED_H */
+
#define ViewNear (ViewVecs[0].w)
#define ViewFar (ViewVecs[1].w)
@@ -141,6 +145,10 @@ flat in int resourceIDFrag;
/* clang-format off */
#if !defined(GPU_INTEL) && !defined(GPU_DEPRECATED_AMD_DRIVER) && !defined(OS_MAC) && !defined(INSTANCED_ATTR)
/* clang-format on */
+
+/* Temporary until we fully make the switch. */
+# ifndef DRW_SHADER_SHARED_H
+
struct ObjectMatrices {
mat4 drw_modelMatrix;
mat4 drw_modelMatrixInverse;
@@ -150,17 +158,23 @@ layout(std140) uniform modelBlock
{
ObjectMatrices drw_matrices[DRW_RESOURCE_CHUNK_LEN];
};
+# endif /* DRW_SHADER_SHARED_H */
# define ModelMatrix (drw_matrices[resource_id].drw_modelMatrix)
# define ModelMatrixInverse (drw_matrices[resource_id].drw_modelMatrixInverse)
#else /* GPU_INTEL */
+
+/* Temporary until we fully make the switch. */
+# ifndef DRW_SHADER_SHARED_H
/* Intel GPU seems to suffer performance impact when the model matrix is in UBO storage.
* So for now we just force using the legacy path. */
/* Note that this is also a workaround of a problem on osx (amd or nvidia)
* and older amd driver on windows. */
uniform mat4 ModelMatrix;
uniform mat4 ModelMatrixInverse;
+# endif /* DRW_SHADER_SHARED_H */
+
#endif
#define resource_handle (resourceChunk * DRW_RESOURCE_CHUNK_LEN + resource_id)
diff --git a/source/blender/draw/intern/shaders/draw_fullscreen_info.hh b/source/blender/draw/intern/shaders/draw_fullscreen_info.hh
new file mode 100644
index 00000000000..803ad69ffb7
--- /dev/null
+++ b/source/blender/draw/intern/shaders/draw_fullscreen_info.hh
@@ -0,0 +1,8 @@
+
+#include "gpu_shader_create_info.hh"
+
+GPU_SHADER_INTERFACE_INFO(fullscreen_iface, "").smooth(Type::VEC4, "uvcoordsvar");
+
+GPU_SHADER_CREATE_INFO(draw_fullscreen)
+ .vertex_out(fullscreen_iface)
+ .vertex_source("common_fullscreen_vert.glsl");
diff --git a/source/blender/draw/intern/shaders/draw_object_infos_info.hh b/source/blender/draw/intern/shaders/draw_object_infos_info.hh
new file mode 100644
index 00000000000..10b3754eebb
--- /dev/null
+++ b/source/blender/draw/intern/shaders/draw_object_infos_info.hh
@@ -0,0 +1,5 @@
+
+#include "gpu_shader_create_info.hh"
+
+GPU_SHADER_CREATE_INFO(draw_object_infos)
+ .uniform_buf(1, "ObjectInfos", "drw_infos[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH);
diff --git a/source/blender/draw/intern/shaders/draw_view_info.hh b/source/blender/draw/intern/shaders/draw_view_info.hh
new file mode 100644
index 00000000000..a92284efa5b
--- /dev/null
+++ b/source/blender/draw/intern/shaders/draw_view_info.hh
@@ -0,0 +1,40 @@
+
+#include "gpu_shader_create_info.hh"
+
+/* -------------------------------------------------------------------- */
+/** \name Draw View
+ * \{ */
+
+GPU_SHADER_CREATE_INFO(draw_view)
+ .uniform_buf(0, "ViewInfos", "drw_view", Frequency::PASS)
+ .typedef_source("draw_shader_shared.h");
+
+GPU_SHADER_CREATE_INFO(draw_view_instanced_attr)
+ .push_constant(0, Type::MAT4, "ModelMatrix")
+ .push_constant(16, Type::MAT4, "ModelMatrixInverse")
+ .additional_info("draw_view");
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Geometry Type
+ * \{ */
+
+GPU_SHADER_CREATE_INFO(draw_mesh)
+ .uniform_buf(8, "ObjectMatrices", "drw_matrices[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH)
+ .additional_info("draw_view");
+
+GPU_SHADER_CREATE_INFO(draw_hair)
+ /* TODO(fclem) Finish */
+ .uniform_buf(8, "ObjectMatrices", "drw_matrices[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH)
+ .additional_info("draw_view");
+
+GPU_SHADER_CREATE_INFO(draw_pointcloud)
+ .vertex_in(0, Type::VEC4, "pos")
+ .vertex_in(1, Type::VEC3, "pos_inst")
+ .vertex_in(2, Type::VEC3, "nor")
+ .define("UNIFORM_RESOURCE_ID")
+ .define("INSTANCED_ATTR")
+ .additional_info("draw_view_instanced_attr");
+
+/** \} */