[Scummvm-git-logs] scummvm master -> f8642d2b41569e848efeb096b263cda65ae3cef5
aquadran
noreply at scummvm.org
Mon Jul 27 21:03:39 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
f8642d2b41 WINTERMUTE: Added brightness support for 'JULIA'
Commit: f8642d2b41569e848efeb096b263cda65ae3cef5
https://github.com/scummvm/scummvm/commit/f8642d2b41569e848efeb096b263cda65ae3cef5
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2026-07-27T23:03:27+02:00
Commit Message:
WINTERMUTE: Added brightness support for 'JULIA'
Changed paths:
A engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.fragment
A engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.vertex
dists/scummvm.rc
engines/wintermute/ad/ad_game.cpp
engines/wintermute/base/gfx/base_renderer3d.cpp
engines/wintermute/base/gfx/base_renderer3d.h
engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
diff --git a/dists/scummvm.rc b/dists/scummvm.rc
index 866e401e665..219cfe4e1bf 100644
--- a/dists/scummvm.rc
+++ b/dists/scummvm.rc
@@ -100,6 +100,8 @@ shaders/stark_shadow.fragment FILE "engines/stark/shaders/stark_shadow
shaders/stark_shadow.vertex FILE "engines/stark/shaders/stark_shadow.vertex"
#endif
#if PLUGIN_ENABLED_STATIC(WINTERMUTE)
+shaders/wme_brightness_julia.fragment FILE "engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.fragment"
+shaders/wme_brightness_julia.vertex FILE "engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.vertex"
shaders/wme_brightness_oknytt.fragment FILE "engines/wintermute/base/gfx/opengl/shaders/wme_brightness_oknytt.fragment"
shaders/wme_brightness_oknytt.vertex FILE "engines/wintermute/base/gfx/opengl/shaders/wme_brightness_oknytt.vertex"
shaders/wme_fade.fragment FILE "engines/wintermute/base/gfx/opengl/shaders/wme_fade.fragment"
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index e2a965cdcda..b176cfb4919 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -28,6 +28,7 @@
#include "engines/wintermute/ad/ad_actor.h"
#ifdef ENABLE_WME3D
#include "engines/wintermute/ad/ad_actor_3dx.h"
+#include "engines/wintermute/base/gfx/base_renderer3d.h"
#endif
#include "engines/wintermute/ad/ad_game.h"
#include "engines/wintermute/ad/ad_entity.h"
@@ -958,6 +959,21 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
return STATUS_OK;
}
+ else if (strcmp(name, "SetBrightness") == 0) {
+ stack->correctParams(1);
+
+ float gamma = stack->pop()->getFloat(0.0f);
+
+#ifdef ENABLE_WME3D
+ if (_renderer3D)
+ _renderer3D->setBrightnessJulia(gamma);
+#endif
+
+ stack->pushBool(true);
+
+ return STATUS_OK;
+ }
+
#ifdef ENABLE_FOXTAIL
//////////////////////////////////////////////////////////////////////////
// [FoxTail] SetInventoryBoxHideSelected
diff --git a/engines/wintermute/base/gfx/base_renderer3d.cpp b/engines/wintermute/base/gfx/base_renderer3d.cpp
index 7ce53f0ce50..808bd318a91 100644
--- a/engines/wintermute/base/gfx/base_renderer3d.cpp
+++ b/engines/wintermute/base/gfx/base_renderer3d.cpp
@@ -46,6 +46,7 @@ BaseRenderer3D::BaseRenderer3D(Wintermute::BaseGame *inGame) : BaseRenderer(inGa
DXMatrixIdentity(&_projectionMatrix);
_brightnessOknytt = -1;
+ _brightnessJulia = -1.0f;
}
BaseRenderer3D::~BaseRenderer3D() {
diff --git a/engines/wintermute/base/gfx/base_renderer3d.h b/engines/wintermute/base/gfx/base_renderer3d.h
index 789b6100eea..2793ec502a1 100644
--- a/engines/wintermute/base/gfx/base_renderer3d.h
+++ b/engines/wintermute/base/gfx/base_renderer3d.h
@@ -161,6 +161,9 @@ public:
float getBrightnessOknytt() {
return _brightnessOknytt;
}
+ void setBrightnessJulia(float brightness) {
+ _brightnessJulia = brightness;
+ }
// ScummVM specific methods <--
@@ -176,6 +179,7 @@ protected:
PostFilter _postFilterMode;
bool _flipInProgress;
int32 _brightnessOknytt;
+ float _brightnessJulia;
virtual void setAmbientLightRenderState() = 0;
};
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index a51977c3c8a..0d5eb4b2e21 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -1116,6 +1116,62 @@ void BaseRenderOpenGL3D::postfilter() {
return;
}
+ // This is for game 'J.U.L.I.A.'
+ if (_brightnessJulia != -1.0f) {
+ setup2D();
+ glViewport(0, 0, _width, _height);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ glDisable(GL_BLEND);
+ glDisable(GL_ALPHA_TEST);
+ glDisable(GL_CULL_FACE);
+
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture(GL_TEXTURE_2D, _postfilterTexture);
+
+ g_system->presentBuffer();
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, _width, _height, 0);
+
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glVertexPointer(2, GL_FLOAT, 0, vertices);
+ glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
+
+ if (_brightnessJulia <= 1.0f) {
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glColor4f(_brightnessJulia, _brightnessJulia, _brightnessJulia, 1.0f);
+ glDrawArrays(GL_QUADS, 0, 4);
+ } else {
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+ glDrawArrays(GL_QUADS, 0, 4);
+ float alpha = (_brightnessJulia - 1.0f) * 0.2f;
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glColor4f(1.0f, 1.0f, 1.0f, alpha);
+ glDrawArrays(GL_QUADS, 0, 4);
+ glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
+ glDisable(GL_BLEND);
+ }
+
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glDisable(GL_TEXTURE_2D);
+
+ return;
+ }
+
if (_postFilterMode == kPostFilterOff)
return;
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
index b440e5a7639..efea67c9e19 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -191,9 +191,12 @@ bool BaseRenderOpenGL3DShader::initRenderer(int width, int height, bool windowed
glBindBuffer(GL_ARRAY_BUFFER, 0);
static const char *brightnessAttributes[] = { "position", "texcoord", nullptr };
- _brightnessShader = OpenGL::Shader::fromFiles("wme_brightness_oknytt", brightnessAttributes);
- _brightnessShader->enableVertexAttribute("position", _brightnessVBO, 2, GL_FLOAT, false, 4 * sizeof(GLfloat), 0);
- _brightnessShader->enableVertexAttribute("texcoord", _brightnessVBO, 2, GL_FLOAT, false, 4 * sizeof(GLfloat), 8);
+ _brightnessShaderOknytt = OpenGL::Shader::fromFiles("wme_brightness_oknytt", brightnessAttributes);
+ _brightnessShaderOknytt->enableVertexAttribute("position", _brightnessVBO, 2, GL_FLOAT, false, 4 * sizeof(GLfloat), 0);
+ _brightnessShaderOknytt->enableVertexAttribute("texcoord", _brightnessVBO, 2, GL_FLOAT, false, 4 * sizeof(GLfloat), 8);
+ _brightnessShaderJulia = OpenGL::Shader::fromFiles("wme_brightness_julia", brightnessAttributes);
+ _brightnessShaderJulia->enableVertexAttribute("position", _brightnessVBO, 2, GL_FLOAT, false, 4 * sizeof(GLfloat), 0);
+ _brightnessShaderJulia->enableVertexAttribute("texcoord", _brightnessVBO, 2, GL_FLOAT, false, 4 * sizeof(GLfloat), 8);
glGenTextures(1, &_postfilterTexture);
glBindTexture(GL_TEXTURE_2D, _postfilterTexture);
@@ -1171,12 +1174,36 @@ void BaseRenderOpenGL3DShader::postfilter() {
glDisable(GL_BLEND);
glDisable(GL_CULL_FACE);
- _brightnessShader->use();
+ _brightnessShaderOknytt->use();
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _postfilterTexture);
- glUniform1i(_brightnessShader->getUniformLocation("tex"), 0);
- _brightnessShader->setUniform1f("brightnessValue", _brightnessOknytt);
+ glUniform1i(_brightnessShaderOknytt->getUniformLocation("tex"), 0);
+ _brightnessShaderOknytt->setUniform1f("brightnessValue", _brightnessOknytt);
+
+ g_system->presentBuffer();
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, _width, _height, 0);
+
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+
+ glBindTexture(GL_TEXTURE_2D, 0);
+
+ return;
+ }
+
+ // This is for game 'J.U.L.I.A.'
+ if (_brightnessJulia != -1.0f) {
+ setup2D();
+ glViewport(0, 0, _width, _height);
+ glDisable(GL_BLEND);
+ glDisable(GL_CULL_FACE);
+
+ _brightnessShaderJulia->use();
+
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, _postfilterTexture);
+ glUniform1i(_brightnessShaderJulia->getUniformLocation("tex"), 0);
+ _brightnessShaderJulia->setUniform1f("brightnessValue", _brightnessJulia);
g_system->presentBuffer();
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, _width, _height, 0);
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
index d4d9099a012..e82c51de742 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.h
@@ -191,7 +191,8 @@ private:
OpenGL::Shader *_shadowVolumeShader{};
OpenGL::Shader *_lineShader{};
OpenGL::Shader *_postfilterShader{};
- OpenGL::Shader *_brightnessShader{};
+ OpenGL::Shader *_brightnessShaderOknytt{};
+ OpenGL::Shader *_brightnessShaderJulia{};
GLuint _postfilterTexture;
};
diff --git a/engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.fragment b/engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.fragment
new file mode 100644
index 00000000000..5f37f2ff105
--- /dev/null
+++ b/engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.fragment
@@ -0,0 +1,11 @@
+varying vec2 texPos;
+
+uniform sampler2D tex;
+uniform float brightnessValue;
+
+OUTPUT
+
+void main() {
+ vec4 color = texture2D(tex, texPos);
+ outColor = vec4(pow(color.rgb, vec3(1.0 / brightnessValue)), 1.0);
+}
diff --git a/engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.vertex b/engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.vertex
new file mode 100644
index 00000000000..0ab72b31e36
--- /dev/null
+++ b/engines/wintermute/base/gfx/opengl/shaders/wme_brightness_julia.vertex
@@ -0,0 +1,9 @@
+in vec2 position;
+in vec2 texcoord;
+
+varying vec2 texPos;
+
+void main() {
+ gl_Position = vec4(position, 0.0, 1.0);
+ texPos = texcoord;
+}
More information about the Scummvm-git-logs
mailing list