Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/image/image_shader.c')
-rw-r--r--source/blender/draw/engines/image/image_shader.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/draw/engines/image/image_shader.c b/source/blender/draw/engines/image/image_shader.c
index 433c79e20cf..0e0c432c32f 100644
--- a/source/blender/draw/engines/image/image_shader.c
+++ b/source/blender/draw/engines/image/image_shader.c
@@ -37,7 +37,7 @@ extern char datatoc_engine_image_frag_glsl[];
extern char datatoc_engine_image_vert_glsl[];
typedef struct IMAGE_Shaders {
- GPUShader *image_sh;
+ GPUShader *image_sh[2];
} IMAGE_Shaders;
static struct {
@@ -56,14 +56,19 @@ void IMAGE_shader_library_ensure(void)
}
}
-GPUShader *IMAGE_shader_image_get(void)
+GPUShader *IMAGE_shader_image_get(bool is_tiled_image)
{
+ const int index = is_tiled_image ? 1 : 0;
IMAGE_Shaders *sh_data = &e_data.shaders;
- if (!sh_data->image_sh) {
- sh_data->image_sh = DRW_shader_create_with_shaderlib(
- datatoc_engine_image_vert_glsl, NULL, datatoc_engine_image_frag_glsl, e_data.lib, NULL);
+ if (!sh_data->image_sh[index]) {
+ sh_data->image_sh[index] = DRW_shader_create_with_shaderlib(
+ datatoc_engine_image_vert_glsl,
+ NULL,
+ datatoc_engine_image_frag_glsl,
+ e_data.lib,
+ is_tiled_image ? "#define TILED_IMAGE\n" : NULL);
}
- return sh_data->image_sh;
+ return sh_data->image_sh[index];
}
void IMAGE_shader_free(void)