SL-15297 WIP Implement performance floater - updated UI

master
Mnikolenko Productengine 2021-06-17 20:37:06 +03:00
parent 0914f5c48f
commit bc609f964b
14 changed files with 609 additions and 470 deletions

View File

@ -235,6 +235,12 @@ void LLAvatarRenderNotifier::updateNotificationAgent(U32 agentComplexity)
// save the value for use in following messages
mLatestAgentComplexity = agentComplexity;
static LLCachedControl<U32> show_my_complexity_changes(gSavedSettings, "ShowMyComplexityChanges", 20);
if (!show_my_complexity_changes)
{
return;
}
if (!isAgentAvatarValid() || !gAgentWearables.areWearablesLoaded())
{
// data not ready, nothing to show.
@ -282,7 +288,8 @@ static const char* e_hud_messages[] =
};
LLHUDRenderNotifier::LLHUDRenderNotifier() :
mReportedHUDWarning(WARN_NONE)
mReportedHUDWarning(WARN_NONE),
mHUDsCount(0)
{
}
@ -299,7 +306,14 @@ void LLHUDRenderNotifier::updateNotificationHUD(hud_complexity_list_t complexity
}
mHUDComplexityList = complexity;
mHUDsCount = mHUDComplexityList.size();
static LLCachedControl<U32> show_my_complexity_changes(gSavedSettings, "ShowMyComplexityChanges", 20);
if (!show_my_complexity_changes)
{
return;
}
// TODO:
// Find a way to show message with list of issues, but without making it too large
// and intrusive.

View File

@ -63,6 +63,25 @@ struct LLHUDComplexity
typedef std::list<LLHUDComplexity> hud_complexity_list_t;
struct LLObjectComplexity
{
LLObjectComplexity()
{
reset();
}
void reset()
{
objectId = LLUUID::null;
objectName = "";
objectCost = 0;
}
LLUUID objectId;
std::string objectName;
U32 objectCost;
};
typedef std::list<LLObjectComplexity> object_complexity_list_t;
// Class to notify user about drastic changes in agent's render weights or if other agents
// reported that user's agent is too 'heavy' for their settings
class LLAvatarRenderNotifier : public LLSingleton<LLAvatarRenderNotifier>
@ -77,6 +96,9 @@ public:
void updateNotificationState();
void updateNotificationAgent(U32 agentComplexity);
void setObjectComplexityList(object_complexity_list_t object_list) { mObjectComplexityList = object_list; }
object_complexity_list_t getObjectComplexityList() { return mObjectComplexityList; }
private:
LLNotificationPtr mNotificationPtr;
@ -109,6 +131,8 @@ private:
// Used to detect changes in voavatar's rezzed status.
// If value decreases - there were changes in outfit.
S32 mLastOutfitRezStatus;
object_complexity_list_t mObjectComplexityList;
};
// Class to notify user about heavy set of HUD
@ -122,6 +146,7 @@ public:
bool isNotificationVisible();
hud_complexity_list_t getHUDComplexityList() { return mHUDComplexityList; }
S32 getHUDsCount() { return mHUDsCount; }
private:
enum EWarnLevel
@ -144,6 +169,7 @@ private:
LLHUDComplexity mLatestHUDComplexity;
LLFrameTimer mHUDPopUpDelayTimer;
hud_complexity_list_t mHUDComplexityList;
S32 mHUDsCount;
};
#endif /* ! defined(LL_llavatarrendernotifier_H) */

View File

