diff --git a/source/blender/gpu/intern/gpu_shader.cc b/source/blender/gpu/intern/gpu_shader.cc index 4da3f0961f4..95879eb8e06 100644 --- a/source/blender/gpu/intern/gpu_shader.cc +++ b/source/blender/gpu/intern/gpu_shader.cc @@ -286,6 +286,8 @@ GPUShader *GPU_shader_create_from_info(const GPUShaderCreateInfo *_info) std::string resources = shader->resources_declare(info); char *shader_shared_utils = nullptr; + defines += "#define USE_GPU_SHADER_CREATE_INFO\n"; + Vector typedefs; for (auto filename : info.typedef_sources_) { typedefs.append(gpu_shader_dependency_get_source(filename.c_str())); diff --git a/source/blender/gpu/shaders/gpu_shader_3D_image_modulate_alpha_info.hh b/source/blender/gpu/shaders/gpu_shader_3D_image_modulate_alpha_info.hh new file mode 100644 index 00000000000..853e94a4b1b --- /dev/null +++ b/source/blender/gpu/shaders/gpu_shader_3D_image_modulate_alpha_info.hh @@ -0,0 +1,16 @@ + +#include "gpu_shader_create_info.hh" + +GPU_SHADER_INTERFACE_INFO(tex_coord_interp_iface, "").smooth(Type::VEC2, "texCoord_interp"); + +GPU_SHADER_CREATE_INFO(gpu_shader_3D_image_modulate_alpha) + .vertex_in(0, Type::VEC3, "pos") + .vertex_in(1, Type::VEC2, "texCoord") + .vertex_out(tex_coord_interp_iface) + .fragment_out(0, Type::VEC4, "fragColor") + .push_constant(0, Type::MAT4, "ModelViewProjectionMatrix") + .push_constant(16, Type::FLOAT, "alpha") + .sampler(0, ImageType::FLOAT_2D, "image", Frequency::PASS) + .vertex_source("gpu_shader_3D_image_vert.glsl") + .fragment_source("gpu_shader_image_modulate_alpha_frag.glsl") + .do_static_compilation(true); diff --git a/source/blender/gpu/shaders/gpu_shader_3D_image_vert.glsl b/source/blender/gpu/shaders/gpu_shader_3D_image_vert.glsl index 0fb8d06e317..908d442739a 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_image_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_image_vert.glsl @@ -1,9 +1,11 @@ +#ifndef USE_GPU_SHADER_CREATE_INFO uniform mat4 ModelViewProjectionMatrix; in vec2 texCoord; in vec3 pos; out vec2 texCoord_interp; +#endif void main() { diff --git a/source/blender/gpu/shaders/gpu_shader_image_modulate_alpha_frag.glsl b/source/blender/gpu/shaders/gpu_shader_image_modulate_alpha_frag.glsl index 613352b4ac8..ceebaae896d 100644 --- a/source/blender/gpu/shaders/gpu_shader_image_modulate_alpha_frag.glsl +++ b/source/blender/gpu/shaders/gpu_shader_image_modulate_alpha_frag.glsl @@ -1,9 +1,11 @@ +#ifndef USE_GPU_SHADER_CREATE_INFO in vec2 texCoord_interp; out vec4 fragColor; uniform float alpha; uniform sampler2D image; +#endif void main() {