diff options
author | Jeroen Bakker <jeroen@blender.org> | 2022-01-28 17:00:26 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2022-01-28 17:03:45 +0300 |
commit | 75e61e5a6dc70107eaf784a369f225ca062fdcd5 (patch) | |
tree | 7a18887c86233f25cb7fc40a0f65635dd91f9257 /source/blender/draw/engines | |
parent | 430f71fce289e876602178330ac725c46c043abf (diff) |
Image Engine: Use GPUShaderCreateInfo.
Ported the image engine shaders to use the GPUShaderCreateInfo struct.
No functional changes.
Diffstat (limited to 'source/blender/draw/engines')
-rw-r--r-- | source/blender/draw/engines/image/image_drawing_mode.hh | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/image/image_shader.cc | 6 | ||||
-rw-r--r-- | source/blender/draw/engines/image/shaders/image_engine_frag.glsl (renamed from source/blender/draw/engines/image/shaders/engine_image_frag.glsl) | 23 | ||||
-rw-r--r-- | source/blender/draw/engines/image/shaders/image_engine_vert.glsl (renamed from source/blender/draw/engines/image/shaders/engine_image_vert.glsl) | 7 | ||||
-rw-r--r-- | source/blender/draw/engines/image/shaders/infos/engine_image_info.hh | 22 |
5 files changed, 27 insertions, 33 deletions
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 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 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 |