Merge pull request #1595 from Areloch/EpoxyProjectMatrixFix

Rolls back OGL Projection correction.
This commit is contained in:
Areloch 2016-05-20 00:23:45 -05:00
commit 65f51a89d8

View file

@ -30,7 +30,6 @@
#include "platform/profiler.h"
#include "core/tAlgorithm.h"
#include "gfx/gfxDevice.h"
namespace MathUtils
{
@ -1450,8 +1449,6 @@ void makeProjection( MatrixF *outMatrix,
F32 farPlane,
bool gfxRotate )
{
bool isGL = GFX->getAdapterType() == OpenGL;
Point4F row;
row.x = 2.0*nearPlane / (right-left);
row.y = 0.0;
@ -1467,13 +1464,13 @@ void makeProjection( MatrixF *outMatrix,
row.x = (left+right) / (right-left);
row.y = (top+bottom) / (top-bottom);
row.z = isGL ? -(farPlane + nearPlane) / (farPlane - nearPlane) : farPlane / (nearPlane - farPlane);
row.z = farPlane / (nearPlane - farPlane);
row.w = -1.0;
outMatrix->setRow( 2, row );
row.x = 0.0;
row.y = 0.0;
row.z = isGL ? 2 * nearPlane * farPlane / (nearPlane - farPlane) : nearPlane * farPlane / (nearPlane - farPlane);
row.z = nearPlane * farPlane / (nearPlane - farPlane);
row.w = 0.0;
outMatrix->setRow( 3, row );
@ -1494,8 +1491,6 @@ void makeOrthoProjection( MatrixF *outMatrix,
F32 farPlane,
bool gfxRotate )
{
bool isGL = GFX->getAdapterType() == OpenGL;
Point4F row;
row.x = 2.0f / (right - left);
row.y = 0.0f;
@ -1513,15 +1508,15 @@ void makeOrthoProjection( MatrixF *outMatrix,
row.y = 0.0f;
row.w = 0.0f;
// This needs to be modified to work with OpenGL (d3d has 0..1
// projection for z, vs -1..1 in OpenGL)
row.z = isGL ? 2.0f / (nearPlane - farPlane) : 1.0f / (nearPlane - farPlane);
//Unlike D3D, which has a 0-1 range, OpenGL uses a -1-1 range.
//However, epoxy internally handles the swap, so the math here is the same for both APIs
row.z = 1.0f / (nearPlane - farPlane);
outMatrix->setRow( 2, row );
row.x = (left + right) / (left - right);
row.y = (top + bottom) / (bottom - top);
row.z = isGL ? (nearPlane + farPlane) / (nearPlane - farPlane) : nearPlane / (nearPlane - farPlane);
row.z = nearPlane / (nearPlane - farPlane);
row.w = 1.0f;
outMatrix->setRow( 3, row );