From 57639186514079d3fce590006616c543628fe1d8 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Mon, 5 Sep 2022 17:34:10 -0300 Subject: GPU: convert 'GPU_SHADER_2D_IMAGE_COLOR' to 3D 3D shaders work in both 2D and 3D viewports. This shader is a good candidate to be exposed in Python. --- source/blender/gpu/CMakeLists.txt | 1 - source/blender/gpu/GPU_shader.h | 10 +++++++++- source/blender/gpu/intern/gpu_shader_builtin.c | 10 +++++----- .../gpu/shaders/infos/gpu_shader_2D_image_color_info.hh | 14 -------------- .../blender/gpu/shaders/infos/gpu_shader_3D_image_info.hh | 13 +++++++++++-- 5 files changed, 25 insertions(+), 23 deletions(-) delete mode 100644 source/blender/gpu/shaders/infos/gpu_shader_2D_image_color_info.hh (limited to 'source/blender/gpu') diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt index 2eceeedf845..152df8cb592 100644 --- a/source/blender/gpu/CMakeLists.txt +++ b/source/blender/gpu/CMakeLists.txt @@ -574,7 +574,6 @@ set(SRC_SHADER_CREATE_INFOS shaders/infos/gpu_shader_2D_area_borders_info.hh shaders/infos/gpu_shader_2D_checker_info.hh shaders/infos/gpu_shader_2D_diag_stripes_info.hh - shaders/infos/gpu_shader_2D_image_color_info.hh shaders/infos/gpu_shader_2D_image_desaturate_color_info.hh shaders/infos/gpu_shader_2D_image_info.hh shaders/infos/gpu_shader_2D_image_multi_rect_color_info.hh diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h index d694fcf4da1..0db61bedc2c 100644 --- a/source/blender/gpu/GPU_shader.h +++ b/source/blender/gpu/GPU_shader.h @@ -212,7 +212,6 @@ typedef enum eGPUBuiltinShader { * \param color: in vec4 * \param pos: in vec2 */ - GPU_SHADER_2D_IMAGE_COLOR, GPU_SHADER_2D_IMAGE_DESATURATE_COLOR, GPU_SHADER_2D_IMAGE_RECT_COLOR, GPU_SHADER_2D_IMAGE_MULTI_RECT_COLOR, @@ -287,6 +286,15 @@ typedef enum eGPUBuiltinShader { * \param pos: in vec3 */ GPU_SHADER_3D_IMAGE, + /** + * Take a 3D position and color for each vertex with linear interpolation in window space. + * + * \param color: uniform vec4 + * \param image: uniform sampler2D + * \param texCoord: in vec2 + * \param pos: in vec3 + */ + GPU_SHADER_3D_IMAGE_COLOR, /** * Draw texture with alpha. Take a 3D position and a 2D texture coordinate for each vertex. * diff --git a/source/blender/gpu/intern/gpu_shader_builtin.c b/source/blender/gpu/intern/gpu_shader_builtin.c index d255084609e..7973c635cb8 100644 --- a/source/blender/gpu/intern/gpu_shader_builtin.c +++ b/source/blender/gpu/intern/gpu_shader_builtin.c @@ -136,6 +136,11 @@ static const GPUShaderStages builtin_shader_stages[GPU_SHADER_BUILTIN_LEN] = { .name = "GPU_SHADER_3D_IMAGE", .create_info = "gpu_shader_3D_image", }, + [GPU_SHADER_3D_IMAGE_COLOR] = + { + .name = "GPU_SHADER_3D_IMAGE_COLOR", + .create_info = "gpu_shader_3D_image_color", + }, [GPU_SHADER_3D_IMAGE_MODULATE_ALPHA] = { .name = "GPU_SHADER_3D_IMAGE_MODULATE_ALPHA", @@ -163,11 +168,6 @@ static const GPUShaderStages builtin_shader_stages[GPU_SHADER_BUILTIN_LEN] = { .name = "GPU_SHADER_2D_IMAGE_OVERLAYS_STEREO_MERGE", .create_info = "gpu_shader_2D_image_overlays_stereo_merge", }, - [GPU_SHADER_2D_IMAGE_COLOR] = - { - .name = "GPU_SHADER_2D_IMAGE_COLOR", - .create_info = "gpu_shader_2D_image_color", - }, [GPU_SHADER_2D_IMAGE_DESATURATE_COLOR] = { .name = "GPU_SHADER_2D_IMAGE_DESATURATE_COLOR", diff --git a/source/blender/gpu/shaders/infos/gpu_shader_2D_image_color_info.hh b/source/blender/gpu/shaders/infos/gpu_shader_2D_image_color_info.hh deleted file mode 100644 index 021bd9ebb95..00000000000 --- a/source/blender/gpu/shaders/infos/gpu_shader_2D_image_color_info.hh +++ /dev/null @@ -1,14 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later - * Copyright 2022 Blender Foundation. All rights reserved. */ - -/** \file - * \ingroup gpu - */ - -#include "gpu_shader_create_info.hh" - -GPU_SHADER_CREATE_INFO(gpu_shader_2D_image_color) - .additional_info("gpu_shader_2D_image_common") - .push_constant(Type::VEC4, "color") - .fragment_source("gpu_shader_image_color_frag.glsl") - .do_static_compilation(true); diff --git a/source/blender/gpu/shaders/infos/gpu_shader_3D_image_info.hh b/source/blender/gpu/shaders/infos/gpu_shader_3D_image_info.hh index 94cf58933af..8abd140397f 100644 --- a/source/blender/gpu/shaders/infos/gpu_shader_3D_image_info.hh +++ b/source/blender/gpu/shaders/infos/gpu_shader_3D_image_info.hh @@ -8,13 +8,22 @@ #include "gpu_interface_info.hh" #include "gpu_shader_create_info.hh" -GPU_SHADER_CREATE_INFO(gpu_shader_3D_image) +GPU_SHADER_CREATE_INFO(gpu_shader_3D_image_common) .vertex_in(0, Type::VEC3, "pos") .vertex_in(1, Type::VEC2, "texCoord") .vertex_out(smooth_tex_coord_interp_iface) .fragment_out(0, Type::VEC4, "fragColor") .push_constant(Type::MAT4, "ModelViewProjectionMatrix") .sampler(0, ImageType::FLOAT_2D, "image") - .vertex_source("gpu_shader_3D_image_vert.glsl") + .vertex_source("gpu_shader_3D_image_vert.glsl"); + +GPU_SHADER_CREATE_INFO(gpu_shader_3D_image) + .additional_info("gpu_shader_3D_image_common") .fragment_source("gpu_shader_image_frag.glsl") .do_static_compilation(true); + +GPU_SHADER_CREATE_INFO(gpu_shader_3D_image_color) + .additional_info("gpu_shader_3D_image_common") + .push_constant(Type::VEC4, "color") + .fragment_source("gpu_shader_image_color_frag.glsl") + .do_static_compilation(true); -- cgit v1.2.3