@ -37,17 +37,22 @@
#include "lltextbox.h"
#include "lltrans.h"
#include "llvoavatar.h"
#include "llvoavatarself.h"
const F32 REFRESH_INTERVAL = 1.0f;
const S32 COMPLEXITY_THRESHOLD_1 = 100000;
LLFloaterPerformance::LLFloaterPerformance(const LLSD& key)
: LLFloater(key)
: LLFloater(key),
mUpdateTimer(new LLTimer())
{
}
LLFloaterPerformance::~LLFloaterPerformance()
{
mComplexityChangedSignal.disconnect();
delete mUpdateTimer;
}
BOOL LLFloaterPerformance::postBuild()
@ -55,32 +60,34 @@ BOOL LLFloaterPerformance::postBuild()
mMainPanel = getChild<LLPanel>("panel_performance_main");
mTroubleshootingPanel = getChild<LLPanel>("panel_performance_troubleshooting");
mNearbyPanel = getChild<LLPanel>("panel_performance_nearby");
mScriptsPanel = getChild<LLPanel>("panel_performance_scripts");
mPreferencesPanel = getChild<LLPanel>("panel_performance_preferences");
mComplexityPanel = getChild<LLPanel>("panel_performance_complexity");
mSettingsPanel = getChild<LLPanel>("panel_performance_preferences");
mHUDsPanel = getChild<LLPanel>("panel_performance_huds");
getChild<LLPanel>("troubleshooting_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mTroubleshootingPanel));
getChild<LLPanel>("nearby_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mNearbyPanel));
getChild<LLPanel>("scripts_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mScriptsPanel));
getChild<LLPanel>("preferences_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mPreferencesPanel));
getChild<LLPanel>("complexity_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mComplexityPanel));
getChild<LLPanel>("settings_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mSettingsPanel));
getChild<LLPanel>("huds_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mHUDsPanel));
initBackBtn(mTroubleshootingPanel);
initBackBtn(mNearbyPanel);
initBackBtn(mScriptsPanel);
initBackBtn(mPreferencesPanel);
initBackBtn(mComplexityPanel);
initBackBtn(mSettingsPanel);
initBackBtn(mHUDsPanel);
mHUDsPanel->getChild<LLButton>("refresh_list_btn")->setCommitCallback(boost::bind(&LLFloaterPerformance::populateHUDList, this));
mHUDList = mHUDsPanel->getChild<LLNameListCtrl>("hud_list");
mHUDList->setNameListType(LLNameListCtrl::SPECIAL);
mHUDList->setHoverIconName("StopReload_Off");
mHUDList->setIconClickedCallback(boost::bind(&LLFloaterPerformance::detachItem, this, _1));
mPreferencesPanel->getChild<LLButton>("advanced_btn")->setCommitCallback(boost::bind(&LLFloaterPerformance::onClickAdvanced, this));
mPreferencesPanel->getChild<LLButton>("defaults_btn")->setCommitCallback(boost::bind(&LLFloaterPerformance::onClickRecommended, this));
mObjectList = mComplexityPanel->getChild<LLNameListCtrl>("obj_list");
mObjectList->setNameListType(LLNameListCtrl::SPECIAL);
mObjectList->setHoverIconName("StopReload_Off");
mObjectList->setIconClickedCallback(boost::bind(&LLFloaterPerformance::detachItem, this, _1));
mSettingsPanel->getChild<LLButton>("advanced_btn")->setCommitCallback(boost::bind(&LLFloaterPerformance::onClickAdvanced, this));
mSettingsPanel->getChild<LLButton>("defaults_btn")->setCommitCallback(boost::bind(&LLFloaterPerformance::onClickRecommended, this));
mNearbyPanel->getChild<LLButton>("exceptions_btn")->setCommitCallback(boost::bind(&LLFloaterPerformance::onClickExceptions, this));
mNearbyList = mNearbyPanel->getChild<LLNameListCtrl>("nearby_list");
@ -89,6 +96,8 @@ BOOL LLFloaterPerformance::postBuild()
mComplexityChangedSignal = gSavedSettings.getControl("IndirectMaxComplexity")->getCommitSignal()->connect(boost::bind(&LLFloaterPerformance::updateComplexityText, this));
mNearbyPanel->getChild<LLSliderCtrl>("IndirectMaxComplexity")->setCommitCallback(boost::bind(&LLFloaterPerformance::updateMaxComplexity, this));
LLAvatarComplexityControls::setIndirectMaxArc();
return TRUE;
}
@ -107,13 +116,43 @@ void LLFloaterPerformance::showSelectedPanel(LLPanel* selected_panel)
}
}
void LLFloaterPerformance::draw()
{
if (mUpdateTimer->hasExpired())
{
getChild<LLTextBox>("fps_value")->setValue((S32)llround(LLTrace::get_frame_recording().getPeriodMeanPerSec(LLStatViewer::FPS)));
if (mMainPanel->getVisible())
{
mMainPanel->getChild<LLTextBox>("huds_value")->setValue(LLHUDRenderNotifier::getInstance()->getHUDsCount());
mMainPanel->getChild<LLTextBox>("complexity_value")->setValue((S32)gAgentAvatarp->getVisualComplexity());
updateNearbyComplexityDesc();
}
else if (mHUDsPanel->getVisible())
{
populateHUDList();
}
else if (mNearbyPanel->getVisible())
{
populateNearbyList();
updateNearbyComplexityDesc();
}
else if (mComplexityPanel->getVisible())
{
populateObjectList();
}
mUpdateTimer->setTimerExpirySec(REFRESH_INTERVAL);
}
LLFloater::draw();
}
void LLFloaterPerformance::showMainPanel()
{
mTroubleshootingPanel->setVisible(FALSE);
mNearbyPanel->setVisible(FALSE);
mScriptsPanel->setVisible(FALSE);
mComplexityPanel->setVisible(FALSE);
mHUDsPanel->setVisible(FALSE);
mPreferencesPanel->setVisible(FALSE);
mSettingsPanel->setVisible(FALSE);
mMainPanel->setVisible(TRUE);
}
@ -165,16 +204,55 @@ void LLFloaterPerformance::populateHUDList()
mHUDsPanel->getChild<LLTextBox>("huds_value")->setValue(std::to_string(complexity_list.size()));
}
void LLFloaterPerformance::populateObjectList()
{
mObjectList->clearRows();
mObjectList->updateColumns(true);
object_complexity_list_t complexity_list = LLAvatarRenderNotifier::getInstance()->getObjectComplexityList();
object_complexity_list_t::iterator iter = complexity_list.begin();
object_complexity_list_t::iterator end = complexity_list.end();
for (; iter != end; ++iter)
{
LLObjectComplexity object_complexity = *iter;
LLSD item;
item["special_id"] = object_complexity.objectId;
item["target"] = LLNameListCtrl::SPECIAL;
LLSD& row = item["columns"];
row[0]["column"] = "complex_visual";
row[0]["type"] = "text";
row[0]["value"] = "*";
row[1]["column"] = "complex_value";
row[1]["type"] = "text";
row[1]["value"] = std::to_string(object_complexity.objectCost);
row[1]["font"]["name"] = "SANSSERIF";
row[2]["column"] = "name";
row[2]["type"] = "text";
row[2]["value"] = object_complexity.objectName;
row[2]["font"]["name"] = "SANSSERIF";
mObjectList->addElement(item);
}
mObjectList->sortByColumnIndex(1, FALSE);
}
void LLFloaterPerformance::populateNearbyList()
{
mNearbyList->clearRows();
mNearbyList->updateColumns(true);
S32 avatars = 0;
std::vector<LLCharacter*>::iterator char_iter = LLCharacter::sInstances.begin();
while (char_iter != LLCharacter::sInstances.end())
{
LLVOAvatar* avatar = dynamic_cast<LLVOAvatar*>(*char_iter);
if (avatar && !avatar->isDead() && !avatar->isControlAvatar())
if (avatar && !avatar->isDead() && !avatar->isControlAvatar() && !avatar->isSelf())
{
avatar->calculateUpdateRenderComplexity();
@ -204,17 +282,38 @@ void LLFloaterPerformance::populateNearbyList()
name_text->setColor(LLUIColorTable::instance().getColor("ConversationFriendColor"));
}
}
avatars++;
}
char_iter++;
}
mNearbyList->sortByColumnIndex(1, FALSE);
mNearbyList->sortByColumnIndex(1, FALSE);
}
void LLFloaterPerformance::updateNearbyComplexityDesc()
{
S32 max_complexity = 0;
std::vector<LLCharacter*>::iterator char_iter = LLCharacter::sInstances.begin();
while (char_iter != LLCharacter::sInstances.end())
{
LLVOAvatar* avatar = dynamic_cast<LLVOAvatar*>(*char_iter);
if (avatar && !avatar->isDead() && !avatar->isControlAvatar() && !avatar->isSelf())
{
max_complexity = llmax(max_complexity, (S32)avatar->getVisualComplexity());
}
char_iter++;
}
std::string desc = getString(max_complexity > COMPLEXITY_THRESHOLD_1 ? "very_high" : "medium");
if (mMainPanel->getVisible())
{
mMainPanel->getChild<LLTextBox>("avatars_nearby_value")->setValue(desc);
}
mNearbyPanel->getChild<LLTextBox>("av_nearby_value")->setValue(desc);
}
void LLFloaterPerformance::detachItem(const LLUUID& item_id)
{
LLAppearanceMgr::instance().removeItemFromAvatar(item_id);
mHUDList->removeNameItem(item_id);
}
void LLFloaterPerformance::onClickRecommended()

View File

@ -37,6 +37,7 @@ public:
virtual ~LLFloaterPerformance();
/*virtual*/ BOOL postBuild();
/*virtual*/ void draw();
void showSelectedPanel(LLPanel* selected_panel);
void showMainPanel();
@ -46,6 +47,7 @@ public:
private:
void initBackBtn(LLPanel* panel);
void populateHUDList();
void populateObjectList();
void populateNearbyList();
void onClickAdvanced();
@ -55,15 +57,20 @@ private:
void updateMaxComplexity();
void updateComplexityText();
void updateNearbyComplexityDesc();
LLPanel* mMainPanel;
LLPanel* mTroubleshootingPanel;
LLPanel* mNearbyPanel;
LLPanel* mScriptsPanel;
LLPanel* mComplexityPanel;
LLPanel* mHUDsPanel;
LLPanel* mPreferencesPanel;
LLPanel* mSettingsPanel;
LLNameListCtrl* mHUDList;
LLNameListCtrl* mObjectList;
LLNameListCtrl* mNearbyList;
LLTimer* mUpdateTimer;
boost::signals2::connection mComplexityChangedSignal;
};

