[Scummvm-git-logs] scummvm master -> 616c8ea1beb6d8562b8a9cbb47fbd1d6b2324a29
aquadran
noreply at scummvm.org
Mon Oct 21 19:52:37 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
616c8ea1be WINTERMUTE: Synced with original code related to core and renderer
Commit: 616c8ea1beb6d8562b8a9cbb47fbd1d6b2324a29
https://github.com/scummvm/scummvm/commit/616c8ea1beb6d8562b8a9cbb47fbd1d6b2324a29
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2024-10-21T21:52:32+02:00
Commit Message:
WINTERMUTE: Synced with original code related to core and renderer
Changed paths:
engines/wintermute/ad/ad_game.cpp
engines/wintermute/ad/ad_game.h
engines/wintermute/ad/ad_scene.cpp
engines/wintermute/ad/ad_scene_geometry.cpp
engines/wintermute/base/gfx/base_renderer3d.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index 39759fddb8c..a78d12b53f0 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -39,6 +39,7 @@
#include "engines/wintermute/ad/ad_response_box.h"
#include "engines/wintermute/ad/ad_response_context.h"
#include "engines/wintermute/ad/ad_scene.h"
+#include "engines/wintermute/ad/ad_scene_geometry.h"
#include "engines/wintermute/ad/ad_scene_state.h"
#include "engines/wintermute/ad/ad_sentence.h"
#include "engines/wintermute/base/base_engine.h"
@@ -2339,6 +2340,13 @@ char *AdGame::findSpeechFile(char *stringID) {
return nullptr;
}
+//////////////////////////////////////////////////////////////////////////
+bool AdGame::renderShadowGeometry() {
+ if (_scene && _scene->_geom)
+ return _scene->_geom->renderShadowGeometry();
+ else
+ return true;
+}
//////////////////////////////////////////////////////////////////////////
bool AdGame::validMouse() {
diff --git a/engines/wintermute/ad/ad_game.h b/engines/wintermute/ad/ad_game.h
index d9e13894e6f..65d186e640e 100644
--- a/engines/wintermute/ad/ad_game.h
+++ b/engines/wintermute/ad/ad_game.h
@@ -56,6 +56,8 @@ public:
bool displayDebugInfo() override;
+ virtual bool renderShadowGeometry() override;
+
bool addSpeechDir(const char *dir);
bool removeSpeechDir(const char *dir);
char *findSpeechFile(char *StringID);
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 0ce3163910c..0652f6bfaef 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -1212,11 +1212,13 @@ bool AdScene::traverseNodes(bool doUpdate) {
}
#ifdef ENABLE_WME3D
+ // render depth info for stencil shadows
if (!doUpdate && _geom && _layers[j]->_main) {
_gameRef->getOffset(&mainOffsetX, &mainOffsetY);
- if (_gameRef->getMaxShadowType() >= SHADOW_STENCIL) {
- _geom->renderShadowGeometry();
+ TShadowType shadowType = _gameRef->getMaxShadowType();
+ if (shadowType >= SHADOW_STENCIL) {
+ _gameRef->renderShadowGeometry();
}
}
#endif
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index 4b58698af2e..521cb021166 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -408,6 +408,8 @@ bool AdSceneGeometry::render(bool render) {
//////////////////////////////////////////////////////////////////////////
bool AdSceneGeometry::renderShadowGeometry() {
+ storeDrawingParams();
+
_gameRef->_renderer3D->renderShadowGeometry(_planes, _blocks, _generics, getActiveCamera());
return true;
}
diff --git a/engines/wintermute/base/gfx/base_renderer3d.cpp b/engines/wintermute/base/gfx/base_renderer3d.cpp
index 968fabb58bd..3b9b60a1c22 100644
--- a/engines/wintermute/base/gfx/base_renderer3d.cpp
+++ b/engines/wintermute/base/gfx/base_renderer3d.cpp
@@ -39,6 +39,10 @@ BaseRenderer3D::BaseRenderer3D(Wintermute::BaseGame *inGame) : BaseRenderer(inGa
_ambientLightColor = 0x00000000;
_ambientLightOverride = false;
+
+ DXMatrixIdentity(&_worldMatrix);
+ DXMatrixIdentity(&_viewMatrix);
+ DXMatrixIdentity(&_projectionMatrix);
}
BaseRenderer3D::~BaseRenderer3D() {
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 1589d9cd6e1..ae534415132 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -467,6 +467,8 @@ bool BaseRenderOpenGL3D::initRenderer(int width, int height, bool windowed) {
_simpleShadow[3].u = 1.0f;
_simpleShadow[3].v = 0.0f;
+ setProjection();
+
return true;
}
@@ -742,9 +744,13 @@ bool BaseRenderOpenGL3D::drawSpriteEx(BaseSurfaceOpenGL3D &tex, const Wintermute
void BaseRenderOpenGL3D::renderSceneGeometry(const BaseArray<AdWalkplane *> &planes, const BaseArray<AdBlock *> &blocks,
const BaseArray<AdGeneric *> &generics, const BaseArray<Light3D *> &lights, Camera3D *camera) {
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- _gameRef->_renderer3D->setup3D(camera, true);
+ DXMatrix matIdentity;
+ DXMatrixIdentity(&matIdentity);
+
+ if (camera)
+ _gameRef->_renderer3D->setup3D(camera, true);
+
+ setWorldTransform(matIdentity);
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
@@ -811,9 +817,13 @@ void BaseRenderOpenGL3D::renderSceneGeometry(const BaseArray<AdWalkplane *> &pla
void BaseRenderOpenGL3D::renderShadowGeometry(const BaseArray<AdWalkplane *> &planes,
const BaseArray<AdBlock *> &blocks,
const BaseArray<AdGeneric *> &generics, Camera3D *camera) {
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- setup3D(camera, true);
+ DXMatrix matIdentity;
+ DXMatrixIdentity(&matIdentity);
+
+ if (camera)
+ _gameRef->_renderer3D->setup3D(camera, true);
+
+ setWorldTransform(matIdentity);
// disable color write
glBlendFunc(GL_ZERO, GL_ONE);
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 8038ea06706..1d614aae5c1 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -628,8 +628,9 @@ bool BaseRenderOpenGL3DShader::initRenderer(int width, int height, bool windowed
_flatShadowXModelShader = OpenGL::Shader::fromFiles("wme_flat_shadow_modelx", flatShadowXModelAttributes);
_active = true;
- // setup a proper state
- setup2D(true);
+
+ setProjection();
+
return true;
}
@@ -876,7 +877,13 @@ void BaseRenderOpenGL3DShader::renderSceneGeometry(const BaseArray<AdWalkplane *
void BaseRenderOpenGL3DShader::renderShadowGeometry(const BaseArray<AdWalkplane *> &planes, const BaseArray<AdBlock *> &blocks,
const BaseArray<AdGeneric *> &generics, Camera3D *camera) {
- setup3D(camera, true);
+ DXMatrix matIdentity;
+ DXMatrixIdentity(&matIdentity);
+
+ if (camera)
+ _gameRef->_renderer3D->setup3D(camera, true);
+
+ setWorldTransform(matIdentity);
// disable color write
glBlendFunc(GL_ZERO, GL_ONE);
More information about the Scummvm-git-logs
mailing list