diff options
author | Jeroen Bakker <jeroen@blender.org> | 2022-01-17 16:45:22 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2022-01-17 16:46:32 +0300 |
commit | 9d3f35a0bf1bf5776363bfd61d53a7c85b5827a4 (patch) | |
tree | 595fe492f09aea9f97049339385f7966ac02f0e1 /source/blender/draw/intern/shaders | |
parent | edee5a947b7ea3e1324aa334a22c7c9bbf47f5f7 (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')
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"); + +/** \} */ |