Commit: 75e61e5a6dc70107eaf784a369f225ca062fdcd5
Author: Jeroen Bakker
Date:   Fri Jan 28 15:00:26 2022 +0100
Branches: blender-v3.1-release
https://developer.blender.org/rB75e61e5a6dc70107eaf784a369f225ca062fdcd5

Image Engine: Use GPUShaderCreateInfo.

Ported the image engine shaders to use the GPUShaderCreateInfo struct.
No functional changes.

===================================================================

M       source/blender/draw/CMakeLists.txt
M       source/blender/draw/engines/image/image_drawing_mode.hh
M       source/blender/draw/engines/image/image_shader.cc
R074    source/blender/draw/engines/image/shaders/engine_image_frag.glsl        
source/blender/draw/engines/image/shaders/image_engine_frag.glsl
R070    source/blender/draw/engines/image/shaders/engine_image_vert.glsl        
source/blender/draw/engines/image/shaders/image_engine_vert.glsl
A       source/blender/draw/engines/image/shaders/infos/engine_image_info.hh
M       source/blender/gpu/CMakeLists.txt

===================================================================

diff --git a/source/blender/draw/CMakeLists.txt 
b/source/blender/draw/CMakeLists.txt
index b40fc88a076..f4e57d9521b 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -518,8 +518,8 @@ set(GLSL_SRC
   engines/overlay/shaders/wireframe_frag.glsl
   engines/overlay/shaders/xray_fade_frag.glsl
 
-  engines/image/shaders/engine_image_frag.glsl
-  engines/image/shaders/engine_image_vert.glsl
+  engines/image/shaders/image_engine_frag.glsl
+  engines/image/shaders/image_engine_vert.glsl
 )
 
 set(GLSL_C)
diff --git a/source/blender/draw/engines/image/image_drawing_mode.hh 
b/source/blender/draw/engines/image/image_drawing_mode.hh
index 8eb98b40492..c0d829b9307 100644
--- a/source/blender/draw/engines/image/image_drawing_mode.hh
+++ b/source/blender/draw/engines/image/image_drawing_mode.hh
@@ -94,7 +94,7 @@ template<typename TextureMethod> class ScreenSpaceDrawingMode 
: public AbstractD
 
     DRWShadingGroup *shgrp = DRW_shgroup_create(shader, 
instance_data->passes.image_pass);
     DRW_shgroup_uniform_vec2_copy(shgrp, "farNearDistances", 
sh_params.far_near);
-    DRW_shgroup_uniform_vec4_copy(shgrp, "color", ShaderParameters::color);
+    DRW_shgroup_uniform_vec4_copy(shgrp, "col", ShaderParameters::color);
     DRW_shgroup_uniform_vec4_copy(shgrp, "shuffle", sh_params.shuffle);
     DRW_shgroup_uniform_int_copy(shgrp, "drawFlags", sh_params.flags);
     DRW_shgroup_uniform_bool_copy(shgrp, "imgPremultiplied", 
sh_params.use_premul_alpha);
diff --git a/source/blender/draw/engines/image/image_shader.cc 
b/source/blender/draw/engines/image/image_shader.cc
index 77cbaeec5a4..e3cb60c5511 100644
--- a/source/blender/draw/engines/image/image_shader.cc
+++ b/source/blender/draw/engines/image/image_shader.cc
@@ -64,11 +64,7 @@ GPUShader *IMAGE_shader_image_get()
 {
   IMAGE_Shaders *sh_data = &e_data.shaders;
   if (sh_data->image_sh == nullptr) {
-    sh_data->image_sh = 
DRW_shader_create_with_shaderlib(datatoc_engine_image_vert_glsl,
-                                                         nullptr,
-                                                         
datatoc_engine_image_frag_glsl,
-                                                         e_data.lib,
-                                                         nullptr);
+    sh_data->image_sh = 
GPU_shader_create_from_info_name("image_engine_shader");
   }
   return sh_data->image_sh;
 }
diff --git a/source/blender/draw/engines/image/shaders/engine_image_frag.glsl 
b/source/blender/draw/engines/image/shaders/image_engine_frag.glsl
similarity index 74%
rename from source/blender/draw/engines/image/shaders/engine_image_frag.glsl
rename to source/blender/draw/engines/image/shaders/image_engine_frag.glsl
index 298487baab2..bcdc8445b26 100644
--- a/source/blender/draw/engines/image/shaders/engine_image_frag.glsl
+++ b/source/blender/draw/engines/image/shaders/image_engine_frag.glsl
@@ -6,28 +6,11 @@
 #define IMAGE_DRAW_FLAG_SHUFFLING (1 << 2)
 #define IMAGE_DRAW_FLAG_DEPTH (1 << 3)
 
