[Scummvm-git-logs] scummvm master -> c0b4f9abcf2819024df162a757658215d471c40c

aquadran noreply at scummvm.org
Thu Jul 10 08:25:33 UTC 2025


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:
c0b4f9abcf WINTERMUTE: Synced with original code - fixed shadow mask size and position


Commit: c0b4f9abcf2819024df162a757658215d471c40c
    https://github.com/scummvm/scummvm/commit/c0b4f9abcf2819024df162a757658215d471c40c
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-07-10T10:25:28+02:00

Commit Message:
WINTERMUTE: Synced with original code - fixed shadow mask size and position

Changed paths:
    engines/wintermute/base/gfx/opengl/shadow_volume_opengl.cpp
    engines/wintermute/base/gfx/opengl/shadow_volume_opengl_shader.cpp


diff --git a/engines/wintermute/base/gfx/opengl/shadow_volume_opengl.cpp b/engines/wintermute/base/gfx/opengl/shadow_volume_opengl.cpp
index becf4d1d312..766f70c1b53 100644
--- a/engines/wintermute/base/gfx/opengl/shadow_volume_opengl.cpp
+++ b/engines/wintermute/base/gfx/opengl/shadow_volume_opengl.cpp
@@ -156,23 +156,27 @@ bool ShadowVolumeOpenGL::renderToScene() {
 
 //////////////////////////////////////////////////////////////////////////
 bool ShadowVolumeOpenGL::initMask() {
-	DXViewport viewport = _gameRef->_renderer3D->getViewPort();
-
-	_shadowMask[0].x = viewport._x;
-	_shadowMask[0].y = viewport._height;
-	_shadowMask[0].z = 0.0f;
-
-	_shadowMask[1].x = viewport._x;
-	_shadowMask[1].y = viewport._y;
-	_shadowMask[1].z = 0.0f;
-
-	_shadowMask[2].x = viewport._width;
-	_shadowMask[2].y = viewport._height;
-	_shadowMask[2].z = 0.0f;
-
-	_shadowMask[3].x = viewport._width;
-	_shadowMask[3].y = viewport._y;
-	_shadowMask[3].z = 0.0f;
+	auto *rend = _gameRef->_renderer3D;
+
+	// bottom left
+	_shadowMask[0].x = 0.0f;
+	_shadowMask[0].y = rend->getHeight();
+	_shadowMask[0].z = 1.0f;
+
+	// top left
+	_shadowMask[1].x = 0.0f;
+	_shadowMask[1].y = 0.0f;
+	_shadowMask[1].z = 1.0f;
+
+	// bottom right
+	_shadowMask[2].x = rend->getWidth();
+	_shadowMask[2].y = rend->getHeight();
+	_shadowMask[2].z = 1.0f;
+
+	// top right
+	_shadowMask[3].x = rend->getWidth();
+	_shadowMask[3].y = 0.0f;
+	_shadowMask[3].z = 1.0f;
 
 	byte a = RGBCOLGetA(_color);
 	byte r = RGBCOLGetR(_color);
diff --git a/engines/wintermute/base/gfx/opengl/shadow_volume_opengl_shader.cpp b/engines/wintermute/base/gfx/opengl/shadow_volume_opengl_shader.cpp
index 1974a0af7c4..953fe697db5 100644
--- a/engines/wintermute/base/gfx/opengl/shadow_volume_opengl_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/shadow_volume_opengl_shader.cpp
@@ -45,25 +45,11 @@ struct ShadowVertexShader {
 //////////////////////////////////////////////////////////////////////////
 ShadowVolumeOpenGLShader::ShadowVolumeOpenGLShader(BaseGame *inGame, OpenGL::Shader *volumeShader, OpenGL::Shader *maskShader)
 	: ShadowVolume(inGame), _volumeShader(volumeShader), _maskShader(maskShader) {
-	ShadowVertexShader shadowMask[4];
 	_shadowVolumeVertexBuffer = 0;
-	DXViewport viewport = _gameRef->_renderer3D->getViewPort();
-
-	shadowMask[0].x = viewport._x;
-	shadowMask[0].y = viewport._height;
-
-	shadowMask[1].x = viewport._x;
-	shadowMask[1].y = viewport._y;
-
-	shadowMask[2].x = viewport._width;
-	shadowMask[2].y = viewport._height;
-
-	shadowMask[3].x = viewport._width;
-	shadowMask[3].y = viewport._y;
 
 	glGenBuffers(1, &_shadowMaskVertexBuffer);
 	glBindBuffer(GL_ARRAY_BUFFER, _shadowMaskVertexBuffer);
-	glBufferData(GL_ARRAY_BUFFER, 4 * sizeof(ShadowVertexShader), shadowMask, GL_DYNAMIC_DRAW);
+	glBufferData(GL_ARRAY_BUFFER, 4 * sizeof(ShadowVertexShader), nullptr, GL_DYNAMIC_DRAW);
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -182,21 +168,24 @@ bool ShadowVolumeOpenGLShader::renderToScene() {
 
 //////////////////////////////////////////////////////////////////////////
 bool ShadowVolumeOpenGLShader::initMask() {
-	DXViewport viewport = _gameRef->_renderer3D->getViewPort();
-
+	auto *rend = _gameRef->_renderer3D;
 	ShadowVertexShader shadowMask[4];
 
-	shadowMask[0].x = viewport._x;
-	shadowMask[0].y = viewport._height;
+	// bottom left
+	shadowMask[0].x = 0.0f;
+	shadowMask[0].y = rend->getHeight();
 
-	shadowMask[1].x = viewport._x;
-	shadowMask[1].y = viewport._y;
+	// top left
+	shadowMask[1].x = 0.0f;
+	shadowMask[1].y = 0.0f;
 
-	shadowMask[2].x = viewport._width;
-	shadowMask[2].y = viewport._height;
+	// bottom right
+	shadowMask[2].x = rend->getWidth();
+	shadowMask[2].y = rend->getHeight();
 
-	shadowMask[3].x = viewport._width;
-	shadowMask[3].y = viewport._y;
+	// top right
+	shadowMask[3].x = rend->getWidth();
+	shadowMask[3].y = 0.0f;
 
 	glBindBuffer(GL_ARRAY_BUFFER, _shadowMaskVertexBuffer);
 	glBufferSubData(GL_ARRAY_BUFFER, 0, 4 * sizeof(ShadowVertexShader), shadowMask);




More information about the Scummvm-git-logs mailing list