From 7e43decf4cb3c19c83d4373372f3d41601d1331d Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 6 Oct 2008 14:18:27 +0000 Subject: [PATCH] From Wojciech Lewandowski, build fixes for handling Matrix::value_type == float --- include/osgShadow/DebugShadowMap | 2 +- include/osgShadow/MinimalShadowMap | 10 +++++----- src/osgShadow/DebugShadowMap.cpp | 6 +++--- src/osgShadow/MinimalDrawBoundsShadowMap.cpp | 2 +- src/osgShadow/MinimalShadowMap.cpp | 12 ++++++------ src/osgShadow/StandardShadowMap.cpp | 4 ++-- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/include/osgShadow/DebugShadowMap b/include/osgShadow/DebugShadowMap index bed69df1c..8492683ac 100644 --- a/include/osgShadow/DebugShadowMap +++ b/include/osgShadow/DebugShadowMap @@ -99,7 +99,7 @@ class OSGSHADOW_EXPORT DebugShadowMap : public ViewDependentShadowTechnique */ osg::ref_ptr< osg::Camera > _camera; - osg::Matrix _viewProjection; + osg::Matrixd _viewProjection; osg::Camera * _viewCamera; // Debug hud variables diff --git a/include/osgShadow/MinimalShadowMap b/include/osgShadow/MinimalShadowMap index 569b12e17..ef529e0a4 100644 --- a/include/osgShadow/MinimalShadowMap +++ b/include/osgShadow/MinimalShadowMap @@ -103,10 +103,10 @@ class OSGSHADOW_EXPORT MinimalShadowMap : public StandardShadowMap float *_maxFarPlanePtr; float *_minLightMarginPtr; - ConvexPolyhedron _sceneReceivingShadowPolytope; + ConvexPolyhedron _sceneReceivingShadowPolytope; std::vector< osg::Vec3d > _sceneReceivingShadowPolytopePoints; - osg::Matrix _clampedProjection; + osg::Matrixd _clampedProjection; virtual void init( ThisClass * st, osgUtil::CullVisitor * cv ); @@ -137,15 +137,15 @@ class OSGSHADOW_EXPORT MinimalShadowMap : public StandardShadowMap // is remapped to whole clip space (-1..1,-1..1,-1..1). // Bit mask can be used to limit remaping to selected bounds only. static void trimProjection - ( osg::Matrix & projection, osg::BoundingBox subrange, + ( osg::Matrixd & projection, osg::BoundingBox subrange, unsigned int trimMask = (1|2|4|8|16|32) /*1=left|2=right|4=bottom|8=top|16=near|32=far*/); static void clampProjection - ( osg::Matrix & projection, float n = 0, float f = FLT_MAX ); + ( osg::Matrixd & projection, float n = 0, float f = FLT_MAX ); static void extendProjection - ( osg::Matrix & projection, osg::Viewport * viewport, const osg::Vec2& margin ); + ( osg::Matrixd & projection, osg::Viewport * viewport, const osg::Vec2& margin ); }; META_ViewDependentShadowTechniqueData( ThisClass, ThisClass::ViewData ) diff --git a/src/osgShadow/DebugShadowMap.cpp b/src/osgShadow/DebugShadowMap.cpp index b4fd66270..f660cdcdf 100644 --- a/src/osgShadow/DebugShadowMap.cpp +++ b/src/osgShadow/DebugShadowMap.cpp @@ -356,11 +356,11 @@ void DebugShadowMap::ViewData::cullDebugGeometry( ) _cv->computeNearPlane(); - double n = _cv->getCalculatedNearPlane(); - double f = _cv->getCalculatedFarPlane(); + osgUtil::CullVisitor::value_type n = _cv->getCalculatedNearPlane(); + osgUtil::CullVisitor::value_type f = _cv->getCalculatedFarPlane(); if( n < f ) - _cv->clampProjectionMatrix(_viewProjection, n, f ); + _cv->clampProjectionMatrix( _viewProjection, n, f ); } } diff --git a/src/osgShadow/MinimalDrawBoundsShadowMap.cpp b/src/osgShadow/MinimalDrawBoundsShadowMap.cpp index b645efa4c..506865d1c 100644 --- a/src/osgShadow/MinimalDrawBoundsShadowMap.cpp +++ b/src/osgShadow/MinimalDrawBoundsShadowMap.cpp @@ -58,7 +58,7 @@ void MinimalDrawBoundsShadowMap::ViewData::cullBoundAnalysisScene( ) _boundAnalysisCamera->setViewMatrix( *_cv->getModelViewMatrix() ); _boundAnalysisCamera->setProjectionMatrix( _clampedProjection ); - osg::Matrix::value_type l,r,b,t,n,f; + osg::Matrixd::value_type l,r,b,t,n,f; _boundAnalysisCamera->getProjectionMatrixAsFrustum( l,r,b,t,n,f ); _mainCamera = _cv->getRenderStage()->getCamera(); diff --git a/src/osgShadow/MinimalShadowMap.cpp b/src/osgShadow/MinimalShadowMap.cpp index 57bfafc19..b6aae48d7 100644 --- a/src/osgShadow/MinimalShadowMap.cpp +++ b/src/osgShadow/MinimalShadowMap.cpp @@ -248,11 +248,11 @@ void MinimalShadowMap::ViewData::cullShadowReceivingScene( ) _cv->computeNearPlane(); - double n = _cv->getCalculatedNearPlane(); - double f = _cv->getCalculatedFarPlane(); + osgUtil::CullVisitor::value_type n = _cv->getCalculatedNearPlane(); + osgUtil::CullVisitor::value_type f = _cv->getCalculatedFarPlane(); if( n < f ) - _cv->clampProjectionMatrix(_clampedProjection, n, f ); + _cv->clampProjectionMatrix( _clampedProjection, n, f ); } // Aditionally clamp far plane if shadows are don't need to be cast as @@ -328,7 +328,7 @@ osg::BoundingBox // Utility methods for adjusting projection matrices void MinimalShadowMap::ViewData::trimProjection - ( osg::Matrix & projectionMatrix, osg::BoundingBox bb, unsigned int trimMask ) + ( osg::Matrixd & projectionMatrix, osg::BoundingBox bb, unsigned int trimMask ) { #if 1 if( !bb.valid() || !( trimMask & (1|2|4|8|16|32) ) ) return; @@ -415,7 +415,7 @@ void MinimalShadowMap::ViewData::trimProjection } void MinimalShadowMap::ViewData::clampProjection - ( osg::Matrix & projection, float new_near, float new_far ) + ( osg::Matrixd & projection, float new_near, float new_far ) { double r, l, t, b, n, f; bool perspective = projection.getFrustum( l, r, b, t, n, f ); @@ -457,7 +457,7 @@ void MinimalShadowMap::ViewData::clampProjection // Method computes such new projection which maintains perpective/world ratio void MinimalShadowMap::ViewData::extendProjection - ( osg::Matrix & projection, osg::Viewport * viewport, const osg::Vec2& margin ) + ( osg::Matrixd & projection, osg::Viewport * viewport, const osg::Vec2& margin ) { double l,r,b,t,n,f; diff --git a/src/osgShadow/StandardShadowMap.cpp b/src/osgShadow/StandardShadowMap.cpp index ef19f6745..ad27b0cfe 100644 --- a/src/osgShadow/StandardShadowMap.cpp +++ b/src/osgShadow/StandardShadowMap.cpp @@ -663,8 +663,8 @@ void StandardShadowMap::ViewData::aimShadowCastingCamera( const osg::Vec3 &lightUpVector /* by default = osg::Vec3( 0, 1 0 )*/ ) { - osg::Matrix & view = _camera->getViewMatrix(); - osg::Matrix & projection = _camera->getProjectionMatrix(); + osg::Matrixd & view = _camera->getViewMatrix(); + osg::Matrixd & projection = _camera->getProjectionMatrix(); osg::Vec3 up = lightUpVector; if( up.length2() <= 0 ) up.set( 0,1,0 );