View File

@ -10533,7 +10533,8 @@ void LLVOAvatar::accountRenderComplexityForObject(
const F32 max_attachment_complexity,
LLVOVolume::texture_cost_t& textures,
U32& cost,
hud_complexity_list_t& hud_complexity_list)
hud_complexity_list_t& hud_complexity_list,
object_complexity_list_t& object_complexity_list)
{
if (attached_object && !attached_object->isHUDAttachment())
{
@ -10552,12 +10553,12 @@ void LLVOAvatar::accountRenderComplexityForObject(
F32 attachment_volume_cost = 0;
F32 attachment_texture_cost = 0;
F32 attachment_children_cost = 0;
const F32 animated_object_attachment_surcharge = 1000;
const F32 animated_object_attachment_surcharge = 1000;
if (attached_object->isAnimatedObject())
{
attachment_volume_cost += animated_object_attachment_surcharge;
}
if (attached_object->isAnimatedObject())
{
attachment_volume_cost += animated_object_attachment_surcharge;
}
attachment_volume_cost += volume->getRenderCost(textures);
const_child_list_t children = volume->getChildren();
@ -10590,6 +10591,15 @@ void LLVOAvatar::accountRenderComplexityForObject(
<< LL_ENDL;
// Limit attachment complexity to avoid signed integer flipping of the wearer's ACI
cost += (U32)llclamp(attachment_total_cost, MIN_ATTACHMENT_COMPLEXITY, max_attachment_complexity);
if (isSelf())
{
LLObjectComplexity object_complexity;
object_complexity.objectName = attached_object->getAttachmentItemName();
object_complexity.objectId = attached_object->getAttachmentItemID();
object_complexity.objectCost = attachment_total_cost;
object_complexity_list.push_back(object_complexity);
}
}
}
}
@ -10676,6 +10686,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
U32 cost = VISUAL_COMPLEXITY_UNKNOWN;
LLVOVolume::texture_cost_t textures;
hud_complexity_list_t hud_complexity_list;
object_complexity_list_t object_complexity_list;
for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
{
@ -10706,7 +10717,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
if (volp && !volp->isAttachment())
{
accountRenderComplexityForObject(volp, max_attachment_complexity,
textures, cost, hud_complexity_list);
textures, cost, hud_complexity_list, object_complexity_list);
}
}
@ -10722,7 +10733,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
{
const LLViewerObject* attached_object = attachment_iter->get();
accountRenderComplexityForObject(attached_object, max_attachment_complexity,
textures, cost, hud_complexity_list);
textures, cost, hud_complexity_list, object_complexity_list);
}
}
@ -10782,13 +10793,13 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
mVisualComplexity = cost;
mVisualComplexityStale = false;
static LLCachedControl<U32> show_my_complexity_changes(gSavedSettings, "ShowMyComplexityChanges", 20);
if (isSelf() && show_my_complexity_changes)
if (isSelf())
{
// Avatar complexity
LLAvatarRenderNotifier::getInstance()->updateNotificationAgent(mVisualComplexity);
LLAvatarRenderNotifier::getInstance()->setObjectComplexityList(object_complexity_list);
// HUD complexity
LLHUDRenderNotifier::getInstance()->updateNotificationHUD(hud_complexity_list);
}

