From 3ee24f55dc34827f69dd654f7d0e66e6208bc2ad Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Sun, 13 Jan 2019 11:41:51 -0800 Subject: Updated ExtractViewFrustumPlanesFromMatrix and ExtractViewFrustumPlanesFromMatrix functions to take IsGL flag instead of IsDX --- Common/interface/AdvancedMath.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'Common/interface') 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(FrustumExt), bIsDirectX); + ExtractViewFrustumPlanesFromMatrix(Matrix, static_cast(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), -- cgit v1.2.3