Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/llhudtext.h # indra/newview/pipeline.cpp # indra/newview/skins/default/xui/de/notifications.xml # indra/newview/skins/default/xui/es/notifications.xml # indra/newview/skins/default/xui/fr/notifications.xml # indra/newview/skins/default/xui/it/notifications.xml # indra/newview/skins/default/xui/ja/notifications.xml # indra/newview/skins/default/xui/pt/notifications.xmlmaster
commit
064f6dacc5
|
|
@ -144,7 +144,7 @@ LLSettingsDay::LLSettingsDay() :
|
|||
//=========================================================================
|
||||
LLSD& LLSettingsDay::getSettings()
|
||||
{
|
||||
if (!mDaySettings.emptyMap())
|
||||
if (mDaySettings.size() > 0)
|
||||
{
|
||||
return mDaySettings;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#include "llvertexbuffer.h"
|
||||
|
||||
|
||||
bool LLFontVertexBuffer::sEnableBufferCollection = true;
|
||||
|
||||
LLFontVertexBuffer::LLFontVertexBuffer()
|
||||
{
|
||||
}
|
||||
|
|
@ -119,6 +121,11 @@ S32 LLFontVertexBuffer::render(
|
|||
{
|
||||
return static_cast<S32>(text.length());
|
||||
}
|
||||
if (!sEnableBufferCollection)
|
||||
{
|
||||
// For debug purposes and performance testing
|
||||
return fontp->render(text, begin_offset, x, y, color, halign, valign, style, shadow, max_chars, max_pixels, right_x, use_ellipses, use_color);
|
||||
}
|
||||
if (mBufferList.empty())
|
||||
{
|
||||
genBuffers(fontp, text, begin_offset, x, y, color, halign, valign,
|
||||
|
|
|
|||
|
|
@ -78,6 +78,8 @@ public:
|
|||
F32* right_x = NULL,
|
||||
bool use_ellipses = false,
|
||||
bool use_color = true);
|
||||
|
||||
static void enableBufferCollection(bool enable) { sEnableBufferCollection = enable; }
|
||||
private:
|
||||
|
||||
void genBuffers(const LLFontGL* fontp,
|
||||
|
|
@ -114,6 +116,8 @@ private:
|
|||
F32 mLastScaleX = 1.f;
|
||||
F32 mLastScaleY = 1.f;
|
||||
LLCoordGL mLastOrigin;
|
||||
|
||||
static bool sEnableBufferCollection;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1712,10 +1712,10 @@ void gl_segmented_rect_3d_tex(const LLRectf& clip_rect, const LLRectf& center_uv
|
|||
gGL.vertex3fv((center_draw_rect.mRight * width_vec + height_vec).mV);
|
||||
|
||||
gGL.texCoord2f(center_uv_rect.mLeft, center_uv_rect.mTop);
|
||||
gGL.vertex3fv((center_draw_rect.mLeft* width_vec + center_draw_rect.mTop * height_vec).mV);
|
||||
gGL.vertex3fv((center_draw_rect.mLeft * width_vec + center_draw_rect.mTop * height_vec).mV);
|
||||
|
||||
gGL.texCoord2f(center_uv_rect.mRight, center_uv_rect.mTop);
|
||||
gGL.vertex3fv((center_draw_rect.mRight* width_vec + center_draw_rect.mTop * height_vec).mV);
|
||||
gGL.texCoord2f(center_uv_rect.mRight, clip_rect.mTop);
|
||||
gGL.vertex3fv((center_draw_rect.mRight* width_vec + height_vec).mV);
|
||||
|
||||
gGL.texCoord2f(center_uv_rect.mLeft, clip_rect.mTop);
|
||||
gGL.vertex3fv((center_draw_rect.mLeft * width_vec + height_vec).mV);
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ void LLComboBox::setValue(const LLSD& value)
|
|||
if (LLScrollListItem* item = mList->getFirstSelected())
|
||||
{
|
||||
LLSD item_value = item->getValue();
|
||||
if (item_value.asStringRef() == value.asStringRef())
|
||||
if (item_value.asString() == value.asString())
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -580,12 +580,12 @@ std::vector<LLScrollListItem*> LLScrollListCtrl::getAllData() const
|
|||
// returns first matching item
|
||||
LLScrollListItem* LLScrollListCtrl::getItem(const LLSD& sd) const
|
||||
{
|
||||
const std::string& string_val = sd.asStringRef();
|
||||
std::string string_val = sd.asString();
|
||||
|
||||
for (LLScrollListItem* item : mItemList)
|
||||
{
|
||||
// assumes string representation is good enough for comparison
|
||||
if (item->getValue().asStringRef() == string_val)
|
||||
if (item->getValue().asString() == string_val)
|
||||
{
|
||||
return item;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13080,6 +13080,17 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Backup</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>CollectFontVertexBuffers</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When enabled some UI elements with cache buffers generated by fonts and reuse them. When disabled general cahce will be used with a significant overhead for hash, but it regenerates vertices each frame so it's always up to date.</string>
|
||||
<key>Persist</key>
|
||||
<integer>0</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>ShowMyComplexityChanges</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -2228,6 +2228,7 @@ void LLEnvironment::coroUpdateEnvironment(S32 parcel_id, S32 track_no, UpdateInf
|
|||
body[KEY_ENVIRONMENT][KEY_DAYLENGTH] = updates->mDayLength;
|
||||
}
|
||||
|
||||
// server only allows positive values
|
||||
if (updates->mDayOffset > 0)
|
||||
{
|
||||
body[KEY_ENVIRONMENT][KEY_DAYOFFSET] = updates->mDayOffset;
|
||||
|
|
|
|||
|
|
@ -706,7 +706,7 @@ void LLHUDEffectLookAt::render()
|
|||
}
|
||||
|
||||
gGL.pushMatrix();
|
||||
hud_render_utf8text(name, position, nullptr, *fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -0.5f * fontp->getWidthF32(name), 3.0f, lookAtColor, false);
|
||||
hud_render_utf8text(name, position, *fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -0.5f * fontp->getWidthF32(name), 3.0f, lookAtColor, false);
|
||||
gGL.popMatrix();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -291,15 +291,6 @@ void LLHUDNameTag::renderText()
|
|||
LLVector3 render_position = mPositionAgent
|
||||
+ (x_pixel_vec * screen_offset.mV[VX])
|
||||
+ (y_pixel_vec * screen_offset.mV[VY]);
|
||||
bool reset_buffers = false;
|
||||
const F32 treshold = 0.000001f;
|
||||
if (abs(mLastRenderPosition.mV[VX] - render_position.mV[VX]) > treshold
|
||||
|| abs(mLastRenderPosition.mV[VY] - render_position.mV[VY]) > treshold
|
||||
|| abs(mLastRenderPosition.mV[VZ] - render_position.mV[VZ]) > treshold)
|
||||
{
|
||||
reset_buffers = true;
|
||||
mLastRenderPosition = render_position;
|
||||
}
|
||||
|
||||
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
|
||||
LLRect screen_rect;
|
||||
|
|
@ -326,11 +317,6 @@ void LLHUDNameTag::renderText()
|
|||
for(std::vector<LLHUDTextSegment>::iterator segment_iter = mLabelSegments.begin();
|
||||
segment_iter != mLabelSegments.end(); ++segment_iter )
|
||||
{
|
||||
if (reset_buffers)
|
||||
{
|
||||
segment_iter->mFontBufferLabel.reset();
|
||||
}
|
||||
|
||||
// Label segments use default font
|
||||
const LLFontGL* fontp = (segment_iter->mStyle == LLFontGL::BOLD) ? mBoldFontp : mFontp;
|
||||
y_offset -= fontp->getLineHeight();
|
||||
|
|
@ -346,7 +332,7 @@ void LLHUDNameTag::renderText()
|
|||
}
|
||||
|
||||
LLColor4 label_color(0.f, 0.f, 0.f, alpha_factor);
|
||||
hud_render_text(segment_iter->getText(), render_position, &segment_iter->mFontBufferLabel, *fontp, segment_iter->mStyle, LLFontGL::NO_SHADOW, x_offset, y_offset, label_color, false);
|
||||
hud_render_text(segment_iter->getText(), render_position, *fontp, segment_iter->mStyle, LLFontGL::NO_SHADOW, x_offset, y_offset, label_color, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -368,11 +354,6 @@ void LLHUDNameTag::renderText()
|
|||
for (std::vector<LLHUDTextSegment>::iterator segment_iter = mTextSegments.begin() + start_segment;
|
||||
segment_iter != mTextSegments.end(); ++segment_iter )
|
||||
{
|
||||
if (reset_buffers)
|
||||
{
|
||||
segment_iter->mFontBufferText.reset();
|
||||
}
|
||||
|
||||
const LLFontGL* fontp = segment_iter->mFont;
|
||||
y_offset -= fontp->getLineHeight();
|
||||
y_offset -= LINE_PADDING;
|
||||
|
|
@ -396,7 +377,7 @@ void LLHUDNameTag::renderText()
|
|||
text_color = segment_iter->mColor;
|
||||
text_color.mV[VALPHA] *= alpha_factor;
|
||||
|
||||
hud_render_text(segment_iter->getText(), render_position, &segment_iter->mFontBufferText, *fontp, style, shadow, x_offset, y_offset, text_color, false);
|
||||
hud_render_text(segment_iter->getText(), render_position, *fontp, style, shadow, x_offset, y_offset, text_color, false);
|
||||
}
|
||||
}
|
||||
/// Reset the default color to white. The renderer expects this to be the default.
|
||||
|
|
|
|||
|
|
@ -68,8 +68,6 @@ protected:
|
|||
LLColor4 mColor;
|
||||
LLFontGL::StyleFlags mStyle;
|
||||
const LLFontGL* mFont;
|
||||
LLFontVertexBuffer mFontBufferLabel;
|
||||
LLFontVertexBuffer mFontBufferText;
|
||||
private:
|
||||
LLWString mText;
|
||||
std::map<const LLFontGL*, F32> mFontWidthMap;
|
||||
|
|
@ -177,7 +175,6 @@ private:
|
|||
S32 mMaxLines;
|
||||
S32 mOffsetY;
|
||||
F32 mRadius;
|
||||
LLVector3 mLastRenderPosition;
|
||||
std::vector<LLHUDTextSegment> mTextSegments;
|
||||
std::vector<LLHUDTextSegment> mLabelSegments;
|
||||
// LLFrameTimer mResizeTimer;
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
#include <glm/gtc/type_ptr.hpp>
|
||||
|
||||
void hud_render_utf8text(const std::string &str, const LLVector3 &pos_agent,
|
||||
LLFontVertexBuffer *font_buffer,
|
||||
const LLFontGL &font,
|
||||
const U8 style,
|
||||
const LLFontGL::ShadowType shadow,
|
||||
|
|
@ -51,11 +50,10 @@ void hud_render_utf8text(const std::string &str, const LLVector3 &pos_agent,
|
|||
const bool orthographic)
|
||||
{
|
||||
LLWString wstr(utf8str_to_wstring(str));
|
||||
hud_render_text(wstr, pos_agent, font_buffer, font, style, shadow, x_offset, y_offset, color, orthographic);
|
||||
hud_render_text(wstr, pos_agent, font, style, shadow, x_offset, y_offset, color, orthographic);
|
||||
}
|
||||
|
||||
void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
|
||||
LLFontVertexBuffer *font_buffer,
|
||||
const LLFontGL &font,
|
||||
const U8 style,
|
||||
const LLFontGL::ShadowType shadow,
|
||||
|
|
@ -127,14 +125,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
|
|||
LLUI::translate((F32) win_coord.x*1.0f/LLFontGL::sScaleX, (F32) win_coord.y*1.0f/(LLFontGL::sScaleY), -(((F32) win_coord.z*2.f)-1.f));
|
||||
F32 right_x;
|
||||
|
||||
if (font_buffer)
|
||||
{
|
||||
font_buffer->render(&font, wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, static_cast<S32>(wstr.length()), 1000, &right_x, /*use_ellipses*/false, /*use_color*/true);
|
||||
}
|
||||
else
|
||||
{
|
||||
font.render(wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, static_cast<S32>(wstr.length()), 1000, &right_x, /*use_ellipses*/false, /*use_color*/true);
|
||||
}
|
||||
font.render(wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, static_cast<S32>(wstr.length()), 1000, &right_x, /*use_ellipses*/false, /*use_color*/true);
|
||||
|
||||
LLUI::popMatrix();
|
||||
gGL.popMatrix();
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ class LLFontGL;
|
|||
// Utility classes for rendering HUD elements
|
||||
void hud_render_text(const LLWString &wstr,
|
||||
const LLVector3 &pos_agent,
|
||||
LLFontVertexBuffer *font_buffer,
|
||||
const LLFontGL &font,
|
||||
const U8 style,
|
||||
const LLFontGL::ShadowType,
|
||||
|
|
@ -48,7 +47,6 @@ void hud_render_text(const LLWString &wstr,
|
|||
// Legacy, slower
|
||||
void hud_render_utf8text(const std::string &str,
|
||||
const LLVector3 &pos_agent,
|
||||
LLFontVertexBuffer *font_buffer,
|
||||
const LLFontGL &font,
|
||||
const U8 style,
|
||||
const LLFontGL::ShadowType,
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ void LLHUDText::renderText()
|
|||
}
|
||||
text_color.mV[VALPHA] *= alpha_factor;
|
||||
|
||||
hud_render_text(segment_iter->getText(), render_position, &mFontBuffer, *fontp, style, shadow, x_offset, y_offset, text_color, mOnHUDAttachment);
|
||||
hud_render_text(segment_iter->getText(), render_position, *fontp, style, shadow, x_offset, y_offset, text_color, mOnHUDAttachment);
|
||||
}
|
||||
}
|
||||
/// Reset the default color to white. The renderer expects this to be the default.
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ protected:
|
|||
LLColor4 mColor;
|
||||
LLFontGL::StyleFlags mStyle;
|
||||
const LLFontGL* mFont;
|
||||
LLFontVertexBuffer mFontBuffer;
|
||||
private:
|
||||
LLWString mText;
|
||||
std::map<const LLFontGL*, F32> mFontWidthMap;
|
||||
|
|
@ -173,7 +174,6 @@ private:
|
|||
ETextAlignment mTextAlignment;
|
||||
EVertAlignment mVertAlignment;
|
||||
bool mHidden;
|
||||
LLFontVertexBuffer mFontBuffer;
|
||||
// [RLVa:KB] - Checked: RLVa-1.0.0
|
||||
std::string mObjText;
|
||||
// [/RLVa:KB]
|
||||
|
|
|
|||
|
|
@ -575,9 +575,9 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
|
|||
LLColor4 shadow_color = LLColor4::black;
|
||||
shadow_color.mV[VALPHA] = color.mV[VALPHA] * 0.5f;
|
||||
gViewerWindow->setup3DViewport(1, -1);
|
||||
hud_render_utf8text(text, render_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, shadow_color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD);
|
||||
hud_render_utf8text(text, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, shadow_color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD);
|
||||
gViewerWindow->setup3DViewport();
|
||||
hud_render_utf8text(text, render_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD);
|
||||
hud_render_utf8text(text, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD);
|
||||
|
||||
gGL.popMatrix();
|
||||
}
|
||||
|
|
@ -639,12 +639,12 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
|
|||
{
|
||||
fraction_string = llformat("%c%02d%s", LLResMgr::getInstance()->getDecimalPoint(), fractional_portion, suffix.c_str());
|
||||
|
||||
hud_render_utf8text(val_string, render_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection);
|
||||
hud_render_utf8text(fraction_string, render_pos, nullptr, *small_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, 1.f, 3.f, color, hud_selection);
|
||||
hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -1.f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection);
|
||||
hud_render_utf8text(fraction_string, render_pos, *small_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, 1.f, 3.f, color, hud_selection);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_render_utf8text(val_string, render_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection);
|
||||
hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::DROP_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection);
|
||||
}
|
||||
}
|
||||
gGL.popMatrix();
|
||||
|
|
|
|||
|
|
@ -1169,10 +1169,10 @@ void LLManipRotate::renderSnapGuides()
|
|||
std::string help_text = LLTrans::getString("manip_hint1");
|
||||
LLColor4 help_text_color = LLColor4::white;
|
||||
help_text_color.mV[VALPHA] = clamp_rescale(mHelpTextTimer.getElapsedTimeF32(), sHelpTextVisibleTime, sHelpTextVisibleTime + sHelpTextFadeTime, line_alpha, 0.f);
|
||||
hud_render_utf8text(help_text, help_text_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
hud_render_utf8text(help_text, help_text_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
help_text = LLTrans::getString("manip_hint2");
|
||||
help_text_pos -= offset_dir * mRadiusMeters * 0.4f;
|
||||
hud_render_utf8text(help_text, help_text_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
hud_render_utf8text(help_text, help_text_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1864,10 +1864,10 @@ void LLManipScale::renderSnapGuides(const LLBBox& bbox)
|
|||
std::string help_text = LLTrans::getString("manip_hint1");
|
||||
LLColor4 help_text_color = LLColor4::white;
|
||||
help_text_color.mV[VALPHA] = clamp_rescale(mHelpTextTimer.getElapsedTimeF32(), sHelpTextVisibleTime, sHelpTextVisibleTime + sHelpTextFadeTime, grid_alpha, 0.f);
|
||||
hud_render_utf8text(help_text, help_text_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
hud_render_utf8text(help_text, help_text_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
help_text = LLTrans::getString("manip_hint2");
|
||||
help_text_pos -= LLViewerCamera::getInstance()->getUpAxis() * mSnapRegimeOffset * 0.4f;
|
||||
hud_render_utf8text(help_text, help_text_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
hud_render_utf8text(help_text, help_text_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1477,10 +1477,10 @@ void LLManipTranslate::renderSnapGuides()
|
|||
std::string help_text = LLTrans::getString("manip_hint1");
|
||||
LLColor4 help_text_color = LLColor4::white;
|
||||
help_text_color.mV[VALPHA] = clamp_rescale(mHelpTextTimer.getElapsedTimeF32(), sHelpTextVisibleTime, sHelpTextVisibleTime + sHelpTextFadeTime, line_alpha, 0.f);
|
||||
hud_render_utf8text(help_text, help_text_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
hud_render_utf8text(help_text, help_text_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
help_text = LLTrans::getString("manip_hint2");
|
||||
help_text_pos -= LLViewerCamera::getInstance()->getUpAxis() * mSnapOffsetMeters * 0.2f;
|
||||
hud_render_utf8text(help_text, help_text_pos, nullptr, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
hud_render_utf8text(help_text, help_text_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(help_text), 3.f, help_text_color, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ void LLPanelEnvironmentInfo::refresh()
|
|||
F32Hours daylength(mCurrentEnvironment->mDayLength);
|
||||
F32Hours dayoffset(mCurrentEnvironment->mDayOffset);
|
||||
|
||||
if (dayoffset.value() > 12.0f)
|
||||
while (dayoffset.value() >= daylength.value())
|
||||
dayoffset -= daylength;
|
||||
|
||||
mSliderDayLength->setValue(daylength.value());
|
||||
|
|
@ -734,8 +734,8 @@ void LLPanelEnvironmentInfo::onSldDayOffsetChanged(F32 value)
|
|||
{
|
||||
F32Hours dayoffset(value);
|
||||
|
||||
if (dayoffset.value() <= 0.0f)
|
||||
// if day cycle is 5 hours long, we want -1h offset to result in 4h
|
||||
// server only allows positive values
|
||||
while (dayoffset.value() <= 0.0f)
|
||||
dayoffset += mCurrentEnvironment->mDayLength;
|
||||
|
||||
mCurrentEnvironment->mDayOffset = dayoffset;
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include "llviewercontrol.h"
|
||||
#include "llfasttimer.h"
|
||||
#include "llfontgl.h"
|
||||
#include "llfontvertexbuffer.h"
|
||||
#include "llnamevalue.h"
|
||||
#include "llpointer.h"
|
||||
#include "llprimitive.h"
|
||||
|
|
@ -628,6 +629,15 @@ void LLPipeline::init()
|
|||
connectRefreshCachedSettingsSafe("FSFocusPointFollowsPointer");
|
||||
connectRefreshCachedSettingsSafe("FSFocusPointLocked");
|
||||
// </FS:Beq>
|
||||
|
||||
LLPointer<LLControlVariable> cntrl_ptr = gSavedSettings.getControl("CollectFontVertexBuffers");
|
||||
if (cntrl_ptr.notNull())
|
||||
{
|
||||
cntrl_ptr->getCommitSignal()->connect([](LLControlVariable* control, const LLSD& value, const LLSD& previous)
|
||||
{
|
||||
LLFontVertexBuffer::enableBufferCollection(control->getValue().asBoolean());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
LLPipeline::~LLPipeline()
|
||||
|
|
@ -1198,6 +1208,8 @@ void LLPipeline::refreshCachedSettings()
|
|||
LLVOAvatar::sMaxNonImpostors = 1;
|
||||
LLVOAvatar::updateImpostorRendering(LLVOAvatar::sMaxNonImpostors);
|
||||
}
|
||||
|
||||
LLFontVertexBuffer::enableBufferCollection(gSavedSettings.getBOOL("CollectFontVertexBuffers"));
|
||||
}
|
||||
|
||||
void LLPipeline::releaseGLBuffers()
|
||||
|
|
@ -7212,7 +7224,7 @@ void LLPipeline::tonemap(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
|
||||
LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();
|
||||
|
||||
bool no_post = gSnapshotNoPost || (buildNoPost && gFloaterTools->isAvailable());
|
||||
bool no_post = gSnapshotNoPost || psky->getReflectionProbeAmbiance(should_auto_adjust) == 0.f || (buildNoPost && gFloaterTools->isAvailable());
|
||||
LLGLSLShader& shader = no_post ? gNoPostTonemapProgram : gDeferredPostTonemapProgram;
|
||||
|
||||
shader.bind();
|
||||
|
|
|
|||
|
|
@ -1595,6 +1595,10 @@ Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik p
|
|||
</notification>
|
||||
<notification name="VoiceEffectsExpiredInUse">
|
||||
Den aktive stemme "morph" er udløbet og din normale stemme opsætning er genaktiveret.
|
||||
[[URL] Click here] for at forny dit abbonnement.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">
|
||||
En eller flere af dine stemme "morphs" vil udløbe om mindre end [INTERVAL] dage.
|
||||
[[URL] Click here] for at forny dit abbonnement.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
|
|
|
|||
|
|
@ -548,6 +548,7 @@
|
|||
<menu_item_check label="Texturen in Vollauflösung (gefährlich)" name="Full Res Textures"/>
|
||||
<menu_item_check label="Angehängte Lichter rendern" name="Render Attached Lights"/>
|
||||
<menu_item_check label="Angehängte Partikel rendern" name="Render Attached Particles"/>
|
||||
<menu_item_check label="Sammeln von Vertex Buffern für Schrift aktivieren" name="Collect Font Vertex Buffers"/>
|
||||
<menu_item_check label="Shader-Cache aktivieren" name="Enable Shader Cache"/>
|
||||
<menu_item_call label="Shader-Cache bereinigen" name="Shader Cache Clear"/>
|
||||
</menu>
|
||||
|
|
|
|||
|
|
@ -3632,6 +3632,10 @@ Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice
|
|||
|
||||
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">Ein oder mehrere Ihrer Voice-Morph-Abos laufen in weniger als [INTERVAL] Tagen ab.
|
||||
[[URL] Klicken Sie hier], um Ihr Abo zu erneuern.
|
||||
|
||||
Wenn Sie Premium-Mitglied sind, [[PREMIUM_URL] klicken Sie hier], um Ihren Voice-Morphing-Vorteil zu nutzen.</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
Neue Voice-Morph-Effekte sind erhältlich!
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -4758,6 +4758,16 @@
|
|||
function="Advanced.HandleAttachedLightParticles"
|
||||
parameter="RenderAttachedParticles" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Collect Font Vertex Buffers"
|
||||
name="Collect Font Vertex Buffers">
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="CollectFontVertexBuffers" />
|
||||
<menu_item_check.on_click
|
||||
function="ToggleControl"
|
||||
parameter="CollectFontVertexBuffers" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator />
|
||||
<menu_item_check
|
||||
label="Enable Shader Cache"
|
||||
|
|
|
|||
|
|
@ -9515,6 +9515,25 @@ If you are a Premium Member, [[PREMIUM_URL] click here] to receive your voice mo
|
|||
<tag>voice</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notify.tga"
|
||||
name="VoiceEffectsWillExpire"
|
||||
sound="UISndAlert"
|
||||
persist="true"
|
||||
type="notify">
|
||||
<unique/>
|
||||
One or more of your Voice Morphs will expire in less than [INTERVAL] days.
|
||||
[[URL] Click here] to renew your subscription.
|
||||
|
||||
If you are a Premium Member, [[PREMIUM_URL] click here] to receive your voice morphing perk.
|
||||
<tag>fail</tag>
|
||||
<tag>voice</tag>
|
||||
<usetemplate
|
||||
ignoretext="Warn me about voice morph expiring"
|
||||
name="okignore"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notify.tga"
|
||||
name="VoiceEffectsNew"
|
||||
|
|
|
|||
|
|
@ -3389,6 +3389,10 @@ Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio
|
|||
|
||||
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">Una o más de tus transformaciones de voz caducarán en menos de [INTERVAL] días.
|
||||
[[URL] Pulsa aquí] para renovar la suscripción
|
||||
|
||||
Si eres un miembro Premium [[PREMIUM_URL] pulsa aquí] para recibir tu beneficio de transformación de voz.</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
Están disponibles nuevos filtros de voz.
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -3646,6 +3646,10 @@ Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votr
|
|||
|
||||
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">Au moins l'un de vos effets de voix expirera dans moins de [INTERVAL] jours.
|
||||
[[URL] Cliquez ici] pour renouveler votre abonnement.
|
||||
|
||||
Si vous êtes un membre Premium, [[PREMIUM_URL] cliquez ici] pour recevoir votre effet de voix.</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
De nouveaux effets de voix sont disponibles !
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -3442,6 +3442,10 @@ Se sei un utente Premium, [[PREMIUM_URL] clic qui] per ricevere la tua offerta d
|
|||
|
||||
Se sei un utente Premium, [[PREMIUM_URL] clic qui] per ricevere la tua offerta di manipolazioni vocali.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
|
||||
[[URL] Fai clic qui] per rinnovare l'abbonamento.
|
||||
|
||||
Se sei un membro Premium, [[PREMIUM_URL] fai clic qui] per ricevere in regalo la manipolazione vocale.</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
Sono disponibili nuove manipolazioni vocali.
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -3658,6 +3658,11 @@ M キーを押して変更します。
|
|||
期限を延長・更新するには [[URL] Click here] をクリックしてください。
|
||||
|
||||
プレミアム会員の方は、 [[PREMIUM_URL] click here] をクリックしてボイスモーフィング特典をお受け取りください。
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">ボイスモーフィング効果の1つ、または複数の有効期限が[INTERVAL]日以内に終了します。
|
||||
期限を延長・更新するには[[URL] ここ]をクリックしてください。
|
||||
|
||||
プレミアム会員の方は、[[PREMIUM_URL] ここ]をクリックしてボイスモーフィング特典をお受け取りください。
|
||||
</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
新しいボイスモーフィング効果が登場!
|
||||
|
|
|
|||
|
|
@ -3527,6 +3527,11 @@ Jeśli jesteś użytkownikiem premium, to [[PREMIUM_URL] kliknij tutaj] aby otrz
|
|||
<notification name="VoiceEffectsExpiredInUse">
|
||||
Czas aktywności Przekształcenia Głosu wygasł, normalne ustawienia Twojego głosu zostały zastosowane.
|
||||
[[URL] Kliknij tutaj] aby odnowić subskrypcję.
|
||||
Jeśli jesteś użytkownikiem premium, to [[PREMIUM_URL] kliknij tutaj] aby otrzymać swój perk Przekształceń Głosu.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">
|
||||
Jedno lub więcej z Twoich Przekształceń Głosu wygaśnie za mniej niż [INTERVAL] dni.
|
||||
[[URL] Kliknij tutaj] aby odnowić subskrypcję.
|
||||
Jeśli jesteś użytkownikiem premium, to [[PREMIUM_URL] kliknij tutaj] aby otrzymać swój perk Przekształceń Głosu.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
|
|
|
|||
|
|
@ -3180,6 +3180,10 @@ Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu ap
|
|||
|
||||
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">Uma ou mais das suas distorções de voz tem vencimento em menos de [INTERVAL] dias.
|
||||
[[URL] Clique aqui] para renovar o serviço.
|
||||
|
||||
Se você é um Membro Premium, [[PREMIUM_URL] clique aqui] para receber o seu app de distorção de voz.</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
Novas Distorções de voz!
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -3629,6 +3629,12 @@ URL: [AUDIOURL]
|
|||
Истек срок действия анимационного изменения голоса, действуют настройки вашего обычного голоса.
|
||||
[[URL] Щелкните здесь], чтобы обновить подписку.
|
||||
|
||||
Если вы - владелец премиум-аккаунта, [[PREMIUM_URL] щелкните здесь], чтобы получить право на анимационное изменение голоса.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">
|
||||
Срок действия одного или нескольких ваших типов анимационного изменения голоса истекает через [INTERVAL] дней или раньше.
|
||||
[[URL] Щелкните здесь], чтобы обновить подписку.
|
||||
|
||||
Если вы - владелец премиум-аккаунта, [[PREMIUM_URL] щелкните здесь], чтобы получить право на анимационное изменение голоса.
|
||||
</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
|
|
|
|||
|
|
@ -3275,6 +3275,12 @@ Aboneliğinizi yenilemek için [[URL] buraya tıklayın].
|
|||
Etkin Ses Dönüşümünün süresi dolmuş, normal ses ayarlarınız uygulandı.
|
||||
Aboneliğinizi yenilemek için [[URL] buraya tıklayın].
|
||||
|
||||
Özel Üye iseniz, ses dönüştürme özelliğini almak için [[PREMIUM_URL] buraya tıklayın].
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">
|
||||
Ses Dönüşümlerinizden birinin ya da daha fazlasının süresi [INTERVAL] günden daha az bir zamanda dolacak.
|
||||
Aboneliğinizi yenilemek için [[URL] buraya tıklayın].
|
||||
|
||||
Özel Üye iseniz, ses dönüştürme özelliğini almak için [[PREMIUM_URL] buraya tıklayın].
|
||||
</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
|
|
|
|||
|
|
@ -3164,6 +3164,12 @@ SHA1 指紋:[MD5_DIGEST]
|
|||
使用中的變聲效果已經過期,已用你平時的聲音設定取代。
|
||||
[[URL] 點按這裡]繼續訂用。
|
||||
|
||||
付費用戶請[[PREMIUM_URL] 點按這裡]領取免費變聲工具。
|
||||
</notification>
|
||||
<notification name="VoiceEffectsWillExpire">
|
||||
至少一個你訂用的變聲效果將在 [INTERVAL] 天後到期。
|
||||
[[URL] 點按這裡]繼續訂用。
|
||||
|
||||
付費用戶請[[PREMIUM_URL] 點按這裡]領取免費變聲工具。
|
||||
</notification>
|
||||
<notification name="VoiceEffectsNew">
|
||||
|
|
|
|||
Loading…
Reference in New Issue