SL-18202 impostor too slow avatars and add autotune settings button to Preference

master
Mnikolenko Productengine 2022-09-27 19:35:49 +03:00
parent 3098d315a3
commit dcd74c98dc
8 changed files with 43 additions and 11 deletions

View File

@ -170,6 +170,11 @@ void LLFloaterPerformance::showSelectedPanel(LLPanel* selected_panel)
}
}
void LLFloaterPerformance::showAutoadjustmentsPanel()
{
showSelectedPanel(mAutoadjustmentsPanel);
}
void LLFloaterPerformance::draw()
{
if (mUpdateTimer->hasExpired())

View File

@ -44,6 +44,7 @@ public:
void showSelectedPanel(LLPanel* selected_panel);
void showMainPanel();
void hidePanels();
void showAutoadjustmentsPanel();
void detachItem(const LLUUID& item_id);

View File

@ -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");

View File

@ -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);

View File

@ -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;
}

View File

@ -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 ";

View File

@ -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();

View File

@ -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"