diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 22 | 
2 files changed, 26 insertions, 0 deletions
| diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 8e22a9be2c..65a78d9048 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -1613,6 +1613,8 @@ void LLSpatialGroup::checkOcclusion()  static LLFastTimer::DeclareTimer FTM_PUSH_OCCLUSION_VERTS("Push Occlusion");  static LLFastTimer::DeclareTimer FTM_SET_OCCLUSION_STATE("Occlusion State");  static LLFastTimer::DeclareTimer FTM_OCCLUSION_EARLY_FAIL("Occlusion Early Fail"); +static LLFastTimer::DeclareTimer FTM_OCCLUSION_ALLOCATE("Allocate"); +static LLFastTimer::DeclareTimer FTM_OCCLUSION_BUILD("Build");  void LLSpatialGroup::doOcclusion(LLCamera* camera)  { @@ -1636,11 +1638,13 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)  					if (!mOcclusionQuery[LLViewerCamera::sCurCameraID])  					{ +						LLFastTimer t(FTM_OCCLUSION_ALLOCATE);  						mOcclusionQuery[LLViewerCamera::sCurCameraID] = sQueryPool.allocate();  					}  					if (mOcclusionVerts.isNull() || isState(LLSpatialGroup::OCCLUSION_DIRTY))  					{ +						LLFastTimer t(FTM_OCCLUSION_BUILD);  						buildOcclusion();  					} diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e672f7c4f1..83f9863224 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8300,6 +8300,17 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  		return;  	} +	BOOL skip_avatar_update = FALSE; +	if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK) +	{ +		skip_avatar_update = TRUE; +	} + +	if (!skip_avatar_update) +	{ +		gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); +	} +  	F64 last_modelview[16];  	F64 last_projection[16];  	for (U32 i = 0; i < 16; i++) @@ -8413,6 +8424,12 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  				mShadowFrustPoints[3].clear();  			}  			popRenderTypeMask(); + +			if (!skip_avatar_update) +			{ +				gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode()); +			} +  			return;  		} @@ -9001,6 +9018,11 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  	}  	popRenderTypeMask(); + +	if (!skip_avatar_update) +	{ +		gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode()); +	}  }  void LLPipeline::renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture) | 
