From 468b99d9d9757c4d1ee5e652102b9f83338d5c8c Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Mon, 12 Sep 2016 16:01:59 -0400 Subject: [PATCH] ecere/gfx/drivers/GL/defaultShader: Fixed restoring lights state - Preserve lights state when toggling lighting on/off --- ecere/src/gfx/drivers/gl3/defaultShader.ec | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/ecere/src/gfx/drivers/gl3/defaultShader.ec b/ecere/src/gfx/drivers/gl3/defaultShader.ec index b1dc4bb..1386117 100644 --- a/ecere/src/gfx/drivers/gl3/defaultShader.ec +++ b/ecere/src/gfx/drivers/gl3/defaultShader.ec @@ -193,6 +193,8 @@ public: float color[4]; + DefaultShaderBits backLightState; backLightState = DefaultShaderBits { separateSpecular = true }; + DefaultShader() { color[0] = 1, color[1] = 1, color[2] = 1, color[3] = 1; @@ -477,17 +479,21 @@ public: ((DefaultShaderBits)state).lighting = on; uniformsModified = true; if(!on) - state &= ~DefaultShaderBits - { - nonLocalViewer = true; - twoSided = true; - specular = true; - separateSpecular = true; - blinnSpecular = true; - lightBits = 0xFFFFFF; - }; + { + backLightState = state & + DefaultShaderBits + { + nonLocalViewer = true; + twoSided = true; + specular = true; + separateSpecular = true; + blinnSpecular = true; + lightBits = 0xFFFFFF; + }; + state &= ~backLightState; + } else - state |= DefaultShaderBits { separateSpecular = true }; + state |= backLightState; } } -- 1.8.3.1