summaryrefslogtreecommitdiffstats
path: root/Common/interface
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-01-13 19:41:51 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-01-13 19:41:51 +0000
commit3ee24f55dc34827f69dd654f7d0e66e6208bc2ad (patch)
treeff2f413319991603197ee4935c55f8ea2c0f89ef /Common/interface
parentFixed cmake script to allow selectively disabling back-ends (diff)
downloadDiligentCore-3ee24f55dc34827f69dd654f7d0e66e6208bc2ad.tar.gz
DiligentCore-3ee24f55dc34827f69dd654f7d0e66e6208bc2ad.zip
Updated ExtractViewFrustumPlanesFromMatrix and ExtractViewFrustumPlanesFromMatrix functions to take IsGL flag instead of IsDX
Diffstat (limited to 'Common/interface')
-rw-r--r--Common/interface/AdvancedMath.h26
1 files changed, 13 insertions, 13 deletions
diff --git a/Common/interface/AdvancedMath.h b/Common/interface/AdvancedMath.h
index eb0ce2a6..79cedf7e 100644
--- a/Common/interface/AdvancedMath.h
+++ b/Common/interface/AdvancedMath.h
@@ -45,7 +45,7 @@ struct ViewFrustumExt : public ViewFrustum
// For OpenGL, matrix is still considered row-major. The only difference is that
// near clip plane is at -1, not 0.
-inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrustum &Frustum, bool bIsDirectX)
+inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrustum &Frustum, bool bIsOpenGL)
{
// For more details, see Gribb G., Hartmann K., "Fast Extraction of Viewing Frustum Planes from the
// World-View-Projection Matrix" (the paper is available at
@@ -76,15 +76,7 @@ inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrust
Frustum.BottomPlane.Distance = Matrix._44 + Matrix._42;
// Near clipping plane
- if( bIsDirectX )
- {
- // 0 <= z <= w
- Frustum.NearPlane.Normal.x = Matrix._13;
- Frustum.NearPlane.Normal.y = Matrix._23;
- Frustum.NearPlane.Normal.z = Matrix._33;
- Frustum.NearPlane.Distance = Matrix._43;
- }
- else
+ if( bIsOpenGL )
{
// -w <= z <= w
Frustum.NearPlane.Normal.x = Matrix._14 + Matrix._13;
@@ -92,6 +84,14 @@ inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrust
Frustum.NearPlane.Normal.z = Matrix._34 + Matrix._33;
Frustum.NearPlane.Distance = Matrix._44 + Matrix._43;
}
+ else
+ {
+ // 0 <= z <= w
+ Frustum.NearPlane.Normal.x = Matrix._13;
+ Frustum.NearPlane.Normal.y = Matrix._23;
+ Frustum.NearPlane.Normal.z = Matrix._33;
+ Frustum.NearPlane.Distance = Matrix._43;
+ }
// Far clipping plane
Frustum.FarPlane.Normal.x = Matrix._14 - Matrix._13;
@@ -100,14 +100,14 @@ inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrust
Frustum.FarPlane.Distance = Matrix._44 - Matrix._43;
}
-inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrustumExt &FrustumExt, bool bIsDirectX)
+inline void ExtractViewFrustumPlanesFromMatrix(const float4x4 &Matrix, ViewFrustumExt &FrustumExt, bool bIsOpenGL)
{
- ExtractViewFrustumPlanesFromMatrix(Matrix, static_cast<ViewFrustum&>(FrustumExt), bIsDirectX);
+ ExtractViewFrustumPlanesFromMatrix(Matrix, static_cast<ViewFrustum&>(FrustumExt), bIsOpenGL);
// Compute frustum corners
float4x4 InvMatrix = inverseMatrix(Matrix);
- float nearClipZ = bIsDirectX ? 0.f : -1.f;
+ float nearClipZ = bIsOpenGL ? -1.f : 0.f;
static const float3 ProjSpaceCorners[] =
{
float3(-1,-1, nearClipZ),