View File

@ -299,7 +299,8 @@ public:
const F32 max_attachment_complexity,
LLVOVolume::texture_cost_t& textures,
U32& cost,
hud_complexity_list_t& hud_complexity_list);
hud_complexity_list_t& hud_complexity_list,
object_complexity_list_t& object_complexity_list);
void calculateUpdateRenderComplexity();
static const U32 VISUAL_COMPLEXITY_UNKNOWN;
void updateVisualComplexity();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -234,8 +234,6 @@ with the same filename but different name
<texture name="Generic_Person" file_name="icons/Generic_Person.png" preload="false" />
<texture name="Generic_Person_Large" file_name="icons/Generic_Person_Large.png" preload="false" />
<texture name="Green_dot" file_name="icons/green_dot.png" preload="false" />
<texture name="Hand" file_name="icons/hand.png" preload="false" />
<texture name="Help_Press" file_name="navbar/Help_Press.png" preload="false" />

View File

@ -1,409 +1,387 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
height="550"
height="590"
layout="topleft"
name="performance"
save_rect="true"
title="IMPROVE GRAPHICS SPEED"
width="580">
<string
name="very_high"
value="very high"/>
<string
name="medium"
value="medium"/>
<panel
bevel_style="none"
follows="left|top"
height="490"
height="540"
width="580"
name="panel_top"
visible="true"
layout="topleft"
left="0"
top="0">
<panel
bg_alpha_color="black"
background_visible="true"
background_opaque="false"
border="false"
bevel_style="none"
follows="left|top"
height="40"
width="560"
name="fps_subpanel"
layout="topleft"
left="10"
top="5">
<text
follows="left|top"
font="SansSerifHuge"
text_color="White"
height="20"
layout="topleft"
left="20"
top="8"
name="fps_value"
width="40">
75
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left_pad="0"
top="14"
name="fps_lbl"
width="450">
FPS -- 60 or more for the best experience
</text>
</panel>
</panel>
<panel
bevel_style="none"
follows="left|top"
height="540"
width="580"
name="panel_performance_main"
visible="true"
layout="topleft"
left="0"
top="0">
<text
top="60">
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
font="SansSerifHuge"
text_color="White"
height="20"
height="60"
width="560"
name="presets_subpanel"
layout="topleft"
left="10"
name="fps_lbl"
top="17"
width="130">
Current FPS
</text>
<text
top="5">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="presets_lbl"
top="12"
width="395">
Quick settings for common situations
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="presets_desc"
top_pad="5"
width="395">
Choose settings for parties, exploration, photography, and more.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow1"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
font="SansSerifHugeBold"
text_color="White"
height="20"
height="60"
width="560"
name="settings_subpanel"
layout="topleft"
left_pad="5"
name="fps_value"
width="100">
75.2
</text>
<icon
height="16"
width="16"
image_name="Green_dot"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="16"
right="-154"/>
<icon
height="16"
width="16"
image_name="Green_dot"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top_pad="9"/>
<icon
height="16"
width="16"
image_name="Green_dot"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top_pad="8"/>
<text
follows="right|top"
font="SansSerif"
height="20"
layout="topleft"
top="17"
right="-90"
name="client_lbl"
width="60">
Client:
</text>
<text
follows="right|top"
font="SansSerif"
height="20"
layout="topleft"
top_pad="5"
name="client_lbl"
width="60">
Network:
</text>
<text
follows="right|top"
font="SansSerif"
height="20"
layout="topleft"
top_pad="5"
name="client_lbl"
width="60">
Server:
</text>
<text
follows="right|top"
font="SansSerif"
height="20"
layout="topleft"
right="-15"
name="client_value"
top="17"
width="45">
Normal
</text>
<text
follows="right|top"
font="SansSerif"
height="20"
layout="topleft"
name="network_value"
top_pad="5"
width="45">
Normal
</text>
<text
follows="right|top"
font="SansSerif"
height="20"
layout="topleft"
name="server_value"
top_pad="5"
width="45">
Normal
</text>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="troubleshooting_subpanel"
layout="topleft"
left="10"
top="102">
<text
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_lbl"
top="12"
width="180">
Individual settings
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="settings_desc"
top_pad="5"
width="395">
More control over quality, visibility distance, and enhancements.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow3"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
height="60"
width="560"
name="nearby_subpanel"
layout="topleft"
left="10"
name="troubleshooting_lbl"
top="12"
width="395">
General troubleshooting
</text>
<text
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="avatars_nearby_lbl"
top="12"
width="205">
Nearby avatar complexity is
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="5"
name="avatars_nearby_value"
width="100">
very high
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="avatars_nearby_desc"
top_pad="5"
width="395">
Choose which avatars are not displayed in detail, to increase FPS.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow2"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
height="60"
width="560"
name="complexity_subpanel"
layout="topleft"
left="10"
name="troubleshooting_info"
top_pad="5"
width="395">
Choose among common problems and see what you can do.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow1"
follows="right|top"
top="24"
right="-20"/>
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_lbl"
top="12"
width="180">
Your avatar complexity is
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="5"
name="complexity_value"
width="100">
275
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_info"
top_pad="5"
width="455">
Reduce the complexity of your avatar if you aren't satisfied with current FPS.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="huds_subpanel"
layout="topleft"
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_lbl"
top="12"
width="135">
Your current HUDs:
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="5"
name="huds_value"
width="100">
7
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_desc"
top_pad="5"
width="395">
Removing HUDs you are not using can improve speed.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="troubleshooting_subpanel"
layout="topleft"
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="troubleshooting_lbl"
top="12"
width="395">
General troubleshooting
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="troubleshooting_desc"
top_pad="5"
width="395">
Choose among common problems and see what you can do.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow1"
follows="right|top"
top="24"
right="-20"/>
</panel>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="nearby_subpanel"
layout="topleft"
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="avatars_nearby_lbl"
top="12"
width="115">
Avatars nearby:
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="3"
name="avatars_nearby_value"
width="100">
42 (very high)
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="avatars_nearby_info"
top_pad="5"
width="395">
Click to review avatars and choose a complexity limit.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow2"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="preferences_subpanel"
layout="topleft"
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_lbl"
top="12"
width="110">
This location is
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="3"
name="complexity_value"
width="100">
very complex
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="complexity_info"
top_pad="5"
width="395">
Try changing graphics quality or draw distance.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow3"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="scripts_subpanel"
layout="topleft"
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="scripts_lbl"
top="12"
width="88">
Your avatar:
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="2"
name="scripts_value"
width="100">
12 scripts
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="scripts_info"
top_pad="5"
width="395">
Removing high-impact attachments may improve graphics speed.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="24"
right="-20"/>
</panel>
<panel
bg_alpha_color="PerformanceFloaterGray"
background_visible="true"
background_opaque="false"
border="true"
bevel_style="none"
follows="left|top"
height="60"
width="560"
name="huds_subpanel"
layout="topleft"
top_pad="20">
<text
follows="left|top"
font="SansSerifLarge"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_lbl"
top="12"
width="80">
Your HUDs:
</text>
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="3"
name="huds_value"
width="100">
7
</text>
<text
follows="left|top"
font="SansSerif"
text_color="White"
height="20"
layout="topleft"
left="10"
name="huds_info"
top_pad="5"
width="395">
Removing HUDs you are not using can improve graphics speed.
</text>
<icon
height="16"
width="16"
image_name="Arrow_Right_Off"
mouse_opaque="true"
name="icon_arrow4"
follows="right|top"
top="24"
right="-20"/>
</panel>
</panel>
<panel
filename="panel_performance_troubleshooting.xml"
follows="all"
@ -411,7 +389,7 @@
left="0"
name="panel_performance_troubleshooting"
visible="false"
top="0" />
top="55" />
<panel
filename="panel_performance_nearby.xml"
follows="all"
@ -419,15 +397,15 @@
left="0"
name="panel_performance_nearby"
visible="false"
top="0" />
top="55" />
<panel
filename="panel_performance_scripts.xml"
filename="panel_performance_complexity.xml"
follows="all"
layout="topleft"
left="0"
name="panel_performance_scripts"
name="panel_performance_complexity"
visible="false"
top="0" />
top="55" />
<panel
filename="panel_performance_preferences.xml"
follows="all"
@ -435,7 +413,7 @@
left="0"
name="panel_performance_preferences"
visible="false"
top="0" />
top="55" />
<panel
filename="panel_performance_huds.xml"
follows="all"
@ -443,5 +421,5 @@
left="0"
name="panel_performance_huds"
visible="false"
top="0" />
top="55" />
</floater>

