diff options
author | cosmic-linden <111533034+cosmic-linden@users.noreply.github.com> | 2024-01-22 09:16:12 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-22 09:16:12 -0800 |
commit | 2adecc6fac9852974e44e3d58ccf2619b45642a9 (patch) | |
tree | 0465739323a25c7d1457ed17e13a6db8a612ea0b /indra/newview/llreflectionmapmanager.cpp | |
parent | 09ee84f675cf08f98cbd49516c5e01c289b42a20 (diff) | |
parent | 42623ad81142f93290b31b380cc0f888a1c3c3b6 (diff) |
Merge pull request #658 from secondlife/SL-20606
SL-20606: PBR swatches in build floater should show entire material
Diffstat (limited to 'indra/newview/llreflectionmapmanager.cpp')
-rw-r--r-- | indra/newview/llreflectionmapmanager.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index 69674417c1..2b6985b214 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -27,6 +27,9 @@ #include "llviewerprecompiledheaders.h" #include "llreflectionmapmanager.h" + +#include <vector> + #include "llviewercamera.h" #include "llspatialpartition.h" #include "llviewerregion.h" @@ -1383,3 +1386,39 @@ void LLReflectionMapManager::doOcclusion() } } } + +void LLReflectionMapManager::forceDefaultProbeAndUpdateUniforms(bool force) +{ + static std::vector<bool> mProbeWasOccluded; + + if (force) + { + llassert(mProbeWasOccluded.empty()); + + for (size_t i = 0; i < mProbes.size(); ++i) + { + auto& probe = mProbes[i]; + mProbeWasOccluded.push_back(probe->mOccluded); + if (probe != nullptr && probe != mDefaultProbe) + { + probe->mOccluded = true; + } + } + + updateUniforms(); + } + else + { + llassert(mProbes.size() == mProbeWasOccluded.size()); + + const size_t n = llmin(mProbes.size(), mProbeWasOccluded.size()); + for (size_t i = 0; i < n; ++i) + { + auto& probe = mProbes[i]; + llassert(probe->mOccluded == (probe != mDefaultProbe)); + probe->mOccluded = mProbeWasOccluded[i]; + } + mProbeWasOccluded.clear(); + mProbeWasOccluded.shrink_to_fit(); + } +} |