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:
authorCampbell Barton <ideasman42@gmail.com>2021-01-28 13:16:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-01-28 13:53:56 +0300
commit8948f73784cb818689ba38aa9ae5008eb3c8290b (patch)
tree2418b195afac4a14e81aec20bb5ab65ed01a1f9c /source/blender/gpu
parent51c8d53a7d0e1dfa151482420e2b19ae2ee10c9b (diff)
Fix T81334: Python view-port drawing depth-test regression
Since 216d78687d2b9468b05fb598d1cef0b8424a40d2 the depth function (glDepthFunc) was left in an undefined state for drawing callbacks that use the `bgl` module. This meant enabling depth-test from Python's bgl module also needed to set the depth function (which previously wasn't necessary). Set the depth function as part of GPU_bgl_start
Diffstat (limited to 'source/blender/gpu')
-rw-r--r--source/blender/gpu/intern/gpu_state.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc
index 407a8dd6e2b..e158601a25c 100644
--- a/source/blender/gpu/intern/gpu_state.cc
+++ b/source/blender/gpu/intern/gpu_state.cc
@@ -339,6 +339,20 @@ void GPU_bgl_start()
/* Expected by many addons (see T80169, T81289).
* This will reset the blend function. */
GPU_blend(GPU_BLEND_NONE);
+
+ /* Equivalent of setting the depth func `glDepthFunc(GL_LEQUAL)`
+ * Needed since Python scripts may enable depth test.
+ * Without this block the depth test function is undefined. */
+ {
+ eGPUDepthTest depth_test_real = GPU_depth_test_get();
+ eGPUDepthTest depth_test_temp = GPU_DEPTH_LESS_EQUAL;
+ if (depth_test_real != depth_test_temp) {
+ GPU_depth_test(depth_test_temp);
+ state_manager.apply_state();
+ GPU_depth_test(depth_test_real);
+ }
+ }
+
state_manager.apply_state();
state_manager.use_bgl = true;
}