浏览代码

Merge pull request #1249 from Azaezel/shadow_safeties

further insurance that shadow split stay within bounds.
Luis Anton Rebollo 10 年之前
父节点
当前提交
3c12325e97
共有 1 个文件被更改,包括 6 次插入3 次删除
  1. 6 3
      Engine/source/lighting/shadowMap/pssmLightShadowMap.cpp

+ 6 - 3
Engine/source/lighting/shadowMap/pssmLightShadowMap.cpp

@@ -63,15 +63,15 @@ F32 PSSMLightShadowMap::smSmallestVisiblePixelSize = 25.0f;
 
 
 PSSMLightShadowMap::PSSMLightShadowMap( LightInfo *light )
 PSSMLightShadowMap::PSSMLightShadowMap( LightInfo *light )
    :  LightShadowMap( light ),
    :  LightShadowMap( light ),
-      mNumSplits( 0 )
+      mNumSplits( 1 )
 {  
 {  
    mIsViewDependent = true;
    mIsViewDependent = true;
 }
 }
 
 
 void PSSMLightShadowMap::_setNumSplits( U32 numSplits, U32 texSize )
 void PSSMLightShadowMap::_setNumSplits( U32 numSplits, U32 texSize )
 {
 {
-   AssertFatal( numSplits > 0 && numSplits <= MAX_SPLITS, 
-      "PSSMLightShadowMap::_setNumSplits() - Splits must be between 1 and 4!" );
+   AssertFatal(numSplits > 0 && numSplits <= MAX_SPLITS,
+      avar("PSSMLightShadowMap::_setNumSplits() - Splits must be between 1 and %d!", MAX_SPLITS));
 
 
    releaseTextures();
    releaseTextures();
   
   
@@ -387,6 +387,9 @@ void PSSMLightShadowMap::setShaderParameters(GFXShaderConstBuffer* params, Light
 {
 {
    PROFILE_SCOPE( PSSMLightShadowMap_setShaderParameters );
    PROFILE_SCOPE( PSSMLightShadowMap_setShaderParameters );
 
 
+   AssertFatal(mNumSplits > 0 && mNumSplits <= MAX_SPLITS,
+      avar("PSSMLightShadowMap::_setNumSplits() - Splits must be between 1 and %d!", MAX_SPLITS));
+
    if ( lsc->mTapRotationTexSC->isValid() )
    if ( lsc->mTapRotationTexSC->isValid() )
       GFX->setTexture( lsc->mTapRotationTexSC->getSamplerRegister(), 
       GFX->setTexture( lsc->mTapRotationTexSC->getSamplerRegister(), 
                         SHADOWMGR->getTapRotationTex() );
                         SHADOWMGR->getTapRotationTex() );