[Scummvm-git-logs] scummvm master -> 599097964fa4c2aa542a9c0bfd10b1069a0d23a1

aquadran noreply at scummvm.org
Sat Jul 2 20:39:06 UTC 2022


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:
599097964f WINTERMUTE: WME3D: Restore original code for fog parameters handling


Commit: 599097964fa4c2aa542a9c0bfd10b1069a0d23a1
    https://github.com/scummvm/scummvm/commit/599097964fa4c2aa542a9c0bfd10b1069a0d23a1
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2022-07-02T22:39:01+02:00

Commit Message:
WINTERMUTE: WME3D: Restore original code for fog parameters handling

Changed paths:
    engines/wintermute/ad/ad_game.h
    engines/wintermute/ad/ad_scene.cpp
    engines/wintermute/ad/ad_scene.h
    engines/wintermute/base/base_game.h
    engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
    engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
    engines/wintermute/dctypes.h


diff --git a/engines/wintermute/ad/ad_game.h b/engines/wintermute/ad/ad_game.h
index 2b8663a9d5d..24e820c8f7a 100644
--- a/engines/wintermute/ad/ad_game.h
+++ b/engines/wintermute/ad/ad_game.h
@@ -100,7 +100,7 @@ public:
 
 	TShadowType getMaxShadowType(BaseObject *object) override;
 
