diff options
author | Mnikolenko Productengine <mnikolenko@productengine.com> | 2021-06-18 18:36:15 +0300 |
---|---|---|
committer | Mnikolenko Productengine <mnikolenko@productengine.com> | 2021-06-18 18:36:15 +0300 |
commit | 3fe7715197c1e9a4ae781201df7a9ec24354f15e (patch) | |
tree | 82782546951bd1365532b4dd171ef96be24d5123 /indra/newview | |
parent | bc609f964b13141301aca9d29b9ceb5f9a541bf9 (diff) |
SL-15297 WIP Implement performance floater - Quick and Individual settings panels
Diffstat (limited to 'indra/newview')
6 files changed, 461 insertions, 77 deletions
diff --git a/indra/newview/llfloaterperformance.cpp b/indra/newview/llfloaterperformance.cpp index c96d3dac5e..424ca04b1f 100644 --- a/indra/newview/llfloaterperformance.cpp +++ b/indra/newview/llfloaterperformance.cpp @@ -63,18 +63,21 @@ BOOL LLFloaterPerformance::postBuild() mComplexityPanel = getChild<LLPanel>("panel_performance_complexity"); mSettingsPanel = getChild<LLPanel>("panel_performance_preferences"); mHUDsPanel = getChild<LLPanel>("panel_performance_huds"); + mPresetsPanel = getChild<LLPanel>("panel_performance_presets"); getChild<LLPanel>("troubleshooting_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mTroubleshootingPanel)); getChild<LLPanel>("nearby_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mNearbyPanel)); 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)); + getChild<LLPanel>("presets_subpanel")->setMouseDownCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mPresetsPanel)); initBackBtn(mTroubleshootingPanel); initBackBtn(mNearbyPanel); initBackBtn(mComplexityPanel); initBackBtn(mSettingsPanel); initBackBtn(mHUDsPanel); + initBackBtn(mPresetsPanel); mHUDList = mHUDsPanel->getChild<LLNameListCtrl>("hud_list"); mHUDList->setNameListType(LLNameListCtrl::SPECIAL); @@ -87,11 +90,13 @@ BOOL LLFloaterPerformance::postBuild() 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"); + mPresetsPanel->getChild<LLTextBox>("avatars_nearby_link")->setURLClickedCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mNearbyPanel)); + mPresetsPanel->getChild<LLTextBox>("settings_link")->setURLClickedCallback(boost::bind(&LLFloaterPerformance::showSelectedPanel, this, mSettingsPanel)); + updateComplexityText(); mComplexityChangedSignal = gSavedSettings.getControl("IndirectMaxComplexity")->getCommitSignal()->connect(boost::bind(&LLFloaterPerformance::updateComplexityText, this)); mNearbyPanel->getChild<LLSliderCtrl>("IndirectMaxComplexity")->setCommitCallback(boost::bind(&LLFloaterPerformance::updateMaxComplexity, this)); @@ -103,8 +108,9 @@ BOOL LLFloaterPerformance::postBuild() void LLFloaterPerformance::showSelectedPanel(LLPanel* selected_panel) { - selected_panel->setVisible(TRUE); + hidePanels(); mMainPanel->setVisible(FALSE); + selected_panel->setVisible(TRUE); if (mHUDsPanel == selected_panel) { @@ -148,12 +154,18 @@ void LLFloaterPerformance::draw() void LLFloaterPerformance::showMainPanel() { + hidePanels(); + mMainPanel->setVisible(TRUE); +} + +void LLFloaterPerformance::hidePanels() +{ mTroubleshootingPanel->setVisible(FALSE); mNearbyPanel->setVisible(FALSE); mComplexityPanel->setVisible(FALSE); mHUDsPanel->setVisible(FALSE); mSettingsPanel->setVisible(FALSE); - mMainPanel->setVisible(TRUE); + mPresetsPanel->setVisible(FALSE); } void LLFloaterPerformance::initBackBtn(LLPanel* panel) @@ -247,6 +259,7 @@ void LLFloaterPerformance::populateNearbyList() mNearbyList->updateColumns(true); S32 avatars = 0; + static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAvatarMaxComplexity", 0); std::vector<LLCharacter*>::iterator char_iter = LLCharacter::sInstances.begin(); while (char_iter != LLCharacter::sInstances.end()) @@ -274,12 +287,21 @@ void LLFloaterPerformance::populateNearbyList() row[2]["font"]["name"] = "SANSSERIF"; LLScrollListItem* av_item = mNearbyList->addElement(item); - if(av_item && LLAvatarActions::isFriend(avatar->getID())) + if(av_item) { LLScrollListText* name_text = dynamic_cast<LLScrollListText*>(av_item->getColumn(2)); if (name_text) { - name_text->setColor(LLUIColorTable::instance().getColor("ConversationFriendColor")); + std::string color = "white"; + if (avatar->getVisualComplexity() > max_render_cost) + { + color = "LabelDisabledColor"; + } + else if (LLAvatarActions::isFriend(avatar->getID())) + { + color = "ConversationFriendColor"; + } + name_text->setColor(LLUIColorTable::instance().getColor(color)); } } avatars++; @@ -291,6 +313,7 @@ void LLFloaterPerformance::populateNearbyList() void LLFloaterPerformance::updateNearbyComplexityDesc() { + static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAvatarMaxComplexity", 0); S32 max_complexity = 0; std::vector<LLCharacter*>::iterator char_iter = LLCharacter::sInstances.begin(); while (char_iter != LLCharacter::sInstances.end()) @@ -302,7 +325,7 @@ void LLFloaterPerformance::updateNearbyComplexityDesc() } char_iter++; } - std::string desc = getString(max_complexity > COMPLEXITY_THRESHOLD_1 ? "very_high" : "medium"); + std::string desc = getString(max_complexity > llmin((S32)max_render_cost, COMPLEXITY_THRESHOLD_1) ? "very_high" : "medium"); if (mMainPanel->getVisible()) { @@ -316,13 +339,13 @@ void LLFloaterPerformance::detachItem(const LLUUID& item_id) LLAppearanceMgr::instance().removeItemFromAvatar(item_id); } -void LLFloaterPerformance::onClickRecommended() -{ - LLFeatureManager::getInstance()->applyRecommendedSettings(); -} - void LLFloaterPerformance::onClickAdvanced() { + LLFloaterPreference* instance = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences"); + if (instance) + { + instance->saveSettings(); + } LLFloaterReg::showInstance("prefs_graphics_advanced"); } diff --git a/indra/newview/llfloaterperformance.h b/indra/newview/llfloaterperformance.h index 1facfe9225..7aec7c3f6c 100644 --- a/indra/newview/llfloaterperformance.h +++ b/indra/newview/llfloaterperformance.h @@ -41,6 +41,7 @@ public: void showSelectedPanel(LLPanel* selected_panel); void showMainPanel(); + void hidePanels(); void detachItem(const LLUUID& item_id); @@ -51,7 +52,6 @@ private: void populateNearbyList(); void onClickAdvanced(); - void onClickRecommended(); void onClickExceptions(); void updateMaxComplexity(); @@ -65,6 +65,7 @@ private: LLPanel* mComplexityPanel; LLPanel* mHUDsPanel; LLPanel* mSettingsPanel; + LLPanel* mPresetsPanel; LLNameListCtrl* mHUDList; LLNameListCtrl* mObjectList; LLNameListCtrl* mNearbyList; diff --git a/indra/newview/skins/default/xui/en/floater_performance.xml b/indra/newview/skins/default/xui/en/floater_performance.xml index 09af364266..e415ac5be0 100644 --- a/indra/newview/skins/default/xui/en/floater_performance.xml +++ b/indra/newview/skins/default/xui/en/floater_performance.xml @@ -194,7 +194,7 @@ text_color="PerformanceMid" height="20" layout="topleft" - left_pad="5" + left_pad="2" name="avatars_nearby_value" width="100"> very high @@ -383,6 +383,14 @@ </panel> </panel> <panel + filename="panel_performance_presets.xml" + follows="all" + layout="topleft" + left="0" + name="panel_performance_presets" + visible="false" + top="55" /> + <panel filename="panel_performance_troubleshooting.xml" follows="all" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_performance_nearby.xml b/indra/newview/skins/default/xui/en/panel_performance_nearby.xml index 28ffbd5c2e..9d91e86b7a 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_nearby.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_nearby.xml @@ -46,7 +46,7 @@ </text> <text follows="left|top" - font="SansSerifLargeBold" + font="SansSerifLarge" text_color="PerformanceMid" height="20" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml index aaa27061e3..ec1b624f13 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml @@ -2,7 +2,7 @@ <panel bevel_style="none" follows="left|top" - height="490" + height="510" width="580" name="panel_performance_preferences" layout="topleft" @@ -35,37 +35,33 @@ <text follows="left|top" font="SansSerifLarge" - text_color="PerformanceMid" + text_color="white" height="20" layout="topleft" left="20" top_pad="10" - name="preferences_title" + name="settings_title" width="300"> - This location is very complex + Individual settings </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="border1" + top_pad="8" + width="540"/> <text follows="left|top" font="SansSerifSmall" text_color="White" height="18" layout="topleft" - top_pad="5" - name="preferences_desc" - width="580"> - While you are here, you may want to reduce graphics quality or draw distance. - </text> - - <text - follows="left|top" - font="SansSerifSmall" - text_color="White" - height="18" - layout="topleft" - top_pad="35" + top_pad="20" name="quality_lbl" width="100"> Graphics quality +shortcuts </text> <text follows="left|top" @@ -111,43 +107,31 @@ text_color="White" height="18" layout="topleft" - top_pad="40" - left="20" - name="enhancements_lbl" - width="100"> - Enhancements + top_pad="15" + left="160" + name="quality_desc" + width="380"> + Choosing a shortcut will reset all manual changes you have made. </text> - <check_box - control_name="WindLightUseAtmosShaders" - height="16" - initial_value="true" - label="Atmospheric shaders" + <view_border + bevel_style="in" + height="0" layout="topleft" - name="atmospheric_shaders" - left_pad="37" - width="280"> - </check_box> - <check_box - control_name="RenderDeferred" - height="16" - initial_value="true" - label="Advanced Lighting Model" - layout="topleft" - name="advanced_lighting_model" - top_delta="24" - width="256"> - </check_box> + name="border2" + top_pad="15" + left="20" + width="540"/> <text follows="left|top" font="SansSerifSmall" text_color="White" height="18" layout="topleft" - top_pad="40" + top_pad="20" left="20" name="distance_lbl" width="100"> - Draw distance + Visibility distance </text> <text follows="left|top" @@ -205,11 +189,11 @@ text_color="White" height="18" layout="topleft" - top_pad="20" + top_pad="15" left="160" name="distance_desc1" - width="100"> - Regions are 256 m x 256 m. + width="350"> + To zoom out and see long distances, increase the distance. </text> <text follows="left|top" @@ -220,38 +204,183 @@ top_pad="5" left="160" name="distance_desc2" - width="400"> - To zoom out and see long distances, increase the draw distance. + width="350"> + If you are indoors, decrease the distance to improve speed. </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="border3" + top_pad="15" + left="20" + width="540"/> <text follows="left|top" font="SansSerifSmall" text_color="White" height="18" layout="topleft" - top_pad="5" + top_pad="20" + left="20" + name="enhancements_lbl" + width="100"> + Enhancements + </text> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_delta="0" left="160" - name="distance_desc3" - width="400"> - If you are socializing in a small area, decrease the draw distance. + name="enhancements_desc" + width="350"> + Each enhancement improves realism but can reduce speed. </text> - <button - follows="top|left" - height="23" - label="Reset to recommended settings" + <check_box + control_name="WindLightUseAtmosShaders" + height="16" + initial_value="true" + label="Atmospheric shaders" + layout="topleft" + name="atmospheric_shaders" + top_pad="5" + left="157" + width="280"> + </check_box> + <check_box + control_name="RenderDeferred" + height="16" + initial_value="true" + label="Advanced Lighting" + layout="topleft" + name="advanced_lighting_model" + top_delta="24" + width="280"> + </check_box> + <check_box + control_name="RenderTransparentWater" + height="16" + initial_value="true" + label="Transparent Water" + layout="topleft" + name="TransparentWater" + top_delta="24" + width="280"> + </check_box> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + name="ReflectionsText" + text_readonly_color="LabelDisabledColor" + top_pad="16" + left="160" + width="128"> + Water Reflections: + </text> + <combo_box + control_name="RenderReflectionDetail" + height="18" + layout="topleft" + left_delta="150" + top_delta="0" + name="Reflections" + width="150"> + <combo_box.item + label="None; opaque" + name="0" + value="-2"/> + <combo_box.item + label="None; transparent" + name="0" + value="-1"/> + <combo_box.item + label="Minimal" + name="0" + value="0"/> + <combo_box.item + label="Terrain and trees" + name="1" + value="1"/> + <combo_box.item + label="All static objects" + name="2" + value="2"/> + <combo_box.item + label="All avatars and objects" + name="3" + value="3"/> + <combo_box.item + label="Everything" + name="4" + value="4"/> + </combo_box> + <text + type="string" + length="1" + follows="left|top" + height="16" layout="topleft" + left="160" + name="RenderShadowDetailText" + text_readonly_color="LabelDisabledColor" + top_pad="10" + width="128"> + Shadows: + </text> + <combo_box + control_name="RenderShadowDetail" + height="18" + layout="topleft" + left_delta="150" + top_delta="0" + name="ShadowDetail" + width="150"> + <combo_box.item + label="None" + name="0" + value="0"/> + <combo_box.item + label="Sun/Moon" + name="1" + value="1"/> + <combo_box.item + label="Sun/Moon + Projectors" + name="2" + value="2"/> + </combo_box> + <text + follows="left|top" + font="SansSerifSmall" + height="18" + layout="topleft" + top_pad="8" + left="160" + skip_link_underline="true" + name="settings_help" + width="350"> + [secondlife:/// What do these settings mean?] + </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="border3" + top_pad="10" left="20" - name="defaults_btn" - top_delta="50" - width="210"> - </button> + width="540"/> <button follows="top|left" height="23" - label="Advanced Settings..." + label="Open Advanced Settings" layout="topleft" - left_pad="10" + left="160" name="advanced_btn" - top_delta="0" + top_pad="12" width="200"/> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_performance_presets.xml b/indra/newview/skins/default/xui/en/panel_performance_presets.xml new file mode 100644 index 0000000000..51516020a2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_performance_presets.xml @@ -0,0 +1,223 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + bevel_style="none" + follows="left|top" + height="490" + width="580" + name="panel_performance_presets" + layout="topleft" + left="0" + top="0"> + <button + height="16" + width="16" + layout="topleft" + mouse_opaque="true" + follows="left|top" + name="back_btn" + top="7" + image_selected="Arrow_Left_Off" + image_pressed="Arrow_Left_Off" + image_unselected="Arrow_Left_Off" + left="15" + is_toggle="true"> + </button> + <text + follows="left|top" + height="20" + layout="topleft" + left_pad="3" + top="10" + name="back_lbl" + width="40"> + Back + </text> + <text + follows="left|top" + font="SansSerifLarge" + text_color="White" + height="20" + layout="topleft" + left="20" + top_pad="10" + name="presets_title" + width="300"> + Quick settings + </text> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="5" + name="presets_desc" + width="580"> + Note: Quick settings will reset all manual changes you have made. + </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="top_border" + top_pad="12" + width="540"/> + <button + follows="top|left" + height="23" + label="Social" + label_color="White" + layout="topleft" + name="social" + top_pad="14" + width="130"> + </button> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="14" + name="social_desc1" + width="580"> + Tuned for many avatars in a room. + </text> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="5" + name="social_desc2" + width="180"> + Nearby avatar complexity is high. + </text> + <text + follows="left|top" + font="SansSerifSmall" + height="18" + layout="topleft" + left_pad="5" + name="avatars_nearby_link" + skip_link_underline="true" + width="200"> + [secondlife:/// Choose avatars to show and hide] + </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="social_border" + left="20" + top_pad="12" + width="540"/> + <button + follows="top|left" + height="23" + label="Outdoors" + label_color="White" + layout="topleft" + name="outdoors" + top_pad="14" + width="130"> + </button> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="14" + name="outdoors_desc" + width="580"> + Fewer avatars, higher visibility distance. + </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="outdoors_border" + top_pad="12" + width="540"/> + <button + follows="top|left" + height="23" + label="Maximum distance" + label_color="White" + layout="topleft" + name="max_distance" + top_pad="14" + width="130"> + </button> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="14" + name="max_distance_desc" + width="580"> + Good for zooming your camera far out and viewing large land areas. + </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="max_distance_border" + top_pad="12" + width="540"/> + <button + follows="top|left" + height="23" + label="Photography" + label_color="White" + layout="topleft" + name="photography" + top_pad="14" + width="130"> + </button> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="14" + name="photography_desc" + width="580"> + Maximum quality, minimum visibility distance. + </text> + <view_border + bevel_style="in" + height="0" + layout="topleft" + name="photography_border" + top_pad="12" + width="540"/> + <text + follows="left|top" + font="SansSerifSmall" + text_color="White" + height="18" + layout="topleft" + top_pad="14" + name="settings_desc" + width="110"> + For more control, try + </text> + <text + follows="left|top" + font="SansSerifSmall" + height="18" + layout="topleft" + left_pad="3" + name="settings_link" + skip_link_underline="true" + width="200"> + [secondlife:/// Idividual Settings] + </text> + +</panel> |