diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2022-08-30 14:06:41 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2022-08-30 14:06:41 +0300 |
commit | e32180aafa5f7acfb1b07004faf76c8e575569d6 (patch) | |
tree | 4efe9326df3112046912eb28d82dca399fe7b71f | |
parent | fce7e485787c7ef7435873352fa0ccc678926386 (diff) |
Fix test cases
7 files changed, 18 insertions, 10 deletions
diff --git a/source/blender/draw/intern/draw_command.cc b/source/blender/draw/intern/draw_command.cc index 5e75d7c8e49..3a2afa0e5b7 100644 --- a/source/blender/draw/intern/draw_command.cc +++ b/source/blender/draw/intern/draw_command.cc @@ -36,6 +36,9 @@ void ShaderBind::execute(RecordingState &state) const void ResourceBind::execute() const { + if (slot == -1) { + return; + } switch (type) { case ResourceBind::Type::Sampler: GPU_texture_bind_ex(is_reference ? *texture_ref : texture, sampler, slot, false); @@ -54,6 +57,9 @@ void ResourceBind::execute() const void PushConstant::execute(RecordingState &state) const { + if (location == -1) { + return; + } switch (type) { case PushConstant::Type::IntValue: GPU_shader_uniform_vector_int(state.shader, location, comp_len, array_len, int4_value); diff --git a/source/blender/draw/intern/draw_manager.cc b/source/blender/draw/intern/draw_manager.cc index e0bd766f781..6feae81b62f 100644 --- a/source/blender/draw/intern/draw_manager.cc +++ b/source/blender/draw/intern/draw_manager.cc @@ -78,6 +78,9 @@ void Manager::end_sync() void Manager::debug_bind() { #ifdef DEBUG + if (DST.debug == nullptr) { + return; + } GPU_storagebuf_bind(drw_debug_gpu_draw_buf_get(), DRW_DEBUG_DRAW_SLOT); GPU_storagebuf_bind(drw_debug_gpu_print_buf_get(), DRW_DEBUG_PRINT_SLOT); # ifndef DISABLE_DEBUG_SHADER_PRINT_BARRIER diff --git a/source/blender/draw/intern/draw_pass.hh b/source/blender/draw/intern/draw_pass.hh index 650fa30010c..56e99059c7b 100644 --- a/source/blender/draw/intern/draw_pass.hh +++ b/source/blender/draw/intern/draw_pass.hh @@ -811,16 +811,12 @@ template<class T> inline void PassBase<T>::bind(int slot, GPUUniformBuf *buffer) template<class T> inline void PassBase<T>::bind(int slot, GPUTexture *texture, eGPUSamplerState state) { - if (slot != -1) { - create_command(Type::ResourceBind).resource_bind = {slot, texture, state}; - } + create_command(Type::ResourceBind).resource_bind = {slot, texture, state}; } template<class T> inline void PassBase<T>::bind(int slot, draw::Image *image) { - if (slot != -1) { - create_command(Type::ResourceBind).resource_bind = {slot, image}; - } + create_command(Type::ResourceBind).resource_bind = {slot, image}; } template<class T> inline void PassBase<T>::bind(const char *name, GPUStorageBuf **buffer) diff --git a/source/blender/draw/intern/draw_shader_shared.h b/source/blender/draw/intern/draw_shader_shared.h index 267e88f704b..32829a1271f 100644 --- a/source/blender/draw/intern/draw_shader_shared.h +++ b/source/blender/draw/intern/draw_shader_shared.h @@ -116,7 +116,8 @@ enum eObjectInfoFlag { OBJECT_FROM_SET = (1u << 2u), OBJECT_ACTIVE = (1u << 3u), OBJECT_NEGATIVE_SCALE = (1u << 4u), - OBJECT_NO_INFO = 0xFFFFFFFFu + /* Avoid skipped info to change culling. */ + OBJECT_NO_INFO = ~OBJECT_NEGATIVE_SCALE }; struct ObjectInfos { diff --git a/source/blender/draw/intern/shaders/draw_resource_finalize_comp.glsl b/source/blender/draw/intern/shaders/draw_resource_finalize_comp.glsl index 70fe645c128..d834435e54e 100644 --- a/source/blender/draw/intern/shaders/draw_resource_finalize_comp.glsl +++ b/source/blender/draw/intern/shaders/draw_resource_finalize_comp.glsl @@ -22,6 +22,10 @@ void main() vec3 p01 = bounds.bounding_corners[1].xyz - p0; vec3 p02 = bounds.bounding_corners[2].xyz - p0; vec3 p03 = bounds.bounding_corners[3].xyz - p0; + /* Avoid flat box. */ + p01.x = max(p01.x, 1e-4); + p02.y = max(p02.y, 1e-4); + p03.z = max(p03.z, 1e-4); vec3 diagonal = p01 + p02 + p03; vec3 center = p0 + diagonal * 0.5; float min_axis = min_v3(abs(diagonal)); diff --git a/source/blender/draw/intern/shaders/draw_visibility_comp.glsl b/source/blender/draw/intern/shaders/draw_visibility_comp.glsl index d48c65786af..7ec58c8f919 100644 --- a/source/blender/draw/intern/shaders/draw_visibility_comp.glsl +++ b/source/blender/draw/intern/shaders/draw_visibility_comp.glsl @@ -38,12 +38,9 @@ void main() /* Not visible. */ mask_visibility_bit(); } -#if 0 /* Still has some quirks for now. Would be nice to fix as it would remove a lot of false \ - positive. */ else if (intersect_view(box) == false) { /* Not visible. */ mask_visibility_bit(); } -#endif } }
\ No newline at end of file diff --git a/source/blender/draw/tests/draw_pass_test.cc b/source/blender/draw/tests/draw_pass_test.cc index 5a8adaa866a..d2ab3d925b5 100644 --- a/source/blender/draw/tests/draw_pass_test.cc +++ b/source/blender/draw/tests/draw_pass_test.cc @@ -125,6 +125,7 @@ static void test_draw_pass_sub_ordering() expected << " .push_constant(-1, data=1)" << std::endl; expected << " .Sub1" << std::endl; expected << " .push_constant(-1, data=11)" << std::endl; + expected << " .push_constant(-1, data=12)" << std::endl; expected << " .Sub2" << std::endl; expected << " .push_constant(-1, data=21)" << std::endl; expected << " .push_constant(-1, data=22)" << std::endl; |