[Scummvm-git-logs] scummvm master -> 0091e190f34d64b922e30d13f874d5eaa675f2de
aquadran
noreply at scummvm.org
Sat May 24 14:47:13 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:
0091e190f3 WINTERMUTE: Fixed scene shadow rendering for shader renderer
Commit: 0091e190f34d64b922e30d13f874d5eaa675f2de
https://github.com/scummvm/scummvm/commit/0091e190f34d64b922e30d13f874d5eaa675f2de
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-05-24T16:47:08+02:00
Commit Message:
WINTERMUTE: Fixed scene shadow rendering for shader renderer
Changed paths:
engines/wintermute/base/gfx/3dmesh.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/mesh3ds_opengl.cpp
engines/wintermute/base/gfx/opengl/mesh3ds_opengl.h
engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.cpp
engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.h
diff --git a/engines/wintermute/base/gfx/3dmesh.h b/engines/wintermute/base/gfx/3dmesh.h
index 3e3dc1eff31..de172d959e9 100644
--- a/engines/wintermute/base/gfx/3dmesh.h
+++ b/engines/wintermute/base/gfx/3dmesh.h
@@ -62,7 +62,7 @@ public:
virtual ~Mesh3DS();
virtual void fillVertexBuffer() = 0;
bool fillVertexBuffer(uint32 color);
- virtual void render() = 0;
+ virtual void render(bool color = false) = 0;
Face3D *_faces;
uint16 _numFaces;
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 048e4662cc5..a9e8c19651b 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -807,21 +807,21 @@ void BaseRenderOpenGL3D::renderSceneGeometry(const BaseArray<AdWalkplane *> &pla
// render walk planes
for (uint i = 0; i < planes.size(); i++) {
if (planes[i]->_active) {
- planes[i]->_mesh->render();
+ planes[i]->_mesh->render(true);
}
}
// render blocks
for (uint i = 0; i < blocks.size(); i++) {
if (blocks[i]->_active) {
- blocks[i]->_mesh->render();
+ blocks[i]->_mesh->render(true);
}
}
// render generic objects
for (uint i = 0; i < generics.size(); i++) {
if (generics[i]->_active) {
- generics[i]->_mesh->render();
+ generics[i]->_mesh->render(true);
}
}
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 81c57354e73..71042f7ae07 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -900,21 +900,21 @@ void BaseRenderOpenGL3DShader::renderSceneGeometry(const BaseArray<AdWalkplane *
for (uint i = 0; i < planes.size(); i++) {
if (planes[i]->_active) {
- planes[i]->_mesh->render();
+ planes[i]->_mesh->render(true);
}
}
// render blocks
for (uint i = 0; i < blocks.size(); i++) {
if (blocks[i]->_active) {
- blocks[i]->_mesh->render();
+ blocks[i]->_mesh->render(true);
}
}
// render generic objects
for (uint i = 0; i < generics.size(); i++) {
if (generics[i]->_active) {
- generics[i]->_mesh->render();
+ generics[i]->_mesh->render(true);
}
}
diff --git a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.cpp b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.cpp
index 7d08499a4eb..c00a452299a 100644
--- a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.cpp
+++ b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.cpp
@@ -42,14 +42,15 @@ void Mesh3DSOpenGL::fillVertexBuffer() {
_vertexData = (Mesh3DSVertex *)_vb.ptr();
}
-void Mesh3DSOpenGL::render() {
+void Mesh3DSOpenGL::render(bool color) {
if (_vertexCount == 0)
return;
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(Mesh3DSVertex), &_vertexData[0]._x);
- glColorPointer(4, GL_FLOAT, sizeof(Mesh3DSVertex), &_vertexData[0]._r);
+ if (color)
+ glColorPointer(4, GL_FLOAT, sizeof(Mesh3DSVertex), &_vertexData[0]._r);
glDrawArrays(GL_TRIANGLES, 0, _vertexCount);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
diff --git a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.h b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.h
index 352f4a945f1..7756e5c4910 100644
--- a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.h
+++ b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl.h
@@ -33,7 +33,7 @@ public:
Mesh3DSOpenGL(BaseGame *inGame);
~Mesh3DSOpenGL();
void fillVertexBuffer() override;
- void render() override;
+ void render(bool color) override;
private:
Mesh3DSVertex *_vertexData;
diff --git a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.cpp b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.cpp
index 2a65e90ed07..60bcbd14b7a 100644
--- a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.cpp
@@ -49,12 +49,13 @@ void Mesh3DSOpenGLShader::fillVertexBuffer() {
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
-void Mesh3DSOpenGLShader::render() {
+void Mesh3DSOpenGLShader::render(bool color) {
if (_vertexCount == 0)
return;
_shader->enableVertexAttribute("position", _vertexBuffer, 3, GL_FLOAT, false, sizeof(Mesh3DSVertex), 0);
- _shader->enableVertexAttribute("color", _vertexBuffer, 4, GL_FLOAT, false, sizeof(Mesh3DSVertex), 24);
+ if (color)
+ _shader->enableVertexAttribute("color", _vertexBuffer, 4, GL_FLOAT, false, sizeof(Mesh3DSVertex), 24);
_shader->use(true);
glDrawArrays(GL_TRIANGLES, 0, _vertexCount);
diff --git a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.h b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.h
index 079eb002dae..4fb8bf23aea 100644
--- a/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.h
+++ b/engines/wintermute/base/gfx/opengl/mesh3ds_opengl_shader.h
@@ -35,7 +35,7 @@ public:
Mesh3DSOpenGLShader(BaseGame *inGame, OpenGL::Shader *shader);
~Mesh3DSOpenGLShader();
void fillVertexBuffer() override;
- void render() override;
+ void render(bool color) override;
private:
Mesh3DSVertex *_vertexData;
More information about the Scummvm-git-logs
mailing list