From f8ee27722967f80c06fd4c7977d6a8378e193e6b Mon Sep 17 00:00:00 2001 From: Ansariel Date: Mon, 29 Jul 2013 21:06:11 +0200 Subject: [PATCH] Various performance improvements in frequently visited areas --- indra/newview/llhudnametag.cpp | 37 +++++++++++++++++++++++++------ indra/newview/llhudnametag.h | 7 ++++++ indra/newview/llhudtext.cpp | 13 ++++++++--- indra/newview/llphysicsmotion.cpp | 14 ++++++++++-- indra/newview/lltracker.cpp | 6 ++++- indra/newview/llviewermedia.cpp | 5 ++++- indra/newview/llvosky.cpp | 6 ++++- 7 files changed, 73 insertions(+), 15 deletions(-) diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp index c3b49f739a..f3590771cf 100755 --- a/indra/newview/llhudnametag.cpp +++ b/indra/newview/llhudnametag.cpp @@ -109,6 +109,11 @@ LLHUDNameTag::LLHUDNameTag(const U8 type) { LLPointer ptr(this); sTextObjects.insert(ptr); + + // Performance improvement + mRoundedRectImg = LLUI::getUIImage("Rounded_Rect"); + mRoundedRectTopImg = LLUI::getUIImage("Rounded_Rect_Top"); + // } LLHUDNameTag::~LLHUDNameTag() @@ -278,11 +283,19 @@ void LLHUDNameTag::renderText(BOOL for_select) mOffsetY = lltrunc(mHeight * ((mVertAlignment == ALIGN_VERT_CENTER) ? 0.5f : 1.f)); // *TODO: cache this image - LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Rect"); + // Performance improvement + //LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Rect"); // *TODO: make this a per-text setting - LLColor4 bg_color = LLUIColorTable::instance().getColor("NameTagBackground"); - bg_color.setAlpha(gSavedSettings.getF32("ChatBubbleOpacity") * alpha_factor); + //LLColor4 bg_color = LLUIColorTable::instance().getColor("NameTagBackground"); + //bg_color.setAlpha(gSavedSettings.getF32("ChatBubbleOpacity") * alpha_factor); + + static LLUIColor s_bg_color = LLUIColorTable::instance().getColor("NameTagBackground"); + static LLCachedControl chatBubbleOpacity(gSavedSettings, "ChatBubbleOpacity"); + LLColor4 bg_color = s_bg_color.get(); + F32 color_alpha = chatBubbleOpacity * alpha_factor; + bg_color.setAlpha(color_alpha); + // // scale screen size of borders down //RN: for now, text on hud objects is never occluded @@ -309,17 +322,27 @@ void LLHUDNameTag::renderText(BOOL for_select) LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE); LLRect screen_rect; screen_rect.setCenterAndSize(0, static_cast(lltrunc(-mHeight / 2 + mOffsetY)), static_cast(lltrunc(mWidth)), static_cast(lltrunc(mHeight))); - imagep->draw3D(render_position, x_pixel_vec, y_pixel_vec, screen_rect, bg_color); + // Performance improvement + //imagep->draw3D(render_position, x_pixel_vec, y_pixel_vec, screen_rect, bg_color); + mRoundedRectImg->draw3D(render_position, x_pixel_vec, y_pixel_vec, screen_rect, bg_color); + // if (mLabelSegments.size()) { - LLUIImagePtr rect_top_image = LLUI::getUIImage("Rounded_Rect_Top"); + // Performance improvement + //LLUIImagePtr rect_top_image = LLUI::getUIImage("Rounded_Rect_Top"); LLRect label_top_rect = screen_rect; const S32 label_height = llround((mFontp->getLineHeight() * (F32)mLabelSegments.size() + (VERTICAL_PADDING / 3.f))); label_top_rect.mBottom = label_top_rect.mTop - label_height; LLColor4 label_top_color = text_color; - label_top_color.mV[VALPHA] = gSavedSettings.getF32("ChatBubbleOpacity") * alpha_factor; + // Performance improvement + //label_top_color.mV[VALPHA] = gSavedSettings.getF32("ChatBubbleOpacity") * alpha_factor; + label_top_color.mV[VALPHA] = color_alpha; + // - rect_top_image->draw3D(render_position, x_pixel_vec, y_pixel_vec, label_top_rect, label_top_color); + // Performance improvement + //rect_top_image->draw3D(render_position, x_pixel_vec, y_pixel_vec, label_top_rect, label_top_color); + mRoundedRectTopImg->draw3D(render_position, x_pixel_vec, y_pixel_vec, label_top_rect, label_top_color); + // } F32 y_offset = (F32)mOffsetY; diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h index 38a4f18415..d40554f520 100755 --- a/indra/newview/llhudnametag.h +++ b/indra/newview/llhudnametag.h @@ -40,6 +40,8 @@ #include #include +#include "lluiimage.h" + class LLDrawable; class LLHUDNameTag; @@ -178,6 +180,11 @@ private: // static std::vector > sVisibleHUDTextObjects; typedef std::set >::iterator TextObjectIterator; typedef std::vector >::iterator VisibleTextObjectIterator; + + // Performance improvement + LLUIImagePtr mRoundedRectImg; + LLUIImagePtr mRoundedRectTopImg; + // }; #endif diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index ec7c7c6ff6..bc09a3c954 100755 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -151,11 +151,18 @@ void LLHUDText::renderText() mOffsetY = lltrunc(mHeight * ((mVertAlignment == ALIGN_VERT_CENTER) ? 0.5f : 1.f)); // *TODO: cache this image - LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); + // Performance improvement + //LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); // *TODO: make this a per-text setting - LLColor4 bg_color = LLUIColorTable::instance().getColor("ObjectBubbleColor"); - bg_color.setAlpha(gSavedSettings.getF32("ChatBubbleOpacity") * alpha_factor); + // Performance improvement + //LLColor4 bg_color = LLUIColorTable::instance().getColor("ObjectBubbleColor"); + //bg_color.setAlpha(gSavedSettings.getF32("ChatBubbleOpacity") * alpha_factor); + static LLUIColor s_bg_color = LLUIColorTable::instance().getColor("ObjectBubbleColor"); + static LLCachedControl chatBubbleOpacity(gSavedSettings, "ChatBubbleOpacity"); + LLColor4 bg_color = s_bg_color.get(); + bg_color.setAlpha(chatBubbleOpacity * alpha_factor); + // const S32 border_height = 16; const S32 border_width = 16; diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index 18b85cc9c3..d489f1e498 100755 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp @@ -453,15 +453,25 @@ F32 LLPhysicsMotion::calculateAcceleration_local(const F32 velocity_local) BOOL LLPhysicsMotionController::onUpdate(F32 time, U8* joint_mask) { // Skip if disabled globally. - if (!gSavedSettings.getBOOL("AvatarPhysics")) + // Performance improvement + //if (!gSavedSettings.getBOOL("AvatarPhysics")) + static LLCachedControl avatar_physics(gSavedSettings, "AvatarPhysics"); + if (!avatar_physics) + // { return TRUE; } BOOL update_visuals = FALSE; + // Performance improvement + //for (motion_vec_t::iterator iter = mMotions.begin(); + // iter != mMotions.end(); + // ++iter) + motion_vec_t::iterator motions_end_it = mMotions.end(); for (motion_vec_t::iterator iter = mMotions.begin(); - iter != mMotions.end(); + iter != motions_end_it; ++iter) + // { LLPhysicsMotion *motion = (*iter); update_visuals |= motion->onUpdate(time); diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp index e8ecc87b18..986c226766 100755 --- a/indra/newview/lltracker.cpp +++ b/indra/newview/lltracker.cpp @@ -115,7 +115,11 @@ void LLTracker::stopTracking(void* userdata) // static virtual void LLTracker::drawHUDArrow() { - if (!gSavedSettings.getBOOL("RenderTrackerBeacon")) return; + // Performance improvement + //if (!gSavedSettings.getBOOL("RenderTrackerBeacon")) return; + static LLCachedControl renderTrackerBeacon(gSavedSettings, "RenderTrackerBeacon"); + if (!renderTrackerBeacon) return; + // if (gViewerWindow->getProgressView()->getVisible()) return; diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index a1e92bbe2f..33be84ed7d 100755 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -2423,7 +2423,10 @@ void LLViewerMediaImpl::updateJavascriptObject() if ( mMediaSource ) { // flag to expose this information to internal browser or not. - bool enable = gSavedSettings.getBOOL("BrowserEnableJSObject"); + // Performance improvement + //bool enable = gSavedSettings.getBOOL("BrowserEnableJSObject"); + static LLCachedControl enable(gSavedSettings, "BrowserEnableJSObject"); + // if(!enable) { diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 523632d0c7..41b23aa977 100755 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -1037,7 +1037,11 @@ void LLVOSky::calcAtmospherics(void) // Since WL scales everything by 2, there should always be at least a 2:1 brightness ratio // between sunlight and point lights in windlight to normalize point lights. - F32 sun_dynamic_range = llmax(gSavedSettings.getF32("RenderSunDynamicRange"), 0.0001f); + // Performance improvement + //F32 sun_dynamic_range = llmax(gSavedSettings.getF32("RenderSunDynamicRange"), 0.0001f); + static LLCachedControl renderSunDynamicRange(gSavedSettings, "RenderSunDynamicRange"); + F32 sun_dynamic_range = llmax(renderSunDynamicRange(), 0.0001f); + // LLWLParamManager::getInstance()->mSceneLightStrength = 2.0f * (1.0f + sun_dynamic_range * dp); mSunDiffuse = vary_SunlightColor;