-	bool getFogParams(FogParameters &fogParameters) override;
+	bool getFogParams(bool *fogEnabled, uint32 *fogColor, float *start, float *end) override;
 #endif
 
 	bool getVersion(byte *verMajor, byte *verMinor, byte *extMajor, byte *extMinor) const override;
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 2a8efa3599d..f0e33adee1d 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -159,10 +159,10 @@ void AdScene::setDefaults() {
 
 	_ambientLightColor = 0x00000000;
 
-	_fogParameters._enabled = false;
-	_fogParameters._color = 0x00FFFFFF;
-	_fogParameters._start = 0.0f;
-	_fogParameters._end = 0.0f;
+	_fogEnabled = false;
+	_fogColor = 0x00FFFFFF;
+	_fogStart = 0.0f;
+	_fogEnd = 0.0f;
 #endif
 
 	_viewport = nullptr;
@@ -2252,10 +2252,10 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "EnableFog") == 0) {
 		stack->correctParams(3);
-		_fogParameters._enabled = true;
-		_fogParameters._color = stack->pop()->getInt();
-		_fogParameters._start = stack->pop()->getFloat();
-		_fogParameters._end = stack->pop()->getFloat();
+		_fogEnabled = true;
+		_fogColor = stack->pop()->getInt();
+		_fogStart = stack->pop()->getFloat();
+		_fogEnd = stack->pop()->getFloat();
 
 		stack->pushNULL();
 		return STATUS_OK;
@@ -2266,7 +2266,7 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "DisableFog") == 0) {
 		stack->correctParams(0);
-		_fogParameters._enabled = false;
+		_fogEnabled = false;
 
 		stack->pushNULL();
 		return STATUS_OK;
@@ -2984,13 +2984,13 @@ bool AdScene::persist(BasePersistenceManager *persistMgr) {
 		persistMgr->transferFloat(TMEMBER(_farPlane));
 		persistMgr->transferSint32(TMEMBER_INT(_maxShadowType));
 		persistMgr->transferUint32(TMEMBER(_ambientLightColor));
-		persistMgr->transferBool(TMEMBER(_fogParameters._enabled));
-		persistMgr->transferUint32(TMEMBER(_fogParameters._color));
-		persistMgr->transferFloat(TMEMBER(_fogParameters._start));
-		persistMgr->transferFloat(TMEMBER(_fogParameters._end));
+		persistMgr->transferBool(TMEMBER(_fogEnabled));
+		persistMgr->transferUint32(TMEMBER(_fogColor));
+		persistMgr->transferFloat(TMEMBER(_fogStart));
+		persistMgr->transferFloat(TMEMBER(_fogEnd));
 	} else {
 		_sceneGeometry = nullptr;
-		_fogParameters._enabled = false;
+		_fogEnabled = false;
 	}
 #endif
 
diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h
index 3a5163f8438..894cbfea5d0 100644
--- a/engines/wintermute/ad/ad_scene.h
+++ b/engines/wintermute/ad/ad_scene.h
@@ -67,7 +67,10 @@ public:
 	float _nearPlane;
 	float _farPlane;
 
-	FogParameters _fogParameters;
+	bool _fogEnabled;
+	uint32 _fogColor;
+	float _fogStart;
+	float _fogEnd;
 #endif
 	bool afterLoad();
 
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index f25db55aa8d..cbeb0e5ff9f 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -78,7 +78,7 @@ public:
 
 #ifdef ENABLE_WME3D
 	virtual uint32 getAmbientLightColor();
-	virtual bool getFogParams(FogParameters &fogParameters);
+	virtual bool getFogParams(bool *fogEnabled, uint32 *fogColor, float *start, float *end);
 #endif
 
 	virtual bool onScriptShutdown(ScScript *script);
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 58e7661f054..87adeaa21bb 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -505,16 +505,17 @@ bool BaseRenderOpenGL3D::setup3D(Camera3D *camera, bool force) {
 			glLightfv(GL_LIGHT0 + i, GL_SPOT_DIRECTION, _lightDirections[i].getData());
 		}
 
-		FogParameters fogParameters;
-		_gameRef->getFogParams(fogParameters);
+		bool fogEnabled;
+		uint32 fogColor;
+		float fogStart, fogEnd;
 
-		if (fogParameters._enabled) {
+		_gameRef->getFogParams(&fogEnabled, &fogColor, &fogStart, &fogEnd);
+		if (fogEnabled) {
 			glEnable(GL_FOG);
 			glFogi(GL_FOG_MODE, GL_LINEAR);
-			glFogf(GL_FOG_START, fogParameters._start);
-			glFogf(GL_FOG_END, fogParameters._end);
+			glFogf(GL_FOG_START, fogStart);
+			glFogf(GL_FOG_END, fogEnd);
 
-			uint32 fogColor = fogParameters._color;
 			GLfloat color[4] = { RGBCOLGetR(fogColor) / 255.0f,
 			                     RGBCOLGetG(fogColor) / 255.0f,
 			                     RGBCOLGetB(fogColor) / 255.0f,
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 9e349e85e85..533329911bb 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -632,17 +632,18 @@ bool BaseRenderOpenGL3DShader::setup3D(Camera3D *camera, bool force) {
 			_lastViewMatrix = viewMatrix;
 		}
 
-		FogParameters fogParameters;
+		bool fogEnabled;
+		uint32 fogColor;
+		float fogStart, fogEnd;
 
-		_gameRef->getFogParams(fogParameters);
-
-		if (fogParameters._enabled) {
+		_gameRef->getFogParams(&fogEnabled, &fogColor, &fogStart, &fogEnd);
+		if (fogEnabled) {
 			// TODO: Implement fog
 			GLfloat color[4];
-			color[0] = RGBCOLGetR(fogParameters._color) / 255.0f;
-			color[1] = RGBCOLGetG(fogParameters._color) / 255.0f;
-			color[2] = RGBCOLGetB(fogParameters._color) / 255.0f;
-			color[3] = RGBCOLGetA(fogParameters._color) / 255.0f;
+			color[0] = RGBCOLGetR(fogColor) / 255.0f;
+			color[1] = RGBCOLGetG(fogColor) / 255.0f;
+			color[2] = RGBCOLGetB(fogColor) / 255.0f;
+			color[3] = RGBCOLGetA(fogColor) / 255.0f;
 			debug(5, "BaseRenderOpenGL3DShader::setup3D fog not yet implemented! [%f %f %f %f]", color[0], color[1], color[2], color[3]);
 		} else {
 			// TODO: Disable fog in shader
diff --git a/engines/wintermute/dctypes.h b/engines/wintermute/dctypes.h
index 992a92e04f8..f71a1d23126 100644
--- a/engines/wintermute/dctypes.h
+++ b/engines/wintermute/dctypes.h
@@ -231,19 +231,6 @@ enum TShadowType {
 	SHADOW_STENCIL  = 3
 };
 
-#ifdef ENABLE_WME3D
-
-struct FogParameters {
-	FogParameters() : _start(0.0f), _end(0.0f), _color(0x00000000), _enabled(false) {}
-
-	float _start;
-	float _end;
-	uint32 _color;
-	bool _enabled;
-};
-
-#endif
-
 } // End of namespace Wintermute
 
 #endif




More information about the Scummvm-git-logs mailing list