View File

@ -4,7 +4,7 @@
follows="left|top"
height="490"
width="580"
name="panel_performance_scripts"
name="panel_performance_complexity"
layout="topleft"
left="0"
top="0">
@ -15,7 +15,7 @@
mouse_opaque="true"
follows="left|top"
name="back_btn"
top="10"
top="7"
image_selected="Arrow_Left_Off"
image_pressed="Arrow_Left_Off"
image_unselected="Arrow_Left_Off"
@ -27,7 +27,7 @@
height="20"
layout="topleft"
left_pad="3"
top="13"
top="10"
name="back_lbl"
width="40">
Back
@ -35,25 +35,14 @@
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
text_color="white"
height="20"
layout="topleft"
left="20"
top_pad="10"
name="attachments_title"
width="195">
Avatar attachment scripts:
</text>
<text
follows="left|top"
font="SansSerifLargeBold"
text_color="PerformanceMid"
height="20"
layout="topleft"
left_pad="5"
name="attachments_value"
width="70">
12
My avatar complexity
</text>
<text
follows="left|top"
@ -65,7 +54,7 @@
left="20"
name="attachments_desc1"
width="580">
These attachments contain scripts (embedded apps) that use memory.
Complex attachments require more time and memory to display.
</text>
<text
follows="left|top"
@ -77,6 +66,27 @@
left="20"
name="attachments_desc2"
width="580">
If there are any you don't need, detaching them may improve graphics speed.
While you are in this location, removing the most complex ones may increase speed.
</text>
<name_list
column_padding="0"
draw_stripes="true"
height="220"
follows="left|top"
layout="topleft"
name="obj_list"
top_pad="10"
width="540">
<name_list.columns
label=""
name="complex_visual"
width="90" />
<name_list.columns
label=""
name="complex_value"
width="40" />
<name_list.columns
label=""
name="name"/>
</name_list>
</panel>

