diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-05-07 23:06:22 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-05-07 23:06:22 +0300 |
commit | 04c04b6f4d31b92521d43020a5c8a9841397dc25 (patch) | |
tree | 04a717335e154a462c6f147a2a9f7a87b45d8967 /source/blender/gpu | |
parent | b5eeef834f5d59c081ff15a5b8a01d414c6d8e1d (diff) | |
parent | 05fafb05b199729916f10504336747a504cf8563 (diff) |
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/GPU_texture.h | 2 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_texture.c | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/gpu/GPU_texture.h b/source/blender/gpu/GPU_texture.h index d6e5866ae28..3d99a3c8a56 100644 --- a/source/blender/gpu/GPU_texture.h +++ b/source/blender/gpu/GPU_texture.h @@ -245,7 +245,7 @@ void GPU_texture_generate_mipmap(GPUTexture *tex); void GPU_texture_compare_mode(GPUTexture *tex, bool use_compare); void GPU_texture_filter_mode(GPUTexture *tex, bool use_filter); void GPU_texture_mipmap_mode(GPUTexture *tex, bool use_mipmap, bool use_filter); -void GPU_texture_wrap_mode(GPUTexture *tex, bool use_repeat); +void GPU_texture_wrap_mode(GPUTexture *tex, bool use_repeat, bool use_clamp); void GPU_texture_filters(GPUTexture *tex, eGPUFilterFunction min_filter, eGPUFilterFunction mag_filter); diff --git a/source/blender/gpu/intern/gpu_texture.c b/source/blender/gpu/intern/gpu_texture.c index 686a20d05a8..fd01ddf8597 100644 --- a/source/blender/gpu/intern/gpu_texture.c +++ b/source/blender/gpu/intern/gpu_texture.c @@ -1856,11 +1856,11 @@ void GPU_texture_mipmap_mode(GPUTexture *tex, bool use_mipmap, bool use_filter) glTexParameteri(tex->target_base, GL_TEXTURE_MAG_FILTER, filter); } -void GPU_texture_wrap_mode(GPUTexture *tex, bool use_repeat) +void GPU_texture_wrap_mode(GPUTexture *tex, bool use_repeat, bool use_clamp) { WARN_NOT_BOUND(tex); - GLenum repeat = (use_repeat) ? GL_REPEAT : GL_CLAMP_TO_EDGE; + GLenum repeat = (use_repeat) ? GL_REPEAT : (use_clamp) ? GL_CLAMP_TO_EDGE : GL_CLAMP_TO_BORDER; glActiveTexture(GL_TEXTURE0 + tex->number); glTexParameteri(tex->target_base, GL_TEXTURE_WRAP_S, repeat); @@ -1870,6 +1870,11 @@ void GPU_texture_wrap_mode(GPUTexture *tex, bool use_repeat) if (tex->target_base == GL_TEXTURE_3D) { glTexParameteri(tex->target_base, GL_TEXTURE_WRAP_R, repeat); } + + if (repeat == GL_CLAMP_TO_BORDER) { + const float black[] = {0.0f, 0.0f, 0.0f, 0.0f}; + glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, black); + } } void GPU_texture_swizzle_channel_auto(GPUTexture *tex, int channels) |