Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/llfloaterspellchecksettings.h # indra/newview/llpaneleditwearable.cpp # indra/newview/llviewertexture.cpp # indra/newview/llviewertexture.hmaster
commit
76f2b1f48c
|
|
@ -1743,11 +1743,11 @@
|
|||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>755a3de464149ae88b048f976828a8c0c46e3bdb</string>
|
||||
<string>9e59c93c7110e87b4ff3db330f11a23c50e5000f</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/172966323</string>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/178910560</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1759,11 +1759,11 @@
|
|||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>813e7b5e294d7958e3d69e2252752ff346953b0c</string>
|
||||
<string>7ed994db5bafa9a7ad09a1b53da850a84715c65e</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/172966322</string>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/178910561</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1775,18 +1775,18 @@
|
|||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>67f647538b1b49d0152fd9d03cfb9bdf978e33d1</string>
|
||||
<string>66824c02e0e5eabbfbe37bfb173360195f89697c</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/172966328</string>
|
||||
<string>https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/178910562</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.0.b8b1f73</string>
|
||||
<string>1.0.66e6919</string>
|
||||
</map>
|
||||
<key>llphysicsextensions_stub</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ The PBR terrain texture transform flag should be set automatically when logging
|
|||
|
||||
When the PBR terrain texture transform feature is enabled, the UI of the Terrain tab should be overhauled. Availability of features depends on the type of terrain.
|
||||
|
||||
**Known issue:** The Region/Estate floater may have to be closed/reopened a second time in order for the UI overhaul to take effect, after teleporting between regions that do and do not have the feature flag set.
|
||||
|
||||
When "PBR Metallic Roughness" is checked:
|
||||
|
||||
- There should be a way for the user to change the texture transforms for the terrain in the current region
|
||||
|
|
|
|||
|
|
@ -31,8 +31,9 @@
|
|||
|
||||
#include "llexception.h"
|
||||
#include <boost/fiber/fss.hpp>
|
||||
#include <boost/fiber/future/promise.hpp>
|
||||
#include <boost/fiber/future/future.hpp>
|
||||
#include <boost/fiber/future/promise.hpp>
|
||||
#include <boost/fiber/recursive_mutex.hpp>
|
||||
#include "mutex.h"
|
||||
#include "llsingleton.h"
|
||||
#include "llinstancetracker.h"
|
||||
|
|
@ -307,6 +308,12 @@ public:
|
|||
|
||||
// use mutex, lock, condition_variable suitable for coroutines
|
||||
using Mutex = boost::fibers::mutex;
|
||||
using RMutex = boost::fibers::recursive_mutex;
|
||||
// With C++17, LockType is deprecated: at this point we can directly
|
||||
// declare 'std::unique_lock lk(some_mutex)' without explicitly stating
|
||||
// the mutex type. Sadly, making LockType an alias template for
|
||||
// std::unique_lock doesn't work the same way: Class Template Argument
|
||||
// Deduction only works for class templates, not alias templates.
|
||||
using LockType = std::unique_lock<Mutex>;
|
||||
using cv_status = boost::fibers::cv_status;
|
||||
using ConditionVariable = boost::fibers::condition_variable;
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
#include "llsingleton.h"
|
||||
#include "llstl.h"
|
||||
#include "lltimer.h"
|
||||
#include <boost/fiber/recursive_mutex.hpp>
|
||||
|
||||
// On Mac, got:
|
||||
// #error "Boost.Stacktrace requires `_Unwind_Backtrace` function. Define
|
||||
|
|
@ -512,7 +511,7 @@ namespace
|
|||
LLError::TimeFunction mTimeFunction;
|
||||
|
||||
Recorders mRecorders;
|
||||
boost::fibers::recursive_mutex mRecorderMutex;
|
||||
LLCoros::RMutex mRecorderMutex;
|
||||
|
||||
int mShouldLogCallCounter;
|
||||
|
||||
|
|
|
|||
|
|
@ -5511,7 +5511,11 @@ bool LLVolumeFace::cacheOptimize(bool gen_tangents)
|
|||
|
||||
U32 stream_count = data.w.empty() ? 4 : 5;
|
||||
|
||||
S32 vert_count = static_cast<S32>(meshopt_generateVertexRemapMulti(&remap[0], nullptr, data.p.size(), data.p.size(), mos, stream_count));
|
||||
S32 vert_count = 0;
|
||||
if (!data.p.empty())
|
||||
{
|
||||
vert_count = static_cast<S32>(meshopt_generateVertexRemapMulti(&remap[0], nullptr, data.p.size(), data.p.size(), mos, stream_count));
|
||||
}
|
||||
|
||||
if (vert_count < 65535 && vert_count != 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1385,7 +1385,7 @@ bool LLWindowWin32::switchContext(bool fullscreen, const LLCoordScreen& size, bo
|
|||
|
||||
gGLManager.initWGL();
|
||||
|
||||
if (wglChoosePixelFormatARB)
|
||||
if (wglChoosePixelFormatARB && wglGetPixelFormatAttribivARB)
|
||||
{
|
||||
// OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we
|
||||
// can get exactly what we want.
|
||||
|
|
|
|||
|
|
@ -12830,7 +12830,7 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>RenderTerrainPBREnabled</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>EXPERIMENTAL: Enable PBR Terrain features.</string>
|
||||
<string>Enable PBR Terrain features.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
|
|||
|
|
@ -991,6 +991,12 @@ bool Image::prep(Asset& asset)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!asset.mFilename.empty())
|
||||
{ // local preview, boost image so it doesn't discard and force to save raw image in case we save out or upload
|
||||
mTexture->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
|
||||
mTexture->forceToSaveRawImage(0, F32_MAX);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ struct MikktMesh
|
|||
|
||||
for (U32 tri_idx = 0; tri_idx < U32(triangle_count); ++tri_idx)
|
||||
{
|
||||
U32 idx[3];
|
||||
U32 idx[3] = {0, 0, 0};
|
||||
|
||||
if (prim->mMode == Primitive::Mode::TRIANGLES)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -148,6 +148,16 @@ void GLTFSceneManager::uploadSelection()
|
|||
raw = image.mTexture->getRawImage();
|
||||
}
|
||||
|
||||
if (raw.isNull())
|
||||
{
|
||||
raw = image.mTexture->getSavedRawImage();
|
||||
}
|
||||
|
||||
if (raw.isNull())
|
||||
{
|
||||
image.mTexture->readbackRawImage();
|
||||
}
|
||||
|
||||
if (raw.notNull())
|
||||
{
|
||||
LLPointer<LLImageJ2C> j2c = LLViewerTextureList::convertToUploadFile(raw);
|
||||
|
|
|
|||
|
|
@ -543,7 +543,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
|
|||
panel->getChild<LLUICtrl>("block_fly_over_check")->setValue(is_flag_set(region_flags, REGION_FLAGS_BLOCK_FLYOVER));
|
||||
panel->getChild<LLUICtrl>("allow_damage_check")->setValue(is_flag_set(region_flags, REGION_FLAGS_ALLOW_DAMAGE));
|
||||
panel->getChild<LLUICtrl>("restrict_pushobject")->setValue(is_flag_set(region_flags, REGION_FLAGS_RESTRICT_PUSHOBJECT));
|
||||
panel->getChild<LLUICtrl>("allow_land_resell_check")->setValue(is_flag_set(region_flags, REGION_FLAGS_BLOCK_LAND_RESELL));
|
||||
panel->getChild<LLUICtrl>("allow_land_resell_check")->setValue(!is_flag_set(region_flags, REGION_FLAGS_BLOCK_LAND_RESELL));
|
||||
panel->getChild<LLUICtrl>("allow_parcel_changes_check")->setValue(is_flag_set(region_flags, REGION_FLAGS_ALLOW_PARCEL_CHANGES));
|
||||
panel->getChild<LLUICtrl>("block_parcel_search_check")->setValue(is_flag_set(region_flags, REGION_FLAGS_BLOCK_PARCEL_SEARCH));
|
||||
panel->getChild<LLUICtrl>("agent_limit_spin")->setValue(LLSD((F32)agent_limit));
|
||||
|
|
|
|||
|
|
@ -67,7 +67,11 @@ bool LLFloaterSpellCheckerSettings::postBuild(void)
|
|||
LLSpellChecker::setSettingsChangeCallback(boost::bind(&LLFloaterSpellCheckerSettings::onSpellCheckSettingsChange, this));
|
||||
getChild<LLUICtrl>("spellcheck_remove_btn")->setCommitCallback(boost::bind(&LLFloaterSpellCheckerSettings::onBtnRemove, this));
|
||||
getChild<LLUICtrl>("spellcheck_import_btn")->setCommitCallback(boost::bind(&LLFloaterSpellCheckerSettings::onBtnImport, this));
|
||||
getChild<LLUICtrl>("spellcheck_main_combo")->setCommitCallback(boost::bind(&LLFloaterSpellCheckerSettings::refreshDictionaries, this, false));
|
||||
getChild<LLUICtrl>("spellcheck_main_combo")->setCommitCallback([this](LLUICtrl* ctrl, const LLSD& data)
|
||||
{
|
||||
mMainSelectionChanged = true;
|
||||
refreshDictionaries(false);
|
||||
});
|
||||
getChild<LLUICtrl>("spellcheck_moveleft_btn")->setCommitCallback(boost::bind(&LLFloaterSpellCheckerSettings::onBtnMove, this, "spellcheck_active_list", "spellcheck_available_list"));
|
||||
getChild<LLUICtrl>("spellcheck_moveright_btn")->setCommitCallback(boost::bind(&LLFloaterSpellCheckerSettings::onBtnMove, this, "spellcheck_available_list", "spellcheck_active_list"));
|
||||
center();
|
||||
|
|
@ -129,7 +133,7 @@ void LLFloaterSpellCheckerSettings::onBtnRemove()
|
|||
|
||||
void LLFloaterSpellCheckerSettings::onSpellCheckSettingsChange()
|
||||
{
|
||||
refreshDictionaries(true);
|
||||
refreshDictionaries(!mMainSelectionChanged);
|
||||
}
|
||||
|
||||
void LLFloaterSpellCheckerSettings::refreshDictionaries(bool from_settings)
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ protected:
|
|||
void onSpellCheckSettingsChange();
|
||||
void refreshDictionaries(bool from_settings);
|
||||
|
||||
bool mMainSelectionChanged{ false };
|
||||
|
||||
private:
|
||||
void commitChanges();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -411,7 +411,9 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
|
|||
// 4. Toast
|
||||
if ((("toast" == user_preferences) &&
|
||||
(ON_TOP_AND_ITEM_IS_SELECTED != conversations_floater_status) &&
|
||||
(!session_floater->isTornOff() || !LLFloater::isVisible(session_floater)))
|
||||
(!session_floater->isTornOff()
|
||||
|| session_floater->isMinimized()
|
||||
|| !LLFloater::isVisible(session_floater)))
|
||||
|| !session_floater->isMessagePaneExpanded())
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -304,14 +304,9 @@ LLEditWearableDictionary::Subparts::Subparts()
|
|||
addEntry(SUBPART_UNDERSHIRT, new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH));
|
||||
addEntry(SUBPART_UNDERPANTS, new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
|
||||
addEntry(SUBPART_SKIRT, new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH));
|
||||
// <FS:Ansariel> Alpha, tattoo and universal don't adhere to the usual panel layout and don't have a param list and main tab
|
||||
//addEntry(SUBPART_ALPHA, new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "alpha_main_param_list", "alpha_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
|
||||
//addEntry(SUBPART_TATTOO, new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "tattoo_main_param_list", "tattoo_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
|
||||
//addEntry(SUBPART_UNIVERSAL, new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "universal_main_param_list", "universal_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH));
|
||||
addEntry(SUBPART_ALPHA, new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "", "", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
|
||||
addEntry(SUBPART_TATTOO, new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "", "", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH));
|
||||
addEntry(SUBPART_UNIVERSAL, new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "", "", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH));
|
||||
// </FS:Ansariel>
|
||||
|
||||
// WT_PHYSIC
|
||||
addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));
|
||||
|
|
@ -821,19 +816,12 @@ bool LLPanelEditWearable::postBuild()
|
|||
continue;
|
||||
}
|
||||
|
||||
const std::string accordion_tab = subpart_entry->mAccordionTab;
|
||||
|
||||
// <FS:Ansariel> Alpha and tattoo don't adhere to the usual panel layout and don't have a param list and main tab
|
||||
// We can safely skip here as the wearables having no accordion tabs only have one sub-part,
|
||||
// so no camera switch is needed
|
||||
//LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab);
|
||||
const std::string& accordion_tab = subpart_entry->mAccordionTab;
|
||||
if (accordion_tab.empty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
LLAccordionCtrlTab *tab = findChild<LLAccordionCtrlTab>(accordion_tab);
|
||||
// </FS:Ansariel>
|
||||
|
||||
if (!tab)
|
||||
{
|
||||
LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;
|
||||
|
|
@ -1271,20 +1259,16 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, bool show, bo
|
|||
continue;
|
||||
}
|
||||
|
||||
const std::string scrolling_panel = subpart_entry->mParamList;
|
||||
const std::string accordion_tab = subpart_entry->mAccordionTab;
|
||||
const std::string& scrolling_panel = subpart_entry->mParamList;
|
||||
const std::string& accordion_tab = subpart_entry->mAccordionTab;
|
||||
|
||||
// <FS:Ansariel> Alpha and tattoo don't adhere to the usual panel layout and don't have a param list and main tab
|
||||
// Since there are no sex-based differences, we can skip here
|
||||
if (scrolling_panel.empty() || accordion_tab.empty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel);
|
||||
LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab);
|
||||
|
||||
LLScrollingPanelList *panel_list = findChild<LLScrollingPanelList>(scrolling_panel);
|
||||
LLAccordionCtrlTab *tab = findChild<LLAccordionCtrlTab>(accordion_tab);
|
||||
if (!panel_list)
|
||||
{
|
||||
LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -337,8 +337,8 @@ void LLSetKeyBindDialog::onCancel(void* user_data)
|
|||
void LLSetKeyBindDialog::onBlank(void* user_data)
|
||||
{
|
||||
LLSetKeyBindDialog* self = (LLSetKeyBindDialog*)user_data;
|
||||
// tmp needs 'no key' button
|
||||
self->setKeyBind(CLICK_NONE, KEY_NONE, MASK_NONE, false);
|
||||
|
||||
self->setKeyBind(CLICK_NONE, KEY_NONE, MASK_NONE, self->pCheckBox->getValue().asBoolean());
|
||||
self->closeFloater();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1683,6 +1683,11 @@ void render_ui_3d()
|
|||
gObjectList.resetObjectBeacons();
|
||||
gSky.addSunMoonBeacons();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure particle effects disappear
|
||||
LLHUDObject::renderAllForTimer();
|
||||
}
|
||||
|
||||
stop_glerror();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3382,6 +3382,13 @@ void LLViewerRegion::unpackRegionHandshake()
|
|||
compp->setParamsReady();
|
||||
}
|
||||
|
||||
std::string cap = getCapability("ModifyRegion"); // needed for queueQuery
|
||||
if (cap.empty())
|
||||
{
|
||||
LLFloaterRegionInfo::sRefreshFromRegion(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLPBRTerrainFeatures::queueQuery(*this, [](LLUUID region_id, bool success, const LLModifyRegion& composition_changes)
|
||||
{
|
||||
if (!success) { return; }
|
||||
|
|
@ -3393,6 +3400,7 @@ void LLViewerRegion::unpackRegionHandshake()
|
|||
LLFloaterRegionInfo::sRefreshFromRegion(region);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Now that we have the name, we can load the cache file
|
||||
|
|
|
|||
|
|
@ -63,31 +63,21 @@
|
|||
#include "llwindow.h"
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "llmimetypes.h"
|
||||
|
||||
// extern
|
||||
const S32Megabytes gMinVideoRam(32);
|
||||
// <FS:Ansariel> Texture memory management
|
||||
//const S32Megabytes gMaxVideoRam(512);
|
||||
S32Megabytes gMaxVideoRam(512);
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
||||
// statics
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sNullImagep = NULL;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sBlackImagep = NULL;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sCheckerBoardImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sMissingAssetImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sWhiteImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sSmokeImagep = NULL;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sFlatNormalImagep = NULL;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sNullImagep = nullptr;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sBlackImagep = nullptr;
|
||||
LLPointer<LLViewerTexture> LLViewerTexture::sCheckerBoardImagep = nullptr;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sMissingAssetImagep = nullptr;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sWhiteImagep = nullptr;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultImagep = nullptr;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sSmokeImagep = nullptr;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sFlatNormalImagep = nullptr;
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultIrradiancePBRp;
|
||||
// [SL:KB] - Patch: Render-TextureToggle (Catznip-4.0)
|
||||
LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultDiffuseImagep = NULL;
|
||||
// [/SL:KB]
|
||||
LLViewerMediaTexture::media_map_t LLViewerMediaTexture::sMediaMap;
|
||||
LLTexturePipelineTester* LLViewerTextureManager::sTesterp = NULL;
|
||||
LLTexturePipelineTester* LLViewerTextureManager::sTesterp = nullptr;
|
||||
F32 LLViewerFetchedTexture::sMaxVirtualSize = 8192.f*8192.f;
|
||||
|
||||
const std::string sTesterName("TextureTester");
|
||||
|
|
@ -99,11 +89,11 @@ LLFrameTimer LLViewerTexture::sEvaluationTimer;
|
|||
F32 LLViewerTexture::sDesiredDiscardBias = 0.f;
|
||||
|
||||
S32 LLViewerTexture::sMaxSculptRez = 128; //max sculpt image size
|
||||
const S32 MAX_CACHED_RAW_IMAGE_AREA = 64 * 64;
|
||||
constexpr S32 MAX_CACHED_RAW_IMAGE_AREA = 64 * 64;
|
||||
const S32 MAX_CACHED_RAW_SCULPT_IMAGE_AREA = LLViewerTexture::sMaxSculptRez * LLViewerTexture::sMaxSculptRez;
|
||||
const S32 MAX_CACHED_RAW_TERRAIN_IMAGE_AREA = 128 * 128;
|
||||
const S32 DEFAULT_ICON_DIMENSIONS = 32;
|
||||
const S32 DEFAULT_THUMBNAIL_DIMENSIONS = 256;
|
||||
constexpr S32 MAX_CACHED_RAW_TERRAIN_IMAGE_AREA = 128 * 128;
|
||||
constexpr S32 DEFAULT_ICON_DIMENSIONS = 32;
|
||||
constexpr S32 DEFAULT_THUMBNAIL_DIMENSIONS = 256;
|
||||
U32 LLViewerTexture::sMinLargeImageSize = 65536; //256 * 256.
|
||||
U32 LLViewerTexture::sMaxSmallImageSize = MAX_CACHED_RAW_IMAGE_AREA;
|
||||
bool LLViewerTexture::sFreezeImageUpdates = false;
|
||||
|
|
|
|||
|
|
@ -42,12 +42,6 @@
|
|||
#include <map>
|
||||
#include <list>
|
||||
|
||||
extern const S32Megabytes gMinVideoRam;
|
||||
// <FS:Ansariel> Texture memory management
|
||||
//extern const S32Megabytes gMaxVideoRam;
|
||||
extern S32Megabytes gMaxVideoRam;
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Max texture resolution
|
||||
extern U32 DESIRED_NORMAL_TEXTURE_SIZE;
|
||||
|
||||
|
|
|
|||
|
|
@ -939,6 +939,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
}
|
||||
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
|
||||
bool onFace = false;
|
||||
for (U32 i = 0; i < LLRender::NUM_TEXTURE_CHANNELS; ++i)
|
||||
{
|
||||
for (S32 fi = 0; fi < imagep->getNumFaces(i); ++fi)
|
||||
|
|
@ -947,6 +948,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
|
||||
if (face && face->getViewerObject())
|
||||
{
|
||||
onFace = true;
|
||||
F32 radius;
|
||||
F32 cos_angle_to_view_dir;
|
||||
bool in_frustum = face->calcPixelArea(cos_angle_to_view_dir, radius);
|
||||
|
|
@ -1044,6 +1046,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
imagep->getLastReferencedTimer()->reset();
|
||||
|
||||
//reset texture state.
|
||||
if(!onFace)
|
||||
imagep->setInactive();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -235,8 +235,8 @@ public:
|
|||
bool mForceResetTextureStats;
|
||||
|
||||
// to make "for (auto& imagep : gTextureList)" work
|
||||
const image_list_t::iterator begin() const { return mImageList.begin(); }
|
||||
const image_list_t::iterator end() const { return mImageList.end(); }
|
||||
const image_list_t::const_iterator begin() const { return mImageList.cbegin(); }
|
||||
const image_list_t::const_iterator end() const { return mImageList.cend(); }
|
||||
|
||||
// <FS:Ansariel> Fast cache stats
|
||||
static U32 sNumFastCacheReads;
|
||||
|
|
|
|||
|
|
@ -1024,7 +1024,7 @@ bool LLVOAvatarSelf::isValid() const
|
|||
// virtual
|
||||
void LLVOAvatarSelf::idleUpdate(LLAgent &agent, const F64 &time)
|
||||
{
|
||||
if (isValid())
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
LLVOAvatar::idleUpdate(agent, time);
|
||||
idleUpdateTractorBeam();
|
||||
|
|
@ -1771,7 +1771,7 @@ bool LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
|
|||
// Make sure the inventory is in sync with the avatar.
|
||||
|
||||
// Update COF contents, don't trigger appearance update.
|
||||
if (!isValid())
|
||||
if (!isAgentAvatarValid())
|
||||
{
|
||||
LL_INFOS() << "removeItemLinks skipped, avatar is under destruction" << LL_ENDL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ private:
|
|||
public:
|
||||
/*virtual*/ bool isSelf() const { return true; }
|
||||
virtual bool isBuddy() const { return false; }
|
||||
/*virtual*/ bool isValid() const;
|
||||
/*virtual*/ bool isValid() const; // use isAgentAvatarValid, it's fuller
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Updates
|
||||
|
|
|
|||
Loading…
Reference in New Issue