[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