Skip to content

Commit 5f6dce2

Browse files
committed
Merge remote-tracking branch 'origin/release/2024.12-ForeverFPS' into develop (#3352)
# Conflicts: # indra/newview/pipeline.cpp
2 parents e6f4de7 + edebc8f commit 5f6dce2

File tree

11 files changed

+93
-48
lines changed

11 files changed

+93
-48
lines changed

indra/llinventory/llsettingssky.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,43 +2032,43 @@ F32 LLSettingsSky::getGamma() const
20322032
return mGamma;
20332033
}
20342034

2035-
F32 LLSettingsSky::getHDRMin() const
2035+
F32 LLSettingsSky::getHDRMin(bool auto_adjust) const
20362036
{
2037-
if (mCanAutoAdjust)
2037+
if (mCanAutoAdjust && !auto_adjust)
20382038
return 0.f;
20392039

20402040
return mHDRMin;
20412041
}
20422042

2043-
F32 LLSettingsSky::getHDRMax() const
2043+
F32 LLSettingsSky::getHDRMax(bool auto_adjust) const
20442044
{
2045-
if (mCanAutoAdjust)
2045+
if (mCanAutoAdjust && !auto_adjust)
20462046
return 0.f;
20472047

20482048
return mHDRMax;
20492049
}
20502050

2051-
F32 LLSettingsSky::getHDROffset() const
2051+
F32 LLSettingsSky::getHDROffset(bool auto_adjust) const
20522052
{
2053-
if (mCanAutoAdjust)
2053+
if (mCanAutoAdjust && !auto_adjust)
20542054
return 1.0f;
20552055

20562056
return mHDROffset;
20572057
}
20582058

2059-
F32 LLSettingsSky::getTonemapMix() const
2059+
F32 LLSettingsSky::getTonemapMix(bool auto_adjust) const
20602060
{
2061-
if (mCanAutoAdjust)
2061+
if (mCanAutoAdjust && !auto_adjust)
2062+
{
2063+
// legacy settings do not support tonemaping
20622064
return 0.0f;
2065+
}
20632066

20642067
return mTonemapMix;
20652068
}
20662069

20672070
void LLSettingsSky::setTonemapMix(F32 mix)
20682071
{
2069-
if (mCanAutoAdjust)
2070-
return;
2071-
20722072
mTonemapMix = mix;
20732073
}
20742074

indra/llinventory/llsettingssky.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,10 @@ class LLSettingsSky: public LLSettingsBase
209209

210210
F32 getGamma() const;
211211

212-
F32 getHDRMin() const;
213-
F32 getHDRMax() const;
214-
F32 getHDROffset() const;
215-
F32 getTonemapMix() const;
212+
F32 getHDRMin(bool auto_adjust = false) const;
213+
F32 getHDRMax(bool auto_adjust = false) const;
214+
F32 getHDROffset(bool auto_adjust = false) const;
215+
F32 getTonemapMix(bool auto_adjust = false) const;
216216
void setTonemapMix(F32 mix);
217217

218218
void setGamma(F32 val);

indra/llui/llfolderview.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ class LLSaveFolderState : public LLFolderViewFunctor
414414
virtual void doItem(LLFolderViewItem* item) {}
415415
void setApply(bool apply);
416416
void clearOpenFolders() { mOpenFolders.clear(); }
417+
bool hasOpenFolders() { return !mOpenFolders.empty(); }
417418
protected:
418419
std::set<LLUUID> mOpenFolders;
419420
bool mApply;

indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ uniform float max_probe_lod;
3838

3939
uniform bool transparent_surface;
4040

41+
uniform int classic_mode;
42+
4143
#define MAX_REFMAP_COUNT 256 // must match LL_MAX_REFLECTION_PROBE_COUNT
4244

