summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMnikolenko Productengine <mnikolenko@productengine.com>2022-09-27 19:35:49 +0300
committerMnikolenko Productengine <mnikolenko@productengine.com>2022-09-27 19:35:49 +0300
commitdcd74c98dc5ab1373f1e7f692fd30dee92472acf (patch)
tree79feefc4097ae6770162e5ee28aa5fc99b2c1849 /indra
parent3098d315a34f6d9e1bdf0f0de4e695a89626282f (diff)
SL-18202 impostor too slow avatars and add autotune settings button to Preference
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llfloaterperformance.cpp5
-rw-r--r--indra/newview/llfloaterperformance.h1
-rw-r--r--indra/newview/llfloaterpreference.cpp15
-rw-r--r--indra/newview/llfloaterpreference.h1
-rw-r--r--indra/newview/llviewerpartsim.cpp2
-rw-r--r--indra/newview/llvoavatar.cpp8
-rw-r--r--indra/newview/pipeline.cpp8
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml14
8 files changed, 43 insertions, 11 deletions
diff --git a/indra/newview/llfloaterperformance.cpp b/indra/newview/llfloaterperformance.cpp
index da1670c15e..e79e9d19b1 100644
--- a/indra/newview/llfloaterperformance.cpp
+++ b/indra/newview/llfloaterperformance.cpp
@@ -170,6 +170,11 @@ void LLFloaterPerformance::showSelectedPanel(LLPanel* selected_panel)
}
}
+void LLFloaterPerformance::showAutoadjustmentsPanel()
+{
+ showSelectedPanel(mAutoadjustmentsPanel);
+}
+
void LLFloaterPerformance::draw()
{
if (mUpdateTimer->hasExpired())
diff --git a/indra/newview/llfloaterperformance.h b/indra/newview/llfloaterperformance.h
index a79da7460b..09bcd18bb5 100644
--- a/indra/newview/llfloaterperformance.h
+++ b/indra/newview/llfloaterperformance.h
@@ -44,6 +44,7 @@ public:
void showSelectedPanel(LLPanel* selected_panel);
void showMainPanel();
void hidePanels();
+ void showAutoadjustmentsPanel();
void detachItem(const LLUUID& item_id);
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index e9d5a8e02c..179f70a4a7 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -51,6 +51,7 @@
#include "llfloaterabout.h"
#include "llfavoritesbar.h"
#include "llfloaterpreferencesgraphicsadvanced.h"
+#include "llfloaterperformance.h"
#include "llfloatersidepanelcontainer.h"
#include "llfloaterimsession.h"
#include "llkeyboard.h"
@@ -287,6 +288,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.ClickDisablePopup", boost::bind(&LLFloaterPreference::onClickDisablePopup, this));
mCommitCallbackRegistrar.add("Pref.LogPath", boost::bind(&LLFloaterPreference::onClickLogPath, this));
mCommitCallbackRegistrar.add("Pref.RenderExceptions", boost::bind(&LLFloaterPreference::onClickRenderExceptions, this));
+ mCommitCallbackRegistrar.add("Pref.AutoAdjustments", boost::bind(&LLFloaterPreference::onClickAutoAdjustments, this));
mCommitCallbackRegistrar.add("Pref.HardwareDefaults", boost::bind(&LLFloaterPreference::setHardwareDefaults, this));
mCommitCallbackRegistrar.add("Pref.AvatarImpostorsEnable", boost::bind(&LLFloaterPreference::onAvatarImpostorsEnable, this));
mCommitCallbackRegistrar.add("Pref.UpdateIndirectMaxComplexity", boost::bind(&LLFloaterPreference::updateMaxComplexity, this));
@@ -726,13 +728,15 @@ void LLFloaterPreference::onOpen(const LLSD& key)
LLButton* save_btn = findChild<LLButton>("PrefSaveButton");
LLButton* delete_btn = findChild<LLButton>("PrefDeleteButton");
LLButton* exceptions_btn = findChild<LLButton>("RenderExceptionsButton");
+ LLButton* auto_adjustments_btn = findChild<LLButton>("AutoAdjustmentsButton");
- if (load_btn && save_btn && delete_btn && exceptions_btn)
+ if (load_btn && save_btn && delete_btn && exceptions_btn && auto_adjustments_btn)
{
load_btn->setEnabled(started);
save_btn->setEnabled(started);
delete_btn->setEnabled(started);
exceptions_btn->setEnabled(started);
+ auto_adjustments_btn->setEnabled(started);
}
collectSearchableItems();
@@ -1655,6 +1659,15 @@ void LLFloaterPreference::onClickRenderExceptions()
LLFloaterReg::showInstance("avatar_render_settings");
}
+void LLFloaterPreference::onClickAutoAdjustments()
+{
+ LLFloaterPerformance* performance_floater = LLFloaterReg::showTypedInstance<LLFloaterPerformance>("performance");
+ if (performance_floater)
+ {
+ performance_floater->showAutoadjustmentsPanel();
+ }
+}
+
void LLFloaterPreference::onClickAdvanced()
{
LLFloaterReg::showInstance("prefs_graphics_advanced");
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 94aac56506..1079b41000 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -185,6 +185,7 @@ public:
void onClickAutoReplace();
void onClickSpellChecker();
void onClickRenderExceptions();
+ void onClickAutoAdjustments();
void onClickAdvanced();
void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
void getUIColor(LLUICtrl* ctrl, const LLSD& param);
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index e5265f1dcd..a440f3232a 100644
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -716,7 +716,7 @@ void LLViewerPartSim::updateSimulation()
if (upd && vobj && (vobj->getPCode() == LL_PCODE_VOLUME))
{
- if(vobj->getAvatar() && vobj->getAvatar()->isTooComplex())
+ if(vobj->getAvatar() && vobj->getAvatar()->isTooComplex() && vobj->getAvatar()->isTooSlowWithShadows())
{
upd = FALSE;
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 1a71780a88..976b69502f 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3136,7 +3136,7 @@ void LLVOAvatar::idleUpdateLoadingEffect()
LLPartData::LL_PART_TARGET_POS_MASK );
// do not generate particles for dummy or overly-complex avatars
- if (!mIsDummy && !isTooComplex())
+ if (!mIsDummy && !isTooComplex() && !isTooSlowWithShadows())
{
setParticleSource(particle_parameters, getID());
}
@@ -3717,7 +3717,7 @@ bool LLVOAvatar::isVisuallyMuted()
}
else
{
- muted = isTooComplex();
+ muted = isTooComplex() || isTooSlowWithShadows();
}
}
@@ -11174,7 +11174,7 @@ LLVOAvatar::AvatarOverallAppearance LLVOAvatar::getOverallAppearance() const
{ // Always want to see this AV as an impostor
result = AOA_JELLYDOLL;
}
- else if (isTooComplex())
+ else if (isTooComplex() || isTooSlowWithShadows())
{
result = AOA_JELLYDOLL;
}
@@ -11201,7 +11201,7 @@ void LLVOAvatar::calcMutedAVColor()
new_color = LLColor4::grey4;
change_msg = " blocked: color is grey4";
}
- else if (!isTooComplex())
+ else if (!isTooComplex() && !isTooSlowWithShadows())
{
new_color = LLColor4::white;
change_msg = " simple imposter ";
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 3110a1cbe5..ba5e35fd3e 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -132,7 +132,7 @@
// NOTE: Keep in sync with indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
// NOTE: Unused consts are commented out since some compilers (on macOS) may complain about unused variables.
- const S32 WATER_REFLECT_NONE_WATER_OPAQUE = -2;
+// const S32 WATER_REFLECT_NONE_WATER_OPAQUE = -2;
const S32 WATER_REFLECT_NONE_WATER_TRANSPARENT = -1;
const S32 WATER_REFLECT_MINIMAL = 0;
// const S32 WATER_REFLECT_TERRAIN = 1;
@@ -5993,7 +5993,7 @@ void LLPipeline::calcNearbyLights(LLCamera& camera)
LLDrawable* drawable = light->drawable;
const LLViewerObject *vobj = light->drawable->getVObj();
if(vobj && vobj->getAvatar()
- && (vobj->getAvatar()->isTooComplex() || vobj->getAvatar()->isInMuteList())
+ && (vobj->getAvatar()->isTooComplex() || vobj->getAvatar()->isInMuteList() || vobj->getAvatar()->isTooSlowWithShadows())
)
{
drawable->clearState(LLDrawable::NEARBY_LIGHT);
@@ -6072,7 +6072,7 @@ void LLPipeline::calcNearbyLights(LLCamera& camera)
continue;
}
LLVOAvatar * av = light->getAvatar();
- if (av && (av->isTooComplex() || av->isInMuteList()))
+ if (av && (av->isTooComplex() || av->isInMuteList() || av->isTooSlowWithShadows()))
{
// avatars that are already in the list will be removed by removeMutedAVsLights
continue;
@@ -10850,7 +10850,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar, bool preview_avatar)
<< " is " << ( too_complex ? "" : "not ") << "too complex"
<< LL_ENDL;
- bool too_slow = avatar->isTooSlowWithoutShadows(); // only if we really have to do we imposter.
+ bool too_slow = avatar->isTooSlowWithShadows();
pushRenderTypeMask();
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 5aff7a5127..ad02df3087 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -258,6 +258,18 @@
<check_box.commit_callback
function="Pref.RenderOptionUpdate" />
</check_box>
+
+ <button
+ height="23"
+ label="Automatic adjustments settings"
+ layout="topleft"
+ left="30"
+ name="AutoAdjustmentsButton"
+ top_delta="30"
+ width="200">
+ <button.commit_callback
+ function="Pref.AutoAdjustments"/>
+ </button>
<slider
control_name="IndirectMaxComplexity"
@@ -274,7 +286,7 @@
max_val="101"
name="IndirectMaxComplexity"
show_text="false"
- top_delta="60"
+ top_delta="40"
width="300">
<slider.commit_callback
function="Pref.UpdateIndirectMaxComplexity"