From defa6574297e6b1d75f14a07ad993d239974c517 Mon Sep 17 00:00:00 2001 From: Bastien Bouclet Date: Thu, 24 Dec 2015 18:37:18 +0100 Subject: [PATCH] STARK: Surfaces can be drawn with a B&W saturation effect --- engines/stark/gfx/openglssurface.cpp | 3 +-- engines/stark/gfx/surfacerenderer.cpp | 7 ++++++- engines/stark/gfx/surfacerenderer.h | 8 ++++++++ engines/stark/shaders/stark_box.fragment | 7 ++----- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/engines/stark/gfx/openglssurface.cpp b/engines/stark/gfx/openglssurface.cpp index 68c8a612da1..8ff6897f4f5 100644 --- a/engines/stark/gfx/openglssurface.cpp +++ b/engines/stark/gfx/openglssurface.cpp @@ -56,8 +56,7 @@ void OpenGLSSurfaceRenderer::render(const Texture *texture, const Common::Point _gfx->start2DMode(); _shader->use(); - _shader->setUniform("textured", true); - _shader->setUniform("color", Math::Vector4d(1.0f, 1.0f, 1.0f, 1.0f)); + _shader->setUniform1f("fadeLevel", _fadeLevel); _shader->setUniform("verOffsetXY", normalizeOriginalCoordinates(sLeft, sTop)); if (_noScalingOverride) { _shader->setUniform("verSizeWH", normalizeCurrentCoordinates(sWidth, sHeight)); diff --git a/engines/stark/gfx/surfacerenderer.cpp b/engines/stark/gfx/surfacerenderer.cpp index 5676366bffe..a0f5839ca0d 100644 --- a/engines/stark/gfx/surfacerenderer.cpp +++ b/engines/stark/gfx/surfacerenderer.cpp @@ -26,7 +26,8 @@ namespace Stark { namespace Gfx { SurfaceRenderer::SurfaceRenderer() : - _noScalingOverride(false) { + _noScalingOverride(false), + _fadeLevel(0) { } @@ -38,5 +39,9 @@ void SurfaceRenderer::setNoScalingOverride(bool noScalingOverride) { _noScalingOverride = noScalingOverride; } +void SurfaceRenderer::setFadeLevel(float fadeLevel) { + _fadeLevel = fadeLevel; +} + } // End of namespace Gfx } // End of namespace Stark diff --git a/engines/stark/gfx/surfacerenderer.h b/engines/stark/gfx/surfacerenderer.h index 93860a75865..22a2ab3399c 100644 --- a/engines/stark/gfx/surfacerenderer.h +++ b/engines/stark/gfx/surfacerenderer.h @@ -51,8 +51,16 @@ public: */ void setNoScalingOverride(bool noScalingOverride); + /** + * The fade level is added to the color value of each pixel + * + * It is a value between -1 and 1 + */ + void setFadeLevel(float fadeLevel); + protected: bool _noScalingOverride; + float _fadeLevel; }; } // End of namespace Gfx diff --git a/engines/stark/shaders/stark_box.fragment b/engines/stark/shaders/stark_box.fragment index 52e3e34a34f..1553f08d172 100644 --- a/engines/stark/shaders/stark_box.fragment +++ b/engines/stark/shaders/stark_box.fragment @@ -2,12 +2,9 @@ in vec2 Texcoord; OUTPUT -uniform bool textured; -uniform vec4 color; +uniform float fadeLevel; uniform sampler2D tex; void main() { - outColor = color; - if (textured) - outColor = outColor * texture(tex, Texcoord); + outColor = texture(tex, Texcoord) + vec4(fadeLevel, fadeLevel, fadeLevel, 0); }