View File

@ -15,7 +15,7 @@
mouse_opaque="true"
follows="left|top"
name="back_btn"
top="10"
top="7"
image_selected="Arrow_Left_Off"
image_pressed="Arrow_Left_Off"
image_unselected="Arrow_Left_Off"
@ -27,7 +27,7 @@
height="20"
layout="topleft"
left_pad="3"
top="13"
top="10"
name="back_lbl"
width="40">
Back
@ -35,14 +35,14 @@
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
text_color="White"
height="20"
layout="topleft"
left="20"
top_pad="10"
name="huds_title"
width="120">
HUDs displayed:
width="135">
Your current HUDs:
</text>
<text
follows="left|top"
@ -65,7 +65,7 @@
left="20"
name="huds_desc1"
width="540">
If there are any you don't need, detaching them may improve graphics speed.
Detaching HUDs you aren't using us always a good idea, but especially in a complex location.
</text>
<text
follows="left|top"
@ -100,13 +100,5 @@
label=""
name="name"/>
</name_list>
<button
follows="left|top"
height="19"
label="Refresh List"
layout="topleft"
name="refresh_list_btn"
top_pad="20"
width="100" />
</panel>

View File

@ -15,7 +15,7 @@
mouse_opaque="true"
follows="left|top"
name="back_btn"
top="10"
top="7"
image_selected="Arrow_Left_Off"
image_pressed="Arrow_Left_Off"
image_unselected="Arrow_Left_Off"
@ -27,7 +27,7 @@
height="20"
layout="topleft"
left_pad="3"
top="13"
top="10"
name="back_lbl"
width="40">
Back
@ -35,14 +35,14 @@
<text
follows="left|top"
font="SansSerifLarge"
text_color="PerformanceMid"
text_color="White"
height="20"
layout="topleft"
left="20"
top_pad="10"
name="av_nearby_title"
width="215">
Avatars within draw distance:
width="205">
Nearby avatar complexity is
</text>
<text
follows="left|top"
@ -53,7 +53,7 @@
left_pad="3"
name="av_nearby_value"
width="150">
42 (very high)
very high
</text>
<text
follows="left|top"
@ -65,7 +65,7 @@
top_pad="5"
name="av_nearby_desc"
width="580">
Some avatars nearby are slow to display. Choosing complexity limit may help graphics speed.
Some avatars nearby are slow to display. Choosing a complexity limit may help graphics speed.
</text>
<slider
control_name="IndirectMaxComplexity"
@ -74,7 +74,8 @@
height="16"
initial_value="101"
increment="1"
label="Avatar Maximum Complexity:"
label="Maximum avatar complexity"
text_color="White"
label_width="165"
layout="topleft"
min_val="1"
@ -82,6 +83,7 @@
name="IndirectMaxComplexity"
show_text="false"
top_pad="10"
left="40"
width="300">
</slider>
<text
@ -92,7 +94,7 @@
layout="topleft"
top_delta="0"
left_delta="304"
text_readonly_color="LabelDisabledColor"
text_color="White"
name="IndirectMaxComplexityText"
width="65">
0
@ -116,7 +118,7 @@
<name_list.columns
label=""
name="complex_value"
width="40" />
width="50" />
<name_list.columns
label=""
name="name"/>
@ -131,7 +133,7 @@
top_pad="10"
name="av_nearby_desc2"
width="580">
You can also right-click on an avatar to control display.
You can also right-click on an avatar in-world to control display.
</text>
<button
height="23"
@ -147,6 +149,7 @@
height="16"
initial_value="true"
label="Always display friends"
label_text.text_color="White"
layout="topleft"
name="display_friends"
top_pad="3"

View File

@ -15,7 +15,7 @@
mouse_opaque="true"
follows="left|top"
name="back_btn"
top="10"
top="7"
image_selected="Arrow_Left_Off"
image_pressed="Arrow_Left_Off"
image_unselected="Arrow_Left_Off"
@ -27,7 +27,7 @@
height="20"
layout="topleft"
left_pad="3"
top="13"
top="10"
name="back_lbl"
width="40">
Back

View File

@ -15,7 +15,7 @@
mouse_opaque="true"
follows="left|top"
name="back_btn"
top="10"
top="7"
image_selected="Arrow_Left_Off"
image_pressed="Arrow_Left_Off"
image_unselected="Arrow_Left_Off"
@ -27,7 +27,7 @@
height="20"
layout="topleft"
left_pad="3"
top="13"
top="10"
name="back_lbl"
width="40">
Back