4345
layout (std140) uniform ReflectionProbes
@@ -739,7 +741,10 @@ void doProbeSample(inout vec3 ambenv, inout vec3 glossenv,
739741

740742
vec3 refnormpersp = reflect(pos.xyz, norm.xyz);
741743

742-
ambenv = sampleProbeAmbient(pos, norm, amblit);
744+
ambenv = amblit;
745+
746+
if (classic_mode == 0)
747+
ambenv = sampleProbeAmbient(pos, norm, amblit);
743748

744749
float lod = (1.0-glossiness)*reflection_lods;
745750
glossenv = sampleProbes(pos, normalize(refnormpersp), lod);
@@ -845,7 +850,10 @@ void sampleReflectionProbesLegacy(out vec3 ambenv, out vec3 glossenv, out vec3 l
845850

846851
vec3 refnormpersp = reflect(pos.xyz, norm.xyz);
847852

848-
ambenv = sampleProbeAmbient(pos, norm, amblit);
853+
ambenv = amblit;
854+
855+
if (classic_mode == 0)
856+
ambenv = sampleProbeAmbient(pos, norm, amblit);
849857

850858
if (glossiness > 0.0)
851859
{

indra/newview/llpanelcontents.cpp

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -139,32 +139,60 @@ void LLPanelContents::getState(LLViewerObject *objectp )
139139
void LLPanelContents::onFilterEdit()
140140
{
141141
const std::string& filter_substring = mFilterEditor->getText();
142-
if (filter_substring.empty())
142+
if (!mPanelInventoryObject->hasInventory())
143143
{
144-
if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
145-
{
146-
// The current filter and the new filter are empty, nothing to do
147-
return;
148-
}
149-
150-
mSavedFolderState.setApply(true);
151-
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
152-
153-
// Add a folder with the current item to the list of previously opened folders
154-
LLOpenFoldersWithSelection opener;
155-
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(opener);
156-
mPanelInventoryObject->getRootFolder()->scrollToShowSelection();
144+
mDirtyFilter = true;
157145
}
158-
else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
146+
else
159147
{
160-
// The first letter in search term, save existing folder open state
161-
if (!mPanelInventoryObject->getFilter().isNotDefault())
148+
LLFolderView* root_folder = mPanelInventoryObject->getRootFolder();
149+
if (filter_substring.empty())
162150
{
163-
mSavedFolderState.setApply(false);
164-
mPanelInventoryObject->getRootFolder()->applyFunctorRecursively(mSavedFolderState);
151+
if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
152+
{
153+
// The current filter and the new filter are empty, nothing to do
154+
return;
155+
}
156+
157+
if (mDirtyFilter && !mSavedFolderState.hasOpenFolders())
158+
{
159+
if (root_folder)
160+
{
161+
root_folder->setOpenArrangeRecursively(true, LLFolderViewFolder::ERecurseType::RECURSE_DOWN);
162+
}
163+
}
164+
else
165+
{
166+
mSavedFolderState.setApply(true);
167+
if (root_folder)
168+
{
169+
root_folder->applyFunctorRecursively(mSavedFolderState);
170+
}
171+
}
172+
mDirtyFilter = false;
173+
174+
// Add a folder with the current item to the list of previously opened folders
175+
if (root_folder)
176+
{
177+
LLOpenFoldersWithSelection opener;
178+
root_folder->applyFunctorRecursively(opener);
179+
root_folder->scrollToShowSelection();
180+
}
181+
}
182+
else if (mPanelInventoryObject->getFilter().getFilterSubString().empty())
183+
{
184+
// The first letter in search term, save existing folder open state
185+
if (!mPanelInventoryObject->getFilter().isNotDefault())
186+
{
187+
mSavedFolderState.setApply(false);
188+
if (root_folder)
189+
{
190+
root_folder->applyFunctorRecursively(mSavedFolderState);
191+
}
192+
mDirtyFilter = false;
193+
}
165194
}
166195
}
167-
168196
mPanelInventoryObject->getFilter().setFilterSubString(filter_substring);
169197
}
170198

indra/newview/llpanelcontents.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class LLPanelContents : public LLPanel
7070
void getState(LLViewerObject *object);
7171
void onFilterEdit();
7272

73+
bool mDirtyFilter { false };
74+
7375
public:
7476
class LLFilterEditor* mFilterEditor;
7577
LLSaveFolderState mSavedFolderState;

indra/newview/llpanelobjectinventory.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ class LLPanelObjectInventory : public LLPanel, public LLVOInventoryListener
8585

8686
static void idle(void* user_data);
8787

88+
bool hasInventory(){ return mHaveInventory; };
89+
8890
protected:
8991
void reset();
9092
/*virtual*/ void inventoryChanged(LLViewerObject* object,

indra/newview/llsettingsvo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,7 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)
807807
static LLCachedControl<F32> tonemap_mix_setting(gSavedSettings, "RenderTonemapMix", 1.f);
808808

809809
// sky is a "classic" sky following pre SL 7.0 shading
810-
bool classic_mode = psky->canAutoAdjust();
810+
bool classic_mode = psky->canAutoAdjust() && !should_auto_adjust();
811811

812812
if (!classic_mode)
813813
{

indra/newview/llstartup.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1505,7 +1505,7 @@ bool idle_startup()
15051505
// create a container's instance for start a controlling conversation windows
15061506
// by the voice's events
15071507
LLFloaterIMContainer *im_inst = LLFloaterIMContainer::getInstance();
1508-
if(gAgent.isFirstLogin())
1508+
if(gAgent.isFirstLogin() && im_inst)
15091509
{
15101510
im_inst->openFloater(im_inst->getKey());
15111511
}

indra/newview/llvovolume.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -647,8 +647,12 @@ void LLVOVolume::animateTextures()
647647
// LLVOVolume::updateTextureVirtualSize when the
648648
// mTextureMatrix is not yet present
649649
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD);
650-
mDrawable->getSpatialGroup()->dirtyGeom();
651-
gPipeline.markRebuild(mDrawable->getSpatialGroup());
650+
LLSpatialGroup* group = mDrawable->getSpatialGroup();
651+
if (group)
652+
{
653+
group->dirtyGeom();
654+
gPipeline.markRebuild(group);
655+
}
652656
}
653657
}
654658

0 commit comments

Comments
 (0)