Fix T80160: Workbench shadows are broken

In recent refactoring {a9f2ebb21508} an issue was introduced that the
opengl rasterizer would be disabled when only writing to a stencil
buffer.

This fix adds stencil writing to the write mask and set it. This makes
the write map not evaluate to GPU_WRITE_NONE and the rasterizer will be
enabled in `GLStateManager::set_write_mask`.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D8743
This commit is contained in:
Jeroen Bakker 2020-08-28 14:33:51 +02:00 committed by Jeroen Bakker
parent df8e2c76c9
commit 3198fec1fe
Notes: blender-bot 2023-02-14 00:37:17 +01:00
Referenced by issue #80160, Workbench shadows are broken
2 changed files with 4 additions and 0 deletions

View File

@ -99,6 +99,9 @@ void drw_state_set(DRWState state)
if (state & DRW_STATE_WRITE_COLOR) {
write_mask |= GPU_WRITE_COLOR;
}
if (state & DRW_STATE_WRITE_STENCIL_ENABLED) {
write_mask |= GPU_WRITE_STENCIL;
}
switch (state & (DRW_STATE_CULL_BACK | DRW_STATE_CULL_FRONT)) {
case DRW_STATE_CULL_BACK:

View File

@ -29,6 +29,7 @@ typedef enum eGPUWriteMask {
GPU_WRITE_BLUE = (1 << 2),
GPU_WRITE_ALPHA = (1 << 3),
GPU_WRITE_DEPTH = (1 << 4),
GPU_WRITE_STENCIL = (1 << 5),
GPU_WRITE_COLOR = (GPU_WRITE_RED | GPU_WRITE_GREEN | GPU_WRITE_BLUE | GPU_WRITE_ALPHA),
} eGPUWriteMask;