diff options
| -rw-r--r-- | indra/newview/llcontrolavatar.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 21 | 
2 files changed, 24 insertions, 4 deletions
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index a16fa3cd26..a181d8be9a 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -244,6 +244,7 @@ void LLControlAvatar::updateDebugText()          S32 total_verts = 0;          F32 est_tris = 0.f;          F32 est_streaming_tris = 0.f; +        F32 streaming_cost = 0.f;          for (std::vector<LLVOVolume*>::iterator it = volumes.begin();               it != volumes.end(); ++it) @@ -254,6 +255,7 @@ void LLControlAvatar::updateDebugText()              total_verts += verts;              est_tris += volp->getEstTrianglesMax();              est_streaming_tris += volp->getEstTrianglesStreamingCost(); +            streaming_cost += volp->getStreamingCost();              lod_string += llformat("%d",volp->getLOD());              if (volp && volp->mDrawable)              { @@ -287,8 +289,9 @@ void LLControlAvatar::updateDebugText()                  type_string += "-";              }          } -        addDebugText(llformat("CAV obj %d anim %d active %s impost %d", -                              total_linkset_count, animated_volume_count, active_string.c_str(), (S32) isImpostor())); +        addDebugText(llformat("CAV obj %d anim %d active %s impost %d strcst %f", +                              total_linkset_count, animated_volume_count,  +                              active_string.c_str(), (S32) isImpostor(), streaming_cost));          addDebugText(llformat("types %s lods %s", type_string.c_str(), lod_string.c_str()));          addDebugText(llformat("tris %d (est %.1f, streaming %.1f), verts %d", total_tris, est_tris, est_streaming_tris, total_verts));          addDebugText(llformat("pxarea %s", LLStringOps::getReadableNumber(getPixelArea()).c_str())); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 3b5129d994..094b0b77dd 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3918,9 +3918,26 @@ F32 LLVOVolume::getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_v  {  	F32 radius = getScale().length()*0.5f; +    // AXON make sure this is consistent with the final simulator-side values. +    const F32 ANIMATED_OBJECT_BASE_COST = 10.0f; // placeholder +    const F32 ANIMATED_OBJECT_COST_PER_KTRI = 1.0f; //placeholder + +    F32 linkset_base_cost = 0.f; +    if (isAnimatedObject() && isRootEdit()) +    { +        // Root object of an animated object has this to account for skeleton overhead. +        linkset_base_cost = ANIMATED_OBJECT_BASE_COST; +    }  	if (isMesh())  	{ -		return gMeshRepo.getStreamingCost(getVolume()->getParams().getSculptID(), radius, bytes, visible_bytes, mLOD, unscaled_value); +        if (isAnimatedObject() && isRiggedMesh()) +        { +            return linkset_base_cost + ANIMATED_OBJECT_COST_PER_KTRI * 0.001 * getEstTrianglesStreamingCost(); +        } +        else +        { +            return linkset_base_cost + gMeshRepo.getStreamingCost(getVolume()->getParams().getSculptID(), radius, bytes, visible_bytes, mLOD, unscaled_value); +        }  	}  	else  	{ @@ -3934,7 +3951,7 @@ F32 LLVOVolume::getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_v  		header["medium_lod"]["size"] = counts[2] * 10;  		header["high_lod"]["size"] = counts[3] * 10; -		return LLMeshRepository::getStreamingCost(header, radius, NULL, NULL, -1, unscaled_value); +		return linkset_base_cost + LLMeshRepository::getStreamingCost(header, radius, NULL, NULL, -1, unscaled_value);  	}	  }  | 
