diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 180504d2862691fe937a7db6d2811e0d907f5e89..b6f1e06edd08607899a1a0bffffba525b56de91a 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -56,7 +56,7 @@ else (STANDALONE) if (LINUX) if (VIEWER) - list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid) + list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES}) endif (VIEWER) list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} rt) endif (LINUX) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 9081752287cd6d87a2df4f8fc469fecfbf4458e6..798cf9af14dbe08d03bc2531f529b9f594b0146e 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -241,7 +241,6 @@ elseif(LINUX) libstacktrace.so libtcmalloc_minimal.so libtcmalloc_minimal.so.0 - libuuid.so.1 libssl.so.0.9.7 ) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 32c4bc81dfc4af75a888e511ba62beb7004a984f..5710360de2169084c1d28e0d5b77d2effbb9df12 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -2,7 +2,6 @@ include(Prebuilt) if (NOT STANDALONE) - use_prebuilt_binary(libuuid) use_prebuilt_binary(vivox) use_prebuilt_binary(fontconfig) endif(NOT STANDALONE) diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index b9b94488cfd2de4169e29edc2ab95002a4ee7502..920bdef7f677e6c0333753020827d08d12839b83 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -450,7 +450,8 @@ void LLFloaterTools::refresh() if (sShowObjectCost) { std::string prim_cost_string; - LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost()); + S32 cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectRenderCost(); + LLResMgr::getInstance()->getIntegerString(prim_cost_string, cost); getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string); } @@ -1000,38 +1001,6 @@ void LLFloaterTools::onClickGridOptions() //floaterp->addDependentFloater(LLFloaterBuildOptions::getInstance(), FALSE); } -S32 LLFloaterTools::calcRenderCost() -{ - S32 cost = 0; - LLVOVolume::texture_cost_t textures; - - for (LLObjectSelection::iterator selection_iter = LLSelectMgr::getInstance()->getSelection()->begin(); - selection_iter != LLSelectMgr::getInstance()->getSelection()->end(); - ++selection_iter) - { - LLSelectNode *select_node = *selection_iter; - if (select_node) - { - LLViewerObject *vobj = select_node->getObject(); - if (vobj->getVolume()) - { - LLVOVolume* volume = (LLVOVolume*) vobj; - - cost += volume->getRenderCost(textures); - for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter) - { - // add the cost of each individual texture in the linkset - cost += iter->second; - } - textures.clear(); - } - } - } - - - return cost; -} - // static void LLFloaterTools::setEditTool(void* tool_pointer) { diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 87c3d2ab47c71c39c48bcdcc38fedd35655f1233..d5595445e0311db3cbaf47a426c972376afdf32e 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -114,7 +114,6 @@ class LLFloaterTools static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response); static void setObjectType( LLPCode pcode ); void onClickGridOptions(); - S32 calcRenderCost(); public: LLButton *mBtnFocus; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 728694117c83670bad79873f3d89ff8603b32ada..eb1ca66334db6bc8d566e58cac0746db3c16c7bc 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -6335,6 +6335,33 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount() return count; } +S32 LLObjectSelection::getSelectedObjectRenderCost() +{ + S32 cost = 0; + LLVOVolume::texture_cost_t textures; + for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter) + { + LLSelectNode* node = *iter; + LLVOVolume* object = (LLVOVolume*)node->getObject(); + + if (object) + { + cost += object->getRenderCost(textures); + } + + for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter) + { + // add the cost of each individual texture in the linkset + cost += iter->second; + llinfos << "adding texture cost of: " << iter->second << llendl; + } + textures.clear(); + } + + + return cost; +} + //----------------------------------------------------------------------------- // getTECount() diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index e0f76bd5dd957a5dafc1ae633e7d3d89b72fd1de..0cf582062d540fb9a5e212268355ff79fd5f7cdf 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -284,6 +284,7 @@ class LLObjectSelection : public LLRefCount F32 getSelectedLinksetCost(); F32 getSelectedPhysicsCost(); F32 getSelectedLinksetPhysicsCost(); + S32 getSelectedObjectRenderCost(); F32 getSelectedObjectStreamingCost(); U32 getSelectedObjectTriangleCount(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index fe11570cf620c484d8991d49b370ece7ef976621..9aebfcba4a472e197758dd8046d5f8d3319d1028 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2940,15 +2940,18 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const U32 flexi = 0; U32 animtex = 0; U32 particles = 0; - U32 scale = 0; U32 bump = 0; U32 planar = 0; U32 cuts = 0; U32 hollow = 0; - U32 twist = 0; U32 circular_profile = 0; U32 circular_path = 0; + // these multipliers are variable and can be floating point + F32 scale = 0.f; + F32 twist = 0.f; + + const LLDrawable* drawablep = mDrawable; if (isSculpted()) @@ -2992,7 +2995,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const LLViewerFetchedTexture *texture = LLViewerTextureManager::getFetchedTexture(sculpt_id); if (texture) { - S32 texture_cost = ARC_TEXTURE_COST * (texture->getFullHeight() / 128 + texture->getFullWidth() / 128 + 1); + S32 texture_cost = (S32)(ARC_TEXTURE_COST * (texture->getFullHeight() / 128.f + texture->getFullWidth() / 128.f + 1)); textures.insert(texture_cost_t::value_type(sculpt_id, texture_cost)); } } @@ -3009,11 +3012,11 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const } const LLVector3& sc = getScale(); - scale += (U32) sc.mV[0] + (U32) sc.mV[1] + (U32) sc.mV[2]; - if (scale > 4) + scale += sc.mV[0] + sc.mV[1] + sc.mV[2]; + if (scale > 4.f) { // scale is a multiplier, cap it at 4. - scale = 4; + scale = 4.f; } // add points for cut prims @@ -3033,19 +3036,15 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const hollow = 1; } - // twist - scale by twist extent / 90 - if (volume_params.getTwistBegin() != 0.f) + F32 twist_mag = path_params.getTwistBegin() - path_params.getTwistEnd(); + if (twist_mag < 0) { - U32 scale = abs((S32)(volume_params.getTwistBegin() / 90.f) + 1); - twist += scale; + twist_mag *= -1.f; } - // twist - scale by twist extent / 90 - if (volume_params.getTwist() != 0.f) - { - U32 scale = abs((S32)(volume_params.getTwist() / 90.f) + 1); - twist += scale; - } + // note magnitude of twist is [-1.f, 1.f]. which translates to [-180, 180] degrees. + // scale to degrees / 90 by multiplying by 2. + twist = twist_mag * 2.f; // double cost for circular profiles / sculpties if (profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE || @@ -3079,7 +3078,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const { if (textures.find(img->getID()) == textures.end()) { - S32 texture_cost = ARC_TEXTURE_COST * (img->getFullHeight() / 128 + img->getFullWidth() / 128 + 1); + S32 texture_cost = (S32)(ARC_TEXTURE_COST * (img->getFullHeight() / 128.f + img->getFullWidth() / 128.f + 1)); textures.insert(texture_cost_t::value_type(img->getID(), texture_cost)); } } @@ -3136,9 +3135,9 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const shame *= hollow * ARC_HOLLOW_MULT; } - if (twist) + if (twist > 1.f) { - shame *= twist; + shame = (U32)(shame * twist); } if (circular_profile) @@ -3171,33 +3170,15 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const shame *= shiny * ARC_SHINY_MULT; } - if (scale) + if (scale > 1.f) { - shame *= scale; + shame = (U32)(shame *scale); } // add additional costs shame += particles * ARC_PARTICLE_COST; - LLViewerObject::const_child_list_t& child_list = getChildren(); - for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); - iter != child_list.end(); - ++iter) - { - const LLViewerObject* child_objectp = *iter; - const LLDrawable* child_drawablep = child_objectp->mDrawable; - if (child_drawablep) - { - const LLVOVolume* child_volumep = child_drawablep->getVOVolume(); - if (child_volumep) - { - shame += child_volumep->getRenderCost(textures); - } - } - } - return shame; - } F32 LLVOVolume::getStreamingCost() diff --git a/install.xml b/install.xml index ad3e9a92a2c87ec3fbcca23e00454b8eefabd445..fc374f8c9687ba89550ba589f6fa85e57cb71748 100644 --- a/install.xml +++ b/install.xml @@ -1004,25 +1004,6 @@ anguage Infrstructure (CLI) international standard</string> </map> </map> </map> - <key>libuuid</key> - <map> - <key>copyright</key> - <string>Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/></string> - <key>description</key> - <string>Generates UUIDs under Linux. Originally a part of the ext2fs filesystem. Also see lluuid.cpp for all platforms. Part of the e2fsprogs package.</string> - <key>license</key> - <string>lgpl</string> - <key>packages</key> - <map> - <key>linux</key> - <map> - <key>md5sum</key> - <string>91b194aed4b38bc23493b198009a8c6a</string> - <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libuuid-linux-20090417.tar.bz2</uri> - </map> - </map> - </map> <key>libxml</key> <map> <key>license</key>