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

aquadran noreply at scummvm.org
Sun Oct 20 14:05:42 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:
eec73cd517 WINTERMUTE: Eliminate double transpose world matrix


Commit: eec73cd517f6326222d8825b9fa1ad6fe292fab6
    https://github.com/scummvm/scummvm/commit/eec73cd517f6326222d8825b9fa1ad6fe292fab6
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-20T16:05:37+02:00

Commit Message:
WINTERMUTE: Eliminate double transpose world matrix

Changed paths:
    engines/wintermute/ad/ad_object_3d.cpp
    engines/wintermute/base/base_object.cpp
    engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
    engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
    engines/wintermute/base/gfx/xmesh.cpp
    engines/wintermute/base/gfx/xmodel.cpp


diff --git a/engines/wintermute/ad/ad_object_3d.cpp b/engines/wintermute/ad/ad_object_3d.cpp
index aad9810cff6..43a8858fd1e 100644
--- a/engines/wintermute/ad/ad_object_3d.cpp
+++ b/engines/wintermute/ad/ad_object_3d.cpp
@@ -127,18 +127,15 @@ bool AdObject3D::update() {
 
 //////////////////////////////////////////////////////////////////////////
 bool AdObject3D::convert3DTo2D(DXMatrix *worldMat, int32 *posX, int32 *posY) {
-	DXMatrix viewMat, projMat, world;
+	DXMatrix viewMat, projMat;
 	DXVector3 vec2d(0.0f, 0.0f, 0.0f);
 	DXVector3 origin(0.0f, 0.0f, 0.0f);
 	_gameRef->_renderer3D->getViewTransform(&viewMat);
 	_gameRef->_renderer3D->getProjectionTransform(&projMat);
 
-	world = *worldMat;
-	DXMatrixTranspose(&world, &world);
-
 	Rect32 viewport = _gameRef->_renderer3D->getViewPort();
 
-	DXVec3Project(&vec2d, &origin, &viewport, &projMat, &viewMat, &world);
+	DXVec3Project(&vec2d, &origin, &viewport, &projMat, &viewMat, worldMat);
 
 	*posX = vec2d._x + _gameRef->_offsetX - _gameRef->_renderer3D->_drawOffsetX;
 	*posY = vec2d._y + _gameRef->_offsetY - _gameRef->_renderer3D->_drawOffsetY;
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index 741c9249443..0b273acc3dc 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -1382,8 +1382,6 @@ bool BaseObject::getMatrix(DXMatrix *modelMatrix, DXVector3 *posVect) {
 	DXMatrixMultiply(modelMatrix, &matRot, &matScale);
 	DXMatrixMultiply(modelMatrix, modelMatrix, &matTrans);
 
-	DXMatrixTranspose(modelMatrix, modelMatrix);
-
 	return true;
 }
 
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index 0501b482905..1589d9cd6e1 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -388,7 +388,6 @@ bool BaseRenderOpenGL3D::setProjection2D() {
 bool BaseRenderOpenGL3D::setWorldTransform(const DXMatrix &transform) {
 	_worldMatrix = transform;
 	DXMatrix newModelViewTransform, world = transform;
-	DXMatrixTranspose(&world, &world);
 	DXMatrixMultiply(&newModelViewTransform, &world, &_viewMatrix);
 	glLoadMatrixf(newModelViewTransform);
 	return 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 25024f6c29f..595c93019c4 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp
@@ -513,7 +513,6 @@ bool BaseRenderOpenGL3DShader::setProjection2D() {
 bool BaseRenderOpenGL3DShader::setWorldTransform(const DXMatrix &transform) {
 	_worldMatrix = transform;
 	DXMatrix newInvertedTranspose, world = transform;
-	DXMatrixTranspose(&world, &world);
 	DXMatrixMultiply(&newInvertedTranspose, &world, &_viewMatrix);
 	DXMatrixInverse(&newInvertedTranspose, nullptr, &newInvertedTranspose);
 	DXMatrixTranspose(&newInvertedTranspose, &newInvertedTranspose);
diff --git a/engines/wintermute/base/gfx/xmesh.cpp b/engines/wintermute/base/gfx/xmesh.cpp
index f9ddd85e45c..32a70972a85 100644
--- a/engines/wintermute/base/gfx/xmesh.cpp
+++ b/engines/wintermute/base/gfx/xmesh.cpp
@@ -309,7 +309,6 @@ bool XMesh::updateShadowVol(ShadowVolume *shadow, DXMatrix *modelMat, DXVector3
 	DXVector3 invLight = *light;
 	DXMatrix matInverseModel = *modelMat;
 	DXMatrixInverse(&matInverseModel, nullptr, &matInverseModel);
-	DXMatrixTranspose(&matInverseModel, &matInverseModel);
 	DXVec3TransformNormal(&invLight, light, &matInverseModel);
 
 	uint32 numEdges = 0;
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index 27857d441d0..dcff2ba5f4b 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -589,7 +589,6 @@ bool XModel::isTransparentAt(int x, int y) {
 	// transform to model space
 	DXVector3 end = pickRayOrig + pickRayDir;
 	DXMatrixInverse(&m, nullptr, &_lastWorldMat);
-	DXMatrixTranspose(&m, &m);
 	DXVec3TransformCoord(&pickRayOrig, &pickRayOrig, &m);
 	DXVec3TransformCoord(&end, &end, &m);
 	pickRayDir = end - pickRayOrig;
@@ -613,7 +612,6 @@ void XModel::updateBoundingRect() {
 	_gameRef->_renderer3D->getViewTransform(&viewMat);
 	_gameRef->_renderer3D->getProjectionTransform(&projMat);
 	_gameRef->_renderer3D->getWorldTransform(&worldMat);
-	DXMatrixTranspose(&worldMat, &worldMat);
 
 	_drawingViewport = _gameRef->_renderer3D->getViewPort();
 




More information about the Scummvm-git-logs mailing list