diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-05-20 20:05:13 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-05-20 20:17:11 +0300 |
commit | 4bbb1d4e5e371dce3a8ccd62f103d4e553e34388 (patch) | |
tree | 5d80ac4f200f6cbbe2fb856ebe55d6b25adb3119 /source/blender/draw/intern/draw_manager_exec.c | |
parent | 7a28dea1e173aefd08ef2130a9efc401d049e150 (diff) |
DRW: Rename some DRW_STATE_* for more consistency.
Diffstat (limited to 'source/blender/draw/intern/draw_manager_exec.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager_exec.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c index 75754aed3a3..9f4adac0106 100644 --- a/source/blender/draw/intern/draw_manager_exec.c +++ b/source/blender/draw/intern/draw_manager_exec.c @@ -105,10 +105,13 @@ void drw_state_set(DRWState state) /* Raster Discard */ { if (CHANGED_ANY(DRW_STATE_WRITE_DEPTH | DRW_STATE_WRITE_COLOR | - DRW_STATE_WRITE_STENCIL | DRW_STATE_WRITE_STENCIL_SHADOW)) + DRW_STATE_WRITE_STENCIL | + DRW_STATE_WRITE_STENCIL_SHADOW_PASS | + DRW_STATE_WRITE_STENCIL_SHADOW_FAIL)) { if ((state & (DRW_STATE_WRITE_DEPTH | DRW_STATE_WRITE_COLOR | - DRW_STATE_WRITE_STENCIL | DRW_STATE_WRITE_STENCIL_SHADOW)) != 0) + DRW_STATE_WRITE_STENCIL | DRW_STATE_WRITE_STENCIL_SHADOW_PASS | + DRW_STATE_WRITE_STENCIL_SHADOW_FAIL)) != 0) { glDisable(GL_RASTERIZER_DISCARD); } @@ -148,19 +151,26 @@ void drw_state_set(DRWState state) { DRWState test; if (CHANGED_ANY_STORE_VAR( - DRW_STATE_DEPTH_LESS | DRW_STATE_DEPTH_EQUAL | DRW_STATE_DEPTH_GREATER | DRW_STATE_DEPTH_ALWAYS, + DRW_STATE_DEPTH_LESS | DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_DEPTH_EQUAL | + DRW_STATE_DEPTH_GREATER | DRW_STATE_DEPTH_GREATER_EQUAL | DRW_STATE_DEPTH_ALWAYS, test)) { if (test) { glEnable(GL_DEPTH_TEST); if (state & DRW_STATE_DEPTH_LESS) { + glDepthFunc(GL_LESS); + } + else if (state & DRW_STATE_DEPTH_LESS_EQUAL) { glDepthFunc(GL_LEQUAL); } else if (state & DRW_STATE_DEPTH_EQUAL) { glDepthFunc(GL_EQUAL); } else if (state & DRW_STATE_DEPTH_GREATER) { + glDepthFunc(GL_GREATER); + } + else if (state & DRW_STATE_DEPTH_GREATER_EQUAL) { glDepthFunc(GL_GEQUAL); } else if (state & DRW_STATE_DEPTH_ALWAYS) { @@ -299,7 +309,8 @@ void drw_state_set(DRWState state) DRWState test; if (CHANGED_ANY_STORE_VAR( DRW_STATE_WRITE_STENCIL | - DRW_STATE_WRITE_STENCIL_SHADOW | + DRW_STATE_WRITE_STENCIL_SHADOW_PASS | + DRW_STATE_WRITE_STENCIL_SHADOW_FAIL | DRW_STATE_STENCIL_EQUAL | DRW_STATE_STENCIL_NEQUAL, test)) @@ -311,11 +322,16 @@ void drw_state_set(DRWState state) glStencilMask(0xFF); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); } - else if ((state & DRW_STATE_WRITE_STENCIL_SHADOW) != 0) { + else if ((state & DRW_STATE_WRITE_STENCIL_SHADOW_PASS) != 0) { glStencilMask(0xFF); glStencilOpSeparate(GL_BACK, GL_KEEP, GL_KEEP, GL_INCR_WRAP); glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_KEEP, GL_DECR_WRAP); } + else if ((state & DRW_STATE_WRITE_STENCIL_SHADOW_FAIL) != 0) { + glStencilMask(0xFF); + glStencilOpSeparate(GL_BACK, GL_KEEP, GL_INCR_WRAP, GL_KEEP); + glStencilOpSeparate(GL_FRONT, GL_KEEP, GL_DECR_WRAP, GL_KEEP); + } /* Stencil Test */ else if ((state & (DRW_STATE_STENCIL_EQUAL | DRW_STATE_STENCIL_NEQUAL)) != 0) { glStencilMask(0x00); /* disable write */ |