From cb8da6efce80932797aaf3e10aa7eb8f3474c1ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 24 Aug 2020 12:28:54 +0200 Subject: GPUState: Fix scissor state being overwritten when changing scissor bounds Fix T79899 viewport artifacts when sculpting --- source/blender/gpu/intern/gpu_state.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source/blender') diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc index f8d753f9ee7..fcbaa500e2d 100644 --- a/source/blender/gpu/intern/gpu_state.cc +++ b/source/blender/gpu/intern/gpu_state.cc @@ -201,7 +201,8 @@ void GPU_scissor(int x, int y, int width, int height) { GPUStateManager *stack = GPU_context_active_get()->state_manager; auto &state = stack->mutable_state; - int scissor_rect[4] = {x, y, width, height}; + bool enabled = state.scissor_rect[2] > 0; + int scissor_rect[4] = {x, y, enabled ? width : -width, height}; copy_v4_v4_int(state.scissor_rect, scissor_rect); } -- cgit v1.2.3