From 89d1bf39c5722be83924a7bb50409bf53c8a0600 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 5 Feb 2020 16:16:39 +0200 Subject: [PATCH 01/25] SL-4354 Not loaded avatars should stay cloud longer --- indra/newview/llvoavatar.cpp | 95 ++++++++++++++++++++++++++++-------- indra/newview/llvoavatar.h | 4 +- 2 files changed, 79 insertions(+), 20 deletions(-) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index c7b35a9880..7bd0dfcfb3 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -197,6 +197,8 @@ const F32 NAMETAG_VERT_OFFSET_WEIGHT = 0.17f; const U32 LLVOAvatar::VISUAL_COMPLEXITY_UNKNOWN = 0; const F64 HUD_OVERSIZED_TEXTURE_DATA_SIZE = 1024 * 1024; +const F32 MAX_TEXTURE_WAIT_TIME_SEC = 60; + enum ERenderName { RENDER_NAME_NEVER, @@ -663,6 +665,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id, mFullyLoadedInitialized(FALSE), mVisualComplexity(VISUAL_COMPLEXITY_UNKNOWN), mLoadedCallbacksPaused(FALSE), + mLoadedCallbackTextures(0), mRenderUnloadedAvatar(LLCachedControl(gSavedSettings, "RenderUnloadedAvatar", false)), mLastRezzedStatus(-1), mIsEditingAppearance(FALSE), @@ -883,8 +886,9 @@ BOOL LLVOAvatar::hasGray() const S32 LLVOAvatar::getRezzedStatus() const { if (getIsCloud()) return 0; - if (isFullyTextured() && allBakedTexturesCompletelyDownloaded()) return 3; - if (isFullyTextured()) return 2; + bool textured = isFullyTextured(); + if (textured && allBakedTexturesCompletelyDownloaded()) return 3; + if (textured) return 2; llassert(hasGray()); return 1; // gray } @@ -5329,12 +5333,28 @@ void LLVOAvatar::checkTextureLoading() } if(mLoadedCallbacksPaused == pause) { + if (!pause && mFirstFullyVisible && mLoadedCallbackTextures < mCallbackTextureList.size()) + { + // We still need to update 'loaded' textures count to decide on 'cloud' visibility + // Alternatively this can be done on TextureLoaded callbacks, but is harder to properly track + mLoadedCallbackTextures = 0; + for (LLLoadedCallbackEntry::source_callback_list_t::iterator iter = mCallbackTextureList.begin(); + iter != mCallbackTextureList.end(); ++iter) + { + LLViewerFetchedTexture* tex = gTextureList.findImage(*iter); + if (tex && (tex->getDiscardLevel() >= 0 || tex->isMissingAsset())) + { + mLoadedCallbackTextures++; + } + } + } return ; } if(mCallbackTextureList.empty()) //when is self or no callbacks. Note: this list for self is always empty. { mLoadedCallbacksPaused = pause ; + mLoadedCallbackTextures = 0; return ; //nothing to check. } @@ -5342,7 +5362,9 @@ void LLVOAvatar::checkTextureLoading() { return ; //have not been invisible for enough time. } - + + mLoadedCallbackTextures = pause ? mCallbackTextureList.size() : 0; + for(LLLoadedCallbackEntry::source_callback_list_t::iterator iter = mCallbackTextureList.begin(); iter != mCallbackTextureList.end(); ++iter) { @@ -5363,9 +5385,15 @@ void LLVOAvatar::checkTextureLoading() tex->unpauseLoadedCallbacks(&mCallbackTextureList) ; tex->addTextureStats(START_AREA); //jump start the fetching again + + // technically shouldn't need to account for missing, but callback might not have happened yet + if (tex->getDiscardLevel() >= 0 || tex->isMissingAsset()) + { + mLoadedCallbackTextures++; // consider it loaded (we have at least some data) + } } - } - } + } + } if(!pause) { @@ -7629,14 +7657,13 @@ bool LLVOAvatar::getIsCloud() const ); } -void LLVOAvatar::updateRezzedStatusTimers() +void LLVOAvatar::updateRezzedStatusTimers(S32 rez_status) { // State machine for rezzed status. Statuses are -1 on startup, 0 // = cloud, 1 = gray, 2 = downloading, 3 = full. // Purpose is to collect time data for each it takes avatar to reach // various loading landmarks: gray, textured (partial), textured fully. - S32 rez_status = getRezzedStatus(); if (rez_status != mLastRezzedStatus) { LL_DEBUGS("Avatar") << avString() << "rez state change: " << mLastRezzedStatus << " -> " << rez_status << LL_ENDL; @@ -7806,8 +7833,21 @@ void LLVOAvatar::logMetricsTimerRecord(const std::string& phase_name, F32 elapse // returns true if the value has changed. BOOL LLVOAvatar::updateIsFullyLoaded() { - const bool loading = getIsCloud(); - updateRezzedStatusTimers(); + S32 rez_status = getRezzedStatus(); + bool loading = getIsCloud(); + if (mFirstFullyVisible && !mIsControlAvatar) + { + loading = ((rez_status < 2) + // Wait at least 60s for unfinished textures to finish on first load, + // don't wait forever, it might fail. Even if it will eventually load by + // itself and update mLoadedCallbackTextures (or fail and clean the list), + // avatars are more time-sensitive than textures and can't wait that long. + || (mLoadedCallbackTextures < mCallbackTextureList.size() && mLastTexCallbackAddedTime.getElapsedTimeF32() < MAX_TEXTURE_WAIT_TIME_SEC) + || !mPendingAttachment.empty() + || (rez_status < 3 && !isFullyBaked()) + ); + } + updateRezzedStatusTimers(rez_status); updateRuthTimer(loading); return processFullyLoadedChange(loading); } @@ -7843,13 +7883,22 @@ void LLVOAvatar::updateRuthTimer(bool loading) BOOL LLVOAvatar::processFullyLoadedChange(bool loading) { - // we wait a little bit before giving the all clear, - // to let textures settle down - const F32 PAUSE = 1.f; + // We wait a little bit before giving the 'all clear', to let things to + // settle down (models to snap into place, textures to get first packets) + const F32 LOADED_DELAY = 1.f; + const F32 FIRST_USE_DELAY = 3.f; + if (loading) mFullyLoadedTimer.reset(); - - mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > PAUSE); + + if (mFirstFullyVisible) + { + mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > FIRST_USE_DELAY); + } + else + { + mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > LOADED_DELAY); + } if (!mPreviousFullyLoaded && !loading && mFullyLoaded) { @@ -8139,6 +8188,7 @@ void LLVOAvatar::updateMeshTextures() LLViewerTexLayerSet* layerset = getTexLayerSet(i); if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() ) { + // use last known good layer (no new one) LLViewerFetchedTexture* baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID); mBakedTextureDatas[i].mIsUsed = TRUE; @@ -8157,6 +8207,7 @@ void LLVOAvatar::updateMeshTextures() } else if (!isUsingLocalAppearance() && is_layer_baked[i]) { + // use new layer LLViewerFetchedTexture* baked_img = LLViewerTextureManager::staticCastToFetchedTexture( getImage( mBakedTextureDatas[i].mTextureIndex, 0 ), TRUE) ; @@ -8176,10 +8227,15 @@ void LLVOAvatar::updateMeshTextures() ((i == BAKED_HEAD) || (i == BAKED_UPPER) || (i == BAKED_LOWER)) ) { baked_img->setLoadedCallback(onBakedTextureMasksLoaded, MORPH_MASK_REQUESTED_DISCARD, TRUE, TRUE, new LLTextureMaskData( mID ), - src_callback_list, paused); + src_callback_list, paused); } baked_img->setLoadedCallback(onBakedTextureLoaded, SWITCH_TO_BAKED_DISCARD, FALSE, FALSE, new LLUUID( mID ), src_callback_list, paused ); + if (baked_img->getDiscardLevel() < 0 && !paused) + { + // mLoadedCallbackTextures will be updated by checkTextureLoading() below + mLastTexCallbackAddedTime.reset(); + } // this could add paused texture callbacks mLoadedCallbacksPaused |= paused; @@ -8573,13 +8629,16 @@ void LLVOAvatar::onFirstTEMessageReceived() LL_DEBUGS("Avatar") << avString() << "layer_baked, setting onInitialBakedTextureLoaded as callback" << LL_ENDL; image->setLoadedCallback( onInitialBakedTextureLoaded, MAX_DISCARD_LEVEL, FALSE, FALSE, new LLUUID( mID ), src_callback_list, paused ); - + if (image->getDiscardLevel() < 0 && !paused) + { + mLastTexCallbackAddedTime.reset(); + } // this could add paused texture callbacks mLoadedCallbacksPaused |= paused; } } - mMeshTexturesDirty = TRUE; + mMeshTexturesDirty = TRUE; gPipeline.markGLRebuild(this); } } @@ -9226,8 +9285,6 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture // static void LLVOAvatar::onInitialBakedTextureLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ) { - - LLUUID *avatar_idp = (LLUUID *)userdata; LLVOAvatar *selfp = (LLVOAvatar *)gObjectList.findObject(*avatar_idp); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 00dccc5d12..ca6ac5c902 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -348,7 +348,7 @@ public: BOOL isFullyTextured() const; BOOL hasGray() const; S32 getRezzedStatus() const; // 0 = cloud, 1 = gray, 2 = textured, 3 = textured and fully downloaded. - void updateRezzedStatusTimers(); + void updateRezzedStatusTimers(S32 status); S32 mLastRezzedStatus; @@ -629,6 +629,8 @@ protected: LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; BOOL mLoadedCallbacksPaused; + S32 mLoadedCallbackTextures; // count of 'loaded' baked textures, filled from mCallbackTextureList + LLFrameTimer mLastTexCallbackAddedTime; std::set mTextureIDs; //-------------------------------------------------------------------- // Local Textures From 50c05006e7ad28c05cbaa1af568d3287028ee1d0 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 11 Feb 2020 19:57:29 +0200 Subject: [PATCH 02/25] SL-11932 Updated VVM --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 1f1db48bdc..d760135b9b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3138,9 +3138,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c5ab9d9d7482e48cd76f4bf391900a8c + 483573e5612e53b6cf8053263e4aef1f url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43369/385585/viewer_manager-2.0.531000-darwin64-531000.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51747/471753/viewer_manager-2.0.536513-darwin64-536513.tar.bz2 name darwin64 @@ -3162,9 +3162,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 6b10d7407686d9e12e63576256581e3e + 5abe48eb6152bdb37809261bbf16484f url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43370/385592/viewer_manager-2.0.531000-windows-531000.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51750/471771/viewer_manager-2.0.536513-windows-536513.tar.bz2 name windows @@ -3175,7 +3175,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 2.0.531000 + 2.0.536513 vlc-bin From 8644aa1f81cc469d34636566b9272a2e6cf2b6a4 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 11 Feb 2020 21:37:03 +0200 Subject: [PATCH 03/25] SL-11932 Updated VVM #2 Previous update handled case of user terminating updater on 'precheck', new one works for updater termination on 'leap' --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index d760135b9b..241fba44fd 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3138,9 +3138,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 483573e5612e53b6cf8053263e4aef1f + 328194f93a69d21293f3805fd1ff49a4 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51747/471753/viewer_manager-2.0.536513-darwin64-536513.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51767/471864/viewer_manager-2.0.536528-darwin64-536528.tar.bz2 name darwin64 @@ -3162,9 +3162,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 5abe48eb6152bdb37809261bbf16484f + 200249d92112cd248e95f79c02c1dc10 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51750/471771/viewer_manager-2.0.536513-windows-536513.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51766/471870/viewer_manager-2.0.536528-windows-536528.tar.bz2 name windows @@ -3175,7 +3175,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 2.0.536513 + 2.0.536528 vlc-bin From fbabec1ceb2eaf44d2b20def87c632e14a664ad6 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 12 Feb 2020 14:52:07 +0200 Subject: [PATCH 04/25] SL-12616 Updated VVM Cancelable updates should not be installed if user quit without confirmation, ask again later --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 241fba44fd..572d9b91da 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3138,9 +3138,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 328194f93a69d21293f3805fd1ff49a4 + 9bb4879c1567fe9e86da7c36fdd31710 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51767/471864/viewer_manager-2.0.536528-darwin64-536528.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51810/472478/viewer_manager-2.0.536567-darwin64-536567.tar.bz2 name darwin64 @@ -3162,9 +3162,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 200249d92112cd248e95f79c02c1dc10 + c1d113934b8233e57c7d1b6fe1168a60 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51766/471870/viewer_manager-2.0.536528-windows-536528.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51811/472487/viewer_manager-2.0.536567-windows-536567.tar.bz2 name windows @@ -3175,7 +3175,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 2.0.536528 + 2.0.536567 vlc-bin From 88ae7dcb29e289631623c753366019a1a4d3a4d9 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 12 Feb 2020 14:52:07 +0200 Subject: [PATCH 05/25] SL-12678 Remove automatic retry of login --- indra/newview/lllogininstance.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 8a69acb8dc..b7c15b3a99 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -62,7 +62,7 @@ #include #include -const S32 LOGIN_MAX_RETRIES = 3; +const S32 LOGIN_MAX_RETRIES = 1; // Viewer should not autmatically retry login const F32 LOGIN_SRV_TIMEOUT_MIN = 10; const F32 LOGIN_SRV_TIMEOUT_MAX = 120; const F32 LOGIN_DNS_TIMEOUT_FACTOR = 0.9; // make DNS wait shorter then retry time From 961f826feeb3c9619ed142a9a33f74138d300bcd Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 17 Feb 2020 16:06:43 +0200 Subject: [PATCH 06/25] SL-12198 Updated VVM - fixed .done file removal --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 572d9b91da..da48e1f2cd 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3138,9 +3138,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 9bb4879c1567fe9e86da7c36fdd31710 + 83531885d69b0e675fcbe01b41562dfc url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51810/472478/viewer_manager-2.0.536567-darwin64-536567.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/52052/476443/viewer_manager-2.0.536777-darwin64-536777.tar.bz2 name darwin64 @@ -3162,9 +3162,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c1d113934b8233e57c7d1b6fe1168a60 + 2e78e51c99afbf0cdaa7206d87711122 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/51811/472487/viewer_manager-2.0.536567-windows-536567.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/52051/476449/viewer_manager-2.0.536777-windows-536777.tar.bz2 name windows @@ -3175,7 +3175,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 2.0.536567 + 2.0.536777 vlc-bin From c5371bb2715325aa6d705a2fc9973510675e5e59 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Fri, 21 Feb 2020 18:51:14 +0200 Subject: [PATCH 07/25] SL-12732 Lights not working in some cases --- indra/newview/pipeline.cpp | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index bec33790bd..dcf435f78f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8684,29 +8684,24 @@ void LLPipeline::renderDeferredLighting() } } - const LLViewerObject *vobj = drawablep->getVObj(); - if (vobj) - { - LLVOAvatar *av = vobj->getAvatar(); - if (av) - { - if (av->isTooComplex() || av->isInMuteList() || dist_vec(av->getPosition(), LLViewerCamera::getInstance()->getOrigin()) > RenderFarClip) - { - continue; - } - } - else - { - const LLViewerObject *root_obj = drawablep->getParent() ? drawablep->getParent()->getVObj() : vobj; - if (root_obj && dist_vec(root_obj->getPosition(), LLViewerCamera::getInstance()->getOrigin()) > RenderFarClip) - { - continue; - } - } - } + const LLViewerObject *vobj = drawablep->getVObj(); + if (vobj) + { + LLVOAvatar *av = vobj->getAvatar(); + if (av && (av->isTooComplex() || av->isInMuteList())) + { + continue; + } + } + + const LLVector3 position = drawablep->getPositionAgent(); + if (dist_vec(position, LLViewerCamera::getInstance()->getOrigin()) > RenderFarClip + volume->getLightRadius()) + { + continue; + } LLVector4a center; - center.load3(drawablep->getPositionAgent().mV); + center.load3(position.mV); const F32* c = center.getF32ptr(); F32 s = volume->getLightRadius()*1.5f; From bfcb558f90d1b3108893cfcd3cc07325c47486b6 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Fri, 21 Feb 2020 23:38:39 +0200 Subject: [PATCH 08/25] SL-12678 Remove automatic retry of login --- indra/newview/lllogininstance.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index b7c15b3a99..873531ef22 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -62,7 +62,7 @@ #include #include -const S32 LOGIN_MAX_RETRIES = 1; // Viewer should not autmatically retry login +const S32 LOGIN_MAX_RETRIES = 0; // Viewer should not autmatically retry login const F32 LOGIN_SRV_TIMEOUT_MIN = 10; const F32 LOGIN_SRV_TIMEOUT_MAX = 120; const F32 LOGIN_DNS_TIMEOUT_FACTOR = 0.9; // make DNS wait shorter then retry time From 4b62779fd3379561e97fe283ffd1c80d27703e86 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 4 Mar 2020 14:58:55 +0200 Subject: [PATCH 09/25] SL-12562 Change events URL --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/llfloaterevent.cpp | 2 +- indra/newview/skins/default/xui/en/menu_viewer.xml | 2 +- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index da1e87fda4..b8bc4fe0b9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3775,7 +3775,7 @@ Type String Value - http://events.secondlife.com/viewer/embed/event/ + https://secondlife.com/my/community/events/event.php?id= FastCacheFetchEnabled diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp index 3e303e0932..a6640cc073 100644 --- a/indra/newview/llfloaterevent.cpp +++ b/indra/newview/llfloaterevent.cpp @@ -110,7 +110,7 @@ void LLFloaterEvent::setEventID(const U32 event_id) // get the search URL and expand all of the substitutions // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) std::ostringstream url; - url << gSavedSettings.getString("EventURL") << event_id << "/" << std::endl; + url << gSavedSettings.getString("EventURL") << event_id << std::endl; // and load the URL in the web view mBrowser->navigateTo(url.str()); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 04b5d808ec..6284fe9a4d 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -461,7 +461,7 @@ name="Events"> + parameter="https://secondlife.com/my/community/events"/> confirm - http://secondlife.com/events/ + https://secondlife.com/my/community/events Date: Fri, 6 Mar 2020 22:40:35 +0200 Subject: [PATCH 10/25] Removed SL-12198 --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index da48e1f2cd..7ca381fa1e 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3138,9 +3138,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 83531885d69b0e675fcbe01b41562dfc + f8365276c376bb36c1ce64922958e6dc url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/52052/476443/viewer_manager-2.0.536777-darwin64-536777.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/53696/497390/viewer_manager-2.0.538124-darwin64-538124.tar.bz2 name darwin64 @@ -3162,9 +3162,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 2e78e51c99afbf0cdaa7206d87711122 + 196109ded219a66920d1abf671a2035d url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/52051/476449/viewer_manager-2.0.536777-windows-536777.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/53700/497404/viewer_manager-2.0.538124-windows-538124.tar.bz2 name windows @@ -3175,7 +3175,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 2.0.536777 + 2.0.538124 vlc-bin From 921b133bd566f80d7cb22c0280d79bcbd3b05f21 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 10 Mar 2020 13:56:11 +0200 Subject: [PATCH 11/25] Rolling back version manager changes until migration to git completes --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 7ca381fa1e..1f1db48bdc 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3138,9 +3138,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - f8365276c376bb36c1ce64922958e6dc + c5ab9d9d7482e48cd76f4bf391900a8c url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/53696/497390/viewer_manager-2.0.538124-darwin64-538124.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43369/385585/viewer_manager-2.0.531000-darwin64-531000.tar.bz2 name darwin64 @@ -3162,9 +3162,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 196109ded219a66920d1abf671a2035d + 6b10d7407686d9e12e63576256581e3e url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/53700/497404/viewer_manager-2.0.538124-windows-538124.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43370/385592/viewer_manager-2.0.531000-windows-531000.tar.bz2 name windows @@ -3175,7 +3175,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 2.0.538124 + 2.0.531000 vlc-bin From 24c38d822acfe37f177900014258c89cc1c237f0 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 11 Mar 2020 16:48:22 +0200 Subject: [PATCH 12/25] SL-12562 Reverted change to 'embed' link --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b8bc4fe0b9..da1e87fda4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3775,7 +3775,7 @@ Type String Value - https://secondlife.com/my/community/events/event.php?id= + http://events.secondlife.com/viewer/embed/event/ FastCacheFetchEnabled From 7d992f2331c36e660dc167cb874bb7410efd8cb1 Mon Sep 17 00:00:00 2001 From: Andrey Lihatskiy Date: Mon, 6 Apr 2020 20:57:33 +0300 Subject: [PATCH 13/25] SL-10993 Fixed Korean font on OSX Catalina --- indra/newview/skins/default/xui/en/fonts.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml index 2d5263b78f..76df0abdfd 100644 --- a/indra/newview/skins/default/xui/en/fonts.xml +++ b/indra/newview/skins/default/xui/en/fonts.xml @@ -21,6 +21,7 @@ AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf From 73733b29803c89181f9c719b3010eae05c605bff Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 10 Apr 2020 15:23:18 +0200 Subject: [PATCH 14/25] Sync font definitions with upstream version --- indra/newview/fonts/fonts.xml | 4 +--- indra/newview/fonts/fonts_celestia_medium_redux.xml | 4 +--- indra/newview/fonts/fonts_deja_vu_all_caps.xml | 4 +--- indra/newview/fonts/fonts_droid.xml | 4 +--- indra/newview/fonts/fonts_dyslexia.xml | 4 +--- indra/newview/fonts/fonts_liberation.xml | 4 +--- indra/newview/fonts/fonts_mobi.xml | 4 +--- indra/newview/fonts/fonts_noto.xml | 4 +--- indra/newview/fonts/fonts_roboto.xml | 4 +--- indra/newview/fonts/fonts_ubuntu.xml | 4 +--- 10 files changed, 10 insertions(+), 30 deletions(-) diff --git a/indra/newview/fonts/fonts.xml b/indra/newview/fonts/fonts.xml index 4a478c39f6..3e7eff4d4f 100644 --- a/indra/newview/fonts/fonts.xml +++ b/indra/newview/fonts/fonts.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_celestia_medium_redux.xml b/indra/newview/fonts/fonts_celestia_medium_redux.xml index 637a77b9ea..4196fbc6a0 100644 --- a/indra/newview/fonts/fonts_celestia_medium_redux.xml +++ b/indra/newview/fonts/fonts_celestia_medium_redux.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_deja_vu_all_caps.xml b/indra/newview/fonts/fonts_deja_vu_all_caps.xml index 3a52ece0ff..3210a539a4 100644 --- a/indra/newview/fonts/fonts_deja_vu_all_caps.xml +++ b/indra/newview/fonts/fonts_deja_vu_all_caps.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_droid.xml b/indra/newview/fonts/fonts_droid.xml index 3d19c7da6b..927bcdde17 100644 --- a/indra/newview/fonts/fonts_droid.xml +++ b/indra/newview/fonts/fonts_droid.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_dyslexia.xml b/indra/newview/fonts/fonts_dyslexia.xml index 97f37ee91e..9ebb445a84 100644 --- a/indra/newview/fonts/fonts_dyslexia.xml +++ b/indra/newview/fonts/fonts_dyslexia.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_liberation.xml b/indra/newview/fonts/fonts_liberation.xml index 794d78cc25..b612fe663f 100644 --- a/indra/newview/fonts/fonts_liberation.xml +++ b/indra/newview/fonts/fonts_liberation.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_mobi.xml b/indra/newview/fonts/fonts_mobi.xml index ff970a5d04..4b73ba4e1d 100644 --- a/indra/newview/fonts/fonts_mobi.xml +++ b/indra/newview/fonts/fonts_mobi.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_noto.xml b/indra/newview/fonts/fonts_noto.xml index 517a1153ab..57b3940962 100644 --- a/indra/newview/fonts/fonts_noto.xml +++ b/indra/newview/fonts/fonts_noto.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_roboto.xml b/indra/newview/fonts/fonts_roboto.xml index bf739bc285..e1c35b5332 100644 --- a/indra/newview/fonts/fonts_roboto.xml +++ b/indra/newview/fonts/fonts_roboto.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf diff --git a/indra/newview/fonts/fonts_ubuntu.xml b/indra/newview/fonts/fonts_ubuntu.xml index a3071b8fdb..f4f9cbe46a 100644 --- a/indra/newview/fonts/fonts_ubuntu.xml +++ b/indra/newview/fonts/fonts_ubuntu.xml @@ -22,12 +22,10 @@ ヒラギノ角ゴ Pro W3.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ明朝 ProN W3.ttc - - AppleSDGothicNeo.ttc - AppleGothic.dfont AppleGothic.ttf AppleSDGothicNeo-Regular.otf + AppleSDGothicNeo.ttc 华文细黑.ttf PingFang.ttc STIXGeneral.otf From d9783adba73cce9a68fde4ba0ba78add28da4279 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 15 Apr 2020 19:36:37 +0300 Subject: [PATCH 15/25] SL-13040 Fixed crash at EnvironmentPersistAcrossLogin --- indra/newview/llenvironment.cpp | 8 ++++---- indra/newview/llsettingsvo.h | 3 +++ indra/newview/llstartup.cpp | 3 +-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 0e1c4f9434..342ee3ccf5 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -2800,7 +2800,7 @@ void LLEnvironment::loadSkyWaterFromSettings(const LLSD &env_data, bool &valid, } else if (env_data.has("sky_llsd")) { - LLSettingsSky::ptr_t sky = std::make_shared(env_data["sky_llsd"]); + LLSettingsSky::ptr_t sky = LLSettingsVOSky::buildSky(env_data["sky_llsd"]); setEnvironment(ENV_LOCAL, sky); valid = true; } @@ -2814,7 +2814,7 @@ void LLEnvironment::loadSkyWaterFromSettings(const LLSD &env_data, bool &valid, } else if (env_data.has("water_llsd")) { - LLSettingsWater::ptr_t sky = std::make_shared(env_data["water_llsd"]); + LLSettingsWater::ptr_t sky = LLSettingsVOWater::buildWater(env_data["water_llsd"]); setEnvironment(ENV_LOCAL, sky); valid = true; } @@ -2899,8 +2899,8 @@ bool LLEnvironment::loadFromSettings() { S32 length = env_data["day_length"].asInteger(); S32 offset = env_data["day_offset"].asInteger(); - LLSettingsDay::ptr_t day = std::make_shared(env_data["day_llsd"]); - setEnvironment(ENV_LOCAL, day, LLSettingsDay::Seconds(length), LLSettingsDay::Seconds(offset)); + LLSettingsDay::ptr_t pday = LLSettingsVODay::buildDay(env_data["day_llsd"]); + setEnvironment(ENV_LOCAL, pday, LLSettingsDay::Seconds(length), LLSettingsDay::Seconds(offset)); valid = true; } diff --git a/indra/newview/llsettingsvo.h b/indra/newview/llsettingsvo.h index 1f29013ecf..65136ad2f5 100644 --- a/indra/newview/llsettingsvo.h +++ b/indra/newview/llsettingsvo.h @@ -158,6 +158,9 @@ class LLSettingsVODay : public LLSettingsDay public: typedef std::function asset_built_fn; + // Todo: find a way to make this cnstructor private + // It shouldn't be used outside shared_prt and LLSettingsVODay + // outside of settings only use buildDay(settings) LLSettingsVODay(const LLSD &data); static ptr_t buildDay(LLSD settings); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index a1d1e85492..7673bae725 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1879,8 +1879,7 @@ bool idle_startup() display_startup(); - // Load stored local environment if needed. Only should be done once at least - // initial region data got loaded to avoid race condition with region's environment + // Load stored local environment if needed. LLEnvironment::instance().loadFromSettings(); // *TODO : Uncomment that line once the whole grid migrated to SLM and suppress it from LLAgent::handleTeleportFinished() (llagent.cpp) From 231b51f40fd1541ba33377690989fcd49d338451 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 20 Apr 2020 22:20:16 +0300 Subject: [PATCH 16/25] Restored SL-12732 after merge conflict --- indra/newview/pipeline.cpp | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index f0ed303f66..01438bfb9f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8740,29 +8740,24 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target) } } - const LLViewerObject *vobj = drawablep->getVObj(); - if (vobj) - { - LLVOAvatar *av = vobj->getAvatar(); - if (av) - { - if (av->isTooComplex() || av->isInMuteList() || dist_vec(av->getPosition(), LLViewerCamera::getInstance()->getOrigin()) > RenderFarClip) - { - continue; - } - } - else - { - const LLViewerObject *root_obj = drawablep->getParent() ? drawablep->getParent()->getVObj() : vobj; - if (root_obj && dist_vec(root_obj->getPosition(), LLViewerCamera::getInstance()->getOrigin()) > RenderFarClip) - { - continue; - } - } - } + const LLViewerObject *vobj = drawablep->getVObj(); + if (vobj) + { + LLVOAvatar *av = vobj->getAvatar(); + if (av && (av->isTooComplex() || av->isInMuteList())) + { + continue; + } + } + + const LLVector3 position = drawablep->getPositionAgent(); + if (dist_vec(position, LLViewerCamera::getInstance()->getOrigin()) > RenderFarClip + volume->getLightRadius()) + { + continue; + } LLVector4a center; - center.load3(drawablep->getPositionAgent().mV); + center.load3(position.mV); const F32* c = center.getF32ptr(); F32 s = volume->getLightRadius()*1.5f; From f20b22e325ef15e0aa6eef950ba96538bb015568 Mon Sep 17 00:00:00 2001 From: Andrey Lihatskiy Date: Tue, 21 Apr 2020 00:35:19 +0300 Subject: [PATCH 17/25] AMD CPUs list update --- indra/llcommon/llprocessor.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index a618a1cc70..5d16a4b74d 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -195,6 +195,8 @@ namespace std::string amd_CPUFamilyName(int composed_family) { + // https://en.wikipedia.org/wiki/List_of_AMD_CPU_microarchitectures + // https://developer.amd.com/resources/developer-guides-manuals/ switch(composed_family) { case 4: return "AMD 80486/5x86"; @@ -202,6 +204,13 @@ namespace case 6: return "AMD K7"; case 0xF: return "AMD K8"; case 0x10: return "AMD K8L"; + case 0x12: return "AMD K10"; + case 0x14: return "AMD Bobcat"; + case 0x15: return "AMD Bulldozer"; + case 0x16: return "AMD Jaguar"; + case 0x17: return "AMD Zen/Zen+/Zen2"; + case 0x18: return "AMD Hygon Dhyana"; + case 0x19: return "AMD Zen 3"; } return STRINGIZE("AMD "); } From ae38190e93b9b9e4b886e0321a895a6676ef4490 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 23 Apr 2020 20:22:56 +0200 Subject: [PATCH 18/25] EOL fixing --- .../shaders/class1/deferred/materialF.glsl | 878 +++++++++--------- 1 file changed, 439 insertions(+), 439 deletions(-) diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 0afd1a9672..bf824b3afe 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -1,439 +1,439 @@ -/** -* @file materialF.glsl -* -* $LicenseInfo:firstyear=2007&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2007, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -* $/LicenseInfo$ -*/ - -/*[EXTRA_CODE_HERE]*/ - -//class1/deferred/materialF.glsl - -// This shader is used for both writing opaque/masked content to the gbuffer and writing blended content to the framebuffer during the alpha pass. - -#define DIFFUSE_ALPHA_MODE_NONE 0 -#define DIFFUSE_ALPHA_MODE_BLEND 1 -#define DIFFUSE_ALPHA_MODE_MASK 2 -#define DIFFUSE_ALPHA_MODE_EMISSIVE 3 - -uniform float emissive_brightness; // fullbright flag, 1.0 == fullbright, 0.0 otherwise -uniform int sun_up_factor; - -#ifdef WATER_FOG -vec4 applyWaterFogView(vec3 pos, vec4 color); -#endif - -vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten); -vec3 scaleSoftClipFrag(vec3 l); - -vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten); -vec3 fullbrightScaleSoftClip(vec3 light); - -void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten, bool use_ao); - -vec3 srgb_to_linear(vec3 cs); -vec3 linear_to_srgb(vec3 cs); - -#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) - -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_color; -#else -#define frag_color gl_FragColor -#endif - -#ifdef HAS_SUN_SHADOW -float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen); -#endif - -uniform samplerCube environmentMap; -uniform sampler2D lightFunc; - -// Inputs -uniform vec4 morphFactor; -uniform vec3 camPosLocal; -uniform mat3 env_mat; - -uniform vec3 sun_dir; -uniform vec3 moon_dir; -VARYING vec2 vary_fragcoord; - -VARYING vec3 vary_position; - -uniform mat4 proj_mat; -uniform mat4 inv_proj; -uniform vec2 screen_res; - -uniform vec4 light_position[8]; -uniform vec3 light_direction[8]; -uniform vec4 light_attenuation[8]; -uniform vec3 light_diffuse[8]; - -float getAmbientClamp(); - -vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spec, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, inout float glare, float ambiance) -{ - vec3 col = vec3(0); - - //get light vector - vec3 lv = lp.xyz - v; - - //get distance - float dist = length(lv); - float da = 1.0; - - dist /= la; - - if (dist > 0.0 && la > 0.0) - { - //normalize light vector - lv = normalize(lv); - - //distance attenuation - float dist_atten = clamp(1.0 - (dist - 1.0*(1.0 - fa)) / fa, 0.0, 1.0); - dist_atten *= dist_atten; - dist_atten *= 2.0f; - - if (dist_atten <= 0.0) - { - return col; - } - - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 - - //angular attenuation - da *= dot(n, lv); - - float lit = 0.0f; - - float amb_da = ambiance; - if (da >= 0) - { - lit = max(da * dist_atten, 0.0); - col = lit * light_col * diffuse; - amb_da += (da*0.5 + 0.5) * ambiance; - } - amb_da += (da*da*0.5 + 0.5) * ambiance; - amb_da *= dist_atten; - amb_da = min(amb_da, 1.0f - lit); - - // SL-10969 need to see why these are blown out - //col.rgb += amb_da * light_col * diffuse; - - if (spec.a > 0.0) - { - //vec3 ref = dot(pos+lv, norm); - vec3 h = normalize(lv + npos); - float nh = dot(n, h); - float nv = dot(n, npos); - float vh = dot(npos, h); - float sa = nh; - float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; - - float gtdenom = 2 * nh; - float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); - - if (nh > 0.0) - { - float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); - vec3 speccol = lit*scol*light_col.rgb*spec.rgb; - speccol = clamp(speccol, vec3(0), vec3(1)); - col += speccol; - - float cur_glare = max(speccol.r, speccol.g); - cur_glare = max(cur_glare, speccol.b); - glare = max(glare, speccol.r); - glare += max(cur_glare, 0.0); - } - } - } - - return max(col, vec3(0.0, 0.0, 0.0)); -} - -#else -#ifdef DEFINE_GL_FRAGCOLOR -out vec4 frag_data[3]; -#else -#define frag_data gl_FragData -#endif -#endif - -uniform sampler2D diffuseMap; //always in sRGB space - -#ifdef HAS_NORMAL_MAP -uniform sampler2D bumpMap; -#endif - -#ifdef HAS_SPECULAR_MAP -uniform sampler2D specularMap; - -VARYING vec2 vary_texcoord2; -#endif - -uniform float env_intensity; -uniform vec4 specular_color; // specular color RGB and specular exponent (glossiness) in alpha - -#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) -uniform float minimum_alpha; -#endif - -#ifdef HAS_NORMAL_MAP -VARYING vec3 vary_mat0; -VARYING vec3 vary_mat1; -VARYING vec3 vary_mat2; -VARYING vec2 vary_texcoord1; -#else -VARYING vec3 vary_normal; -#endif - -VARYING vec4 vertex_color; -VARYING vec2 vary_texcoord0; - -vec2 encode_normal(vec3 n); - -void main() -{ - vec2 pos_screen = vary_texcoord0.xy; - - vec4 diffcol = texture2D(diffuseMap, vary_texcoord0.xy); - diffcol.rgb *= vertex_color.rgb; - -#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) - - // Comparing floats cast from 8-bit values, produces acne right at the 8-bit transition points - float bias = 0.001953125; // 1/512, or half an 8-bit quantization - if (diffcol.a < minimum_alpha-bias) - { - discard; - } -#endif - -#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) - vec3 gamma_diff = diffcol.rgb; - diffcol.rgb = srgb_to_linear(diffcol.rgb); -#endif - -#ifdef HAS_SPECULAR_MAP - vec4 spec = texture2D(specularMap, vary_texcoord2.xy); - spec.rgb *= specular_color.rgb; -#else - vec4 spec = vec4(specular_color.rgb, 1.0); -#endif - -#ifdef HAS_NORMAL_MAP - vec4 norm = texture2D(bumpMap, vary_texcoord1.xy); - - norm.xyz = norm.xyz * 2 - 1; - - vec3 tnorm = vec3(dot(norm.xyz,vary_mat0), - dot(norm.xyz,vary_mat1), - dot(norm.xyz,vary_mat2)); -#else - vec4 norm = vec4(0,0,0,1.0); - vec3 tnorm = vary_normal; -#endif - - norm.xyz = normalize(tnorm.xyz); - - vec2 abnormal = encode_normal(norm.xyz); - - vec4 final_color = diffcol; - -#if (DIFFUSE_ALPHA_MODE != DIFFUSE_ALPHA_MODE_EMISSIVE) - final_color.a = emissive_brightness; -#else - final_color.a = max(final_color.a, emissive_brightness); -#endif - - vec4 final_specular = spec; - -#ifdef HAS_SPECULAR_MAP - vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity * spec.a, 0.0); - final_specular.a = specular_color.a * norm.a; -#else - vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity, 0.0); - final_specular.a = specular_color.a; -#endif - -#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) - - //forward rendering, output just lit sRGBA - vec3 pos = vary_position; - - float shadow = 1.0f; - -#ifdef HAS_SUN_SHADOW - shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen); -#endif - - spec = final_specular; - vec4 diffuse = final_color; - float envIntensity = final_normal.z; - - vec3 color = vec3(0,0,0); - - vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir; - - float bloom = 0.0; - vec3 sunlit; - vec3 amblit; - vec3 additive; - vec3 atten; - - calcAtmosphericVars(pos.xyz, light_dir, 1.0, sunlit, amblit, additive, atten, false); - - // This call breaks the Mac GLSL compiler/linker for unknown reasons (17Mar2020) - // The call is either a no-op or a pure (pow) gamma adjustment, depending on GPU level - // TODO: determine if we want to re-apply the gamma adjustment, and if so understand & fix Mac breakage - //color = fullbrightScaleSoftClip(color); - - vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); - - //we're in sRGB space, so gamma correct this dot product so - // lighting from the sun stays sharp - float da = clamp(dot(normalize(norm.xyz), light_dir.xyz), 0.0, 1.0); - da = pow(da, 1.0 / 1.3); - - color = amblit; - - //darken ambient for normals perpendicular to light vector so surfaces in shadow - // and facing away from light still have some definition to them. - // do NOT gamma correct this dot product so ambient lighting stays soft - float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0); - ambient *= 0.5; - ambient *= ambient; - ambient = (1.0 - ambient); - - vec3 sun_contrib = min(da, shadow) * sunlit; - - color *= ambient; - - color += sun_contrib; - - color *= gamma_diff.rgb; - - float glare = 0.0; - - if (spec.a > 0.0) // specular reflection - { -#if 1 //EEP - - vec3 npos = -normalize(pos.xyz); - - //vec3 ref = dot(pos+lv, norm); - vec3 h = normalize(light_dir.xyz + npos); - float nh = dot(norm.xyz, h); - float nv = dot(norm.xyz, npos); - float vh = dot(npos, h); - float sa = nh; - float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; - - float gtdenom = 2 * nh; - float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); - - if (nh > 0.0) - { - float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); - vec3 sp = sun_contrib*scol / 6.0f; - sp = clamp(sp, vec3(0), vec3(1)); - bloom = dot(sp, sp) / 4.0; - color += sp * spec.rgb; - } -#else // PRODUCTION - float sa = dot(refnormpersp, sun_dir.xyz); - vec3 dumbshiny = sunlit*shadow*(texture2D(lightFunc, vec2(sa, spec.a)).r); - - // add the two types of shiny together - vec3 spec_contrib = dumbshiny * spec.rgb; - bloom = dot(spec_contrib, spec_contrib) / 6; - - glare = max(spec_contrib.r, spec_contrib.g); - glare = max(glare, spec_contrib.b); - - color += spec_contrib; -#endif - } - - color = mix(color.rgb, diffcol.rgb, diffuse.a); - - if (envIntensity > 0.0) - { - //add environmentmap - vec3 env_vec = env_mat * refnormpersp; - - vec3 reflected_color = textureCube(environmentMap, env_vec).rgb; - - color = mix(color, reflected_color, envIntensity); - - float cur_glare = max(reflected_color.r, reflected_color.g); - cur_glare = max(cur_glare, reflected_color.b); - cur_glare *= envIntensity*4.0; - glare += cur_glare; - } - - color = atmosFragLighting(color, additive, atten); - color = scaleSoftClipFrag(color); - - //convert to linear before adding local lights - color = srgb_to_linear(color); - - vec3 npos = normalize(-pos.xyz); - - vec3 light = vec3(0, 0, 0); - -#define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare, light_attenuation[i].w ); - - LIGHT_LOOP(1) - LIGHT_LOOP(2) - LIGHT_LOOP(3) - LIGHT_LOOP(4) - LIGHT_LOOP(5) - LIGHT_LOOP(6) - LIGHT_LOOP(7) - - color += light; - - glare = min(glare, 1.0); - float al = max(diffcol.a, glare)*vertex_color.a; - - //convert to srgb as this color is being written post gamma correction - color = linear_to_srgb(color); - -#ifdef WATER_FOG - vec4 temp = applyWaterFogView(pos, vec4(color, al)); - color = temp.rgb; - al = temp.a; -#endif - - frag_color = vec4(color, al); - -#else // mode is not DIFFUSE_ALPHA_MODE_BLEND, encode to gbuffer - - // deferred path - frag_data[0] = final_color; //gbuffer is sRGB - frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent. - frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity. -#endif -} - +/** +* @file materialF.glsl +* +* $LicenseInfo:firstyear=2007&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2007, Linden Research, Inc. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; +* version 2.1 of the License only. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* +* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA +* $/LicenseInfo$ +*/ + +/*[EXTRA_CODE_HERE]*/ + +//class1/deferred/materialF.glsl + +// This shader is used for both writing opaque/masked content to the gbuffer and writing blended content to the framebuffer during the alpha pass. + +#define DIFFUSE_ALPHA_MODE_NONE 0 +#define DIFFUSE_ALPHA_MODE_BLEND 1 +#define DIFFUSE_ALPHA_MODE_MASK 2 +#define DIFFUSE_ALPHA_MODE_EMISSIVE 3 + +uniform float emissive_brightness; // fullbright flag, 1.0 == fullbright, 0.0 otherwise +uniform int sun_up_factor; + +#ifdef WATER_FOG +vec4 applyWaterFogView(vec3 pos, vec4 color); +#endif + +vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten); +vec3 scaleSoftClipFrag(vec3 l); + +vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten); +vec3 fullbrightScaleSoftClip(vec3 light); + +void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten, bool use_ao); + +vec3 srgb_to_linear(vec3 cs); +vec3 linear_to_srgb(vec3 cs); + +#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) + +#ifdef DEFINE_GL_FRAGCOLOR +out vec4 frag_color; +#else +#define frag_color gl_FragColor +#endif + +#ifdef HAS_SUN_SHADOW +float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen); +#endif + +uniform samplerCube environmentMap; +uniform sampler2D lightFunc; + +// Inputs +uniform vec4 morphFactor; +uniform vec3 camPosLocal; +uniform mat3 env_mat; + +uniform vec3 sun_dir; +uniform vec3 moon_dir; +VARYING vec2 vary_fragcoord; + +VARYING vec3 vary_position; + +uniform mat4 proj_mat; +uniform mat4 inv_proj; +uniform vec2 screen_res; + +uniform vec4 light_position[8]; +uniform vec3 light_direction[8]; +uniform vec4 light_attenuation[8]; +uniform vec3 light_diffuse[8]; + +float getAmbientClamp(); + +vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spec, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, inout float glare, float ambiance) +{ + vec3 col = vec3(0); + + //get light vector + vec3 lv = lp.xyz - v; + + //get distance + float dist = length(lv); + float da = 1.0; + + dist /= la; + + if (dist > 0.0 && la > 0.0) + { + //normalize light vector + lv = normalize(lv); + + //distance attenuation + float dist_atten = clamp(1.0 - (dist - 1.0*(1.0 - fa)) / fa, 0.0, 1.0); + dist_atten *= dist_atten; + dist_atten *= 2.0f; + + if (dist_atten <= 0.0) + { + return col; + } + + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 + + //angular attenuation + da *= dot(n, lv); + + float lit = 0.0f; + + float amb_da = ambiance; + if (da >= 0) + { + lit = max(da * dist_atten, 0.0); + col = lit * light_col * diffuse; + amb_da += (da*0.5 + 0.5) * ambiance; + } + amb_da += (da*da*0.5 + 0.5) * ambiance; + amb_da *= dist_atten; + amb_da = min(amb_da, 1.0f - lit); + + // SL-10969 need to see why these are blown out + //col.rgb += amb_da * light_col * diffuse; + + if (spec.a > 0.0) + { + //vec3 ref = dot(pos+lv, norm); + vec3 h = normalize(lv + npos); + float nh = dot(n, h); + float nv = dot(n, npos); + float vh = dot(npos, h); + float sa = nh; + float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; + + float gtdenom = 2 * nh; + float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); + + if (nh > 0.0) + { + float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); + vec3 speccol = lit*scol*light_col.rgb*spec.rgb; + speccol = clamp(speccol, vec3(0), vec3(1)); + col += speccol; + + float cur_glare = max(speccol.r, speccol.g); + cur_glare = max(cur_glare, speccol.b); + glare = max(glare, speccol.r); + glare += max(cur_glare, 0.0); + } + } + } + + return max(col, vec3(0.0, 0.0, 0.0)); +} + +#else +#ifdef DEFINE_GL_FRAGCOLOR +out vec4 frag_data[3]; +#else +#define frag_data gl_FragData +#endif +#endif + +uniform sampler2D diffuseMap; //always in sRGB space + +#ifdef HAS_NORMAL_MAP +uniform sampler2D bumpMap; +#endif + +#ifdef HAS_SPECULAR_MAP +uniform sampler2D specularMap; + +VARYING vec2 vary_texcoord2; +#endif + +uniform float env_intensity; +uniform vec4 specular_color; // specular color RGB and specular exponent (glossiness) in alpha + +#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) +uniform float minimum_alpha; +#endif + +#ifdef HAS_NORMAL_MAP +VARYING vec3 vary_mat0; +VARYING vec3 vary_mat1; +VARYING vec3 vary_mat2; +VARYING vec2 vary_texcoord1; +#else +VARYING vec3 vary_normal; +#endif + +VARYING vec4 vertex_color; +VARYING vec2 vary_texcoord0; + +vec2 encode_normal(vec3 n); + +void main() +{ + vec2 pos_screen = vary_texcoord0.xy; + + vec4 diffcol = texture2D(diffuseMap, vary_texcoord0.xy); + diffcol.rgb *= vertex_color.rgb; + +#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_MASK) + + // Comparing floats cast from 8-bit values, produces acne right at the 8-bit transition points + float bias = 0.001953125; // 1/512, or half an 8-bit quantization + if (diffcol.a < minimum_alpha-bias) + { + discard; + } +#endif + +#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) + vec3 gamma_diff = diffcol.rgb; + diffcol.rgb = srgb_to_linear(diffcol.rgb); +#endif + +#ifdef HAS_SPECULAR_MAP + vec4 spec = texture2D(specularMap, vary_texcoord2.xy); + spec.rgb *= specular_color.rgb; +#else + vec4 spec = vec4(specular_color.rgb, 1.0); +#endif + +#ifdef HAS_NORMAL_MAP + vec4 norm = texture2D(bumpMap, vary_texcoord1.xy); + + norm.xyz = norm.xyz * 2 - 1; + + vec3 tnorm = vec3(dot(norm.xyz,vary_mat0), + dot(norm.xyz,vary_mat1), + dot(norm.xyz,vary_mat2)); +#else + vec4 norm = vec4(0,0,0,1.0); + vec3 tnorm = vary_normal; +#endif + + norm.xyz = normalize(tnorm.xyz); + + vec2 abnormal = encode_normal(norm.xyz); + + vec4 final_color = diffcol; + +#if (DIFFUSE_ALPHA_MODE != DIFFUSE_ALPHA_MODE_EMISSIVE) + final_color.a = emissive_brightness; +#else + final_color.a = max(final_color.a, emissive_brightness); +#endif + + vec4 final_specular = spec; + +#ifdef HAS_SPECULAR_MAP + vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity * spec.a, 0.0); + final_specular.a = specular_color.a * norm.a; +#else + vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity, 0.0); + final_specular.a = specular_color.a; +#endif + +#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) + + //forward rendering, output just lit sRGBA + vec3 pos = vary_position; + + float shadow = 1.0f; + +#ifdef HAS_SUN_SHADOW + shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen); +#endif + + spec = final_specular; + vec4 diffuse = final_color; + float envIntensity = final_normal.z; + + vec3 color = vec3(0,0,0); + + vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir; + + float bloom = 0.0; + vec3 sunlit; + vec3 amblit; + vec3 additive; + vec3 atten; + + calcAtmosphericVars(pos.xyz, light_dir, 1.0, sunlit, amblit, additive, atten, false); + + // This call breaks the Mac GLSL compiler/linker for unknown reasons (17Mar2020) + // The call is either a no-op or a pure (pow) gamma adjustment, depending on GPU level + // TODO: determine if we want to re-apply the gamma adjustment, and if so understand & fix Mac breakage + //color = fullbrightScaleSoftClip(color); + + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + + //we're in sRGB space, so gamma correct this dot product so + // lighting from the sun stays sharp + float da = clamp(dot(normalize(norm.xyz), light_dir.xyz), 0.0, 1.0); + da = pow(da, 1.0 / 1.3); + + color = amblit; + + //darken ambient for normals perpendicular to light vector so surfaces in shadow + // and facing away from light still have some definition to them. + // do NOT gamma correct this dot product so ambient lighting stays soft + float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0); + ambient *= 0.5; + ambient *= ambient; + ambient = (1.0 - ambient); + + vec3 sun_contrib = min(da, shadow) * sunlit; + + color *= ambient; + + color += sun_contrib; + + color *= gamma_diff.rgb; + + float glare = 0.0; + + if (spec.a > 0.0) // specular reflection + { +#if 1 //EEP + + vec3 npos = -normalize(pos.xyz); + + //vec3 ref = dot(pos+lv, norm); + vec3 h = normalize(light_dir.xyz + npos); + float nh = dot(norm.xyz, h); + float nv = dot(norm.xyz, npos); + float vh = dot(npos, h); + float sa = nh; + float fres = pow(1 - dot(h, npos), 5)*0.4 + 0.5; + + float gtdenom = 2 * nh; + float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); + + if (nh > 0.0) + { + float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt / (nh*da); + vec3 sp = sun_contrib*scol / 6.0f; + sp = clamp(sp, vec3(0), vec3(1)); + bloom = dot(sp, sp) / 4.0; + color += sp * spec.rgb; + } +#else // PRODUCTION + float sa = dot(refnormpersp, sun_dir.xyz); + vec3 dumbshiny = sunlit*shadow*(texture2D(lightFunc, vec2(sa, spec.a)).r); + + // add the two types of shiny together + vec3 spec_contrib = dumbshiny * spec.rgb; + bloom = dot(spec_contrib, spec_contrib) / 6; + + glare = max(spec_contrib.r, spec_contrib.g); + glare = max(glare, spec_contrib.b); + + color += spec_contrib; +#endif + } + + color = mix(color.rgb, diffcol.rgb, diffuse.a); + + if (envIntensity > 0.0) + { + //add environmentmap + vec3 env_vec = env_mat * refnormpersp; + + vec3 reflected_color = textureCube(environmentMap, env_vec).rgb; + + color = mix(color, reflected_color, envIntensity); + + float cur_glare = max(reflected_color.r, reflected_color.g); + cur_glare = max(cur_glare, reflected_color.b); + cur_glare *= envIntensity*4.0; + glare += cur_glare; + } + + color = atmosFragLighting(color, additive, atten); + color = scaleSoftClipFrag(color); + + //convert to linear before adding local lights + color = srgb_to_linear(color); + + vec3 npos = normalize(-pos.xyz); + + vec3 light = vec3(0, 0, 0); + +#define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare, light_attenuation[i].w ); + + LIGHT_LOOP(1) + LIGHT_LOOP(2) + LIGHT_LOOP(3) + LIGHT_LOOP(4) + LIGHT_LOOP(5) + LIGHT_LOOP(6) + LIGHT_LOOP(7) + + color += light; + + glare = min(glare, 1.0); + float al = max(diffcol.a, glare)*vertex_color.a; + + //convert to srgb as this color is being written post gamma correction + color = linear_to_srgb(color); + +#ifdef WATER_FOG + vec4 temp = applyWaterFogView(pos, vec4(color, al)); + color = temp.rgb; + al = temp.a; +#endif + + frag_color = vec4(color, al); + +#else // mode is not DIFFUSE_ALPHA_MODE_BLEND, encode to gbuffer + + // deferred path + frag_data[0] = final_color; //gbuffer is sRGB + frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent. + frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity. +#endif +} + From c4d66ee3cfa68278950d573796a205ce70620639 Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Thu, 30 Apr 2020 20:40:50 +0200 Subject: [PATCH 19/25] FIRE-29499 Russian translation update by Romka Swallowtail --- .../ansastorm/xui/ru/panel_main_inventory.xml | 2 +- .../skins/default/xui/en/floater_about.xml | 2 +- .../xui/ru/floater_NACL_explore_sounds.xml | 26 + .../default/xui/ru/floater_about_land.xml | 21 +- .../xui/ru/floater_animation_bvh_preview.xml | 3 + .../xui/ru/floater_animation_explorer.xml | 11 +- .../xui/ru/floater_avatar_textures.xml | 24 +- .../skins/default/xui/ru/floater_beacons.xml | 2 + .../default/xui/ru/floater_beamcolor.xml | 2 +- .../default/xui/ru/floater_build_options.xml | 1 + .../default/xui/ru/floater_bulk_perms.xml | 17 +- .../skins/default/xui/ru/floater_camera.xml | 67 +-- .../skins/default/xui/ru/floater_chat_bar.xml | 7 - .../default/xui/ru/floater_color_picker.xml | 76 ++- .../xui/ru/floater_conversation_preview.xml | 2 +- .../xui/ru/floater_delete_env_preset.xml | 50 +- .../xui/ru/floater_edit_sky_preset.xml | 264 ++++----- .../xui/ru/floater_edit_water_preset.xml | 124 +++-- .../xui/ru/floater_environment_settings.xml | 12 +- .../xui/ru/floater_experienceprofile.xml | 179 +++--- .../skins/default/xui/ru/floater_facebook.xml | 15 - .../default/xui/ru/floater_forget_user.xml | 6 + .../default/xui/ru/floater_fs_area_search.xml | 93 ++++ .../xui/ru/floater_fs_asset_blacklist.xml | 7 +- .../ru/floater_fs_avatar_render_settings.xml | 12 + .../default/xui/ru/floater_fs_im_session.xml | 14 + .../default/xui/ru/floater_fs_import.xml | 30 + .../xui/ru/floater_fs_money_tracker.xml | 3 + .../default/xui/ru/floater_fs_nearby_chat.xml | 10 +- .../xui/ru/floater_fs_protectedfolders.xml | 15 + .../xui/ru/floater_fs_wearable_favorites.xml | 14 + .../skins/default/xui/ru/floater_hud.xml | 2 +- .../default/xui/ru/floater_image_preview.xml | 2 +- .../skins/default/xui/ru/floater_inspect.xml | 47 +- .../ru/floater_inventory_item_properties.xml | 2 + .../xui/ru/floater_inventory_view_finder.xml | 4 +- .../default/xui/ru/floater_linkreplace.xml | 20 + .../default/xui/ru/floater_media_lists.xml | 4 +- .../default/xui/ru/floater_model_preview.xml | 525 +++++++----------- .../skins/default/xui/ru/floater_moveview.xml | 186 ++++--- .../xui/ru/floater_outfit_photo_preview.xml | 17 + .../xui/ru/floater_outfit_snapshot.xml | 61 ++ .../xui/ru/floater_particle_editor.xml | 90 +++ .../xui/ru/floater_phototools_camera.xml | 159 ++++++ .../xui/ru/floater_preview_notecard.xml | 1 + .../xui/ru/floater_preview_texture.xml | 44 +- .../default/xui/ru/floater_preview_trash.xml | 11 + .../default/xui/ru/floater_quickprefs.xml | 127 +++-- .../default/xui/ru/floater_region_tracker.xml | 1 + .../default/xui/ru/floater_rlv_behaviours.xml | 21 +- .../default/xui/ru/floater_rlv_console.xml | 3 + .../default/xui/ru/floater_rlv_locks.xml | 2 +- .../default/xui/ru/floater_rlv_strings.xml | 6 +- .../xui/ru/floater_scene_load_stats.xml | 69 +++ .../xui/ru/floater_script_ed_prefs.xml | 74 +++ .../default/xui/ru/floater_script_search.xml | 13 - .../default/xui/ru/floater_search_replace.xml | 1 + .../default/xui/ru/floater_settings_debug.xml | 23 +- .../skins/default/xui/ru/floater_snapshot.xml | 3 +- .../default/xui/ru/floater_sound_preview.xml | 2 +- .../default/xui/ru/floater_texture_ctrl.xml | 30 +- .../skins/default/xui/ru/floater_tools.xml | 169 +++--- .../default/xui/ru/floater_top_objects.xml | 13 +- .../skins/default/xui/ru/floater_toybox.xml | 1 + .../skins/default/xui/ru/floater_twitter.xml | 13 - .../default/xui/ru/floater_ui_preview.xml | 69 +++ .../default/xui/ru/floater_voice_controls.xml | 30 - .../default/xui/ru/floater_web_content.xml | 14 + .../default/xui/ru/menu_attachment_other.xml | 7 +- .../default/xui/ru/menu_attachment_self.xml | 5 +- .../skins/default/xui/ru/menu_avatar_icon.xml | 1 + .../default/xui/ru/menu_avatar_other.xml | 6 +- .../skins/default/xui/ru/menu_avatar_self.xml | 3 +- .../default/xui/ru/menu_fs_block_list.xml | 4 + .../default/xui/ru/menu_fs_bump_list.xml | 8 +- .../default/xui/ru/menu_fs_bump_list.xml.xml | 10 + .../default/xui/ru/menu_fs_chat_options.xml | 19 + .../xui/ru/menu_fs_contacts_friends.xml | 2 + .../xui/ru/menu_fs_inspect_options.xml | 12 + .../skins/default/xui/ru/menu_fs_radar.xml | 5 + .../xui/ru/menu_fs_radar_multiselect.xml | 5 + .../xui/ru/menu_fs_wearable_favorites.xml | 6 + .../xui/ru/menu_gallery_outfit_tab.xml | 33 ++ .../skins/default/xui/ru/menu_hide_navbar.xml | 6 + .../skins/default/xui/ru/menu_inventory.xml | 12 +- .../xui/ru/menu_inventory_gear_default.xml | 1 + .../skins/default/xui/ru/menu_mini_map.xml | 6 + .../default/xui/ru/menu_participant_list.xml | 1 + .../xui/ru/menu_people_friends_view_sort.xml | 8 - .../default/xui/ru/menu_people_groups.xml | 1 + .../xui/ru/menu_people_groups_view_sort.xml | 5 - .../xui/ru/menu_people_nearby_view_sort.xml | 9 - .../xui/ru/menu_people_recent_view_sort.xml | 7 - .../xui/ru/menu_pie_attachment_other.xml | 10 + .../xui/ru/menu_pie_attachment_self.xml | 5 + .../default/xui/ru/menu_pie_avatar_other.xml | 10 + .../default/xui/ru/menu_pie_avatar_self.xml | 27 +- .../skins/default/xui/ru/menu_pie_object.xml | 36 +- .../default/xui/ru/menu_profile_overflow.xml | 3 +- .../xui/ru/menu_teleport_history_gear.xml | 9 + .../skins/default/xui/ru/menu_viewer.xml | 96 +++- .../xui/ru/panel_adhoc_control_panel.xml | 14 - .../newview/skins/default/xui/ru/panel_ao.xml | 55 ++ .../default/xui/ru/panel_avatar_list_item.xml | 12 + .../xui/ru/panel_block_list_sidetray.xml | 26 +- .../default/xui/ru/panel_edit_universal.xml | 20 + .../default/xui/ru/panel_edit_wearable.xml | 3 + .../xui/ru/panel_experience_list_editor.xml | 4 +- .../default/xui/ru/panel_experience_log.xml | 4 +- .../xui/ru/panel_experience_search.xml | 5 +- .../default/xui/ru/panel_experiences.xml | 2 +- .../default/xui/ru/panel_facebook_friends.xml | 12 - .../default/xui/ru/panel_facebook_photo.xml | 20 - .../default/xui/ru/panel_facebook_place.xml | 9 - .../default/xui/ru/panel_facebook_status.xml | 20 - .../default/xui/ru/panel_flickr_photo.xml | 3 +- .../xui/ru/panel_fs_block_list_sidetray.xml | 17 + .../skins/default/xui/ru/panel_fs_login.xml | 1 + .../default/xui/ru/panel_fs_nui_login.xml | 55 ++ .../xui/ru/panel_fs_profile_classified.xml | 32 +- .../default/xui/ru/panel_fs_profile_pick.xml | 8 +- .../xui/ru/panel_fs_search_legacy_events.xml | 38 ++ .../xui/ru/panel_fs_search_legacy_web.xml | 2 + .../default/xui/ru/panel_group_bulk_ban.xml | 44 ++ .../xui/ru/panel_group_control_panel.xml | 17 - .../xui/ru/panel_group_creation_sidetray.xml | 58 ++ .../default/xui/ru/panel_group_notify.xml | 2 + .../default/xui/ru/panel_group_roles.xml | 3 +- .../default/xui/ru/panel_im_control_panel.xml | 29 - .../default/xui/ru/panel_login_first.xml | 30 + .../xui/ru/panel_marketplace_listings.xml | 7 +- .../xui/ru/panel_media_settings_general.xml | 4 +- .../ru/panel_media_settings_permissions.xml | 4 +- .../default/xui/ru/panel_nearby_media.xml | 2 +- .../skins/default/xui/ru/panel_notes.xml | 9 - .../xui/ru/panel_notification_list_item.xml | 57 ++ .../default/xui/ru/panel_notify_textbox.xml | 2 +- .../default/xui/ru/panel_outfit_edit.xml | 2 + .../default/xui/ru/panel_outfit_gallery.xml | 17 + .../ru/panel_outfit_snapshot_inventory.xml | 13 + .../xui/ru/panel_outfits_inventory.xml | 3 + .../default/xui/ru/panel_outfits_list.xml | 9 +- .../default/xui/ru/panel_outfits_wearing.xml | 3 + .../skins/default/xui/ru/panel_picks.xml | 2 +- .../default/xui/ru/panel_place_profile.xml | 4 +- .../xui/ru/panel_postcard_settings.xml | 4 +- .../default/xui/ru/panel_preferences_UI.xml | 45 +- .../xui/ru/panel_preferences_alerts.xml | 1 + .../xui/ru/panel_preferences_backup.xml | 12 + .../default/xui/ru/panel_preferences_chat.xml | 37 +- .../xui/ru/panel_preferences_colors.xml | 24 +- .../xui/ru/panel_preferences_firestorm.xml | 77 ++- .../xui/ru/panel_preferences_general.xml | 10 +- .../xui/ru/panel_preferences_graphics1.xml | 18 +- .../default/xui/ru/panel_preferences_move.xml | 30 +- .../xui/ru/panel_preferences_privacy.xml | 21 +- .../xui/ru/panel_preferences_setup.xml | 9 +- .../xui/ru/panel_preferences_skins.xml | 1 + .../xui/ru/panel_preferences_sound.xml | 45 +- .../default/xui/ru/panel_region_access.xml | 20 +- .../default/xui/ru/panel_region_covenant.xml | 2 +- .../default/xui/ru/panel_region_debug.xml | 12 +- .../xui/ru/panel_region_environment.xml | 6 +- .../default/xui/ru/panel_region_general.xml | 12 +- .../ru/panel_region_open_region_settings.xml | 23 + .../default/xui/ru/panel_region_terrain.xml | 6 +- .../skins/default/xui/ru/panel_rlv_locks.xml | 1 + .../skins/default/xui/ru/panel_script_ed.xml | 24 +- .../xui/ru/panel_script_ed_preproc.xml | 79 +++ .../xui/ru/panel_script_limits_my_avatar.xml | 2 +- .../ru/panel_script_limits_region_memory.xml | 2 +- .../xui/ru/panel_snapshot_inventory.xml | 5 +- .../default/xui/ru/panel_snapshot_local.xml | 7 +- .../default/xui/ru/panel_snapshot_options.xml | 37 +- .../xui/ru/panel_snapshot_postcard.xml | 2 +- .../default/xui/ru/panel_snapshot_profile.xml | 7 +- .../skins/default/xui/ru/panel_status_bar.xml | 2 +- .../default/xui/ru/panel_tools_texture.xml | 5 +- .../skins/default/xui/ru/role_actions.xml | 2 +- .../default/xui/ru/sidepanel_appearance.xml | 3 + .../default/xui/ru/sidepanel_task_info.xml | 189 ++++--- .../newview/skins/default/xui/ru/strings.xml | 102 ++-- .../xui/ru/widgets/clothing_list_item.xml | 10 + .../widgets/deletable_wearable_list_item.xml | 4 + .../ru/widgets/inbox_folder_view_folder.xml | 2 +- .../xui/ru/widgets/inbox_folder_view_item.xml | 2 +- .../default/xui/ru/widgets/person_view.xml | 15 +- .../default/xui/ru/widgets/texture_picker.xml | 4 - .../firestorm/xui/ru/panel_group_notify.xml | 2 +- .../xui/ru/panel_group_info_sidetray.xml | 3 +- .../xui/ru/panel_group_land_money.xml | 8 +- .../starlight/xui/ru/panel_group_roles.xml | 2 + .../starlight/xui/ru/panel_status_bar.xml | 2 +- .../starlightcui/xui/ru/panel_status_bar.xml | 2 +- .../vintage/xui/ru/floater_about_land.xml | 55 +- .../vintage/xui/ru/floater_display_name.xml | 4 +- .../xui/ru/panel_fs_block_list_sidetray.xml | 3 + .../vintage/xui/ru/panel_main_inventory.xml | 3 +- .../skins/vintage/xui/ru/panel_people.xml | 7 +- 199 files changed, 3413 insertions(+), 1630 deletions(-) create mode 100644 indra/newview/skins/default/xui/ru/floater_NACL_explore_sounds.xml delete mode 100644 indra/newview/skins/default/xui/ru/floater_chat_bar.xml delete mode 100644 indra/newview/skins/default/xui/ru/floater_facebook.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_forget_user.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_fs_area_search.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_fs_avatar_render_settings.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_fs_import.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_fs_protectedfolders.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_fs_wearable_favorites.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_linkreplace.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_outfit_photo_preview.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_outfit_snapshot.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_particle_editor.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_phototools_camera.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_preview_trash.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_rlv_console.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_scene_load_stats.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_script_ed_prefs.xml delete mode 100644 indra/newview/skins/default/xui/ru/floater_script_search.xml delete mode 100644 indra/newview/skins/default/xui/ru/floater_twitter.xml create mode 100644 indra/newview/skins/default/xui/ru/floater_ui_preview.xml delete mode 100644 indra/newview/skins/default/xui/ru/floater_voice_controls.xml create mode 100644 indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml.xml create mode 100644 indra/newview/skins/default/xui/ru/menu_fs_chat_options.xml create mode 100644 indra/newview/skins/default/xui/ru/menu_fs_inspect_options.xml create mode 100644 indra/newview/skins/default/xui/ru/menu_fs_wearable_favorites.xml create mode 100644 indra/newview/skins/default/xui/ru/menu_gallery_outfit_tab.xml delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml delete mode 100644 indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_ao.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_edit_universal.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_facebook_friends.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_facebook_photo.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_facebook_place.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_facebook_status.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_fs_block_list_sidetray.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_fs_nui_login.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_fs_search_legacy_events.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_fs_search_legacy_web.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_group_bulk_ban.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_group_control_panel.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_group_creation_sidetray.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_im_control_panel.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_login_first.xml delete mode 100644 indra/newview/skins/default/xui/ru/panel_notes.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_notification_list_item.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_outfit_gallery.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_outfit_snapshot_inventory.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_region_open_region_settings.xml create mode 100644 indra/newview/skins/default/xui/ru/panel_script_ed_preproc.xml create mode 100644 indra/newview/skins/default/xui/ru/widgets/clothing_list_item.xml create mode 100644 indra/newview/skins/default/xui/ru/widgets/deletable_wearable_list_item.xml delete mode 100644 indra/newview/skins/default/xui/ru/widgets/texture_picker.xml diff --git a/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml b/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml index 5e3e7a4dde..2c55bdbc78 100644 --- a/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml +++ b/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml @@ -22,7 +22,7 @@ - + diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index d85b9d9ba3..4885580318 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -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, Animats, Armin Weatherwax, Beq Janus, Casper Warden, Chalice Yao, Chaser Zaks, 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, Magne Metaverse LLC, Magus Freston, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, Mister Acacia, mygoditsfullofstars, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Paladin Forzane, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, Revolution Smythe, 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, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, Zwagoth Klaar and others. +Albatroz Hird, Alexie Birman, Andromeda Rage, Angeldark Raymaker, Animats, Armin Weatherwax, Beq Janus, Casper Warden, Chalice Yao, Chaser Zaks, 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, Magne Metaverse LLC, Magus Freston, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, MorganMegan, Melancholy Lemon, Melysmile, Mimika Oh, Mister Acacia, mygoditsfullofstars, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Paladin Forzane, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, 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, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, Zwagoth Klaar and others. + + Играет + [TIME] мин.назад + UI + Аватар + llTriggerSound + llLoopSound + llPlaySound + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml index eb8bce857b..73437089a4 100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml @@ -8,7 +8,8 @@ - + + @@ -28,4 +29,7 @@ + + + diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml index 0a94412acd..29cd221525 100644 --- a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml @@ -26,7 +26,8 @@ - + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_block_list.xml b/indra/newview/skins/default/xui/ru/menu_fs_block_list.xml index f471a3ee7c..006dd9cbc1 100644 --- a/indra/newview/skins/default/xui/ru/menu_fs_block_list.xml +++ b/indra/newview/skins/default/xui/ru/menu_fs_block_list.xml @@ -1,5 +1,9 @@ + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml b/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml index a3c29b6fc0..aaa4e04844 100644 --- a/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml +++ b/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml @@ -1,4 +1,10 @@ + + + + + + - + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml.xml b/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml.xml new file mode 100644 index 0000000000..29c161cf91 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_fs_bump_list.xml.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_chat_options.xml b/indra/newview/skins/default/xui/ru/menu_fs_chat_options.xml new file mode 100644 index 0000000000..88d5a70520 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_fs_chat_options.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_contacts_friends.xml b/indra/newview/skins/default/xui/ru/menu_fs_contacts_friends.xml index 69785e29ac..2e2d5191b9 100644 --- a/indra/newview/skins/default/xui/ru/menu_fs_contacts_friends.xml +++ b/indra/newview/skins/default/xui/ru/menu_fs_contacts_friends.xml @@ -22,5 +22,7 @@ + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_inspect_options.xml b/indra/newview/skins/default/xui/ru/menu_fs_inspect_options.xml new file mode 100644 index 0000000000..aa34abb1a3 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_fs_inspect_options.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_radar.xml b/indra/newview/skins/default/xui/ru/menu_fs_radar.xml index d4bd5ddbec..40c7af30d0 100644 --- a/indra/newview/skins/default/xui/ru/menu_fs_radar.xml +++ b/indra/newview/skins/default/xui/ru/menu_fs_radar.xml @@ -34,4 +34,9 @@ + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_radar_multiselect.xml b/indra/newview/skins/default/xui/ru/menu_fs_radar_multiselect.xml index cd4f33dfff..5ea5f40066 100644 --- a/indra/newview/skins/default/xui/ru/menu_fs_radar_multiselect.xml +++ b/indra/newview/skins/default/xui/ru/menu_fs_radar_multiselect.xml @@ -24,4 +24,9 @@ + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_fs_wearable_favorites.xml b/indra/newview/skins/default/xui/ru/menu_fs_wearable_favorites.xml new file mode 100644 index 0000000000..bd9ff2a5aa --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_fs_wearable_favorites.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/indra/newview/skins/default/xui/ru/menu_gallery_outfit_tab.xml b/indra/newview/skins/default/xui/ru/menu_gallery_outfit_tab.xml new file mode 100644 index 0000000000..5e5d4d68e3 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_gallery_outfit_tab.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml index a9c2b6af3b..07c5f12172 100644 --- a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml @@ -6,4 +6,10 @@ + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml index 4887f23423..54a39735e0 100644 --- a/indra/newview/skins/default/xui/ru/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml @@ -17,7 +17,7 @@ - + @@ -41,6 +41,12 @@ + + + + + + @@ -61,6 +67,7 @@ + @@ -68,6 +75,8 @@ + + @@ -103,6 +112,7 @@ + diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml index b4fd6ba14d..eea4287bb6 100644 --- a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml @@ -1,6 +1,7 @@ + diff --git a/indra/newview/skins/default/xui/ru/menu_mini_map.xml b/indra/newview/skins/default/xui/ru/menu_mini_map.xml index 643f4853af..8765446326 100644 --- a/indra/newview/skins/default/xui/ru/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ru/menu_mini_map.xml @@ -58,6 +58,12 @@ + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_participant_list.xml b/indra/newview/skins/default/xui/ru/menu_participant_list.xml index 472b66a3c6..ddaf12f0b9 100644 --- a/indra/newview/skins/default/xui/ru/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ru/menu_participant_list.xml @@ -21,4 +21,5 @@ + diff --git a/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml deleted file mode 100644 index 0fa252aa99..0000000000 --- a/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups.xml b/indra/newview/skins/default/xui/ru/menu_people_groups.xml index 95f37ec5d0..0797e1828c 100644 --- a/indra/newview/skins/default/xui/ru/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml @@ -2,6 +2,7 @@ + diff --git a/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml deleted file mode 100644 index 0358068db9..0000000000 --- a/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml deleted file mode 100644 index 4589815f6b..0000000000 --- a/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml deleted file mode 100644 index 2ac83ffe52..0000000000 --- a/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/indra/newview/skins/default/xui/ru/menu_pie_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_pie_attachment_other.xml index ae35833b69..f440872dd6 100644 --- a/indra/newview/skins/default/xui/ru/menu_pie_attachment_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_pie_attachment_other.xml @@ -23,11 +23,21 @@ + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_pie_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_pie_attachment_self.xml index 12c02d0367..587ae16f94 100644 --- a/indra/newview/skins/default/xui/ru/menu_pie_attachment_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_pie_attachment_self.xml @@ -22,6 +22,11 @@ + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_pie_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_pie_avatar_other.xml index a15ad35315..6c00d00832 100644 --- a/indra/newview/skins/default/xui/ru/menu_pie_avatar_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_pie_avatar_other.xml @@ -23,7 +23,17 @@ + + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_pie_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_pie_avatar_self.xml index cab857100d..474f8db506 100644 --- a/indra/newview/skins/default/xui/ru/menu_pie_avatar_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_pie_avatar_self.xml @@ -21,7 +21,27 @@ - + + + + + + + + + + + + + + + + + + + + + @@ -30,6 +50,11 @@ + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_pie_object.xml b/indra/newview/skins/default/xui/ru/menu_pie_object.xml index 469834878c..93238bda76 100644 --- a/indra/newview/skins/default/xui/ru/menu_pie_object.xml +++ b/indra/newview/skins/default/xui/ru/menu_pie_object.xml @@ -10,14 +10,37 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + @@ -25,6 +48,7 @@ + diff --git a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml index bbb1545b06..7c6851adf4 100644 --- a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml @@ -2,10 +2,11 @@ - + + diff --git a/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml index 67dd2a91e4..8dc1500b83 100644 --- a/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml @@ -2,5 +2,14 @@ + + + + + + + + + diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index bfabcae3f6..625eb922e6 100644 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -4,55 +4,61 @@ - - - - - - - - - + - + + + + + + + + + + - + + + + - + + + + - - - - - - - - - + + + + + + - + + + @@ -60,10 +66,12 @@ + + - + @@ -73,11 +81,15 @@ + + + + @@ -85,6 +97,7 @@ + @@ -134,13 +147,24 @@ - + + + + + + + + + + + + @@ -193,9 +217,11 @@ + + @@ -212,11 +238,12 @@ - + + @@ -229,12 +256,14 @@ + + @@ -268,13 +297,19 @@ + + + + + + @@ -285,7 +320,7 @@ - + @@ -421,7 +456,7 @@ - + @@ -456,6 +491,7 @@ + @@ -487,7 +523,7 @@ - + @@ -549,9 +585,9 @@ - + - + diff --git a/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml deleted file mode 100644 index ae2240593d..0000000000 --- a/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - -