diff --git a/TR5Main/Renderer/Render11Helper.cpp b/TR5Main/Renderer/Render11Helper.cpp index 58d503c9a..ecddb6089 100644 --- a/TR5Main/Renderer/Render11Helper.cpp +++ b/TR5Main/Renderer/Render11Helper.cpp @@ -35,12 +35,13 @@ vector* Renderer11::GetAdapters() void Renderer11::createBillboardMatrix(Matrix* out, Vector3* particlePos, Vector3* cameraPos, float rotation) { + /* Vector3 look = *particlePos; look = look - *cameraPos; look.Normalize(); - Vector3 cameraUp = Vector3(0.0f, -1.0f, 0.0f); - + *out = Matrix::CreateBillboard(*particlePos, *cameraPos, cameraUp); + Vector3 right; right = cameraUp.Cross(look); right.Normalize(); @@ -70,6 +71,7 @@ void Renderer11::createBillboardMatrix(Matrix* out, Vector3* particlePos, Vector out->_41 = particlePos->x; out->_42 = particlePos->y; out->_43 = particlePos->z; + */ } void Renderer11::updateAnimatedTextures() diff --git a/TR5Main/Renderer/Renderer11DrawEffect.cpp b/TR5Main/Renderer/Renderer11DrawEffect.cpp index 96ce3f3ca..ea24a917e 100644 --- a/TR5Main/Renderer/Renderer11DrawEffect.cpp +++ b/TR5Main/Renderer/Renderer11DrawEffect.cpp @@ -838,9 +838,9 @@ bool Renderer11::drawSprites() { float halfWidth = spr->Width / 2.0f * spr->Scale; float halfHeight = spr->Height / 2.0f * spr->Scale; - - Matrix billboardMatrix; - createBillboardMatrix(&billboardMatrix, &spr->pos, &Vector3(Camera.pos.x, Camera.pos.y, Camera.pos.z), spr->Rotation); + //Extract Camera Up Vector and create Billboard matrix. + Vector3 cameraUp = Vector3(View._12, View._22, View._32); + Matrix billboardMatrix = Matrix::CreateBillboard(spr->pos, Vector3(Camera.pos.x, Camera.pos.y, Camera.pos.z), cameraUp); Vector3 p0 = Vector3(-halfWidth, -halfHeight, 0); Vector3 p1 = Vector3(halfWidth, -halfHeight, 0);