GRAPHICS: Transpose view/model matrices correctly
This commit is contained in:
parent
f618b90d31
commit
6c8a35e53b
2 changed files with 8 additions and 4 deletions
|
@ -386,6 +386,7 @@ void GfxOpenGLS::positionCamera(const Math::Vector3d &pos, const Math::Vector3d
|
||||||
Math::Matrix4 lookMatrix = makeLookMatrix(pos, interest, up_vec);
|
Math::Matrix4 lookMatrix = makeLookMatrix(pos, interest, up_vec);
|
||||||
|
|
||||||
_viewMatrix = viewMatrix * lookMatrix;
|
_viewMatrix = viewMatrix * lookMatrix;
|
||||||
|
_viewMatrix.transpose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,6 +441,7 @@ void GfxOpenGLS::startActorDraw(const Actor *actor) {
|
||||||
|
|
||||||
modelMatrix.transpose();
|
modelMatrix.transpose();
|
||||||
modelMatrix.setPosition(pos);
|
modelMatrix.setPosition(pos);
|
||||||
|
modelMatrix.transpose();
|
||||||
_mvpMatrix = _viewMatrix * modelMatrix;
|
_mvpMatrix = _viewMatrix * modelMatrix;
|
||||||
_mvpMatrix.transpose();
|
_mvpMatrix.transpose();
|
||||||
|
|
||||||
|
@ -536,7 +538,7 @@ void GfxOpenGLS::drawShadowPlanes() {
|
||||||
const ShadowUserData *sud = (ShadowUserData *)_currentShadowArray->userData;
|
const ShadowUserData *sud = (ShadowUserData *)_currentShadowArray->userData;
|
||||||
_shadowPlaneProgram->use();
|
_shadowPlaneProgram->use();
|
||||||
_shadowPlaneProgram->setUniform("projMatrix", _projMatrix);
|
_shadowPlaneProgram->setUniform("projMatrix", _projMatrix);
|
||||||
_shadowPlaneProgram->setUniform("viewMatrix", viewMatrix);
|
_shadowPlaneProgram->setUniform("viewMatrix", _viewMatrix);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, sud->_verticesVBO);
|
glBindBuffer(GL_ARRAY_BUFFER, sud->_verticesVBO);
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, sud->_indicesVBO);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, sud->_indicesVBO);
|
||||||
|
|
|
@ -12,9 +12,10 @@ in vec2 texcoord;
|
||||||
in vec4 color;
|
in vec4 color;
|
||||||
in vec3 normal;
|
in vec3 normal;
|
||||||
|
|
||||||
|
uniform highp mat4 modelMatrix;
|
||||||
|
uniform highp mat4 viewMatrix;
|
||||||
uniform highp mat4 projMatrix;
|
uniform highp mat4 projMatrix;
|
||||||
uniform highp mat4 extraMatrix;
|
uniform highp mat4 extraMatrix;
|
||||||
uniform highp mat4 mvpMatrix;
|
|
||||||
uniform highp vec2 texScale;
|
uniform highp vec2 texScale;
|
||||||
uniform bool textured;
|
uniform bool textured;
|
||||||
uniform light lights[maxLights];
|
uniform light lights[maxLights];
|
||||||
|
@ -26,11 +27,12 @@ out vec4 Color;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 pos = vec4(position, 1.0);
|
vec4 pos = vec4(position, 1.0);
|
||||||
pos = mvpMatrix *
|
|
||||||
|
pos = modelMatrix *
|
||||||
extraMatrix *
|
extraMatrix *
|
||||||
pos;
|
pos;
|
||||||
|
|
||||||
gl_Position = projMatrix * pos;
|
gl_Position = projMatrix * viewMatrix * pos;
|
||||||
|
|
||||||
if (textured) {
|
if (textured) {
|
||||||
Texcoord = vec2(0.0, 1.0) + (texcoord / texScale);
|
Texcoord = vec2(0.0, 1.0) + (texcoord / texScale);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue