Merge remote-tracking branch 'LGPL/master'

master
Ansariel 2024-05-13 17:39:18 +02:00
commit 570810074d
85 changed files with 1507 additions and 678 deletions

View File

@ -1182,8 +1182,10 @@ bool LLGLManager::initGL()
// This is called here because it depends on the setting of mIsGF2or4MX, and sets up mHasMultitexture.
initExtensions();
S32 old_vram = mVRAM;
mVRAM = 0;
// <FS:Beq> stop doing this and trust the hardware detection
// if hardware detection has all failed the this will correct for that
// S32 old_vram = mVRAM;
// mVRAM = 0;
#if LL_WINDOWS
if (mHasAMDAssociations)
@ -1216,22 +1218,26 @@ bool LLGLManager::initGL()
}
#endif
#if LL_WINDOWS
if (mVRAM < 256)
{
// Something likely went wrong using the above extensions
// try WMI first and fall back to old method (from dxdiag) if all else fails
// Function will check all GPUs WMI knows of and will pick up the one with most
// memory. We need to check all GPUs because system can switch active GPU to
// weaker one, to preserve power when not under load.
S32 mem = LLDXHardware::getMBVideoMemoryViaWMI();
if (mem != 0)
{
mVRAM = mem;
LL_WARNS("RenderInit") << "VRAM Detected (WMI):" << mVRAM<< LL_ENDL;
}
}
#endif
// <FS:Beq> remove this so that we can attempt to use driver specifics
// if it fails we will pick up the `old_vram` value , which is either WMI or the combined dxdiag number
// both of which are rather useless, but it does at least respect the disable_wmi setting.
// #if LL_WINDOWS
// if (mVRAM < 256)
// {
// // Something likely went wrong using the above extensions
// // try WMI first and fall back to old method (from dxdiag) if all else fails
// // Function will check all GPUs WMI knows of and will pick up the one with most
// // memory. We need to check all GPUs because system can switch active GPU to
// // weaker one, to preserve power when not under load.
// S32 mem = LLDXHardware::getMBVideoMemoryViaWMI();
// if (mem != 0)
// {
// mVRAM = mem;
// LL_WARNS("RenderInit") << "VRAM Detected (WMI):" << mVRAM<< LL_ENDL;
// }
// }
// #endif
// </FS:Beq>
// Ultimate fallbacks for linux and mesa
if (mHasNVXMemInfo && mVRAM == 0)
@ -1250,18 +1256,18 @@ bool LLGLManager::initGL()
mVRAM = meminfo[0] / 1024;
LL_INFOS("RenderInit") << "VRAM Detected (ATIMemInfo):" << mVRAM << LL_ENDL;
}
// <FS:Beq> stop doing this and trust the hardware detection
// if (mVRAM < 256 && old_vram > 0)
// {
// // fall back to old method
// // Note: on Windows value will be from LLDXHardware.
// // Either received via dxdiag or via WMI by id from dxdiag.
// mVRAM = old_vram;
if (mVRAM < 256 && old_vram > 0)
{
// fall back to old method
// Note: on Windows value will be from LLDXHardware.
// Either received via dxdiag or via WMI by id from dxdiag.
mVRAM = old_vram;
// <FS:Ansariel> VRAM detection logging
LL_WARNS("RenderInit") << "VRAM detected via MemInfo OpenGL extension most likely broken. Reverting to " << mVRAM << " MB" << LL_ENDL;
}
// // <FS:Ansariel> VRAM detection logging
// LL_WARNS("RenderInit") << "VRAM detected via MemInfo OpenGL extension most likely broken. Reverting to " << mVRAM << " MB" << LL_ENDL;
// }
// </FS:Beq>
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &mNumTextureImageUnits);
glGetIntegerv(GL_MAX_COLOR_TEXTURE_SAMPLES, &mMaxColorTextureSamples);
glGetIntegerv(GL_MAX_DEPTH_TEXTURE_SAMPLES, &mMaxDepthTextureSamples);

View File

@ -40,6 +40,7 @@
#include <boost/tokenizer.hpp>
#include "lldxhardware.h"
#include <dxgi.h>
#include "llerror.h"
@ -61,6 +62,42 @@ typedef BOOL ( WINAPI* PfnCoSetProxyBlanket )( IUnknown* pProxy, DWORD dwAuthnSv
OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel,
RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities );
// <FS:Beq> Deprecate WMI support
uint64_t GetVideoMemoryViaDXGI()
{
HRESULT hr;
IDXGIFactory* pFactory = nullptr;
IDXGIAdapter* pAdapter = nullptr;
// Create a DXGI Factory
hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pFactory);
if (FAILED(hr)) {
std::cerr << "Failed to create DXGI factory." << std::endl;
return 0;
}
// Enumerate adapters
UINT i = 0;
uint64_t vram_bytes = 0;
while (pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND)
{
if(pAdapter)
{
DXGI_ADAPTER_DESC desc;
pAdapter->GetDesc(&desc);
vram_bytes = desc.DedicatedVideoMemory;
break;
}
SAFE_RELEASE(pAdapter);
++i;
}
SAFE_RELEASE(pAdapter)
SAFE_RELEASE(pFactory)
return vram_bytes;
}
// </FS:Beq>
HRESULT GetVideoMemoryViaWMI(WCHAR* strInputDeviceID, DWORD* pdwAdapterRam)
{
HRESULT hr;
@ -803,6 +840,10 @@ BOOL LLDXHardware::getInfo(BOOL vram_only, bool disable_wmi)
LL_INFOS("AppInit") << "VRAM Detected via WMI: " << mVRAM << LL_ENDL;
}
}
// <FS:Beq> Deprecate WMI use DXGI in preference.
mVRAM = GetVideoMemoryViaDXGI()/1024/1024;
LL_INFOS("AppInit") << "VRAM Detected via DXGI: " << mVRAM << "MB" << LL_ENDL;
// </FS:Beq>
if (mVRAM == 0)
{ // Get the English VRAM string

View File

@ -4914,8 +4914,12 @@ void LLWindowWin32::LLWindowWin32Thread::updateVRAMUsage()
info.CurrentUsage = 0;
#endif
U32 budget_mb = info.Budget / 1024 / 1024;
gGLManager.mVRAM = llmax(gGLManager.mVRAM, (S32) budget_mb);
// <FS:Beq> Let's not override the detected values here.
// U32 budget_mb = info.Budget / 1024 / 1024;
// instead we clamp budget to detected values
// gGLManager.mVRAM = llmax(gGLManager.mVRAM, (S32) budget_mb);
U32 budget_mb = gGLManager.mVRAM;
// </FS:Beq>
U32 afr_mb = info.AvailableForReservation / 1024 / 1024;
// correct for systems that misreport budget
@ -4941,21 +4945,24 @@ void LLWindowWin32::LLWindowWin32Thread::updateVRAMUsage()
}
U32 target_mb = budget_mb;
if (target_mb > 4096) // if 4GB are installed, try to leave 2GB free
{
target_mb -= 2048;
}
else // if less than 4GB are installed, try not to use more than half of it
{
target_mb /= 2;
}
mAvailableVRAM = cu_mb < target_mb ? target_mb - cu_mb : 0;
// <FS:Beq> Let's not override the detected values here.
// Stop playing nice and just let the OS and drivers deal with it.
// if (target_mb > 4096) // if 4GB are installed, try to leave 2GB free
// {
// target_mb -= 2048;
// }
// else // if less than 4GB are installed, try not to use more than half of it
// {
// target_mb /= 2;
// }
// mAvailableVRAM = cu_mb < target_mb ? target_mb - cu_mb : 0;
mAvailableVRAM = eu_mb < target_mb ? target_mb - cu_mb : 0;
// </FS:Beq>
#if 1
F32 eu_error = (F32)((S32)eu_mb - (S32)cu_mb) / (F32)cu_mb;
LL_INFOS("Window") << "\nLocal\nAFR: " << info.AvailableForReservation / 1024 / 1024
LL_DEBUGS("Window") << "\nLocal\nAFR: " << info.AvailableForReservation / 1024 / 1024
<< "\nBudget: " << info.Budget / 1024 / 1024
<< "\nCR: " << info.CurrentReservation / 1024 / 1024
<< "\nCU: " << info.CurrentUsage / 1024 / 1024

View File

@ -23062,12 +23062,23 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>Value</key>
<integer>1</integer>
</map>
<key>FSOverrideVRAMDetection</key>
<map>
<key>Comment</key>
<string>Allow user to override the vRAM detection, use the FSForcedVideoMemory setting instead- use with extreme caution.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>FSForcedVideoMemory</key>
<map>
<key>Comment</key>
<string>Overrides the video memory detection on Windows if a value greater 0 is passed (in case DirectX memory detection fails or is wrong)</string>
<key>Persist</key>
<integer>0</integer>
<integer>1</integer>
<key>HideFromEditor</key>
<integer>1</integer>
<key>Type</key>

View File

@ -1149,7 +1149,6 @@ struct FSPanelFaceSetTEFunctor : public LLSelectedTEFunctor
bool align_planar = mPanel->mCheckPlanarAlign->get();
llassert(comboTexGen);
llassert(object);
if (ctrlTexScaleS)

View File

@ -957,122 +957,68 @@ void AISAPI::InvokeAISCommandCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t ht
if (callback && !callback.empty())
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
uuid_list_t ids;
bool needs_callback = true;
LLUUID id(LLUUID::null);
switch (type)
{
case COPYLIBRARYCATEGORY:
case FETCHCATEGORYCATEGORIES:
case FETCHCATEGORYCHILDREN:
case FETCHCATEGORYSUBSET:
case FETCHCATEGORYLINKS:
case FETCHCOF:
if (result.has("category_id"))
case COPYLIBRARYCATEGORY:
case FETCHCATEGORYCATEGORIES:
case FETCHCATEGORYCHILDREN:
case FETCHCATEGORYSUBSET:
case FETCHCATEGORYLINKS:
case FETCHCOF:
if (result.has("category_id"))
{
id = result["category_id"];
}
break;
case FETCHITEM:
if (result.has("item_id"))
{
// Error message might contain an item_id!!!
id = result["item_id"];
}
if (result.has("linked_id"))
{
id = result["linked_id"];
}
break;
case CREATEINVENTORY:
// CREATEINVENTORY can have multiple callbacks
if (result.has("_created_categories"))
{
LLSD& cats = result["_created_categories"];
LLSD::array_const_iterator cat_iter;
for (cat_iter = cats.beginArray(); cat_iter != cats.endArray(); ++cat_iter)
{
ids.emplace(result["category_id"]);
LLUUID cat_id = *cat_iter;
callback(cat_id);
needs_callback = false;
}
break;
case FETCHITEM:
if (result.has("linked_id"))
}
if (result.has("_created_items"))
{
LLSD& items = result["_created_items"];
LLSD::array_const_iterator item_iter;
for (item_iter = items.beginArray(); item_iter != items.endArray(); ++item_iter)
{
ids.emplace(result["linked_id"]);
LLUUID item_id = *item_iter;
callback(item_id);
needs_callback = false;
}
else if (result.has("item_id"))
{
// Error message might contain an item_id!!!
ids.emplace(result["item_id"]);
}
break;
case COPYINVENTORY:
case CREATEINVENTORY:
{
AISUpdate::parseUUIDArray(result, "_created_categories", ids);
AISUpdate::parseUUIDArray(result, "_created_items", ids);
}
break;
case UPDATECATEGORY:
{
AISUpdate::parseUUIDArray(result, "_updated_categories", ids);
}
break;
default:
break;
}
break;
default:
break;
}
// Call callback at least once regardless of failure.
if (ids.empty())
{
ids.emplace(LLUUID::null);
}
for (const auto& id : ids)
if (needs_callback)
{
// Call callback at least once regardless of failure.
// UPDATEITEM doesn't expect an id
callback(id);
}
// [/SL:KB]
//bool needs_callback = true;
//LLUUID id(LLUUID::null);
//switch (type)
//{
//case COPYLIBRARYCATEGORY:
//case FETCHCATEGORYCATEGORIES:
//case FETCHCATEGORYCHILDREN:
//case FETCHCATEGORYSUBSET:
//case FETCHCATEGORYLINKS:
//case FETCHCOF:
// if (result.has("category_id"))
// {
// id = result["category_id"];
// }
// break;
//case FETCHITEM:
// if (result.has("item_id"))
// {
// // Error message might contain an item_id!!!
// id = result["item_id"];
// }
// if (result.has("linked_id"))
// {
// id = result["linked_id"];
// }
// break;
//case CREATEINVENTORY:
// // CREATEINVENTORY can have multiple callbacks
// if (result.has("_created_categories"))
// {
// LLSD& cats = result["_created_categories"];
// LLSD::array_const_iterator cat_iter;
// for (cat_iter = cats.beginArray(); cat_iter != cats.endArray(); ++cat_iter)
// {
// LLUUID cat_id = *cat_iter;
// callback(cat_id);
// needs_callback = false;
// }
// }
// if (result.has("_created_items"))
// {
// LLSD& items = result["_created_items"];
// LLSD::array_const_iterator item_iter;
// for (item_iter = items.beginArray(); item_iter != items.endArray(); ++item_iter)
// {
// LLUUID item_id = *item_iter;
// callback(item_id);
// needs_callback = false;
// }
// }
// break;
//default:
// break;
//}
//if (needs_callback)
//{
// // Call callback at least once regardless of failure.
// // UPDATEITEM doesn't expect an id
// callback(id);
//}
}
}

View File

@ -114,10 +114,7 @@ public:
void parseUpdate(const LLSD& update);
void parseMeta(const LLSD& update);
void parseContent(const LLSD& update);
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
static void parseUUIDArray(const LLSD& content, const std::string& name, uuid_list_t& ids);
// [/SL:KB]
// void parseUUIDArray(const LLSD& content, const std::string& name, uuid_list_t& ids);
void parseUUIDArray(const LLSD& content, const std::string& name, uuid_list_t& ids);
void parseLink(const LLSD& link_map, S32 depth);
void parseItem(const LLSD& link_map);
void parseCategory(const LLSD& link_map, S32 depth);

View File

@ -714,20 +714,16 @@ public:
bool pollMissingWearables();
bool isMissingCompleted();
void recoverMissingWearable(LLWearableType::EType type);
// void clearCOFLinksForMissingWearables();
void clearCOFLinksForMissingWearables();
void onWearableAssetFetch(LLViewerWearable *wearable);
void onAllComplete();
// [SL:KB] - Patch: Appearance-COFCorruption | Checked: 2010-04-14 (Catznip-2.0)
bool pollStopped();
// [/SL:KB]
typedef std::list<LLFoundData> found_list_t;
found_list_t& getFoundList();
void eraseTypeToLink(LLWearableType::EType type);
void eraseTypeToRecover(LLWearableType::EType type);
// void setObjItems(const LLInventoryModel::item_array_t& items);
void setObjItems(const LLInventoryModel::item_array_t& items);
void setGestItems(const LLInventoryModel::item_array_t& items);
bool isMostRecent();
void handleLateArrivals();
@ -737,7 +733,7 @@ public:
private:
found_list_t mFoundList;
// LLInventoryModel::item_array_t mObjItems;
LLInventoryModel::item_array_t mObjItems;
LLInventoryModel::item_array_t mGestItems;
typedef std::set<S32> type_set_t;
type_set_t mTypesToRecover;
@ -814,11 +810,10 @@ void LLWearableHoldingPattern::eraseTypeToRecover(LLWearableType::EType type)
mTypesToRecover.erase(type);
}
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.1
//void LLWearableHoldingPattern::setObjItems(const LLInventoryModel::item_array_t& items)
//{
// mObjItems = items;
//}
void LLWearableHoldingPattern::setObjItems(const LLInventoryModel::item_array_t& items)
{
mObjItems = items;
}
void LLWearableHoldingPattern::setGestItems(const LLInventoryModel::item_array_t& items)
{
@ -925,56 +920,55 @@ void LLWearableHoldingPattern::onAllComplete()
if (isAgentAvatarValid())
{
// LL_DEBUGS("Avatar") << self_av_string() << "Updating " << mObjItems.size() << " attachments" << LL_ENDL;
// LLAgentWearables::llvo_vec_t objects_to_remove;
// LLAgentWearables::llvo_vec_t objects_to_retain;
// LLInventoryModel::item_array_t items_to_add;
//
// LLAgentWearables::findAttachmentsAddRemoveInfo(mObjItems,
// objects_to_remove,
// objects_to_retain,
// items_to_add);
//
// LL_DEBUGS("Avatar") << self_av_string() << "Removing " << objects_to_remove.size()
// << " attachments" << LL_ENDL;
//
// // Here we remove the attachment pos overrides for *all*
// // attachments, even those that are not being removed. This is
// // needed to get joint positions all slammed down to their
// // pre-attachment states.
// gAgentAvatarp->clearAttachmentOverrides();
//
// if (objects_to_remove.size() || items_to_add.size())
// {
// LL_DEBUGS("Avatar") << "ATT will remove " << objects_to_remove.size()
// << " and add " << items_to_add.size() << " items" << LL_ENDL;
// }
//
// // Take off the attachments that will no longer be in the outfit.
// LLAgentWearables::userRemoveMultipleAttachments(objects_to_remove);
LL_DEBUGS("Avatar") << self_av_string() << "Updating " << mObjItems.size() << " attachments" << LL_ENDL;
LLAgentWearables::llvo_vec_t objects_to_remove;
LLAgentWearables::llvo_vec_t objects_to_retain;
LLInventoryModel::item_array_t items_to_add;
LLAgentWearables::findAttachmentsAddRemoveInfo(mObjItems,
objects_to_remove,
objects_to_retain,
items_to_add);
LL_DEBUGS("Avatar") << self_av_string() << "Removing " << objects_to_remove.size()
<< " attachments" << LL_ENDL;
// Here we remove the attachment pos overrides for *all*
// attachments, even those that are not being removed. This is
// needed to get joint positions all slammed down to their
// pre-attachment states.
gAgentAvatarp->clearAttachmentOverrides();
if (objects_to_remove.size() || items_to_add.size())
{
LL_DEBUGS("Avatar") << "ATT will remove " << objects_to_remove.size()
<< " and add " << items_to_add.size() << " items" << LL_ENDL;
}
// Take off the attachments that will no longer be in the outfit.
LLAgentWearables::userRemoveMultipleAttachments(objects_to_remove);
// Update wearables.
LL_INFOS("Avatar") << self_av_string() << "HP " << index() << " updating agent wearables with "
<< mResolved << " wearable items " << LL_ENDL;
LLAppearanceMgr::instance().updateAgentWearables(this);
// <FS:ND/> Merge; Changed in FS but not tagged with any FS: comment explaining by whom and the purpose
// // Restore attachment pos overrides for the attachments that
// // are remaining in the outfit.
// for (LLAgentWearables::llvo_vec_t::iterator it = objects_to_retain.begin();
// it != objects_to_retain.end();
// ++it)
// {
// LLViewerObject *objectp = *it;
// if (!objectp->isAnimatedObject())
// {
// gAgentAvatarp->addAttachmentOverridesForObject(objectp);
// }
// }
//
// // Add new attachments to match those requested.
// LL_DEBUGS("Avatar") << self_av_string() << "Adding " << items_to_add.size() << " attachments" << LL_ENDL;
// LLAgentWearables::userAttachMultipleAttachments(items_to_add);
// Restore attachment pos overrides for the attachments that
// are remaining in the outfit.
for (LLAgentWearables::llvo_vec_t::iterator it = objects_to_retain.begin();
it != objects_to_retain.end();
++it)
{
LLViewerObject *objectp = *it;
if (!objectp->isAnimatedObject())
{
gAgentAvatarp->addAttachmentOverridesForObject(objectp);
}
}
// Add new attachments to match those requested.
LL_DEBUGS("Avatar") << self_av_string() << "Adding " << items_to_add.size() << " attachments" << LL_ENDL;
LLAgentWearables::userAttachMultipleAttachments(items_to_add);
}
if (isFetchCompleted() && isMissingCompleted())
@ -1012,12 +1006,6 @@ bool LLWearableHoldingPattern::pollFetchCompletion()
{
// runway skip here?
LL_WARNS() << self_av_string() << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << LL_ENDL;
// [SL:KB] - Patch: Appearance-COFCorruption | Checked: 2010-04-14 (Catznip-2.0)
// If we were signalled to stop then we shouldn't do anything else except poll for when it's safe to delete ourselves
doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollStopped, this));
return true;
// [/SL:KB]
}
bool completed = isFetchCompleted();
@ -1088,11 +1076,6 @@ void recovered_item_cb(const LLUUID& item_id, LLWearableType::EType type, LLView
{
// runway skip here?
LL_WARNS() << self_av_string() << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << LL_ENDL;
// [SL:KB] - Patch: Appearance-COFCorruption | Checked: 2010-04-14 (Catznip-2.0)
// If we were signalled to stop then we shouldn't do anything else except poll for when it's safe to delete ourselves
return;
// [/SL:KB]
}
LL_DEBUGS("Avatar") << self_av_string() << "Recovered item for type " << type << LL_ENDL;
@ -1143,32 +1126,19 @@ bool LLWearableHoldingPattern::isMissingCompleted()
return mTypesToLink.size()==0 && mTypesToRecover.size()==0;
}
//void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()
//{
// for (found_list_t::iterator it = getFoundList().begin(); it != getFoundList().end(); ++it)
// {
// LLFoundData &data = *it;
// if ((data.mWearableType < LLWearableType::WT_COUNT) && (!data.mWearable))
// {
// // Wearable link that was never resolved; remove links to it from COF
// LL_INFOS("Avatar") << self_av_string() << "HP " << index() << " removing link for unresolved item " << data.mItemID.asString() << LL_ENDL;
// LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID);
// }
// }
//}
// [SL:KB] - Patch: Appearance-COFCorruption | Checked: 2010-04-14 (Catznip-2.0)
bool LLWearableHoldingPattern::pollStopped()
void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()
{
// We have to keep on polling until we're sure that all callbacks have completed or they'll cause a crash
if ( (isFetchCompleted()) && (isMissingCompleted()) )
for (found_list_t::iterator it = getFoundList().begin(); it != getFoundList().end(); ++it)
{
delete this;
return true;
LLFoundData &data = *it;
if ((data.mWearableType < LLWearableType::WT_COUNT) && (!data.mWearable))
{
// Wearable link that was never resolved; remove links to it from COF
LL_INFOS("Avatar") << self_av_string() << "HP " << index() << " removing link for unresolved item " << data.mItemID.asString() << LL_ENDL;
LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID);
}
}
return false;
}
// [/SL:KB]
bool LLWearableHoldingPattern::pollMissingWearables()
{
@ -1176,12 +1146,6 @@ bool LLWearableHoldingPattern::pollMissingWearables()
{
// runway skip here?
LL_WARNS() << self_av_string() << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << LL_ENDL;
// [SL:KB] - Patch: Appearance-COFCorruption | Checked: 2010-04-14 (Catznip-2.0)
// If we were signalled to stop then we shouldn't do anything else except poll for when it's safe to delete ourselves
doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollStopped, this));
return true;
// [/SL:KB]
}
bool timed_out = isTimedOut();
@ -2894,72 +2858,6 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool enforce_item_restrictions,
<< " descendent_count " << cof->getDescendentCount()
<< " viewer desc count " << cof->getViewerDescendentCount() << LL_ENDL;
}
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.2
// Update attachments to match those requested.
if (isAgentAvatarValid())
{
// Include attachments which should be in COF but don't have their link created yet
std::set<LLUUID> pendingAttachments;
if (LLAttachmentsMgr::instance().getPendingAttachments(pendingAttachments))
{
for (const LLUUID& idAttachItem : pendingAttachments)
{
if ( (!gAgentAvatarp->isWearingAttachment(idAttachItem)) || (isLinkedInCOF(idAttachItem)) )
{
LLAttachmentsMgr::instance().clearPendingAttachmentLink(idAttachItem);
continue;
}
LLViewerInventoryItem* pAttachItem = gInventory.getItem(idAttachItem);
if (pAttachItem)
{
obj_items.push_back(pAttachItem);
}
}
}
// (Start of LL code from LLWearableHoldingPattern::onAllComplete())
LL_DEBUGS("Avatar") << self_av_string() << "Updating " << obj_items.size() << " attachments" << LL_ENDL;
LLAgentWearables::llvo_vec_t objects_to_remove;
LLAgentWearables::llvo_vec_t objects_to_retain;
LLInventoryModel::item_array_t items_to_add;
LLAgentWearables::findAttachmentsAddRemoveInfo(obj_items, objects_to_remove, objects_to_retain, items_to_add);
// Here we remove the attachment pos overrides for *all*
// attachments, even those that are not being removed. This is
// needed to get joint positions all slammed down to their
// pre-attachment states.
gAgentAvatarp->clearAttachmentOverrides();
// (End of LL code)
// Take off the attachments that will no longer be in the outfit.
// (but don't remove attachments until avatar is fully loaded - should reduce random attaching/detaching/reattaching at log-on)
if (gAgentAvatarp->isFullyLoaded())
{
LL_DEBUGS("Avatar") << self_av_string() << "Removing " << objects_to_remove.size() << " attachments" << LL_ENDL;
LLAgentWearables::userRemoveMultipleAttachments(objects_to_remove);
}
// (Start of LL code from LLWearableHoldingPattern::onAllComplete())
// Restore attachment pos overrides for the attachments that are remaining in the outfit.
for (LLAgentWearables::llvo_vec_t::iterator it = objects_to_retain.begin(); it != objects_to_retain.end(); ++it)
{
LLViewerObject *objectp = *it;
if (!objectp->isAnimatedObject())
{
gAgentAvatarp->addAttachmentOverridesForObject(objectp);
}
}
// Add new attachments to match those requested.
LL_DEBUGS("Avatar") << self_av_string() << "Adding " << items_to_add.size() << " attachments" << LL_ENDL;
LLAgentWearables::userAttachMultipleAttachments(items_to_add);
// (End of LL code)
}
// [/SL:KB]
if(!wear_items.size())
{
LLNotificationsUtil::add("CouldNotPutOnOutfit");
@ -2974,7 +2872,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool enforce_item_restrictions,
LLTimer hp_block_timer;
LLWearableHoldingPattern* holder = new LLWearableHoldingPattern;
// holder->setObjItems(obj_items);
holder->setObjItems(obj_items);
holder->setGestItems(gest_items);
// Note: can't do normal iteration, because if all the
@ -4705,9 +4603,6 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove, nul
if (!cb)
cb = new LLUpdateAppearanceOnDestroy(true, true, post_update_func);
removeCOFItemLinks(linked_item_id, cb, immediate_delete);
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
LLAttachmentsMgr::instance().clearPendingAttachmentLink(linked_item_id);
// [/SL:KB]
addDoomedTempAttachment(linked_item_id);
}
// [/RLVa:KB]

View File

@ -155,9 +155,6 @@ public:
// Attachment link management
void unregisterAttachment(const LLUUID& item_id);
void registerAttachment(const LLUUID& item_id);
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
bool getAttachmentInvLinkEnable() { return mAttachmentInvLinkEnabled; }
// [/SL:KB]
void setAttachmentInvLinkEnable(bool val);
// Add COF link to individual item.

View File

@ -1027,15 +1027,18 @@ bool LLAppViewerWin32::initHardwareTest()
if (gGLManager.mVRAM == 0)
{
// <FS:Ansariel> FIRE-12671: Force VRAM if DirectX detection is broken
S32 forced_video_memory;
if ((forced_video_memory = gSavedSettings.getS32("FSForcedVideoMemory")) > 0)
// <FS:Beq> Allow the user to override the VRAM detection
if ( gSavedSettings.getBOOL("FSOverrideVRAMDetection") )
{
LL_INFOS("AppInit") << "Forcing VRAM to " << forced_video_memory << " MB" << LL_ENDL;
gGLManager.mVRAM = forced_video_memory;
S32 forced_video_memory = gSavedSettings.getS32("FSForcedVideoMemory");
if ( forced_video_memory > 0 )
{
LL_INFOS("AppInit") << "Forcing VRAM to " << forced_video_memory*1024 << " MB" << LL_ENDL;
gGLManager.mVRAM = forced_video_memory*1024;
}
}
else
// </FS:Ansariel>
// </FS:Beq>
gGLManager.mVRAM = gDXHardware.getVRAM();
}

View File

@ -46,31 +46,10 @@ const F32 MAX_ATTACHMENT_REQUEST_LIFETIME = 30.0F;
const F32 MIN_RETRY_REQUEST_TIME = 5.0F;
const F32 MAX_BAD_COF_TIME = 30.0F;
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
class LLRegisterAttachmentCallback : public LLRequestServerAppearanceUpdateOnDestroy
{
public:
LLRegisterAttachmentCallback()
: LLRequestServerAppearanceUpdateOnDestroy()
{
}
~LLRegisterAttachmentCallback() override
{
}
void fire(const LLUUID& idItem) override
{
LLAttachmentsMgr::instance().onRegisterAttachmentComplete(idItem);
LLRequestServerAppearanceUpdateOnDestroy::fire(idItem);
}
};
// [/SL:KB]
LLAttachmentsMgr::LLAttachmentsMgr():
mAttachmentRequests("attach",MIN_RETRY_REQUEST_TIME),
mDetachRequests("detach",MIN_RETRY_REQUEST_TIME)
// , mQuestionableCOFLinks("badcof",MAX_BAD_COF_TIME)
mDetachRequests("detach",MIN_RETRY_REQUEST_TIME),
mQuestionableCOFLinks("badcof",MAX_BAD_COF_TIME)
{
}
@ -130,11 +109,6 @@ void LLAttachmentsMgr::addAttachmentRequest(const LLUUID& item_id,
void LLAttachmentsMgr::onAttachmentRequested(const LLUUID& item_id)
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
if (item_id.isNull())
return;
// [/SL:KB]
LLViewerInventoryItem *item = gInventory.getItem(item_id);
LL_DEBUGS("Avatar") << "ATT attachment was requested "
<< (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL;
@ -168,7 +142,7 @@ void LLAttachmentsMgr::onIdle()
expireOldDetachRequests();
//checkInvalidCOFLinks();
checkInvalidCOFLinks();
spamStatusInfo();
}
@ -280,13 +254,6 @@ void LLAttachmentsMgr::linkRecentlyArrivedAttachments()
{
if (mRecentlyArrivedAttachments.size())
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
if (!LLAppearanceMgr::instance().getAttachmentInvLinkEnable())
{
return;
}
// [/SL:KB]
// One or more attachments have arrived but have not yet been
// processed for COF links
if (mAttachmentRequests.empty())
@ -333,68 +300,17 @@ void LLAttachmentsMgr::linkRecentlyArrivedAttachments()
}
if (ids_to_link.size())
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
LLPointer<LLInventoryCallback> cb = NULL;
for (uuid_vec_t::const_iterator itAttach = ids_to_link.begin(); itAttach != ids_to_link.end(); ++itAttach)
LLPointer<LLInventoryCallback> cb = new LLRequestServerAppearanceUpdateOnDestroy();
for (uuid_vec_t::const_iterator uuid_it = ids_to_link.begin();
uuid_it != ids_to_link.end(); ++uuid_it)
{
const LLUUID& idAttach = *itAttach;
if (std::find(mPendingAttachLinks.begin(), mPendingAttachLinks.end(), idAttach) == mPendingAttachLinks.end())
{
if (cb.isNull())
{
cb = new LLRegisterAttachmentCallback();
}
LLAppearanceMgr::instance().addCOFItemLink(idAttach, cb);
mPendingAttachLinks.insert(idAttach);
}
LLAppearanceMgr::instance().addCOFItemLink(*uuid_it, cb);
}
// [/SL:KB]
// LLPointer<LLInventoryCallback> cb = new LLRequestServerAppearanceUpdateOnDestroy();
// for (uuid_vec_t::const_iterator uuid_it = ids_to_link.begin();
// uuid_it != ids_to_link.end(); ++uuid_it)
// {
// LLAppearanceMgr::instance().addCOFItemLink(*uuid_it, cb);
// }
}
mRecentlyArrivedAttachments.clear();
}
}
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.2
bool LLAttachmentsMgr::getPendingAttachments(std::set<LLUUID>& ids) const
{
ids.clear();
// Returns the union of the LL maintained list of attachments that are waiting for link creation and our maintained list of attachments that are pending link creation
set_union(mRecentlyArrivedAttachments.begin(), mRecentlyArrivedAttachments.end(), mPendingAttachLinks.begin(), mPendingAttachLinks.end(), std::inserter(ids, ids.begin()));
return !ids.empty();
}
void LLAttachmentsMgr::clearPendingAttachmentLink(const LLUUID& idItem)
{
mPendingAttachLinks.erase(idItem);
}
void LLAttachmentsMgr::onRegisterAttachmentComplete(const LLUUID& idAttachLink)
{
const LLViewerInventoryItem* pAttachLink = gInventory.getItem(idAttachLink);
if (!pAttachLink)
return;
const LLUUID& idAttachBase = pAttachLink->getLinkedUUID();
// Remove the attachment from the pending list
clearPendingAttachmentLink(idAttachBase);
// It may have been detached already in which case we should remove the COF link
if ( (isAgentAvatarValid()) && (!gAgentAvatarp->isWearingAttachment(idAttachBase)) )
{
LLAppearanceMgr::instance().removeCOFItemLinks(idAttachBase, NULL, true);
}
}
// [/SL:KB]
LLAttachmentsMgr::LLItemRequestTimes::LLItemRequestTimes(const std::string& op_name, F32 timeout):
mOpName(op_name),
mTimeout(timeout)
@ -523,11 +439,6 @@ void LLAttachmentsMgr::onDetachRequested(const LLUUID& inv_item_id)
void LLAttachmentsMgr::onDetachCompleted(const LLUUID& inv_item_id)
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.2
// (mRecentlyArrivedAttachments doesn't need pruning since it'll check the attachment is actually worn before linking)
clearPendingAttachmentLink(inv_item_id);
// [/SL:KB]
LLTimer timer;
LLInventoryItem *item = gInventory.getItem(inv_item_id);
if (mDetachRequests.getTime(inv_item_id, timer))
@ -550,25 +461,18 @@ void LLAttachmentsMgr::onDetachCompleted(const LLUUID& inv_item_id)
LL_DEBUGS("Avatar") << "ATT detach on shutdown for " << (item ? item->getName() : "UNKNOWN") << " " << inv_item_id << LL_ENDL;
}
// LL_DEBUGS("Avatar") << "ATT detached item flagging as questionable for COF link checking "
// << (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL;
// mQuestionableCOFLinks.addTime(inv_item_id);
LL_DEBUGS("Avatar") << "ATT detached item flagging as questionable for COF link checking "
<< (item ? item->getName() : "UNKNOWN") << " id " << inv_item_id << LL_ENDL;
mQuestionableCOFLinks.addTime(inv_item_id);
}
bool LLAttachmentsMgr::isAttachmentStateComplete() const
{
// [SL:KB] - Patch: Appearance-Misc | Checked: Catznip-4.3
return mPendingAttachments.empty()
&& mAttachmentRequests.empty()
&& mDetachRequests.empty()
&& mRecentlyArrivedAttachments.empty()
&& mPendingAttachLinks.empty();
// [/SL:KB]
// return mPendingAttachments.empty()
// && mAttachmentRequests.empty()
// && mDetachRequests.empty()
// && mRecentlyArrivedAttachments.empty()
// && mQuestionableCOFLinks.empty();
&& mQuestionableCOFLinks.empty();
}
// Check for attachments that are (a) linked in COF and (b) not
@ -591,58 +495,58 @@ bool LLAttachmentsMgr::isAttachmentStateComplete() const
//
// See related: MAINT-5070, MAINT-4409
//
//void LLAttachmentsMgr::checkInvalidCOFLinks()
//{
// if (!gInventory.isInventoryUsable())
// {
// return;
// }
// LLInventoryModel::cat_array_t cat_array;
// LLInventoryModel::item_array_t item_array;
// gInventory.collectDescendents(LLAppearanceMgr::instance().getCOF(),
// cat_array,item_array,LLInventoryModel::EXCLUDE_TRASH);
// for (S32 i=0; i<item_array.size(); i++)
// {
// const LLViewerInventoryItem* inv_item = item_array.at(i).get();
// const LLUUID& item_id = inv_item->getLinkedUUID();
// if (inv_item->getType() == LLAssetType::AT_OBJECT)
// {
// LLTimer timer;
// bool is_flagged_questionable = mQuestionableCOFLinks.getTime(item_id,timer);
// bool is_wearing_attachment = isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item_id);
// if (is_wearing_attachment && is_flagged_questionable)
// {
// LL_DEBUGS("Avatar") << "ATT was flagged questionable but is now "
// << (is_wearing_attachment ? "attached " : "")
// <<"removing flag after "
// << timer.getElapsedTimeF32() << " item "
// << inv_item->getName() << " id " << item_id << LL_ENDL;
// mQuestionableCOFLinks.removeTime(item_id);
// }
// }
// }
void LLAttachmentsMgr::checkInvalidCOFLinks()
{
if (!gInventory.isInventoryUsable())
{
return;
}
LLInventoryModel::cat_array_t cat_array;
LLInventoryModel::item_array_t item_array;
gInventory.collectDescendents(LLAppearanceMgr::instance().getCOF(),
cat_array,item_array,LLInventoryModel::EXCLUDE_TRASH);
for (S32 i=0; i<item_array.size(); i++)
{
const LLViewerInventoryItem* inv_item = item_array.at(i).get();
const LLUUID& item_id = inv_item->getLinkedUUID();
if (inv_item->getType() == LLAssetType::AT_OBJECT)
{
LLTimer timer;
bool is_flagged_questionable = mQuestionableCOFLinks.getTime(item_id,timer);
bool is_wearing_attachment = isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item_id);
if (is_wearing_attachment && is_flagged_questionable)
{
LL_DEBUGS("Avatar") << "ATT was flagged questionable but is now "
<< (is_wearing_attachment ? "attached " : "")
<<"removing flag after "
<< timer.getElapsedTimeF32() << " item "
<< inv_item->getName() << " id " << item_id << LL_ENDL;
mQuestionableCOFLinks.removeTime(item_id);
}
}
}
// for(LLItemRequestTimes::iterator it = mQuestionableCOFLinks.begin();
// it != mQuestionableCOFLinks.end(); )
// {
// LLItemRequestTimes::iterator curr_it = it;
// ++it;
// const LLUUID& item_id = curr_it->first;
// LLViewerInventoryItem *inv_item = gInventory.getItem(item_id);
// if (curr_it->second.getElapsedTimeF32() > MAX_BAD_COF_TIME)
// {
// if (LLAppearanceMgr::instance().isLinkedInCOF(item_id))
// {
// LL_DEBUGS("Avatar") << "ATT Linked in COF but not attached or requested, deleting link after "
// << curr_it->second.getElapsedTimeF32() << " seconds for "
// << (inv_item ? inv_item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL;
// LLAppearanceMgr::instance().removeCOFItemLinks(item_id);
// }
// mQuestionableCOFLinks.erase(curr_it);
// continue;
// }
// }
//}
for(LLItemRequestTimes::iterator it = mQuestionableCOFLinks.begin();
it != mQuestionableCOFLinks.end(); )
{
LLItemRequestTimes::iterator curr_it = it;
++it;
const LLUUID& item_id = curr_it->first;
LLViewerInventoryItem *inv_item = gInventory.getItem(item_id);
if (curr_it->second.getElapsedTimeF32() > MAX_BAD_COF_TIME)
{
if (LLAppearanceMgr::instance().isLinkedInCOF(item_id))
{
LL_DEBUGS("Avatar") << "ATT Linked in COF but not attached or requested, deleting link after "
<< curr_it->second.getElapsedTimeF32() << " seconds for "
<< (inv_item ? inv_item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL;
LLAppearanceMgr::instance().removeCOFItemLinks(item_id);
}
mQuestionableCOFLinks.erase(curr_it);
continue;
}
}
}
void LLAttachmentsMgr::spamStatusInfo()
{

View File

@ -92,15 +92,8 @@ public:
bool isAttachmentStateComplete() const;
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.1
public:
void clearPendingAttachmentLink(const LLUUID& idItem);
bool getPendingAttachments(std::set<LLUUID>& ids) const;
// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
void refreshAttachments();
protected:
void onRegisterAttachmentComplete(const LLUUID& idAttachLink);
friend class LLRegisterAttachmentCallback;
// [/SL:KB]
private:
@ -124,7 +117,7 @@ private:
void linkRecentlyArrivedAttachments();
void expireOldAttachmentRequests();
void expireOldDetachRequests();
// void checkInvalidCOFLinks();
void checkInvalidCOFLinks();
void spamStatusInfo();
// Attachments that we are planning to rez but haven't requested from the server yet.
@ -140,13 +133,8 @@ private:
std::set<LLUUID> mRecentlyArrivedAttachments;
LLTimer mCOFLinkBatchTimer;
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.1
// Attachments that have pending link creation
std::set<LLUUID> mPendingAttachLinks;
// [/SL:KB]
// // Attachments that are linked in the COF but may be invalid.
// LLItemRequestTimes mQuestionableCOFLinks;
// Attachments that are linked in the COF but may be invalid.
LLItemRequestTimes mQuestionableCOFLinks;
};
#endif

View File

@ -245,13 +245,8 @@ void LLGLTFMaterialList::applyOverrideMessage(LLMessageSystem* msg, const std::s
}
}
}
// <FS:Beq> FIRE-33808 - Material Override Cache causes long delays
if(cache.mSides.size() > 0)
{
region->cacheFullUpdateGLTFOverride(cache);
LL_DEBUGS("GLTF") << "GLTF Material Override: " << cache.mObjectId << " " << cache.mLocalId << " " << cache.mRegionHandle << " (sides:" << (cache.mSides.size()) << ")" << LL_ENDL;
}
// </FS:Beq>
region->cacheFullUpdateGLTFOverride(cache);
LL_DEBUGS("GLTF") << "GLTF Material Override: " << cache.mObjectId << " " << cache.mLocalId << " " << cache.mRegionHandle << " (sides:" << (cache.mSides.size()) << ")" << LL_ENDL;
}
}

View File

@ -3102,8 +3102,7 @@ void LLSelectMgr::logNoOp(LLSelectNode* node, void *)
// static
void LLSelectMgr::logAttachmentRequest(LLSelectNode* node, void *)
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7
// LLAttachmentsMgr::instance().onAttachmentRequested(node->mItemID);
LLAttachmentsMgr::instance().onAttachmentRequested(node->mItemID);
}
// static

View File

@ -551,7 +551,7 @@ void LLGLTexMemBar::draw()
U32 texFetchLatMed = U32(recording.getMean(LLTextureFetch::sTexFetchLatency).value() * 1000.0f);
U32 texFetchLatMax = U32(recording.getMax(LLTextureFetch::sTexFetchLatency).value() * 1000.0f);
text = llformat("GL Free: %d MB Sys Free: %d MB GL Tex: %d MB FBO: %d MB Bias: %.2f Cache: %.1f/%.1f MB",
text = llformat("est. VRAM Free: %d MB Sys Free: %d MB GL Tex: %d MB FBO: %d MB Bias: %.2f Cache: %.1f/%.1f MB",
gViewerWindow->getWindow()->getAvailableVRAMMegabytes(),
LLMemory::getAvailableMemKB()/1024,
LLImageGL::getTextureBytesAllocated() / 1024 / 1024,

View File

@ -357,6 +357,16 @@ static bool handleVolumeLODChanged(const LLSD& newvalue)
return true;
}
// <FS:Beq> Override VRAM detection support
static bool handleOverrideVRAMDetectionChanged(const LLSD& newvalue)
{
if (newvalue.asBoolean())
{
LLNotificationsUtil::add("OverrideVRAMWarning");
}
return true;
}
// </FS:Beq>
static bool handleAvatarLODChanged(const LLSD& newvalue)
{
@ -1177,6 +1187,7 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "RenderGlowHDR", handleReleaseGLBufferChanged);
setting_setup_signal_listener(gSavedSettings, "RenderGlowNoise", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderGammaFull", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "FSOverrideVRAMDetection", handleOverrideVRAMDetectionChanged); // <FS:Beq/> Override VRAM detection support
setting_setup_signal_listener(gSavedSettings, "RenderVolumeLODFactor", handleVolumeLODChanged);
setting_setup_signal_listener(gSavedSettings, "RenderAvatarLODFactor", handleAvatarLODChanged);
setting_setup_signal_listener(gSavedSettings, "RenderAvatarPhysicsLODFactor", handleAvatarPhysicsLODChanged);

View File

@ -2889,8 +2889,15 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObjec
void LLViewerRegion::cacheFullUpdateGLTFOverride(const LLGLTFOverrideCacheEntry &override_data)
{
U32 local_id = override_data.mLocalId;
if (override_data.mSides.size() > 0)
{ // empty override means overrides were removed from this object
mImpl->mGLTFOverridesLLSD[local_id] = override_data;
}
else
{
mImpl->mGLTFOverridesLLSD.erase(local_id);
}
}
LLVOCacheEntry* LLViewerRegion::getCacheEntryForOctree(U32 local_id)
{
@ -3122,6 +3129,11 @@ void LLViewerRegion::dumpCache()
// TODO - add overrides cache too
}
void LLViewerRegion::clearVOCacheFromMemory()
{
mImpl->mCacheMap.clear();
}
void LLViewerRegion::unpackRegionHandshake()
{
LLMessageSystem *msg = gMessageSystem;

View File

@ -404,7 +404,7 @@ public:
void findOrphans(U32 parent_id);
void clearCachedVisibleObjects();
void dumpCache();
void clearVOCacheFromMemory();
void unpackRegionHandshake();
void calculateCenterGlobal();

View File

@ -2091,32 +2091,6 @@ LLViewerWindow::LLViewerWindow(const Params& p)
gSavedSettings.setU32("RenderQualityPerformance", 0);
}
// <FS:Ansariel> Texture memory management
// On 64bit builds, allow up to 1GB texture memory on cards with 2GB video
// memory and up to 2GB texture memory on cards with 4GB video memory. Check
// is performed against a lower limit as not exactly 2 or 4GB might not be
// returned.
#if ADDRESS_SIZE == 64
LL_INFOS() << "GLManager detected " << gGLManager.mVRAM << " MB VRAM" << LL_ENDL;
if (gGLManager.mVRAM > 3584)
{
gMaxVideoRam = S32Megabytes(2048);
LL_INFOS() << "At least 4 GB video memory detected - increasing max video ram for textures to 2048 MB" << LL_ENDL;
}
else if (gGLManager.mVRAM > 1536)
{
gMaxVideoRam = S32Megabytes(1024);
LL_INFOS() << "At least 2 GB video memory detected - increasing max video ram for textures to 1024 MB" << LL_ENDL;
}
else if (gGLManager.mVRAM > 768)
{
gMaxVideoRam = S32Megabytes(768);
LL_INFOS() << "At least 1 GB video memory detected - increasing max video ram for textures to 768 MB" << LL_ENDL;
}
#endif
// </FS:Ansariel>
// <FS:Ansariel> Max texture resolution
#if ADDRESS_SIZE == 64
if (gSavedSettings.getBOOL("FSRestrictMaxTextureSize"))

View File

@ -9286,11 +9286,7 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
BOOL LLVOAvatar::isFullyLoaded() const
{
// [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-2.2
// Changes to LLAppearanceMgr::updateAppearanceFromCOF() expect this function to actually return mFullyLoaded for gAgentAvatarp
return (mRenderUnloadedAvatar && !isSelf()) ||(mFullyLoaded);
// [/SL:KB]
// return (mRenderUnloadedAvatar || mFullyLoaded);
return (mRenderUnloadedAvatar || mFullyLoaded);
}
bool LLVOAvatar::isTooComplex() const

View File

@ -1302,6 +1302,13 @@ void LLVOCache::removeEntry(HeaderEntryInfo* entry)
LL_INFOS() << "Removing entry for region with filename" << filename << LL_ENDL;
// </FS:Beq>
// make sure corresponding LLViewerRegion also clears its in-memory cache
LLViewerRegion* regionp = LLWorld::instance().getRegionFromHandle(entry->mHandle);
if (regionp)
{
regionp->clearVOCacheFromMemory();
}
header_entry_queue_t::iterator iter = mHeaderEntryQueue.find(entry);
if(iter != mHeaderEntryQueue.end())
{
@ -1370,11 +1377,14 @@ void LLVOCache::removeFromCache(HeaderEntryInfo* entry)
std::string filename;
getObjectCacheFilename(entry->mHandle, filename);
LL_WARNS("GLTF", "VOCache") << "Removing object cache for handle " << entry->mHandle << "Filename: " << filename << LL_ENDL;
LLAPRFile::remove(filename, mLocalAPRFilePoolp);
// <FS:Beq> FIRE-33808 - Material Override Cache causes long delays
// Note that removeFromCache should take responsibility for cleaning up all cache artefactgs specfic to the handle/entry.
// as such this now includes the generic extras
removeGenericExtrasForHandle(entry->mHandle);
filename = getObjectCacheExtrasFilename(entry->mHandle);
LL_WARNS("GLTF", "VOCache") << "Removing generic extras for handle " << entry->mHandle << "Filename: " << filename << LL_ENDL;
LLFile::remove(filename);
// </FS:Beq>
entry->mTime = INVALID_TIME ;
updateEntry(entry) ; //update the head file.
@ -1647,6 +1657,13 @@ void LLVOCache::readGenericExtrasFromCache(U64 handle, const LLUUID& id, LLVOCac
versionNumber = std::stol(versionStr);
std::getline(in, line); // read the next line for the region UUID check
}
// For future versions we may call a legacy handler here, but realistically we'll just consider this cache out of date.
// The important thing is to make sure it gets removed.
if(versionNumber != LLGLTFOverrideCacheEntry::VERSION && versionNumber != 0)
{
LL_WARNS() << "Unexpected version number " << versionNumber << " for extras cache for handle " << handle << LL_ENDL;
in.close();
}
// </FS:Beq>
if(!LLUUID::validate(line))
{
@ -1907,7 +1924,19 @@ void LLVOCache::removeGenericExtrasForHandle(U64 handle)
return ;
}
LL_WARNS("GLTF", "VOCache") << "Removing generic extras for handle " << handle << "Filename: " << getObjectCacheExtrasFilename(handle) << LL_ENDL;
LLFile::remove(getObjectCacheExtrasFilename(handle));
// NOTE: when removing the extras, we must also remove the objects so the simulator will send us a full upddate with the valid overrides
auto* entry = mHandleEntryMap[handle];
if (entry)
{
removeEntry(entry);
}
else
{
//shouldn't happen, but if it does, we should remove the extras file since it's orphaned
LL_WARNS("GLTF", "VOCache") << "Removing generic extras for handle " << entry->mHandle << "Filename: " << getObjectCacheExtrasFilename(handle) << LL_ENDL;
LLFile::remove(getObjectCacheExtrasFilename(entry->mHandle));
}
}
// </FS:Beq>

View File

@ -5705,6 +5705,14 @@ LOD-Faktor >4: Nur in Ausnahmefällen verwenden. Wird beim Neustart zurückgeset
LOD-Faktor >8: Hat keinen echten Effekt. Kann Fehler verursachen.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="OverrideVRAMWarning">
WARNUNG: Das Übersteuern der VRAM-Erkennung kann Instabilitäten verursachen.
Die meisten Benutzer sollten diese Einstellung deaktiviert und dem Viewer sowie Betriebssystem den korrekten Wert ermitteln lassen.
Diese Einstellung ist für den Fall gedacht, wenn die VRAM-Erkennung inkorrekte Ergebnisse liefert. Bitte mit Vorsicht verwenden und im Zweifel Hilfe beim Support erfragen.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CurrencyURIOverrideReceived">
Diese Region hat sich dazu entschieden, das Währungsportal eines Drittanbieters zu nutzen.
Bitte beachten Sie, dass es sich bei Käufen von Währung innerhalb des Firestorm Viewers um Transaktionen zwischen Ihnen (dem Nutzer) und den Anbietern oder Verkäufern der Währung handelt.

View File

@ -130,7 +130,11 @@
<combo_box.item label="8x" name="8x"/>
<combo_box.item label="16x" name="16x"/>
</combo_box>
<text name="advanced_settings">
Erweiterte Einstellungen (Neustart erforderlich):
</text>
<check_box label="VRAM-Erkennung übersteuern" name="FSOverrideVRAMDetection" tool_tip="Erlaubt die Übersteuerung der VRAM-Erkennung (mit extreme Vorsicht verwenden)" />
<slider label="Dedizierter GPU-VRAM(GB):" name="FSForcedVideoMemory" tool_tip="Wichtig: Mit extremer Vorsicht verwenden. Übersteuert den erkannten VRAM der GPU. Dieser Wert darf nicht den geteilten VRAM enthalten, der Teil des Systemspeichers ist. Falls Sie den Unterschied nicht kennen, verändern Sie diese Einstellung bitte nicht!" />
</panel>
<panel label="Darstellung" name="Rendering">

View File

@ -165,7 +165,7 @@ Additional code generously contributed to Firestorm by:
top_pad="4"
width="450"
wrap="true">
Albatroz Hird, Alexie Birman, Andromeda Rage, Angeldark Raymaker, Angus Boyd, Animats, Armin Weatherwax, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Denver Maksim, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hitomi Tiponi, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, Paladin Forzane, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, Zwagoth Klaar and others.
Albatroz Hird, Alexie Birman, Andromeda Rage, Angeldark Raymaker, Angus Boyd, Animats, Armin Weatherwax, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Denver Maksim, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hitomi Tiponi, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, Paladin Forzane, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, Zwagoth Klaar and others.
</text>
<text
follows="top|left"

View File

@ -5,7 +5,7 @@
height="290"
layout="topleft"
min_height="150"
min_width="200"
min_width="224"
name="floater_buy_contents"
help_topic="floater_buy_contents"
save_rect="true"

View File

@ -65,7 +65,7 @@
layout="topleft"
left_delta="0"
name="paste_textures_btn"
top_delta="26 "
top_delta="26"
width="235" />
<button
follows="left|bottom"
@ -74,7 +74,7 @@
layout="topleft"
left_delta="0"
name="write_thumbnails_btn"
top_delta="26 "
top_delta="26"
width="235" />
<button
follows="left|bottom"

View File

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater
positioning="cascading"
save_rect="true"
legacy_header_height="18"
height="570"
layout="topleft"

View File

@ -13907,6 +13907,19 @@ LOD Factor >8: Has no real effect. May cause errors.
name="okbutton"
yestext="OK"/>
</notification>
<notification
icon="alert.tga"
name="OverrideVRAMWarning"
type="alert">
WARNING: Overriding the VRAM detection may cause instability.
Most users should leave this setting disabled and let the viewer and operating system determine the correct value.
This setting is intended for cases where VRAM detection is reporting incorrect values. Use with caution, seek support advice in case of doubt.
<usetemplate
name="okbutton"
yestext="OK"/>
</notification>
<notification
icon="alertmodal.tga"
name="CurrencyURIOverrideReceived"

View File

@ -893,6 +893,53 @@
name="16x"
value="16" />
</combo_box>
<text
type="string"
length="1"
follows="left|top"
height="12"
layout="topleft"
left="10"
name="advanced_settings"
top_pad="10"
width="308">
Advanced Settings (restart required):
</text>
<check_box
control_name="FSOverrideVRAMDetection"
height="16"
label="Override VRAM detection"
layout="topleft"
left="10"
top_pad="10"
name="FSOverrideVRAMDetection"
tool_tip="Enable the user to override VRAM detection (use with extreme caution)"
width="315"
/>
<slider
control_name="FSForcedVideoMemory"
enabled_control="FSOverrideVRAMDetection"
decimal_digits="0"
follows="left|top"
height="20"
increment="1"
initial_value="2"
label="GPU Dedicated VRAM (GB):"
label_width="275"
layout="topleft"
left="10"
min_val="0"
max_val="32"
name="FSForcedVideoMemory"
tool_tip="Important: Use with extreme caution.
Override the detected VRAM on your GPU.
This must not include 'shared' VRAM which is part of the system RAM.
If you do not understand the distinction then leave this control alone."
top_pad="5"
width="475"
/>
</panel>
<!--Rendering-->

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="contents" title="Aide pour les vignettes de l'inventaire">
<scroll_list name="inventory_thumbnails_list" tool_tip="Coller des éléments de votre inventaire">
<scroll_list.columns label="Élément d'inventaire" name="item_name"/>
<scroll_list.columns label="Image existante" name="existing_texture"/>
<scroll_list.columns label="Nouvelle image" name="new_texture"/>
</scroll_list>
<button label="Coller des éléments de l'inventaire" name="paste_items_btn"/>
<button label="Coller des images à partir de l'inventaire" name="paste_textures_btn"/>
<button label="Écrire les vignettes" name="write_thumbnails_btn"/>
<button label="Enregistrer les éléments sans vignette" name="log_missing_thumbnails_btn"/>
<button label="Effacer les vignettes des éléments collés" name="clear_thumbnails_btn"/>
</floater>

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu name="Outfit">
<menu_item_call label="Porter - Remplacer votre tenue" name="wear_replace" />
<menu_item_call label="Porter - Ajouter à votre tenue" name="wear_add" />
<menu_item_call label="Retirer - Retirer de votre tenue" name="take_off" />
<menu_item_call label="Photo..." name="thumbnail" />
<menu_item_call label="Remplacer votre tenue" name="wear_replace" />
<menu_item_call label="Ajouter à votre tenue" name="wear_add" />
<menu_item_call label="Retirer de votre tenue" name="take_off" />
<menu_item_call label="Image..." name="thumbnail"/>
<menu_item_call label="Modifier votre tenue" name="edit"/>
<menu_item_call label="Renommer votre tenue" name="rename"/>
<menu_item_call label="Enregistrer dans cette tenue" name="save"/>
<menu_item_call label="Supprimer la tenue" name="delete" />
<menu label="Nouveau vêtement" name="New Clothes">
<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
<menu_item_call label="Nouveaux pantalons" name="New Pants"/>
@ -24,7 +28,4 @@
<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
</menu>
<menu_item_call label="Modifier votre tenue" name="edit" />
<menu_item_call label="Renommer la tenue" name="rename" />
<menu_item_call label="Supprimer la tenue" name="delete" />
</context_menu>

View File

@ -21,6 +21,7 @@
<menu_item_call label="Nouveau script" name="New Script"/>
<menu_item_call label="Nouvelle note" name="New Note"/>
<menu_item_call label="Nouveau geste" name="New Gesture"/>
<menu_item_call label="Nouveau matériau" name="New Material"/>
<menu label="Nouveaux habits" name="New Clothes">
<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
<menu_item_call label="Nouveau pantalon" name="New Pants"/>
@ -52,6 +53,7 @@
<menu_item_call label="Chargements de sons" name="Sound uploads"/>
<menu_item_call label="Chargements danimations" name="Animation uploads"/>
<menu_item_call label="Chargements de modèles" name="Model uploads"/>
<menu_item_call label="Chargements de matériaux PBR" name="PBR uploads"/>
</menu>
<menu label="Changer de type" name="Change Type">
<menu_item_call label="Défaut" name="Default"/>
@ -115,6 +117,7 @@
<menu_item_call label="Activer" name="Activate"/>
<menu_item_call label="Désactiver" name="Deactivate"/>
<menu_item_call label="Enregistrer sous" name="Save As"/>
<menu_item_call label="Rafraîchir les textures" name="Texture Refresh Attachment"/>
<menu_item_call label="Détacher de vous" name="Detach From Yourself"/>
<menu_item_call label="Porter" name="Wearable And Object Wear"/>
<menu label="Attacher à" name="Attach To"/>

View File

@ -1,9 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="Gear Outfit">
<menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear"/>
<menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
<menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
<menu_item_call label="Remplacer la tenue actuelle" name="wear"/>
<menu_item_call label="Ajouter à la tenue actuelle" name="wear_add"/>
<menu_item_call label="Supprimer de la tenue actuelle" name="take_off"/>
<menu_item_call label="Image" name="thumbnail"/>
<menu_item_call label="Renommer la tenue" name="rename"/>
<menu_item_call label="Enregister dans cette tenue" name="save"/>
<menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
<menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/>
<menu_item_call label="Développer tous les dossiers" name="expand"/>
<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
<menu label="Nouveaux habits" name="New Clothes">
<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
<menu_item_call label="Nouveau pantalon" name="New Pants"/>
@ -25,9 +31,4 @@
<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
</menu>
<menu_item_call label="Développer tous les dossiers" name="expand"/>
<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
<menu_item_call label="Renommer la tenue" name="rename"/>
<menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
<menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/>
</toggleable_menu>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Outfit">
<menu_item_call label="Porter - Remplacer à la tenue actuelle" name="wear_replace"/>
<menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
<menu_item_call label="Retirer - Supprimer de la tenue actuelle" name="take_off"/>
<menu_item_call label="Remplacer à la tenue actuelle" name="wear_replace"/>
<menu_item_call label="Ajouter à la tenue actuelle" name="wear_add"/>
<menu_item_call label="Supprimer de la tenue actuelle" name="take_off"/>
<menu_item_call label="Image..." name="thumbnail"/>
<menu_item_call label="Modifier la tenue" name="edit"/>
<menu_item_call label="Renommer la tenue" name="rename"/>
<menu_item_call label="Enregister dans cette tenue" name="save"/>
<menu_item_call label="Suprimmer la tenue" name="delete"/>
</context_menu>

View File

@ -3,4 +3,5 @@
<menu_item_call label="Téléporter" name="Teleport"/>
<menu_item_call label="Plus d'informations" name="More Information"/>
<menu_item_call label="Copier la SLurl" name="CopyToClipboard"/>
<menu_item_call label="Supprimer de l'historique" name="remove_from_history"/>
</toggleable_menu>

View File

@ -505,6 +505,7 @@
<menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
<menu_item_check label="Test de redémarrage de la région..." name="Region Restart Test"/>
<menu_item_call label="Navigateur de contenus Web" name="Web Content Browser"/>
<menu_item_call label="Aide pour les vignettes d'inventaire" name="Inventory Thumbnails Helper"/>
<menu_item_call label="Vider les polices" name="Dump Fonts"/>
<menu_item_call label="Vider les textures des polices" name="Dump Font Textures"/>
<menu_item_call label="Test de connexion FB" name="FB Connect Test"/>
@ -520,6 +521,7 @@
<menu_item_check label="Débogage clics" name="Debug Clicks"/>
<menu_item_check label="Débogage des vues" name="Debug Views"/>
<menu_item_check label="Déboguer l'Unicode" name="Debug Unicode"/>
<menu_item_check label="Déboguer les contrôles de la caméra" name="Debug Camera Controls"/>
<menu_item_check label="Débogage des info-bulles de noms" name="Debug Name Tooltips"/>
<menu_item_check label="Débogage des événements de souris" name="Debug Mouse Events"/>
<menu_item_check label="Débogage touches" name="Debug Keys"/>

View File

@ -5329,6 +5329,14 @@ Facteur LOD >4: A utiliser dans des circonstances particulières. Se réinitiali
Facteur LOD >8: N'a pas d'effet réel. Peut provoquer des erreurs.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="OverrideVRAMWarning">
AVERTISSEMENT : Le fait de passer outre la détection de la VRAM peut entraîner de l'instabilité.
La plupart des utilisateurs devraient laisser ce paramètre désactivé et laisser la visionneuse et le système d'exploitation déterminer la valeur correcte.
Ce paramètre est destiné aux cas où la détection de la VRAM indique des valeurs incorrectes. À utiliser avec précaution. En cas de doute, demandez l'aide de l'assistance technique.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CurrencyURIOverrideReceived">
Cette région a choisi de spécifier un portail monétaire tiers.
Veuillez noter que les achats de devises effectués par le biais de Firestorm Viewer sont des transactions entre vous (l'utilisateur) et le(s) fournisseur(s) ou vendeur(s) de la devise.
@ -5450,6 +5458,22 @@ Les mesh riggés sont conçus pour être attachés à l'avatar. Ni vous ni perso
Si vous souhaitez voir cet objet, retirez-le et rattachez-le à un point d'attache de l'avatar.
<usetemplate ignoretext="M'avertir lorsqu'un mesh riggé est attaché à un point du HUD." name="okignore" yestext="OK"/>
</notification>
<notification name="ConfirmOverwriteOutfit">
Les articles de la tenue sélectionnée seront remplacés par les articles que vous portez actuellement.
<usetemplate ignoretext="Confirmer avant de remplacer la tenue" name="okcancelignore" notext="Annuler" yestext="Enregistrer"/>
</notification>
<notification name="ClearInventoryThumbnailsWarning">
Vous êtes sur le point de supprimer les vignettes des éléments d'inventaire de la liste. Cette modification ne peut être annulée.
Voulez-vous continuer ?
<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
</notification>
<notification name="WriteInventoryThumbnailsWarning">
Vous êtes sur le point d'écraser les vignettes de certains ou de tous les éléments d'inventaire de la liste. Cette modification ne peut être annulée.
Voulez-vous continuer ?
<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
</notification>
<notification name="ReflectionProbeApplied">
ATTENTION : Vous avez fait de votre objet une sonde de réflexion. Cela modifiera implicitement l'objet pour imiter son volume d'influence et entraînera des modifications irréversibles de cet objet. Voulez-vous continuer ?
<usetemplate ignoretext="Conseils pour la sonde de réflexion" name="okcancelignore" notext="Annuler" yestext="OK"/>

View File

@ -0,0 +1,394 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="Texture">
<panel.string name="paste_error_face_selection_mismatch">
Lorsque plusieurs faces sont copiées, l'objet cible doit avoir le même nombre de faces sélectionnées.
</panel.string>
<panel.string name="paste_error_object_face_count_mismatch">
Lorsque toutes les faces d'un objet sont copiées, l'objet cible doit avoir le même nombre de faces.
</panel.string>
<panel.string name="paste_error_inventory_not_found">
Une ou plusieurs textures introuvables dans l'inventaire.
</panel.string>
<panel.string name="paste_options">
Copier les paramètres de texture dans le presse-papiers
</panel.string>
<tab_container name="tabs_material_type">
<panel label="PBR" name="panel_material_type_pbr">
<panel name="panel_material_maps">
<texture_picker name="pbr_control" label="Matériau" tool_tip="Cliquez pour choisir un matériau pbr"/>
<texture_picker name="base_color_picker" label="Couleur" tool_tip="Cliquez pour choisir la carte de couleurs de base (Albedo)"/>
<color_swatch name="base_color_tint_picker" label="Teinte" tool_tip="Cliquez pour choisir la teinte de la couleur de base"/>
<button name="btn_select_same_gltf" tool_tip="Sélectionner toutes les faces ayant le même matériau GLTF que celle-ci"/>
<texture_picker name="normal_map_picker" label="Normale" tool_tip="Cliquez pour choisir la carte normale"/>
<texture_picker name="emissive_map_picker" label="Émissive" tool_tip="Cliquez pour choisir la carte d'émission"/>
<color_swatch name="emissive_color_tint_picker" label="Teinte" tool_tip="Cliquez pour choisir la teinte de la couleur émissive"/>
<texture_picker name="metallic_map_picker" label="(O)RM" tool_tip="Cliquez pour choisir la carte de rugosité-métallicité, qui peut contenir un canal d'occlusion optionnel."/>
</panel> <!-- panel_material_maps -->
<panel name="panel_material_parameters">
<check_box label="Double face" name="double sided"/>
<spinner label="Alpha" name="transparency"/>
<text name="blend mode label">
Mode
</text>
<combo_box name="alpha mode">
<combo_box.item label="Opaque" name="Aucun"/>
<combo_box.item label="Fusion" name="Alpha blending"/>
<combo_box.item label="Masquage" name="Alpha masking"/>
</combo_box>
<spinner label="Coupure" name="alpha cutoff"/>
<spinner label="Métallicité" name="metalness factor"/>
<spinner label="Rugosité" name="roughness factor"/>
<button name="save_selected_pbr" label="Enregistrer"/>
</panel>
<!-- panel_material_parameters -->
<!-- BEGIN PBR Material texture transform parameters -->
<tab_container name="tabs_pbr_transforms">
<panel label="Tous" name="panel_pbr_transforms_all">
<panel name="pbr_transforms_all_scale">
<text name="pbr_transforms_all_scale_label">
Échelle
</text>
<text name="labelGltfTextureScaleU_All">
U
</text>
<button name="flipTextureScaleMU" tool_tip="Flip"/>
<text name="labelGltfTextureScaleV_All">
V
</text>
<button name="flipTextureScaleMV" tool_tip="Pivoter"/>
</panel> <!-- pbr_transforms_all_scale -->
<panel name="pbr_transforms_all_offset">
<text name="pbr_transforms_all_offset_label">
Décalage
</text>
<text name="labelGltfTextureOffsetU_All">
U
</text>
<text name="labelGltfTextureOffsetV_All">
V
</text>
</panel> <!-- pbr_transforms_all_offset -->
<panel name="pbr_transforms_all_rotation">
<text name="pbr_transforms_all_rotation_label">
Rotation
</text>
</panel> <!-- pbr_transforms_all_rotation -->
</panel> <!-- panel_pbr_transforms_all -->
<panel label="Couleur" name="panel_pbr_transforms_base_color">
<panel name="pbr_transforms_base_color_scale">
<text name="pbr_transforms_base_color_scale_label">
Échelle
</text>
<text name="labelGltfTextureScaleU_Base">
U
</text>
<button name="flipTextureScaleMU" tool_tip="Pivoter"/>
<text name="labelGltfTextureScaleV_Base">
V
</text>
<button name="flipTextureScaleMV" tool_tip="Pivoter"/>
</panel> <!-- pbr_transforms_base_color_scale -->
<panel name="pbr_transforms_base_color_offset">
<text name="pbr_transforms_base_color_offset_label">
Décalage
</text>
<text name="labelGltfTextureOffsetU_Base">
U
</text>
<text name="labelGltfTextureOffsetV_Base">
V
</text>
</panel> <!-- pbr_transforms_base_color_offset -->
<panel name="pbr_transforms_base_color_rotation">
<text name="pbr_transforms_base_color_rotation_label">
Rotation
</text>
</panel> <!-- pbr_transforms_base_color_rotation -->
</panel> <!-- panel_pbr_transforms_base_color -->
<panel label="Normale" name="panel_pbr_transforms_normal">
<panel name="pbr_transforms_normal_scale">
<text name="pbr_transforms_normal_scale_label">
Échelle
</text>
<text name="labelGltfTextureScaleU_Normal">
U
</text>
<button name="flipTextureScaleMU" tool_tip="Pivoter"/>
<text name="labelGltfTextureScaleV_Normal">
V
</text>
<button name="flipTextureScaleMV" tool_tip="Pivoter"/>
</panel> <!-- pbr_transforms_normal_scale -->
<panel name="pbr_transforms_normal_offset">
<text name="pbr_transforms_normal_offset_label">
Décalage
</text>
<text name="labelGltfTextureOffsetU_Normal">
U
</text>
<text name="labelGltfTextureOffsetV_Normal">
V
</text>
</panel> <!-- pbr_transforms_normal_offset -->
<panel name="pbr_transforms_normal_rotation">
<text name="pbr_transforms_normal_rotation_label">
Rotation
</text>
</panel> <!-- pbr_transforms_normal_rotation -->
</panel> <!-- panel_pbr_transforms_normal -->
<panel label="(O)RM" name="panel_pbr_transforms_metallic">
<panel name="pbr_transforms_orm_scale">
<text name="pbr_transforms_orm_scale_label">
Échelle
</text>
<text name="labelGltfTextureScaleU_Metallic">
U
</text>
<button name="flipTextureScaleMU" tool_tip="Pivoter"/>
<text name="labelGltfTextureScaleV_Metallic">
V
</text>
<button name="flipTextureScaleMV" tool_tip="Pivoter"/>
</panel> <!-- pbr_transforms_orm_scale -->
<panel name="pbr_transforms_orm_offset">
<text name="pbr_transforms_orm_offset_label">
Décalage
</text>
<text name="labelGltfTextureOffsetU_Metallic">
U
</text>
<text name="labelGltfTextureOffsetU_Metallic">
V
</text>
</panel> <!-- pbr_transforms_orm_offset -->
<panel name="pbr_transforms_orm_rotation">
<text name="pbr_transforms_orm_rotation_label">
Rotation
</text>
</panel> <!-- pbr_transforms_orm_rotation -->
</panel> <!-- panel_pbr_transforms_metallic -->
<panel label="Émissive" name="panel_pbr_transforms_emissive">
<panel name="pbr_transforms_emissive_scale">
<text name="pbr_transforms_emissive_scale_label">
Échelle
</text>
<text name="labelGltfTextureScaleU_Emissive">
U
</text>
<button name="flipTextureScaleMU" tool_tip="Pivoter"/>
<text name="labelGltfTextureScaleV_Emissive">
V
</text>
<button name="flipTextureScaleMV" tool_tip="Pivoter"/>
</panel> <!-- pbr_transforms_emissive_scale -->
<panel name="pbr_transforms_emissive_offset">
<text name="pbr_transforms_emissive_offset_label">
Décalage
</text>
<text name="labelGltfTextureOffsetU_Emissive">
U
</text>
<text name="labelGltfTextureOffsetV_Emissive">
V
</text>
</panel> <!-- pbr_transforms_emissive_offset -->
<panel name="pbr_transforms_emissive_rotation">
<text name="pbr_transforms_emissive_rotation_label">
Rotation
</text>
</panel> <!-- pbr_transforms_emissive_rotation -->
</panel> <!-- panel_pbr_transforms_emissive -->
</tab_container>
<!-- END PBR Material texture transform parameters -->
</panel> <!-- panel_material_type_pbr -->
<panel label="Blinn-Phong" name="panel_material_type_blinn_phong">
<layout_stack name="panel_material_type_blinn_phong_layout_stack">
<layout_panel name="panel_blinn_phong_maps">
<texture_picker name="texture control" label="Diffuse" tool_tip="Cliquez pour choisir une image"/>
<color_swatch name="colorswatch" label="Teinte" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
<button name="btn_select_same_diff" tool_tip="Sélectionner toutes les faces ayant la même texture diffuse que celle-ci"/>
<texture_picker label="Normale" name="bumpytexture control" tool_tip="Cliquez pour choisir une image"/>
<button name="btn_select_same_norm" tool_tip="Sélectionnez toutes les faces ayant la même carte normale que celle-ci"/>
<texture_picker label="Spéculaire" name="shinytexture control" tool_tip="Cliquez pour choisir une image"/>
<color_swatch label="Teinte" name="shinycolorswatch" tool_tip="Click to open color picker"/>
<button name="btn_select_same_spec" tool_tip="Sélectionner toutes les faces ayant la même carte spéculaire que celle-ci"/>
</layout_panel> <!-- panel_blinn_phong_maps -->
<layout_panel name="panel_blinn_phong_options">
<check_box label="Lumineux" name="checkbox fullbright"/>
<spinner name="ColorTrans" label="Transparence"/>
<text name="color trans percent">
%
</text>
<text name="label alphamode">
Mode alpha
</text>
<combo_box name="combobox alphamode">
<combo_box.item label="Aucun" name="None"/>
<combo_box.item label="Fusion alpha" name="Alpha blending"/>
<combo_box.item label="Masquage alpha" name="Alpha masking"/>
<combo_box.item label="Masque émissif" name="Emissive mask"/>
</combo_box>
<spinner label="Coupe masque" name="maskcutoff"/>
<text name="label bumpiness">
Relief
</text>
<combo_box name="combobox bumpiness">
<combo_box.item label="Aucun" name="None"/>
<combo_box.item label="Brillance" name="Brightness"/>
<combo_box.item label="Sombreté" name="Darkness"/>
<combo_box.item label="grain de bois" name="woodgrain"/>
<combo_box.item label="écorce" name="bark"/>
<combo_box.item label="briques" name="bricks"/>
<combo_box.item label="damier" name="checker"/>
<combo_box.item label="béton" name="concrete"/>
<combo_box.item label="croûteux" name="crustytile"/>
<combo_box.item label="pierre de taille" name="cutstone"/>
<combo_box.item label="disques" name="discs"/>
<combo_box.item label="gravier" name="gravel"/>
<combo_box.item label="pétrin" name="petridish"/>
<combo_box.item label="bardage" name="siding"/>
<combo_box.item label="carrelage en pierre" name="stonetile"/>
<combo_box.item label="stuc" name="stucco"/>
<combo_box.item label="aspiration" name="suction"/>
<combo_box.item label="trame" name="weave"/>
<!--
NORSPEC-182, ensure item doesn't show up in menu until it should
<combo_box.item label="Utiliser la texture" name="Use texture"/>
-->
</combo_box>
<text name="label shininess">
Luminosité
</text>
<combo_box name="combobox shininess">
<combo_box.item label="Aucune" name="None"/>
<combo_box.item label="Faible" name="Low"/>
<combo_box.item label="Moyenne" name="Medium"/>
<combo_box.item label="Elevée" name="High"/>
</combo_box>
<spinner name="glossiness" label="Brillance"/>
<spinner name="environment" label="Environnement"/>
</layout_panel> <!-- panel_blinn_phong_options -->
</layout_stack>
<tab_container name="tabs_blinn_phong_uvs">
<panel label="Diffuse" name="panel_blinn_phong_diffuse">
<panel name="transforms_diffuse_scale">
<text name="transforms_diffuse_scale_label">
Échelle
</text>
<text name="labelTexScaleU">
H
</text>
<button name="flipTextureScaleU" tool_tip="Pivoter"/>
<text name="labelTexScaleV">
V
</text>
<button name="flipTextureScaleV" tool_tip="Pivoter"/>
</panel> <!-- transforms_diffuse_scale -->
<panel name="transforms_diffuse_offset">
<text name="transforms_diffuse_offset_label">
Décalage
</text>
<text name="labelTexOffsetU">
H
</text>
<text name="labelTexOffsetV">
V
</text>
</panel> <!-- transforms_diffuse_offset -->
<panel name="transforms_diffuse_rotation">
<text name="transforms_diffuse_rotation_label">
Rotation
</text>
</panel> <!-- transforms_diffuse_rotation -->
</panel> <!-- panel_blinn_phong_diffuse -->
<panel label="Normale" name="panel_blinn_phong_normal">
<panel name="transforms_normal_scale">
<text name="transforms_normal_scale_label">
Échelle
</text>
<text name="labelBumpyScaleU">
H
</text>
<button name="flipTextureScaleNU" tool_tip="Pivoter"/>
<text name="labelBumpyScaleV">
V
</text>
<button name="flipTextureScaleNV" tool_tip="Pivoter"/>
</panel> <!-- transforms_normal_scale -->
<panel name="transforms_normal_offset">
<text name="transforms_normal_offset_label">
Décalage
</text>
<text name="labelBumpyOffsetU">
H
</text>
<text name="labelBumpyOffsetU">
V
</text>
</panel> <!-- transforms_normal_offset -->
<panel name="transforms_normal_rotation">
<text name="transforms_normal_rotation_label">
Rotation
</text>
</panel> <!-- transforms_normal_rotation -->
</panel> <!-- panel_blinn_phong_normal -->
<panel label="Spéculaire" name="panel_blinn_phong_specular">
<panel name="transforms_specular_scale">
<text name="transforms_specular_scale_label">
Échelle
</text>
<text name="labelShinyScaleU">
H
</text>
<button name="flipTextureScaleSU" tool_tip="Pivoter"/>
<text name="labelShinyScaleV">
V
</text>
<button name="flipTextureScaleSV" tool_tip="Pivoter"/>
</panel> <!-- transforms_specular_scale -->
<panel name="transforms_specular_offset">
<text name="transforms_specular_offset_label">
Décalage
</text>
<text name="labelShinyOffsetU">
H
</text>
<text name="labelShinyOffsetV">
V
</text>
</panel> <!-- transforms_specular_offset -->
<panel name="transforms_specular_rotation">
<text name="transforms_specular_rotation_label">
Rotation
</text>
</panel> <!-- transforms_specular_rotation -->
</panel> <!-- panel_blinn_phong_specular -->
</tab_container> <!-- tabs_blinn_phong_uvs -->
</panel> <!-- panel_material_type_blinn_phong -->
<panel label="Media" name="panel_material_type_media">
<text name="media_info">
L'URL du média choisi, s'il y en a un, va ici
</text>
<button name="add_media" label="Choisir..." tool_tip="Ajouter un média"/>
<button name="delete_media" label="Supprimer" tool_tip="Supprimer cette texture de média"/>
<button name="button align" label="Aligner" label_selected="Aligner le média" tool_tip="Aligner la texture du media (doit être chargé en premier)"/>
</panel> <!-- panel_material_type_media -->
</tab_container> <!-- tabs_material_type -->
<panel name="panel_face_params">
<spinner name="rptctrl" label="Répétitions / mètre"/>
<check_box label="Synchroniser les matériaux" name="checkbox_sync_settings" tool_tip="Synchronisation des paramètres de la carte de texture"/>
<check_box label="Aligner les faces planaires" name="checkbox planar align" tool_tip="Aligne les textures de toutes les faces sélectionnées sur la dernière face sélectionnée. Nécessite un mappage planaire des textures."/>
<text name="tex gen">
Mapping
</text>
<combo_box name="combobox texgen">
<combo_box.item label="Défaut" name="Default"/>
<combo_box.item label="Planaire" name="Planar"/>
</combo_box>
<button label="Aligner" name="button align textures" tool_tip="Aligne les couches de texture présentes"/>
</panel> <!-- panel_face_params -->
<button name="copy_face_btn" tool_tip="Copier les paramètres de texture dans le presse-papiers"/>
<button name="paste_face_btn" tool_tip="Coller les paramètres de texture à partir du presse-papiers"/>
<spinner label="Lueur" name="glow"/>
</panel> <!-- Texture -->

View File

@ -2,7 +2,10 @@
<panel label="Affichage" name="Display panel">
<tab_container label="Paramètres d'affichage" name="tabs">
<panel label="Général" name="General">
<text name="preset_label">Preset utilisé : </text>
<text name="preset_label">Préréglage utilisé : </text>
<text name="preset_text">
(Aucun)
</text>
<text name="QualitySpeed">Qualité et performance :</text>
<text name="FasterText">Performance</text>
<text name="BetterText">Qualité</text>
@ -13,25 +16,34 @@
<check_box label="Mode plein écran" name="Fullscreen Mode" tool_tip="Exécuter Firestorm en mode plein écran. Un redémarrage est nécessaire pour changer de mode."/>
<text name="ShadersText">Shaders :</text>
<check_box label="Transparence de l'eau" name="TransparentWater"/>
<check_box label="Relief &amp; Brillance" name="BumpShiny"/>
<check_box label="Shaders atmosphériques" name="WindLightUseAtmosShaders"/>
<check_box label="Éclairage avancé" tool_tip="Permet un rendu de lumière avancé" name="UseLightShaders"/>
<check_box label="Occlusion ambiante" name="UseSSAO"/>
<check_box label="Reflets affichés à l'écran (SSR)" name="ScreenSpaceReflections"/>
<text name="shadows_label">Ombres :</text>
<combo_box name="ShadowDetail">
<combo_box.item label="Aucunes" name="0"/>
<combo_box.item label="Soleil/Lune" name="1"/>
<combo_box.item label="Soleil/Lune/Projecteurs" name="2"/>
</combo_box>
<text name="ReflectionDetailText">
Détails des reflets :
</text>
<combo_box name="ReflectionDetail">
<combo_box.item label="Statiques" name="0"/>
<combo_box.item label="Statiques&amp;dynamiques" name="1"/>
<combo_box.item label="Temps réel" name="2"/>
</combo_box>
<text name="ReflectionProbeText">
Couverture des reflets :
</text>
<combo_box name="ReflectionLevel">
<combo_box.item label="Aucune" name="0"/>
<combo_box.item label="Soleil / Lune" name="1"/>
<combo_box.item label="Soleil / Lune &amp; Projecteurs" name="2"/>
<combo_box.item label="Manuels seulement" name="1"/>
<combo_box.item label="Manuels &amp; terrain" name="2"/>
<combo_box.item label="Scène complète" name="3"/>
</combo_box>
<text name="reflection_label">Reflets aquatiques :</text>
<combo_box name="Reflections">
<combo_box.item label="Minimaux" name="0"/>
<combo_box.item label="Terrain et arbres" name="1"/>
<combo_box.item label="Tous les objets statiques" name="2"/>
<combo_box.item label="Avatars et objets" name="3"/>
<combo_box.item label="Tout" name="4"/>
</combo_box>
<text name="local lights_label" tool_tip="Affecte le nombre de sources de lumière lorsque l'éclairage avancé est désactivé. Un redémarrage est requis pour changer de mode.">Sources de lumière</text>
<text width="185" name="local lights_label" tool_tip="Affecte le nombre de sources de lumière lorsque l'éclairage avancé est désactivé. Un redémarrage est requis pour changer de mode.">
Éclairage ponctuel (redémarrage) :
</text>
<combo_box name="LocalLightsDetail">
<combo_box.item label="Toutes (par défaut)" name="3"/>
<combo_box.item label="Réduites" name="2"/>
@ -45,6 +57,7 @@
<slider label="Qualité post-traitement" name="RenderPostProcess"/>
<text name="PostProcessText">Basse</text>
<slider label="Propriétés physiques des avatars" name="AvatarPhysicsDetail"/>
<slider label="Exposition" name="RenderExposure"/>
<text name="MeshDetailText">Facteurs de détails liés à la distance :</text>
<slider label=" Objets et Sculpts" name="ObjectMeshDetail"/>
<slider label=" Prims flexibles" name="FlexibleMeshDetail"/>
@ -52,25 +65,23 @@
<slider label=" Avatars" name="AvatarMeshDetail"/>
<slider label=" Terrain" name="TerrainMeshDetail"/>
<slider label=" Ciel" name="SkyMeshDetail"/>
<text name="Presets_Label">
Préréglages
</text>
<button left="270" label="Enregistrer" name="PrefSaveButton"/>
<button left_pad="5" label="Charger" name="PrefLoadButton"/>
<button left_pad="5" label="Supprimer" name="PrefDeleteButton"/>
<text name="AvatarRenderingText">Rendu des avatars :</text>
<check_box label="Avatars 2D" name="AvatarImpostors"/>
<check_box label="Flexibilité des vêtements" name="AvatarCloth"/>
<text name="TerrainDetailText">Détails du terrain :</text>
<radio_group name="TerrainDetailRadio">
<radio_item label="Bas" name="0"/>
<radio_item label="Haut" name="2"/>
</radio_group>
<button tool_tip="Rétablit les valeurs par défaut." name="Defaults"/>
<button label="Enregistrer" name="PrefSaveButton"/>
<button label="Charger" name="PrefLoadButton"/>
<button label="Supprimer" name="PrefDeleteButton"/>
</panel>
<panel label="Paramètres matériels" name="Hardware Settings">
<check_box label="Filtrage Anisotrope (plus lent lorsqu'il est activé)" name="ani"/>
<check_box label="Activer VSync" name="vsync" tool_tip="Synchronise la fréquence d'images avec la fréquence de rafraîchissement du moniteur, ce qui peut entraîner une augmentation du lag et des images saccadées."/>
<check_box label="Activer la compression de textures sans pertes (Redémarrage requis)" name="texture compression" tool_tip="Activer la compression des textures dans la mémoire graphique permet de charger des textures de résolution supérieure et une prise en charge d'un nombre de textures plus élevé pour le même cout mémoire."/>
<check_box label="Active la prise en charge des écrans HiDPI (Mac OSX seulement; Redémarrage requis)" name="use HiDPI" tool_tip="Active OpenGL pour l'affichage haute résolution."/>
<text name="Antialiasing:">Anticrénelage :</text>
<text width="235" name="Antialiasing:" tool_tip="La modification de ce paramètre peut nécessiter un redémarrage de certains ordinateurs.">
Anticrénelage (redémarrage recommandé) :
</text>
<combo_box label="Anticrénelage" name="fsaa">
<combo_box.item label="Désactivé" name="FSAADisabled"/>
<combo_box.item label="2x" name="2x"/>
@ -78,31 +89,31 @@
<combo_box.item label="8x" name="8x"/>
<combo_box.item label="16x" name="16x"/>
</combo_box>
<spinner label="Gamma :" name="gamma"/>
<text name="brightness text">Baisser la valeur pour augmenter la brillance</text>
<slider label="Mémoire vidéo utilisée par le viewer (Mo) :" label_width="235" width="450" name="GraphicsCardTextureMemory" tool_tip="Quantité de mémoire à allouer pour les textures. Par défaut, la mémoire de la carte vidéo jusqu'à 512Mo. Réduire ce paramètre peut améliorer les performances, mais peut également rendre les textures plus floues. Augmenter cette valeur au-delà de 512Mo n'est pas recommandé. Même si votre carte graphique le supporte, l'impact sur la mémoire sera conséquent et se traduira par des ralentissements."/>
<check_box label="Activer la mémoire de texture dynamique" name="FSDynamicTextureMemory" tool_tip="Permet le calcul de la mémoire de texture dynamique (uniquement disponible sur les systèmes 64 bits et les GPU AMD/NVIDIA avec au moins 512 Mo de mémoire vidéo)" width="315" />
<slider label="Mémoire tampon de texture minimale (Mo):" name="FSDynamicTextureMemoryMinTextureMemory" tool_tip="La quantité minimale de mémoire à allouer pour les textures. Cela permettra de s'assurer que la quantité spécifiée sera toujours utilisée pour les textures, même si elle dépasse la quantité de mémoire vidéo disponible. Si la quantité spécifiée plus les réserves dépassent la quantité de mémoire vidéo physique, elle sera plafonnée en conséquence."/>
<slider label="Réserve supplémentaire de mémoire tampon (%):" name="FSDynamicTextureMemoryCacheReserve" tool_tip="Le pourcentage de mémoire vidéo physique réservé aux textures chargées en cache qui ne sont actuellement pas affichées."/>
<slider label="Réserve de mémoire vidéo physique (%):" name="FSDynamicTextureMemoryGPUReserve" tool_tip="Le pourcentage de mémoire vidéo physique réservé à un autre usage."/>
<spinner label="Ratio de distance du brouillard :" name="fog"/>
<text name="advanced_settings">
Paramètres avancés (redémarrage requis) :
</text>
<check_box label="Ignorer la détection de la VRAM" name="FSOverrideVRAMDetection" tool_tip="Permet à l'utilisateur d'ignorer la détection de VRAM (à utiliser avec une extrême prudence)"/>
<slider label="VRAM dédiée du GPU (Go) :" name="FSForcedVideoMemory" tool_tip="Important : à utiliser avec une extrême prudence.
Ignorer la VRAM détectée sur votre GPU.
Cela ne doit pas inclure la VRAM 'partagée' qui fait partie de la RAM du système.
Si vous ne comprenez pas la distinction, ne vous souciez pas de ce contrôle."/>
</panel>
<panel label="Rendu" name="Rendering">
<text name="World Updating">Actualisation de l'univers :</text>
<check_box label="Figer les mises à jour de l'univers (Met tout en pause)" tool_tip="Cochez cette option pour figer toutes les mises à jour provenant de l'univers - Ceci interrompra toutes les actions visuelles mais n'affectera pas les conversations écrites ou vocales" name="WorldPause"/>
<text name="Texture Rendering">Rendu des textures :</text>
<check_box label="Limiter le résolution maximale des textures à 512px (64bit seulement; redémarrage requis)" tool_tip="Activée, cette option limite la résomution maximale d'affichage des textures dans Second Life à 512px. Cela permet d'afficher plus de textures avant de dépasser la limite de mémoire disponible et évite de voir des textures floues." name="FSRestrictMaxTextureSize"/>
<check_box label="Utiliser HTTP pour récupérer les textures" tool_tip="Cochez cette option pour charger les textures en utilisant le protocole HTTP - désactivez cette option si vous avez des problèmes d'affichage et souhaitez utiliser le protocole UDP à la place." name="TexturesHTTP"/>
<text name="TextureDetailLabel">Qualité max. des textures :</text>
<combo_box name="TextureDetail">
<text name="TextureDetailLabel">
Qualité max. des textures :
</text>
<combo_box name="TextureDetail" tool_tip="Qualité de chargement des textures, affecte le paramètre TextureDiscardLevel">
<combo_box.item label="Normale" name="0"/>
<combo_box.item label="Moyenne" name="3"/>
<combo_box.item label="Basse" name="4"/>
<combo_box.item label="Pas de textures" name="5"/>
</combo_box>
<text name="Alpha Mask Rendering">Rendu des masques alphas :</text>
<check_box label="Activer les masques alpha lorsque 'Éclairage avancé' n'est pas activé" tool_tip="Lorsqu'activé, les masques alpha seront pris en compte lorsque l'éclairage avancé est désactivé" name="RenderAutoMaskAlphaNonDeferred"/>
<check_box label="Activer les masques alpha lorsque 'Éclairage avancé' est activé" tool_tip="Lorsqu'activé, les masques alpha seront pris en compte lorsque l'éclairage avancé est activé" name="RenderAutoMaskAlphaDeferred"/>
<check_box label="Activer les masques alpha" tool_tip="Si cette option est cochée, le rendu des masques Alpha (bits transparents) est correct." name="RenderAutoMaskAlphaDeferred"/>
<text name="Miscellaneous Rendering">Divers :</text>
<check_box label="Éclat lumineux" tool_tip="Activer l'éclat lumineux. Noter que la force doit être définie sur 0 pour désactiver l'éclat lumineux lorsque les ombres sont activées." name="RenderGlow"/>
<slider label="Force :" tool_tip="Force de l'éclat lumineux. Une valeur plus élevée le rends plus diffus et plus doux (2 par défaut)" name="glow_strength"/>
@ -120,11 +131,10 @@
<panel label="Profondeur de champ" name="DOF panel">
<check_box label="Activer la profondeur de champ (Floutera la vue sauf au point de focalisation de la caméra)" name="UseDoF"/>
<check_box label="Activer pendant la modification d'objets ou de terrain" name="RenderDepthOfFieldInEditMode"/>
<check_box label="La mise au point de la profondeur de champ suit le pointeur" name="FSFocusPointFollowsPointer" tool_tip="La mise au point de la profondeur de champ (PdC) suivra votre curseur, ce comportement correspond à celui observé lors de l'utilisation de flycam. Utilisation en conjonction avec le verrouillage de la mise au point PdC"/>
<check_box label="La mise au point de la profondeur de champ suit le curseur" name="FSFocusPointFollowsPointer" tool_tip="La mise au point de la profondeur de champ (PdC) suivra votre curseur, ce comportement correspond à celui observé lors de l'utilisation de flycam. Utilisation en conjonction avec le verrouillage de la mise au point PdC"/>
<slider label="Indice d'ouverture :" name="CameraFNum" tool_tip="Indice d'ouverture de la caméra pour les effets de profondeur"/>
<slider label="Distance focale :" name="CameraFocal" tool_tip="Distance focale de la caméra pour les effets de profondeur (en millimètres)"/>
<slider label="Angle de champ :" name="Camera FOV" tool_tip="Angle de champ vertical de la caméra pour les effets de profondeur (en degrés)"/>
<slider label="Format d'image :" name="CameraAspectRatio" tool_tip="Rapport de format de l'écran pour les effets de profondeur"/>
<slider label="Dynamisme des transitions :" name="CameraFocusTrans" tool_tip="Temps nécessaire pour modifier l'effet de profondeur lors d'un mouvement de caméra"/>
<slider label="Qualité du rendu du floutage :" name="CameraDoFResScale" tool_tip="Définit la qualité du floutage et les performances de rendu. (Le plus élevé la meilleure qualité, le plus bas les meilleures performances)"/>
</panel>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="contents" title="Pomocnik miniaturek">
<scroll_list name="inventory_thumbnails_list" tool_tip="Wklej elementy ze swojej szafy">
<scroll_list.columns label="Element" name="item_name" />
<scroll_list.columns label="Istniejący obraz" name="existing_texture" />
<scroll_list.columns label="Nowy obraz" name="new_texture" />
</scroll_list>
<button label="Wklej elementy z szafy" name="paste_items_btn" />
<button label="Wklej tekstury z szafy" name="paste_textures_btn" />
<button label="Zapisz miniatury" name="write_thumbnails_btn" />
<button label="Loguj elementy bez miniatury" name="log_missing_thumbnails_btn" />
<button label="Usuń miniatury z wklejonych elementów" name="clear_thumbnails_btn" />
</floater>

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu name="Outfit">
<menu_item_call label="Załóż - Zastąp obecny strój" name="wear_replace" />
<menu_item_call label="Załóż - Dodaj do obecnego stroju" name="wear_add" />
<menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off" />
<menu_item_call label="Zastąp obecny strój" name="wear_replace" />
<menu_item_call label="Dodaj do obecnego stroju" name="wear_add" />
<menu_item_call label="Usuń z obecnego stroju" name="take_off" />
<menu_item_call label="Zdjęcie..." name="thumbnail" />
<menu_item_call label="Edytuj strój" name="edit" />
<menu_item_call label="Zmień nazwę stroju" name="rename" />
<menu_item_call label="Zapisz w tym stroju" name="save" />
<menu_item_call label="Usuń strój" name="delete" />
<menu label="Nowe ubranie" name="New Clothes">
<menu_item_call label="Nowa koszula" name="New Shirt"/>
<menu_item_call label="Nowe spodnie" name="New Pants"/>
@ -24,7 +28,4 @@
<menu_item_call label="Nowe włosy" name="New Hair"/>
<menu_item_call label="Nowe oczy" name="New Eyes"/>
</menu>
<menu_item_call label="Edytuj strój" name="edit" />
<menu_item_call label="Zmień nazwę stroju" name="rename" />
<menu_item_call label="Usuń strój" name="delete" />
</context_menu>

View File

@ -1,9 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="Gear Outfit">
<menu_item_call label="Załóż - Zastąp obecny strój" name="wear"/>
<menu_item_call label="Załóż - Dodaj do bieżącego stroju" name="wear_add"/>
<menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
<menu_item_call label="Zastąp obecny strój" name="wear"/>
<menu_item_call label="Dodaj do bieżącego stroju" name="wear_add"/>
<menu_item_call label="Usuń z obecnego stroju" name="take_off"/>
<menu_item_call label="Zdjęcie..." name="thumbnail" />
<menu_item_call label="Zmień nazwę stroju" name="rename" />
<menu_item_call label="Zapisz w tym stroju" name="save" />
<menu_item_call label="Usuń strój" name="delete_outfit" />
<menu_item_check label="Sortuj foldery zawsze wg. nazwy" name="sort_folders_by_name" />
<menu_item_call label="Rozwiń wszystkie foldery" name="expand"/>
<menu_item_call label="Zwiń wszystkie foldery" name="collapse"/>
<context_menu label="Nowe ubranie" name="New Clothes">
<menu_item_call label="Nowa koszula" name="New Shirt"/>
<menu_item_call label="Nowe spodnie" name="New Pants"/>
@ -25,9 +31,4 @@
<menu_item_call label="Nowe włosy" name="New Hair"/>
<menu_item_call label="Nowe oczy" name="New Eyes"/>
</context_menu>
<menu_item_call label="Rozwiń wszystkie foldery" name="expand"/>
<menu_item_call label="Zwiń wszystkie foldery" name="collapse"/>
<menu_item_call label="Zmień nazwę stroju" name="rename"/>
<menu_item_call label="Usuń strój" name="delete_outfit"/>
<menu_item_check label="Sortuj foldery zawsze wg. nazwy" name="sort_folders_by_name" />
</toggleable_menu>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Outfit">
<menu_item_call label="Załóż - Zastąp obecny strój" name="wear_replace" />
<menu_item_call label="Załóż - Dodaj do obecnego stroju" name="wear_add" />
<menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off" />
<menu_item_call label="Zastąp obecny strój" name="wear_replace" />
<menu_item_call label="Dodaj do obecnego stroju" name="wear_add" />
<menu_item_call label="Usuń z obecnego stroju" name="take_off" />
<menu_item_call label="Zdjęcie..." name="thumbnail" />
<menu_item_call label="Edytuj strój" name="edit" />
<menu_item_call label="Zmień nazwę stroju" name="rename" />
<menu_item_call label="Zapisz w tym stroju" name="save" />
<menu_item_call label="Usuń strój" name="delete" />
</context_menu>

View File

@ -4,4 +4,5 @@
<menu_item_call label="Więcej szczegółów" name="More Information" />
<menu_item_call label="Pokaż na mapie" name="show_on_map" />
<menu_item_call label="Kopiuj SLurl" name="CopyToClipboard" />
<menu_item_call label="Usuń z historii" name="remove_from_history" />
</toggleable_menu>

View File

@ -556,6 +556,7 @@
<menu_item_call label="Test przeglądarki mediów" name="Web Browser Test"/>
<menu_item_check label="Test restartu regionu" name="Region Restart Test"/>
<menu_item_call label="Przeglądarka treści internetowych" name="Web Content Browser"/>
<menu_item_call label="Pomocnik miniaturek" name="Inventory Thumbnails Helper" />
<menu_item_call label="Zrzuć czcionki" name="Dump Fonts" />
<menu_item_call label="Zrzuć tekstury czcionek" name="Dump Font Textures" />
<menu_item_call label="Zrzut SelectMgr" name="Dump SelectMgr"/>
@ -570,6 +571,7 @@
<menu_item_check label="Debuguj kliknięcia" name="Debug Clicks"/>
<menu_item_check label="Debuguj widoki" name="Debug Views"/>
<menu_item_check label="Debuguj Unicode" name="Debug Unicode" />
<menu_item_check label="Debuguj elementy sterujące kamery" name="Debug Camera Controls" />
<menu_item_check label="Debuguj chmurki dla podpowiedzi nazw" name="Debug Name Tooltips"/>
<menu_item_check label="Debuguj zdarzenia myszy" name="Debug Mouse Events"/>
<menu_item_check label="Debuguj klawisze" name="Debug Keys"/>

View File

@ -5177,6 +5177,13 @@ Rozważ wymianę obiektów, które wyglądają na zdeformowane z taką wartości
Mnożnik LOD >3: Zwiększa lag. Zalecane tylko dla fotografii.
Mnożnik LOD >4: Używaj tylko w specjalnych przypadkach. Resetuje się po restarcie.
Mnożnik LOD >8: Brak widocznych efektów. Może powodować błędy.
</notification>
<notification name="OverrideVRAMWarning">
UWAGA: Wyłączenie automatycznego wykrywania VRAM może zdestabilizować Twój komputer.
Większość użytkowników powinna pozostawić wykrywanie włączone i pozwolić przeglądarce oraz systemowi operacyjnemu określać poprawną wartość.
To ustawienie jest przeznaczone dla przypadków, gdy wykrywanie VRAM zgłasza nieprawidłowe wartości. Używaj ostrożnie, w razie wątpliwości zasięgnij porady Wsparcia.
</notification>
<notification name="CurrencyURIOverrideReceived">
W tym regionie wybrano portal walutowy strony trzeciej.
@ -5296,9 +5303,25 @@ Riggowane mesze są przeznaczone do dodawania do samego awatara. Ani ty, ani nik
Jeśli chcesz zobaczyć ten obiekt, to usuń go i ponownie dołącz do punktu doczepienia na awatarze.
<usetemplate ignoretext="Ostrzegaj, gdy dodatek z riggowanym meszem jest dołączany do punktu HUD" name="okignore" />
</notification>
<notification name="ConfirmOverwriteOutfit">
Zamierzasz zastąpić elementy wybranego stroju przedmiotami, które masz na sobie teraz.
<usetemplate ignoretext="Potwierdź przed nadpisaniem stroju" name="okcancelignore" notext="Anuluj" yestext="Zapisz" />
</notification>
<notification name="ClearInventoryThumbnailsWarning">
Zamierzasz usunąć miniatury elementów z listy. Tej zmiany nie można cofnąć.
Czy chcesz kontynuować?
<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak" />
</notification>
<notification name="WriteInventoryThumbnailsWarning">
Zamierzasz nadpisać miniatury wszystkich lub niektórych elementów z listy. Tej zmiany nie można cofnąć.
Czy chcesz kontynuować?
<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak" />
</notification>
<notification name="ReflectionProbeApplied">
UWAGA: Ten obiekt stanie się sondą refleksyjną - nastąpią w nim nieodwracalne zmiany. Sprawią one, że obiekt będzie naśladować wpływ sondy na otoczenie. Czy chcesz kontynuować?
<usetemplate ignoretext="Wskazówki sond refleksyjnych" name="okcancelignore" notext="Cancel" />
<usetemplate ignoretext="Wskazówki sond refleksyjnych" name="okcancelignore" notext="Anuluj" />
</notification>
<notification name="AutoAdjustHDRSky">
Edytujesz niebo inne niż HDR, które zostało automatycznie przekonwertowane na HDR. Aby usunąć HDR i mapowanie tonów, ustaw Nastrój Sondy Refleksyjnej na zero.

View File

@ -104,6 +104,11 @@
<combo_box label="Antyaliasing" name="fsaa">
<combo_box.item label="Wyłączony" name="FSAADisabled"/>
</combo_box>
<text name="advanced_settings">
Zaawansowane (wymagany restart):
</text>
<check_box label="Wyłącz autodetekcję VRAM" name="FSOverrideVRAMDetection" tool_tip="Zezwól na wyłączenie automatycznego wykrywania VRAM (używaj z zachowaniem szczególnej ostrożności)" />
<slider label="Dedykowana VRAM dla GPU (GB):" name="FSForcedVideoMemory" tool_tip="Ważne: używaj ze szczególną ostrożnością. || Zastąp wykrytą pamięć VRAM dla karty graficznej. || Nie może zawierać 'współdzielonej' pamięci VRAM, która jest częścią systemowej pamięci RAM. || Jeśli nie rozumiesz różnicy, zostaw tę opcję w spokoju." />
</panel>
<panel name="Rendering">
<text name="World Updating">

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="contents" title="Помощник по созданию миниатюр инвентаря">
<scroll_list name="inventory_thumbnails_list" tool_tip="Вставьте предметы из своего инвентаря">
<scroll_list.columns label="Предмет инвентаря" name="item_name"/>
<scroll_list.columns label="Существующая текстура" name="existing_texture"/>
<scroll_list.columns label="Новая текстура" name="new_texture"/>
</scroll_list>
<button label="Вставить предметы из инвентаря" name="paste_items_btn"/>
<button label="Вставить текстуры из инвентаря" name="paste_textures_btn"/>
<button label="Записать миниатюры" name="write_thumbnails_btn"/>
<button label="Список предметов без миниатюр" name="log_missing_thumbnails_btn"/>
<button label="Удалить миниатюры" name="clear_thumbnails_btn"/>
</floater>

View File

@ -136,8 +136,8 @@
<text name="selection_empty" width="120">
Ничего не выбрано.
</text>
<text name="remaining_capacity">
[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Подробнее]
<text name="more info label">
[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Больше информации]
</text>
<tab_container name="Object Info Tabs">
<panel label="Общие" name="General">
@ -466,6 +466,14 @@
<spinner label="Фокус" name="Light Focus"/>
<spinner label="Спад" name="Light Falloff"/>
<spinner label="Окружение" name="Light Ambiance"/>
<check_box label="Датчик отражений" name="Reflection Probe" tool_tip="Настраивает способ отражения объектов в пределах этого объема при включенном PBR" width="60" />
<combo_box name="Probe Volume Type" tool_tip="Выберите тип объема влияния датчика">
<combo_box.item label="Сфера" name="Sphere"/>
<combo_box.item label="Куб" name="Box"/>
</combo_box>
<check_box label="Динамика" name="Probe Dynamic" tool_tip="Если эта функция включена, аватары будут отображаться в отражениях в пределах объема влияния этого датчика." width="60" />
<spinner label="Окружение" label_width="65" name="Probe Ambiance" width="125" />
<spinner label="Клип Рядом" label_width="65" name="Probe Near Clip" width="125" />
<text name="label physicsshapetype" width="140">
Тип физической формы:
</text>

View File

@ -4,9 +4,9 @@
<menu_item_call label="Очистить Корзину" name="Empty Trash"/>
<menu_item_call label="Пустые потерянные и найденные" name="Empty Lost And Found"/>
<menu_item_call label="Телепорт" name="Landmark Open"/>
<menu_item_call label="Заменить текущий Костюм" name="Replace Outfit"/>
<menu_item_call label="Добавить в текущий Костюм" name="Add To Outfit"/>
<menu_item_call label="Удалить из текущего Костюма" name="Remove From Outfit"/>
<menu_item_call label="Сменить текущий костюм" name="Replace Outfit"/>
<menu_item_call label="Добавить элементы костюма" name="Add To Outfit"/>
<menu_item_call label="Снять элементы костюма" name="Remove From Outfit"/>
<menu_item_call label="Скопировать список костюма в буфер обмена" name="Copy outfit list to clipboard"/>
<menu_item_call label="Найти оригинал" name="Find Original"/>
<menu_item_call label="Очистить элемент" name="Purge Item"/>

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu name="Outfit">
<menu_item_call label="Надеть - Заменить текущий Костюм" name="wear_replace"/>
<menu_item_call label="Надеть - Добавить к текущему Костюму" name="wear_add"/>
<menu_item_call label="Снять - Удалить из текущего Костюма" name="take_off"/>
<menu_item_call label="Сменить текущий костюм" name="wear_replace"/>
<menu_item_call label="Добавить элементы костюма" name="wear_add"/>
<menu_item_call label="Снять элементы костюма" name="take_off"/>
<menu_item_call label="Изображение..." name="thumbnail"/>
<menu_item_call label="Изменить костюм" name="edit"/>
<menu_item_call label="Переименовать костюм" name="rename"/>
<menu_item_call label="Сохранить в этот костюм" name="save"/>
<menu_item_call label="Удалить костюм" name="delete"/>
<menu label="Новая одежда" name="New Clothes">
<menu_item_call label="Новая Рубашка" name="New Shirt"/>
<menu_item_call label="Новые Штаны" name="New Pants"/>
@ -24,7 +28,4 @@
<menu_item_call label="Новые Волосы" name="New Hair"/>
<menu_item_call label="Новые Глаза" name="New Eyes"/>
</menu>
<menu_item_call label="Изменить Костюм" name="edit"/>
<menu_item_call label="Переименовать Костюм" name="rename"/>
<menu_item_call label="Удалить Костюм" name="delete"/>
</context_menu>

View File

@ -71,10 +71,10 @@
<menu_item_call label="Телепорт" name="Landmark Open"/>
<menu_item_call label="Проиграть" name="Animation Open"/>
<menu_item_call label="Проиграть" name="Sound Open"/>
<menu_item_call label="Заменить комплект одежды" name="Replace Outfit"/>
<menu_item_call label="Добавить в комплект одежды" name="Add To Outfit"/>
<menu_item_call label="Создать элементы" name="Wear Items"/>
<menu_item_call label="Удалить из комплекта одежды" name="Remove From Outfit"/>
<menu_item_call label="Переодеться (сменить костюм)" name="Replace Outfit"/>
<menu_item_call label="Надеть (добавить в костюм)" name="Add To Outfit"/>
<menu_item_call label="Надеть элементы" name="Wear Items"/>
<menu_item_call label="Снять (убрать из костюма)" name="Remove From Outfit"/>
<menu_item_call label="Копировать список в буфер" name="Copy outfit list to clipboard"/>
<menu_item_call label="Найти оригинал" name="Find Original"/>
<menu_item_call label="Удалить объект" name="Purge Item"/>

View File

@ -1,9 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="Gear Outfit">
<menu_item_call label="Заменить текущий комплект" name="wear"/>
<menu_item_call label="Добавить в текущий комплект" name="wear_add"/>
<menu_item_call label="Удалить из текущего комплекта" name="take_off"/>
<menu_item_call label="Переодеться" name="wear"/>
<menu_item_call label="Надеть" name="wear_add"/>
<menu_item_call label="Снять" name="take_off"/>
<menu_item_call label="Изображение" name="thumbnail"/>
<menu_item_call label="Переименовать костюм" name="rename"/>
<menu_item_call label="Сохранить в этот костюм" name="save"/>
<menu_item_call label="Удалить костюм" name="delete_outfit"/>
<menu_item_check label="Всегда сортировать папки по имени" name="sort_folders_by_name"/>
<menu_item_call label="Развернуть все папки" name="expand"/>
<menu_item_call label="Свернуть все папки" name="collapse"/>
<context_menu label="Новая одежда" name="New Clothes">
<menu_item_call label="Новая рубашка" name="New Shirt"/>
<menu_item_call label="Новые штаны" name="New Pants"/>
@ -25,9 +31,4 @@
<menu_item_call label="Новые волосы" name="New Hair"/>
<menu_item_call label="Новые глаза" name="New Eyes"/>
</context_menu>
<menu_item_call label="Развернуть все папки" name="expand"/>
<menu_item_call label="Свернуть все папки" name="collapse"/>
<menu_item_call label="Переименовать комплект" name="rename"/>
<menu_item_call label="Удалить комплект" name="delete_outfit"/>
<menu_item_check label="Всегда сортировать папки по имени" name="sort_folders_by_name"/>
</toggleable_menu>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Outfit">
<menu_item_call label="Заменить текущий комплект" name="wear_replace"/>
<menu_item_call label="Добавить в текущий комплект" name="wear_add"/>
<menu_item_call label="Удалить из текущего комплекта" name="take_off"/>
<menu_item_call label="Изменить комплект" name="edit"/>
<menu_item_call label="Переименовать комплект" name="rename"/>
<menu_item_call label="Удалить комплект" name="delete"/>
<menu_item_call label="Переодеться" name="wear_replace"/>
<menu_item_call label="Надеть" name="wear_add"/>
<menu_item_call label="Снять" name="take_off"/>
<menu_item_call label="Изменить костюм" name="edit"/>
<menu_item_call label="Изображение..." name="thumbnail"/>
<menu_item_call label="Переименовать костюм" name="rename"/>
<menu_item_call label="Сохранить в этот костюм" name="save"/>
<menu_item_call label="Удалить костюм" name="delete"/>
</context_menu>

View File

@ -4,4 +4,5 @@
<menu_item_call label="Подробнее" name="More Information"/>
<menu_item_call label="Показать на Карте" name="show_on_map"/>
<menu_item_call label="Копировать SLurl" name="CopyToClipboard"/>
<menu_item_call label="Удалить из истории" name="remove_from_history"/>
</toggleable_menu>

View File

@ -598,6 +598,7 @@
<menu_item_call label="Тест браузера для просмотра медиа" name="Web Browser Test"/>
<menu_item_check label="Тест перезапуска региона..." name="Region Restart Test"/>
<menu_item_call label="Браузер Web содержимого" name="Web Content Browser"/>
<menu_item_call label="Помощник по созданию миниатюр инвентаря" name="Inventory Thumbnails Helper"/>
<menu_item_call label="Дамп шрифтов" name="Dump Fonts"/>
<menu_item_call label="Дамп текстур шрифтов" name="Dump Font Textures"/>
<menu_item_call label="Тест соединения с Facebook" name="FB Connect Test"/>
@ -612,6 +613,8 @@
<menu_item_check label="Отладка SelectMgr" name="Debug SelectMgr"/>
<menu_item_check label="Отладка нажатий" name="Debug Clicks"/>
<menu_item_check label="Отладка обзора" name="Debug Views"/>
<menu_item_check label="Отладка Юникода" name="Debug Unicode"/>
<menu_item_check label="Отладка управления камеры" name="Debug Camera Controls"/>
<menu_item_check label="Отладка названий инструментов подсказки" name="Debug Name Tooltips"/>
<menu_item_check label="Отладка событий мышки" name="Debug Mouse Events"/>
<menu_item_check label="Отладка клавиш" name="Debug Keys"/>

View File

@ -2376,6 +2376,15 @@
Примечание.
Вы изменили местоположение этого места, но остальные данные сохранили прежние значения.
</notification>
<notification name="ApplyInventoryToObject">
Вы применяете элемент инвентаря &apos;без копирования&apos;.
Этот элемент будет перемещен в инвентарь объекта, а не скопирован.
Переместите инвентарный элемент?
<usetemplate ignoretext="Предупредите меня, прежде чем я применю элементы &apos;без копирования&apos; к объекту" name="okcancelignore" notext="Отмена" yestext="OK"/>
</notification>
<notification name="MoveInventoryFromObject">
Вы выбрали &quot;не копируемые&quot; предметы.
Они будут перемещены в ваш инвентарь, а не скопированы.
@ -2383,6 +2392,7 @@
Переместить предмет(ы)?
<usetemplate ignoretext="Предупреждать перед перемещением &quot;не копируемых&quot; предметов из объекта" name="okcancelignore" notext="Отмена" yestext="Да"/>
</notification>
<notification name="MoveInventoryFromScriptedObject">
Вы выбрали &quot;не копируемые&quot; предметы. Они будут перемещены в ваш инвентарь, а не скопированы.
Так как объект является скриптовым, перемещение предметов в ваш инвентарий может вызвать ошибки скрипта.
@ -2841,6 +2851,22 @@ URL: [AUDIOURL]
Невозможно загрузить заметку.
Повторите попытку.
</notification>
<notification name="UnableToLoadMaterial">
Не удается загрузить материал.
Пожалуйста, попробуйте снова.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="MissingMaterialCaps">
Не подключен к области, пригодной для использования с материалами.
</notification>
<notification name="CantSelectReflectionProbe">
Вы установили датчик отражения, но функция "Выбрать датчики отражения" отключена. Чтобы иметь возможность выбирать датчики отражения, установите флажок "Строить" &gt; "Параметры" &gt; "Выбрать датчики отражения".
<usetemplate ignoretext="Предупреждает, если выбор датчиков отражения отключен." name="okignore" yestext="OK"/>
</notification>
<notification name="ScriptMissing">
Скрипта нет в базе данных.
</notification>
@ -3797,6 +3823,33 @@ https://wiki.firestormviewer.org/fs_voice
Просмотр этой текстуры невозможен, так как запрещено ее копирование и/или передача.
<usetemplate ignoretext="Предупреждать, если режим просмотра вживую недоступен для текстур с запрещенным копированием и/или передачей" name="okignore" yestext="Да"/>
</notification>
<notification name="LivePreviewUnavailablePBR">
Мы не можем показать предварительный просмотр этого материала, поскольку он запрещен для копирования, передачи и/или изменения.
<usetemplate ignoretext="Предупредить меня, что режим предварительного просмотра в реальном времени недоступен для материалов без копирования, передачи и/или изменения" name="okignore" yestext="OK"/>
</notification>
<notification name="FacePasteFailed">
Вставить не удалось. [REASON]
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="FailedToApplyTextureNoCopyToMultiple">
Не удалось применить текстуру. Вы не можете применить текстуру без копирования к нескольким объектам.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="FailedToApplyGLTFNoCopyToMultiple">
Не удалось применить материал GLTF. Вы не можете применить материал без копирования к нескольким объектам.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="FacePasteTexturePermissions">
Вы применили текстуру с ограниченными разрешениями, объект унаследует разрешения от текстуры.
<usetemplate ignoretext="Вставить: Вы применили текстуру с ограниченными разрешениями" name="notifyignore"/>
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="ConfirmLeaveCall">
Вы уверены, что хотите покинуть этот разговор?
<usetemplate ignoretext="Подтверждать перед выходом из разговора" name="okcancelignore" notext="Нет" yestext="Да"/>
@ -5244,6 +5297,16 @@ https://wiki.firestormviewer.org/fs_voice
Уровень LOD > 4: использовать в особых случаях. Возврат после relog.
Уровень LOD > 8: не имеет реального эффекта. Может вызвать ошибки.
</notification>
<notification name="OverrideVRAMWarning">
ПРЕДУПРЕЖДЕНИЕ: Переопределение функции обнаружения видеопамяти может привести к нестабильности.
Большинству пользователей рекомендуется отключить эту настройку и позволить
программе просмотра и операционной системе определить правильное значение.
Эта настройка предназначена для случаев, когда функция обнаружения видеопамяти выдает неверные значения.
Используйте с осторожностью, в случае сомнений обратитесь за консультацией в службу поддержки.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="CurrencyURIOverrideReceived">
Этот регион решил указать сторонний валютный портал.
Обратите внимание, что покупки валюты, сделанные через Firestorm Viewer, являются транзакциями между вами (пользователем) и поставщиком (ами) или продавцом (ами) валюты.
@ -5346,6 +5409,66 @@ https://wiki.firestormviewer.org/fs_voice
<button name="cancel" text="Отмена"/>
</form>
</notification>
<notification label="Создать вложенную папку" name="CreateSubfolder">
Назовите новую папку:
<form name="form">
<button name="OK" text="OK"/>
<button name="Cancel" text="Отмена"/>
</form>
</notification>
<notification name="SameFolderRequired">
Выбранные элементы должны находиться в одной папке.
<usetemplate name="okbutton" yestext="OK"/>
</notification>
<notification name="RiggedMeshAttachedToHUD">
Объект "[NAME]" прикрепленный к точке дисплея "[POINT]" содержит ригованый меш.
Ригованые мешевые объекты предназначены для прикрепления к аватару. Ни вы, ни кто-либо другой не увидит этот объект.
Если вы хотите увидеть этот объект, удалите его и снова прикрепите к точке прикрепления аватара.
<usetemplate ignoretext="Предупредить меня, когда к точке дисплея будет прикреплен меш." name="okignore" yestext="OK"/>
</notification>
<notification name="ConfirmOverwriteOutfit">
Это заменит предметы из выбранного костюма на те, что надеты сейчас.
<usetemplate ignoretext="Подтвердить перед перезаписью костюма." name="okcancelignore" notext="Отмена" yestext="Сохранить"/>
</notification>
<notification name="ClearInventoryThumbnailsWarning">
Вы собираетесь удалить миниатюры изображений из списка предметов инвентаря. Это изменение невозможно отменить.
Хотите продолжить?
<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
</notification>
<notification name="WriteInventoryThumbnailsWarning">
Вы собираетесь перезаписать миниатюры изображений для некоторых или всех элементов инвентаря в списке. Это изменение невозможно отменить.
Хотите продолжить?
<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
</notification>
<notification name="ReflectionProbeApplied">
ВНИМАНИЕ: Вы превратили свой объект в датчик отражения. Это приведет к неявному изменению объекта, чтобы имитировать его объем воздействия, и внесет необратимые изменения в объект. Хотите продолжить?
<usetemplate ignoretext="Советы по Датчикам отражений" name="okcancelignore" notext="Отмена" yestext="OK"/>
</notification>
<notification name="AutoAdjustHDRSky">
Вы редактируете изображение неба без разрешения HDR, которое было автоматически преобразовано в HDR. Чтобы удалить HDR и тональное отображение, установите значение Reflection Probe Ambiance равным нулю.
<usetemplate ignoretext="Предупреждение о настройке неба в режиме HDR" name="okignore" yestext="OK"/>
</notification>
<notification name="EnableAutoFPSWarning">
Вы собираетесь включить Автонастройку частоты кадров. Все несохраненные настройки графики будут потеряны.
Хотите сначала сохранить их?
<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
</notification>
<notification name="NoValidEnvSettingFound">
Не выбрана допустимая настройка окружающей среды.

View File

@ -0,0 +1,290 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel label="Текстура" name="Texture">
<panel.string name="paste_error_face_selection_mismatch">
При копировании нескольких граней у целевого объекта должно быть выбрано одинаковое количество граней.
</panel.string>
<panel.string name="paste_error_object_face_count_mismatch">
При копировании всех граней объекта целевой объект должен иметь одинаковое количество граней.
</panel.string>
<panel.string name="paste_error_inventory_not_found">
Одна или несколько текстур, которых нет в инвентаре.
</panel.string>
<panel.string name="paste_options">
Скопировать параметры текстуры в буфер обмена
</panel.string>
<tab_container name="tabs_material_type">
<panel label="PBR" name="panel_material_type_pbr">
<panel name="panel_material_maps">
<texture_picker name="pbr_control" label="Материал" tool_tip="Нажмите, чтобы выбрать материал pbr"/>
<texture_picker name="base_color_picker" label="База цвет" tool_tip="Нажмите, чтобы выбрать базовую цветовую схему (альбедо)."/>
<color_swatch name="base_color_tint_picker" label="Цвет" tool_tip="Нажмите, чтобы выбрать оттенок базового цвета"/>
<button name="btn_select_same_gltf" tool_tip="Выберите все грани из того же материала GLTF, что и эта"/>
<texture_picker name="normal_map_picker" label="Нормаль" tool_tip="Нажмите, чтобы выбрать карту нормалей"/>
<texture_picker name="emissive_map_picker" label="Излучение" tool_tip="Нажмите, чтобы выбрать карту излучений"/>
<color_swatch name="emissive_color_tint_picker" label="Цвет" tool_tip="Нажмите, чтобы выбрать оттенок излучаемого цвета"/>
<texture_picker name="metallic_map_picker" label="(O)RM" tool_tip="Нажмите, чтобы выбрать карту шероховатости металла, которая может содержать дополнительный окклюзионный канал"/>
</panel> <!-- panel_material_maps -->
<panel name="panel_material_parameters">
<check_box label="Двусторонний" name="double sided" width="100"/>
<spinner label="Альфа" name="transparency"/>
<text name="blend mode label">Режим</text>
<combo_box name="alpha mode">
<combo_box.item label="Непрозрачный" name="None"/>
<combo_box.item label="Смесь" name="Alpha blending"/>
<combo_box.item label="Маска" name="Alpha masking"/>
</combo_box>
<spinner label="Отсечка" name="alpha cutoff" />
<spinner label="Металлическ" label_width="75" width="130" name="metalness factor" />
<spinner label="Шершавость" label_width="75" width="130" name="roughness factor" />
<button name="save_selected_pbr" label="Сохранить"/>
</panel> <!-- panel_material_parameters -->
<!-- BEGIN PBR Material texture transform parameters -->
<tab_container name="tabs_pbr_transforms">
<panel name="panel_pbr_transforms_all" label="Все">
<panel name="pbr_transforms_all_scale">
<text name="pbr_transforms_all_scale_label">Масштаб</text>
<text name="labelGltfTextureScaleU_All">U</text>
<button name="flipTextureScaleMU" tool_tip="Перевернуть"/>
<text name="labelGltfTextureScaleV_All">V</text>
<button name="flipTextureScaleMV" tool_tip="Перевернуть"/>
</panel> <!-- pbr_transforms_all_scale -->
<panel name="pbr_transforms_all_offset">
<text name="pbr_transforms_all_offset_label">Смещение</text>
<text name="labelGltfTextureOffsetU_All">U</text>
<text name="labelGltfTextureOffsetV_All">V</text>
</panel> <!-- pbr_transforms_all_offset -->
<panel name="pbr_transforms_all_rotation">
<text name="pbr_transforms_all_rotation_label">Вращение</text>
</panel> <!-- pbr_transforms_all_rotation -->
</panel> <!-- panel_pbr_transforms_all -->
<panel name="panel_pbr_transforms_base_color" label="База Цвет">
<panel name="pbr_transforms_base_color_scale">
<text name="pbr_transforms_base_color_scale_label">Масштаб</text>
<text name="labelGltfTextureScaleU_Base">U</text>
<button name="flipTextureScaleMU" tool_tip="Перевернуть"/>
<text name="labelGltfTextureScaleV_Base">V</text>
<button name="flipTextureScaleMV" tool_tip="Перевернуть"/>
</panel> <!-- pbr_transforms_base_color_scale -->
<panel name="pbr_transforms_base_color_offset">
<text name="pbr_transforms_base_color_offset_label">Смещение</text>
<text name="labelGltfTextureOffsetU_Base">U</text>
<text name="labelGltfTextureOffsetV_Base">V</text>
</panel> <!-- pbr_transforms_base_color_offset -->
<panel name="pbr_transforms_base_color_rotation">
<text name="pbr_transforms_base_color_rotation_label">Вращение</text>
</panel> <!-- pbr_transforms_base_color_rotation -->
</panel> <!-- panel_pbr_transforms_base_color -->
<panel name="panel_pbr_transforms_normal" label="Нормаль">
<panel name="pbr_transforms_normal_scale">
<text name="pbr_transforms_normal_scale_label">Масштаб</text>
<text name="labelGltfTextureScaleU_Normal">U</text>
<button name="flipTextureScaleMU" tool_tip="Перевернуть"/>
<text name="labelGltfTextureScaleV_Normal">V</text>
<button name="flipTextureScaleMV" tool_tip="Перевернуть"/>
</panel> <!-- pbr_transforms_normal_scale -->
<panel name="pbr_transforms_normal_offset">
<text name="pbr_transforms_normal_offset_label">Смещение</text>
<text name="labelGltfTextureOffsetU_Normal">U</text>
<text name="labelGltfTextureOffsetV_Normal">V</text>
</panel> <!-- pbr_transforms_normal_offset -->
<panel name="pbr_transforms_normal_rotation">
<text name="pbr_transforms_normal_rotation_label">Вращение</text>
</panel> <!-- pbr_transforms_normal_rotation -->
</panel> <!-- panel_pbr_transforms_normal -->
<panel label="(O)RM" name="panel_pbr_transforms_metallic">
<panel name="pbr_transforms_orm_scale">
<text name="pbr_transforms_orm_scale_label">Масштаб</text>
<text name="labelGltfTextureScaleU_Metallic">U</text>
<button name="flipTextureScaleMU" tool_tip="Перевернуть"/>
<text name="labelGltfTextureScaleV_Metallic">V</text>
<button name="flipTextureScaleMV" tool_tip="Перевернуть"/>
</panel> <!-- pbr_transforms_orm_scale -->
<panel name="pbr_transforms_orm_offset">
<text name="pbr_transforms_orm_offset_label">Смещение</text>
<text name="labelGltfTextureOffsetU_Metallic">U</text>
<text name="labelGltfTextureOffsetU_Metallic">V</text>
</panel> <!-- pbr_transforms_orm_offset -->
<panel name="pbr_transforms_orm_rotation">
<text name="pbr_transforms_orm_rotation_label">Вращение</text>
</panel> <!-- pbr_transforms_orm_rotation -->
</panel> <!-- panel_pbr_transforms_metallic -->
<panel name="panel_pbr_transforms_emissive" label="Излучение">
<panel name="pbr_transforms_emissive_scale">
<text name="pbr_transforms_emissive_scale_label">Масштаб</text>
<text name="labelGltfTextureScaleU_Emissive">U</text>
<button name="flipTextureScaleMU" tool_tip="Перевернуть"/>
<text name="labelGltfTextureScaleV_Emissive">V</text>
<button name="flipTextureScaleMV" tool_tip="Перевернуть"/>
</panel> <!-- pbr_transforms_emissive_scale -->
<panel name="pbr_transforms_emissive_offset">
<text name="pbr_transforms_emissive_offset_label">Смещение</text>
<text name="labelGltfTextureOffsetU_Emissive">U</text>
<text name="labelGltfTextureOffsetV_Emissive">V</text>
</panel> <!-- pbr_transforms_emissive_offset -->
<panel name="pbr_transforms_emissive_rotation">
<text name="pbr_transforms_emissive_rotation_label">Вращение</text>
</panel> <!-- pbr_transforms_emissive_rotation -->
</panel> <!-- panel_pbr_transforms_emissive -->
</tab_container>
<!-- END PBR Material texture transform parameters -->
</panel> <!-- panel_material_type_pbr -->
<panel label="Блинн-Фонг" name="panel_material_type_blinn_phong">
<layout_stack name="panel_material_type_blinn_phong_layout_stack">
<layout_panel name="panel_blinn_phong_maps">
<texture_picker name="texture control" label="Диффузия" tool_tip="Нажмите, чтобы выбрать картинку"/>
<color_swatch name="colorswatch" label="Цвет" tool_tip="Нажмите, чтобы открыть палитру цветов"/>
<button name="btn_select_same_diff" tool_tip="Выделите все грани с такой же рассеянной текстурой, как у этой"/>
<texture_picker label="Нормаль" name="bumpytexture control" tool_tip="Нажмите, чтобы выбрать картинку"/>
<button name="btn_select_same_norm" tool_tip="Выберите все грани с такой же картой нормалей, как у этой"/>
<texture_picker label="Отражение" name="shinytexture control" tool_tip="Нажмите, чтобы выбрать картинку"/>
<color_swatch label="Цвет" name="shinycolorswatch" tool_tip="Нажмите, чтобы открыть палитру цветов"/>
<button name="btn_select_same_spec" tool_tip="Выберите все грани с такой же зеркальной картой, как у этой"/>
</layout_panel> <!-- panel_blinn_phong_maps -->
<layout_panel name="panel_blinn_phong_options">
<check_box label="Полная яркость" name="checkbox fullbright"/>
<spinner name="ColorTrans" label="Прозрачность"/>
<text name="color trans percent">%</text>
<text name="label alphamode" width="80">Альфа-режим</text>
<combo_box name="combobox alphamode">
<combo_box.item label="Ничто" name="None"/>
<combo_box.item label="Альфа-смешивание" name="Alpha blending"/>
<combo_box.item label="Альфа-маскировка" name="Alpha masking"/>
<combo_box.item label="Излучающая маска" name="Emissive mask"/>
</combo_box>
<spinner label="Отсечка маски" label_width="85" name="maskcutoff"/>
<text name="label bumpiness">Неровности</text>
<combo_box name="combobox bumpiness">
<combo_box.item label="Нет" name="None"/>
<combo_box.item label="Яркость" name="Brightness"/>
<combo_box.item label="Темнота" name="Darkness"/>
<combo_box.item label="резьба по дереву" name="woodgrain"/>
<combo_box.item label="кора" name="bark"/>
<combo_box.item label="кирпичи" name="bricks"/>
<combo_box.item label="клетчатый" name="checker"/>
<combo_box.item label="бетон" name="concrete"/>
<combo_box.item label="черепица" name="crustytile"/>
<combo_box.item label="граненый камень" name="cutstone"/>
<combo_box.item label="диски" name="discs"/>
<combo_box.item label="гравий" name="gravel"/>
<combo_box.item label="окаменелый" name="petridish"/>
<combo_box.item label="сайдинг" name="siding"/>
<combo_box.item label="кафель" name="stonetile"/>
<combo_box.item label="штукатурка" name="stucco"/>
<combo_box.item label="всасывание" name="suction"/>
<combo_box.item label="тканый" name="weave"/>
<!--
NORSPEC-182, ensure item doesn't show up in menu until it should
<combo_box.item label="Use texture" name="Use texture"/>
-->
</combo_box>
<text name="label shininess">Блеск</text>
<combo_box name="combobox shininess">
<combo_box.item label="Нет" name="None"/>
<combo_box.item label="Низкий" name="Low"/>
<combo_box.item label="Средний" name="Medium"/>
<combo_box.item label="Высокий" name="High"/>
</combo_box>
<spinner name="glossiness" label="Глянцевитость" label_width="85"/>
<spinner name="environment" label="Окружение" label_width="85"/>
</layout_panel> <!-- panel_blinn_phong_options -->
</layout_stack>
<tab_container name="tabs_blinn_phong_uvs">
<panel label="Диффузия" name="panel_blinn_phong_diffuse">
<panel name="transforms_diffuse_scale">
<text name="transforms_diffuse_scale_label">Масштаб</text>
<text name="labelTexScaleU">H</text>
<button name="flipTextureScaleU" tool_tip="Перевернуть"/>
<text name="labelTexScaleV">V</text>
<button name="flipTextureScaleV" tool_tip="Перевернуть"/>
</panel> <!-- transforms_diffuse_scale -->
<panel name="transforms_diffuse_offset">
<text name="transforms_diffuse_offset_label">Смещение</text>
<text name="labelTexOffsetU">H</text>
<text name="labelTexOffsetV">V</text>
</panel> <!-- transforms_diffuse_offset -->
<panel name="transforms_diffuse_rotation">
<text name="transforms_diffuse_rotation_label">Вращение</text>
</panel> <!-- transforms_diffuse_rotation -->
</panel> <!-- panel_blinn_phong_diffuse -->
<panel label="Нормаль" name="panel_blinn_phong_normal">
<panel name="transforms_normal_scale">
<text name="transforms_normal_scale_label">Масштаб</text>
<text name="labelBumpyScaleU">H</text>
<button name="flipTextureScaleNU" tool_tip="Перевернуть"/>
<text name="labelBumpyScaleV">V</text>
<button name="flipTextureScaleNV" tool_tip="Перевернуть"/>
</panel> <!-- transforms_normal_scale -->
<panel name="transforms_normal_offset">
<text name="transforms_normal_offset_label">Смещение</text>
<text name="labelBumpyOffsetU">H</text>
<text name="labelBumpyOffsetU">V</text>
</panel> <!-- transforms_normal_offset -->
<panel name="transforms_normal_rotation">
<text name="transforms_normal_rotation_label">Вращение</text>
</panel> <!-- transforms_normal_rotation -->
</panel> <!-- panel_blinn_phong_normal -->
<panel label="Отражение" name="panel_blinn_phong_specular">
<panel name="transforms_specular_scale">
<text name="transforms_specular_scale_label">Масштаб</text>
<text name="labelShinyScaleU">H</text>
<button name="flipTextureScaleSU" tool_tip="Перевернуть"/>
<text name="labelShinyScaleV">V</text>
<button name="flipTextureScaleSV" tool_tip="Перевернуть"/>
</panel> <!-- transforms_specular_scale -->
<panel name="transforms_specular_offset">
<text name="transforms_specular_offset_label">Смещение</text>
<text name="labelShinyOffsetU">H</text>
<text name="labelShinyOffsetV">V</text>
</panel> <!-- transforms_specular_offset -->
<panel name="transforms_specular_rotation">
<text name="transforms_specular_rotation_label">Вращение</text>
</panel> <!-- transforms_specular_rotation -->
</panel> <!-- panel_blinn_phong_specular -->
</tab_container> <!-- tabs_blinn_phong_uvs -->
</panel> <!-- panel_material_type_blinn_phong -->
<panel name="panel_material_type_media" label="Медиа">
<text name="media_info">URL-адрес выбранного медиа, если таковой имеется, находится здесь</text>
<web_browser name="title_media" start_url="about:blank" decouple_texture_size="true"/>
<button width="85" name="add_media" label="Выбрать..." tool_tip="Добавить медиа"/>
<button width="85" name="delete_media" label="Удалить" tool_tip="Удалите эту текстуру медиа"/>
<button width="85" name="button align" label="Выровнять" label_selected="Выравнивание медиа" tool_tip="Выровнять текстуру медиа (необходимо сначала загрузить)"/>
</panel> <!-- panel_material_type_media -->
</tab_container> <!-- tabs_material_type -->
<panel name="panel_face_params">
<spinner name="rptctrl" label="Повторы на метр"/>
<check_box label="Синхронизация материалов" name="checkbox_sync_settings" tool_tip="Синхронизировать параметры текстурной карты"/>
<check_box label="Выравнивание плоских граней" name="checkbox planar align" tool_tip="Выровняйте текстуры на всех выбранных гранях по последней выбранной грани. Требуется плоское сопоставление текстур."/>
<text name="tex gen">Отображение</text>
<combo_box name="combobox texgen">
<combo_box.item label="По умолчанию" name="Default"/>
<combo_box.item label="Плоский" name="Planar"/>
</combo_box>
<button label="Выровнять" name="button align textures" tool_tip="Выравнивание текущих слоев текстуры"/>
</panel> <!-- panel_face_params -->
<button name="copy_face_btn" tool_tip="Скопировать параметры текстуры в буфер обмена"/>
<button name="paste_face_btn" tool_tip="Вставка параметров текстуры из буфера обмена"/>
<spinner label="Свечение" name="glow" width="115" label_width="60"/>
</panel> <!-- Texture -->

View File

@ -220,7 +220,8 @@
<check_box label="Предварительный просмотр анимации на собственном аватара во время загрузки" tool_tip="Предварительный просмотр анимации на собственном аватара во время загрузки" name="FSUploadAnimationOnOwnAvatar" />
<check_box label="Всегда раскрывать расширенную информацию в предпросмотре анимации" tool_tip="Развернуть расширенную информацию об анимации в всплывающем окне предварительного просмотра анимации по умолчанию." name="FSAnimationPreviewExpanded"/>
<check_box label="Включить расширенную информацию скрипта" name="FSScriptInfoExtended" tool_tip="Если включено, расширяет базовую функцию информации скрипта с различными деталями, полезными для строителей"/>
<check_box label="Сортировка мест прикрепления в &quot;Прикрепить к&quot; меню по алфавиту (требуется перезагрузка)" tool_tip="Если этот параметр включен, список прикреплений в &amp;Прикрепить к&amp; меню будут отсортированы по алфавиту" name="FSSortAttachmentSpotsAlphabetically"/>
<check_box label="Сортировка прикреплений в &quot;Прикрепить к&quot; меню по алфавиту (нужна перезагрузка)" tool_tip="Если этот параметр включен, список прикреплений в &quot;Прикрепить к&quot; меню будут отсортированы по алфавиту" name="FSSortAttachmentSpotsAlphabetically"/>
<check_box label="Новая панель текстур FS во всплывающем меню инструментов (нужна перезагрузка)" tool_tip="Если этот параметр включен, инструменты редактирования текстур будут использовать усовершенствованный рабочий процесс FS и позволят редактировать БлиннФонг" name="FSUseNewTexturePanel"/>
</panel>
<!--Uploads-->
<panel label="Загрузки" name="UploadsTab">

View File

@ -128,16 +128,11 @@
<combo_box label="Сглаживание" name="fsaa">
<combo_box.item label="Отключено" name="FSAADisabled"/>
</combo_box>
<spinner label="Гамма:" name="gamma"/>
<text name="brightness text">
(0/1.0 = яркость по уполчанию, ниже = ярче)
<text name="advanced_settings">
Расширенные настройки (требуется перезагрузка):
</text>
<slider label="Буфер текстурной памяти (МБ):" name="GraphicsCardTextureMemory" tool_tip="Объем памяти, выделяемой для текстур. По умолчанию память видеокарты составляет до 512МБ в 32-битных системах и до 2048МБ в 64-битных системах, в зависимости от доступной выделенной видеопамяти видеокарты. Уменьшение этого параметра может улучшить производительность, но также может сделать текстуры размытыми."/>
<check_box label="Включить динамическую память текстур" name="FSDynamicTextureMemory" tool_tip="Включает вычисление динамической памяти текстур (доступно только в 64-битных программах просмотра и графических процессорах AMD/NVIDIA с не менее 512МБ видеопамяти)"/>
<slider label="Минимальный буфер памяти текстур (МБ):" name="FSDynamicTextureMemoryMinTextureMemory" tool_tip="Минимальный объем памяти, выделяемой для текстур. Это гарантирует, что указанный объем всегда будет использоваться для текстур, даже если он превышает объем доступной видеопамяти. Если указанная сумма плюс резервы превышают объем физической видеопамяти, она будет соответственно ограничена."/>
<slider label="Дополнительный резерв памяти текстур (%):" name="FSDynamicTextureMemoryCacheReserve" tool_tip="Процент физической видеопамяти, зарезервированной для кэширования загруженных текстур, которые в данный момент не отображаются."/>
<slider label="Резерв физической видеопамяти (%):" name="FSDynamicTextureMemoryGPUReserve" tool_tip="Процент физической видеопамяти, зарезервированной для другого использования."/>
<spinner label="Коэффициент дистанции тумана:" name="fog"/>
<check_box label="Переопределение обнаружения видеопамяти" name="FSOverrideVRAMDetection" tool_tip="Разрешить пользователю переопределять обнаружение видеопамяти (использовать с особой осторожностью)"/>
<slider label="Выделенная видеопамять GPU (ГБ):" name="FSForcedVideoMemory" tool_tip="Важно: используйте с особой осторожностью. Переопределите обнаруженную видеопамять в вашем графическом процессоре. Это не должно включать 'общую' видеопамять, которая является частью системной оперативной памяти. Если вы не понимаете разницы, оставьте этот элемент управления в покое."/>
</panel>
<panel label="Прорисовка" name="Rendering">
<text name="World Updating">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -2947,7 +2947,7 @@ Low ↔ Lwst
height="50"
layout="topleft"
left_pad="10"
top_pad="-17"
top_pad="-21"
name="colorswatch"
tool_tip="Click to open color picker"
width="40" />
@ -2973,7 +2973,7 @@ Low ↔ Lwst
layout="topleft"
left="10"
name="Light Intensity"
top_pad="3"
top_pad="-21"
width="128" />
<spinner bottom_delta="0"
decimal_digits="3"

View File

@ -437,6 +437,23 @@
left_pad="0"
right="-33"
layout="topleft"
name="dummy_panel">
<icon
follows="top|left|right"
height="25"
image_name="Toolbar_Middle_Off"
layout="topleft"
left="0"
top="0"
right="-1"
name="dummy_icon" />
</panel>
<panel
follows="top|left|right"
height="25"
left_pad="168"
right="-33"
layout="topleft"
name="dummy_panel">
<text
type="string"
@ -453,15 +470,6 @@
right="-8">
Elements
</text>
<icon
follows="top|left|right"
height="25"
image_name="Toolbar_Middle_Off"
layout="topleft"
left="0"
top="0"
right="-1"
name="dummy_icon" />
</panel>
<panel
follows="top|right"

View File

@ -2973,7 +2973,7 @@ Low ↔ Lwst
layout="topleft"
left="10"
name="Light Intensity"
top_pad="-14"
top_pad="-21"
width="128" />
<spinner bottom_delta="0"
decimal_digits="3"