diff options
author | Sergey Sharybin <sergey@blender.org> | 2022-02-01 13:04:38 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2022-02-01 13:04:38 +0300 |
commit | 34449ba9a68a6ca5bbd366d199d4a3aac9ebc073 (patch) | |
tree | a8e3123518dc7ac79197ea032fc561d8b2409d7f /source/blender/draw | |
parent | 120deaac5babbce9625541f470ce3e4d5363c996 (diff) | |
parent | 6f9828289f397228c6cab6f352fb4a84a65da22a (diff) |
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/draw')
5 files changed, 18 insertions, 8 deletions
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt index 3c25252efe8..47d99963ef9 100644 --- a/source/blender/draw/CMakeLists.txt +++ b/source/blender/draw/CMakeLists.txt @@ -45,6 +45,7 @@ set(INC ../../../intern/glew-mx ../../../intern/guardedalloc ../../../intern/opensubdiv + ../../../intern/clog # dna_type_offsets.h ${CMAKE_CURRENT_BINARY_DIR}/../makesdna/intern diff --git a/source/blender/draw/engines/image/image_private.hh b/source/blender/draw/engines/image/image_private.hh index d8f8adb7e84..d586515c6be 100644 --- a/source/blender/draw/engines/image/image_private.hh +++ b/source/blender/draw/engines/image/image_private.hh @@ -54,6 +54,8 @@ struct IMAGE_Data { #define IMAGE_DRAW_FLAG_APPLY_ALPHA (1 << 1) #define IMAGE_DRAW_FLAG_SHUFFLING (1 << 2) #define IMAGE_DRAW_FLAG_DEPTH (1 << 3) +/** Flag to disable depth testing (used for node editor back drop drawing).*/ +#define IMAGE_DRAW_FLAG_DEPTH_ALWAYS (1 << 4) /** * Abstract class for a drawing mode of the image engine. diff --git a/source/blender/draw/engines/image/image_space_node.hh b/source/blender/draw/engines/image/image_space_node.hh index 15eef8f6499..b0da3d1055b 100644 --- a/source/blender/draw/engines/image/image_space_node.hh +++ b/source/blender/draw/engines/image/image_space_node.hh @@ -56,6 +56,7 @@ class SpaceNodeAccessor : public AbstractSpaceAccessor { void get_shader_parameters(ShaderParameters &r_shader_parameters, ImBuf *ibuf) override { + r_shader_parameters.flags |= IMAGE_DRAW_FLAG_DEPTH_ALWAYS; if ((snode->flag & SNODE_USE_ALPHA) != 0) { /* Show RGBA */ r_shader_parameters.flags |= IMAGE_DRAW_FLAG_SHOW_ALPHA | IMAGE_DRAW_FLAG_APPLY_ALPHA; diff --git a/source/blender/draw/engines/image/shaders/image_engine_color_frag.glsl b/source/blender/draw/engines/image/shaders/image_engine_color_frag.glsl index 0edc18836f0..65fd4833b23 100644 --- a/source/blender/draw/engines/image/shaders/image_engine_color_frag.glsl +++ b/source/blender/draw/engines/image/shaders/image_engine_color_frag.glsl @@ -5,6 +5,7 @@ #define IMAGE_DRAW_FLAG_APPLY_ALPHA (1 << 1) #define IMAGE_DRAW_FLAG_SHUFFLING (1 << 2) #define IMAGE_DRAW_FLAG_DEPTH (1 << 3) +#define IMAGE_DRAW_FLAG_DEPTH_ALWAYS (1 << 4) #define FAR_DISTANCE farNearDistances.x #define NEAR_DISTANCE farNearDistances.y @@ -12,9 +13,11 @@ void main() { ivec2 uvs_clamped = ivec2(uv_screen); - float depth = texelFetch(depth_texture, uvs_clamped, 0).r; - if (depth == 1.0) { - discard; + if ((drawFlags & IMAGE_DRAW_FLAG_DEPTH_ALWAYS) == 0) { + float depth = texelFetch(depth_texture, uvs_clamped, 0).r; + if (depth == 1.0) { + discard; + } } vec4 tex_color = texelFetch(imageTexture, uvs_clamped, 0); diff --git a/source/blender/draw/intern/draw_manager_shader.c b/source/blender/draw/intern/draw_manager_shader.c index f8e64041a92..4715bd62779 100644 --- a/source/blender/draw/intern/draw_manager_shader.c +++ b/source/blender/draw/intern/draw_manager_shader.c @@ -46,6 +46,10 @@ #include "draw_manager.h" +#include "CLG_log.h" + +static CLG_LogRef LOG = {"draw.manager.shader"}; + extern char datatoc_gpu_shader_2D_vert_glsl[]; extern char datatoc_gpu_shader_3D_vert_glsl[]; extern char datatoc_gpu_shader_depth_only_frag_glsl[]; @@ -616,11 +620,10 @@ static uint32_t drw_shader_dependencies_get(const DRWShaderLibrary *lib, const c } dbg_name[i + 1] = '\0'; - printf( - "Error: Dependency not found: %s\n" - "This might be due to bad lib ordering.\n", - dbg_name); - BLI_assert(0); + CLOG_WARN(&LOG, + "Error: Dependency not found: %s\n" + "This might be due to bad lib ordering or overriding a builtin shader.\n", + dbg_name); } else { deps |= 1u << (uint32_t)dep; |