-uniform sampler2D imageTexture;
-
-uniform bool imgPremultiplied;
-uniform int drawFlags;
-uniform vec2 farNearDistances;
-uniform vec4 color;
-uniform vec4 shuffle;
-
-/* Maximum UV range.
- * Negative UV coordinates and UV coordinates beyond maxUV would draw a 
border. */
-uniform vec2 maxUv;
-
-#define FAR_DISTANCE farNearDistances.x
-#define NEAR_DISTANCE farNearDistances.y
-
 #define Z_DEPTH_BORDER 1.0
 #define Z_DEPTH_IMAGE 0.75
 
-in vec2 uv_screen;
-in vec2 uv_image;
-
-out vec4 fragColor;
+#define FAR_DISTANCE farNearDistances.x
+#define NEAR_DISTANCE farNearDistances.y
 
 bool is_border(vec2 uv)
 {
@@ -51,7 +34,7 @@ void main()
     }
 
     if ((drawFlags & IMAGE_DRAW_FLAG_SHUFFLING) != 0) {
-      tex_color = color * dot(tex_color, shuffle);
+      tex_color = col * dot(tex_color, shuffle);
     }
     if ((drawFlags & IMAGE_DRAW_FLAG_SHOW_ALPHA) == 0) {
       tex_color.a = 1.0;
diff --git a/source/blender/draw/engines/image/shaders/engine_image_vert.glsl 
b/source/blender/draw/engines/image/shaders/image_engine_vert.glsl
similarity index 70%
rename from source/blender/draw/engines/image/shaders/engine_image_vert.glsl
rename to source/blender/draw/engines/image/shaders/image_engine_vert.glsl
index 0c106f48f4a..deefab655d2 100644
--- a/source/blender/draw/engines/image/shaders/engine_image_vert.glsl
+++ b/source/blender/draw/engines/image/shaders/image_engine_vert.glsl
@@ -1,12 +1,5 @@
 #pragma BLENDER_REQUIRE(common_view_lib.glsl)
 
-in vec2 pos;
-in vec2 uv;
-
-/* Normalized screen space uv coordinates. */
-out vec2 uv_screen;
-out vec2 uv_image;
-
 void main()
 {
   vec3 image_pos = vec3(pos, 0.0);
diff --git 
a/source/blender/draw/engines/image/shaders/infos/engine_image_info.hh 
b/source/blender/draw/engines/image/shaders/infos/engine_image_info.hh
new file mode 100644
index 00000000000..e691abfadcf
--- /dev/null
+++ b/source/blender/draw/engines/image/shaders/infos/engine_image_info.hh
@@ -0,0 +1,22 @@
+#include "gpu_shader_create_info.hh"
+
+GPU_SHADER_INTERFACE_INFO(image_engine_iface, "")
+    .smooth(Type::VEC2, "uv_screen")
+    .smooth(Type::VEC2, "uv_image");
+
+GPU_SHADER_CREATE_INFO(image_engine_shader)
+    .vertex_in(0, Type::VEC2, "pos")
+    .vertex_in(1, Type::VEC2, "uv")
+    .vertex_out(image_engine_iface)
+    .fragment_out(0, Type::VEC4, "fragColor")
+    .push_constant(Type::VEC4, "shuffle")
+    .push_constant(Type::VEC4, "col")
+    .push_constant(Type::VEC2, "maxUv")
+    .push_constant(Type::VEC2, "farNearDistances")
+    .push_constant(Type::INT, "drawFlags")
+    .push_constant(Type::BOOL, "imgPremultiplied")
+    .sampler(0, ImageType::FLOAT_2D, "imageTexture")
+    .vertex_source("image_engine_vert.glsl")
+    .fragment_source("image_engine_frag.glsl")
+    .additional_info("draw_modelmat")
+    .do_static_compilation(true);
\ No newline at end of file
diff --git a/source/blender/gpu/CMakeLists.txt 
b/source/blender/gpu/CMakeLists.txt
index 1219b04effa..2b6b28bd649 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -412,6 +412,7 @@ set(SHADER_CREATE_INFOS
   ../draw/engines/workbench/shaders/infos/workbench_shadow_info.hh
   ../draw/engines/workbench/shaders/infos/workbench_transparent_resolve_info.hh
   ../draw/engines/workbench/shaders/infos/workbench_volume_info.hh
+  ../draw/engines/image/shaders/infos/engine_image_info.hh
   ../draw/intern/shaders/draw_fullscreen_info.hh
   ../draw/intern/shaders/draw_object_infos_info.hh
   ../draw/intern/shaders/draw_view_info.hh

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to