From ef0057909fcf7eaee6bdff4a58492fd17ffdd9a4 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)"
Date: Wed, 11 May 2011 12:19:36 -0400
Subject: SH-1522 FIX removed old debugging code that generated
avatar_lad_log.txt
Old debugging code, should be very low risk to remove.
---
indra/newview/llvoavatar.cpp | 12 ------------
1 file changed, 12 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4767ba2bed..68637a7ed9 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5414,18 +5414,6 @@ BOOL LLVOAvatar::loadAvatar()
}
}
- // Uncomment to enable avatar_lad.xml debugging.
- std::ofstream file;
- file.open("avatar_lad.log");
- for( LLViewerVisualParam* param = (LLViewerVisualParam*) getFirstVisualParam();
- param;
- param = (LLViewerVisualParam*) getNextVisualParam() )
- {
- param->getInfo()->toStream(file);
- file << std::endl;
- }
-
- file.close();
return TRUE;
}
--
cgit v1.3
From 14f6bbadef2c39e58a3b54c0c6212949acf50e45 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Mon, 8 Aug 2011 15:29:23 -0500
Subject: SH-2242 Work in progress migrating to glVertexAttrib everywhere
---
indra/llrender/llgl.cpp | 79 +----
indra/llrender/llgl.h | 12 +-
indra/llrender/llglslshader.cpp | 4 +
indra/llrender/llrender.cpp | 99 ++++++
indra/llrender/llrender.h | 6 +
indra/llrender/llvertexbuffer.cpp | 352 +++++++++++++++++----
indra/llrender/llvertexbuffer.h | 10 +
indra/newview/app_settings/logcontrol.xml | 2 +-
indra/newview/app_settings/settings.xml | 2 +-
.../shaders/class1/avatar/avatarSkinV.glsl | 3 +-
.../shaders/class1/avatar/avatarV.glsl | 24 +-
.../shaders/class1/avatar/eyeballV.glsl | 15 +-
.../shaders/class1/avatar/pickAvatarV.glsl | 16 +-
.../shaders/class1/deferred/alphaSkinnedV.glsl | 20 +-
.../shaders/class1/deferred/alphaV.glsl | 29 +-
.../shaders/class1/deferred/attachmentShadowV.glsl | 10 +-
.../shaders/class1/deferred/avatarAlphaV.glsl | 32 +-
.../shaders/class1/deferred/avatarEyesV.glsl | 12 +-
.../shaders/class1/deferred/avatarShadowV.glsl | 23 +-
.../shaders/class1/deferred/avatarV.glsl | 25 +-
.../shaders/class1/deferred/blurLightV.glsl | 6 +-
.../shaders/class1/deferred/bumpSkinnedV.glsl | 16 +-
.../shaders/class1/deferred/bumpV.glsl | 16 +-
.../shaders/class1/deferred/cloudsV.glsl | 11 +-
.../shaders/class1/deferred/diffuseSkinnedV.glsl | 15 +-
.../shaders/class1/deferred/diffuseV.glsl | 14 +-
.../shaders/class1/deferred/fullbrightV.glsl | 16 +-
.../app_settings/shaders/class1/deferred/giV.glsl | 12 +-
.../shaders/class1/deferred/impostorV.glsl | 10 +-
.../shaders/class1/deferred/luminanceV.glsl | 12 +-
.../shaders/class1/deferred/multiPointLightV.glsl | 6 +-
.../shaders/class1/deferred/pointLightV.glsl | 12 +-
.../shaders/class1/deferred/postDeferredV.glsl | 6 +-
.../shaders/class1/deferred/postgiV.glsl | 5 +-
.../shaders/class1/deferred/shadowAlphaMaskV.glsl | 10 +-
.../shaders/class1/deferred/shadowV.glsl | 4 +-
.../app_settings/shaders/class1/deferred/skyV.glsl | 11 +-
.../shaders/class1/deferred/softenLightF.glsl | 6 +-
.../shaders/class1/deferred/softenLightV.glsl | 13 +-
.../shaders/class1/deferred/starsV.glsl | 10 +-
.../shaders/class1/deferred/sunLightV.glsl | 16 +-
.../shaders/class1/deferred/terrainV.glsl | 14 +-
.../shaders/class1/deferred/treeV.glsl | 12 +-
.../shaders/class1/deferred/waterV.glsl | 23 +-
.../shaders/class1/effects/glowExtractF.glsl | 2 +-
.../shaders/class1/effects/glowExtractV.glsl | 6 +-
.../app_settings/shaders/class1/effects/glowV.glsl | 21 +-
.../shaders/class1/environment/terrainV.glsl | 23 +-
.../shaders/class1/environment/waterV.glsl | 13 +-
.../shaders/class1/interface/customalphaV.glsl | 9 +-
.../shaders/class1/interface/glowcombineV.glsl | 9 +-
.../shaders/class1/interface/highlightF.glsl | 4 +-
.../shaders/class1/interface/highlightV.glsl | 18 +-
.../shaders/class1/interface/occlusionV.glsl | 4 +-
.../shaders/class1/interface/solidcolorV.glsl | 10 +-
.../shaders/class1/interface/twotextureaddV.glsl | 9 +-
.../app_settings/shaders/class1/interface/uiV.glsl | 10 +-
.../app_settings/shaders/class1/objects/bumpV.glsl | 13 +-
.../class1/objects/fullbrightShinySkinnedV.glsl | 14 +-
.../shaders/class1/objects/fullbrightShinyV.glsl | 14 +-
.../shaders/class1/objects/fullbrightSkinnedV.glsl | 14 +-
.../shaders/class1/objects/fullbrightV.glsl | 13 +-
.../class1/objects/shinySimpleSkinnedV.glsl | 15 +-
.../shaders/class1/objects/shinyV.glsl | 13 +-
.../shaders/class1/objects/simpleSkinnedV.glsl | 15 +-
.../shaders/class1/objects/simpleV.glsl | 18 +-
.../shaders/class2/avatar/eyeballV.glsl | 16 +-
.../shaders/class2/deferred/alphaSkinnedV.glsl | 27 +-
.../shaders/class2/deferred/alphaV.glsl | 31 +-
.../shaders/class2/deferred/avatarAlphaV.glsl | 31 +-
.../shaders/class2/deferred/edgeV.glsl | 5 +-
.../shaders/class2/deferred/softenLightV.glsl | 12 +-
.../shaders/class2/deferred/sunLightV.glsl | 15 +-
.../app_settings/shaders/class2/effects/blurV.glsl | 6 +-
.../shaders/class2/effects/drawQuadV.glsl | 10 +-
.../shaders/class2/environment/terrainV.glsl | 22 +-
.../shaders/class2/lighting/sumLightsV.glsl | 2 -
.../shaders/class2/objects/fullbrightShinyV.glsl | 19 +-
.../shaders/class2/objects/fullbrightV.glsl | 18 +-
.../shaders/class2/objects/shinyV.glsl | 18 +-
.../shaders/class2/objects/simpleV.glsl | 20 +-
.../shaders/class2/windlight/cloudsV.glsl | 11 +-
.../shaders/class2/windlight/skyV.glsl | 10 +-
.../shaders/class3/avatar/avatarV.glsl | 27 +-
.../shaders/class3/deferred/giDownsampleV.glsl | 6 +-
.../shaders/class3/deferred/giFinalV.glsl | 5 +-
.../app_settings/shaders/class3/deferred/giV.glsl | 12 +-
.../shaders/class3/deferred/luminanceV.glsl | 12 +-
.../shaders/class3/deferred/postDeferredV.glsl | 6 +-
.../shaders/class3/deferred/postgiV.glsl | 6 +-
.../shaders/class3/deferred/softenLightV.glsl | 11 +-
.../shaders/class3/lighting/sumLightsV.glsl | 1 -
indra/newview/llagent.cpp | 2 +-
indra/newview/lldrawpool.cpp | 4 +-
indra/newview/lldrawpoolalpha.cpp | 23 +-
indra/newview/lldrawpoolalpha.h | 1 +
indra/newview/lldrawpoolavatar.cpp | 68 ++--
indra/newview/lldrawpoolbump.cpp | 2 +-
indra/newview/lldrawpoolsimple.cpp | 38 +--
indra/newview/lldrawpoolsimple.h | 5 +-
indra/newview/lldrawpoolsky.cpp | 6 +-
indra/newview/lldrawpoolterrain.cpp | 4 +
indra/newview/lldrawpooltree.cpp | 5 +-
indra/newview/lldrawpoolwater.cpp | 6 +-
indra/newview/lldrawpoolwlsky.cpp | 4 +-
indra/newview/lldynamictexture.cpp | 8 +
indra/newview/llface.cpp | 48 ++-
indra/newview/llface.h | 6 +-
indra/newview/llfloaterimagepreview.cpp | 4 +-
indra/newview/llfloatermodelpreview.cpp | 16 +-
indra/newview/llmanip.cpp | 4 +-
indra/newview/llmaniptranslate.cpp | 4 +-
indra/newview/llpreviewtexture.cpp | 2 +-
indra/newview/llselectmgr.cpp | 4 +-
indra/newview/llspatialpartition.cpp | 74 ++---
indra/newview/llspatialpartition.h | 1 -
indra/newview/lltexlayer.cpp | 3 +
indra/newview/lltextureview.cpp | 4 +-
indra/newview/llviewerjointmesh.cpp | 24 +-
indra/newview/llviewershadermgr.cpp | 280 +++++++++++++---
indra/newview/llviewershadermgr.h | 25 +-
indra/newview/llviewerwindow.cpp | 2 +-
indra/newview/llvosurfacepatch.cpp | 6 +
indra/newview/llvovolume.cpp | 24 +-
indra/newview/pipeline.cpp | 56 ++--
indra/newview/pipeline.h | 4 +
126 files changed, 1570 insertions(+), 874 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 2f6ef2b663..f58d4937d4 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -1329,8 +1329,6 @@ void LLGLState::initClass()
sStateMap[GL_MULTISAMPLE_ARB] = GL_FALSE;
glDisable(GL_MULTISAMPLE_ARB);
-
- glEnableClientState(GL_VERTEX_ARRAY);
}
//static
@@ -1604,7 +1602,7 @@ void LLGLState::checkTextureChannels(const std::string& msg)
void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
{
- if (!gDebugGL)
+ if (!gDebugGL || LLGLSLShader::sNoFixedFunction)
{
return;
}
@@ -1661,7 +1659,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
};
- for (S32 j = 0; j < 4; j++)
+ for (S32 j = 1; j < 4; j++)
{
if (glIsEnabled(value[j]))
{
@@ -1875,79 +1873,6 @@ void LLGLManager::initGLStates()
////////////////////////////////////////////////////////////////////////////////
-void enable_vertex_weighting(const S32 index)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glEnableVertexAttribArrayARB(index); // vertex weights
-#endif
-}
-
-void disable_vertex_weighting(const S32 index)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glDisableVertexAttribArrayARB(index); // vertex weights
-#endif
-}
-
-void enable_binormals(const S32 index)
-{
-#if GL_ARB_vertex_program
- if (index > 0)
- {
- glEnableVertexAttribArrayARB(index); // binormals
- }
-#endif
-}
-
-void disable_binormals(const S32 index)
-{
-#if GL_ARB_vertex_program
- if (index > 0)
- {
- glDisableVertexAttribArrayARB(index); // binormals
- }
-#endif
-}
-
-
-void enable_cloth_weights(const S32 index)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glEnableVertexAttribArrayARB(index);
-#endif
-}
-
-void disable_cloth_weights(const S32 index)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glDisableVertexAttribArrayARB(index);
-#endif
-}
-
-void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glVertexAttribPointerARB(index, 1, GL_FLOAT, FALSE, stride, weights);
- stop_glerror();
-#endif
-}
-
-void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glVertexAttribPointerARB(index, 4, GL_FLOAT, TRUE, stride, weights);
- stop_glerror();
-#endif
-}
-
-void set_binormals(const S32 index, const U32 stride,const LLVector3 *binormals)
-{
-#if GL_ARB_vertex_program
- if (index > 0) glVertexAttribPointerARB(index, 3, GL_FLOAT, FALSE, stride, binormals);
- stop_glerror();
-#endif
-}
-
void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific )
{
// GL_VERSION returns a null-terminated string with the format:
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index d736133f3f..495e523c31 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -252,7 +252,7 @@ public:
static void dumpStates();
static void checkStates(const std::string& msg = "");
static void checkTextureChannels(const std::string& msg = "");
- static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0x0001);
+ static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0);
protected:
static boost::unordered_map sStateMap;
@@ -419,15 +419,7 @@ extern LLMatrix4 gGLObliqueProjectionInverse;
#include "llglstates.h"
void init_glstates();
-void enable_vertex_weighting(const S32 index);
-void disable_vertex_weighting(const S32 index);
-void enable_binormals(const S32 index);
-void disable_binormals(const S32 index);
-void enable_cloth_weights(const S32 index);
-void disable_cloth_weights(const S32 index);
-void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights);
-void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights);
-void set_binormals(const S32 index, const U32 stride, const LLVector3 *binormals);
+
void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific );
extern BOOL gClothRipple;
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index f51d83abe4..b6cb84d10c 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -31,6 +31,7 @@
#include "llshadermgr.h"
#include "llfile.h"
#include "llrender.h"
+#include "llvertexbuffer.h"
#if LL_DARWIN
#include "OpenGL/OpenGL.h"
@@ -386,6 +387,7 @@ void LLGLSLShader::bind()
gGL.flush();
if (gGLManager.mHasShaderObjects)
{
+ LLVertexBuffer::unbind();
glUseProgramObjectARB(mProgramObject);
sCurBoundShader = mProgramObject;
sCurBoundShaderPtr = this;
@@ -411,6 +413,7 @@ void LLGLSLShader::unbind()
stop_glerror();
}
}
+ LLVertexBuffer::unbind();
glUseProgramObjectARB(0);
sCurBoundShader = 0;
sCurBoundShaderPtr = NULL;
@@ -420,6 +423,7 @@ void LLGLSLShader::unbind()
void LLGLSLShader::bindNoShader(void)
{
+ LLVertexBuffer::unbind();
glUseProgramObjectARB(0);
sCurBoundShader = 0;
sCurBoundShaderPtr = NULL;
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index d72918b15d..da85bc202c 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -1580,6 +1580,105 @@ void LLRender::color3fv(const GLfloat* c)
color4f(c[0],c[1],c[2],1);
}
+void LLRender::diffuseColor3f(F32 r, F32 g, F32 b)
+{
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(LLVertexBuffer::TYPE_COLOR);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttrib3fARB(loc, r,g,b);
+ }
+ else
+ {
+ glColor3f(r,g,b);
+ }
+}
+
+void LLRender::diffuseColor3fv(const F32* c)
+{
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(LLVertexBuffer::TYPE_COLOR);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttrib3fvARB(loc, c);
+ }
+ else
+ {
+ glColor3fv(c);
+ }
+}
+
+void LLRender::diffuseColor4f(F32 r, F32 g, F32 b, F32 a)
+{
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(LLVertexBuffer::TYPE_COLOR);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttrib4fARB(loc, r,g,b,a);
+ }
+ else
+ {
+ glColor4f(r,g,b,a);
+ }
+
+}
+
+void LLRender::diffuseColor4fv(const F32* c)
+{
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(LLVertexBuffer::TYPE_COLOR);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttrib4fvARB(loc, c);
+ }
+ else
+ {
+ glColor4fv(c);
+ }
+}
+
+void LLRender::diffuseColor4ubv(const U8* c)
+{
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(LLVertexBuffer::TYPE_COLOR);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttrib4ubvARB(loc, c);
+ }
+ else
+ {
+ glColor4ubv(c);
+ }
+}
+
+
+
+
void LLRender::debugTexUnits(void)
{
LL_INFOS("TextureUnit") << "Active TexUnit: " << mCurrTextureUnitIndex << LL_ENDL;
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
index 9eedebe2ce..5f97bff1c4 100644
--- a/indra/llrender/llrender.h
+++ b/indra/llrender/llrender.h
@@ -350,6 +350,12 @@ public:
void color3fv(const GLfloat* c);
void color4ubv(const GLubyte* c);
+ void diffuseColor3f(F32 r, F32 g, F32 b);
+ void diffuseColor3fv(const F32* c);
+ void diffuseColor4f(F32 r, F32 g, F32 b, F32 a);
+ void diffuseColor4fv(const F32* c);
+ void diffuseColor4ubv(const U8* c);
+
void vertexBatchPreTransformed(LLVector3* verts, S32 vert_count);
void vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count);
void vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLColor4U*, S32 vert_count);
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 1180afa631..30f73bf2c6 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -130,6 +130,7 @@ S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
sizeof(LLVector2), // TYPE_TEXCOORD2,
sizeof(LLVector2), // TYPE_TEXCOORD3,
sizeof(LLColor4U), // TYPE_COLOR,
+ sizeof(U8), // TYPE_EMISSIVE
sizeof(LLVector4), // TYPE_BINORMAL,
sizeof(F32), // TYPE_WEIGHT,
sizeof(LLVector4), // TYPE_WEIGHT4,
@@ -156,36 +157,79 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
llerrs << "Cannot use LLGLImmediate and LLVertexBuffer simultaneously!" << llendl;
}*/
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
if (sLastMask != data_mask)
{
+ llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+ static LLGLSLShader* last_shader = LLGLSLShader::sCurBoundShaderPtr;
+ llassert(sLastMask == 0 || last_shader == shader);
+ last_shader = shader;
+
U32 mask[] =
{
MAP_VERTEX,
MAP_NORMAL,
MAP_TEXCOORD0,
MAP_COLOR,
+ MAP_EMISSIVE,
+ MAP_WEIGHT,
+ MAP_WEIGHT4,
+ MAP_BINORMAL,
+ MAP_CLOTHWEIGHT,
};
+ U32 type[] =
+ {
+ TYPE_VERTEX,
+ TYPE_NORMAL,
+ TYPE_TEXCOORD0,
+ TYPE_COLOR,
+ TYPE_EMISSIVE,
+ TYPE_WEIGHT,
+ TYPE_WEIGHT4,
+ TYPE_BINORMAL,
+ TYPE_CLOTHWEIGHT,
+ };
+
GLenum array[] =
{
GL_VERTEX_ARRAY,
GL_NORMAL_ARRAY,
GL_TEXTURE_COORD_ARRAY,
GL_COLOR_ARRAY,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
};
BOOL error = FALSE;
- for (U32 i = 0; i < 4; ++i)
+ for (U32 i = 0; i < 9; ++i)
{
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(type[i]);
+ }
+
if (sLastMask & mask[i])
{ //was enabled
- if (!(data_mask & mask[i]) && i > 0)
+ if (!(data_mask & mask[i]))
{ //needs to be disabled
- glDisableClientState(array[i]);
+ if (loc >= 0)
+ {
+ glDisableVertexAttribArrayARB(loc);
+ }
+ else if (!shader)
+ {
+ glDisableClientState(array[i]);
+ }
}
- else if (gDebugGL)
- { //needs to be enabled, make sure it was (DEBUG TEMPORARY)
- if (i > 0 && !glIsEnabled(array[i]))
+ else if (gDebugGL && !shader && array[i])
+ { //needs to be enabled, make sure it was (DEBUG)
+ if (loc < 0 && !glIsEnabled(array[i]))
{
if (gDebugSession)
{
@@ -201,11 +245,18 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
}
else
{ //was disabled
- if (data_mask & mask[i] && i > 0)
+ if (data_mask & mask[i])
{ //needs to be enabled
- glEnableClientState(array[i]);
+ if (loc >= 0)
+ {
+ glEnableVertexAttribArrayARB(loc);
+ }
+ else if (!shader)
+ {
+ glEnableClientState(array[i]);
+ }
}
- else if (gDebugGL && i > 0 && glIsEnabled(array[i]))
+ else if (!shader && array[i] && gDebugGL && glIsEnabled(array[i]))
{ //needs to be disabled, make sure it was (DEBUG TEMPORARY)
if (gDebugSession)
{
@@ -232,62 +283,71 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
MAP_TEXCOORD3
};
+ U32 type_tc[] =
+ {
+ TYPE_TEXCOORD1,
+ TYPE_TEXCOORD2,
+ TYPE_TEXCOORD3
+ };
+
for (U32 i = 0; i < 3; i++)
{
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(type_tc[i]);
+ }
+
if (sLastMask & map_tc[i])
{
if (!(data_mask & map_tc[i]))
- {
- glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ { //disable
+ if (loc >= 0)
+ {
+ glDisableVertexAttribArrayARB(loc);
+ }
+ else if (!shader)
+ {
+ glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
}
else if (data_mask & map_tc[i])
{
- glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ if (loc >= 0)
+ {
+ glEnableVertexAttribArrayARB(loc);
+ }
+ else if (!shader)
+ {
+ glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
}
- if (sLastMask & MAP_BINORMAL)
+ if (!shader)
{
- if (!(data_mask & MAP_BINORMAL))
+ if (sLastMask & MAP_BINORMAL)
{
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ if (!(data_mask & MAP_BINORMAL))
+ {
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
- }
- else if (data_mask & MAP_BINORMAL)
- {
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
- }
-
- if (sLastMask & MAP_WEIGHT4)
- {
- if (sWeight4Loc < 0)
+ else if (data_mask & MAP_BINORMAL)
{
- llerrs << "Weighting disabled but vertex buffer still bound!" << llendl;
- }
-
- if (!(data_mask & MAP_WEIGHT4))
- { //disable 4-component skin weight
- glDisableVertexAttribArrayARB(sWeight4Loc);
- }
- }
- else if (data_mask & MAP_WEIGHT4)
- {
- if (sWeight4Loc >= 0)
- { //enable 4-component skin weight
- glEnableVertexAttribArrayARB(sWeight4Loc);
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
}
-
-
+
sLastMask = data_mask;
}
}
@@ -1592,6 +1652,10 @@ bool LLVertexBuffer::getColorStrider(LLStrider& strider, S32 index, S
{
return VertexBufferStrider::get(*this, strider, index, count, map_range);
}
+bool LLVertexBuffer::getEmissiveStrider(LLStrider& strider, S32 index, S32 count, bool map_range)
+{
+ return VertexBufferStrider::get(*this, strider, index, count, map_range);
+}
bool LLVertexBuffer::getWeightStrider(LLStrider& strider, S32 index, S32 count, bool map_range)
{
return VertexBufferStrider::get(*this, strider, index, count, map_range);
@@ -1810,46 +1874,166 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
llerrs << "LLVertexBuffer::setupVertexBuffer missing required components for supplied data mask." << llendl;
}
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+ //assert that fixed function is allowed OR a shader is currently bound
+ llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+
if (data_mask & MAP_NORMAL)
{
- glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_NORMAL);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
+ }
+ else if (!shader)
+ {
+ glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
+ }
}
if (data_mask & MAP_TEXCOORD3)
{
- glClientActiveTextureARB(GL_TEXTURE3_ARB);
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_TEXCOORD3);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
+ }
+ else if (!shader)
+ {
+ glClientActiveTextureARB(GL_TEXTURE3_ARB);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
if (data_mask & MAP_TEXCOORD2)
{
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_TEXCOORD2);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
+ }
+ else if (!shader)
+ {
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
if (data_mask & MAP_TEXCOORD1)
{
- glClientActiveTextureARB(GL_TEXTURE1_ARB);
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_TEXCOORD1);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
+ }
+ else if (!shader)
+ {
+ glClientActiveTextureARB(GL_TEXTURE1_ARB);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
if (data_mask & MAP_BINORMAL)
{
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
- glTexCoordPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_BINORMAL);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
+ }
+ else if (!shader)
+ {
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glTexCoordPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ }
}
if (data_mask & MAP_TEXCOORD0)
{
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_TEXCOORD0);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
+ }
+ else if (!shader)
+ {
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
+ }
}
if (data_mask & MAP_COLOR)
{
- glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_COLOR);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
+ }
+ else if (!shader)
+ {
+ glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
+ }
+ }
+ if (data_mask & MAP_EMISSIVE)
+ {
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_EMISSIVE);
+ }
+
+ if (loc >= 0)
+ {
+ glVertexAttribPointerARB(loc, 1, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], (void*)(base + mOffsets[TYPE_EMISSIVE]));
+ }
}
-
if (data_mask & MAP_WEIGHT)
{
- glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], (void*)(base + mOffsets[TYPE_WEIGHT]));
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_WEIGHT);
+ }
+
+ if (loc < 0)
+ { //legacy behavior, some shaders have weight hardcoded to location 1
+ loc = 1;
+ }
+
+ glVertexAttribPointerARB(loc, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], (void*)(base + mOffsets[TYPE_WEIGHT]));
+
}
if (data_mask & MAP_WEIGHT4 && sWeight4Loc != -1)
@@ -1859,17 +2043,47 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (data_mask & MAP_CLOTHWEIGHT)
{
- glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
+ S32 loc = -1;
+ if (shader)
+ {
+ loc = shader->getAttribLocation(TYPE_CLOTHWEIGHT);
+ }
+
+ if (loc < 0)
+ { //legacy behavior, some shaders have weight hardcoded to location 4
+ loc = 4;
+ }
+ glVertexAttribPointerARB(loc, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
}
if (data_mask & MAP_VERTEX)
{
- if (data_mask & MAP_TEXTURE_INDEX)
+ S32 loc = -1;
+ if (shader)
{
- glVertexPointer(4,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ loc = shader->getAttribLocation(TYPE_VERTEX);
}
- else
+
+ if (loc >= 0)
{
- glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ if (data_mask & MAP_TEXTURE_INDEX)
+ {
+ glVertexAttribPointerARB(loc, 4,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ }
+ else
+ {
+ glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ }
+ }
+ else if (!shader)
+ {
+ if (data_mask & MAP_TEXTURE_INDEX)
+ {
+ glVertexPointer(4,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ }
+ else
+ {
+ glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ }
}
}
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index cc5d11e1c2..3cccdf62ec 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -133,6 +133,12 @@ public:
static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices);
+ //WARNING -- when updating these enums you MUST
+ // 1 - update LLVertexBuffer::sTypeSize
+ // 2 - add a strider accessor
+ // 3 - modify LLVertexBuffer::setupVertexBuffer
+ // 4 - modify LLVertexBuffer::setupClientArray
+ // 5 - modify LLViewerShaderMgr::mReservedAttribs
enum {
TYPE_VERTEX,
TYPE_NORMAL,
@@ -141,6 +147,7 @@ public:
TYPE_TEXCOORD2,
TYPE_TEXCOORD3,
TYPE_COLOR,
+ TYPE_EMISSIVE,
// These use VertexAttribPointer and should possibly be made generic
TYPE_BINORMAL,
TYPE_WEIGHT,
@@ -160,6 +167,7 @@ public:
MAP_TEXCOORD2 = (1<& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getBinormalStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getColorStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
+ bool getEmissiveStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getWeightStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getWeight4Strider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getClothWeightStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
+
BOOL isEmpty() const { return mEmpty; }
BOOL isLocked() const { return mVertexLocked || mIndexLocked; }
S32 getNumVerts() const { return mNumVerts; }
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index ae72dee900..a76eb3cd37 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -43,7 +43,7 @@
tags
-
+
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9bb320d882..ed1e3c2057 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7565,7 +7565,7 @@
Type
Boolean
Value
- 0
+ 1
RenderDebugNormalScale
RenderDebugNormalScale
", begin);
+ err_msg = body.substr(begin, end-begin);
+ LLStringUtil::replaceString(err_msg, "
", ""); // strip CR
+ return false;
+ }
+
+ // Sample response: Hola
+ size_t begin = body.find(">");
+ if (begin == std::string::npos || begin >= (body.size() - 1))
+ {
+ return false;
+ }
+
+ size_t end = body.find("", ++begin);
+ if (end == std::string::npos || end < begin)
+ {
+ return false;
+ }
+
+ detected_lang = ""; // unsupported by this API
+ translation = body.substr(begin, end-begin);
+ LLStringUtil::replaceString(translation, "
", ""); // strip CR
+ return true;
}
- LLHTTPClient::get(url, result, m_Header, m_GoogleTimeout);
+private:
+ static std::string getAPIKey()
+ {
+ return gSavedSettings.getString("BingTranslateAPIKey");
+ }
+};
+
+LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)
+: mFromLang(from_lang)
+, mToLang(to_lang)
+, mHandler(LLTranslate::getPreferredHandler())
+{
}
-//static
-void LLTranslate::getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+// virtual
+void LLTranslate::TranslationReceiver::completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
{
- char * curl_str = curl_escape(mesg.c_str(), mesg.size());
- std::string const escaped_mesg(curl_str);
- curl_free(curl_str);
-
- translate_url = m_GoogleURL
- + escaped_mesg + m_GoogleLangSpec
- + from_lang // 'from' language; empty string for auto
- + "%7C" // |
- + to_lang; // 'to' language
+ LLBufferStream istr(channels, buffer.get());
+ std::stringstream strstrm;
+ strstrm << istr.rdbuf();
+
+ const std::string body = strstrm.str();
+ std::string translation, detected_lang, err_msg;
+ int status = http_status;
+ if (mHandler.parseResponse(status, body, translation, detected_lang, err_msg))
+ {
+ // Fix up the response
+ LLStringUtil::replaceString(translation, "<", "<");
+ LLStringUtil::replaceString(translation, ">",">");
+ LLStringUtil::replaceString(translation, ""","\"");
+ LLStringUtil::replaceString(translation, "'","'");
+ LLStringUtil::replaceString(translation, "&","&");
+ LLStringUtil::replaceString(translation, "'","'");
+
+ handleResponse(translation, detected_lang);
+ }
+ else
+ {
+ llwarns << "Translation request failed: " << err_msg << llendl;
+ LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
+ LL_DEBUGS("Translate") << "Error response body: " << body << LL_ENDL;
+ handleFailure(status, err_msg);
+ }
}
//static
-bool LLTranslate::parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language)
+void LLTranslate::translateMessage(
+ TranslationReceiverPtr &receiver,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &mesg)
{
- Json::Value root;
- Json::Reader reader;
-
- bool success = reader.parse(body, root);
- if (!success)
+ std::string url;
+ receiver->mHandler.getTranslateURL(url, from_lang, to_lang, mesg);
+
+ static const float REQUEST_TIMEOUT = 5;
+ static LLSD sHeader;
+
+ if (!sHeader.size())
{
- LL_WARNS("Translate") << "Non valid response from Google Translate API: '" << reader.getFormatedErrorMessages() << "'" << LL_ENDL;
- return false;
+ std::string user_agent = llformat("%s %d.%d.%d (%d)",
+ LLVersionInfo::getChannel().c_str(),
+ LLVersionInfo::getMajor(),
+ LLVersionInfo::getMinor(),
+ LLVersionInfo::getPatch(),
+ LLVersionInfo::getBuild());
+
+ sHeader.insert("Accept", "text/plain");
+ sHeader.insert("User-Agent", user_agent);
}
-
- translation = root[m_GoogleData].get(m_GoogleTranslation, "").asString();
- detected_language = root[m_GoogleData].get(m_GoogleLanguage, "").asString();
- return true;
+
+ LL_DEBUGS("Translate") << "Sending translation request: " << url << LL_ENDL;
+ LLHTTPClient::get(url, receiver, sHeader, REQUEST_TIMEOUT);
}
//static
@@ -119,3 +308,22 @@ std::string LLTranslate::getTranslateLanguage()
return language;
}
+// static
+const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
+{
+ static LLGoogleV1Handler google_v1;
+ static LLGoogleV2Handler google_v2;
+ static LLBingHandler bing;
+
+ std::string service = gSavedSettings.getString("TranslationService");
+ if (service == "google_v2")
+ {
+ return google_v2;
+ }
+ else if (service == "google_v1")
+ {
+ return google_v1;
+ }
+
+ return bing;
+}
diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h
index e85a42e878..1dee792f7b 100644
--- a/indra/newview/lltranslate.h
+++ b/indra/newview/lltranslate.h
@@ -30,89 +30,42 @@
#include "llhttpclient.h"
#include "llbufferstream.h"
+class LLTranslationAPIHandler;
+
class LLTranslate
{
LOG_CLASS(LLTranslate);
+
public :
class TranslationReceiver: public LLHTTPClient::Responder
{
- protected:
- TranslationReceiver(const std::string &from_lang, const std::string &to_lang)
- : m_fromLang(from_lang),
- m_toLang(to_lang)
- {
- }
-
- virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) {};
- virtual void handleFailure() {};
-
public:
- ~TranslationReceiver()
- {
- }
-
- virtual void completedRaw( U32 status,
- const std::string& reason,
- const LLChannelDescriptors& channels,
- const LLIOPipe::buffer_ptr_t& buffer)
- {
- if (200 <= status && status < 300)
- {
- LLBufferStream istr(channels, buffer.get());
- std::stringstream strstrm;
- strstrm << istr.rdbuf();
+ /*virtual*/ void completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer);
- const std::string result = strstrm.str();
- std::string translation;
- std::string detected_language;
+ protected:
+ friend class LLTranslate;
- if (!parseGoogleTranslate(result, translation, detected_language))
- {
- handleFailure();
- return;
- }
-
- // Fix up the response
- LLStringUtil::replaceString(translation, "<", "<");
- LLStringUtil::replaceString(translation, ">",">");
- LLStringUtil::replaceString(translation, ""","\"");
- LLStringUtil::replaceString(translation, "'","'");
- LLStringUtil::replaceString(translation, "&","&");
- LLStringUtil::replaceString(translation, "'","'");
+ TranslationReceiver(const std::string& from_lang, const std::string& to_lang);
- handleResponse(translation, detected_language);
- }
- else
- {
- LL_WARNS("Translate") << "HTTP request for Google Translate failed with status " << status << ", reason: " << reason << LL_ENDL;
- handleFailure();
- }
- }
+ virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) = 0;
+ virtual void handleFailure(int status, const std::string& err_msg) = 0;
- protected:
- const std::string m_toLang;
- const std::string m_fromLang;
+ std::string mFromLang;
+ std::string mToLang;
+ const LLTranslationAPIHandler& mHandler;
};
- static void translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
- static float m_GoogleTimeout;
+ typedef boost::intrusive_ptr TranslationReceiverPtr;
+
+ static void translateMessage(TranslationReceiverPtr &receiver, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
static std::string getTranslateLanguage();
private:
- static void getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &text);
- static bool parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language);
-
- static LLSD m_Header;
- static const char* m_GoogleURL;
- static const char* m_GoogleLangSpec;
- static const char* m_AcceptHeader;
- static const char* m_AcceptType;
- static const char* m_AgentHeader;
- static const char* m_UserAgent;
-
- static const char* m_GoogleData;
- static const char* m_GoogleTranslation;
- static const char* m_GoogleLanguage;
+ static const LLTranslationAPIHandler& getPreferredHandler();
};
#endif
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 68745d5aeb..ff02214194 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3138,7 +3138,7 @@ protected:
{
// filter out non-interesting responeses
if ( !translation.empty()
- && (m_toLang != detected_language)
+ && (mToLang != detected_language)
&& (LLStringUtil::compareInsensitive(translation, m_origMesg) != 0) )
{
m_chat.mText += " (" + translation + ")";
@@ -3147,9 +3147,8 @@ protected:
LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
}
- void handleFailure()
+ void handleFailure(int status, const std::string& err_msg)
{
- LLTranslate::TranslationReceiver::handleFailure();
m_chat.mText += " (?)";
LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
@@ -3388,7 +3387,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
const std::string from_lang = ""; // leave empty to trigger autodetect
const std::string to_lang = LLTranslate::getTranslateLanguage();
- LLHTTPClient::ResponderPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
+ LLTranslate::TranslationReceiverPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
LLTranslate::translateMessage(result, from_lang, to_lang, mesg);
}
else
--
cgit v1.3
From e23ecf311c729be7e6611ef2fe21badaf9f1c3ed Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Wed, 7 Sep 2011 00:09:49 +0300
Subject: STORM-1577 WIP Implemented chat translation preferences management.
---
indra/newview/CMakeLists.txt | 2 +
indra/newview/llfloaterpreference.cpp | 9 +
indra/newview/llfloaterpreference.h | 1 +
indra/newview/llfloatertranslationsettings.cpp | 146 ++++++++++++++
indra/newview/llfloatertranslationsettings.h | 59 ++++++
indra/newview/llviewerfloaterreg.cpp | 2 +
.../xui/en/floater_translation_settings.xml | 222 +++++++++++++++++++++
.../default/xui/en/panel_preferences_chat.xml | 12 ++
8 files changed, 453 insertions(+)
create mode 100644 indra/newview/llfloatertranslationsettings.cpp
create mode 100644 indra/newview/llfloatertranslationsettings.h
create mode 100644 indra/newview/skins/default/xui/en/floater_translation_settings.xml
(limited to 'indra/newview')
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index a117d9a593..e7ca2a4294 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -237,6 +237,7 @@ set(viewer_SOURCE_FILES
llfloatertools.cpp
llfloatertopobjects.cpp
llfloatertos.cpp
+ llfloatertranslationsettings.cpp
llfloateruipreview.cpp
llfloaterurlentry.cpp
llfloatervoiceeffect.cpp
@@ -799,6 +800,7 @@ set(viewer_HEADER_FILES
llfloatertools.h
llfloatertopobjects.h
llfloatertos.h
+ llfloatertranslationsettings.h
llfloateruipreview.h
llfloaterurlentry.h
llfloatervoiceeffect.h
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d65928e385..07c07d608a 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -345,6 +345,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.MaturitySettings", boost::bind(&LLFloaterPreference::onChangeMaturity, this));
mCommitCallbackRegistrar.add("Pref.BlockList", boost::bind(&LLFloaterPreference::onClickBlockList, this));
mCommitCallbackRegistrar.add("Pref.Proxy", boost::bind(&LLFloaterPreference::onClickProxySettings, this));
+ mCommitCallbackRegistrar.add("Pref.TranslationSettings", boost::bind(&LLFloaterPreference::onClickTranslationSettings, this));
sSkin = gSavedSettings.getString("SkinCurrent");
@@ -602,6 +603,9 @@ void LLFloaterPreference::cancel()
}
// hide joystick pref floater
LLFloaterReg::hideInstance("pref_joystick");
+
+ // hide translation settings floater
+ LLFloaterReg::hideInstance("prefs_translation");
// cancel hardware menu
LLFloaterHardwareSettings* hardware_settings = LLFloaterReg::getTypedInstance("prefs_hardware_settings");
@@ -1553,6 +1557,11 @@ void LLFloaterPreference::onClickProxySettings()
LLFloaterReg::showInstance("prefs_proxy");
}
+void LLFloaterPreference::onClickTranslationSettings()
+{
+ LLFloaterReg::showInstance("prefs_translation");
+}
+
void LLFloaterPreference::updateDoubleClickControls()
{
// check is one of double-click actions settings enabled
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index ef9bc2dd53..ee6bb235be 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -157,6 +157,7 @@ public:
void onChangeMaturity();
void onClickBlockList();
void onClickProxySettings();
+ void onClickTranslationSettings();
void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
void getUIColor(LLUICtrl* ctrl, const LLSD& param);
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
new file mode 100644
index 0000000000..56f101d149
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.cpp
@@ -0,0 +1,146 @@
+/**
+ * @file llfloatertranslationsettings.cpp
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatertranslationsettings.h"
+
+// Viewer includes
+#include "llviewercontrol.h" // for gSavedSettings
+
+// Linden library includes
+#include "llbutton.h"
+#include "llcheckboxctrl.h"
+#include "llcombobox.h"
+#include "llfloaterreg.h"
+#include "lllineeditor.h"
+#include "llnotificationsutil.h"
+#include "llradiogroup.h"
+
+LLFloaterTranslationSettings::LLFloaterTranslationSettings(const LLSD& key)
+: LLFloater(key)
+, mMachineTranslationCB(NULL)
+, mLanguageCombo(NULL)
+, mTranslationServiceRadioGroup(NULL)
+, mBingAPIKeyEditor(NULL)
+, mGoogleAPIKeyEditor(NULL)
+{
+}
+
+// virtual
+BOOL LLFloaterTranslationSettings::postBuild()
+{
+ mMachineTranslationCB = getChild("translate_chat_checkbox");
+ mLanguageCombo = getChild("translate_language_combo");
+ mTranslationServiceRadioGroup = getChild("translation_service_rg");
+ mBingAPIKeyEditor = getChild("bing_api_key");
+ mGoogleAPIKeyEditor = getChild("google_api_key");
+
+ mMachineTranslationCB->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+ mTranslationServiceRadioGroup->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+ getChild("ok_btn")->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnOK, this));
+ getChild("cancel_btn")->setClickedCallback(boost::bind(&LLFloater::closeFloater, this, false));
+
+ center();
+ return TRUE;
+}
+
+// virtual
+void LLFloaterTranslationSettings::onOpen(const LLSD& key)
+{
+ mMachineTranslationCB->setValue(gSavedSettings.getBOOL("TranslateChat"));
+ mLanguageCombo->setSelectedByValue(gSavedSettings.getString("TranslateLanguage"), TRUE);
+ mTranslationServiceRadioGroup->setSelectedByValue(gSavedSettings.getString("TranslationService"), TRUE);
+ mBingAPIKeyEditor->setText(gSavedSettings.getString("BingTranslateAPIKey"));
+ mGoogleAPIKeyEditor->setText(gSavedSettings.getString("GoogleTranslateAPIv2Key"));
+
+ updateControlsEnabledState();
+}
+
+std::string LLFloaterTranslationSettings::getSelectedService() const
+{
+ return mTranslationServiceRadioGroup->getSelectedValue().asString();
+}
+
+void LLFloaterTranslationSettings::showError(const std::string& err_name)
+{
+ LLSD args;
+ args["MESSAGE"] = getString(err_name);
+ LLNotificationsUtil::add("GenericAlert", args);
+}
+
+bool LLFloaterTranslationSettings::validate()
+{
+ bool translate_chat = mMachineTranslationCB->getValue().asBoolean();
+ if (!translate_chat) return true;
+
+ std::string service = getSelectedService();
+ if (service == "bing" && mBingAPIKeyEditor->getText().empty())
+ {
+ showError("no_bing_api_key");
+ return false;
+ }
+
+ if (service == "google_v2" && mGoogleAPIKeyEditor->getText().empty())
+ {
+ showError("no_google_api_key");
+ return false;
+ }
+
+ return true;
+}
+
+void LLFloaterTranslationSettings::updateControlsEnabledState()
+{
+ // Enable/disable controls based on the checkbox value.
+ bool on = mMachineTranslationCB->getValue().asBoolean();
+ std::string service = getSelectedService();
+
+ mTranslationServiceRadioGroup->setEnabled(on);
+ mLanguageCombo->setEnabled(on);
+
+ getChild("bing_api_key_label")->setEnabled(on);
+ mBingAPIKeyEditor->setEnabled(on);
+
+ getChild("google_api_key_label")->setEnabled(on);
+ mGoogleAPIKeyEditor->setEnabled(on);
+
+ mBingAPIKeyEditor->setEnabled(service == "bing");
+ mGoogleAPIKeyEditor->setEnabled(service == "google_v2");
+}
+
+void LLFloaterTranslationSettings::onBtnOK()
+{
+ if (validate())
+ {
+ gSavedSettings.setBOOL("TranslateChat", mMachineTranslationCB->getValue().asBoolean());
+ gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
+ gSavedSettings.setString("TranslationService", getSelectedService());
+ gSavedSettings.setString("BingTranslateAPIKey", mBingAPIKeyEditor->getText());
+ gSavedSettings.setString("GoogleTranslateAPIv2Key", mGoogleAPIKeyEditor->getText());
+ closeFloater(false);
+ }
+}
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
new file mode 100644
index 0000000000..1c03b86f4d
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -0,0 +1,59 @@
+/**
+ * @file llfloatertranslationsettings.h
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifndef LL_LLFLOATERTRANSLATIONSETTINGS_H
+#define LL_LLFLOATERTRANSLATIONSETTINGS_H
+
+#include "llfloater.h"
+
+class LLCheckBoxCtrl;
+class LLComboBox;
+class LLLineEditor;
+class LLRadioGroup;
+
+class LLFloaterTranslationSettings : public LLFloater
+{
+public:
+ LLFloaterTranslationSettings(const LLSD& key);
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onOpen(const LLSD& key);
+
+private:
+ std::string getSelectedService() const;
+ void showError(const std::string& err_name);
+ bool validate();
+ void updateControlsEnabledState();
+ void onMachineTranslationToggle();
+ void onBtnOK();
+
+ LLCheckBoxCtrl* mMachineTranslationCB;
+ LLComboBox* mLanguageCombo;
+ LLLineEditor* mBingAPIKeyEditor;
+ LLLineEditor* mGoogleAPIKeyEditor;
+ LLRadioGroup* mTranslationServiceRadioGroup;
+};
+
+#endif // LL_LLFLOATERTRANSLATIONSETTINGS_H
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index fecc6d91bd..3be26d87e2 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -102,6 +102,7 @@
#include "llfloatertools.h"
#include "llfloatertos.h"
#include "llfloatertopobjects.h"
+#include "llfloatertranslationsettings.h"
#include "llfloateruipreview.h"
#include "llfloatervoiceeffect.h"
#include "llfloaterwhitelistentry.h"
@@ -234,6 +235,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
+ LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build, "preview");
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
new file mode 100644
index 0000000000..40a176830c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -0,0 +1,222 @@
+
+
+
+ Bing Translator requires and appID to function.
+ Google Translate requires an API key to function.
+
+
+
+ Translate chat into:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Choose translation service to use:
+
+
+
+
+
+
+
+
+ Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+
+
+
+
+ Google [http://code.google.com/apis/language/translate/v2/pricing.html API key]:
+
+
+
+
+ ([http://code.google.com/apis/language/translate/v2/pricing.html pricing])
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index ea09286592..3fbf484ab2 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -319,4 +319,16 @@
name="Korean"
value="ko" />
+
\ No newline at end of file
--
cgit v1.3
From 7975ab138b6ac54fc831613e4d3dfb913c5efbd2 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Wed, 7 Sep 2011 16:14:47 +0300
Subject: STORM-1577 Removed support for Google Translate v1 API.
---
indra/newview/app_settings/settings.xml | 10 ++--
indra/newview/llfloatertranslationsettings.cpp | 8 +--
indra/newview/lltranslate.cpp | 67 +++-------------------
.../xui/en/floater_translation_settings.xml | 4 +-
4 files changed, 18 insertions(+), 71 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 2549538df2..2f1a2093b2 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10925,18 +10925,18 @@
TranslationService
Comment
- Translation API to use. (google_v1|google_v2|bing)
+ Translation API to use. (google|bing)
Persist
1
Type
String
Value
- google_v1
+ bing
- GoogleTranslateAPIv2Key
+ GoogleTranslateAPIKey
Comment
- Google Translate API v2 key
+ Google Translate API key
Persist
1
Type
@@ -10947,7 +10947,7 @@
BingTranslateAPIKey
Comment
- Bing AppID to use with the Microsoft Translator V2 API
+ Bing AppID to use with the Microsoft Translator API
Persist
1
Type
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
index 56f101d149..107205aed3 100644
--- a/indra/newview/llfloatertranslationsettings.cpp
+++ b/indra/newview/llfloatertranslationsettings.cpp
@@ -75,7 +75,7 @@ void LLFloaterTranslationSettings::onOpen(const LLSD& key)
mLanguageCombo->setSelectedByValue(gSavedSettings.getString("TranslateLanguage"), TRUE);
mTranslationServiceRadioGroup->setSelectedByValue(gSavedSettings.getString("TranslationService"), TRUE);
mBingAPIKeyEditor->setText(gSavedSettings.getString("BingTranslateAPIKey"));
- mGoogleAPIKeyEditor->setText(gSavedSettings.getString("GoogleTranslateAPIv2Key"));
+ mGoogleAPIKeyEditor->setText(gSavedSettings.getString("GoogleTranslateAPIKey"));
updateControlsEnabledState();
}
@@ -104,7 +104,7 @@ bool LLFloaterTranslationSettings::validate()
return false;
}
- if (service == "google_v2" && mGoogleAPIKeyEditor->getText().empty())
+ if (service == "google" && mGoogleAPIKeyEditor->getText().empty())
{
showError("no_google_api_key");
return false;
@@ -129,7 +129,7 @@ void LLFloaterTranslationSettings::updateControlsEnabledState()
mGoogleAPIKeyEditor->setEnabled(on);
mBingAPIKeyEditor->setEnabled(service == "bing");
- mGoogleAPIKeyEditor->setEnabled(service == "google_v2");
+ mGoogleAPIKeyEditor->setEnabled(service == "google");
}
void LLFloaterTranslationSettings::onBtnOK()
@@ -140,7 +140,7 @@ void LLFloaterTranslationSettings::onBtnOK()
gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
gSavedSettings.setString("TranslationService", getSelectedService());
gSavedSettings.setString("BingTranslateAPIKey", mBingAPIKeyEditor->getText());
- gSavedSettings.setString("GoogleTranslateAPIv2Key", mGoogleAPIKeyEditor->getText());
+ gSavedSettings.setString("GoogleTranslateAPIKey", mGoogleAPIKeyEditor->getText());
closeFloater(false);
}
}
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index e29ea373ce..6576cbbe64 100644
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -59,57 +59,9 @@ protected:
static const int STATUS_OK = 200;
};
-class LLGoogleV1Handler : public LLTranslationAPIHandler
+class LLGoogleHandler : public LLTranslationAPIHandler
{
- LOG_CLASS(LLGoogleV1Handler);
-
-public:
- /*virtual*/ void getTranslateURL(
- std::string &url,
- const std::string &from_lang,
- const std::string &to_lang,
- const std::string &text) const
- {
- url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q="
- + LLURI::escape(text)
- + "&langpair=" + from_lang + "%7C" + to_lang;
- }
-
- /*virtual*/ bool parseResponse(
- int& status,
- const std::string& body,
- std::string& translation,
- std::string& detected_lang,
- std::string& err_msg) const
- {
- Json::Value root;
- Json::Reader reader;
-
- if (!reader.parse(body, root))
- {
- err_msg = reader.getFormatedErrorMessages();
- return false;
- }
-
- // This API doesn't return proper status in the HTTP response header,
- // but it is in the body.
- status = root["responseStatus"].asInt();
- if (status != STATUS_OK)
- {
- err_msg = root["responseDetails"].asString();
- return false;
- }
-
- const Json::Value& response_data = root["responseData"];
- translation = response_data.get("translatedText", "").asString();
- detected_lang = response_data.get("detectedSourceLanguage", "").asString();
- return true;
- }
-};
-
-class LLGoogleV2Handler : public LLTranslationAPIHandler
-{
- LOG_CLASS(LLGoogleV2Handler);
+ LOG_CLASS(LLGoogleHandler);
public:
/*virtual*/ void getTranslateURL(
@@ -159,7 +111,7 @@ public:
private:
static std::string getAPIKey()
{
- return gSavedSettings.getString("GoogleTranslateAPIv2Key");
+ return gSavedSettings.getString("GoogleTranslateAPIKey");
}
};
@@ -311,18 +263,13 @@ std::string LLTranslate::getTranslateLanguage()
// static
const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
{
- static LLGoogleV1Handler google_v1;
- static LLGoogleV2Handler google_v2;
- static LLBingHandler bing;
+ static LLGoogleHandler google;
+ static LLBingHandler bing;
std::string service = gSavedSettings.getString("TranslationService");
- if (service == "google_v2")
- {
- return google_v2;
- }
- else if (service == "google_v1")
+ if (service == "google")
{
- return google_v1;
+ return google;
}
return bing;
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
index 40a176830c..f21f64fcf6 100644
--- a/indra/newview/skins/default/xui/en/floater_translation_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -137,10 +137,10 @@
layout="topleft"
name="bing" />
--
cgit v1.3
From 1fad7d997d99715cc88b6e69ae325f28be413206 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Wed, 7 Sep 2011 19:12:35 +0300
Subject: STORM-1577 Made parsing translation responses more robust.
JsonCpp is prone to aborting the program on failed assertions,
so be super-careful and verify the response format.
---
indra/newview/lltranslate.cpp | 72 +++++++++++++++++++++++---
indra/newview/skins/default/xui/en/strings.xml | 3 ++
2 files changed, 67 insertions(+), 8 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index 6576cbbe64..895d8f78eb 100644
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -31,6 +31,7 @@
#include
#include "llbufferstream.h"
+#include "lltrans.h"
#include "llui.h"
#include "llversioninfo.h"
#include "llviewercontrol.h"
@@ -94,21 +95,66 @@ public:
return false;
}
+ if (!root.isObject()) // empty response? should not happen
+ {
+ return false;
+ }
+
if (status != STATUS_OK)
{
- const Json::Value& error = root["error"];
- err_msg = error["message"].asString();
- status = error["code"].asInt();
+ // Request failed. Extract error message from the response.
+ parseErrorResponse(root, status, err_msg);
return false;
}
- const Json::Value& response_data = root["data"]["translations"][0U];
- translation = response_data["translatedText"].asString();
- detected_lang = response_data["detectedSourceLanguage"].asString();
- return true;
+ // Request succeeded, extract translation from the response.
+ return parseTranslation(root, translation, detected_lang);
}
private:
+ static void parseErrorResponse(
+ const Json::Value& root,
+ int& status,
+ std::string& err_msg)
+ {
+ const Json::Value& error = root.get("error", 0);
+ if (!error.isObject() || !error.isMember("message") || !error.isMember("code"))
+ {
+ return;
+ }
+
+ err_msg = error["message"].asString();
+ status = error["code"].asInt();
+ }
+
+ static bool parseTranslation(
+ const Json::Value& root,
+ std::string& translation,
+ std::string& detected_lang)
+ {
+ const Json::Value& data = root.get("data", 0);
+ if (!data.isObject() || !data.isMember("translations"))
+ {
+ return false;
+ }
+
+ const Json::Value& translations = data["translations"];
+ if (!translations.isArray() || translations.size() == 0)
+ {
+ return false;
+ }
+
+ const Json::Value& first = translations[0U];
+ if (!first.isObject() || !first.isMember("translatedText"))
+ {
+ return false;
+ }
+
+ translation = first["translatedText"].asString();
+ detected_lang = first.get("detectedSourceLanguage", "").asString();
+ return true;
+ }
+
static std::string getAPIKey()
{
return gSavedSettings.getString("GoogleTranslateAPIKey");
@@ -143,7 +189,12 @@ public:
{
if (status != STATUS_OK)
{
- size_t begin = body.find("Message: ");
+ static const std::string MSG_BEGIN_MARKER = "Message: ";
+ size_t begin = body.find(MSG_BEGIN_MARKER);
+ if (begin != std::string::npos)
+ {
+ begin += MSG_BEGIN_MARKER.size();
+ }
size_t end = body.find("", begin);
err_msg = body.substr(begin, end-begin);
LLStringUtil::replaceString(err_msg, "
", ""); // strip CR
@@ -211,6 +262,11 @@ void LLTranslate::TranslationReceiver::completedRaw(
}
else
{
+ if (err_msg.empty())
+ {
+ err_msg = LLTrans::getString("TranslationResponseParseError");
+ }
+
llwarns << "Translation request failed: " << err_msg << llendl;
LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
LL_DEBUGS("Translate") << "Error response body: " << body << LL_ENDL;
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 2094275bed..146665b47d 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3502,6 +3502,9 @@ Try enclosing path to the editor with double quotes.
Error parsing the external editor command.
External editor failed to run.
+
+ Error parsing translation response.
+
Esc
Space
--
cgit v1.3
From ef01821337a0dc428fd090ae94c8cc9d9a13bdb5 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Wed, 7 Sep 2011 19:29:57 +0300
Subject: STORM-1577 WIP Removed old translation settings controls.
They are now superceded with a separate floater.
---
.../default/xui/en/panel_preferences_chat.xml | 119 +--------------------
1 file changed, 2 insertions(+), 117 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 3fbf484ab2..28db34f4d4 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -204,129 +204,14 @@
name="nearby_toasts_fadingtime"
top_pad="3"
width="325" />
-
-
-
-
- Use machine translation while chatting (powered by Google)
-
-
- Translate chat into:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ MemoryPrivatePoolSize
+
+ Comment
+ Size of the private memory pool in MB (min. value is 256)
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 512
+
MemProfiling
Comment
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 7e597fe5dc..e6942971f3 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -722,7 +722,7 @@ bool LLAppViewer::init()
//set the max heap size.
initMaxHeapSize() ;
- LLPrivateMemoryPoolManager::initClass((BOOL)gSavedSettings.getBOOL("MemoryPrivatePoolEnabled")) ;
+ LLPrivateMemoryPoolManager::initClass((BOOL)gSavedSettings.getBOOL("MemoryPrivatePoolEnabled"), (U32)gSavedSettings.getU32("MemoryPrivatePoolSize")) ;
// write Google Breakpad minidump files to our log directory
std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
@@ -1122,63 +1122,25 @@ void LLAppViewer::checkMemory()
{
const static F32 MEMORY_CHECK_INTERVAL = 1.0f ; //second
//const static F32 MAX_QUIT_WAIT_TIME = 30.0f ; //seconds
- const static U32 MAX_SIZE_CHECKED_MEMORY_BLOCK = 64 * 1024 * 1024 ; //64 MB
- //static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
- static void* last_reserved_address = NULL ;
+ //static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
- if(MEMORY_CHECK_INTERVAL > mMemCheckTimer.getElapsedTimeF32())
+ if(!gGLManager.mDebugGPU)
{
return ;
}
- mMemCheckTimer.reset() ;
-
- if(gGLManager.mDebugGPU)
- {
- //update the availability of memory
- LLMemory::updateMemoryInfo() ;
- }
- //check the virtual address space fragmentation
- if(!last_reserved_address)
- {
- last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
- }
- else
+ if(MEMORY_CHECK_INTERVAL > mMemCheckTimer.getElapsedTimeF32())
{
- last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
- if(!last_reserved_address) //failed, try once more
- {
- last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
- }
+ return ;
}
+ mMemCheckTimer.reset() ;
- S32 is_low = !last_reserved_address || LLMemory::isMemoryPoolLow() ;
-
- //if(is_low < 0) //to force quit
- //{
- // if(force_quit_timer > MAX_QUIT_WAIT_TIME) //just hit the limit for the first time
- // {
- // //send out the notification to tell the viewer is about to quit in 30 seconds.
- // LLNotification::Params params("ForceQuitDueToLowMemory");
- // LLNotifications::instance().add(params);
+ //update the availability of memory
+ LLMemory::updateMemoryInfo() ;
- // force_quit_timer = MAX_QUIT_WAIT_TIME - MEMORY_CHECK_INTERVAL ;
- // }
- // else
- // {
- // force_quit_timer -= MEMORY_CHECK_INTERVAL ;
- // if(force_quit_timer < 0.f)
- // {
- // forceQuit() ; //quit
- // }
- // }
- //}
- //else
- //{
- // force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
- //}
+ bool is_low = LLMemory::isMemoryPoolLow() ;
- LLPipeline::throttleNewMemoryAllocation(!is_low ? FALSE : TRUE) ;
+ LLPipeline::throttleNewMemoryAllocation(is_low) ;
if(is_low)
{
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 6142ee0dd6..19326c4e30 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -202,7 +202,7 @@ void display_stats()
gMemoryAllocated = LLMemory::getCurrentRSS();
U32 memory = (U32)(gMemoryAllocated / (1024*1024));
llinfos << llformat("MEMORY: %d MB", memory) << llendl;
- LLMemory::logMemoryInfo() ;
+ LLMemory::logMemoryInfo(TRUE) ;
gRecentMemoryTime.reset();
}
}
--
cgit v1.3
From 2d19a2002501d44ce18080b6f26ceaf2dbf796e9 Mon Sep 17 00:00:00 2001
From: "Andrew A. de Laix"
Date: Thu, 8 Sep 2011 09:46:04 -0500
Subject: add getInfo to LLView to get state information about ui elements.
---
indra/llcommon/lleventapi.h | 5 +++++
indra/llui/lluictrl.cpp | 6 ++++++
indra/llui/lluictrl.h | 4 +++-
indra/llui/llview.cpp | 22 ++++++++++++++++++++++
indra/llui/llview.h | 6 +++++-
indra/newview/llwindowlistener.cpp | 29 +++++------------------------
6 files changed, 46 insertions(+), 26 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llcommon/lleventapi.h b/indra/llcommon/lleventapi.h
index 64d038ade4..1a37d780b6 100644
--- a/indra/llcommon/lleventapi.h
+++ b/indra/llcommon/lleventapi.h
@@ -149,6 +149,11 @@ public:
* @endcode
*/
LLSD& operator[](const LLSD::String& key) { return mResp[key]; }
+
+ /**
+ * set the response to the given data
+ */
+ void setResponse(LLSD const & response){ mResp = response; }
LLSD mResp, mReq;
LLSD::String mKey;
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index d58df5801b..9b9e2ddb55 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -1045,3 +1045,9 @@ boost::signals2::connection LLUICtrl::setDoubleClickCallback( const mouse_signal
if (!mDoubleClickSignal) mDoubleClickSignal = new mouse_signal_t();
return mDoubleClickSignal->connect(cb);
}
+
+void LLUICtrl::addInfo(LLSD & info)
+{
+ LLView::addInfo(info);
+ info["value"] = getValue();
+}
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 09bed9b958..8a8b589e9c 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -301,7 +301,9 @@ protected:
static F32 sActiveControlTransparency;
static F32 sInactiveControlTransparency;
-
+
+ virtual void addInfo(LLSD & info);
+
private:
BOOL mIsChrome;
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index a630a03c92..e2b9527cc5 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -47,6 +47,7 @@
#include "v3color.h"
#include "lluictrlfactory.h"
#include "lltooltip.h"
+#include "llsdutil.h"
// for ui edit hack
#include "llbutton.h"
@@ -2606,3 +2607,24 @@ const LLViewDrawContext& LLViewDrawContext::getCurrentContext()
return *sDrawContextStack.back();
}
+
+LLSD LLView::getInfo(void)
+{
+ LLSD info;
+ addInfo(info);
+ return info;
+}
+
+void LLView::addInfo(LLSD & info)
+{
+ info["path"] = getPathname();
+ info["class"] = typeid(*this).name();
+ info["visible"] = getVisible();
+ info["visible_chain"] = isInVisibleChain();
+ info["enabled"] = getEnabled();
+ info["enabled_chain"] = isInEnabledChain();
+ info["available"] = isAvailable();
+ LLRect rect(calcScreenRect());
+ info["rect"] = LLSDMap("left", rect.mLeft)("top", rect.mTop)
+ ("right", rect.mRight)("bottom", rect.mBottom);
+}
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index fcae75c447..fe15307a5d 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -516,6 +516,9 @@ public:
virtual S32 notify(const LLSD& info) { return 0;};
static const LLViewDrawContext& getDrawContext();
+
+ // Returns useful information about this ui widget.
+ LLSD getInfo(void);
protected:
void drawDebugRect();
@@ -546,7 +549,8 @@ protected:
LLView* childrenHandleToolTip(S32 x, S32 y, MASK mask);
ECursorType mHoverCursor;
-
+
+ virtual void addInfo(LLSD & info);
private:
template
diff --git a/indra/newview/llwindowlistener.cpp b/indra/newview/llwindowlistener.cpp
index d497964f6c..ac8e981c4e 100644
--- a/indra/newview/llwindowlistener.cpp
+++ b/indra/newview/llwindowlistener.cpp
@@ -135,18 +135,6 @@ protected:
namespace {
-void insertViewInformation(LLEventAPI::Response & response, LLView * target)
-{
- // Get info about this LLView* for when we send response.
- response["path"] = target->getPathname();
- response["class"] = typeid(*target).name();
- response["visible"] = target->getVisible();
- response["visible_chain"] = target->isInVisibleChain();
- response["enabled"] = target->getEnabled();
- response["enabled_chain"] = target->isInEnabledChain();
- response["available"] = target->isAvailable();
-}
-
// helper for getMask()
MASK lookupMask_(const std::string& maskname)
{
@@ -219,10 +207,7 @@ void LLWindowListener::getInfo(LLSD const & evt)
LLUI::resolvePath(gViewerWindow->getRootView(), path);
if (target_view != 0)
{
- insertViewInformation(response, target_view);
- LLRect rect(target_view->calcScreenRect());
- response["rect"] = LLSDMap("left", rect.mLeft)("top", rect.mTop)
- ("right", rect.mRight)("bottom", rect.mBottom);
+ response.setResponse(target_view->getInfo());
}
else
{
@@ -253,7 +238,7 @@ void LLWindowListener::keyDown(LLSD const & evt)
}
else if(target_view->isAvailable())
{
- insertViewInformation(response, target_view);
+ response.setResponse(target_view->getInfo());
gFocusMgr.setKeyboardFocus(target_view);
KEY key = getKEY(evt);
@@ -290,7 +275,7 @@ void LLWindowListener::keyUp(LLSD const & evt)
}
else if (target_view->isAvailable())
{
- insertViewInformation(response, target_view);
+ response.setResponse(target_view->getInfo());
gFocusMgr.setKeyboardFocus(target_view);
mKbGetter()->handleTranslatedKeyUp(getKEY(evt), getMask(evt));
@@ -370,12 +355,7 @@ static void mouseEvent(const MouseFunc& func, const LLSD& request)
"specified invalid \"path\": '" << path << "'"));
}
- insertViewInformation(response, target);
-
- // Don't show caller the LLView's own relative rectangle; that only
- // tells its dimensions. Provide actual location on screen.
- LLRect rect(target->calcScreenRect());
- response["rect"] = LLSDMap("left", rect.mLeft)("top", rect.mTop)("right", rect.mRight)("bottom", rect.mBottom);
+ response.setResponse(target->getInfo());
// The intent of this test is to prevent trying to drill down to a
// widget in a hidden floater, or on a tab that's not current, etc.
@@ -397,6 +377,7 @@ static void mouseEvent(const MouseFunc& func, const LLSD& request)
if (! has_pos)
{
+ LLRect rect(target->calcScreenRect());
pos.set(rect.getCenterX(), rect.getCenterY());
// nonstandard warning tactic: probably usual case; we want event
// sender to know synthesized (x, y), but maybe don't need to log?
--
cgit v1.3
From a21a55482a076aa690ca947411f439dd14d59443 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Fri, 9 Sep 2011 20:09:01 +0300
Subject: STORM-1577 WIP Added unit tests.
By the way, fixed minor parsing bugs.
---
indra/newview/CMakeLists.txt | 7 +
indra/newview/lltranslate.cpp | 295 +++++++++++++++++++-----------------------
indra/newview/lltranslate.h | 77 ++++++++++-
3 files changed, 219 insertions(+), 160 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index e7ca2a4294..635f425540 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1985,12 +1985,19 @@ if (LL_TESTS)
llmediadataclient.cpp
lllogininstance.cpp
llremoteparcelrequest.cpp
+ lltranslate.cpp
llviewerhelputil.cpp
llversioninfo.cpp
llworldmap.cpp
llworldmipmap.cpp
)
+ set_source_files_properties(
+ lltranslate.cpp
+ PROPERTIES
+ LL_TEST_ADDITIONAL_LIBRARIES "${JSONCPP_LIBRARIES}"
+ )
+
##################################################
# DISABLING PRECOMPILED HEADERS USAGE FOR TESTS
##################################################
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index 895d8f78eb..a74b252c68 100644
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -38,194 +38,171 @@
#include "reader.h"
-class LLTranslationAPIHandler
-{
-public:
- virtual void getTranslateURL(
- std::string &url,
- const std::string &from_lang,
- const std::string &to_lang,
- const std::string &text) const = 0;
-
- virtual bool parseResponse(
- int& status,
- const std::string& body,
- std::string& translation,
- std::string& detected_lang,
- std::string& err_msg) const = 0;
-
- virtual ~LLTranslationAPIHandler() {}
-
-protected:
- static const int STATUS_OK = 200;
-};
-
-class LLGoogleHandler : public LLTranslationAPIHandler
+// virtual
+void LLGoogleTranslationHandler::getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const
{
- LOG_CLASS(LLGoogleHandler);
-
-public:
- /*virtual*/ void getTranslateURL(
- std::string &url,
- const std::string &from_lang,
- const std::string &to_lang,
- const std::string &text) const
+ url = std::string("https://www.googleapis.com/language/translate/v2?key=")
+ + getAPIKey() + "&q=" + LLURI::escape(text) + "&target=" + to_lang;
+ if (!from_lang.empty())
{
- url = std::string("https://www.googleapis.com/language/translate/v2?key=")
- + getAPIKey() + "&q=" + LLURI::escape(text) + "&target=" + to_lang;
- if (!from_lang.empty())
- {
- url += "&source=" + from_lang;
- }
+ url += "&source=" + from_lang;
}
+}
- /*virtual*/ bool parseResponse(
- int& status,
- const std::string& body,
- std::string& translation,
- std::string& detected_lang,
- std::string& err_msg) const
- {
- Json::Value root;
- Json::Reader reader;
-
- if (!reader.parse(body, root))
- {
- err_msg = reader.getFormatedErrorMessages();
- return false;
- }
-
- if (!root.isObject()) // empty response? should not happen
- {
- return false;
- }
-
- if (status != STATUS_OK)
- {
- // Request failed. Extract error message from the response.
- parseErrorResponse(root, status, err_msg);
- return false;
- }
+// virtual
+bool LLGoogleTranslationHandler::parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const
+{
+ Json::Value root;
+ Json::Reader reader;
- // Request succeeded, extract translation from the response.
- return parseTranslation(root, translation, detected_lang);
+ if (!reader.parse(body, root))
+ {
+ err_msg = reader.getFormatedErrorMessages();
+ return false;
}
-private:
- static void parseErrorResponse(
- const Json::Value& root,
- int& status,
- std::string& err_msg)
+ if (!root.isObject()) // empty response? should not happen
{
- const Json::Value& error = root.get("error", 0);
- if (!error.isObject() || !error.isMember("message") || !error.isMember("code"))
- {
- return;
- }
+ return false;
+ }
- err_msg = error["message"].asString();
- status = error["code"].asInt();
+ if (status != STATUS_OK)
+ {
+ // Request failed. Extract error message from the response.
+ parseErrorResponse(root, status, err_msg);
+ return false;
}
- static bool parseTranslation(
- const Json::Value& root,
- std::string& translation,
- std::string& detected_lang)
+ // Request succeeded, extract translation from the response.
+ return parseTranslation(root, translation, detected_lang);
+}
+
+// static
+void LLGoogleTranslationHandler::parseErrorResponse(
+ const Json::Value& root,
+ int& status,
+ std::string& err_msg)
+{
+ const Json::Value& error = root.get("error", 0);
+ if (!error.isObject() || !error.isMember("message") || !error.isMember("code"))
{
- const Json::Value& data = root.get("data", 0);
- if (!data.isObject() || !data.isMember("translations"))
- {
- return false;
- }
+ return;
+ }
- const Json::Value& translations = data["translations"];
- if (!translations.isArray() || translations.size() == 0)
- {
- return false;
- }
+ err_msg = error["message"].asString();
+ status = error["code"].asInt();
+}
- const Json::Value& first = translations[0U];
- if (!first.isObject() || !first.isMember("translatedText"))
- {
- return false;
- }
+// static
+bool LLGoogleTranslationHandler::parseTranslation(
+ const Json::Value& root,
+ std::string& translation,
+ std::string& detected_lang)
+{
+ const Json::Value& data = root.get("data", 0);
+ if (!data.isObject() || !data.isMember("translations"))
+ {
+ return false;
+ }
- translation = first["translatedText"].asString();
- detected_lang = first.get("detectedSourceLanguage", "").asString();
- return true;
+ const Json::Value& translations = data["translations"];
+ if (!translations.isArray() || translations.size() == 0)
+ {
+ return false;
}
- static std::string getAPIKey()
+ const Json::Value& first = translations[0U];
+ if (!first.isObject() || !first.isMember("translatedText"))
{
- return gSavedSettings.getString("GoogleTranslateAPIKey");
+ return false;
}
-};
-class LLBingHandler : public LLTranslationAPIHandler
+ translation = first["translatedText"].asString();
+ detected_lang = first.get("detectedSourceLanguage", "").asString();
+ return true;
+}
+
+// static
+std::string LLGoogleTranslationHandler::getAPIKey()
+{
+ return gSavedSettings.getString("GoogleTranslateAPIKey");
+}
+
+// virtual
+void LLBingTranslarionHandler::getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const
{
- LOG_CLASS(LLBingHandler);
-
-public:
- /*virtual*/ void getTranslateURL(
- std::string &url,
- const std::string &from_lang,
- const std::string &to_lang,
- const std::string &text) const
+ url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=")
+ + getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang;
+ if (!from_lang.empty())
{
- url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=")
- + getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang;
- if (!from_lang.empty())
- {
- url += "&from=" + from_lang;
- }
+ url += "&from=" + from_lang;
}
+}
- /*virtual*/ bool parseResponse(
- int& status,
- const std::string& body,
- std::string& translation,
- std::string& detected_lang,
- std::string& err_msg) const
+// virtual
+bool LLBingTranslarionHandler::parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const
+{
+ if (status != STATUS_OK)
{
- if (status != STATUS_OK)
+ static const std::string MSG_BEGIN_MARKER = "Message: ";
+ size_t begin = body.find(MSG_BEGIN_MARKER);
+ if (begin != std::string::npos)
{
- static const std::string MSG_BEGIN_MARKER = "Message: ";
- size_t begin = body.find(MSG_BEGIN_MARKER);
- if (begin != std::string::npos)
- {
- begin += MSG_BEGIN_MARKER.size();
- }
- size_t end = body.find("", begin);
- err_msg = body.substr(begin, end-begin);
- LLStringUtil::replaceString(err_msg, "
", ""); // strip CR
- return false;
+ begin += MSG_BEGIN_MARKER.size();
}
-
- // Sample response: Hola
- size_t begin = body.find(">");
- if (begin == std::string::npos || begin >= (body.size() - 1))
+ else
{
- return false;
+ begin = 0;
+ err_msg.clear();
}
-
- size_t end = body.find("", ++begin);
- if (end == std::string::npos || end < begin)
- {
- return false;
- }
-
- detected_lang = ""; // unsupported by this API
- translation = body.substr(begin, end-begin);
- LLStringUtil::replaceString(translation, "
", ""); // strip CR
- return true;
+ size_t end = body.find("", begin);
+ err_msg = body.substr(begin, end-begin);
+ LLStringUtil::replaceString(err_msg, "
", ""); // strip CR
+ return false;
}
-private:
- static std::string getAPIKey()
+ // Sample response: Hola
+ size_t begin = body.find(">");
+ if (begin == std::string::npos || begin >= (body.size() - 1))
{
- return gSavedSettings.getString("BingTranslateAPIKey");
+ begin = 0;
}
-};
+ else
+ {
+ ++begin;
+ }
+
+ size_t end = body.find("", begin);
+
+ detected_lang = ""; // unsupported by this API
+ translation = body.substr(begin, end-begin);
+ LLStringUtil::replaceString(translation, "
", ""); // strip CR
+ return true;
+}
+
+// static
+std::string LLBingTranslarionHandler::getAPIKey()
+{
+ return gSavedSettings.getString("BingTranslateAPIKey");
+}
LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)
: mFromLang(from_lang)
@@ -248,6 +225,8 @@ void LLTranslate::TranslationReceiver::completedRaw(
const std::string body = strstrm.str();
std::string translation, detected_lang, err_msg;
int status = http_status;
+ LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
+ LL_DEBUGS("Translate") << "Response body: " << body << LL_ENDL;
if (mHandler.parseResponse(status, body, translation, detected_lang, err_msg))
{
// Fix up the response
@@ -268,8 +247,6 @@ void LLTranslate::TranslationReceiver::completedRaw(
}
llwarns << "Translation request failed: " << err_msg << llendl;
- LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
- LL_DEBUGS("Translate") << "Error response body: " << body << LL_ENDL;
handleFailure(status, err_msg);
}
}
@@ -319,8 +296,8 @@ std::string LLTranslate::getTranslateLanguage()
// static
const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
{
- static LLGoogleHandler google;
- static LLBingHandler bing;
+ static LLGoogleTranslationHandler google;
+ static LLBingTranslarionHandler bing;
std::string service = gSavedSettings.getString("TranslationService");
if (service == "google")
diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h
index 1dee792f7b..1bf6965fd4 100644
--- a/indra/newview/lltranslate.h
+++ b/indra/newview/lltranslate.h
@@ -30,7 +30,82 @@
#include "llhttpclient.h"
#include "llbufferstream.h"
-class LLTranslationAPIHandler;
+namespace Json
+{
+ class Value;
+}
+
+class LLTranslationAPIHandler
+{
+public:
+ virtual void getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const = 0;
+
+ virtual bool parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const = 0;
+
+ virtual ~LLTranslationAPIHandler() {}
+
+protected:
+ static const int STATUS_OK = 200;
+};
+
+class LLGoogleTranslationHandler : public LLTranslationAPIHandler
+{
+ LOG_CLASS(LLGoogleTranslationHandler);
+
+public:
+ /*virtual*/ void getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const;
+ /*virtual*/ bool parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const;
+
+private:
+ static void parseErrorResponse(
+ const Json::Value& root,
+ int& status,
+ std::string& err_msg);
+ static bool parseTranslation(
+ const Json::Value& root,
+ std::string& translation,
+ std::string& detected_lang);
+ static std::string getAPIKey();
+};
+
+class LLBingTranslarionHandler : public LLTranslationAPIHandler
+{
+ LOG_CLASS(LLBingTranslarionHandler);
+
+public:
+ /*virtual*/ void getTranslateURL(
+ std::string &url,
+ const std::string &from_lang,
+ const std::string &to_lang,
+ const std::string &text) const;
+ /*virtual*/ bool parseResponse(
+ int& status,
+ const std::string& body,
+ std::string& translation,
+ std::string& detected_lang,
+ std::string& err_msg) const;
+private:
+ static std::string getAPIKey();
+};
+
class LLTranslate
{
--
cgit v1.3
From 83d889098db7253a8d8bec7940a93724ea724449 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Mon, 12 Sep 2011 17:21:07 +0300
Subject: STORM-1577 WIP Forgot to add the unit test.
---
indra/newview/tests/lltranslate_test.cpp | 344 +++++++++++++++++++++++++++++++
1 file changed, 344 insertions(+)
create mode 100644 indra/newview/tests/lltranslate_test.cpp
(limited to 'indra/newview')
diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp
new file mode 100644
index 0000000000..0f3429b7b3
--- /dev/null
+++ b/indra/newview/tests/lltranslate_test.cpp
@@ -0,0 +1,344 @@
+/**
+ * @file lltranslate_test.cpp
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#include "linden_common.h"
+
+#include "../test/lltut.h"
+#include "../lltranslate.h"
+#include "../llversioninfo.h"
+#include "../llviewercontrol.h"
+
+#include "llbufferstream.h"
+#include "lltrans.h"
+#include "llui.h"
+
+static const std::string GOOGLE_VALID_RESPONSE1 =
+"{\
+ \"data\": {\
+ \"translations\": [\
+ {\
+ \"translatedText\": \"привет\",\
+ \"detectedSourceLanguage\": \"es\"\
+ }\
+ ]\
+ }\
+}";
+
+static const std::string GOOGLE_VALID_RESPONSE2 =
+"{\
+ \"data\": {\
+ \"translations\": [\
+ {\
+ \"translatedText\": \"привет\"\
+ }\
+ ]\
+ }\
+}\
+";
+
+static const std::string GOOGLE_VALID_RESPONSE3 =
+"{\
+ \"error\": {\
+ \"errors\": [\
+ {\
+ \"domain\": \"global\",\
+ \"reason\": \"invalid\",\
+ \"message\": \"Invalid Value\"\
+ }\
+ ],\
+ \"code\": 400,\
+ \"message\": \"Invalid Value\"\
+ }\
+}";
+
+static const std::string BING_VALID_RESPONSE1 =
+"Привет";
+
+static const std::string BING_VALID_RESPONSE2 =
+"Argument Exception
Method: Translate()
Parameter:
\
+Message: 'from' must be a valid language
\
+message id=3743.V2_Rest.Translate.58E8454F
";
+
+static const std::string BING_VALID_RESPONSE3 =
+"Argument Exception
Method: Translate()
\
+Parameter: appId
Message: Invalid appId
\nParameter name: appId
\
+message id=3737.V2_Rest.Translate.56016759
";
+
+namespace tut
+{
+ class translate_test
+ {
+ protected:
+ void test_translation(
+ LLTranslationAPIHandler& handler,
+ int status, const std::string& resp,
+ const std::string& exp_trans, const std::string& exp_lang, const std::string& exp_err)
+ {
+ std::string translation, detected_lang, err_msg;
+ bool rc = handler.parseResponse(status, resp, translation, detected_lang, err_msg);
+ ensure_equals("rc", rc, (status == 200));
+ ensure_equals("err_msg", err_msg, exp_err);
+ ensure_equals("translation", translation, exp_trans);
+ ensure_equals("detected_lang", detected_lang, exp_lang);
+ }
+
+ LLGoogleTranslationHandler mGoogle;
+ LLBingTranslarionHandler mBing;
+ };
+
+ typedef test_group translate_test_group_t;
+ typedef translate_test_group_t::object translate_test_object_t;
+ tut::translate_test_group_t tut_translate("LLTranslate");
+
+ template<> template<>
+ void translate_test_object_t::test<1>()
+ {
+ test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE1, "привет", "es", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<2>()
+ {
+ test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE2, "привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<3>()
+ {
+ test_translation(mGoogle, 400, GOOGLE_VALID_RESPONSE3, "", "", "Invalid Value");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<4>()
+ {
+ test_translation(mGoogle, 400,
+ "",
+ "", "", "* Line 1, Column 1\n Syntax error: value, object or array expected.\n");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<5>()
+ {
+ test_translation(mGoogle, 400,
+ "[]",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<6>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"oops\": \"invalid\"}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<7>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"oops\": \"invalid\"}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<8>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": { \"translations\": [ {} ] }}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<9>()
+ {
+ test_translation(mGoogle, 400,
+ "{\"data\": { \"translations\": [ { \"translatedTextZZZ\": \"привет\", \"detectedSourceLanguageZZZ\": \"es\" } ] }}",
+ "", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<10>()
+ {
+ test_translation(mBing, 200, BING_VALID_RESPONSE1, "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<11>()
+ {
+ test_translation(mBing, 400, BING_VALID_RESPONSE2, "", "", "'from' must be a valid language");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<12>()
+ {
+ test_translation(mBing, 400, BING_VALID_RESPONSE3, "", "", "Invalid appId\nParameter name: appId");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<13>()
+ {
+ test_translation(mBing, 200,
+ "Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<14>()
+ {
+ test_translation(mBing, 200,
+ "Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<15>()
+ {
+ test_translation(mBing, 200,
+ "Привет",
+ "Привет", "", "");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<16>()
+ {
+ test_translation(mBing, 400,
+ "Message: some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<17>()
+ {
+ test_translation(mBing, 400,
+ "Message: some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<18>()
+ {
+ test_translation(mBing, 400,
+ "some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<19>()
+ {
+ test_translation(mBing, 400,
+ "some error",
+ "", "", "some error");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<20>()
+ {
+ std::string url;
+ mBing.getTranslateURL(url, "en", "es", "hi");
+ ensure_equals("bing URL", url,
+ "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es&from=en");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<21>()
+ {
+ std::string url;
+ mBing.getTranslateURL(url, "", "es", "hi");
+ ensure_equals("bing URL", url,
+ "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<22>()
+ {
+ std::string url;
+ mGoogle.getTranslateURL(url, "en", "es", "hi");
+ ensure_equals("google URL", url,
+ "https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es&source=en");
+ }
+
+ template<> template<>
+ void translate_test_object_t::test<23>()
+ {
+ std::string url;
+ mGoogle.getTranslateURL(url, "", "es", "hi");
+ ensure_equals("google URL", url,
+ "https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es");
+ }
+}
+
+//== Misc stubs ===============================================================
+LLControlGroup gSavedSettings("test");
+
+std::string LLUI::getLanguage() { return "en"; }
+std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return "dummy"; }
+
+LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker(name) {}
+std::string LLControlGroup::getString(const std::string& name) { return "dummy"; }
+LLControlGroup::~LLControlGroup() {}
+
+namespace boost {
+ void intrusive_ptr_add_ref(LLCurl::Responder*) {}
+ void intrusive_ptr_release(LLCurl::Responder*) {}
+}
+
+LLCurl::Responder::Responder() {}
+void LLCurl::Responder::completedHeader(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::completedRaw(U32, const std::string&, const LLChannelDescriptors&, const LLIOPipe::buffer_ptr_t& buffer) {}
+void LLCurl::Responder::completed(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::error(U32, std::string const&) {}
+void LLCurl::Responder::errorWithContent(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::result(LLSD const&) {}
+LLCurl::Responder::~Responder() {}
+
+void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32) {}
+void LLHTTPClient::get(const std::string&, boost::intrusive_ptr, const LLSD&, const F32) {}
+
+LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer) : mStreamBuf(channels, buffer) {}
+LLBufferStream::~LLBufferStream() {}
+
+LLBufferStreamBuf::LLBufferStreamBuf(const LLChannelDescriptors&, LLBufferArray*) {}
+#if( LL_WINDOWS || __GNUC__ > 2)
+LLBufferStreamBuf::pos_type LLBufferStreamBuf::seekoff(
+ off_type off,
+ std::ios::seekdir way,
+ std::ios::openmode which)
+#else
+streampos LLBufferStreamBuf::seekoff(
+ streamoff off,
+ std::ios::seekdir way,
+ std::ios::openmode which)
+#endif
+{ return 0; }
+int LLBufferStreamBuf::sync() {return 0;}
+int LLBufferStreamBuf::underflow() {return 0;}
+int LLBufferStreamBuf::overflow(int) {return 0;}
+LLBufferStreamBuf::~LLBufferStreamBuf() {}
+
+S32 LLVersionInfo::getBuild() { return 0; }
+const std::string& LLVersionInfo::getChannel() {static std::string dummy; return dummy;}
+S32 LLVersionInfo::getMajor() { return 0; }
+S32 LLVersionInfo::getMinor() { return 0; }
+S32 LLVersionInfo::getPatch() { return 0; }
--
cgit v1.3
From 91cf878940fafe01c4f2f388fd72b434be9df8f5 Mon Sep 17 00:00:00 2001
From: Jonathan Yap
Date: Mon, 12 Sep 2011 12:27:20 -0400
Subject: STORM-1579 xml formatting issues in Region/Estate floater Enlarged
Covenant display area. Widened Restart Region and Delay Restart to be the
same size as the two buttons above them.
---
indra/newview/skins/default/xui/en/panel_region_covenant.xml | 8 ++++----
indra/newview/skins/default/xui/en/panel_region_debug.xml | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index 2b2ea78fac..3ec6a1959a 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -107,13 +107,13 @@
There is no Covenant provided for this Estate.
diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml
index 15df095efa..59710651e7 100644
--- a/indra/newview/skins/default/xui/en/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml
@@ -190,7 +190,7 @@
name="restart_btn"
tool_tip="Give 2 minute countdown and restart region"
top_pad="5"
- width="130" />
+ width="150" />
+ width="150" />
--
cgit v1.3
From 6c253482a610ae98dfd900c29d6c6ee12708b17e Mon Sep 17 00:00:00 2001
From: Oz Linden
Date: Mon, 12 Sep 2011 16:27:58 -0400
Subject: VWR-25897: remove regexp subexpressions that cause backtracking
(recursion) without changing what is recognized
---
indra/newview/gpu_table.txt | 188 ++++++++++++++++++++++----------------------
1 file changed, 94 insertions(+), 94 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 6ed4e3b7f7..80d193d2a7 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -205,20 +205,20 @@ ATI Radeon X800 .*ATI.*(Radeon|RADEON) X8.* 2 1
ATI Radeon X900 .*ATI.*(Radeon|RADEON) X9.* 2 1
ATI Radeon Xpress .*ATI.*(Radeon|RADEON) (Xpress|XPRESS).* 0 1
ATI Rage 128 .*ATI.*Rage 128.* 0 1
-ATI R350 (9800) .*(ATI)?.*R350.* 1 1
-ATI R580 (X1900) .*(ATI)?.*R580.* 3 1
-ATI RC410 (Xpress 200) .*(ATI)?.*RC410.* 0 0
-ATI RS48x (Xpress 200x) .*(ATI)?.*RS48.* 0 0
-ATI RS600 (Xpress 3200) .*(ATI)?.*RS600.* 0 0
-ATI RV350 (9600) .*(ATI)?.*RV350.* 0 1
-ATI RV370 (X300) .*(ATI)?.*RV370.* 0 1
-ATI RV410 (X700) .*(ATI)?.*RV410.* 1 1
-ATI RV515 .*(ATI)?.*RV515.* 1 1
-ATI RV570 (X1900 GT/PRO) .*(ATI)?.*RV570.* 3 1
-ATI RV380 .*(ATI)?.*RV380.* 0 1
-ATI RV530 .*(ATI)?.*RV530.* 1 1
-ATI RX480 (Xpress 200P) .*(ATI)?.*RX480.* 0 1
-ATI RX700 .*(ATI)?.*RX700.* 1 1
+ATI R350 (9800) .*R350.* 1 1
+ATI R580 (X1900) .*R580.* 3 1
+ATI RC410 (Xpress 200) .*RC410.* 0 0
+ATI RS48x (Xpress 200x) .*RS48.* 0 0
+ATI RS600 (Xpress 3200) .*RS600.* 0 0
+ATI RV350 (9600) .*RV350.* 0 1
+ATI RV370 (X300) .*RV370.* 0 1
+ATI RV410 (X700) .*RV410.* 1 1
+ATI RV515 .*RV515.* 1 1
+ATI RV570 (X1900 GT/PRO) .*RV570.* 3 1
+ATI RV380 .*RV380.* 0 1
+ATI RV530 .*RV530.* 1 1
+ATI RX480 (Xpress 200P) .*RX480.* 0 1
+ATI RX700 .*RX700.* 1 1
AMD ANTILLES (HD 6990) .*(AMD|ATI).*(Antilles|ANTILLES).* 3 1
AMD BARTS (HD 6800) .*(AMD|ATI).*(Barts|BARTS).* 3 1
AMD CAICOS (HD 6400) .*(AMD|ATI).*(Caicos|CAICOS).* 3 1
@@ -230,20 +230,20 @@ AMD JUNIPER (HD 5700) .*(AMD|ATI).*(Juniper|JUNIPER).* 3 1
AMD PARK .*(AMD|ATI).*(Park|PARK).* 3 1
AMD REDWOOD (HD 5500/5600) .*(AMD|ATI).*(Redwood|REDWOOD).* 3 1
AMD TURKS (HD 6500/6600) .*(AMD|ATI).*(Turks|TURKS).* 3 1
-AMD RS780 (HD 3200) .*(AMD|ATI)?.*RS780.* 0 1
-AMD RS880 (HD 4200) .*(AMD|ATI)?.*RS880.* 1 1
-AMD RV610 (HD 2400) .*(AMD|ATI)?.*RV610.* 1 1
-AMD RV620 (HD 3400) .*(AMD|ATI)?.*RV620.* 1 1
-AMD RV630 (HD 2600) .*(AMD|ATI)?.*RV630.* 2 1
-AMD RV635 (HD 3600) .*(AMD|ATI)?.*RV635.* 3 1
-AMD RV670 (HD 3800) .*(AMD|ATI)?.*RV670.* 3 1
-AMD R680 (HD 3870 X2) .*(AMD|ATI)?.*R680.* 3 1
-AMD R700 (HD 4800 X2) .*(AMD|ATI)?.*R700.* 3 1
-AMD RV710 (HD 4300) .*(AMD|ATI)?.*RV710.* 1 1
-AMD RV730 (HD 4600) .*(AMD|ATI)?.*RV730.* 3 1
-AMD RV740 (HD 4700) .*(AMD|ATI)?.*RV740.* 3 1
-AMD RV770 (HD 4800) .*(AMD|ATI)?.*RV770.* 3 1
-AMD RV790 (HD 4800) .*(AMD|ATI)?.*RV790.* 3 1
+AMD RS780 (HD 3200) .*RS780.* 0 1
+AMD RS880 (HD 4200) .*RS880.* 1 1
+AMD RV610 (HD 2400) .*RV610.* 1 1
+AMD RV620 (HD 3400) .*RV620.* 1 1
+AMD RV630 (HD 2600) .*RV630.* 2 1
+AMD RV635 (HD 3600) .*RV635.* 3 1
+AMD RV670 (HD 3800) .*RV670.* 3 1
+AMD R680 (HD 3870 X2) .*R680.* 3 1
+AMD R700 (HD 4800 X2) .*R700.* 3 1
+AMD RV710 (HD 4300) .*RV710.* 1 1
+AMD RV730 (HD 4600) .*RV730.* 3 1
+AMD RV740 (HD 4700) .*RV740.* 3 1
+AMD RV770 (HD 4800) .*RV770.* 3 1
+AMD RV790 (HD 4800) .*RV790.* 3 1
ATI 760G/Radeon 3000 .*ATI.*AMD 760G.* 1 1
ATI 780L/Radeon 3000 .*ATI.*AMD 780L.* 1 1
ATI Radeon DDR .*ATI.*(Radeon|RADEON) ?DDR.* 0 1
@@ -255,7 +255,7 @@ ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1
ATI FirePro M .*ATI.*FirePro M.* 3 1
ATI Technologies .*ATI *Technologies.* 0 1
// This entry is last to work around the "R300" driver problem.
-ATI R300 (9700) .*(ATI)?.*R300.* 1 1
+ATI R300 (9700) .*R300.* 1 1
ATI Radeon .*ATI.*Radeon.* 0 1
Intel X3100 .*Intel.*X3100.* 0 1
Intel 830M .*Intel.*830M 0 0
@@ -311,70 +311,70 @@ NVIDIA G 315 .*NVIDIA *(GeForce)? *(G)? ?315(M)?.* 2 1
NVIDIA G 320M .*NVIDIA *(GeForce)? *(G)? ?320(M)?.* 2 1
NVIDIA G 405 .*NVIDIA *(GeForce)? *(G)? ?405(M)?.* 1 1
NVIDIA G 410M .*NVIDIA *(GeForce)? *(G)? ?410(M)?.* 1 1
-NVIDIA GT 120M .*NVIDIA.*(GeForce)? *GT *120(M)?.* 2 1
+NVIDIA GT 120M .*NVIDIA *(GeForce)? *GT *120(M)?.* 2 1
NVIDIA GT 120 .*NVIDIA.*GT.*120 2 1
-NVIDIA GT 130M .*NVIDIA.*(GeForce)? *GT *130(M)?.* 2 1
-NVIDIA GT 140M .*NVIDIA.*(GeForce)? *GT *140(M)?.* 2 1
-NVIDIA GT 150M .*NVIDIA.*(GeForce)? *GT(S)? *150(M)?.* 2 1
-NVIDIA GT 160M .*NVIDIA.*(GeForce)? *GT *160(M)?.* 2 1
-NVIDIA GT 220M .*NVIDIA.*(GeForce)? *GT *220(M)?.* 2 1
-NVIDIA GT 230M .*NVIDIA.*(GeForce)? *GT *230(M)?.* 2 1
-NVIDIA GT 240M .*NVIDIA.*(GeForce)? *GT *240(M)?.* 2 1
-NVIDIA GT 250M .*NVIDIA.*(GeForce)? *GT *250(M)?.* 2 1
-NVIDIA GT 260M .*NVIDIA.*(GeForce)? *GT *260(M)?.* 2 1
-NVIDIA GT 320M .*NVIDIA.*(GeForce)? *GT *320(M)?.* 2 1
-NVIDIA GT 325M .*NVIDIA.*(GeForce)? *GT *325(M)?.* 0 1
-NVIDIA GT 330M .*NVIDIA.*(GeForce)? *GT *330(M)?.* 3 1
-NVIDIA GT 335M .*NVIDIA.*(GeForce)? *GT *335(M)?.* 1 1
-NVIDIA GT 340M .*NVIDIA.*(GeForce)? *GT *340(M)?.* 2 1
-NVIDIA GT 415M .*NVIDIA.*(GeForce)? *GT *415(M)?.* 2 1
-NVIDIA GT 420M .*NVIDIA.*(GeForce)? *GT *420(M)?.* 2 1
-NVIDIA GT 425M .*NVIDIA.*(GeForce)? *GT *425(M)?.* 3 1
-NVIDIA GT 430M .*NVIDIA.*(GeForce)? *GT *430(M)?.* 3 1
-NVIDIA GT 435M .*NVIDIA.*(GeForce)? *GT *435(M)?.* 3 1
-NVIDIA GT 440M .*NVIDIA.*(GeForce)? *GT *440(M)?.* 3 1
-NVIDIA GT 445M .*NVIDIA.*(GeForce)? *GT *445(M)?.* 3 1
-NVIDIA GT 450M .*NVIDIA.*(GeForce)? *GT *450(M)?.* 3 1
-NVIDIA GT 520M .*NVIDIA.*(GeForce)? *GT *520(M)?.* 3 1
-NVIDIA GT 525M .*NVIDIA.*(GeForce)? *GT *525(M)?.* 3 1
-NVIDIA GT 540M .*NVIDIA.*(GeForce)? *GT *540(M)?.* 3 1
-NVIDIA GT 550M .*NVIDIA.*(GeForce)? *GT *550(M)?.* 3 1
-NVIDIA GT 555M .*NVIDIA.*(GeForce)? *GT *555(M)?.* 3 1
-NVIDIA GTS 160M .*NVIDIA.*(GeForce)? *GT(S)? *160(M)?.* 2 1
-NVIDIA GTS 240 .*NVIDIA.*(GeForce)? *GTS *24.* 3 1
-NVIDIA GTS 250 .*NVIDIA.*(GeForce)? *GTS *25.* 3 1
-NVIDIA GTS 350M .*NVIDIA.*(GeForce)? *GTS *350M.* 3 1
-NVIDIA GTS 360M .*NVIDIA.*(GeForce)? *GTS *360M.* 3 1
-NVIDIA GTS 360 .*NVIDIA.*(GeForce)? *GTS *360.* 3 1
-NVIDIA GTS 450 .*NVIDIA.*(GeForce)? *GTS *45.* 3 1
-NVIDIA GTX 260 .*NVIDIA.*(GeForce)? *GTX *26.* 3 1
-NVIDIA GTX 275 .*NVIDIA.*(GeForce)? *GTX *275.* 3 1
-NVIDIA GTX 270 .*NVIDIA.*(GeForce)? *GTX *27.* 3 1
-NVIDIA GTX 285 .*NVIDIA.*(GeForce)? *GTX *285.* 3 1
-NVIDIA GTX 280 .*NVIDIA.*(GeForce)? *GTX *280.* 3 1
-NVIDIA GTX 290 .*NVIDIA.*(GeForce)? *GTX *290.* 3 1
-NVIDIA GTX 295 .*NVIDIA.*(GeForce)? *GTX *295.* 3 1
-NVIDIA GTX 460M .*NVIDIA.*(GeForce)? *GTX *460M.* 3 1
-NVIDIA GTX 465 .*NVIDIA.*(GeForce)? *GTX *465.* 3 1
-NVIDIA GTX 460 .*NVIDIA.*(GeForce)? *GTX *46.* 3 1
-NVIDIA GTX 470M .*NVIDIA.*(GeForce)? *GTX *470M.* 3 1
-NVIDIA GTX 470 .*NVIDIA.*(GeForce)? *GTX *47.* 3 1
-NVIDIA GTX 480M .*NVIDIA.*(GeForce)? *GTX *480M.* 3 1
-NVIDIA GTX 485M .*NVIDIA.*(GeForce)? *GTX *485M.* 3 1
-NVIDIA GTX 480 .*NVIDIA.*(GeForce)? *GTX *48.* 3 1
-NVIDIA GTX 530 .*NVIDIA.*(GeForce)? *GTX *53.* 3 1
-NVIDIA GTX 550 .*NVIDIA.*(GeForce)? *GTX *55.* 3 1
-NVIDIA GTX 560 .*NVIDIA.*(GeForce)? *GTX *56.* 3 1
-NVIDIA GTX 570 .*NVIDIA.*(GeForce)? *GTX *57.* 3 1
-NVIDIA GTX 580M .*NVIDIA.*(GeForce)? *GTX *580M.* 3 1
-NVIDIA GTX 580 .*NVIDIA.*(GeForce)? *GTX *58.* 3 1
-NVIDIA GTX 590 .*NVIDIA.*(GeForce)? *GTX *59.* 3 1
-NVIDIA C51 .*NVIDIA.*(GeForce)? *C51.* 0 1
-NVIDIA G72 .*NVIDIA.*(GeForce)? *G72.* 1 1
-NVIDIA G73 .*NVIDIA.*(GeForce)? *G73.* 1 1
-NVIDIA G84 .*NVIDIA.*(GeForce)? *G84.* 2 1
-NVIDIA G86 .*NVIDIA.*(GeForce)? *G86.* 3 1
-NVIDIA G92 .*NVIDIA.*(GeForce)? *G92.* 3 1
+NVIDIA GT 130M .*NVIDIA *(GeForce)? *GT *130(M)?.* 2 1
+NVIDIA GT 140M .*NVIDIA *(GeForce)? *GT *140(M)?.* 2 1
+NVIDIA GT 150M .*NVIDIA *(GeForce)? *GT(S)? *150(M)?.* 2 1
+NVIDIA GT 160M .*NVIDIA *(GeForce)? *GT *160(M)?.* 2 1
+NVIDIA GT 220M .*NVIDIA *(GeForce)? *GT *220(M)?.* 2 1
+NVIDIA GT 230M .*NVIDIA *(GeForce)? *GT *230(M)?.* 2 1
+NVIDIA GT 240M .*NVIDIA *(GeForce)? *GT *240(M)?.* 2 1
+NVIDIA GT 250M .*NVIDIA *(GeForce)? *GT *250(M)?.* 2 1
+NVIDIA GT 260M .*NVIDIA *(GeForce)? *GT *260(M)?.* 2 1
+NVIDIA GT 320M .*NVIDIA *(GeForce)? *GT *320(M)?.* 2 1
+NVIDIA GT 325M .*NVIDIA *(GeForce)? *GT *325(M)?.* 0 1
+NVIDIA GT 330M .*NVIDIA *(GeForce)? *GT *330(M)?.* 3 1
+NVIDIA GT 335M .*NVIDIA *(GeForce)? *GT *335(M)?.* 1 1
+NVIDIA GT 340M .*NVIDIA *(GeForce)? *GT *340(M)?.* 2 1
+NVIDIA GT 415M .*NVIDIA *(GeForce)? *GT *415(M)?.* 2 1
+NVIDIA GT 420M .*NVIDIA *(GeForce)? *GT *420(M)?.* 2 1
+NVIDIA GT 425M .*NVIDIA *(GeForce)? *GT *425(M)?.* 3 1
+NVIDIA GT 430M .*NVIDIA *(GeForce)? *GT *430(M)?.* 3 1
+NVIDIA GT 435M .*NVIDIA *(GeForce)? *GT *435(M)?.* 3 1
+NVIDIA GT 440M .*NVIDIA *(GeForce)? *GT *440(M)?.* 3 1
+NVIDIA GT 445M .*NVIDIA *(GeForce)? *GT *445(M)?.* 3 1
+NVIDIA GT 450M .*NVIDIA *(GeForce)? *GT *450(M)?.* 3 1
+NVIDIA GT 520M .*NVIDIA *(GeForce)? *GT *520(M)?.* 3 1
+NVIDIA GT 525M .*NVIDIA *(GeForce)? *GT *525(M)?.* 3 1
+NVIDIA GT 540M .*NVIDIA *(GeForce)? *GT *540(M)?.* 3 1
+NVIDIA GT 550M .*NVIDIA *(GeForce)? *GT *550(M)?.* 3 1
+NVIDIA GT 555M .*NVIDIA *(GeForce)? *GT *555(M)?.* 3 1
+NVIDIA GTS 160M .*NVIDIA *(GeForce)? *GT(S)? *160(M)?.* 2 1
+NVIDIA GTS 240 .*NVIDIA *(GeForce)? *GTS *24.* 3 1
+NVIDIA GTS 250 .*NVIDIA *(GeForce)? *GTS *25.* 3 1
+NVIDIA GTS 350M .*NVIDIA *(GeForce)? *GTS *350M.* 3 1
+NVIDIA GTS 360M .*NVIDIA *(GeForce)? *GTS *360M.* 3 1
+NVIDIA GTS 360 .*NVIDIA *(GeForce)? *GTS *360.* 3 1
+NVIDIA GTS 450 .*NVIDIA *(GeForce)? *GTS *45.* 3 1
+NVIDIA GTX 260 .*NVIDIA *(GeForce)? *GTX *26.* 3 1
+NVIDIA GTX 275 .*NVIDIA *(GeForce)? *GTX *275.* 3 1
+NVIDIA GTX 270 .*NVIDIA *(GeForce)? *GTX *27.* 3 1
+NVIDIA GTX 285 .*NVIDIA *(GeForce)? *GTX *285.* 3 1
+NVIDIA GTX 280 .*NVIDIA *(GeForce)? *GTX *280.* 3 1
+NVIDIA GTX 290 .*NVIDIA *(GeForce)? *GTX *290.* 3 1
+NVIDIA GTX 295 .*NVIDIA *(GeForce)? *GTX *295.* 3 1
+NVIDIA GTX 460M .*NVIDIA *(GeForce)? *GTX *460M.* 3 1
+NVIDIA GTX 465 .*NVIDIA *(GeForce)? *GTX *465.* 3 1
+NVIDIA GTX 460 .*NVIDIA *(GeForce)? *GTX *46.* 3 1
+NVIDIA GTX 470M .*NVIDIA *(GeForce)? *GTX *470M.* 3 1
+NVIDIA GTX 470 .*NVIDIA *(GeForce)? *GTX *47.* 3 1
+NVIDIA GTX 480M .*NVIDIA *(GeForce)? *GTX *480M.* 3 1
+NVIDIA GTX 485M .*NVIDIA *(GeForce)? *GTX *485M.* 3 1
+NVIDIA GTX 480 .*NVIDIA *(GeForce)? *GTX *48.* 3 1
+NVIDIA GTX 530 .*NVIDIA *(GeForce)? *GTX *53.* 3 1
+NVIDIA GTX 550 .*NVIDIA *(GeForce)? *GTX *55.* 3 1
+NVIDIA GTX 560 .*NVIDIA *(GeForce)? *GTX *56.* 3 1
+NVIDIA GTX 570 .*NVIDIA *(GeForce)? *GTX *57.* 3 1
+NVIDIA GTX 580M .*NVIDIA *(GeForce)? *GTX *580M.* 3 1
+NVIDIA GTX 580 .*NVIDIA *(GeForce)? *GTX *58.* 3 1
+NVIDIA GTX 590 .*NVIDIA *(GeForce)? *GTX *59.* 3 1
+NVIDIA C51 .*NVIDIA *(GeForce)? *C51.* 0 1
+NVIDIA G72 .*NVIDIA *(GeForce)? *G72.* 1 1
+NVIDIA G73 .*NVIDIA *(GeForce)? *G73.* 1 1
+NVIDIA G84 .*NVIDIA *(GeForce)? *G84.* 2 1
+NVIDIA G86 .*NVIDIA *(GeForce)? *G86.* 3 1
+NVIDIA G92 .*NVIDIA *(GeForce)? *G92.* 3 1
NVIDIA GeForce .*GeForce 256.* 0 0
NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1
NVIDIA GeForce 3 .*GeForce ?3 ?.* 0 1
@@ -477,10 +477,10 @@ NVIDIA nForce .*NVIDIA *nForce.* 0 0
NVIDIA MCP78 .*NVIDIA *MCP78.* 1 1
NVIDIA Quadro2 .*Quadro2.* 0 1
NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1
-NVIDIA Quadro 2000 M/D .*Quadro.*2000(M|D)?.* 3 1
+NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1
NVIDIA Quadro 4000M .*Quadro.*4000M.* 3 1
NVIDIA Quadro 4000 .*Quadro *4000.* 3 1
-NVIDIA Quadro 50x0 M .*Quadro.*50.0(M)?.* 3 1
+NVIDIA Quadro 50x0 M .*Quadro.*50.0.* 3 1
NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1
NVIDIA Quadro 400 .*Quadro.*400.* 2 1
NVIDIA Quadro 600 .*Quadro.*600.* 2 1
--
cgit v1.3
From 8652b2d1052b989e32f4462a07372901d37f9586 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Tue, 13 Sep 2011 03:05:57 +0300
Subject: STORM-1577 WIP Added API key verification to the translation settings
floater; new layout.
---
indra/newview/llfloatertranslationsettings.cpp | 214 +++++++++++++++++----
indra/newview/llfloatertranslationsettings.h | 22 ++-
indra/newview/lltranslate.cpp | 107 +++++++++--
indra/newview/lltranslate.h | 37 ++++
.../xui/en/floater_translation_settings.xml | 52 +++--
5 files changed, 363 insertions(+), 69 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
index 4079fdf482..ac3e7ac8fa 100644
--- a/indra/newview/llfloatertranslationsettings.cpp
+++ b/indra/newview/llfloatertranslationsettings.cpp
@@ -29,6 +29,7 @@
#include "llfloatertranslationsettings.h"
// Viewer includes
+#include "lltranslate.h"
#include "llviewercontrol.h" // for gSavedSettings
// Linden library includes
@@ -40,6 +41,41 @@
#include "llnotificationsutil.h"
#include "llradiogroup.h"
+class EnteredKeyVerifier : public LLTranslate::KeyVerificationReceiver
+{
+public:
+ EnteredKeyVerifier(LLTranslate::EService service, bool alert)
+ : LLTranslate::KeyVerificationReceiver(service)
+ , mAlert(alert)
+ {
+ }
+
+private:
+ /*virtual*/ void setVerificationStatus(bool ok)
+ {
+ LLFloaterTranslationSettings* floater =
+ LLFloaterReg::getTypedInstance("prefs_translation");
+
+ if (!floater)
+ {
+ llwarns << "Cannot find translation settings floater" << llendl;
+ return;
+ }
+
+ switch (getService())
+ {
+ case LLTranslate::SERVICE_BING:
+ floater->setBingVerified(ok, mAlert);
+ break;
+ case LLTranslate::SERVICE_GOOGLE:
+ floater->setGoogleVerified(ok, mAlert);
+ break;
+ }
+ }
+
+ bool mAlert;
+};
+
LLFloaterTranslationSettings::LLFloaterTranslationSettings(const LLSD& key)
: LLFloater(key)
, mMachineTranslationCB(NULL)
@@ -47,6 +83,11 @@ LLFloaterTranslationSettings::LLFloaterTranslationSettings(const LLSD& key)
, mTranslationServiceRadioGroup(NULL)
, mBingAPIKeyEditor(NULL)
, mGoogleAPIKeyEditor(NULL)
+, mBingVerifyBtn(NULL)
+, mGoogleVerifyBtn(NULL)
+, mOKBtn(NULL)
+, mBingKeyVerified(false)
+, mGoogleKeyVerified(false)
{
}
@@ -58,11 +99,21 @@ BOOL LLFloaterTranslationSettings::postBuild()
mTranslationServiceRadioGroup = getChild("translation_service_rg");
mBingAPIKeyEditor = getChild("bing_api_key");
mGoogleAPIKeyEditor = getChild("google_api_key");
+ mBingVerifyBtn = getChild("verify_bing_api_key_btn");
+ mGoogleVerifyBtn = getChild("verify_google_api_key_btn");
+ mOKBtn = getChild("ok_btn");
mMachineTranslationCB->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
mTranslationServiceRadioGroup->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
- getChild("ok_btn")->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnOK, this));
+ mOKBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnOK, this));
getChild("cancel_btn")->setClickedCallback(boost::bind(&LLFloater::closeFloater, this, false));
+ mBingVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnBingVerify, this));
+ mGoogleVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnGoogleVerify, this));
+
+ mBingAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+ mBingAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onBingKeyEdited, this), NULL);
+ mGoogleAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+ mGoogleAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onGoogleKeyEdited, this), NULL);
center();
return TRUE;
@@ -74,43 +125,78 @@ void LLFloaterTranslationSettings::onOpen(const LLSD& key)
mMachineTranslationCB->setValue(gSavedSettings.getBOOL("TranslateChat"));
mLanguageCombo->setSelectedByValue(gSavedSettings.getString("TranslateLanguage"), TRUE);
mTranslationServiceRadioGroup->setSelectedByValue(gSavedSettings.getString("TranslationService"), TRUE);
- mBingAPIKeyEditor->setText(gSavedSettings.getString("BingTranslateAPIKey"));
- mGoogleAPIKeyEditor->setText(gSavedSettings.getString("GoogleTranslateAPIKey"));
+
+ std::string bing_key = gSavedSettings.getString("BingTranslateAPIKey");
+ if (!bing_key.empty())
+ {
+ mBingAPIKeyEditor->setText(bing_key);
+ mBingAPIKeyEditor->setTentative(FALSE);
+ verifyKey(LLTranslate::SERVICE_BING, bing_key, false);
+ }
+ else
+ {
+ mBingAPIKeyEditor->setTentative(TRUE);
+ mBingKeyVerified = FALSE;
+ }
+
+ std::string google_key = gSavedSettings.getString("GoogleTranslateAPIKey");
+ if (!google_key.empty())
+ {
+ mGoogleAPIKeyEditor->setText(google_key);
+ mGoogleAPIKeyEditor->setTentative(FALSE);
+ verifyKey(LLTranslate::SERVICE_GOOGLE, google_key, false);
+ }
+ else
+ {
+ mGoogleAPIKeyEditor->setTentative(TRUE);
+ mGoogleKeyVerified = FALSE;
+ }
updateControlsEnabledState();
}
-std::string LLFloaterTranslationSettings::getSelectedService() const
+void LLFloaterTranslationSettings::setBingVerified(bool ok, bool alert)
{
- return mTranslationServiceRadioGroup->getSelectedValue().asString();
+ if (alert)
+ {
+ showAlert(ok ? "bing_api_key_verified" : "bing_api_key_not_verified");
+ }
+
+ mBingKeyVerified = ok;
+ updateControlsEnabledState();
}
-void LLFloaterTranslationSettings::showError(const std::string& err_name) const
+void LLFloaterTranslationSettings::setGoogleVerified(bool ok, bool alert)
{
- LLSD args;
- args["MESSAGE"] = getString(err_name);
- LLNotificationsUtil::add("GenericAlert", args);
+ if (alert)
+ {
+ showAlert(ok ? "google_api_key_verified" : "google_api_key_not_verified");
+ }
+
+ mGoogleKeyVerified = ok;
+ updateControlsEnabledState();
}
-bool LLFloaterTranslationSettings::validate() const
+std::string LLFloaterTranslationSettings::getSelectedService() const
{
- bool translate_chat = mMachineTranslationCB->getValue().asBoolean();
- if (!translate_chat) return true;
+ return mTranslationServiceRadioGroup->getSelectedValue().asString();
+}
- std::string service = getSelectedService();
- if (service == "bing" && mBingAPIKeyEditor->getText().empty())
- {
- showError("no_bing_api_key");
- return false;
- }
+std::string LLFloaterTranslationSettings::getEnteredBingKey() const
+{
+ return mBingAPIKeyEditor->getTentative() ? LLStringUtil::null : mBingAPIKeyEditor->getText();
+}
- if (service == "google" && mGoogleAPIKeyEditor->getText().empty())
- {
- showError("no_google_api_key");
- return false;
- }
+std::string LLFloaterTranslationSettings::getEnteredGoogleKey() const
+{
+ return mGoogleAPIKeyEditor->getTentative() ? LLStringUtil::null : mGoogleAPIKeyEditor->getText();
+}
- return true;
+void LLFloaterTranslationSettings::showAlert(const std::string& msg_name) const
+{
+ LLSD args;
+ args["MESSAGE"] = getString(msg_name);
+ LLNotificationsUtil::add("GenericAlert", args);
}
void LLFloaterTranslationSettings::updateControlsEnabledState()
@@ -118,6 +204,8 @@ void LLFloaterTranslationSettings::updateControlsEnabledState()
// Enable/disable controls based on the checkbox value.
bool on = mMachineTranslationCB->getValue().asBoolean();
std::string service = getSelectedService();
+ bool bing_selected = service == "bing";
+ bool google_selected = service == "google";
mTranslationServiceRadioGroup->setEnabled(on);
mLanguageCombo->setEnabled(on);
@@ -128,19 +216,77 @@ void LLFloaterTranslationSettings::updateControlsEnabledState()
getChild("google_api_key_label")->setEnabled(on);
mGoogleAPIKeyEditor->setEnabled(on);
- mBingAPIKeyEditor->setEnabled(on && service == "bing");
- mGoogleAPIKeyEditor->setEnabled(on && service == "google");
+ mBingAPIKeyEditor->setEnabled(on && bing_selected);
+ mGoogleAPIKeyEditor->setEnabled(on && google_selected);
+
+ mBingVerifyBtn->setEnabled(on && bing_selected &&
+ !mBingKeyVerified && !getEnteredBingKey().empty());
+ mGoogleVerifyBtn->setEnabled(on && google_selected &&
+ !mGoogleKeyVerified && !getEnteredGoogleKey().empty());
+
+ mOKBtn->setEnabled(
+ !on || (
+ (bing_selected && mBingKeyVerified) ||
+ (google_selected && mGoogleKeyVerified)
+ ));
}
-void LLFloaterTranslationSettings::onBtnOK()
+void LLFloaterTranslationSettings::verifyKey(int service, const std::string& key, bool alert)
{
- if (validate())
+ LLTranslate::KeyVerificationReceiverPtr receiver =
+ new EnteredKeyVerifier((LLTranslate::EService) service, alert);
+ LLTranslate::verifyKey(receiver, key);
+}
+
+void LLFloaterTranslationSettings::onEditorFocused(LLFocusableElement* control)
+{
+ LLLineEditor* editor = dynamic_cast(control);
+ if (editor)
{
- gSavedSettings.setBOOL("TranslateChat", mMachineTranslationCB->getValue().asBoolean());
- gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
- gSavedSettings.setString("TranslationService", getSelectedService());
- gSavedSettings.setString("BingTranslateAPIKey", mBingAPIKeyEditor->getText());
- gSavedSettings.setString("GoogleTranslateAPIKey", mGoogleAPIKeyEditor->getText());
- closeFloater(false);
+ if (editor->getTentative())
+ {
+ editor->setText(LLStringUtil::null);
+ editor->setTentative(FALSE);
+ }
}
}
+
+void LLFloaterTranslationSettings::onBingKeyEdited()
+{
+ mBingAPIKeyEditor->setTentative(FALSE);
+ setBingVerified(false, false);
+}
+
+void LLFloaterTranslationSettings::onGoogleKeyEdited()
+{
+ mGoogleAPIKeyEditor->setTentative(FALSE);
+ setGoogleVerified(false, false);
+}
+
+void LLFloaterTranslationSettings::onBtnBingVerify()
+{
+ std::string key = getEnteredBingKey();
+ if (!key.empty())
+ {
+ verifyKey(LLTranslate::SERVICE_BING, key);
+ }
+}
+
+void LLFloaterTranslationSettings::onBtnGoogleVerify()
+{
+ std::string key = getEnteredGoogleKey();
+ if (!key.empty())
+ {
+ verifyKey(LLTranslate::SERVICE_GOOGLE, key);
+ }
+}
+
+void LLFloaterTranslationSettings::onBtnOK()
+{
+ gSavedSettings.setBOOL("TranslateChat", mMachineTranslationCB->getValue().asBoolean());
+ gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
+ gSavedSettings.setString("TranslationService", getSelectedService());
+ gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());
+ gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey());
+ closeFloater(false);
+}
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
index 47e2fc80e6..9b47ad72ed 100644
--- a/indra/newview/llfloatertranslationsettings.h
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -29,6 +29,7 @@
#include "llfloater.h"
+class LLButton;
class LLCheckBoxCtrl;
class LLComboBox;
class LLLineEditor;
@@ -41,11 +42,22 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
+ void setBingVerified(bool ok, bool alert);
+ void setGoogleVerified(bool ok, bool alert);
+
private:
std::string getSelectedService() const;
- void showError(const std::string& err_name) const;
- bool validate() const;
+ std::string getEnteredBingKey() const;
+ std::string getEnteredGoogleKey() const;
+ void showAlert(const std::string& msg_name) const;
void updateControlsEnabledState();
+ void verifyKey(int service, const std::string& key, bool alert = true);
+
+ void onEditorFocused(LLFocusableElement* control);
+ void onBingKeyEdited();
+ void onGoogleKeyEdited();
+ void onBtnBingVerify();
+ void onBtnGoogleVerify();
void onBtnOK();
LLCheckBoxCtrl* mMachineTranslationCB;
@@ -53,6 +65,12 @@ private:
LLLineEditor* mBingAPIKeyEditor;
LLLineEditor* mGoogleAPIKeyEditor;
LLRadioGroup* mTranslationServiceRadioGroup;
+ LLButton* mBingVerifyBtn;
+ LLButton* mGoogleVerifyBtn;
+ LLButton* mOKBtn;
+
+ bool mBingKeyVerified;
+ bool mGoogleKeyVerified;
};
#endif // LL_LLFLOATERTRANSLATIONSETTINGS_H
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index a74b252c68..7b99c20a58 100644
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -53,6 +53,15 @@ void LLGoogleTranslationHandler::getTranslateURL(
}
}
+// virtual
+void LLGoogleTranslationHandler::getKeyVerificationURL(
+ std::string& url,
+ const std::string& key) const
+{
+ url = std::string("https://www.googleapis.com/language/translate/v2/languages?key=")
+ + key + "&target=en";
+}
+
// virtual
bool LLGoogleTranslationHandler::parseResponse(
int& status,
@@ -152,6 +161,15 @@ void LLBingTranslarionHandler::getTranslateURL(
}
}
+// virtual
+void LLBingTranslarionHandler::getKeyVerificationURL(
+ std::string& url,
+ const std::string& key) const
+{
+ url = std::string("http://api.microsofttranslator.com/v2/Http.svc/GetLanguagesForTranslate?appId=")
+ + key;
+}
+
// virtual
bool LLBingTranslarionHandler::parseResponse(
int& status,
@@ -251,6 +269,27 @@ void LLTranslate::TranslationReceiver::completedRaw(
}
}
+LLTranslate::KeyVerificationReceiver::KeyVerificationReceiver(EService service)
+: mService(service)
+{
+}
+
+LLTranslate::EService LLTranslate::KeyVerificationReceiver::getService() const
+{
+ return mService;
+}
+
+// virtual
+void LLTranslate::KeyVerificationReceiver::completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+{
+ bool ok = (http_status == 200);
+ setVerificationStatus(ok);
+}
+
//static
void LLTranslate::translateMessage(
TranslationReceiverPtr &receiver,
@@ -261,24 +300,21 @@ void LLTranslate::translateMessage(
std::string url;
receiver->mHandler.getTranslateURL(url, from_lang, to_lang, mesg);
- static const float REQUEST_TIMEOUT = 5;
- static LLSD sHeader;
-
- if (!sHeader.size())
- {
- std::string user_agent = llformat("%s %d.%d.%d (%d)",
- LLVersionInfo::getChannel().c_str(),
- LLVersionInfo::getMajor(),
- LLVersionInfo::getMinor(),
- LLVersionInfo::getPatch(),
- LLVersionInfo::getBuild());
+ LL_DEBUGS("Translate") << "Sending translation request: " << url << LL_ENDL;
+ sendRequest(url, receiver);
+}
- sHeader.insert("Accept", "text/plain");
- sHeader.insert("User-Agent", user_agent);
- }
+// static
+void LLTranslate::verifyKey(
+ KeyVerificationReceiverPtr& receiver,
+ const std::string& key)
+{
+ std::string url;
+ const LLTranslationAPIHandler& handler = getHandler(receiver->getService());
+ handler.getKeyVerificationURL(url, key);
- LL_DEBUGS("Translate") << "Sending translation request: " << url << LL_ENDL;
- LLHTTPClient::get(url, receiver, sHeader, REQUEST_TIMEOUT);
+ LL_DEBUGS("Translate") << "Sending key verification request: " << url << LL_ENDL;
+ sendRequest(url, receiver);
}
//static
@@ -295,15 +331,50 @@ std::string LLTranslate::getTranslateLanguage()
// static
const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
+{
+ EService service = SERVICE_BING;
+
+ std::string service_str = gSavedSettings.getString("TranslationService");
+ if (service_str == "google")
+ {
+ service = SERVICE_GOOGLE;
+ }
+
+ return getHandler(service);
+}
+
+// static
+const LLTranslationAPIHandler& LLTranslate::getHandler(EService service)
{
static LLGoogleTranslationHandler google;
static LLBingTranslarionHandler bing;
- std::string service = gSavedSettings.getString("TranslationService");
- if (service == "google")
+ if (service == SERVICE_GOOGLE)
{
return google;
}
return bing;
}
+
+// static
+void LLTranslate::sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder)
+{
+ static const float REQUEST_TIMEOUT = 5;
+ static LLSD sHeader;
+
+ if (!sHeader.size())
+ {
+ std::string user_agent = llformat("%s %d.%d.%d (%d)",
+ LLVersionInfo::getChannel().c_str(),
+ LLVersionInfo::getMajor(),
+ LLVersionInfo::getMinor(),
+ LLVersionInfo::getPatch(),
+ LLVersionInfo::getBuild());
+
+ sHeader.insert("Accept", "text/plain");
+ sHeader.insert("User-Agent", user_agent);
+ }
+
+ LLHTTPClient::get(url, responder, sHeader, REQUEST_TIMEOUT);
+}
diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h
index 1bf6965fd4..672a56af8b 100644
--- a/indra/newview/lltranslate.h
+++ b/indra/newview/lltranslate.h
@@ -44,6 +44,10 @@ public:
const std::string &to_lang,
const std::string &text) const = 0;
+ virtual void getKeyVerificationURL(
+ std::string &url,
+ const std::string &key) const = 0;
+
virtual bool parseResponse(
int& status,
const std::string& body,
@@ -67,6 +71,9 @@ public:
const std::string &from_lang,
const std::string &to_lang,
const std::string &text) const;
+ /*virtual*/ void getKeyVerificationURL(
+ std::string &url,
+ const std::string &key) const;
/*virtual*/ bool parseResponse(
int& status,
const std::string& body,
@@ -96,6 +103,9 @@ public:
const std::string &from_lang,
const std::string &to_lang,
const std::string &text) const;
+ /*virtual*/ void getKeyVerificationURL(
+ std::string &url,
+ const std::string &key) const;
/*virtual*/ bool parseResponse(
int& status,
const std::string& body,
@@ -112,6 +122,12 @@ class LLTranslate
LOG_CLASS(LLTranslate);
public :
+
+ typedef enum e_service {
+ SERVICE_BING,
+ SERVICE_GOOGLE,
+ } EService;
+
class TranslationReceiver: public LLHTTPClient::Responder
{
public:
@@ -134,13 +150,34 @@ public :
const LLTranslationAPIHandler& mHandler;
};
+ class KeyVerificationReceiver: public LLHTTPClient::Responder
+ {
+ public:
+ EService getService() const;
+
+ protected:
+ KeyVerificationReceiver(EService service);
+ /*virtual*/ void completedRaw(
+ U32 http_status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer);
+ virtual void setVerificationStatus(bool ok) = 0;
+
+ EService mService;
+ };
+
typedef boost::intrusive_ptr TranslationReceiverPtr;
+ typedef boost::intrusive_ptr KeyVerificationReceiverPtr;
static void translateMessage(TranslationReceiverPtr &receiver, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
+ static void verifyKey(KeyVerificationReceiverPtr& receiver, const std::string& key);
static std::string getTranslateLanguage();
private:
static const LLTranslationAPIHandler& getPreferredHandler();
+ static const LLTranslationAPIHandler& getHandler(EService service);
+ static void sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder);
};
#endif
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
index f21f64fcf6..e13c810820 100644
--- a/indra/newview/skins/default/xui/en/floater_translation_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -1,16 +1,19 @@
+ width="480">
- Bing Translator requires and appID to function.
- Google Translate requires an API key to function.
+ Bing appID not verified. Please try again.
+ Google API key not verified. Please try again.
+
+ Bing appID verified.
+ Google API key verified.
+ top_pad="55" />
Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+
- Google [http://code.google.com/apis/language/translate/v2/pricing.html API key]:
+ Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API key]:
+
- ([http://code.google.com/apis/language/translate/v2/pricing.html pricing])
+ [http://code.google.com/apis/language/translate/v2/pricing.html Pricing] | [https://code.google.com/apis/console Stats]
+ RenderGLCoreProfile
+
+ Comment
+ Don't use a compatibility profile OpenGL context. Requires restart. Basic shaders MUST be enabled.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderGlow
Comment
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 7e597fe5dc..bb0679de74 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -518,6 +518,8 @@ static void settings_to_globals()
LLSurface::setTextureSize(gSavedSettings.getU32("RegionTextureSize"));
+ LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLCoreProfile");
+
LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic");
LLVOVolume::sLODFactor = gSavedSettings.getF32("RenderVolumeLODFactor");
LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f;
--
cgit v1.3
From 6c729db78f26703f168bd1586478425d13579a39 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Tue, 20 Sep 2011 18:42:31 +0300
Subject: STORM-1611 FIXED Untrusted link to server release notes.
Fetch server release notes URL suitable for external browsers from the ServerReleaseNotes capability.
---
indra/newview/llfloaterabout.cpp | 231 +++++++++++++++------
.../newview/skins/default/xui/en/floater_about.xml | 6 +-
2 files changed, 170 insertions(+), 67 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 849826bb6b..22f500ba15 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -70,6 +70,22 @@ extern U32 gPacketsIn;
static std::string get_viewer_release_notes_url();
+///----------------------------------------------------------------------------
+/// Class LLServerReleaseNotesURLFetcher
+///----------------------------------------------------------------------------
+class LLServerReleaseNotesURLFetcher : public LLHTTPClient::Responder
+{
+ LOG_CLASS(LLServerReleaseNotesURLFetcher);
+public:
+
+ static void startFetch();
+ /*virtual*/ void completedHeader(U32 status, const std::string& reason, const LLSD& content);
+ /*virtual*/ void completedRaw(
+ U32 status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer);
+};
///----------------------------------------------------------------------------
/// Class LLFloaterAbout
@@ -89,6 +105,11 @@ public:
/// separated so that we can programmatically access the same info.
static LLSD getInfo();
void onClickCopyToClipboard();
+
+ void updateServerReleaseNotesURL(const std::string& url);
+
+private:
+ void setSupportText(const std::string& server_release_notes_url);
};
@@ -122,76 +143,17 @@ BOOL LLFloaterAbout::postBuild()
getChild("copy_btn")->setCommitCallback(
boost::bind(&LLFloaterAbout::onClickCopyToClipboard, this));
-#if LL_WINDOWS
- getWindow()->incBusyCount();
- getWindow()->setCursor(UI_CURSOR_ARROW);
-#endif
- LLSD info(getInfo());
-#if LL_WINDOWS
- getWindow()->decBusyCount();
- getWindow()->setCursor(UI_CURSOR_ARROW);
-#endif
-
- std::ostringstream support;
-
- // Render the LLSD from getInfo() as a format_map_t
- LLStringUtil::format_map_t args;
-
- // allow the "Release Notes" URL label to be localized
- args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
-
- for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
- ii != iend; ++ii)
- {
- if (! ii->second.isArray())
- {
- // Scalar value
- if (ii->second.isUndefined())
- {
- args[ii->first] = getString("none");
- }
- else
- {
- // don't forget to render value asString()
- args[ii->first] = ii->second.asString();
- }
- }
- else
- {
- // array value: build KEY_0, KEY_1 etc. entries
- for (LLSD::Integer n(0), size(ii->second.size()); n < size; ++n)
- {
- args[STRINGIZE(ii->first << '_' << n)] = ii->second[n].asString();
- }
- }
- }
-
- // Now build the various pieces
- support << getString("AboutHeader", args);
- if (info.has("REGION"))
- {
- support << "\n\n" << getString("AboutPosition", args);
- }
- support << "\n\n" << getString("AboutSystem", args);
- support << "\n";
- if (info.has("GRAPHICS_DRIVER_VERSION"))
- {
- support << "\n" << getString("AboutDriver", args);
- }
- support << "\n" << getString("AboutLibs", args);
- if (info.has("COMPILER"))
+ if (gAgent.getRegion())
{
- support << "\n" << getString("AboutCompiler", args);
+ // start fetching server release notes URL
+ setSupportText(LLTrans::getString("RetrievingData"));
+ LLServerReleaseNotesURLFetcher::startFetch();
}
- if (info.has("PACKETS_IN"))
+ else // not logged in
{
- support << '\n' << getString("AboutTraffic", args);
+ setSupportText(LLStringUtil::null);
}
- support_widget->appendText(support.str(),
- FALSE,
- LLStyle::Params()
- .color(LLUIColorTable::instance().getColor("TextFgReadOnlyColor")));
support_widget->blockUndo();
// Fix views
@@ -294,7 +256,6 @@ LLSD LLFloaterAbout::getInfo()
info["HOSTNAME"] = gAgent.getRegion()->getHost().getHostName();
info["HOSTIP"] = gAgent.getRegion()->getHost().getString();
info["SERVER_VERSION"] = gLastVersionChannel;
- info["SERVER_RELEASE_NOTES_URL"] = LLWeb::escapeURL(region->getCapability("ServerReleaseNotes"));
}
// CPU
@@ -389,6 +350,95 @@ void LLFloaterAbout::onClickCopyToClipboard()
support_widget->deselect();
}
+void LLFloaterAbout::updateServerReleaseNotesURL(const std::string& url)
+{
+ setSupportText(url);
+}
+
+void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url)
+{
+#if LL_WINDOWS
+ getWindow()->incBusyCount();
+ getWindow()->setCursor(UI_CURSOR_ARROW);
+#endif
+ LLSD info(getInfo());
+#if LL_WINDOWS
+ getWindow()->decBusyCount();
+ getWindow()->setCursor(UI_CURSOR_ARROW);
+#endif
+
+ if (LLStringUtil::startsWith(server_release_notes_url, "http")) // it's an URL
+ {
+ info["SERVER_RELEASE_NOTES_URL"] = "[" + LLWeb::escapeURL(server_release_notes_url) + " " + LLTrans::getString("ReleaseNotes") + "]";
+ }
+ else
+ {
+ info["SERVER_RELEASE_NOTES_URL"] = server_release_notes_url;
+ }
+
+ LLViewerTextEditor *support_widget =
+ getChild("support_editor", true);
+
+ std::ostringstream support;
+
+ // Render the LLSD from getInfo() as a format_map_t
+ LLStringUtil::format_map_t args;
+
+ for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
+ ii != iend; ++ii)
+ {
+ if (! ii->second.isArray())
+ {
+ // Scalar value
+ if (ii->second.isUndefined())
+ {
+ args[ii->first] = getString("none");
+ }
+ else
+ {
+ // don't forget to render value asString()
+ args[ii->first] = ii->second.asString();
+ }
+ }
+ else
+ {
+ // array value: build KEY_0, KEY_1 etc. entries
+ for (LLSD::Integer n(0), size(ii->second.size()); n < size; ++n)
+ {
+ args[STRINGIZE(ii->first << '_' << n)] = ii->second[n].asString();
+ }
+ }
+ }
+
+ // Now build the various pieces
+ support << getString("AboutHeader", args);
+ if (info.has("REGION"))
+ {
+ support << "\n\n" << getString("AboutPosition", args);
+ }
+ support << "\n\n" << getString("AboutSystem", args);
+ support << "\n";
+ if (info.has("GRAPHICS_DRIVER_VERSION"))
+ {
+ support << "\n" << getString("AboutDriver", args);
+ }
+ support << "\n" << getString("AboutLibs", args);
+ if (info.has("COMPILER"))
+ {
+ support << "\n" << getString("AboutCompiler", args);
+ }
+ if (info.has("PACKETS_IN"))
+ {
+ support << '\n' << getString("AboutTraffic", args);
+ }
+
+ support_widget->clear();
+ support_widget->appendText(support.str(),
+ FALSE,
+ LLStyle::Params()
+ .color(LLUIColorTable::instance().getColor("TextFgReadOnlyColor")));
+}
+
///----------------------------------------------------------------------------
/// LLFloaterAboutUtil
///----------------------------------------------------------------------------
@@ -398,3 +448,52 @@ void LLFloaterAboutUtil::registerFloater()
&LLFloaterReg::build);
}
+
+///----------------------------------------------------------------------------
+/// Class LLServerReleaseNotesURLFetcher implementation
+///----------------------------------------------------------------------------
+// static
+void LLServerReleaseNotesURLFetcher::startFetch()
+{
+ LLViewerRegion* region = gAgent.getRegion();
+ if (!region) return;
+
+ // We cannot display the URL returned by the ServerReleaseNotes capability
+ // because opening it in an external browser will trigger a warning about untrusted
+ // SSL certificate.
+ // So we query the URL ourselves, expecting to find
+ // an URL suitable for external browsers in the "Location:" HTTP header.
+ std::string cap_url = region->getCapability("ServerReleaseNotes");
+ LLHTTPClient::get(cap_url, new LLServerReleaseNotesURLFetcher);
+}
+
+// virtual
+void LLServerReleaseNotesURLFetcher::completedHeader(U32 status, const std::string& reason, const LLSD& content)
+{
+ lldebugs << "Status: " << status << llendl;
+ lldebugs << "Reason: " << reason << llendl;
+ lldebugs << "Headers: " << content << llendl;
+
+ LLFloaterAbout* floater_about = LLFloaterReg::getTypedInstance("sl_about");
+ if (floater_about)
+ {
+ std::string location = content["location"].asString();
+ if (location.empty())
+ {
+ location = floater_about->getString("ErrorFetchingServerReleaseNotesURL");
+ }
+ floater_about->updateServerReleaseNotesURL(location);
+ }
+}
+
+// virtual
+void LLServerReleaseNotesURLFetcher::completedRaw(
+ U32 status,
+ const std::string& reason,
+ const LLChannelDescriptors& channels,
+ const LLIOPipe::buffer_ptr_t& buffer)
+{
+ // Do nothing.
+ // We're overriding just because the base implementation tries to
+ // deserialize LLSD which triggers warnings.
+}
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 3dd394bac1..2580c06344 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -23,7 +23,7 @@ Built with [COMPILER] version [COMPILER_VERSION]
name="AboutPosition">
You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at <nolink>[HOSTNAME]</nolink> ([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
- Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/inspect_object.xml b/indra/newview/skins/minimal/xui/da/inspect_object.xml
deleted file mode 100644
index 78ccc5b869..0000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- Af [CREATOR]
-
-
- Af [CREATOR]
-Owner [OWNER]
-
-
- L$[AMOUNT]
-
-
- Gratis!
-
-
- Berør
-
-
- Sid
-
-
-
- L$30,000
-
-
- Dette er en meget lang beskrivelse af et objekt udformet så den fylder mindst 80 karakterer i længden eller endda nærmere 120 på dette sted. Man kan aldrig vide....
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
deleted file mode 100644
index 1e8301dc4c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
deleted file mode 100644
index ca7b184942..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
deleted file mode 100644
index 35ba27f9e2..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
deleted file mode 100644
index 26b58ce1ab..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
deleted file mode 100644
index a778dedf0b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
deleted file mode 100644
index 0080f7a59e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
deleted file mode 100644
index 9ac296904a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
deleted file mode 100644
index 9d7fc0f223..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
deleted file mode 100644
index 0e90d5a3ae..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
deleted file mode 100644
index 16c225b7d9..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
deleted file mode 100644
index f44369fd84..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_edit.xml b/indra/newview/skins/minimal/xui/da/menu_edit.xml
deleted file mode 100644
index 3752f42b1c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_favorites.xml b/indra/newview/skins/minimal/xui/da/menu_favorites.xml
deleted file mode 100644
index a4793e294c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
deleted file mode 100644
index a9010e99b6..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml b/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
deleted file mode 100644
index 97fbec1ed1..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
deleted file mode 100644
index d96a8a8a17..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
deleted file mode 100644
index 4889230919..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f64a6ad455..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
deleted file mode 100644
index b89d9a5789..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
deleted file mode 100644
index 6ebc40a8dd..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 8da35adb1b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
deleted file mode 100644
index e28842836d..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
deleted file mode 100644
index 887c6484bc..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c3b03232bf..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_inventory.xml
deleted file mode 100644
index 35551318d1..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
deleted file mode 100644
index 07f70d7190..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
deleted file mode 100644
index 4809b24463..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_land.xml b/indra/newview/skins/minimal/xui/da/menu_land.xml
deleted file mode 100644
index 1548f18f89..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_landmark.xml
deleted file mode 100644
index 3cf2ffe375..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_login.xml b/indra/newview/skins/minimal/xui/da/menu_login.xml
deleted file mode 100644
index 0b7a5040ae..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml b/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
deleted file mode 100644
index 186dbd476a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_navbar.xml
deleted file mode 100644
index c04206824a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
deleted file mode 100644
index be532ad406..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
deleted file mode 100644
index 40b35b5fdd..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_object.xml b/indra/newview/skins/minimal/xui/da/menu_object.xml
deleted file mode 100644
index ba62ccf90c..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml b/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
deleted file mode 100644
index 08aeb633b6..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
deleted file mode 100644
index 8b4c776496..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
deleted file mode 100644
index d6a6f2724f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml b/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
deleted file mode 100644
index 5951d3ffb9..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
deleted file mode 100644
index 32c5e6a6c7..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
deleted file mode 100644
index 841f58b619..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
deleted file mode 100644
index 0b9a791530..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
deleted file mode 100644
index 220ab8724f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 9318a0e340..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 2f35ff3c92..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
deleted file mode 100644
index d081f637f2..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks.xml b/indra/newview/skins/minimal/xui/da/menu_picks.xml
deleted file mode 100644
index 81ee900773..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
deleted file mode 100644
index d95071fbbb..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_place.xml b/indra/newview/skins/minimal/xui/da/menu_place.xml
deleted file mode 100644
index b87964ac14..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
deleted file mode 100644
index 7ad2253550..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
deleted file mode 100644
index 5f573c2363..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
deleted file mode 100644
index 13dbcdd42e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
deleted file mode 100644
index 6745007c99..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
deleted file mode 100644
index 188229b586..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
deleted file mode 100644
index cdd3212373..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_slurl.xml
deleted file mode 100644
index a9302e111e..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
deleted file mode 100644
index a1c25fea69..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
deleted file mode 100644
index dbaec62087..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
deleted file mode 100644
index c4d4bb4b5b..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml b/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
deleted file mode 100644
index 3ff31ea232..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
deleted file mode 100644
index 08d1c25d6f..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml b/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
deleted file mode 100644
index 491586f3b4..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_group.xml b/indra/newview/skins/minimal/xui/da/menu_url_group.xml
deleted file mode 100644
index c776159b0a..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_http.xml b/indra/newview/skins/minimal/xui/da/menu_url_http.xml
deleted file mode 100644
index 4398777a39..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
deleted file mode 100644
index 9a7de23e06..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_map.xml b/indra/newview/skins/minimal/xui/da/menu_url_map.xml
deleted file mode 100644
index ff4a4d5174..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
deleted file mode 100644
index e27cf84959..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
deleted file mode 100644
index 0f21e14f66..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
deleted file mode 100644
index dd25db2aa7..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
deleted file mode 100644
index 8d84a138bb..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
deleted file mode 100644
index e0ca7b920d..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_viewer.xml b/indra/newview/skins/minimal/xui/da/menu_viewer.xml
deleted file mode 100644
index 93b247f841..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
deleted file mode 100644
index 63f4b0b388..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
deleted file mode 100644
index 515a15b287..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
deleted file mode 100644
index c0db7b6842..0000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/notifications.xml b/indra/newview/skins/minimal/xui/da/notifications.xml
deleted file mode 100644
index 3d003ea3b3..0000000000
--- a/indra/newview/skins/minimal/xui/da/notifications.xml
+++ /dev/null
@@ -1,1831 +0,0 @@
-
-
-
- Vis ikke dette igen
-
-
- Vælg altid dette
-
-
- Luk
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Din version af [APP_NAME] kan ikke vise den besked den lige modtog. Undersøg venligst at du har den nyester version af klienten installeret.
-
-Fejl detaljer: Beskeden kaldet '[_NAME]' blev ikke fundet i notifications.xml.
-
-
-
- Floater error: Kunne ikke finde følgende kontrol:
-
-[CONTROLS]
-
-
-
- Der er i øjeblikket ingen tilgængelig guide.
-
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
-
- Der opstod en fejl ved opdatering af [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer.
-
-
-
- Kunne ikke tilslutte til [SECOND_LIFE_GRID].
- '[DIAGNOSTIC]'
-Check at Internet forbindelsen fungerer korrekt.
-
-
-
- Besked template [PATH] kunne ikke findes.
-
-
-
- Gem ændringer til nuværende tøj/krops del?
-
-
-
- Der var problemer med upload af teksten til et script af følgende årsager: [REASON]. Prøv igen senere.
-
-
- Der var problemer med at uploade den kompileret script af følgende årsager: [REASON]. Prøv igen senere.
-
-
- Der var et problem med skrivning af animations data. Prøv igen senere.
-
-
- Der var problemer med at uploade billedet til auktionen af følgende årsager: [REASON]
-
-
- Ude af stand til at se indholdet af mere end ét element ad gangen.
-Vælg kun en genstand, og prøv igen.
-
-
- Gem alle ændringer til tøj/krops dele?
-
-
-
- 'Ikke-venner' vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)
-
-
-
- Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer.
-
-
-
- Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.
-Ønsker du at give ændre-rettgheder til [NAME]?
-
-
-
- At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage ALLE genstande, du måtte have i verden. Vær MEGET forsigtig når uddeler denne tilladelse.
-Ønsker du at ændre rettigheder for de valgte beboere?
-
-
-
- Ønsker du at tilbagekalder ændre-rettigheder for [NAME]?
-
-
-
- Vil du tilbagekalde rettighederne for de valgte beboere?
-
-
-
- Kunne ikke oprette gruppe.
-[MESSAGE]
-
-
-
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-
-
-
- Du skal angive et emne for at sende en gruppe besked.
-
-
-
- Du er ved at tilføje medlemmer til rollen som [ROLE_NAME].
-Medlemmer ikke kan fjernes fra denne rolle.
-Medlemmerne skal fratræde sin rolle selv.
-Er du sikker på du vil fortsætte?
-
-
-
- Du er ved at tilføje muligheden for '[ACTION_NAME]' til
-rollen '[ROLE_NAME]'.
-
-*ADVARSEL*
-Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker på, at du ved, hvad du laver, før tildeling af denne evne.
-
-Add this Ability to '[ROLE_NAME]'?
-
-
-
- Du er ved at smide et vedhæng.
- Er du sikker på at du vil fortsætte?
-
-
-
- Du melder dig ind i gruppen [NAME].
-Ønsker du at fortsætte?
-
-
-
- Tilmelding til denne gruppe koster L$[COST].
-Du har ikke nok L$ til denne tilmelding.
-
-
- Oprettelse af denne gruppe vil koste L$100.
-Grupper skal have mindst 2 medlemmer, ellers slettes de for altid.
-Invitér venligst medlemmer indenfor 48 timer.
-
-
-
- ADVARSEL: Ved at vælge 'sælg til enhver' bliver til land tilgængeligt for alle i hele [SECOND_LIFE], også de som ikke er i denne region.
-
-Det valgte antal [LAND_SIZE] m² land bliver sat til salg.
-Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME].
-
-
- Flere overflader er valgt for øjeblikket.
-Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist på overfladerne på objektet.
-Hvis media kun skal vises på en overflade, vælg 'Vælg overflade' og klik på den relevante overflade og klik på tilføj.
-
-
-
- E-mail dette billede med standard emne eller besked?
-
-
-
- Der var et problem med at sende billedet på grund af følgende: [REASON]
-
-
- Kunne ikke vedhæfte objekt.
-Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først.
-
-
- Ups. Noget mangler at blive udfyldt.
-Du skal indtaste brugernavnet for din avatar.
-
-Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en konto nu?
-
-
-
- Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen.
-
-
- Du har valgt at slette media tilknyttet denne overflade.
-Er du sikker på at du vil fortsætte?
-
-
-
- Ikke nok penge til at oprette annonce.
-
-
-
- Slet favorit <nolink>[PICK]</nolink>?
-
-
- Slet valgte sæt?
-
-
-
- Cache vil blive tømt ved næste genstart af [APP_NAME].
-
-
- Cache vil blive fjernet ved næste genstart af [APP_NAME].
-Note: This will clear the cache.
-
-
- Port ændringer vil blive effektueret ved næste genstart af [APP_NAME].
-
-
- Den nye hud vil blive vist ved næste genstart af [APP_NAME].
-
-
- Ændring af sprog vil først have effekt efter genstart af [APP_NAME].
-
-
- Ups, din start region er ikke angivet.
-Indtast venligst navn på region i Start lokation feltet eller vælg "Min sidste lokation" eller "Hjem".
-
-
-
- Din computer opfylder ikke minimumskravene til [APP_NAME]. Du kan risikere nedsat hastighed. Desværre kan [SUPPORT_SITE] ikke tilbyde teknisk support til konfigurationer der ikke er understøttet.
-
-Besøg [_URL] for yderligere information?
-
-
-
- Dit system indeholder et grafikkort som [APP_NAME] ikke kan genkende.
-Dette skyldes ofte nyt hardware som endnu ikke er blevet testet med [APP_NAME]. Kortet vil sandsynligvis virke fint, med det kan være nødvendigt at justere grafik opsætningen.
-(Mig > Indstillinger > Grafik).
-
-
-
- [APP_NAME] gik ned ved inititalisering af grafik drivere.
-Grafik kvaliteten sættes til 'lav' for at undgå typiske problemer med drivere. Dette vil slå visse grafik funktioner fra.
-Vi anbefaler at opdatere driverne til dit grafikkort.
-Grafik kvaliteten kan forbedres i indstillinger > Grafik.
-
-
- Du har ikke rettigheder til at kopiere følgende genstande:
-[ITEMS]
-og du vil miste dem fra din beholdning hvis du forærer dem væk. Er du sikker på at du vil tilbyde disse genstande?
-
-
- Du har ikke tilladelse til at videreføre den valgte mappe.
-
-
- Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME]
-
-
- [EXTRA]
-
-Gå til [_URL] for information om køb af L$?
-
-
- Fejl i WAV fil (chunk size):
-[FILE]
-
-
- Kunne ikke 'forstå' filen: [FILE]
-
-
- Vi kan ikke udfylde dit brugernavn og password. Dette kan ske hvis du ændrer netværksopsætning
-
-
-
- [APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen.
-
-
- Du har tilføjet "[LANDMARK_NAME]" til din [FOLDER_NAME] mappe.
-
-
- Du har allerede et landemærke for denne lokation.
-
-
-
- Ikke muligt at åbne script i objekt uden 'Redigére' rettigheder.
-
-
- Teleport fejlede.
-[REASON]
-
-
- Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
-
-
- Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
-
-
- Beklager, teleport er blokeret lige nu. Prøv igen senere.
-Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem.
-
-
- Beklager, systemet kunne ikke finde landmærke destinationen.
-
-
- Beklager, systemet kunne ikke fuldføre teleport forbindelse.
-Prøv igen om lidt.
-
-
- Beklager, du har ikke adgang til denne teleport destination.
-
-
- Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen.
-
-
- Tekniske problemer hindrer at din teleport kan gennemføres.
-Prøv venligst igen om lidt eller vælg et mindre travlt område.
-
-
- Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
-
-
- Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
-
-
- Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere.
-Prøv evt. igen om lidt.
-
-
- Beholdningssystemet er ikke tilgængelig lige nu.
-
-
- Denne parcel er sat på auktion. Gennemtving ejerskab vil annullere denne auktion og måske irritere nogen beboere hvis bud allerede er afgivet.
-Gennemtving ejerskab?
-
-
- Ikke i stand til at købe land:
-Kan ikke finde region som dette land er i.
-
-
- Du kan ikke lukke 'Køb land' vinduet før [APP_NAME] har vurderet en pris på denne transaktion.
-
-
- Land kunne ikke dedikeres:
-Kunne ikke finde den region land ligger i.
-
-
- Kunne ikke efterlade land:
-Kan ikke finde den region landet ligger i.
-
-
- Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
-
-
- Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
-
-
- Kunne ikke gemme [NAME] i den centrale database.
-Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter.
-
-
- Du er blevet logget af [SECOND_LIFE]
- [MESSAGE]
-
-
-
- Venner kan give tilladelse til at følge hinanden
-på Verdenskortet eller modtage status opdateringer.
-
-Tilbyd venskab til [NAME]?
-
-
-
- Gem det som jeg har på som nyt sæt:
-
-
-
- Gem genstand til beholdning som:
-
-
-
- Nyt navn til sæt:
-
-
-
- Ønsker du at fjerne [NAME] fra din venneliste?
-
-
- Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere. Det anbefales kraftigt at fjerne lænkninger først.
-
-Er du sikker på at du vil slette disse genstande?
-
-
-
- Ved at dedikere denne parcel, vil gruppen skulle have og vedblive med at have nok kreditter til brug af land.
-Dedikeringen vil inkludere samtidige bidrag til gruppen fra '[NAME]'.
-Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parvel sælges, vil salgsprisen blive delt ligeligt mellem gruppe medlemmerne.
-
-Dediker disse [AREA] m² land til gruppen '[GROUP_NAME]'?
-
-
-
-
-
- Den ønskede lokation er ikke tilgængelig lige nu.
-Du er blevet flyttet til en region in nærheden.
-
-
- Din sidste lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
-
-
- Din hjemme lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
-Du kan måske ønske at sætte en ny hjemme lokation.
-
-
- Dit tøj hentes stadig ned.
-Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt.
-
-
-
- [APP_NAME] installationen er færdig.
-
-Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge på.
-Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto?
-
-
- Der er problemer med at koble på. Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID].
-
-Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke på Hjælp for at se [SUPPORT_SITE] siden, eller klikke på Teleport for at forsøge at teleportere hjem.
-
-
- Kunne ikke teleportere til [SLURL] da den er på et andet net ([GRID]) end det nuværende net ([CURRENT_GRID]). Luk venligst din klient og prøv igen.
-
-
-
- Kunne ikke opnå forbindelse til server.
-[REASON]
-
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-
-
- Certifikationsmyndighed for denne server er ikke kendt.
-
-Certifikat information:
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Ønsker du at stole på denne myndighed?
-
-
-
- [NAME] L$ [PRICE] Du har ikke nok L$ til dette.
-
-
- [NAME] har givet dig rettighed til at redigere sine objekter.
-
-
- Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet
-
-
- Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen.
-
-
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at bruge [APP_NAME].
-
-
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at kunne benytte [APP_NAME].
-
-
-
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-
-
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-
-
- En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne opdatering for at bruge [APP_NAME].
-
-Download til dit Program bibliotek?
-
-
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
-
-
- En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
-
-
- Der opstod en fejl ved installation af opdatering.
-Hent og installér venligst den nyeste version fra
-http://secondlife.com/download.
-
-
-
- Vi kunne ikke installere en påkrævet opdatering.
-Du kan ikke logge på før [APP_NAME] er blevet opdateret.
-
-Hent og installer venligst den nyeste klien fra
-http://secondlife.com/download.
-
-
-
- Dette er en påkrævet opdatering af din Second Life installation.
-
-Du kan downloade opdateringen fra http://www.secondlife.com/downloads
-eller du kan installere den nu.
-
-
-
- Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
-
-
-
- Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
-
-
-
- Vi har hentet en påkrævet opdatering.
-Version [VERSION]
-
-Du skal genstarte [APP_NAME] for at installere denne opdatering.
-
-
-
- Du skal genstarte [APP_NAME] for at installere opdateringen.
-
-
-
-
-
-
- Ønsker du at åbne din web browser for at se dette indhold?
-
-
-
- GÃ¥ til [http://secondlife.com/account/ Dashboard] for at administrere din konto?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Ønsker du at åbne 'Scripting Guide' for hjælp til scripting?
-
-
-
- Ønsker du at besøge LSL portalen for hjælp til scripting?
-
-
-
-
-
-
- Er du SIKKER på at du vil sparke alle beboere ud?
-
-
-
- Beklager, men du kan ikke blokere en Linden.
-
-
- Du kan ikke starte en auktion på en parcel som allerede er sat til salg. Fjern 'til salg' muligheden hvis du ønsker at starte en auktion.
-
-
- Du har allerede blokeret dette navn.
-
-
- Sat til 'optaget'.
-Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din 'optaget' besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven.
-
-
-
- Du er oppe på det maksimale antal grupper. Forlad venligst en anden gruppe inden du melder dig ind i denne, eller afvis tilbuddet.
-[NAME] har inviteret dig til en gruppe.
-
-
- Du er oppe på det maksimale antal grupper. Forlad venligst en gruppe inden du melder dig ind i enndnu en gruppe eller opretter en ny.
-
-
-
- Spark beboere ud med hvilken besked?
-
-
- Frys beboeren med hvilken besked?
-
-
- Fjern frysning af beboeren med hvilken besked?
-
-
- Hej [DISPLAY_NAME]!
-
-Præcist som i virkeligheden tager det et stykke tid at vænne sig til et nyt navn. Det kan tage flere dage for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] i objekter, scripts, søgninger m.v.
-
-
- Beklager, du kan ikke ændre dit visningsnavn. Hvis du mener dette skyldes en fejl, kontakt venligst support.
-
-
- Beklager, mavnet er for langt. Visningsnavne kan ikke indholde mere end [LENGTH] karakterer.
-
-Prøv venligst med et kortere navn.
-
-
- Beklager, vi kunne ikke sætte dit visningsnavn. Prøv venligst igen senere.
-
-
- Visningsnavnene du angav matcher ikke. Prøv at taste ind igen.
-
-
- Beklager, du er nødt til at vente længere, inden du kan ændre visningsnavn.
-
-Se mere under http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Prøv venligst igen senere.
-
-
- Beklager, vi kunne ikke sætte dit valgte navn da det indholder et ikke tilladt ord.
-
- Prøv med et andet navn.
-
-
- Visningsnavnet du prøver at angive indeholder ugyldige karakterer.
-
-
- Dit vinsningsnavn skal indeholde andre bogstaver end tegnsætningstegn.
-
-
- [OLD_NAME] ([SLID]) er nu kendt som [NEW_NAME].
-
-
- Tilbyd en teleport til din position med følgende besked?
-
-
-
- Tilkald beboer til din lokation?
-
-
- Er du sikker på at du vil teleportere til <nolink>[LOCATION]</nolink>?
-
-
-
- Teleport til [PICK]?
-
-
-
- Teleport til [CLASSIFIED]?
-
-
-
- Teleport til [HISTORY_ENTRY]?
-
-
-
- Du er i færd med at ændre et Linden ejet estate (mainland, teeen grid, orientation etc.).
-
-Dette er EKSTREMT FARLIGT da det kan ændre beboernes oplevelse fundamentalt. På mainland vil dette betyde ændring af tusinder af regioner og få spaceserveren til at kløjs i det.
-
-Fortsæt?
-
-
- Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder.
-
-Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gå til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating.
-
-
-
- Du har ikke adgang til denne region på grund af din valgte indholdsrating.
-
-GÃ¥ til 'Knowledge Base' for mere information om indholdsratings.
-
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
-
-
-
-
- Du har ikke adgang til denne region på grund af din valgte indholdsrating.
-
-
- Du har ikke adgang til denne region på grund af din opsætning af indholdsrating.
-
-For at få adgang til den ønskede region skal du ændre din indholdsrating. Dette vil give dig ret til at søge og får tilgang til indhold af typen [REGIONMATURITY]. For at omgøre ændringer gå til Mig > Indstillinger > Generelt.
-
-
-
- Din indholdsrating er nu [RATING].
-
-
- Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating.
-
-
-
- Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling..
-
-GÃ¥ venligst til 'Knowledge Base' for yderligere information om indholdsrating.
-
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
-
-
-
-
- Du kan ikke kræve dette land på grund af din indholdsrating.
-
-
- Du kan ikke kræve dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på 'Ændre præference' for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig > Indstillinger > Generelt.
-
-
-
- Du kan ikke købe dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating.
-
-
-
- Du kan ikke købe dette land på grund af din nuværende indholdsrating.
-
-GÃ¥ til 'Knowledge Base' for yderligere detaljer om indholdsrating.
-
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
-
-
-
-
- Du kan ikke købe dette land på grund af din nuværende indholdsrating indstilling.
-
-
- Du kan ikke købe dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på 'Ændre præference' for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig > Indstillinger > Generelt.
-
-
-
- Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen
-
-
- Kunne ikke hente notecard indhold.
-
-
-
- Indeholder denne annonce 'Mature' indhold?
-
-
-
- Indeholder denne gruppe 'Mature' indhold?
-
-
-
- Ratingen for denne region er ændret.
-Det kan tage noget tid inden ændringen slår igennem på kortet.
-
-For at få adgang til voksen regioner, skal beboere være alders-checket, enten via aldersverifikation eller betalingsverifikation.
-
-
- Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne få stemme chat til at fungere skal du opdatere [APP_NAME].
-
-
-
-
-
-
-
-
- Advarsel: 'Betal objekt' klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et 'money()' event er tilføjet.
-
-
-
- GÃ¥ til [http://secondlife.com/account/ Dashboard] for at se konto-historik?
-
-
-
- Er du sikker på at du vil afslutte?
-
-
-
- [QUESTION]
-
-
-
- Benyt dette værktøj til at rapportere krænkninger af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards].
-
-Alle rapporter om krænkninger vil blive undersøgt og behandlet.
-
-
- Kære beboer,
-
-Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt:
-
-(1) Krænkelsesproces. Du må sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter.
-
-(2) DCMA (â€Digital Millennium Copyright Actâ€) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori 'CopyBot or Permissions Exploit'.
-
-Mange tak
-
-Linden Lab
-
-
-
-
-
-
-
-
- Mappen '[FOLDERNAME]' er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker på at du vil slette den?
-
-
-
- Er du sikker på at du ønsker at tømme papirkurven?
-
-
-
- Er du sikker på at du ønsker at slette din historik om besøg, web og søgninger?
-
-
-
- Er du sikker på du vil slette alle cookies?
-
-
- Er du sikker på at du vil slette indholdet i din 'Fundne genstande'?
-
-
-
- Følgende SLurl er blevet kopieret til din udklipsholder:
- [SLURL]
-
-Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser.
-
-
-
-
-
-
-
-
-
- Ikke i stand til at start chat med [RECIPIENT].
-[REASON]
-
-
-
- Du kan ikke købe en genstand mens den er vedhæftet.
-
-
- Vil du automatisk tage det tøj på du er ved at lave?
-
-
-
- Du skal være alders-checket for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden og bekræfte din alder?
-
-[_URL]
-
-
-
- Du skal være betalende medlem for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden for at blive dette?
-
-[_URL]
-
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- Annulléret
-
-
- Annulléret sid
-
-
- Annulléreret vedhæft
-
-
- Erstattet manglende tøj/kropsdele med standard.
-
-
- [NAME] er logget på
-
-
- [NAME] er logget af
-
-
- Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
-
-
- Uploader billeder fra verdenen og www...
-(Tager omkring 5 minutter.)
-
-
- Du betalte L$[AMOUNT] for at uploade.
-
-
- Billeder fra www er uploadet.
-
-
- Billeder fra verdenen er uploadet
-
-
- Terrain.raw downloadet
-
-
- Bevægelsen [NAME] mangler i databasen.
-
-
- Kunne ikke indlæse læse bevægelse [NAME].
-
-
- Landmærke mangler i databasen.
-
-
- Ikke muligt at indlæse landmærke. Prøv venligst igen.
-
-
- Din Caps Lock er aktiveret.
-Det kan påvirke din indtastning af password.
-
-
- Note mangler i databasen.
-
-
- Du har ikke rettigheder til at se denne note.
-
-
- Utilstrækkelige tilladelser til at danne genstanden.
-
-
- Ikke muligt at indlæse note.
-Prøv venligst igen.
-
-
- Script mangler i databasen.
-
-
- Utilstrækkelige tilladelser til at se script.
-
-
- Ikke muligt at indlæse script. Prøv venligst igen.
-
-
- Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt.
-
-
- Du kan ikke ændre beskyttede kategorier.
-
-
- Du kan ikke fjerne beskyttede kategorier.
-
-
- Ikke muligt at købe, imens genstandens data hentes.
-Prøv venligst igen.
-
-
- Ikke muligt at lænke imens genstandens data hentes.
-Prøv venligst igen.
-
-
- Du kan kun købe objekter fra én ejer ad gangen.
-Vælg venligst et enkelt objekt.
-
-
- Dette objekt er ikke til salg.
-
-
- Starter gud-tilstand, niveau [LEVEL]
-
-
- Stopper gud-tilstand, niveau [LEVEL]
-
-
- Du har ikke rettigheder til at kopiere dette.
-
-
- [NAME] modtog dit tilbud til hans/hendes beholdning.
-
-
- [NAME] afviste det du tilbød fra din beholdning.
-
-
- [NAME]: [MESSAGE]
-
-
- Dit visitkort blev accepteret.
-
-
- Dit visitkort blev afvist.
-
-
- Du kan teleportere til lokationer som '[NAME]' ved at åbne Steder panelet til højre på skærmen, og her vælge landemærker fanen.
-Klik på et landemærke og vælg den, derefter
-Click on any landmark to select it, then click 'Teleport' at the bottom of the panel.
-(You can also double-click on the landmark, or right-click it and choose 'Teleport'.)
-
-
- Du kan kontakte beboere som '[NAME]' ved at åbne Personer panelet til højre på skærmen.
-Vælg beboeren fra listen og klik så 'IM' i bundet af panelet.
-(Du kan også dobbelt-klikke på navnet i listen, eller højre-klikke og vælge 'IM').
-
-
- Kan ikke vælge land på tværs af grænser.
-Prøv at vælge mindre stykker land.
-
-
- Visse ord er fjernet fra din søge-sætning på grund af at disse strider mod de generelle 'Community Standards'.
-
-
- Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- Besked om begivenhed:
-
-[NAME]
-[DATE]
-
-
-
- Alle genstande på denne grund, som vil blive overført til køberen af denne grund, er nu oplyst.
-
-* Træer og græs, der vil blive overført, er ikke fremhævet.
-
-
-
- Deaktiverede bevægelser med samme udløser: [NAMES]
-
-
- Det ser ikke ud til at Apples QuickTime software er installeret på dit system.
-Hvis du ønsker at se streaming media på parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player.
-
-
- Ingen Media Plugin blev fundet til at håndtere mime af typen "[MIME_TYPE]". Media af denne type vil ikke være tilgængelig.
-
-
- Følgende Media Plugin has fejlede:
- [PLUGIN]
-
-Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved.
-
-
-
- De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning.
-
-
- Objekterne på den valgte parcel, ejet af [NAME], er blevet returneret til vedkommendes beholdning.
-
-
- Objekterne i den valgte parcel, ejet af beboeren '[NAME]', er blevet returneret til deres ejer.
-
-
- Genstandene på det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger.
-Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere.
-Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet.
-
-
- Genstandene på det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere.
-
-
- Besked fra [NAME]:
-<nolink>[MSG]</nolink>
-
-
- Dette land er åbnet for 'skade'.
-Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation.
-
-
- Dette sted har ikke aktiveret ret til flyvning.
-Du kan ikke flyve her.
-
-
- Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land.
-
-
- Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale.
-
-
- Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller 'rezze' objekter her.
-
-
- En administrator har midlertidig stoppet scripts i denne region.
-
-
- Denne region kører ikke nogen scripts.
-
-
- Dette sted tillader ikke udefra kommende scripts.
-
-Ingen scripts vil virke her, udover de som tilhører ejeren af landet.
-
-
- Du kan kun kræve land i den region du befinder dig i.
-
-
- Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient.
-
-Gå venligst til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating.
-
-
- Du er blokeret i denne region.
-
-
- Du kan ikke tilslutte dig denne 'Teen' region.
-
-
- Du har ikke de rette betalingsoplysninger til at komme ind i denne region.
-
-
- Du skal være aldersgodkendt for at komme ind på denne parcel.
-
-
- Destinations region ikke fundet.
-
-
- Du har ikke adgang til denne destination.
-
-
- Kan ikke skifte til ny region via en blokeret parcel. Prøv en anden vej ind.
-
-
- Du er blevet omdirigeret til en telehub.
-
-
- Kunne ikke teleportere nærmere til destination.
-
-
- Teleport afbrudt.
-
-
- Den region du prøver at komme ind i er fuld for øjeblikket.
-Prøv igen om lidt.
-
-
- Generel fejl.
-
-
- Du blev sendt til en forkert region. Prøv igen.
-
-
- Ikke en gyldig agent ID.
-
-
- Ikke noget gyldig sessions-ID
-
-
- Ingen gyldig kode for kredsløb.
-
-
- Ikke et gyldigt klokkeslæt.
-
-
- Kunne ikke skabe fast forbindelse.
-
-
- Der opstod en intern fejl ved teleportering til din teleport destination.. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
-
-
- Kunne ikke finde et egnet teleport sted i denne region.
-
-
- Der opstod en intern fejl ved beregning af globale koordinater for din teleport forespørgsel. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
-
-
- Kunne ikke finde et gyldigt landingspunkt.
-
-
- No valid parcel could be found.
-
-
- Et objekt ved navn <nolink>[OBJECTFROMNAME]</nolink> ejet af [NAME_SLURL] tilbyder dig <nolink>[ITEM_SLURL]</nolink>. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-
-
-
- [NAME_SLURL] tilbyder dig [ITEM_SLURL]. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-
-
-
- [NAME]
-
-[MESSAGE]
-
-
- [MESSAGE]
-
-
-
- [NAME_SLURL] har tilbudt en teleport til deres lokation:
-
-[MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon>
-
-
-
- Tilbud om teleport sendt til [TO_NAME]
-
-
- [MESSAGE]
-[URL]
-
-
-
- [NAME_SLURL] tilbyder venskab.
-
-[MESSAGE]
-
-(Som udgangspunkt vil I være i stand til at se hinandens online status.)
-
-
-
- Du har tilbudt venskab til [TO_NAME]
-
-
- [NAME_SLURL] tilbyder venskab.
-
-(Som udgangspunkt, vil du være i stand til at se den andens online status)
-
-
- [NAME] accepterede dit tilbud om venskab.
-
-
- [NAME] afviste dit tilbud om venskab.
-
-
- Tilbud om venskab accepteret.
-
-
- Tilbud om venskab afvist.
-
-
- [NAME] tilbyder sit visitkort.
-Dette vil tilføje et bogmærke i din beholdning, så du hurtigt kan sende en personlig besked til denne beboer.
-
-
-
- Denne region vil genstarte om [MINUTES] minutter.
-Hvis du ikke forlader regionen, vil du blive logget af.
-
-
- Denne region genstartes om [SECONDS] sekunder.
-Hvis du ikke forlader regionen, vil du blive logget af.
-
-
- Indlæas websiden [URL]?
-
-[MESSAGE]
-
-Fra objekt: <nolink>[OBJECTNAME]</nolink>, ejer: [NAME]?
-
-
-
- Det lykkedes ikke at finde [TYPE] i databasen.
-
-
- Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen.
-
-
- Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på.
-
-
- '<nolink>[OBJECTNAME]</nolink>', et objekt ved ejet af '[NAME]', ønsker at:
-
-[QUESTIONS]
-Er dette OK?
-
-
-
- Et objeckt med navn '<nolink>[OBJECTNAME]</nolink>', ejet af '[NAME]' ønsker at:
-
-[QUESTIONS]
-Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise dette ønske.
-
-Opfyld dette ønske?
-
-
-
- [NAME]'s '<nolink>[TITLE]</nolink>'
-[MESSAGE]
-
-
-
- [GROUPNAME]'s '<nolink>[TITLE]</nolink>'
-[MESSAGE]
-
-
-
- Tak for din betaling!
-
-Din L$ balance vil blive opdateret når transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I så fald vil beløbet blive krediteret din US$ balance.
-
-Status for din betaling kan ses i din 'Transaction History' side på din [http://secondlife.com/account/ Dashboard]
-
-
- Dine bevælgelsestaster bliver nu håndteret af et objekt.
-Brug piletasterne eller AWSD for at se, hvad de gør.
-Nogle genstande (som skydevåben) kræver at du går ind i musevisning for at bruge dem.
-Tryk på 'M' for at gåre det.
-
-
- Dette er et sandkasse område. Her kan beboere lære ast bygge.
-
-De ting du bygger vil blive slettet senere, så glem ikke at højre-klikke og vælge "Tag" for at tage en kopi af din kreation til din beholdning.
-
-
- Du må kun vælge op til [MAX_SELECT] genstande på denne liste.
-
-
- [NAME] inviterer dig til en stemme-chat samtale.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-
-
-
- [NAME] har fået sendt en besked og blokering er derfor automatisk blevet fjernet.
-
-
- [NAME] har fået givet penge og blokering er derfor automatisk blevet fjernet.
-
-
- [NAME] er blevet tilbud noget fra beholdning og blokering er derfor automatisk blevet fjernet.
-
-
- [NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP].
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-
-
-
- [NAME] har sluttet sig til en stemme-chat med en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-
-
-
- [NAME] inviterer dig til en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-
-
-
- Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nået maksiumum kapacitet. Prøv venligst igen senere.
-
-
- Vi beklager. Dette område har nået sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet område.
-
-
- Du er blevet koblet fra [VOICE_CHANNEL_NAME]. Du vil nu blive koblet til almindelig voice-chat.
-
-
- [VOICE_CHANNEL_NAME] har afsluttet samtalen. Du vil nu blive koblet til almindelig voice-chat.
-
-
- [VOICE_CHANNEL_NAME] har avist dit opkald. Du vil nu blive koblet til almindelig voice-chat.
-
-
- [VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald. Du vil nu blive koblet til almindelig voice-chat.
-
-
- Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere. Du vil nu blive koblet til almindelig voice-chat.
-
-
- Vi laver en stemmekanal til dig. Det kan tage op til et minut.
-
-
- En eller flere af dine stemme "morphs" er udløbet.
-[[URL] Click here] for at forny dit abbonnement.
-
-
- Den aktive stemme "morph" er udløbet og din normale stemme opsætning er genaktiveret.
-[[URL] Click here] for at forny dit abbonnement.
-
-
- En eller flere af dine stemme "morphs" vil udløbe om mindre end [INTERVAL] dage.
-[[URL] Click here] for at forny dit abbonnement.
-
-
- Nye stemme "morphs" er tilgængelige!
-
-
- Kun medlemmer af en bestemt gruppe kan besøge dette område.
-
-
- Du kan ikke komme ind på området. Du er blevet udelukket.
-
-
- Du kan ikke komme ind på området. Du er ikke på adgangslisten.
-
-
- Du har ikke tilladelse til at tilslutte dig stemme-chat på [VOICE_CHANNEL_NAME].
-
-
- En fejl er opstået under forsøget på at koble sig på stemme chatten [VOICE_CHANNEL_NAME]. Pråv venligst senere.
-
-
- Den SLurl du klikkede på understøttes ikke.
-
-
- En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige årsager.
-
-
- Flere SLurls blev modtaget fra en browser i et kort tidsrum.
-De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager.
-
-
- [MESSAGE]
-
-
-
- Er du sikker på at du vil lukke alle personlige samtaler (IM)?
-
-
-
- Vedhæng er blevet gemt.
-
-
- Ikke muligt at finde hjælp om dette element.
-
-
- Server fejl: Media opdatering eller "get" fejlede.
-'[ERROR]'
-
-
-
- Din tekst chat er blevet slukket af moderator.
-
-
-
- Din stemme er blevet slukket af moderatoren.
-
-
-
- Er du sikker på at du vil slette teleport historikken?
-
-
-
- Den valgte knap kan ikke vises lige nu.
-Knappen vil blive vist når der er nok plads til den.
-
-
- Vælg beboere at dele med.
-
-
- Er du sikker på at du vil dele følgende genstande:
-
-<nolink>[ITEMS]</nolink>
-
-Me følgende beboere:
-
-[RESIDENTS]
-
-
-
- Genstande er nu delt.
-
-
- Dedikering til gruppe fejlede.
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' var ikke sky mere, efter [TIME] sekunder.
-
-
- ( [EXISTENCE] seconds alive )
-Du blev færdig med at fremvise dit sæt efter [TIME] sekunder.
-
-
- ( [EXISTENCE] seconds alive )
-Du sendte en opdatering af dit udseende efter [TIME] sekunder.
-[STATUS]
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' blev til "sky".
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' appeared.
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' forsvandt efter [TIME] sekunder som "sky".
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' skiftede til udseende modus.
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' har forladt udseende modus.
-
-
- Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].
-Check venligst din netværks- og firewallsetup.
-
-
-
- Vi har problemer med at oprette forbindelse til din stemme server:
-
-[HOSTID]
-
-Stemme kommunikation vil ikke være tilgængelig.
-Check venligst din netværks- og firewall setup.
-
-
-
- ( [EXISTENCE] sekunder i live )
-Avatar '[NAME]' forsvandt helt "uploaded".
-
-
- ( [EXISTENCE] sekunder i live )
-Du uploadede en [RESOLUTION] "bagt" tekstur til '[BODYREGION]' efter [TIME] sekunder.
-
-
- ( [EXISTENCE] sekunder i live )
-Du opdaterede en [RESOLUTION] "bagt" tekstur for '[BODYREGION]' efter [TIME] sekunder.
-
-
- Er du sikker på at du vil forlade dette opkald?
-
-
-
- Du har valgt at slukke for lyden for alle deltagere i gruppeopkaldet.
-Dette vil også betyde, at alle beboere der slutter sig til opkaldet
-vil have lyden slukket - selv efter de har forladt kaldet.
-
-
-Sluk for alles lyd?
-
-
-
- For at deltage i samtalen tast tekst ind i chat feltet nedenfor.
-
-
- For at rejse dig op og forlad siddeposition, tryk på "Stå op" knappen.
-
-
- Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.
-
-
- Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.
-
-
- For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur.
-
-
- Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.
-
-
- For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op
-
-
- For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå.
-
-
- Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen "Nye ting"
-
-
- Her er din nuværende balance af L$. Klik på Køb L$ for at købe flere Linden dollars.
-
-
- En pop-up blev hindret i at blive vist.
-
-
-
- Hjemmesiden på '<nolink>[HOST_NAME]</nolink>' in realm '[REALM]' kræver et brugernavn og password.
-
-
-
- For at skifte tilstand skal du genstarte programmet.
-
-
-
- Oprettelse og redigering af annoncer er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-
-
-
- Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-
-
-
- Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-
-
-
- Det er kun muligt at se verdenskortet i avanceret tilstand.Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-
-
-
- Stemme kald kan kun benttes i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
-
-
-
- Det er kun mulig at dele i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
-
-
-
- Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
-
-
-
- Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem.
-
-Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE].
-
-
- Hvis du selv ejer land, kan du benytte det til hjemme lokation.
-Ellers kan du se på verdenskortet og finde steder markeret med "Infohub".
-
-
- Du døde og er blevet teleporteret til din hjemmelokation.
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
deleted file mode 100644
index 14250453eb..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
deleted file mode 100644
index bd20ece764..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
deleted file mode 100644
index 23a5e79e22..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
deleted file mode 100644
index b8a7ec0b34..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_login.xml b/indra/newview/skins/minimal/xui/da/panel_login.xml
deleted file mode 100644
index 2e0f726e1a..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- http://join.secondlife.com/
-
-
- http://secondlife.com/account/request.php
-
-
-
-
- Brugernavn:
-
-
-
- Password:
-
-
-
-
- Tilstand:
-
-
-
-
-
-
- Start ved:
-
-
-
-
-
-
-
-
-
- Opret bruger
-
-
- Har du glemt brugernavn eller password?
-
-
- Hjælp til login
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
deleted file mode 100644
index 2ee87433a4..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml
deleted file mode 100644
index 8be4d695bd..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Højre-klik på en person for at tilføje som ven.
-Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor.
-
-
- Fandt du ikke hvad du søgte? Prøv destinationsknappen nedenfor.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
deleted file mode 100644
index ce3a1d8b4e..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml b/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
deleted file mode 100644
index 6e7bdfc188..0000000000
--- a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag
-
-
- Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December
-
-
- Packet Loss
-
-
- BÃ¥ndbredde
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- L$ [AMT]
-
-
-
-
-
-
- 24:00 PST
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/floater_camera.xml b/indra/newview/skins/minimal/xui/de/floater_camera.xml
deleted file mode 100644
index d49c207f98..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- Kamera um Fokus drehen
-
-
- Kamera auf Fokus zoomen
-
-
- Kamera nach oben, unten, links und rechts bewegen
-
-
- Kameramodi
-
-
- Kreisen - Zoomen - Schwenken
-
-
- Ansichten
-
-
- Objekt ansehen
-
-
-
-
-
- Vorderansicht
-
-
-
-
- Seitenansicht
-
-
-
-
- Hinteransicht
-
-
-
-
-
-
- Objektansicht
-
-
-
-
- Mouselook
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml b/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
deleted file mode 100644
index 459dfb66c0..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Wird geladen...
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml b/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
deleted file mode 100644
index 63cf4a6cba..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
deleted file mode 100644
index bbb4114200..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/floater_web_content.xml b/indra/newview/skins/minimal/xui/de/floater_web_content.xml
deleted file mode 100644
index 6ab119eeab..0000000000
--- a/indra/newview/skins/minimal/xui/de/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml b/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
deleted file mode 100644
index 4b8fd8a0ad..0000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
-
- Dies ist meine Second Life-Beschreibung und ich finde sie wirklich gut! Meine Beschreibung ist deshalb so lang, weil ich gerne rede.
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/inspect_object.xml b/indra/newview/skins/minimal/xui/de/inspect_object.xml
deleted file mode 100644
index 72b8235828..0000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- Von [CREATOR]
-
-
- Von [CREATOR]
-Besitzer [OWNER]
-
-
- [AMOUNT] L$
-
-
- Kostenlos!
-
-
- Berühren
-
-
- Sitzen
-
-
-
- von secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-
-
- 30.000 L$
-
-
- Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon mindestens 120 Zeichen lang und länger als der englische Originaltext. Niemand weiß es genau.
-
-
- http://www.superdupertest.com
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
deleted file mode 100644
index f3775a05ec..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
deleted file mode 100644
index 237c92f7d2..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
deleted file mode 100644
index 644fc68ba4..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
deleted file mode 100644
index c036cf5515..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
deleted file mode 100644
index 8aee0be3d2..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
deleted file mode 100644
index 582c76ac94..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
deleted file mode 100644
index 6c4308286a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
deleted file mode 100644
index 05d3dfca9d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
deleted file mode 100644
index 07960a525c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
deleted file mode 100644
index 7fced273a7..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
deleted file mode 100644
index 54b218d22f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_edit.xml b/indra/newview/skins/minimal/xui/de/menu_edit.xml
deleted file mode 100644
index 37f68d68d5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_favorites.xml b/indra/newview/skins/minimal/xui/de/menu_favorites.xml
deleted file mode 100644
index 0d0491d2eb..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
deleted file mode 100644
index 953c0eeed5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml b/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
deleted file mode 100644
index 583ee793be..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
deleted file mode 100644
index 9acf96dc6d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
deleted file mode 100644
index f464b71f4a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 11f93f47b4..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
deleted file mode 100644
index 81ef3b6569..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
deleted file mode 100644
index d123238246..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 72ba7fe41d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
deleted file mode 100644
index 7c47913e30..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
deleted file mode 100644
index 443092319b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 71cff7136b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_inventory.xml
deleted file mode 100644
index 43722e0dcf..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
deleted file mode 100644
index dccee6712d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
deleted file mode 100644
index df86a5cf71..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_land.xml b/indra/newview/skins/minimal/xui/de/menu_land.xml
deleted file mode 100644
index de679da3d8..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_landmark.xml
deleted file mode 100644
index 2aff0eec95..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_login.xml b/indra/newview/skins/minimal/xui/de/menu_login.xml
deleted file mode 100644
index a373e15338..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml b/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
deleted file mode 100644
index 2e0d72c40c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_navbar.xml
deleted file mode 100644
index 5175f34b41..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
deleted file mode 100644
index 99d6428c3f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
deleted file mode 100644
index 0f2784f160..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_object.xml b/indra/newview/skins/minimal/xui/de/menu_object.xml
deleted file mode 100644
index 19057d4228..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml b/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
deleted file mode 100644
index 8b6c558416..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
deleted file mode 100644
index 897154ec56..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
deleted file mode 100644
index 32a65c96fc..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml b/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
deleted file mode 100644
index 160f2f97be..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
deleted file mode 100644
index 84d9d8938c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
deleted file mode 100644
index 76225ba241..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
deleted file mode 100644
index b68597d8aa..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
deleted file mode 100644
index 1db964357f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
deleted file mode 100644
index b6e99edfe1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 0f252ab46d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
deleted file mode 100644
index 1ef020f5e1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks.xml b/indra/newview/skins/minimal/xui/de/menu_picks.xml
deleted file mode 100644
index 9aec4c83b0..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
deleted file mode 100644
index 385ff25b95..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_place.xml b/indra/newview/skins/minimal/xui/de/menu_place.xml
deleted file mode 100644
index d9c85f5b92..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
deleted file mode 100644
index 7c0ff4a46a..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
deleted file mode 100644
index 132d3f6466..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
deleted file mode 100644
index 6af4d644af..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
deleted file mode 100644
index 9f3fcbca1d..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
deleted file mode 100644
index 986c78b318..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
deleted file mode 100644
index 3256aa1a87..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_slurl.xml
deleted file mode 100644
index b2ec017f9f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
deleted file mode 100644
index 68b8e21802..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
deleted file mode 100644
index ff8fb0b181..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
deleted file mode 100644
index 194dd16fd1..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml b/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
deleted file mode 100644
index c00186c13e..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
deleted file mode 100644
index 5b0a724244..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml b/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
deleted file mode 100644
index 9a808088fb..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_group.xml b/indra/newview/skins/minimal/xui/de/menu_url_group.xml
deleted file mode 100644
index 6bd86414bc..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_http.xml b/indra/newview/skins/minimal/xui/de/menu_url_http.xml
deleted file mode 100644
index 30eb1668a5..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
deleted file mode 100644
index dc069df02b..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_map.xml b/indra/newview/skins/minimal/xui/de/menu_url_map.xml
deleted file mode 100644
index 2f6ffcd450..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
deleted file mode 100644
index 90d3763d9c..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
deleted file mode 100644
index 9169bca24f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
deleted file mode 100644
index 72e916b902..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
deleted file mode 100644
index 5d48230ebf..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
deleted file mode 100644
index 4cc1ecc70e..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_viewer.xml b/indra/newview/skins/minimal/xui/de/menu_viewer.xml
deleted file mode 100644
index 67dc618eb0..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
deleted file mode 100644
index 283e454a06..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
deleted file mode 100644
index 80d4ff4d9f..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
deleted file mode 100644
index 695451a105..0000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/notifications.xml b/indra/newview/skins/minimal/xui/de/notifications.xml
deleted file mode 100644
index 9abf8cdbb9..0000000000
--- a/indra/newview/skins/minimal/xui/de/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- [NAME_SLURL] bietet Ihnen [ITEM_SLURL] an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus umzuschalten, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
-
-
-
- Ein Objekt namens <nolink>[OBJECTFROMNAME]</nolink>, das [NAME_SLURL] gehört, bietet Ihnen <nolink>[ITEM_SLURL]</nolink> an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus umzuschalten, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
deleted file mode 100644
index cc45f42169..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
deleted file mode 100644
index 2278bfb699..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
deleted file mode 100644
index 81e6040f84..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
deleted file mode 100644
index 56c2310f2f..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_login.xml b/indra/newview/skins/minimal/xui/de/panel_login.xml
deleted file mode 100644
index 2e82453aab..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- http://de.secondlife.com/registration/
-
-
- http://secondlife.com/account/request.php?lang=de
-
-
-
-
- Benutzername:
-
-
-
- Kennwort:
-
-
-
-
- Modus:
-
-
-
-
-
-
-
-
- Registrieren
-
-
- Benutzernamen oder Kennwort vergessen?
-
-
- Sie brauchen Hilfe?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
deleted file mode 100644
index ee1a543aac..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml
deleted file mode 100644
index 1b6565eb73..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_people.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Klicken Sie mit der rechten Maustaste auf einen Einwohner, um ihn als Freund hinzuzufügen. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“.
-
-
- Sie haben nicht das Richtige gefunden? Klicken Sie unten auf die Schaltfläche „Ziele“.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 652fb7c836..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml b/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
deleted file mode 100644
index 04ed58f944..0000000000
--- a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag
-
-
- Januar:Februar:März:April:Mai:Juni:Juli:August:September:Oktober:November:Dezember
-
-
- Paketverlust
-
-
- Bandbreite
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- [AMT] L$
-
-
-
-
-
-
- 24:00 H PST
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/floater_camera.xml b/indra/newview/skins/minimal/xui/en/floater_camera.xml
deleted file mode 100644
index 4cf792444f..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_camera.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-
-
-
- Rotate Camera Around Focus
-
-
- Zoom Camera Towards Focus
-
-
- Move Camera Up and Down, Left and Right
-
-
- Camera modes
-
-
- Orbit Zoom Pan
-
-
- Preset Views
-
-
- View Object
-
-
-
-
-
-
-
-
- Front View
-
-
-
-
-
-
-
- Side View
-
-
-
-
-
-
-
- Rear View
-
-
-
-
-
-
-
- Object View
-
-
-
-
-
-
-
- Mouselook View
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml b/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
deleted file mode 100644
index 477f210352..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
- Loading...
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml b/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
deleted file mode 100644
index 4862146c94..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index 74ac885202..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml b/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
deleted file mode 100644
index 83b1260620..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/floater_web_content.xml b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
deleted file mode 100644
index 1d9a967d5a..0000000000
--- a/indra/newview/skins/minimal/xui/en/floater_web_content.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml b/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
deleted file mode 100644
index 853d5f8735..0000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
-
-[AGE]
-
-
-[SL_PROFILE]
-
-
-
-
-
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/inspect_object.xml b/indra/newview/skins/minimal/xui/en/inspect_object.xml
deleted file mode 100644
index f424069ec6..0000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_object.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
- By [CREATOR]
-
-By [CREATOR]
-Owner [OWNER]
-
- L$[AMOUNT]
- Free!
- Touch
- Sit
-
-
- by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-
-
-L$30,000
-
-
-
-
-
-
- http://www.superdupertest.com
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
deleted file mode 100644
index 0ce6cbc984..0000000000
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
deleted file mode 100644
index 80cf365c46..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
deleted file mode 100644
index 542a7dc7dc..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
deleted file mode 100644
index 2c81b5a778..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_edit.xml b/indra/newview/skins/minimal/xui/en/menu_edit.xml
deleted file mode 100644
index 747eb3fc6a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_edit.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/indra/newview/skins/minimal/xui/en/menu_favorites.xml b/indra/newview/skins/minimal/xui/en/menu_favorites.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_favorites.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml b/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
deleted file mode 100644
index a11e367d66..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
deleted file mode 100644
index 8ec360a604..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
deleted file mode 100644
index ae8b640d26..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_inventory.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_land.xml b/indra/newview/skins/minimal/xui/en/menu_land.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_land.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_landmark.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_login.xml b/indra/newview/skins/minimal/xui/en/menu_login.xml
deleted file mode 100644
index 62dbce3f56..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_login.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml b/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_navbar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_object.xml b/indra/newview/skins/minimal/xui/en/menu_object.xml
deleted file mode 100644
index 888ce42cf1..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml b/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml b/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
deleted file mode 100644
index 1840ebd491..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks.xml b/indra/newview/skins/minimal/xui/en/menu_picks.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_place.xml b/indra/newview/skins/minimal/xui/en/menu_place.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_slurl.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml b/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
deleted file mode 100644
index d3d9e2ef8a..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml b/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_group.xml b/indra/newview/skins/minimal/xui/en/menu_url_group.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_http.xml b/indra/newview/skins/minimal/xui/en/menu_url_http.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_http.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_map.xml b/indra/newview/skins/minimal/xui/en/menu_url_map.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_viewer.xml b/indra/newview/skins/minimal/xui/en/menu_viewer.xml
deleted file mode 100644
index cd83ea4e99..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_viewer.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
deleted file mode 100644
index 28c4762eaa..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
deleted file mode 100644
index fb19c5eb2c..0000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
deleted file mode 100644
index bdd3c3d4a4..0000000000
--- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/notifications.xml b/indra/newview/skins/minimal/xui/en/notifications.xml
deleted file mode 100644
index 7b7cdb5fc6..0000000000
--- a/indra/newview/skins/minimal/xui/en/notifications.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- [NAME_SLURL] is offering you [ITEM_SLURL]. Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
-
-
-
- An object named <nolink>[OBJECTFROMNAME]</nolink> owned by [NAME_SLURL] is offering you <nolink>[ITEM_SLURL]</nolink>. Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
deleted file mode 100644
index 39d1a90850..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
deleted file mode 100644
index d722c54081..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,557 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
deleted file mode 100644
index abddc59296..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
deleted file mode 100644
index 2cb77bcdf3..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_login.xml b/indra/newview/skins/minimal/xui/en/panel_login.xml
deleted file mode 100644
index 40d2df78e1..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_login.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-
-
-
- http://join.secondlife.com/
-
-
- http://secondlife.eniac15.lindenlab.com/reg-in-client/
-
-
- http://secondlife.com/account/request.php
-
-
-
-
-
-
-Username:
-
-
-
-
-
-
- Password:
-
-
-
-
-
- Mode:
-
-
-
-
-
-
-
-
- Sign up
-
-
- Forgot your username or password?
-
-
- Need help logging in?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
deleted file mode 100644
index 73a8564274..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml
deleted file mode 100644
index 4739f86e95..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_people.xml
+++ /dev/null
@@ -1,571 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Right-click on a Resident to add them as a friend.
-Looking for people to hang out with? Try the Destinations button below.
-
-
- Didn't find what you're looking for? Try the Destinations button below..
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 9f2f41ba31..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml b/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
deleted file mode 100644
index fdd6b5d6ec..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
- Packet Loss
-
-
- Bandwidth
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- L$ [AMT]
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
deleted file mode 100644
index 36ad39abe8..0000000000
--- a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
deleted file mode 100644
index ba148cf421..0000000000
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/floater_camera.xml b/indra/newview/skins/minimal/xui/es/floater_camera.xml
deleted file mode 100644
index 87177e285c..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- Girar la cámara alrededor de lo enfocado
-
-
- Hacer zoom con la cámara en lo enfocado
-
-
- Mover la cámara arriba y abajo, izquierda y derecha
-
-
- Modos de cámara
-
-
- Orbital - Zoom - Panorámica
-
-
- Vistas predefinidas
-
-
- Centrar el objeto
-
-
-
-
-
- De frente
-
-
-
-
- Vista lateral
-
-
-
-
- Desde detrás
-
-
-
-
-
-
- Vista de objeto
-
-
-
-
- Vista subjetiva
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml b/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
deleted file mode 100644
index 67590ebfbb..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Cargando...
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml b/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
deleted file mode 100644
index a7086c2d6d..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
deleted file mode 100644
index 1fee9ab056..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/floater_web_content.xml b/indra/newview/skins/minimal/xui/es/floater_web_content.xml
deleted file mode 100644
index b012809679..0000000000
--- a/indra/newview/skins/minimal/xui/es/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml b/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
deleted file mode 100644
index 1d70fa6a90..0000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
- Ésta es mi descripción de Second Life que, por cierto, me encanta. Pero, por lo que sea, me he enrollado más de la cuenta y la descripción es larguÃsima.
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/inspect_object.xml b/indra/newview/skins/minimal/xui/es/inspect_object.xml
deleted file mode 100644
index d608b4a0f7..0000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- Por [CREATOR]
-
-
- Por [CREATOR]
-Propietario [OWNER]
-
-
- [AMOUNT] L$
-
-
- ¡Gratis!
-
-
- Tocar
-
-
- Sentarme
-
-
-
- 30.000 L$
-
-
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
deleted file mode 100644
index f2367c72a3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
deleted file mode 100644
index b8ae93afd2..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
deleted file mode 100644
index ab76c92d65..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
deleted file mode 100644
index fe7331a108..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
deleted file mode 100644
index 5fb3e51575..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
deleted file mode 100644
index 50f8384b0f..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
deleted file mode 100644
index 62683f3076..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
deleted file mode 100644
index 7541530601..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
deleted file mode 100644
index 56b95bdc3b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
deleted file mode 100644
index 3c0c588284..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
deleted file mode 100644
index ff8ad0977a..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_edit.xml b/indra/newview/skins/minimal/xui/es/menu_edit.xml
deleted file mode 100644
index 96fc9d8881..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_favorites.xml b/indra/newview/skins/minimal/xui/es/menu_favorites.xml
deleted file mode 100644
index 85210d5c49..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
deleted file mode 100644
index 24706eb2c8..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml b/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
deleted file mode 100644
index 6b26ba42c4..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
deleted file mode 100644
index 22a1873234..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
deleted file mode 100644
index c8f6c217cc..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
deleted file mode 100644
index e11e9bdc58..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
deleted file mode 100644
index a5e60ea40b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
deleted file mode 100644
index 492801026c..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 728637de78..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
deleted file mode 100644
index bcdc25894f..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
deleted file mode 100644
index 1a49efb9d0..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 20d99afde1..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_inventory.xml
deleted file mode 100644
index 94ee162bbc..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
deleted file mode 100644
index ba106e8335..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
deleted file mode 100644
index 8e498fefba..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_land.xml b/indra/newview/skins/minimal/xui/es/menu_land.xml
deleted file mode 100644
index b0f15be1b6..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_landmark.xml
deleted file mode 100644
index f69b1539b8..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_login.xml b/indra/newview/skins/minimal/xui/es/menu_login.xml
deleted file mode 100644
index c27d624732..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml b/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
deleted file mode 100644
index 07d1b08572..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_navbar.xml
deleted file mode 100644
index 63e5468020..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
deleted file mode 100644
index 94b281b6c7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
deleted file mode 100644
index 0562d35be7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_object.xml b/indra/newview/skins/minimal/xui/es/menu_object.xml
deleted file mode 100644
index 06121e0c09..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml b/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
deleted file mode 100644
index 7e4578b950..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
deleted file mode 100644
index 3b11bceecf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
deleted file mode 100644
index 4136082a62..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml b/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
deleted file mode 100644
index f6eedd1170..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3899ad9e96..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
deleted file mode 100644
index 51bd2c7208..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
deleted file mode 100644
index 1bd3efb611..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
deleted file mode 100644
index dc1486d879..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 227c5ebe58..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
deleted file mode 100644
index f0fe383c0c..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
deleted file mode 100644
index e4aaa89110..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks.xml b/indra/newview/skins/minimal/xui/es/menu_picks.xml
deleted file mode 100644
index 9da68d7c9b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
deleted file mode 100644
index cc59bf1d29..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_place.xml b/indra/newview/skins/minimal/xui/es/menu_place.xml
deleted file mode 100644
index 675f0699e9..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
deleted file mode 100644
index 4b2f908a06..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
deleted file mode 100644
index bf46eb58e3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
deleted file mode 100644
index eac85de846..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
deleted file mode 100644
index 5ee8c50949..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
deleted file mode 100644
index a04ec75b60..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
deleted file mode 100644
index f517baf566..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_slurl.xml
deleted file mode 100644
index ca19acec6e..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
deleted file mode 100644
index b708f3bc20..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
deleted file mode 100644
index c482907812..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
deleted file mode 100644
index 17e90422a5..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml b/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
deleted file mode 100644
index 095e461734..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
deleted file mode 100644
index 2125fd51b2..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml b/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
deleted file mode 100644
index a089c8f68e..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_group.xml b/indra/newview/skins/minimal/xui/es/menu_url_group.xml
deleted file mode 100644
index 79374b9739..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_http.xml b/indra/newview/skins/minimal/xui/es/menu_url_http.xml
deleted file mode 100644
index 585c059ff3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
deleted file mode 100644
index 13a8711c76..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_map.xml b/indra/newview/skins/minimal/xui/es/menu_url_map.xml
deleted file mode 100644
index f96a0c7170..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
deleted file mode 100644
index 8791a290af..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
deleted file mode 100644
index 9e789ef8ee..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
deleted file mode 100644
index 7147dcd3cf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
deleted file mode 100644
index 4ab47c2f61..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
deleted file mode 100644
index 8f86a91be3..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_viewer.xml b/indra/newview/skins/minimal/xui/es/menu_viewer.xml
deleted file mode 100644
index 776ccfe21b..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
deleted file mode 100644
index 4bffa689e7..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
deleted file mode 100644
index 9d9ce75e53..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
deleted file mode 100644
index 64fd7ce4cf..0000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/notifications.xml b/indra/newview/skins/minimal/xui/es/notifications.xml
deleted file mode 100644
index 78b617c429..0000000000
--- a/indra/newview/skins/minimal/xui/es/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- [NAME_SLURL] te ofrece un/a [ITEM_SLURL]. Para utilizar este Ãtem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reinÃciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
-
-
-
- Un objeto de nombre <nolink>[OBJECTFROMNAME]</nolink>, propiedad de [NAME_SLURL], te ofrece un/a <nolink>[ITEM_SLURL]</nolink>. Para utilizar este Ãtem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reinÃciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
deleted file mode 100644
index 254cf58437..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
deleted file mode 100644
index 0989a3d0a1..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
deleted file mode 100644
index e77156b0d4..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
deleted file mode 100644
index 93b6526f77..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_login.xml b/indra/newview/skins/minimal/xui/es/panel_login.xml
deleted file mode 100644
index 689a71e277..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- http://join.secondlife.com/index.php?lang=es-ES
-
-
- http://secondlife.com/account/request.php?lang=es
-
-
-
-
- Nombre de usuario:
-
-
-
- Contraseña:
-
-
-
-
- Modo:
-
-
-
-
-
-
-
-
- Registrarme
-
-
- ¿Olvidaste el nombre de usuario o la contraseña?
-
-
- ¿Necesitas ayuda para conectarte?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
deleted file mode 100644
index e8e95c3bac..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml
deleted file mode 100644
index a06f3010d7..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Haz clic con el botón derecho del ratón en un residente para agregarlo como amigo.
-¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación.
-
-
- ¿No encuentras lo que buscas? Prueba con el botón Destinos que aparece a continuación.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 775e343dc9..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml b/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
deleted file mode 100644
index ab76d3f994..0000000000
--- a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado
-
-
- Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre
-
-
- Pérdida de paquetes
-
-
- Ancho de banda
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- [AMT] L$
-
-
-
-
-
-
- 24:00 AM PST
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/floater_camera.xml b/indra/newview/skins/minimal/xui/fr/floater_camera.xml
deleted file mode 100644
index 1d62a89ff2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- Faire tourner la caméra autour du point central
-
-
- Zoomer en direction du point central
-
-
- Déplacer la caméra vers le haut et le bas, la gauche et la droite
-
-
- Modes
-
-
- Rotation - Zoom - Panoramique
-
-
- Préréglages
-
-
- Voir l'objet
-
-
-
-
-
- Vue frontale
-
-
-
-
- Vue latérale
-
-
-
-
- Vue arrière
-
-
-
-
-
-
- Vue de l'objet
-
-
-
-
- Vue subjective
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
deleted file mode 100644
index 09d763b809..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Chargement…
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
deleted file mode 100644
index ba171c6363..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
deleted file mode 100644
index 9b1b21c434..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml b/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
deleted file mode 100644
index 71f44b6ec3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml b/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
deleted file mode 100644
index 553646f8e9..0000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
-
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_object.xml b/indra/newview/skins/minimal/xui/fr/inspect_object.xml
deleted file mode 100644
index b66af7a2bf..0000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- Par [CREATOR]
-
-
- De [CREATOR]
-Propriétaire [OWNER]
-
-
- [AMOUNT] L$
-
-
- Gratuit !
-
-
- Toucher
-
-
- M'asseoir
-
-
-
- par secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-
-
- 30Â 000Â L$
-
-
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-
-
- http://www.superdupertest.com
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
deleted file mode 100644
index 7e7993175e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
deleted file mode 100644
index f48513eb2b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
deleted file mode 100644
index 78198fb5a8..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
deleted file mode 100644
index 3bac25c79b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
deleted file mode 100644
index 08d1a20361..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
deleted file mode 100644
index c7ee2e9f88..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
deleted file mode 100644
index bfdc89c5bb..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
deleted file mode 100644
index a4ead48b6b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
deleted file mode 100644
index 4b6907fcc6..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
deleted file mode 100644
index 03cc569704..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
deleted file mode 100644
index 8276d57025..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_edit.xml b/indra/newview/skins/minimal/xui/fr/menu_edit.xml
deleted file mode 100644
index 56669f31e1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml b/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
deleted file mode 100644
index 5f1545fde7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
deleted file mode 100644
index 062dd0f005..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
deleted file mode 100644
index 0db5afedc7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
deleted file mode 100644
index 20af901ddc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
deleted file mode 100644
index 8ef1529e6b..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4d9a103058..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
deleted file mode 100644
index 59f97d8b48..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
deleted file mode 100644
index ecc8cee413..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
deleted file mode 100644
index c3240fa541..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
deleted file mode 100644
index 074bb54cdc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
deleted file mode 100644
index fd48aa4f7d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
deleted file mode 100644
index a9b2883cca..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
deleted file mode 100644
index a2279cf0ac..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
deleted file mode 100644
index fe096b4a7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
deleted file mode 100644
index f28918ae14..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_land.xml b/indra/newview/skins/minimal/xui/fr/menu_land.xml
deleted file mode 100644
index b84daee3ae..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
deleted file mode 100644
index 73eaa4af7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_login.xml b/indra/newview/skins/minimal/xui/fr/menu_login.xml
deleted file mode 100644
index 400c77e51a..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml b/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
deleted file mode 100644
index b9d0a70383..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
deleted file mode 100644
index 08d810b653..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
deleted file mode 100644
index 99e22aeff7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
deleted file mode 100644
index 323bfdbf16..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object.xml b/indra/newview/skins/minimal/xui/fr/menu_object.xml
deleted file mode 100644
index a50a9df4b1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
deleted file mode 100644
index 69f8e88a0d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
deleted file mode 100644
index 5db7f176b5..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
deleted file mode 100644
index 2a7f618e07..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml b/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
deleted file mode 100644
index f91a30f6bb..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
deleted file mode 100644
index a6170a6c16..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
deleted file mode 100644
index eb51b4cf7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
deleted file mode 100644
index 34f949cf2c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
deleted file mode 100644
index f153ed15ae..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 8400ec0a14..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 45f97e062e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
deleted file mode 100644
index 93b90ae61c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks.xml b/indra/newview/skins/minimal/xui/fr/menu_picks.xml
deleted file mode 100644
index 7d7174d43c..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
deleted file mode 100644
index b6cde6d6e2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place.xml b/indra/newview/skins/minimal/xui/fr/menu_place.xml
deleted file mode 100644
index 6b0f4db752..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
deleted file mode 100644
index 92f9e7719d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
deleted file mode 100644
index 3570bdec7f..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
deleted file mode 100644
index 5491c1b3fc..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
deleted file mode 100644
index ddf898b791..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
deleted file mode 100644
index f78db411b3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
deleted file mode 100644
index 46efa30bd6..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
deleted file mode 100644
index ddfa5c0849..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
deleted file mode 100644
index 3dea662cc2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
deleted file mode 100644
index fb4582dbce..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
deleted file mode 100644
index 369680985d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml b/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
deleted file mode 100644
index b6f429aec9..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
deleted file mode 100644
index dc68f40fe7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml b/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
deleted file mode 100644
index 5ed627fbc3..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml b/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
deleted file mode 100644
index de90c3ff7e..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml b/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
deleted file mode 100644
index 5e96352999..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
deleted file mode 100644
index 8ab88b4be7..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml b/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
deleted file mode 100644
index 67e6986f5d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
deleted file mode 100644
index f581c3ef9d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
deleted file mode 100644
index 07b0eeca49..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
deleted file mode 100644
index f4b7e212ca..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
deleted file mode 100644
index e44943cf15..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
deleted file mode 100644
index a5075a2740..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml b/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
deleted file mode 100644
index bd1c077f52..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
deleted file mode 100644
index 187cb4bcd2..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
deleted file mode 100644
index 0ca9fe1879..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
deleted file mode 100644
index 4d88445506..0000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/notifications.xml b/indra/newview/skins/minimal/xui/fr/notifications.xml
deleted file mode 100644
index 05fa03cdc1..0000000000
--- a/indra/newview/skins/minimal/xui/fr/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- [NAME_SLURL] vous offre [ITEM_SLURL]. Pour utiliser cet article, vous devez passer en mode Avancé. L'article se trouve dans votre inventaire. Pour changer de mode, quittez l'application, redémarrez-la, puis sélectionnez un autre mode sur l'écran de connexion.
-
-
-
- Un objet nommé <nolink>[OBJECTFROMNAME]</nolink> appartenant à [NAME_SLURL] vous offre <nolink>[ITEM_SLURL]</nolink>. Pour utiliser cet article, vous devez passer en mode Avancé. L'article se trouve dans votre inventaire. Pour changer de mode, quittez l'application, redémarrez-la, puis sélectionnez un autre mode sur l'écran de connexion.
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
deleted file mode 100644
index 376a7d2b72..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
deleted file mode 100644
index 094d3e66de..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
deleted file mode 100644
index 676fa1d222..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
deleted file mode 100644
index 1643cf3229..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_login.xml b/indra/newview/skins/minimal/xui/fr/panel_login.xml
deleted file mode 100644
index 0869778a54..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- http://fr.secondlife.com/registration/
-
-
- http://secondlife.com/account/request.php?lang=fr
-
-
-
-
- Nom d'utilisateur :
-
-
-
- Mot de passe :
-
-
-
-
- Mode :
-
-
-
-
-
-
-
-
- S'inscrire
-
-
- Nom d'utilisateur ou mot de passe oublié ?
-
-
- Besoin d'aide ?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
deleted file mode 100644
index 45caf2323d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml
deleted file mode 100644
index 427a420b91..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Pour ajouter un résident à votre liste d'amis, cliquez-droit dessus.
-Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous.
-
-
- Vous n'avez pas trouvé ce que vous cherchiez ? Essayez avec le bouton Destinations ci-dessous.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 45efbdc980..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
deleted file mode 100644
index 69aec99e1d..0000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday
-
-
- January:February:March:April:May:June:July:August:September:October:November:December
-
-
- Perte de paquets
-
-
- Bande passante
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- [AMT] L$
-
-
-
-
-
-
- 00h00 PST
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/floater_camera.xml b/indra/newview/skins/minimal/xui/it/floater_camera.xml
deleted file mode 100644
index 3fdf4f48a2..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- Ruota la telecamera Intorno all'Inquadratura
-
-
- Avvicina la telecamera nell'inquadratura
-
-
- Muovi la telecamera su e giù e a sinistra e destra
-
-
- Modalità della fotocamera
-
-
- Ruota visuale - Ingrandisci - Panoramica
-
-
- Visuali predefinite
-
-
- Vedi oggetto
-
-
-
-
-
- Visuale frontale
-
-
-
-
- Visuale laterale
-
-
-
-
- Visuale posteriore
-
-
-
-
-
-
- Visuale oggetto
-
-
-
-
- Visuale soggettiva
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml b/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
deleted file mode 100644
index 18264cdd17..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Caricamento in corso...
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml b/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
deleted file mode 100644
index b1e87290d2..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
deleted file mode 100644
index 4c41df8a62..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/floater_web_content.xml b/indra/newview/skins/minimal/xui/it/floater_web_content.xml
deleted file mode 100644
index 5603e85417..0000000000
--- a/indra/newview/skins/minimal/xui/it/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml b/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
deleted file mode 100644
index 6f52aaef74..0000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
-
-
- Questa è la mia descrizione in second life e penso che sia perfetta. Ma per qualche motivo la mia descrizione è davvero molto lunga, perché mi piace parlare a lungo
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/inspect_object.xml b/indra/newview/skins/minimal/xui/it/inspect_object.xml
deleted file mode 100644
index d8ab10cfda..0000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- Di [CREATOR]
-
-
- Di [CREATOR]
-Proprietario [OWNER]
-
-
- L$ [AMOUNT]
-
-
- Gratis!
-
-
- Tocca
-
-
- Siediti
-
-
-
- L$ 30.000
-
-
- Questa è una descrizione di un oggetto che è molto lunga ed è di almeno 80 caratteri, ma potrebbe essere di 120 caratteri a questo punto. Chi lo sa veramente?
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
deleted file mode 100644
index 46abd7deed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
deleted file mode 100644
index d4d6fd68d0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
deleted file mode 100644
index 0b841d591f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
deleted file mode 100644
index b93b695300..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
deleted file mode 100644
index c2edc32a49..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
deleted file mode 100644
index a4dafd7b5f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
deleted file mode 100644
index ddd6909136..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
deleted file mode 100644
index 699490c8f1..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
deleted file mode 100644
index 1e3658ef45..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
deleted file mode 100644
index 1e16ce8ed1..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
deleted file mode 100644
index 10524ba92d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_edit.xml b/indra/newview/skins/minimal/xui/it/menu_edit.xml
deleted file mode 100644
index ffb20a02e9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_favorites.xml b/indra/newview/skins/minimal/xui/it/menu_favorites.xml
deleted file mode 100644
index 7813ef44b5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
deleted file mode 100644
index 7cfcc6287e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml b/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
deleted file mode 100644
index 3b76fb94a9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
deleted file mode 100644
index 2c2c6c4bc5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
deleted file mode 100644
index 9e471b771c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f78ed8489f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
deleted file mode 100644
index baa4e671b0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
deleted file mode 100644
index 2eacbb09ad..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 1f10734c4a..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
deleted file mode 100644
index ede4a507c0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
deleted file mode 100644
index 4f62ccaa9c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 471640eff5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_inventory.xml
deleted file mode 100644
index f18ddb595c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
deleted file mode 100644
index a2535ce48d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
deleted file mode 100644
index 3d64e4da4e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_land.xml b/indra/newview/skins/minimal/xui/it/menu_land.xml
deleted file mode 100644
index f510078e14..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_landmark.xml
deleted file mode 100644
index b3cddab783..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_login.xml b/indra/newview/skins/minimal/xui/it/menu_login.xml
deleted file mode 100644
index bdf7d2094f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml b/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
deleted file mode 100644
index 561b80e046..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_navbar.xml
deleted file mode 100644
index e42d913a6f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
deleted file mode 100644
index 719a6d3261..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
deleted file mode 100644
index 8c82e30f0e..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_object.xml b/indra/newview/skins/minimal/xui/it/menu_object.xml
deleted file mode 100644
index a172cf3b26..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml b/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
deleted file mode 100644
index 0f347b1a90..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
deleted file mode 100644
index 09fc867d7c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
deleted file mode 100644
index 8166cf20ed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml b/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
deleted file mode 100644
index 1b057c4077..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3a799f44eb..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
deleted file mode 100644
index 30a97a1c72..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
deleted file mode 100644
index d31ddaf1aa..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
deleted file mode 100644
index ab06d28c36..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
deleted file mode 100644
index e0b9ceb63d..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
deleted file mode 100644
index aae2313702..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
deleted file mode 100644
index 7fccd1621a..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks.xml b/indra/newview/skins/minimal/xui/it/menu_picks.xml
deleted file mode 100644
index 000d219ed0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
deleted file mode 100644
index 7fbd5abd57..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_place.xml b/indra/newview/skins/minimal/xui/it/menu_place.xml
deleted file mode 100644
index 5381a4effa..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
deleted file mode 100644
index 0e783c0000..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
deleted file mode 100644
index 23757d47e0..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
deleted file mode 100644
index a458b1a768..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
deleted file mode 100644
index 56b695c597..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
deleted file mode 100644
index 4882a8ac64..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
deleted file mode 100644
index 604f754ba8..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_slurl.xml
deleted file mode 100644
index be83133efc..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
deleted file mode 100644
index 409a62c31b..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
deleted file mode 100644
index 81053fbd65..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
deleted file mode 100644
index c221f141a6..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml b/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
deleted file mode 100644
index 4636ce9929..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
deleted file mode 100644
index 0beb9314de..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml b/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
deleted file mode 100644
index 37755d5749..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_group.xml b/indra/newview/skins/minimal/xui/it/menu_url_group.xml
deleted file mode 100644
index d9a792ebdf..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_http.xml b/indra/newview/skins/minimal/xui/it/menu_url_http.xml
deleted file mode 100644
index e0153d9169..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
deleted file mode 100644
index a45a6bbc10..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_map.xml b/indra/newview/skins/minimal/xui/it/menu_url_map.xml
deleted file mode 100644
index cb7935b3ed..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
deleted file mode 100644
index 763e65f17c..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
deleted file mode 100644
index a032c33585..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
deleted file mode 100644
index b368aa9141..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
deleted file mode 100644
index 355c7dbed9..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
deleted file mode 100644
index c129e61f25..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_viewer.xml b/indra/newview/skins/minimal/xui/it/menu_viewer.xml
deleted file mode 100644
index 8353044f37..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
deleted file mode 100644
index c9a02d8a86..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
deleted file mode 100644
index 7c8eef64e5..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
deleted file mode 100644
index 4a5366091f..0000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/notifications.xml b/indra/newview/skins/minimal/xui/it/notifications.xml
deleted file mode 100644
index 998e38ff5a..0000000000
--- a/indra/newview/skins/minimal/xui/it/notifications.xml
+++ /dev/null
@@ -1,2951 +0,0 @@
-
-
-
- Non mostrare più la prossima volta
-
-
- Scegli sempre questa opzione
-
-
- Chiudi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- La versione di [APP_NAME] non riesce a visualizzare la notifica appena ricevuta. Verifica di avere l'ultima versione del Viewer installata.
-
-Dettagli errore: La notifica denominata '[_NAME]' non è stata trovata in notifications.xml.
-
-
-
- Errore visualizzazione finestra: Non trovati i seguenti controlli:
-
-[CONTROLS]
-
-
-
- Nessun tutorial disponibile al momento.
-
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
-
- Il programma [APP_NAME] ha riscontrato un'errore durante il tentativo di aggiornamento. [http://get.secondlife.com Scarica l'ultima versione] del Viewer.
-
-
-
- Non è possibile collegarsi alla [SECOND_LIFE_GRID].
- '[DIAGNOSTIC]'
-Accertati che la tua connessione Internet stia funzionando correttamente.
-
-
-
- Il modello di messaggio [PATH] non è stato trovato.
-
-
-
- Salva i cambiamenti all'attuale parte del corpo/abito?
-
-
-
- C'è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi.
-
-
- C'è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi.
-
-
- C'è stato un problema di scrittura dati dell'animazione. Riprova più tardi.
-
-
- C'è stato un problema importando la fotografia dell'asta per la seguente ragione: [REASON]
-
-
- Non è possibile vedere il contenuto di più di un elemento per volta.
-Scegli solo un oggetto e riprova.
-
-
- Salva tutte le modifiche alle parti del corpo/abiti?
-
-
-
- Chi non è tuo amico non saprà che hai scelto di ignorare le loro chiamate e IM.
-
-
-
- Nota: Se attivi questa opzione, chiunque usa questo computer può vedere l'elenco di luoghi preferiti.
-
-
-
- Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare, eliminare o prendere QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica a [NAME]?
-
-
-
- Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica ai residenti selezionati?
-
-
-
- Vuoi revocare i diritti di modifica di [NAME]?
-
-
-
- Vuoi revocare i permessi di modifica dati ai residenti selezionati?
-
-
-
- Non è possibile creare il gruppo.
-[MESSAGE]
-
-
-
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-
-
-
- Devi specificare un oggetto per mandare una notice al gruppo.
-
-
-
- Stai per aggiungere dei membri al ruolo [ROLE_NAME].
-Non si possono rimuovere membri da quel ruolo.
-I membri devono dimettersi volontariamente dal ruolo.
-Confermi l'operazione?
-
-
-
- Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- ruoli che hanno più poteri di quelli che hanno correntemente, potenzialmente consentendogli di avere quasi i poteri del proprietario. Accertati di sapere quello che stai facendo prima di assegnare questo potere.
-
-Aggiungi questo potere a '[ROLE_NAME]'?
-
-
-
- Stai per aggiungere il potere '[ACTION_NAME]' al ruolo '[ROLE_NAME]'.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- tutti i poteri, elevandosi al livello di quasi proprietario.
-
-Aggiungi questo potere a '[ROLE_NAME]'?
-
-
-
- Stai per abbandonare il tuo accessorio.
- Vuoi continuare?
-
-
-
- Iscriversi a questo gruppo costa [COST]L$.
-Vuoi proseguire?
-
-
-
- Aderisci al gruppo [NAME].
-Continuare?
-
-
-
- Iscriversi a questo gruppo costa [COST]L$.
-Non hai abbastanza L$ per iscriverti a questo gruppo.
-
-
- La creazione di questo gruppo costerà L$ 100.
-I gruppi devono avere più di un partecipante, o saranno eliminati definitivamente.
-Invita altri partecipanti entro le prossime 48 ore.
-
-
-
- Pagando [COST]L$ puoi entrare in questa terra ('[PARCEL_NAME]') per [TIME] ore. Compri un pass?
-
-
-
- Il prezzo di vendita deve essere superiore a 0L$ se vendi a tutti.
-Seleziona una vendita individuale per vendere a 0L$.
-
-
- Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME].
-
-
-
- ATTENZIONE: Quando selezioni 'vendi a tutti', rendi questo terreno disponibile all'intera comunità di [SECOND_LIFE], anche alle persone che non si trovano in questa regione.
-
-Il terrendo selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il prezzo di vendità sarà [SALE_PRICE]L$ e [NAME] viene autorizzato alla vendita.
-
-
-
- Confermi di volere restituire tutti gli oggetti condivisi con il gruppo '[NAME]' di questo terreno agli inventari dei proprietari precedenti?
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
-
-
-
- Confermi di volere restituire tutti gli oggetti posseduti dal residente '[NAME]' in questo terreno al suo inventario?
-
-Oggetti: [N]
-
-
-
- Confermi di volere restituire tutti gli oggetti posseduti da te in questo terreno, di nuovo nel tuo inventario?
-
-Oggetti: [N]
-
-
-
- Confermi di volere restituire tutti gli oggetti di cui NON sei proprietario in questo terreno all'inventario dei rispettivi proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
-
-
-
- Confermi di volere restituire tutti gli oggetti NON posseduti da [NAME] in questo terreno nell'inventario dei loro proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
-
-
-
- Confermi di volere restituire tutti gli oggetti elencati nell'inventario dei loro proprietari?
-
-
-
- Confermi di volere disabilitare tutti gli oggetti in questa regione?
-
-
-
- Restituisci gli oggetti in questo terreno che NON sono condivisi con il gruppo [NAME] ai loro proprietari?
-
-Oggetti: [N]
-
-
-
- Non è possibile disabilitare gli script.
-L'intera regione ha l'abilitazione danni.
-Gli script devono essere autorizzati all'esecuzione affinchè le armi funzionino.
-
-
- Sono state selezionate più facce.
-Se prosegui con questa azione, sulle diverse facce dell'oggetto verranno definite sessioni multimediali distinte.
-Per collocare il media su una sola faccia, scegli Seleziona faccia, clicca su una faccia e clicca su Aggiungi.
-
-
-
- Devi essere dentro il terreno per impostare il suo Punto di Atterraggio.
-
-
- Introduci un indirizzo email per il destinatario/i.
-
-
- Introduci il tuo indirizzo email.
-
-
- Invia la foto via email con soggetto o messaggio predefinito?
-
-
-
- Errore nell'elaborazione della fotografia.
-
-
- Errore nella codifica della fotografia.
-
-
- C'è stato un problema inviando la fotografia per il seguente motivo: [REASON]
-
-
- C'è stato un problema importando la foto del rapporto per il seguente motivo: [REASON]
-
-
- Devi accettare i Termini di Servizio prima di proseguire il collegamento con [SECOND_LIFE].
-
-
- Non è stato possibile indossare un equipaggiamento.
-La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attachment.
-
-
- Non puoi indossare abiti e parti del corpo che sono nel cestino
-
-
- L'oggetto non può essere collegato.
-Superato il limite di oggetti collegati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
-
-
- Non puoi indossare quell'elemento perchè non è ancora stato caricato. Riprova fra un minuto.
-
-
- Spiacenti. Un campo è vuoto.
-Inserisci il Nome utente del tuo avatar.
-
-Devi avere un account per entrare in [SECOND_LIFE]. Vuoi crearne uno adesso?
-
- https://join.secondlife.com/index.php?lang=it-IT
-
-
-
-
- Immetti il nome utente oppure sia il nome che il cognome del tuo avatar nel campo del nome utente, quindi effettua nuovamente l'accesso.
-
-
- Cancella annuncio '[NAME]'?
-Non ci sono rimborsi per la tariffa pagata.
-
-
-
- Hai selezionato la cancellazione del media associato a questa faccia.
-Vuoi continuare?
-
-
-
- Salva le modifiche all'annuncio [NAME]?
-
-
-
- Denaro insufficiente per creare un'inserzione.
-
-
-
- Elimina preferito <nolink>[PICK]</nolink>?
-
-
-
- Elimina il vestiario selezionato?
-
-
-
- Vai alla pagina degli eventi di [SECOND_LIFE]?
-
- http://secondlife.com/events/?lang=it-IT
-
-
-
-
- Scegli una proposta da vedere.
-
-
- Scegli un item storico da vedere.
-
-
- La cache verrà cancellata dopo il riavvio di [APP_NAME].
-
-
- La cache verrà spostata dopo il riavvio di [APP_NAME].
-Nota: questa operazione cancellerà la cache.
-
-
- Le impostazioni della porta avranno effetto dopo il riavvio di [APP_NAME].
-
-
- La nuova pelle comparirà dopo il riavvio di [APP_NAME].
-
-
- La modifica della lingua avrà effetto dopo il riavvio di [APP_NAME].
-
-
- Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell'asta oppure fai un'offerta?
-
-
-
- Salva le modifiche?
-
-
-
- Il salvataggio della Gesture è fallito.
-La gesture ha troppi passi.
-Prova a togliere qualche passo e quindi risalva.
-
-
- Il salvataggio della gesture è fallito. Riprova fra un minuto.
-
-
- Non è possibile salvare la gesture perchè non è stato trovato l'oggetto o l'inventario associato.
-L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-
-
- C'è stato un problema salvando la gesture a causa del seguente motivo: [REASON]. Riprova a salvare la gesture più tardi.
-
-
- Non è possibile salvare la notecard perchè non è stato trovato l'oggetto o l'inventario associato.
-L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-
-
- C'è stato un problema salvando la notecard a causa del seguente motivo: [REASON]. Riprova a salvare la notecard più tardi.
-
-
- Non è stato possibile annullare tutti i cambiamenti nella tua versione dello script.
-Vuoi ripristinare l'ultima versione salvata sul server?
-(**Attenzione** Questa operazione non è reversibile)
-
-
-
- C'è stato un problema salvando lo script a causa del seguente motivo : [REASON]. Riprova a salvare lo script più tardi.
-
-
- Non è stato possibile salvare lo script perchè l'oggetto che lo contiene non è stato trovato.
-L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-
-
- C'è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi.
-
-
- La tua Regione di inizio non è stata definita.
-Per scegliere il luogo dove vuoi trovarti all'accesso, digita il nome della regione nel campo del luogo di partenza oppure scegli La mia ultima Ubicazione o Casa mia.
-
-
-
- Non è stato possibile lanciare o fermare lo script perchè l'oggetto che lo contiene non è stato trovato.
-L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-
-
- Non è stato possibile scaricare il file
-
-
- Non è stato possibile scrivere il file [[FILE]]
-
-
- Ti informiamo che il tuo computer non dispone dei requisiti minimi di sistema per [APP_NAME]. Il funzionamento può pertanto risultare ridotto. Purtroppo la pagina [SUPPORT_SITE] non può fornire assistenza tecnica in caso di problemi dovuti a configurazioni di sistema non compatibili.
-
-Visitare [_URL] per ulteriori informazioni?
-
- http://secondlife.com/support/sysreqs.php?lang=it
-
-
-
-
- Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
-Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME]. Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
-(Io > Preferenze > Grafica).
-
-
-
- L'esecuzione di [APP_NAME] si è interrotta durante l'inizializzazione dei driver grafici.
-La qualità grafica verrà impostata a livello basso per evitare alcuni errori comuni di driver. Alcune funzionalità grafiche saranno disattivate.
-Si consiglia di aggiornare i driver della scheda grafica.
-La qualità grafica può essere aumentata in Preferenze > Grafica.
-
-
- La regione [REGION] non consente di terraformare.
-
-
- Non hai l'autorizzazione a copiare i seguenti oggetti:
-[ITEMS]
-e se li dai via, verranno eliminati dal tuo inventario. Sicuro di volere offrire questi oggetti?
-
-
-
- Impossibile consegnare l'elemento dell'inventario.
-
-
- La transazione è stata annullata.
-
-
- Non è possibile dare più di 42 elementi in un singolo trasferimento di inventario.
-
-
- Non hai i permessi di trasferimento per gli elementi selezionati.
-
-
- Non hai i permessi di copia per copiare [COUNT]
-degli elementi selezionati. Perderai questi elementi dal tuo inventario.
-Vuoi veramente perdere questi elementi?
-
-
-
- Non hai i permessi per trasferire la cartella selezionata.
-
-
- Immobilizza questo avatar?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
-
-
-
- Immobilizza [AVATAR_NAME]?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
-
-
-
- Espelli [AVATAR_NAME] dal tuo terreno?
-
-
-
- Espelli questo avatar dal tuo terreno?
-
-
-
- Espelli [AVATAR_NAME] dal tuo terreno?
-
-
-
- Hai espulso [AVATAR_NAME] dal gruppo [GROUP_NAME]
-
-
- ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti.
-
-
- ERRORE DI ACQUISIZIONE: Gli oggetti sono a cavallo di più di una regione.
-Sposta tutti gli oggetti che vuoi acquisire su una sola regione.
-
-
- [EXTRA]
-
-Vai su [_URL] per informazioni sull'acquisto di L$?
-
- http://secondlife.com/app/currency/?lang=it-IT
-
-
-
-
- Impossibile unire questi [COUNT] oggetti.
-Puoi unire al massimo [MAX] oggetti.
-
-
- Puoi unire soltanto un insieme completo di oggetti, e devi selezionare più di un oggetto.
-
-
- Impossibile unire perchè non hai il diritto di modifica su tutti gli oggetti.
-
-Accertati che nessuno sia bloccato e che li possiedi tutti.
-
-
- Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario.
-
-Accertati di possedere tutti gli oggetti selezionati.
-
-
- Manca l'estensione per il file: '[FILE]'
-
-Accertati che il file abbia una estensione corretta.
-
-
- L'estensione [EXTENSION] del file non è valida
-Attese [VALIDS]
-
-
-
- Impossibile aprire in lettura il file di suono importato:
-[FILE]
-
-
- Il file audio non sembra essere di tipo RIFF WAVE:
-[FILE]
-
-
- Il file audio non sembra essere di tipo PCM WAVE:
-[FILE]
-
-
- Il file ha un numero sbagliato di canali (deve essere mono oppure stereo):
-[FILE]
-
-
- Il file non sembra essere della frequenza di campionamento supportata (deve essere 44.1k):
-[FILE]
-
-
- Il file non sembra avere una dimensione della parola supportata (deve essere a 8 o a 16 bit):
-[FILE]
-
-
- Impossibile trovare il frammento 'data' nell'intestazione WAV:
-[FILE]
-
-
- Dimensione chunk nel file WAV:
-[FILE]
-
-
- Il file audio è troppo lungo (deve essere al massimo 10 secondi):
-[FILE]
-
-
- Problemi con il file [FILE]:
-
-[ERROR]
-
-
- Impossibile aprire in scrittura il file temporaneamente compresso: [FILE]
-
-
- Errore di codifica Vorbis sconosciuta per: [FILE]
-
-
- Impossibile codificare il file: [FILE]
-
-
- Impossibile inserire nome utente e password. Ciò può succedere alla modifica delle impostazioni di rete.
-
-
-
- File risorsa corrotto: [FILE]
-
-
- Versione di risorsa Linden sconosciuta nel file: [FILE]
-
-
- Impossibile creare il file in uscita: [FILE]
-
-
- [APP_NAME] non supporta ancora il caricamento in blocco di file di animazione.
-
-
- Impossibile importare il file [FILE] a causa del seguente motivo: [REASON]
-Riprova più tardi.
-
-
- Hai aggiunto "[LANDMARK_NAME]" alla tua cartella [FOLDER_NAME].
-
-
- Hai già il punto di riferimento di questo luogo.
-
-
-
- Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente.
-
-
- Impossibile fare la 'ricompilazione'.
-Seleziona un oggetto con uno script.
-
-
- Impossibile fare la 'ricompilazione'.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
-
-
- Impossibile fare 'ripristino'.
-
-Seleziona oggetti con degli script.
-
-
- Impossibile fare 'ripristino'.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
-
-
- Impossibile aprire la script dell'oggetto senza i diritti di modifica.
-
-
- Impossibile mettere 'in esecuzione' gli script.
-
-Seleziona oggetti con script.
-
-
- Impossibile impostare script a 'non in esecuzione'.
-
-Seleziona oggetti con script.
-
-
- Non c'è nessuna finestra in evidenza (in primo piano) da salvare.
-
-
- La tua ricerca è stata modificata.
-Le parole troppo corte sono state rimosse.
-
-Ho cercato: [FINALQUERY]
-
-
- Le parole che hai usato per la ricerca sono troppo corte e non è stato possibile iniziare la ricerca.
-
-
- Teleport non riuscito.
-[REASON]
-
-
- C'è stato un problema nell'elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l'accesso prima di poter usare il teleport.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
-
-
- Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l'accesso.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
-
-
- Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
-
-
- Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
-
-
- Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
-
-
- Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
-
-
- Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
-
-
- Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata.
-
-
- Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
-
-
- Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
-
-
- Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
-
-
- L'inventario è temporaneamente inaccessibile.
-
-
- Impossibile impostare il proprietario del terreno:
-Nessun terreno selezionato.
-
-
- Impossibile forzare la proprietà del terreno perchè la selezione si estende su diverse regioni. Seleziona una area più piccola e riprova.
-
-
- Questo lotto è all'asta. La designazione di un proprietario determinerà l'annullamento automatico dell'asta e probabilmente può scontentare qualche residente se l'asta è già iniziata.
-Vuoi designare un proprietario?
-
-
-
- Impossibile fare la contentificazione:
-Nessun terreno selezionato.
-
-
- Impossibile fare la contentificazione:
-Nessuna regione selezionata.
-
-
- Impossibile abbandonare il terreno:
-Nessun terreno selezionato.
-
-
- Impossibile abbandonare il terreno:
-Non riesco a trovare la regione.
-
-
- Impossibile comprare il terreno:
-Nessun terreno selezionato.
-
-
- Impossibile comprare il terreno:
-Non riesco a trovare la regione dove è situato il terreno.
-
-
- Non puoi chiudere la finestra Acquista terreno finché [APP_NAME] non finisce di stimare il prezzo di questa transazione.
-
-
- Impossibile cedere il terreno:
-Nessun terreno selezionato.
-
-
- Impossibile cedere il terreno:
-Nessun gruppo selezionato.
-
-
- Non è possibile effettuare la cessione del terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-
-
- Impossibile cedere il terreno:
-Hai selezionato più di un terreno.
-
-Prova a selezionare un solo terreno.
-
-
- Impossibile cedere il terreno:
-Sto aspettando il server per segnalare la proprietà .
-
-Riprova di nuovo.
-
-
- Impossibile cedere il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
-
-
- Impossibile abbandonare il terreno:
-Sto aspettando il server per aggiornare le informazioni del terreno.
-
-Riprova fra poco.
-
-
- Impossibile abbandonare il terreno:
-Non possiedi tutti i terreni selezionati.
-
-Seleziona un solo terreno.
-
-
- Impossibile abbandonare il terreno:
-Non hai i permessi per rilasciare questo terreno.
-I terreni di tua proprietà vengono visualizzati in verde.
-
-
- Non è possibile abbandonare il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-
-
- Impossibile abbandonare il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
-
-
- Impossibile abbandonare il terreno:
-Devi selezionare un terreno intero per rilasciarla.
-
-Seleziona un terreno intero, oppure dividi prima il tuo terreno.
-
-
- Stai per rilasciare [AREA] m² di terreno.
-Rilasciare questo appezzamento di terreno lo toglierà dalle tue proprietà , ma non ti verranno dati L$.
-
-Rilasciare questo terreno?
-
-
-
- Impossibile dividere il terreno:
-
-Non sono stati selezionati terreni.
-
-
- Impossibile dividere il terreno:
-
-Hai selezionato unintero terreno.
-Prova a selezionare unappezzamento di terreno.
-
-
- La suddivisione di questo terreno lo dividerà in due parti ed ognuna potrà avere le sue impostazioni. Alcune impostazioni verranno reimpostate ai valori iniziali dopo l'operazione.
-
-Dividi il terreno?
-
-
-
- Non è possibile suddividere il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-
-
- Non è possibile unire il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-
-
- Impossibile unire il terreno:
-Non hai selezionato terreno.
-
-
- Impossibile unire il terreno:
-Hai selezionato un solo terreno.
-
-Devi selezionare il terreno comprendendo entrambi gli appezzamenti.
-
-
- Impossibile unire il terreno:
-Devi selezionare più di un terreno.
-
-Devi selezionare il terreno comprendendo entrambi gli appezzamenti.
-
-
- Unire questi appezzamenti creerà un terreno più grande a partire da tutti gli appezzamenti che si intersecano nel rettangolo selezionato.
-Dovrai reimpostare il nome e le opzioni del nuovo terreno.
-
-Unisci il terreno?
-
-
-
- Questa notecard deve essere salvata prima che l'elemento possa essere copiato o visualizzato. Salva la notecard?
-
-
-
- Copia questo elemento nel tuo inventario?
-
-
-
- Non sono riuscito a cambiare la risoluzione al valore [RESX] x [RESY]
-
-
- Errore: Erba sconosciuta: [SPECIES]
-
-
- Errore: Alberi sconosciuti: [SPECIES]
-
-
- Impossibile salvare '[NAME]' nel file di oggetti indossabili. Dovrai liberare dello spazio sul tuo computer e salvare di nuovo.
-
-
- Non è possibile salvare [NAME] nel database centrale degli asset.
-In genere si tratta di un problema temporaneo. Attendi alcuni minuti per modificare e salvare nuovamente gli elementi indossabili.
-
-
- Sei stato scollegato da [SECOND_LIFE].
- [MESSAGE]
-
-
-
- Impossibile comprare terreno per il gruppo:
-Non hai i permessi per comprare il terreno per il tuo gruppo attivo.
-
-
- Gli amici possono autorizzarsi a vedersi l'un l'altro sulla mappa e sapere quando sono collegati.
-
-Offri l'amicizia a [NAME]?
-
-
-
- Salva gli abiti che indosso come nuovo vestiario:
-
-
-
- Salva oggetto nel mio inventario come:
-
-
-
- Nuovo nome per il vestiario:
-
-
-
- Vuoi rimuovere [NAME] dalla lista dei tuoi amici?
-
-
-
- Vuoi rimuovere gli amici selezionati dalla lista dei tuoi amici?
-
-
-
- Confermi di volere cancellare tutti gli oggetti scriptati della proprietà di
-** [AVATAR_NAME] **
-su tutti gli altri terreni di questa sim?
-
-
-
- Confermi la CANCELLAZIONE di TUTTI gli oggetti scriptati posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
-
-
-
- Confermi la CANCELLAZIONE di TUTTI gli oggetti (scriptati o no) posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
-
-
-
- Devi specificare un nome per il tuo annuncio.
-
-
- Il prezzo da pagare per essere messo in lista deve essere almeno [MIN_PRICE]L$.
-
-Introduci un prezzo più alto.
-
-
- Almeno uno degli oggetti selezionati è collegato tramite link ad altri oggetti. Se elimini l'oggetto, i relativi link non funzioneranno più. Pertanto si consiglia vivamente di eliminare prima i link.
-
-Sei sicuro di volere eliminare gli oggetti?
-
-
-
- Almeno uno degli elementi selezionati è bloccato.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Almeno uno degli elementi selezionati non è copiabile.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Non possiedi neanche uno degli oggetti selezionati.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Almeno un oggetto è bloccato.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Almeno un oggetto non è copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
-
-
-
- Almeno un oggetto è bloccato.
-
-Confermi di voler prendere questi elementi?
-
-
-
- Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-
-Confermi di voler prendere questi elementi?
-
-
-
- Almeno un oggetto è bloccato.
-Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-Puoi comunque prendere gli oggetti selezionati.
-
-Confermi di voler prendere questi elementi?
-
-
-
- Impossibile comprare il terreno perchè la selezione comprende più regioni.
-
-Seleziona un'area più piccola e riprova.
-
-
- Cedendo questo terreno al gruppo sara richiesto ai componenti di avere e di mantenere il terreno con un credito sufficiente.
-Il prezzo di acquisto del terreno non è rifondibile al proprietario.
-Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita verrà diviso in parti uguali fra i membri del gruppo.
-
-Cedi questo terreno di [AREA] m² al gruppo '[GROUP_NAME]'?
-
-
-
- Completando la cessione del lotto, il gruppo dovrà avere e mantenere crediti sufficienti per l'uso del terreno.
-La cessione includerà un contributo contemporaneo di terreno al gruppo da '[NAME]'.
-Il prezzo di acquisto del terreno non viene rimborsato al proprietario. Se un lotto ceduto viene venduto, il prezzo di vendita viene distribuito in maniera paritetica tra i membri del gruppo.
-
-Cedere questi [AREA] m² di terreno al gruppo '[GROUP_NAME]'?
-
-
-
- Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l'opzione -safe.
-
-
- Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema.
-
-
- [ERROR_MESSAGE]
-
-
-
- L'ubicazione prescelta non è attualmente disponibile.
-Sei stato trasferito in una regione vicina.
-
-
- La tua ultima posizione non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
-
-
- L'ubicazione di casa tua non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
-Ti consigliamo di impostare una nuova posizione iniziale.
-
-
- Gli abiti sono in corso di scaricamento.
-Puoi comunque usare [SECOND_LIFE] normalmente e gli altri residenti ti vedranno correttamente.
-
-
-
- L'installazione di [APP_NAME] è terminata.
-
-Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa effettuare l'accesso.
-Vuoi tornare a [http://join.secondlife.com secondlife.com] per creare un nuovo account?
-
-
-
- Ci sono problemi di connessione. È possibile che ci siano problemi con la tua connessione Internet oppure sulla [SECOND_LIFE_GRID].
-
-Controlla la tua connessione Internet e riprova fra qualche minuto, oppure clicca su Aiuto per visualizzare la pagina [SUPPORT_SITE], oppure clicca su Teleport per tentare il teleport a casa tua.
-
- http://it.secondlife.com/support/
-
-
-
-
- Il tuo avatar apparirà fra un attimo.
-
-Usa le frecce per muoverti.
-Premi F1 in qualunque momento per la guida o per apprendere altre cose di [SECOND_LIFE].
-Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
-
-
-
- Impossibile effettuare il teleport su [SLURL], in quanto si trova su una griglia ([GRID]) diversa da quella attuale ([CURRENT_GRID]). Chiudi il viewer e prova nuovamente.
-
-
-
- Impossibile collegarsi al server.
-[REASON]
-
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
-
-
-
- Autorità di certificazione di questo server sconosciuta.
-
-Informazioni sul certificato:
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
-
-Accettare questa autorità ?
-
-
-
- [NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
-
-
- [NAME] ti ha dato il permesso di modificare i suoi oggetti.
-
-
- Non sei più autorizzato a modificare gli oggetti di [NAME]
-
-
- Questo reinizializzerà la cache della mappa di questa regione.
-Funzione usata solo per il debug.
-(Per la produzione, attendere 5 minuti, dopo di che tutte le mappe di ognuno si aggiorneranno dopo la loro riconnessione)
-
-
-
- Non è possibile acquistare più di un oggetto alla volta. Riprova selezionando un solo oggetto.
-
-
- Impossibile copiare il contenuto di più di un elemento alla volta.
-Scegli solo un oggetto e riprova.
-
-
-
- Teleporta a casa tutti i residenti in questa regione?
-
-
-
- Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ?
-
-
-
- Impossibile impostare le texture della regione:
-La texture del terreno [TEXTURE_NUM] ha una profondità di bit pari a [TEXTURE_BIT_DEPTH] non corretta.
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 o una immagine più piccola e quindi clicca nuovamente su 'Applica'.
-
-
- Impossibile impostare le texture di regione:
-La texture del terreno [TEXTURE_NUM] è troppo grande se a [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 oppure con una immagine più piccola e quindi clicca di nuovo 'Applica'.
-
-
- Importazione iniziata. Può impiegare fino a due minuti, a seconda della velocità della tua connessione.
-
-
- Vuoi veramente impostare come base il terreno corrente, impostarlo come riferimento per i limiti dei rialzi/abbassamenti di tutto il territorio ed il suo valore impostato come base per lo strumento 'Ripristina'?
-
-
-
- Puoi avere al massimo [MAX_AGENTS] residenti consentiti.
-
-
- Puoi avere al massimo [MAX_BANNED] residenti bloccati.
-
-
- E' fallito il tentativo di aggiungere [NUM_ADDED] avatar:
-Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS].
-
-
- Puoi avere al massimo [MAX_GROUPS] gruppi.
-
-
-
- Puoi avere al massimo [MAX_MANAGER] manager della proprietà immobiliare.
-
-
- Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati.
-
-
- Impossibile cambiare l'aspetto fisico finchè gli abiti e i vestiti non sono caricati.
-
-
- Il nome del tuo annuncio deve iniziare con una lettera da A a Z oppure con un numero.
-Non sono consentiti caratteri di punteggiatura.
-
-
- Impossibile impostare 'Compra l'oggetto', perchè l'oggetto non è in vendita.
-Imposta l'oggetto per la vendita e riprova.
-
-
- Hai terminato di scaricare il file del terreno nella cartella:
-[DOWNLOAD_PATH].
-
-
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-
-
-
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità .
-
-
-
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità .
-
-
-
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-
-
-
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità .
-
-
-
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità .
-
-
-
- È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-
-Scaricare nella cartella Applicazioni?
-
-
-
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità .
-
-Scaricare nella cartella Applicazioni?
-
-
-
- È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità .
-
-Scaricare nella cartella Applicazioni?
-
-
-
- Si è verificato un errore durante l'aggiornamento del viewer.
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
-
-
-
- Non è stato possibile installare un aggiornamento richiesto.
-Non potrai accedere fino a quando non verrà aggiornato [APP_NAME].
-
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
-
-
-
- È disponibile un aggiornamento obbligatorio per l'installazione di Second Life.
-
-Puoi scaricare questo aggiornamento da http://www.secondlife.com/downloads
-oppure puoi installarlo adesso.
-
-
-
- È stato scaricato un aggiornamento dell'installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
-
-
-
- È stato scaricato un aggiornamento dell'installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
-
-
-
- È stato scaricato un aggiornamento obbligatorio del software.
-Versione [VERSION]
-
-Per installare l'aggiornamento è necessario riavviare [APP_NAME].
-
-
-
- Per installare l'aggiornamento è necessario riavviare [APP_NAME].
-
-
-
- La cessione di questo oggetto farà in modo che il gruppo:
-* Riceva i L$ pagati all'oggetto
-
-
-
- Vuoi aprire il browser per vedere questi contenuti?
-
-
-
- Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account?
-
-
-
- Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza.
-
-
-
- Visita il controllo di qualità Wiki [SECOND_LIFE].
-
-
-
- Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi.
-
-
-
- Vai al blog ufficiale Linden, per le ultime notizie ed informazioni.
-
-
-
- Vuoi aprire la Guida per lo scripting per avere aiuto con lo scripting?
-
-
-
- Vuoi visitare il Portale LSL per avere aiuto con lo scripting?
-
-
-
- Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti.
-
-*ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati!
-
-
-
- Sei attualmente un membro del gruppo [GROUP].
-Vuoi lasciare il gruppo?
-
-
-
- Vuoi veramente espellere tutti i residenti dalla griglia?
-
-
-
- Spiacenti, non puoi bloccare un Linden.
-
-
-
- Non è possibile mettere in vendita all'asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all'asta.
-
-
- hai già bloccato questo nome.
-
-
-
- Sebbene consentita, la cancellazione di contenuti può danneggiare l'oggetto.
-Vuoi cancellare quell'elemento?
-
-
-
- Impossibile offrire un biglietto da visita in questo momento. Riprova fra poco.
-
-
-
- Impossibile offrire l'amicizia in questo momento. Riprova fra poco.
-
-
-
- È stata impostata la modalità Non disponibile.
-La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
-
-
-
- Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l'offerta.
-[NAME] ti invita ad aderire ad un gruppo.
-
-
-
- Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire o crearne uno nuovo.
-
-
-
- Espelli questo residente con quale messaggio?
-
-
-
- Espelli tutti quelli che sono sulla griglia con quale messaggio?
-
-
-
- Congela questo residente con quale messaggio?
-
-
-
- Scongela questo residente con quale messaggio?
-
-
-
- Ciao [DISPLAY_NAME]!
-
-Come nel modo reale, prima che tutti conoscano il tuo nuovo nome ci vorrà del tempo. Saranno necessari alcuni giorni per [http://wiki.secondlife.com/wiki/Setting_your_display_name l'aggiornamento del nome] in oggetti, script, ricerca, ecc.
-
-
- Non puoi cambiare il tuo nome visualizzato. Se ritieni che si tratta di un errore, contatta l'assistenza.
-
-
- Il nome è troppo lungo. La lunghezza massima dei nomi visualizzati è di [LENGTH] caratteri.
-
-Riprova con un nome più corto.
-
-
- Non è possibile impostare il tuo nome visualizzato. Riprova più tardi.
-
-
- I nomi visualizzati inseriti non corrispondono. Inseriscili nuovamente.
-
-
- Devi aspettare prima di cambiare il nome visualizzato.
-
-Vedi http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Riprova più tardi.
-
-
- Non è possibile impostare il nome richiesto perché contiene una parola vietata.
-
- Riprova con un altro nome.
-
-
- Il nome visualizzato scelto contiene caratteri non validi.
-
-
- Il nome visualizzato deve contenere lettere, non solo segni di punteggiatura.
-
-
- [OLD_NAME] ([SLID]) ha il nuovo nome [NEW_NAME].
-
-
- Offri un teleport nel posto dove sei con il seguente messaggio?
-
-
-
- Chiedere, in qualità di Admin, al residente di raggiungerti?
-
-
-
- Sei sicuro di volere il teleport a <nolink>[LOCATION]</nolink>?
-
-
-
- Teleport a [PICK]?
-
-
-
- Teleport a [CLASSIFIED]?
-
-
-
- Teleport a [HISTORY_ENTRY]?
-
-
-
- Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà .
-
-
-
- Stai per apportare modifiche ad una proprietà che appartiene a Linden (continente, teen grid, orientamento e così via).
-
-Questa è un'operazione da effettuare con molta cautela, in quanto può incidere profondamente sulla vita dei residenti in Second Life. Sul continente, l'azione modificherà migliaia di regioni e creerà un grosso carico sul server.
-
-Vuoi procedere?
-
-
-
- Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.).
-
-Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse.
-Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
-
-
-
- Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Rimuovi dalla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Aggiungi al gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Rimuovi dal gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Rifiuta l'accesso solo a questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Rimuovi questo residente dalla lista dei residenti bloccati nell'accesso solo a questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Aggiungi come gestore della proprietà solo a questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Rimuovi come gestore della proprietà solo per questa proprietà oppure per [ALL_ESTATES]?
-
-
-
- Espelli [EVIL_USER] da questa proprietà ?
-
-
-
- Confermi di voler cambiare il Regolamento della proprietà ?
-
-
-
- Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età .
-
-Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso.
-
-
-
- Non sei ammesso in questa regione a causa della tua categoria d'accesso.
-
-Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di accesso?
-
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
-
-
-
-
- Non sei ammesso in questa regione a causa della tua categoria d'accesso.
-
-
- Non ti è consentito entrare in quella regione a causa della categoria di accesso impostata nelle preferenze.
-
-Per entrare nella regione, dovrai modificare la tua categoria di accesso. Ciò ti consentirà inoltre di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Per annullare le modifiche in un secondo momento, vai a Io > Preferenze > Generali.
-
-
-
- La tua categoria di accesso attuale è [RATING].
-
-
- Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età .
-
-Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per informazioni sull'accesso ad aree con queste categorie di accesso.
-
-
-
- Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso.
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
-
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
-
-
-
-
- Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
-
-
- Non puoi richiedere questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io > Preferenze > Generale.
-
-
-
- Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età .
-
-Verifica di avere installato l'ultima versione del programma e vai alla Knowledge Base per informazioni sull'accesso ad aree con queste categorie di accesso.
-
-
-
- Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
-
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
-
-
-
-
- Non puoi acquistare questa land a causa della tua categoria di accesso.
-
-
- Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io > Preferenze > Generale.
-
-
-
- Hai selezionato troppi prim. Seleziona non più di [MAX_PRIM_COUNT] prim e riprova
-
-
-
- Problemi nell'importazione del regolamento della proprietà .
-
-
-
- Si sono riscontrati problemi nell'aggiungere un nuovo manager della proprietà . Una o più proprietà potrebbero avere la lista dei manager piena.
-
-
- Si sono riscontrati problemi nell'aggiunta a questo elenco della proprietà . Una o più proprietà potrebbe avere una lista piena.
-
-
- Impossibile caricare la risorsa della notecard in questo momento.
-
-
-
- Permessi insufficienti per vedere la notecard associata con l'asset ID richiesto.
-
-
-
- L'asset ID della notecard è mancante dal database.
-
-
-
- Ricorda: le tariffe per gli annunci non sono rimborsabili.
-
-Pubblica questo annuncio adesso per [AMOUNT]L$?
-
-
-
- Queste inserzioni includono contenuti di tipo Moderato?
-
-
-
- Questo gruppo include contenuti di tipo Moderato?
-
-
-
- Vuoi veramente far ripartire la regione in 2 minuti?
-
-
-
- Scrivi un breve annuncio che verrà mandato a tutti in questa regione.
-
-
-
- La classificazione di questa regione è stata aggiornata.
-Un periodo di tempo è necessario prima che la modifica venga integrata nella mappa.
-
-Per accedere a regioni per adulti, i residenti devono avere un Account verificato, mediante verifica dell'età oppure mediante verifica della modalità di pagamento.
-
-
- Questa versione di [APP_NAME] non è compatibile con la funzionalità di chat vocale in questa regione. Affinché la chat vocale funzioni correttamente, dovrai aggiornare [APP_NAME].
-
-
- Impossibile comprare oggetti da proprietari diversi nello stesso momento.
-Seleziona solo un oggetto e riprova.
-
-
- Impossibile comprare il contenuto di più di un oggetto per volta.
-Seleziona solo un oggetto e riprova.
-
-
- Impossibile comprare oggetti da proprietari differenti nello stesso momento.
-Scegli un solo oggetto e riprova.
-
-
- Compra l'oggetto originale da [OWNER] per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-
-
-
- Compra l'oggetto originale per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-
-
-
- Compra una copia da [OWNER] per [PRICE]L$?
-L'oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-
-
-
- Compra una copia per [PRICE]L$?
-L'oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-
-
-
- Compra il contenuto da [OWNER] per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
-
-
-
- Compra il contenuto per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
-
-
-
- Questa transazione ti permetterà di:
-[ACTION]
-
-Confermi di voler procedere all'acquisto?
-
-
-
- Questa transazione farà :
-[ACTION]
-
-Confermi di voler procedere all'acquisto?
-Ridigita la tua password e premi OK.
-
-
-
- Nota:
-Hai aggiornato l'ubicazione di questo preferito ma gli altri dettagli conserveranno il loro valore originale.
-
-
-
- Hai selezionato elementi dall'inventario 'non copiabili'.
-Questi elementi verranno trasferiti nel tuo inventario, ma non copiati.
-
-Trasferisci gli elementi nell'inventario?
-
-
-
- Hai selezionato elementi dell'inventario non copiabili. Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati.
-Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script.
-
-Trasferisci gli elementi nell'inventario?
-
-
-
- Attenzione: l'azione Paga oggetto è stata impostata, ma funzionerà soltanto se inserisci uno script con un evento money().
-
-
-
- Non ci sono elementi in questo oggetto che tu possa copiare.
-
-
- Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
-
-
-
- Confermi di voler uscire?
-
-
-
- [QUESTION]
-
-
-
- Usa questo strumento per segnalare violazioni a [http://secondlife.com/corporate/tos.php Terms of Service] e [http://secondlife.com/corporate/cs.php Community Standards].
-
-Ogni abuso segnalato verrà esaminato e risolto.
-
-
- Scegli una categoria per questa segnalazione di abuso.
-Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso.
-
-
- Introduci il nome di chi abusa.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-
-
- Inserisci il luogo dove l'abuso è avvenuto.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-
-
- Inserisci un yiyolo descrittivo dell'abuso che è avvenuto.
-Introducendo un titolo descrittivo accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-
-
- Inserisci una descrizione dettagliata dell'abuso che è avvenuto.
-Devi essere il più specifico possibile, includendo i nomi e i dettagli dell'incidente che stai segnalando.
-Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-
-
- Gentile residente,
-
-Ci risulta che tu stia segnalando una violazione di proprietà intellettuale. Per segnalare correttamente la violazione:
-
-(1) Definizione di abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti di proprietà intellettuale. L'Ufficio abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini del servizio] di [SECOND_LIFE] oppure gli [http://secondlife.com/corporate/cs.php Standard della comunità ]. Tieni comunque presente che l'Ufficio abusi non gestisce e non risponde alle richieste di rimozione di contenuti da [SECOND_LIFE].
-
-(2) DMCA o rimozione di contenuti. Per richiedere la rimozione di contenuti da [SECOND_LIFE], devi compilare una denuncia valida di violazione come definito nelle nostra [http://secondlife.com/corporate/dmca.php Regole DMCA] (leggi sul copyright).
-
-Per continuare con il procedimento di abuso, chiudi questa finestra e completa la compilazione della segnalazione. È possibile che dovrai specificare la categoria CopyBot o Sfruttamento dei diritti.
-
-Grazie,
-
-Linden Lab
-
-
- I seguenti componenti obbligatori sono mancanti da [FLOATER]:
-[COMPONENTS]
-
-
- C'è già un oggetto indossato in questo punto del corpo.
-Vuoi sostituirlo con l'oggetto selezionato?
-
-
-
- Sei in modalità 'Occupato', ciò significa che non riceverai ciò che attendi per questo pagamento.
-
-Desideri abbandonare la modalità 'Occupato' prima di completare questa transazione?
-
-
-
- La cartella '[FOLDERNAME]' è una cartella di sistema. L'eliminazione di cartelle di sistema può creare instabilità . Sei sicuro di volerla eliminare?
-
-
-
- Vuoi veramente eliminare in modo permanente il contenuto del tuo Cestino?
-
-
-
- Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte?
-
-
-
- Confermi di volere cancellare i tuoi cookie?
-
-
-
- Confermi di voler cancellare la lista degli URL salvati?
-
-
-
- Vuoi veramente eliminare in modo definitivo il contenuto dei tuoi Oggetti smarriti?
-
-
-
- Lo SLurl seguente è stato copiato negli Appunti:
- [SLURL]
-
-Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra degli indirizzi di un browser web.
-
-
-
- Vuoi sovrascrivere le preimpostazioni salvate?
-
-
-
- Vuoi cancellare [SKY]?
-
-
-
- Non puoi modificare o cancellare una preimpostazione di fabbrica.
-
-
- Questo file di ciclo giornaliero fa riferimento ad un file di cielo mancante: [SKY].
-
-
- Effetto di post elaborazione già presente. Vuoi sovrascrivere?
-
-
-
- Fornisci il nome per il nuovo cielo.
-
-
-
- La preimpostazione esiste già !
-
-
- Fornisci il nome per la nuova preregolazione del livello dell'acqua.
-
-
-
- La preimpostazione esiste già !
-
-
- Non puoi modificare o cancellare una preimpostazione.
-
-
- Impossibile iniziare una nuova sessione di chat con [RECIPIENT].
-[REASON]
-
-
-
- [EVENT]
-[REASON]
-
-
-
- La sessione chat con [NAME] deve chiudere.
-[REASON]
-
-
-
- Non puoi comprare un oggetto mentre è unito.
-
-
- Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell'oggetto deve cancellare l'oggetto oppure reimpostare gli script nell'oggetto.
-
-
-
- Vuoi indossare automaticamente gli indumenti che stai per creare?
-
-
-
- Per entrare in questa zona, devi avere eseguito la verifica dell'età . Vuoi andare sul sito di [SECOND_LIFE] per verificare la tua età ?
-
-[_URL]
-
- https://secondlife.com/account/verification.php?lang=it
-
-
-
-
- Per poter visitare questa zona devi avere devi aver fornito informazioni di pagamento a Linden Lab. Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
-
-[_URL]
-
- https://secondlife.com/account/index.php?lang=it
-
-
-
-
- La stringa [STRING_NAME] non è presente in strings.xml
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- Annullato
-
-
- Seduta annullata
-
-
- Attaccamento annullato
-
-
- Gli abiti/parti del corpo mancanti sono stati sostituiti con quelli di default .
-
-
- Oggetto: [SUBJECT], Messaggio: [MESSAGE]
-
-
- [NAME] è Online
-
-
- [NAME] è Offline
-
-
- Anche se sei molto simpatico, non puoi aggiungere te stesso all'elenco degli amici.
-
-
- Sto importando le fotografie per l'uso inworld e per il web...
-(Durata circa 5 minuti.)
-
-
- Hai pagato [AMOUNT]L$ per il caricamento.
-
-
- Il caricamento della fotografia nel sito web è andato a buon fine.
-
-
- Il caricamento della fotografia inworld è andato a buon fine.
-
-
- Terrain.raw caricato
-
-
- Manca la gesture [NAME] dal database.
-
-
- Impossibile caricare la gesture [NAME].
-
-
- Landmark non trovato nel database.
-
-
- Impossibile caricare il Landmark di riferimento. Riprova.
-
-
- Hai il blocco delle maiuscole attivato.
-Questo potrebbe incidere sulla tua password.
-
-
- Notecard non trovata nel database.
-
-
- Non hai il permesso di vedere questo biglietto.
-
-
- Permessi insufficienti per creare un oggetto.
-
-
- Impossibile caricare la notecard in questo momento.
-
-
- Script non trovato nel database.
-
-
- Permessi insufficenti per visualizzare lo script.
-
-
- Impossibile caricare lo script. Riprova.
-
-
- Il contenuto che stai offrendo per il momento non è localmente disponibile. Prova a rioffrire gli oggetti fra un minuto.
-
-
- Non è possibile modificare le categorie protette.
-
-
- Non è possibile rimuovere le categorie protette.
-
-
- Impossibile acquistare l'oggetto durante il download dei dati.
-Riprova.
-
-
- Impossibile collegare l'oggetto durante il download dei dati.
-Riprova.
-
-
- Puoi acquistare oggetti soltanto da un proprietario per volta.
-Seleziona solo un oggetto.
-
-
- Questo oggetto non è in vendita.
-
-
- Entra in modalità divina, livello [LEVEL]
-
-
- Esci dalla modalità divina, livello [LEVEL]
-
-
- Non hai l'autorizzazione a copiare.
-
-
- [NAME] ha ricevuto la tua offerta di inventario.
-
-
- [NAME] non ha accettato la tua offerta dall'inventario.
-
-
- [NAME]: [MESSAGE]
-
-
- Il tuo biglietto da visita è stato accettato.
-
-
- Il tuo biglietto da visita non è stato accettato.
-
-
- Puoi teleportarti alle ubicazioni come '[NAME]' aprendo il pannello Luoghi sul lato destro dello schermo, quindi selezionare la scheda Punti di riferimento.
-Clicca su un punto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
-(Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e scegliere Teleport.)
-
-
- Puoi contattare il residente '[NAME]' aprendo il pannello Persone nel lato destro del tuo schermo.
-Seleziona il residente dall'elenco, clicca su 'IM' in basso nel pannello.
-(Puoi anche fare doppio clic sul nome nell'elenco oppure fare clic con il pulsante destro del mouse e selezionare 'IM').
-
-
- Non è possibile selezionare il terreno attraverso i confini del server.
-Prova a selezionare una parte di terreno più piccola.
-
-
- Alcuni termini della ricerca sono stati esclusi a causa delle restrizioni di contenuto come esposto negli Standard della comunità .
-
-
- Seleziona almeno un tipo di contenuto per la ricerca (Generale, Moderato o Adulti).
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- Notifica eventi:
-
-[NAME]
-[DATE]
-
-
-
- Tutti gli oggetti presenti sul terreno, che saranno trasferiti al compratore di questa terra, saranno ora evidenziati.
-
-* Gli alberi e l'erba che cederai non saranno evidenziati.
-
-
-
- Usa lo stesso tasto per disattivare la gesture:
-[NAMES]
-
-
- Il software QuickTime di Apple sembra non essere installato sul tuo computer.
-Se vuoi vedere contenuto multimediale in streaming sui lotti che lo supportano, vai alla pagina [http://www.apple.com/quicktime QuickTime] e installa il Player QuickTime.
-
-
- Non è stato trovato alcun plugin multimediale per gestire il tipo mime [MIME_TYPE]. Il media di questo tipo non è disponibile.
-
-
- Questo plugin multimediale non funziona:
- [PLUGIN]
-
-Reinstalla il plugin o contatta il venditore se continui ad avere questi problemi.
-
-
-
- Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell'inventario.
-
-
- Sono stati restituiti all'inventario di '[NAME]' gli oggetti sul lotto di terreno selezionato di sua proprietà .
-
-
- Sono stati restituiti al proprietario gli oggetti selezionati sul lotto nella terra di proprietà del residente '[NAME]'.
-
-
- Gli oggetti selezionati sul terreno e condivisi con il gruppo [GROUPNAME] sono stati restituiti nell'inventario dei propietari.
-Gli oggetti trasferibili ceduti sono stati restituiti ai proprietari precedenti.
-Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancellati.
-
-
- Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari.
-
-
- Messaggio da [NAME]:
-<nolink>[MSG]</nolink>
-
-
- Su questo terreno sono abilitati i danni.
-Qui potresti essere ferito. Se dovessi morire verrai teleportato a casa tua.
-
-
- In questa zona è proibito il volo.
-Qui non puoi volare.
-
-
- Questa zona non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
-
-
- Questa zona ha la chat vocale disattivata. Non puoi sentire nessuno parlare.
-
-
- In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti.
-
-
- Un amministratore ha temporaneamente disabilitato gli script in questa regione.
-
-
- In questa terra nessuno script è attivo.
-
-
- Questo terreno non consente script esterni.
-
-Qui funzionano soltanto gli script del proprietario del terreno.
-
-
- Puoi solo richiedere terreni pubblici nella regione in cui sei posizionato.
-
-
- Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l'età e/o installare l'ultima versione del programma.
-
-Visita la Knowledge Base per informazioni sull'accesso alle aree con queste categorie di accesso.
-
-
- Tu hai l'accesso bloccato a questa regione.
-
-
- Il tuo account non può connettersi a questa regione della griglia per Teenager.
-
-
- Non hai una impostazioni di pagamento corrette per entrare in questa regione.
-
-
- Devi essere di età verificata per entrare in questa terra.
-
-
- Non è stata trovata nessuna regione di destinazione.
-
-
- Non hai il permesso di accedere alla regione di destinazione.
-
-
- Non puoi attraversare la regione passando su un terreno ad accesso interdetto. Prova in un altro modo.
-
-
- Sei stato rediretto ad un punto di snodo di teletrasporto.
-
-
- Non è stato possibile teleportarti più vicino al luogo di destinazione.
-
-
- Teletrasporto annullato.
-
-
- La regione in cui stai tentando di accedere è attualmente piena.
-Riprova tra qualche istante.
-
-
- Fallimento generale.
-
-
- Sei stato instradato verso la regione sbagliata. Riprova.
-
-
- Nessun ID valido.
-
-
- Nessun ID valido.
-
-
- Nessun codice circuito valido.
-
-
- Nessuna data/timestamp valido.
-
-
- Impossibile creare la connessione in sospeso.
-
-
- Si è verificato un errore interno durante il tentativo di trasportarti alla destinazione. Potrebbero esserci problemi in [SECOND_LIFE] al momento.
-
-
- Impossibile trovare una buona destinazione per il teletrasporto in questa regione.
-
-
- Si è verificato un errore interno durante il tentativo di risolvere le coordinate per la richiesta di teletrasporto. Può darsi che ci siano problemi in [SECOND_LIFE] al momento.
-
-
- Non è stato trovato un punto di atterraggio valido.
-
-
- Non è stato trovato nessun territorio valido.
-
-
- Un oggetto denominato <nolink>[OBJECTFROMNAME]</nolink> di proprietà di <nolink>[ITEM_SLURL]</nolink> ti ha offerto [ITEM_SLURL]: Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell'Inventario. Per passare alla modalità Avanzata, esci e riavvia l'applicazione e cambia le impostazioni della modalità nella schermata di accesso.
-
-
-
- [NAME_SLURL] ti ha offerto [ITEM_SLURL]. Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell'Inventario. Per passare alla modalità Avanzata, esci e riavvia l'applicazione e cambia le impostazioni della modalità nella schermata di accesso.
-
-
-
- [NAME]
-
-[MESSAGE]
-
-
- [MESSAGE]
-
-
-
- [NAME_SLURL] ti ha offerto il teleport alla sua ubicazione:
-
-[MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon>
-
-
-
- Offerta di Teleport inviata a [TO_NAME]
-
-
- [MESSAGE]
-[URL]
-
-
-
- [NAME_SLURL] ti ha offerto di diventare amici.
-
-[MESSAGE]
-
-(L'impostazione predefinita consente a ciascuno di vedere se l'altro è online.)
-
-
-
- Hai offerto l'amicizia a [TO_NAME]
-
-
- [NAME_SLURL] ti ha offerto di diventare amici.
-
-(L'impostazione predefinita consente a ciascuno di vedere se l'altro è online.)
-
-
-
- [NAME] ha accettato la tua offerta di amicizia.
-
-
- [NAME] ha rifiutato la tua offerta di amicizia.
-
-
- Offerta di amicizia accettata.
-
-
- Offerta di amicizia rifiutata.
-
-
- [NOME] ti offre il suo biglietto da visita.
-Questo sarà aggiunto nel tuo inventario come segnalibro per consentirti di inviare rapidamente messaggi IM a questo residente.
-
-
-
- Questa regione verrà riavviata fra [MINUTES] minuti.
-Se rimani qui verrai scollegato da Second Life.
-
-
- Questa regione verrà riavviata fra [SECONDS] secondi.
-Se rimani qui verrai scollegato da Second Life.
-
-
- Caricare la pagina Web [URL]?
-
-[MESSAGE]
-
-Dall'oggetto: <nolink>[OBJECTNAME]</nolink>, proprietario: [NAME]?
-
-
-
- Impossibile trovare [TYPE] nel database.
-
-
- Impossibile trovare [TYPE] chiamato [DESC] nel database.
-
-
- L'elemento che stai tentando di indossare usa delle caratteristiche che il tuo viewer non può leggere. Aggiorna la versione di [APP_NAME] per poterlo indossare.
-
-
- '<nolink>[OBJECTNAME]</nolink>', un oggetto posseduto da '[NAME]' vorrebbe:
-
-[QUESTIONS]
-OK?
-
-
-
- Un oggetto di nome '<nolink>[OBJECTNAME]</nolink>', posseduto da '[NAME]' vorrebbe:
-
-[QUESTIONS]
-Se non ti fidi di questo oggetto e del suo ideatore, dovresti rifiutare la richiesta.
-
-Concedi questa richiesta?
-
-
-
- '<nolink>[TITLE]</nolink>' di [NAME]
-[MESSAGE]
-
-
-
- '<nolink>[TITLE]</nolink>' di [GROUPNAME]
-[MESSAGE]
-
-
-
- Grazie per aver inviato il pagamento.
-
-Il tuo saldo in L$ sarà aggiornato al termine dell'elaborazione. Se l'elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l'ammontare dell'acquisto verrà accreditato sul tuo saldo in US$.
-
-Potrai controllare lo stato del pagamento nella pagina della cronologia delle transazioni nel tuo [http://secondlife.com/account/ Dashboard]
-
-
- I tuoi movimenti della tastiera vengono ora gestiti da un oggetto.
-Prova i tasti freccia o AWSD per vedere quello che fanno.
-Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro utilizzo.
-Premi 'M' per farlo.
-
-
- Questa è una Sandbox, serve ai residenti per imparare a costruire.
-
-Gli oggetti che costruisci qui verranno eliminati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro del mouse e scegliere Prendi per trasferirle nel tuo Inventario.
-
-
- È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista.
-
-
- [NAME] ti sta invitando ad una chiamata in chat vocale.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l'invito. Clicca su Blocca per bloccare questo chiamante.
-
-
-
- [NAME] ha ricevuto un IM ed è stato automaticamente sbloccato.
-
-
- [NAME] ha ricevuto del denaro ed è stato automaticamente sbloccato.
-
-
- [NAME] ha ricevuto un'offerta di inventario ed è stato automaticamente sbloccato.
-
-
- [NAME] si è aggiunto alla chiamata in chat vocale con il gruppo [GROUP].
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l'invito. Clicca su Blocca per bloccare questo chiamante.
-
-
-
- [NAME] si è aggiunto alla chiamata in chat vocale con una conferenza.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l'invito. Clicca su Blocca per bloccare questo chiamante.
-
-
-
- [NAME] ti sta invitando ad una conferenza in chat.
-Clicca su Accetta per unirti alla chat oppure su Declina per declinare l'invito. Clicca su Blocca per bloccare questo chiamante.
-
-
-
- La chiamata vocale a cui si sta cercando di unirsi, [VOICE_CHANNEL_NAME], ha raggiunto la capacità massima. Si prega di riprovare più tardi.
-
-
- Siamo spiacenti. Questa area ha raggiunto la capacità massima per le chiamate voice. Si prega di provare ad usare il voice in un'altra area.
-
-
- Sei stato scollegato da [VOICE_CHANNEL_NAME]. Verrai ora ricollegato alla chat vocale nei dintorni.
-
-
- [VOICE_CHANNEL_NAME] ha chiuso la chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
-
-
- [VOICE_CHANNEL_NAME] ha declinato la tua chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
-
-
- [VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata. Verrai ora ricollegato alla chat vocale nei dintorni.
-
-
- Collegamento a [VOICE_CHANNEL_NAME] non riuscito, riprova più tardi. Verrai ora ricollegato alla chat vocale nei dintorni.
-
-
- Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto.
-
-
- Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta.
-[[URL] Fai clic qui] per rinnovare l'abbonamento.
-
-
- Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
-[[URL] Fai clic qui] per rinnovare l'abbonamento.
-
-
- Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
-[[URL] Fai clic qui] per rinnovare l'abbonamento.
-
-
- Sono disponibili nuove manipolazioni vocali.
-
-
- Soltanto i membri di un determinato gruppo possono visitare questa zona.
-
-
- Non puoi entrare nel terreno, sei stato bloccato.
-
-
- Non puoi entrare nel terreno, non fai parte della lista di accesso.
-
-
- Non hai il permesso di collegarti ad una voice chat con [VOICE_CHANNEL_NAME].
-
-
- Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME]. Riprova più tardi.
-
-
- Lo SLurl su cui hai cliccato non è valido.
-
-
- Uno SLurl è stato ricevuto da un browser sconosciuto o non sicuro e, per sicurezza, è stato bloccato.
-
-
- Sono stati ricevuti più SLurl da un browser sconosciuto o non sicuro in un breve periodo di tempo.
-Per sicurezza, verranno bloccati per alcuni secondi.
-
-
- [MESSAGE]
-
-
-
- Sicuro di voler chiudere tutti gli IM?
-
-
-
- L'elemento da collegare è stato salvato.
-
-
- Impossibile trovare l'argomento nell'aiuto per questo elemento.
-
-
- Errore del server: mancato aggiornamento o ottenimento del media.
-'[ERROR]'
-
-
-
- La tua chat di testo è stata interrotta dal moderatore.
-
-
-
- La tua voce è stata interrotta dal moderatore.
-
-
-
- Sei sicuro di volere cancellare la cronologia dei tuoi teleport?
-
-
-
- Il pulsante selezionato non può essere visualizzato in questo momento.
-Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
-
-
- Scegli i residenti con i quali condividere.
-
-
- Sei sicuro di volere condividere gli oggetti
-
-<nolink>[MSG]</nolink>
-
-Con i seguenti residenti?
-
-[RESIDENTS]
-
-
-
- Gli oggetti sono stati condivisi.
-
-
- Cessione al gruppo non riuscita.
-
-
- ( in esistenza da [EXISTENCE] secondi )
-Nuvola avatar '[NAME]' dileguata dopo [TIME] secondi.
-
-
- ( in esistenza da [EXISTENCE] secondi )
-Baking dei vestiti terminato dopo [TIME] secondi.
-
-
- ( in esistenza da [EXISTENCE] secondi )
-Hai inviato un aggiornamento al tuo aspetto dopo [TIME] secondi.
-[STATUS]
-
-
- ( presente da [EXISTENCE] secondi )
-Avatar '[NAME]' trasformato in nuvola.
-
-
- ( presente da [EXISTENCE] secondi )
-È comparso l'avatar '[NAME]'.
-
-
- ( presente da [EXISTENCE] secondi )
-Avatar '[NAME]' partito dopo [TIME] secondi sotto forma di nuvola.
-
-
- ( presente da [EXISTENCE] secondi )
-Avatar '[NAME]' è entrato nella modalità aspetto.
-
-
- ( presente da [EXISTENCE] secondi )
-Avatar '[NAME]' ha lasciato la modalità aspetto.
-
-
- Ci sono problemi di connessione tramite [PROTOCOL] [HOSTID].
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
-
-
-
- A causa di problemi di connessione al server vocale
-
-[HOSTID]
-
-le comunicazioni tramite voce non saranno disponibili.
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
-
-
-
- ( presente da [EXISTENCE] secondi )
-Avatar '[NAME]' è partito completamente caricato.
-
-
- ( In esistenza da [EXISTENCE] secondi)
-Hai caricato una texture [RESOLUTION] completata per '[BODYREGION]' dopo [TIME] secondi.
-
-
- ( In esistenza da [EXISTENCE] secondi)
-Hai aggiornato localmente una texture [RESOLUTION] completata per '[BODYREGION]' dopo [TIME] secondi.
-
-
- Sei sicuro di volere uscire dalla chiamata?
-
-
-
- Hai scelto di disattivare l'audio di tutti i partecipanti alla chiamata di gruppo.
-In questo modo verrà disattivato l'audio anche di tutti i residenti che si
-uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato.
-
-Disattiva audio di tutti?
-
-
-
- Per partecipare alla conversazione, digita nel campo chat in basso.
-
-
- Per alzarti ed uscire dalla posizione seduta, clicca sul pulsante Alzati.
-
-
- Clicca sul pulsante Parla per attivare o disattivare il microfono.
-
-Clicca sul tasto freccia su per visualizzare il pannello di controllo voce.
-
-Se nascondi il tasto Parla viene disattivata la funzione voce.
-
-
- La Guida alle destinazioni contiene migliaia di nuovi luoghi da scoprire. Seleziona una destinazione e scegli Teleport per iniziare a esplorare.
-
-
- Nel pannello laterale puoi acccedere rapidamente all'inventario, ai vestiti, ai profili e ad altro ancora.
-
-
- Per camminare o correre, apri il pannello Sposta e usa le frecce direzionali per spostarti. Puoi anche usare le frecce direzionali sulla tastiera del computer.
-
-
- 1. Clicca per camminare
-Clicca dovunque sul terreno per camminare verso quella posizione.
-
-2. Clicca e trascina per ruotare la visuale
-Clicca e trascina dovunque nel mondo per ruotare la visuale
-
-
- Imposta qui il tuo nome visualizzato personalizzabile. È in aggiunta al tuo nome utente, che non può essere cambiato. Nelle preferenze puoi anche cambiare il modo in cui vedi i nomi degli altri.
-
-
- Per cambiare la visuale della fotocamera, usa i controlli Ruota visuale e Panoramica. Ripristina la visuale premendo il tasto Esc o camminando.
-
-
- Trova oggetti nel tuo inventario. I più recenti si trovano nella scheda Elementi recenti.
-
-
- Ecco il saldo attuale in L$. Clicca su Acquista L$ per acquistare altri dollari Linden.
-
-
- Non è stato possibile aprire una finestra pop-up.
-
-
-
- Il sito '<nolink>[HOST_NAME]</nolink>' nel reame '[REALM]' richiede un nome utente e una password.
-
-
-
- Per cambiare la modalità è necessario uscire e riavviare.
-
-
-
- La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità ? Sulla schermata di accesso si può selezionare la modalità .
-
-
-
- La creazione e la modifica dei gruppi sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità ? Sulla schermata di accesso si può selezionare la modalità .
-
-
-
- La creazione e la modifica dei luoghi preferiti sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità ? Sulla schermata di accesso si può selezionare la modalità .
-
-
-
- La visualizzazione della mappa del mondo è disponibile solo in modalità Avanzata. Uscire e cambiare la modalità ? Sulla schermata di accesso si può selezionare la modalità .
-
-
-
- Le chiamate Voce sono disponibili solo in modalità Avanzata. Eseguire il logout e cambiare la modalità ?
-
-
-
- La condivisione è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità ?
-
-
-
- Il pagamento ad altri residenti è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità ?
-
-
-
- - La velocità della tua CPU non soddisfa i requisiti minimi.
-
-
- Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
-
-Se continui ad avere problemi, visita la pagina [SUPPORT_SITE].
-
-
- 796
-
-
- 510
-
-
- - La tua scheda grafica non soddisfa i requisiti minimi.
-
-
- - La memoria del tuo sistema non soddisfa i requisiti minimi.
-
-
- Se sei proprietario di un appezzamento di terreno, puoi definirlo come la tua posizione iniziale.
-In alternativa, puoi guardare sulla mappa e trovare luoghi segnalati come "Infohub".
-
-
- Sei deceduto e sei stato teleportato a casa tua.
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
deleted file mode 100644
index be001d09f8..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
deleted file mode 100644
index ab9b175f16..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
deleted file mode 100644
index 2d17e4a0cd..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
deleted file mode 100644
index 269931a1a4..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_login.xml b/indra/newview/skins/minimal/xui/it/panel_login.xml
deleted file mode 100644
index f88230ed11..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- http://join.secondlife.com/
-
-
- http://secondlife.com/account/request.php?lang=it
-
-
-
-
- Nome utente:
-
-
-
- Password:
-
-
-
-
- Modalità :
-
-
-
-
-
-
- Inizia da:
-
-
-
-
-
-
-
-
-
- Iscriviti
-
-
- Hai dimenticato il nome utente o la password?
-
-
- Ti serve aiuto con la fase di accesso?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
deleted file mode 100644
index 8e72167759..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_people.xml b/indra/newview/skins/minimal/xui/it/panel_people.xml
deleted file mode 100644
index 81e886acf0..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Clicca con il pulsante destro su un Residente per aggiungerlo come amico.
-Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso.
-
-
- Non riesci a trovare quello che cerchi? Prova il pulsante Destinazioni in basso.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 3c7874e093..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml b/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
deleted file mode 100644
index 4353eb9d50..0000000000
--- a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Domenica:Lunedì:Martedì:Mercoledì:Giovedì:Venerdì:Sabato
-
-
- Gennaio:Febbraio:Marzo:Aprile:Maggio:Giugno:Luglio:Agosto:Settembre:Ottobre:Novembre:Dicembre
-
-
- Perdita di pacchetti
-
-
- Larghezza di banda
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- L$ [AMT]
-
-
-
-
-
-
- 24:00, ora del Pacifico
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/floater_camera.xml b/indra/newview/skins/minimal/xui/ja/floater_camera.xml
deleted file mode 100644
index 71a20c8e18..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- フォーカスをä¸å¿ƒã«ã‚«ãƒ¡ãƒ©ã‚’回転
-
-
- フォーカスã«å‘ã‘ã¦ã‚«ãƒ¡ãƒ©ã‚’ズーãƒ
-
-
- カメラを上下左å³ã«ç§»å‹•
-
-
- カメラモード
-
-
- 旋回 - ズーム- 水平・垂直移動
-
-
- 事å‰è¨å®šã®è¦–野
-
-
- オブジェクトを見る
-
-
-
-
-
- 剿–¹è¦–界
-
-
-
-
- グループ視界
-
-
-
-
- 後方視界
-
-
-
-
-
-
- オブジェクト視点
-
-
-
-
- 一人称視点
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
deleted file mode 100644
index 1322343903..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°...
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
deleted file mode 100644
index 439c36dbe9..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- http://jp.secondlife.com
-
-
- http://jp.secondlife.com/support
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
deleted file mode 100644
index a29c6a0630..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml b/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
deleted file mode 100644
index 48fe8aee78..0000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml b/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
deleted file mode 100644
index 42b67cd333..0000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
-
-
-
- This is my second life description and I really think it is great.But for some reason my description is super extra long because I like to talk a whole lot
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_object.xml b/indra/newview/skins/minimal/xui/ja/inspect_object.xml
deleted file mode 100644
index e6999ac9b1..0000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_object.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- 制作者: [CREATOR]
-
-
- [CREATOR]ã«ã‚ˆã‚‹ãƒã‚§ãƒƒã‚¯
-[OWNER]ã«ã‚ˆã‚‹ãƒã‚§ãƒƒã‚¯
-
-
- L$[AMOUNT]
-
-
- ç„¡æ–™ã§ã™ï¼
-
-
- 触る
-
-
- 座る
-
-
-
- by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-
-
- L$30,000
-
-
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-
-
- http://www.superdupertest.com
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
deleted file mode 100644
index 982a03c6a8..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
deleted file mode 100644
index 5adf0b3745..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
deleted file mode 100644
index 830ddc9f63..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
deleted file mode 100644
index b04f602134..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
deleted file mode 100644
index 54dd96f5ef..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
deleted file mode 100644
index 4709522665..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
deleted file mode 100644
index 7f106c1ab5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
deleted file mode 100644
index e786d02e40..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
deleted file mode 100644
index eb5faa2545..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
deleted file mode 100644
index d984342896..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
deleted file mode 100644
index a071abbd2e..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_edit.xml b/indra/newview/skins/minimal/xui/ja/menu_edit.xml
deleted file mode 100644
index c2ef0179b2..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml b/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
deleted file mode 100644
index 4708b1446c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
deleted file mode 100644
index abf490a247..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
deleted file mode 100644
index 3787f7d645..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
deleted file mode 100644
index 3a1ae49700..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
deleted file mode 100644
index 3397004bd7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 8cd6fa4a27..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
deleted file mode 100644
index 5bcb96f083..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
deleted file mode 100644
index 5453f998fa..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 9d0d0f10a6..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
deleted file mode 100644
index 2edade70bf..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
deleted file mode 100644
index e3e206f3aa..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 9a4a8138f5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
deleted file mode 100644
index f78ec09e5e..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
deleted file mode 100644
index 6c754e5d08..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
deleted file mode 100644
index 1f425df83c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_land.xml b/indra/newview/skins/minimal/xui/ja/menu_land.xml
deleted file mode 100644
index 89c122f14f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
deleted file mode 100644
index c134422955..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_login.xml b/indra/newview/skins/minimal/xui/ja/menu_login.xml
deleted file mode 100644
index 265f3ebcd0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml b/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
deleted file mode 100644
index 2e733ee24b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
deleted file mode 100644
index 9ae2e58198..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
deleted file mode 100644
index c2e4a27686..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
deleted file mode 100644
index 913bae8958..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object.xml b/indra/newview/skins/minimal/xui/ja/menu_object.xml
deleted file mode 100644
index 4cee8089ee..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
deleted file mode 100644
index 8c4f328661..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
deleted file mode 100644
index 2bcbe1915b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
deleted file mode 100644
index 9491c22f31..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml b/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
deleted file mode 100644
index 64d8ded722..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
deleted file mode 100644
index 76340e4d76..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
deleted file mode 100644
index 842d79dc4b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
deleted file mode 100644
index bfc7d15017..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
deleted file mode 100644
index 8d84b0e521..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 3f20e5d3ab..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
deleted file mode 100644
index a31480158a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
deleted file mode 100644
index b4f177a068..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks.xml b/indra/newview/skins/minimal/xui/ja/menu_picks.xml
deleted file mode 100644
index 011d3d2526..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
deleted file mode 100644
index 84bf90fea0..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place.xml b/indra/newview/skins/minimal/xui/ja/menu_place.xml
deleted file mode 100644
index a9f05e126d..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
deleted file mode 100644
index d5ce88b055..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
deleted file mode 100644
index e64f97fda5..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
deleted file mode 100644
index f416b5b1f6..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
deleted file mode 100644
index 9d3a5dda1c..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
deleted file mode 100644
index 6513d9264a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
deleted file mode 100644
index a89dd0bcbe..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
deleted file mode 100644
index 61ba3085d9..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
deleted file mode 100644
index 901eab9166..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
deleted file mode 100644
index 66bc32214f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
deleted file mode 100644
index 4dd44d2ec8..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml b/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
deleted file mode 100644
index fcb1038a6a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
deleted file mode 100644
index 1a67a2a8f7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml b/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
deleted file mode 100644
index 92d118a5ae..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml b/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
deleted file mode 100644
index 1dd3d79438..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml b/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
deleted file mode 100644
index c3da8a8686..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
deleted file mode 100644
index 7af2f9e2cd..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml b/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
deleted file mode 100644
index 8d41e1a571..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
deleted file mode 100644
index d6a048dcfc..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
deleted file mode 100644
index 8d264059d3..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
deleted file mode 100644
index a516c5a075..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
deleted file mode 100644
index 2c857ec915..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
deleted file mode 100644
index c3507a9a33..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml b/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
deleted file mode 100644
index 52dec2b282..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
deleted file mode 100644
index c402fa0b6d..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
deleted file mode 100644
index 7a97538117..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
deleted file mode 100644
index 9effed1f42..0000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/notifications.xml b/indra/newview/skins/minimal/xui/ja/notifications.xml
deleted file mode 100644
index 43934c9317..0000000000
--- a/indra/newview/skins/minimal/xui/ja/notifications.xml
+++ /dev/null
@@ -1,2995 +0,0 @@
-
-
-
- 今後ã¯è¡¨ç¤ºã—ãªã„
-
-
- 常ã«ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’é¸æŠž
-
-
- é–‰ã˜ã‚‹
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ã‚ãªãŸã® [APP_NAME] ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ä»Šå—ã‘å–ã£ãŸé€šçŸ¥ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã”確èªãã ã•ã„。
-
-エラー詳細: 「 [_NAME] ã€ã¨ã„ã†é€šçŸ¥ã¯ notifications.xml ã«ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
-
- フãƒãƒ¼ã‚¿ã‚¨ãƒ©ãƒ¼ï¼šä¸‹è¨˜ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸï¼š
-[CONTROLS]
-
-
-
- ç¾åœ¨åˆ©ç”¨å¯èƒ½ãªãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã¯ã‚りã¾ã›ã‚“。
-
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
-
- [APP_NAME] をアップデートä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ ビューワ㮠[http://get.secondlife.com 最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰] ã—ã¦ãã ã•ã„。
-
-
-
- [SECOND_LIFE_GRID] ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-「[DIAGNOSTIC]ã€
-インターãƒãƒƒãƒˆæŽ¥ç¶šãŒæ£å¸¸ã‹ã”確èªãã ã•ã„。
-
-
-
- メッセージテンプレート [PATH] ãŒã‚りã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
-
- ç¾åœ¨ã®è¡£é¡žã€èº«ä½“部ä½ã®å¤‰æ›´ã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—ト用テã‚ストã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚
-[REASON]
-後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- 次ã®ç†ç”±ã§ã€ã‚³ãƒ³ãƒ‘イルã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚
-[REASON]
-後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ã®æ›¸ãè¾¼ã¿ã«å•題ãŒã‚りã¾ã™ã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- 次ã®ç†ç”±ã§ã€ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚
-[REASON]
-
-
- 一度ã«è¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ä¸èº«ã‚’表示ã§ãã¾ã›ã‚“。
-アイテムを 1 ã¤ã ã‘é¸æŠžã—ã¦ã€ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- è¡£æœã€èº«ä½“部ä½ã«å¯¾ã™ã‚‹å¤‰æ›´ã‚’ã™ã¹ã¦ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- フレンド以外ã‹ã‚‰ã®ã‚³ãƒ¼ãƒ«ã‚„インスタントメッセージを無視ã™ã‚‹è¨å®šã«ã—ãŸã“ã¨ã‚’ã€ç›¸æ‰‹ã«çŸ¥ã‚‰ã‚Œã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。
-
-
-
- 注æ„:ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ã“ã®ãƒ‘ソコンを使ã†ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯èª°ã§ã‚‚ã€ã‚ãªãŸã®ãŠæ°—ã«å…¥ã‚Šã®å ´æ‰€ã‚’見るã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
-
-
-
- 他人ã«ä¿®æ£æ¨©é™ã‚’与ãˆã‚‹ã¨ã€æ¨©é™ã‚’与ãˆã‚‰ã‚ŒãŸäººã¯ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ–ジェクトを変更ã€å‰Šé™¤ã€æŒã¡å¸°ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®æ¨©é™ã‚’与ãˆã‚‹éš›ã«ã¯ååˆ†ã«æ³¨æ„ã—ã¦ãã ã•ã„。
-[NAME] ã«ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ
-
-
-
- 他人ã«ä¿®æ£æ¨©é™ã‚’与ãˆã‚‹ã¨ã€æ¨©é™ã‚’与ãˆã‚‰ã‚ŒãŸäººã¯ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã‚¤ãƒ³ãƒ¯ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ–ジェクトを変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã“ã®æ¨©é™ã‚’与ãˆã‚‹éš›ã«ã¯ååˆ†ã«æ³¨æ„ã—ã¦ãã ã•ã„。
-é¸æŠžã—ãŸä½äººã«ä¿®æ£æ¨©é™ã‚’与ãˆã¾ã™ã‹ï¼Ÿ
-
-
-
- [NAME] ã®ä¿®æ£æ¨©é™ã‚’解約ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸä½äººã‹ã‚‰å¤‰æ›´æ¨©é™ã‚’å–り下ã’ã¾ã™ã‹ï¼Ÿ
-
-
-
- グループを作æˆã§ãã¾ã›ã‚“。
-[MESSAGE]
-
-
-
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-
-
-
- グループ通知ã®é€ä¿¡ã«ã¯ã€ä»¶åã®è¨˜å…¥ãŒå¿…è¦ã§ã™ã€‚
-
-
-
- ã‚ãªãŸã¯ [ROLE_NAME] ã®å½¹å‰²ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’与ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-任命ã•れãŸãƒ¡ãƒ³ãƒãƒ¼ãŒè‡ªã‚‰é€€ä»»ã—ãªã„é™ã‚Šã€
-役柄ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。
-æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã‚ãªãŸã¯ [ROLE_NAME] ã« [ACTION_NAME] ã®èƒ½åŠ›ã‚’
-与ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-
- *è¦å‘Š*
-ã“ã®èƒ½åŠ›ã‚’æŒã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€
-自分ã¨ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ç¾åœ¨ã‚ˆã‚Šå¼·åŠ›ãªæ¨©é™ã‚’割り当ã¦ã€
-自分をオーナーã¨ã»ã¼åŒæ§˜ã®ç«‹å ´ã«ä»»å‘½ã™ã‚‹ã“ã¨ã‚‚ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
-ã“ã®è¡Œç‚ºã®æ„味をよãç†è§£ã—ã¦ã‹ã‚‰å®Ÿè¡Œã—ã¦ãã ã•ã„。
-
-ã“ã®èƒ½åŠ›ã‚’ [ROLE_NAME] ã«å‰²ã‚Šå½“ã¦ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã‚ãªãŸã¯ [ROLE_NAME] ã« [ACTION_NAME] ã®èƒ½åŠ›ã‚’
-与ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-
- *è¦å‘Š*
-ã“ã®èƒ½åŠ›ã‚’ã‚‚ã¤å½¹å‰²ã®ãƒ¡ãƒ³ãƒãƒ¼ã¯ã€
-自分ã¨ä»–ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã™ã¹ã¦ã®èƒ½åŠ›ã‚’å‰²ã‚Šå½“ã¦ã€
-自分をオーナーã¨ã»ã¼åŒæ§˜ã®ç«‹å ´ã«ä»»å‘½ã§ãã¾ã™ã€‚
-
-ã“ã®èƒ½åŠ›ã‚’ [ROLE_NAME] ã«å‰²ã‚Šå½“ã¦ã¾ã™ã‹ï¼Ÿ
-
-
-
- アタッãƒãƒ¡ãƒ³ãƒˆã‚’下ã«ç½®ã“ã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã«ã¯ã€L$ [COST] ã‹ã‹ã‚Šã¾ã™ã€‚
-続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [NAME] ã¨ã„ã†ã‚°ãƒ«ãƒ¼ãƒ—ã«å…¥ã‚ã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«åŠ å…¥ã™ã‚‹ã«ã¯ã€L$ [COST] å¿…è¦ã§ã™ã€‚
-L$ ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ã§ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-
- ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を作るã«ã¯ L$ 100 ã‹ã‹ã‚Šã¾ã™ã€‚
-一人ã§ã¯ã‚°ãƒ«ãƒ¼ãƒ—ã«ãªã‚‰ãªã„ã®ã§ã€æ°¸ä¹…ã«å‰Šé™¤ã•れã¦ã—ã¾ã„ã¾ã™ã€‚
-48 時間以内ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚’勧誘ã—ã€å…¥ä¼šã—ã¦ã‚‚らã£ã¦ãã ã•ã„。
-
-
-
- L$ [COST] ã§ [TIME] 時間 [PARCEL_NAME] ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
-å…¥å ´è¨±å¯ã‚’購入ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ä¸ç‰¹å®šã®äººã«å£²å´ã™ã‚‹å ´åˆã«ã¯ã€
-売å´ä¾¡æ ¼ã¯L$ 0 以上ã«è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-売å´ä¾¡æ ¼ã‚’L$ 0 ã«è¨å®šã™ã‚‹å ´åˆã¯ã€
-売å´ã™ã‚‹å€‹äººã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- é¸æŠžã—㟠[LAND_SIZE] 平方メートルã®åœŸåœ°ã¯ã€å£²ã‚Šå‡ºã—ä¸ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚
-売å´ä¾¡æ ¼ L$ [SALE_PRICE] ã§ã€[NAME] ã«å£²å´ã‚’èªå¯ã—ã¾ã™ã€‚
-
-
-
- 注æ„: 「誰ã«ã§ã‚‚販売ã€ã‚’クリックã™ã‚‹ã“ã¨ã§ã€ã‚ãªãŸã®åœŸåœ°ã¯ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ã„る人ã«é™ã‚‰ãš [SECOND_LIFE] コミュニティ全体ã§åˆ©ç”¨å¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚
-
-é¸æŠžã—㟠[LAND_SIZE] 平方メートルã®åœŸåœ°ã¯ã€è²©å£²å¯¾è±¡ã«è¨å®šã•れã¾ã—ãŸã€‚
-è²©å£²ä¾¡æ ¼ L$ [SALE_PRICE] ã§ã€[NAME] ãŒè²©å£²å¯¾è±¡è€…ã¨ãªã‚Šã¾ã™ã€‚
-
-
-
- ã“ã®åŒºç”»ã®ã‚°ãƒ«ãƒ¼ãƒ— [NAME] 共有ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをã€ä»¥å‰ã®æ‰€æœ‰è€…ã®ã€ŒæŒã¡ç‰©ã€ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€
-グループã«è²æ¸¡ã•れãŸã€Œå†è²©ãƒ»ãƒ—レゼントä¸å¯ã€ã®ã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼
-オブジェクト: [N]
-
-
-
- ã“ã®åŒºç”»ã§ã€
-ä½äºº [NAME] ãŒæ‰€æœ‰ã™ã‚‹å…¨ã¦ã®ã‚ªãƒ–ジェクトを
-本人ã®ã€ŒæŒã¡ç‰©ã€ã«æœ¬å½“ã«è¿”å´ã—ã¦ã‚‚よã„ã§ã™ã‹ï¼Ÿ
-
-オブジェクト: [N]
-
-
-
- ã“ã®åœŸåœ°åŒºç”»å†…ã«ã‚ã‚‹ã€ã‚ãªãŸãŒæ‰€æœ‰ã™ã‚‹ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをã€
-ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-オブジェクト: [N]
-
-
-
- ã“ã®åœŸåœ°åŒºç”»å†…ã«ã‚ã‚‹ã€ã‚ãªãŸä»¥å¤–ãŒæ‰€æœ‰ã™ã‚‹ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトをã€
-ãれãžã‚Œã®æ‰€æœ‰è€…ã®ã€ŒæŒã¡ç‰©ã€ã«æˆ»ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-グループã«è²æ¸¡ã•れãŸã€Œå†è²©ãƒ»ãƒ—レゼントå¯ã€ã®ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã™ã€‚
-
-*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€
-グループã«è²æ¸¡ã•れãŸã€Œå†è²©ãƒ»ãƒ—レゼントä¸å¯ã€ã®ã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼
-オブジェクト: [N]
-
-
-
- ã“ã®åœŸåœ°åŒºç”»å†…ã«ã‚ã‚‹ã€
-[NAME]以外ã«ã‚ˆã‚‹æ‰€æœ‰ã®ã‚ªãƒ–ジェクトをã™ã¹ã¦ãれãžã‚Œã®æ‰€æœ‰è€…ã®ã€ŒæŒã¡ç‰©ã€ã«è¿”å´ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-æ“作を続行ã—ã¾ã™ã‹ï¼Ÿã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã•れãŸã€Œå†è²©ãƒ»ãƒ—レゼントå¯ã€ã®ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã™ã€‚
-
-*è¦å‘Š* ã“れã«ã‚ˆã‚Šã€
-グループã«è²æ¸¡ã•れãŸã€Œå†è²©ãƒ»ãƒ—レゼントä¸å¯ã€ã®ã‚ªãƒ–ジェクトã¯å‰Šé™¤ã•れã¾ã™ï¼
-オブジェクト: [N]
-
-
-
- å…¨ã¦ã®ãƒªã‚¹ãƒˆã•れãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ‰€æœ‰è€…ã«æœ¬å½“ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰å†…ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトを無効ã«ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®åœŸåœ°ã®åŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã®ã†ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ— [NAME] ã¨ã®é–“ã§å…±æœ‰ã—ã¦ã„ãªã„オブジェクトを所有者ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ
-
-オブジェクト: [N]
-
-
-
- スクリプトを無効ã«ã§ãã¾ã›ã‚“。
-ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰å…¨ä½“ãŒã€Œãƒ€ãƒ¡ãƒ¼ã‚¸æœ‰åйã€ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚
-æ¦å™¨ã‚’使用ã™ã‚‹ã«ã¯ã‚¹ã‚¯ãƒªãƒ—トã®å®Ÿè¡Œã‚’許å¯ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
- ç¾åœ¨è¤‡æ•°ã®é¢ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚
-ã“ã®ã¾ã¾ç¶šã‘ãŸå ´åˆã€ãƒ¡ãƒ‡ã‚£ã‚¢ã®åˆ¥ã€…ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚ªãƒ–ジェクトã®è¤‡æ•°ã®é¢ã«è¨å®šã•れã¾ã™ã€‚
-メディアを 1 ã¤ã®é¢ã ã‘ã«å–り付ã‘ã‚‹ã«ã¯ã€ã€Œé¢ã‚’é¸æŠžã€ã‚’é¸ã‚“ã§ã‚ªãƒ–ジェクトã®å¸Œæœ›ã™ã‚‹é¢ã‚’クリックã€ãれã‹ã‚‰ã€Œè¿½åŠ ã€ã‚’クリックã—ã¦ãã ã•ã„。
-
-
-
- ç€åœ°ç‚¹ã‚’è¨å®šã™ã‚‹ã«ã¯ã€ã“ã®åŒºç”»ã®å†…å´ã«
-ç«‹ã£ã¦ãã ã•ã„。
-
-
- å—ä¿¡è€…ã®æœ‰åйãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„。
-
-
- ã‚ãªãŸã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„。
-
-
- デフォルトã®ä»¶åã¾ãŸã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’付ã‘ã¦ã€ã‚¹ãƒŠãƒƒãƒ—ショットをé€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- スナップショットデータã®å‡¦ç†ã‚¨ãƒ©ãƒ¼
-
-
- スナップショットã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰åŒ–ã§ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¾ã—ãŸï¼
-
-
- 次ã®ç†ç”±ã§ã€ã‚¹ãƒŠãƒƒãƒ—ショットã®é€ä¿¡æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸï¼š [REASON]
-
-
- 次ã®ç†ç”±ã§ã€ãƒ¬ãƒãƒ¼ãƒˆã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]
-
-
- [SECOND_LIFE] ã¸ã®ãƒã‚°ã‚¤ãƒ³ã‚’ç¶šã‘ã‚‹ã«ã¯ã€åˆ©ç”¨è¦ç´„ã«åŒæ„ã—ã¦ãã ã•ã„。
-
-
- アウトフィットを装ç€ã§ãã¾ã›ã‚“。
-アウトフィットフォルダã«è¡£é¡žã€èº«ä½“部ä½ã€ã‚¢ã‚¿ãƒƒãƒãƒ¡ãƒ³ãƒˆãŒã‚りã¾ã›ã‚“。
-
-
- ã”ã¿ç®±ã«ã‚る衣類や身体部ä½ã®ç€ç”¨ã¯ã§ãã¾ã›ã‚“。
-
-
- オブジェクトを付ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚
-最大数㮠[MAX_ATTACHMENTS] 個を越ãˆã¦ã„ã¾ã™ã€‚ ã©ã‚Œã‹å–り外ã—ã¦ã‹ã‚‰ãŠè©¦ã—ãã ã•ã„。
-
-
- ã¾ã èªã¿è¾¼ã¾ã‚Œã¦ã„ãªã„ãŸã‚ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ を装ç€ã§ãã¾ã›ã‚“。後ã§ã‚„り直ã—ã¦ãã ã•ã„。
-
-
- 注æ„:記入æ¼ã‚Œã®ç®‡æ‰€ãŒã‚りã¾ã™ã€‚
-ã‚¢ãƒã‚¿ãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åを入力ã—ã¦ãã ã•ã„。
-
-[SECOND_LIFE] ã«å…¥ã‚‹ã«ã¯ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¿…è¦ã§ã™ã€‚今ã™ãアカウントを作æˆã—ã¾ã™ã‹ï¼Ÿ
-
- https://join.secondlife.com/index.php?lang=ja-JP
-
-
-
-
- ユーザーåã®ãƒ•ィールドã«ã‚¢ãƒã‚¿ãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚‚ã—ãã¯æ°åを入力ã—ã¦ã‹ã‚‰ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
- クラシファイド広告 [NAME] を削除ã—ã¾ã™ã‹ï¼Ÿ
-æ”¯æ‰•ã„æ¸ˆã¿ã®æ–™é‡‘ã¯è¿”金ã•れã¾ã›ã‚“。
-
-
-
- ã“ã®é¢ã«ã‚るメディアを削除ã™ã‚‹é¸æŠžã‚’ã—ã¾ã—ãŸã€‚
-ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- クラシファイド広告 [NAME] ã¸ã®å¤‰æ›´ã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- クラシファイド広告を出ã™ã«ã¯ã€è³‡é‡‘ãŒè¶³ã‚Šã¾ã›ã‚“。
-
-
-
- <nolink>[PICK]</nolink> を削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸã‚¢ã‚¦ãƒˆãƒ•ィットを削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [SECOND_LIFE] イベント Web ページã«ç§»å‹•ã—ã¾ã™ã‹ï¼Ÿ
-
- http://secondlife.com/events/?lang=ja-JP
-
-
-
-
- 表示ã™ã‚‹ææ¡ˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- 表示ã™ã‚‹å±¥æ´ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- [APP_NAME] ã‚’å†èµ·å‹•後ã«ã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚
-
-
- [APP_NAME] ã‚’å†èµ·å‹•後ã«ã‚ャッシュãŒç§»å‹•ã•れã¾ã™ã€‚
-ã”æ³¨æ„: ã‚ャッシュãŒã‚¯ãƒªã‚¢ã•れã¾ã™ã€‚
-
-
- ãƒãƒ¼ãƒˆã®è¨å®šã¯ [APP_NAME] ã‚’å†èµ·å‹•後ã«åæ˜ ã•れã¾ã™ã€‚
-
-
- æ–°ã—ã„スã‚ン㯠[APP_NAME] ã‚’å†èµ·å‹•後ã«è¡¨ç¤ºã•れã¾ã™ã€‚
-
-
- 言語ã®å¤‰æ›´ã¯ [APP_NAME] ã‚’å†èµ·å‹•後ã«åæ˜ ã•れã¾ã™ã€‚
-
-
- [SECOND_LIFE]ã® Web ページã«ç§»å‹•ã—ã€å…¥æœã‚ã‚‹ã„ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã®è©³ç´°ã‚’確èªã—ã¾ã™ã‹ï¼Ÿ
-
- http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
-
-
-
-
- 変更をä¿å˜ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚
-ステップãŒå¤šã™ãŽã¾ã™ã€‚
-ステップをã„ãã¤ã‹å‰Šé™¤ã—ã¦ã‹ã‚‰å†ä¿å˜ã—ã¦ãã ã•ã„
-
-
- ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚å°‘ã—å¾…ã£ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- ジェスãƒãƒ£ãƒ¼ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚オブジェクトã€ã¾ãŸã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトæŒã¡ç‰©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
-
-
- 次ã®ç†ç”±ã§ã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- ノートカードã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚オブジェクトã€ã¾ãŸã¯é–¢é€£ã™ã‚‹ã‚ªãƒ–ジェクトæŒã¡ç‰©ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
-
-
- 次ã®ç†ç”±ã§ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- ã‚ãªãŸã®ã‚¹ã‚¯ãƒªãƒ—トã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€å¤‰æ›´ã‚’å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-サーãƒãƒ¼ã®æœ€æ–°ä¿å˜ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ
-(**è¦å‘Š**:ã“ã®æ“ä½œå¾Œå…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“)
-
-
-
- 次ã®ç†ç”±ã§ã€ã‚¹ã‚¯ãƒªãƒ—トã®ä¿å˜ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- スクリプトã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚スクリプトãŒå…¥ã£ãŸã‚ªãƒ–ジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-オブジェクトã¯ç¯„囲外ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
-
-
- 次ã®ç†ç”±ã§ã€ã‚³ãƒ³ãƒ‘イルã—ãŸã‚¹ã‚¯ãƒªãƒ—トã®ä¿å˜æ™‚ã«å•題ãŒèµ·ã“りã¾ã—ãŸã€‚ [REASON]。 後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- ãƒã‚°ã‚¤ãƒ³ä½ç½®ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。
-ãƒã‚°ã‚¤ãƒ³ä½ç½®ã®æ¬„ã«ãƒªãƒ¼ã‚¸ãƒ§ãƒ³åを入力ã™ã‚‹ã‹ã€ã€Œæœ€å¾Œã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãŸå ´æ‰€ã€ã‹ã€Œãƒ›ãƒ¼ãƒ ã€ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
-
- スクリプトã®èµ·å‹•ã¾ãŸã¯åœæ¢ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚¹ã‚¯ãƒªãƒ—ãƒˆãŒæ ¼ç´ã•れã¦ã„るオブジェクトãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-オブジェクトãŒç¯„囲内ã«å˜åœ¨ã—ãªã„ã‹ã€ã¾ãŸã¯å‰Šé™¤ã•れãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
-
-
- ファイルをダウンãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。
-
-
- ファイル [[FILE]] を書ãè¾¼ã‚ã¾ã›ã‚“。
-
-
- ãŠä½¿ã„ã®ã‚³ãƒ³ãƒ”ューター㯠[APP_NAME] ã®å¿…è¦æœ€ä½Žé™ã®å‹•作環境を満ãŸã—ã¦ã„ã¾ã›ã‚“。 パフォーマンスã®ä½Žä¸‹ã‚’感ã˜ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 æã‚Œå…¥ã‚Šã¾ã™ãŒ [SUPPORT_SITE] ã§ã¯ã‚µãƒãƒ¼ãƒˆå¯¾è±¡å¤–ã®ã‚·ã‚¹ãƒ†ãƒ ã«é–¢ã™ã‚‹æŠ€è¡“的サãƒãƒ¼ãƒˆã¯è¡Œã£ã¦ãŠã‚Šã¾ã›ã‚“。
-
-[_URL] ã«ç§»å‹•ã—ã¦ç¢ºèªã‚’ã—ã¾ã™ã‹ï¼Ÿ
-
- http://secondlife.com/support/sysreqs.php?lang=ja
-
-
-
-
- ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã«ã¯ã€[APP_NAME] ãŒèªè˜ã§ããªã„ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ã‚«ãƒ¼ãƒ‰ãŒæè¼‰ã•れã¦ã„ã¾ã™ã€‚
-[APP_NAME] ã§ã¾ã テストã•れã¦ã„ãªã„最新ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®ãŸã‚ã ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ å•題ãªã„ã¨ã¯æ€ã„ã¾ã™ãŒã€ã‚°ãƒ©ãƒ•ィックã®è¨å®šã‚’調整ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
-(ミー > 環境è¨å®š > グラフィック)
-
-
-
- グラフィックドライãƒã‚’åˆæœŸåŒ–ä¸ã« [APP_NAME] ãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã—ã¾ã—ãŸã€‚
-ドライãƒã®ä¸€èˆ¬çš„ãªã‚¨ãƒ©ãƒ¼ã‚’防ããŸã‚ã«ã€ç”»è³ªãŒä½Žã«è¨å®šã•れã¾ã™ã€‚ ãã®ãŸã‚ã€ä¸€éƒ¨ã®ã‚°ãƒ©ãƒ•ィック特性ã«åˆ¶é™ãŒå‡ºã¾ã™ã€‚
-ãŠä½¿ã„ã®ã‚°ãƒ©ãƒ•ィックカードã®ãƒ‰ãƒ©ã‚¤ãƒã‚’アップデートã™ã‚‹ã‚ˆã†ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-画質ã¯ã€ç’°å¢ƒè¨å®š > グラフィック ã§è¨å®šã§ãã¾ã™ã€‚
-
-
- [REGION] ã§ã¯ã€åœ°å½¢ã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“。
-
-
- ã‚ãªãŸã«ã¯[ITEMS]ã¨ã„ã†ã‚¢ã‚¤ãƒ†ãƒ をコピーã™ã‚‹è¨±å¯ãŒã‚りã¾ã›ã‚“。他ã®ä½äººã«æä¾›ã™ã‚‹ã¨ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã‹ã‚‰å‰Šé™¤ã•れã¾ã™ã€‚本当ã«ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’è²ã‚Šã¾ã™ã‹ï¼Ÿ
-
-
-
- æŒã¡ç‰©ã®ã‚¢ã‚¤ãƒ†ãƒ を渡ã›ã¾ã›ã‚“。
-
-
- å–引ãŒã‚ャンセルã•れã¾ã—ãŸã€‚
-
-
- 一度㫠42 個以上ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯æ¸¡ã›ã¾ã›ã‚“。
-
-
- é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’æ¸¡ã™æ¨©é™ãŒã‚りã¾ã›ã‚“。
-
-
- ã‚ãªãŸã¯é¸æŠžã—㟠[COUNT] 個ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã®ã‚³ãƒ”ーを許ã•れã¦ã„ã¾ã›ã‚“。
-ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã‹ã‚‰å¤±ã‚れã¾ã™ã€‚
-本当ã«ã‚¢ã‚¤ãƒ†ãƒ を渡ã—ãŸã„ã§ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸãƒ•ã‚©ãƒ«ãƒ€ã‚’æ¸¡ã™æ¨©é™ãŒã‚りã¾ã›ã‚“
-
-
- ã“ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ
-ã‚¢ãƒã‚¿ãƒ¼ã¯ä¸€æ™‚çš„ã«å‹•ã‘ãªããªã‚Šã€ãƒãƒ£ãƒƒãƒˆã‚’å«ã‚インワールドã§ä½•ã‚‚ã§ããªããªã‚Šã¾ã™ã€‚
-
-
-
- [AVATAR_NAME]をフリーズã—ã¾ã™ã‹ï¼Ÿ
-フリーズã•れãŸäººã¯ä¸€æ™‚çš„ã«å‹•ã‘ãªããªã‚Šã€ãƒãƒ£ãƒƒãƒˆãªã©ã€ã“ã®ä¸–界ã«å¯¾ã™ã‚‹é–¢ã‚りをæŒã¤ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚
-
-
-
- ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰ [AVATAR_NAME] を追放ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰è¿½æ”¾ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [AVATAR_NAME] ã‚’ã‚ãªãŸã®åœŸåœ°ã‹ã‚‰è¿½æ”¾ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [GROUP_NAME] ã‹ã‚‰ [AVATAR_NAME] を追放ã—ã¾ã—ãŸ
-
-
- å–å¾—ã‚¨ãƒ©ãƒ¼ï¼šé¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ•°ãŒå¤šã™ãŽã¾ã™ã€‚
-
-
- å–得エラー:
-オブジェクトãŒè¤‡æ•°ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ã«ã¾ãŸãŒã£ã¦å˜åœ¨ã—ã¦ã„ã¾ã™ã€‚
-ã™ã¹ã¦åŒã˜ãƒªãƒ¼ã‚¸ãƒ§ãƒ³å†…ã«ç§»å‹•ã•ã›ã¦ã‹ã‚‰å–å¾—ã—ã¦ãã ã•ã„。
-
-
- [EXTRA]
-
-[_URL] ã«ç§»å‹•ã—ã¦ãƒªãƒ³ãƒ‡ãƒ³ãƒ‰ãƒ«è³¼å…¥ã«é–¢ã™ã‚‹æƒ…å ±ã‚’ç¢ºèªã—ã¾ã™ã‹ï¼Ÿ
-
- http://secondlife.com/app/currency/?lang=ja-JP
-
-
-
-
- [COUNT] 個ã®ã‚ªãƒ–ジェクトをリンクã§ãã¾ã›ã‚“。
-リンクã§ãã‚‹ã®ã¯æœ€å¤§ [MAX] 個ã§ã™ã€‚
-
-
- ã‚»ãƒƒãƒˆã§æƒã£ã¦ã„るオブジェクトã®ã¿ãƒªãƒ³ã‚¯ã§ãã¾ã™ã€‚
-複数ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- ã™ã¹ã¦ã®ã‚ªãƒ–ジェクトã®ä¿®æ£è¨±å¯ãŒãªã„ãŸã‚リンクã§ãã¾ã›ã‚“。
-
-ã©ã®ã‚ªãƒ–ジェクトもãƒãƒƒã‚¯ã•れã¦ãŠã‚‰ãšã€ã‚ãªãŸã®ã‚‚ã®ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。
-
-
- 所有者ãŒç•°ãªã‚‹ãŸã‚ã€ã‚ªãƒ–ジェクトをリンクã§ãã¾ã›ã‚“。
-
-è‡ªåˆ†ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクトã ã‘ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- 「 [FILE] ã€ã®æ‹¡å¼µåãŒç„¡åйã§ã™ã€‚
-
-ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æ‹¡å¼µåãŒæ£ã—ã„ã‹ã©ã†ã‹ã‚’確èªã—ã¦ãã ã•ã„。
-
-
- [EXTENSION] ã¯ç„¡åйã§ã™ã€‚
-æ£ã—ã„æ‹¡å¼µå:[VALIDS]
-
-
-
- èªã¿è¾¼ã¿ã®ãŸã‚ã«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れãŸã‚µã‚¦ãƒ³ãƒ‰ãƒ•ァイルを開ã‘ã¾ã›ã‚“:
-[FILE]
-
-
- RIFF WAVE ファイルã¨ã—ã¦èªè˜ã•れã¾ã›ã‚“:
-[FILE]
-
-
- PCM WAVE オーディオファイルã¨ã—ã¦èªè˜ã•れã¾ã›ã‚“:
-[FILE]
-
-
- ファイルã®ãƒãƒ£ãƒ³ãƒãƒ«æ•°ãŒç„¡åйã§ã™ï¼ˆãƒ¢ãƒŽãƒ©ãƒ«ã¾ãŸã¯ã‚¹ãƒ†ãƒ¬ã‚ªã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š
-[FILE]
-
-
- ファイルã®ã‚µãƒ³ãƒ—ルレートãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“(44.1k ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š
-[FILE]
-
-
- ファイルã®ãƒ¯ãƒ¼ãƒ‰ã‚µã‚¤ã‚ºãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“(8 ã¾ãŸã¯ 16 ビットã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰ï¼š
-[FILE]
-
-
- WAV ヘッダーã«ãƒ‡ãƒ¼ã‚¿ãƒãƒ£ãƒ³ã‚¯ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:
-[FILE]
-
-
- WAV ファイルã®ãƒãƒ£ãƒ³ã‚¯ã‚µã‚¤ã‚ºãŒé–“é•ã£ã¦ã„ã¾ã™ï¼š
-[FILE]
-
-
- オーディオファイルãŒé•·ã™ãŽã¾ã™ã€‚(最大 10 秒):
-[FILE]
-
-
- 「 [FILE] ã€ã«å•題ãŒã‚りã¾ã™ã€‚
-
-[ERROR]
-
-
- 書ãè¾¼ã¿ç”¨ã®ä¸€æ™‚圧縮サウンドファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“:[FILE]
-
-
- 䏿˜Žã® Vorbis ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã«å¤±æ•—: [FILE]
-
-
- 次ã®ãƒ•ァイルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ãŒã§ãã¾ã›ã‚“: [FILE]
-
-
- ユーザーåã¨ãƒ‘スワードを自動入力ã§ãã¾ã›ã‚“。ã“れã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¨å®šãŒå¤‰æ›´ã•れãŸå ´åˆã«èµ·ã“りã¾ã™
-
-
-
- ç ´æã—ãŸãƒªã‚½ãƒ¼ã‚¹ãƒ•ァイル: [FILE]
-
-
- 䏿˜Žã®ãƒªãƒ³ãƒ‡ãƒ³ãƒªã‚½ãƒ¼ã‚¹ãƒ•ァイルã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [FILE]
-
-
- 出力ファイルを作æˆã§ãã¾ã›ã‚“: [FILE]
-
-
- ç¾åœ¨ [APP_NAME] ã§ã¯ã€ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã®ä¸€æ‹¬ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。
-
-
- 次ã®ç†ç”±ã§ã€ã€Œ [FILE] ã€ã‚’アップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“: [REASON]
-ã‚ã¨ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- 「 [LANDMARK_NAME] ã€ã‚’「 [FOLDER_NAME] ã€ãƒ•ォルダã«è¿½åŠ ã—ã¾ã—ãŸã€‚
-
-
- ç¾åœ¨åœ°ã®ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’æ—¢ã«æŒã£ã¦ã„ã¾ã™ã€‚
-
-
-
- åœŸåœ°ã®æ‰€æœ‰è€…ãŒè¨±å¯ã—ã¦ã„ãªã„ãŸã‚ã€ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- 「リコンパイルã€ã§ãã¾ã›ã‚“。
-スクリプトã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- 「リコンパイルã€ã§ãã¾ã›ã‚“。
-
-ä¿®æ£ä¿®æ£æ¨©é™ã®ã‚るスクリプトã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- 「å†è¨å®šã€ãŒã§ãã¾ã›ã‚“。
-
-スクリプトã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- 「å†è¨å®šã€ãŒã§ãã¾ã›ã‚“。
-
-ä¿®æ£æ¨©é™ã®ã‚るスクリプトã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- ä¿®æ£æ¨©é™ã®ãªã„オブジェクトã®ã‚¹ã‚¯ãƒªãƒ—トã¯é–‹ãã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- スクリプトã®ã€Œå®Ÿè¡Œã€ãŒã§ãã¾ã›ã‚“。
-
-スクリプトã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- スクリプトを「実行ã—ãªã„ã€è¨å®šã«ã§ãã¾ã›ã‚“。
-
-スクリプトã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- ä¿å˜ã™ã‚‹ frontmost フãƒãƒ¼ã‚¿ãŒã‚りã¾ã›ã‚“。
-
-
- 指定ã—ãŸæ¤œç´¢ã‚¯ã‚¨ãƒªã¯å¤‰æ›´ã•れã€çŸã™ãŽã‚‹èªžå¥ã¯å–り除ã‹ã‚Œã¦ã„ã¾ã™ã€‚
-
-検索語å¥ï¼š [FINALQUERY]
-
-
- 指定ã—ãŸæ¤œç´¢èªžå¥ãŒçŸã™ãŽãŸãŸã‚ã€æ¤œç´¢ã¯è¡Œã‚れã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- テレãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚
-[REASON]
-
-
- テレãƒãƒ¼ãƒˆå‡¦ç†ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ ãƒã‚°ã‚¤ãƒ³ã—ç›´ã™å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
-ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒä½•åº¦ã‚‚å‡ºã‚‹å ´åˆã¯ã€[SUPPORT_SITE] ã‚’ã”確èªãã ã•ã„。
-
-
- リージョン間ã®ç§»å‹•ä¸ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ ãƒã‚°ã‚¤ãƒ³ã—ç›´ã™å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
-ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒä½•åº¦ã‚‚å‡ºã‚‹å ´åˆã¯ã€[SUPPORT_SITE] ã‚’ã”確èªãã ã•ã„。
-
-
- 申ã—訳ã”ã–ã„ã¾ã›ã‚“。テレãƒãƒ¼ãƒˆã¯ç¾åœ¨ã€ãƒ–ãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。
-ãれã§ã‚‚テレãƒãƒ¼ãƒˆã§ããªã„å ´åˆã¯ã€ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦å•題を解決ã—ã¦ãã ã•ã„。
-
-
- 申ã—訳ã”ã–ã„ã¾ã›ã‚“。ランドマークã®ç›®çš„地ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã«ã‚ˆã‚‹ãƒ†ãƒ¬ãƒãƒ¼ãƒˆæŽ¥ç¶šãŒå®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- 残念ãªãŒã‚‰ã€ç›®çš„地ã¸ã‚¢ã‚¯ã‚»ã‚¹ãŒè¨±å¯ã•れã¦ã„ãªã„ãŸã‚ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。
-
-
- 添付物ãŒã¾ã 届ã„ã¦ã„ã¾ã›ã‚“。テレãƒãƒ¼ãƒˆã‚’ã™ã‚‹å‰ã«ã‚ã¨æ•°ç§’é–“ãŠå¾…ã¡ã„ãŸã ãã‹ã€ã„ã£ãŸã‚“ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã€å†åº¦ãƒã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¢ã‚»ãƒƒãƒˆã‚ューãŒç¾åœ¨æ··ã¿åˆã£ã¦ã„ã‚‹ãŸã‚ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ã™ãã«å‡¦ç†ã™ã‚‹ã“ã¨ãŒé›£ã—ã„状æ³ã§ã™ã€‚
-数分後ã«ã‚„り直ã™ã‹ã€æ··é›‘ã—ã¦ã„ãªã„ä»–ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã§ãŠè©¦ã—ãã ã•ã„。
-
-
- 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’時間ã©ãŠã‚Šã«å®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。
-
-
- 申ã—訳ã”ã–ã„ã¾ã›ã‚“。システムã¯ãƒªãƒ¼ã‚¸ãƒ§ãƒ³é–“ã®ç§»å‹•を時間ã©ãŠã‚Šã«å®Œäº†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。
-
-
- テレãƒãƒ¼ãƒˆç›®çš„地を見ã¤ã‘られã¾ã›ã‚“。目的地ãŒä¸€æ™‚çš„ã«åˆ©ç”¨ã§ããªã„状態ã‹ã€ã™ã§ã«æ¶ˆæ»…ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚数分後ã«ã‚„り直ã—ã¦ãã ã•ã„。
-
-
- æŒã¡ç‰©ã‚·ã‚¹ãƒ†ãƒ ã¯ç¾åœ¨åˆ©ç”¨ã§ãã¾ã›ã‚“。
-
-
- 土地所有者è¨å®šãŒã§ãã¾ã›ã‚“:
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- 複数ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ãŒé¸æŠžã•れãŸãŸã‚ã€åœŸåœ°ã®æ‰€æœ‰æ¨©ã‚’å–å¾—ã§ãã¾ã›ã‚“。
-é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã€ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- ã“ã®åŒºç”»ã¯ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‡ºã•れã¦ã„ã¾ã™ã€‚ 所有権を変更ã™ã‚‹ã¨ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã¯ã‚ャンセルã¨ãªã‚Šã€æ—¢ã«ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«å‚åŠ ã—ã¦ã„ã‚‹ä½äººãŒã„れã°ãã®äººã«è¿·æƒ‘ã‚’ã‹ã‘ã¦ã—ã¾ã„ã¾ã™ã€‚
-所有権を変更ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- コンテンツ化ã¯ä¸å¯èƒ½ã§ã™ï¼š
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- コンテンツ化ã¯ä¸å¯èƒ½ã§ã™ï¼š
-土地ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-リージョンãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-
-
- 土地を購入ã§ãã¾ã›ã‚“:
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- 土地を購入ã§ãã¾ã›ã‚“:
-ã“ã®åœŸåœ°ãŒã‚るリージョンを見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“
-
-
- [APP_NAME] ãŒã“ã®å–å¼•ä¾¡æ ¼ã‚’è¦‹ç©ã‚‚ã‚‹ã¾ã§ã¯ã€åœŸåœ°ã®è³¼å…¥ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“:
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“:
-グループãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“:
-ã“ã®åœŸåœ°ãŒã‚るリージョンãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“:
-複数ã®åŒºç”»ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚
-
-区画を 1 ã¤é¸æŠžã—ã¦ãã ã•ã„。
-
-
- åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“:
-サーãƒãƒ¼ã‹ã‚‰ã®æ‰€æœ‰æ¨©æƒ…å ±ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚
-
-å†åº¦ã€è©¦ã¿ã¦ãã ã•ã„。
-
-
- åœŸåœ°ã‚’è²æ¸¡ã§ãã¾ã›ã‚“:
-[REGION] ã§ã¯åœŸåœ°ã®è²æ¸¡ãŒè¨±ã•れã¦ã„ã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-サーãƒãƒ¼ãŒåŒºç”»æƒ…å ±ã‚’æ›´æ–°ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™ã€‚
-
-ã‚‚ã†å°‘ã—後ã§ã‚„り直ã—ã¦ãã ã•ã„。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-ã‚ãªãŸã¯ã€é¸æŠžã—ãŸåŒºç”»ã®ã™ã¹ã¦ã‚’所有ã—ã¦ã„ã¾ã›ã‚“。
-
-区画を 1 ã¤é¸æŠžã—ã¦ãã ã•ã„。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-ã‚ãªãŸã¯ã“ã®åœŸåœ°ã‚’手放ã™ã“ã¨ã‚’許å¯ã•れã¦ã„ã¾ã›ã‚“。
-ã‚ãªãŸã®åŒºç”»ã¯ç·‘色ã§è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚
-
-
- 土地を放棄ã§ãã¾ã›ã‚“:
-ã“ã®åœŸåœ°ãŒã‚るリージョンãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-[REGION] ã§ã¯åœŸåœ°ã®è²æ¸¡ãŒè¨±ã•れã¦ã„ã¾ã›ã‚“。
-
-
- åœŸåœ°ã‚’ç ´æ£„ã§ãã¾ã›ã‚“:
-åŒºç”»å…¨ä½“ã‚’é¸æŠžã—ã¦ç ´æ£„ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-åŒºç”»å…¨ä½“ã‚’é¸æŠžã™ã‚‹ã‹ã€ã¾ãŸã¯ã€ã¾ãšæœ€åˆã«åŒºç”»ã‚’分割ã—ã¦ãã ã•ã„。
-
-
- ã‚ãªãŸã¯ã€[AREA] 平方メートルã®åœŸåœ°ã‚’ç ´æ£„ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-ã“ã®åŒºç”»ã‚’ç ´æ£„ã™ã‚‹ã¨ã‚ãªãŸã®åœŸåœ°ã§ã¯ãªããªã‚Šã¾ã™ãŒã€
-L$ ã¯è¿”金ã•れã¾ã›ã‚“。
-
-åœŸåœ°ã‚’ç ´æ£„ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 土地を分割ã§ãã¾ã›ã‚“:
-
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- 土地を分割ã§ãã¾ã›ã‚“:
-
-区画全体ãŒé¸æŠžã•れã¦ã„ã¾ã™ã€‚
-区画ã®ä¸€éƒ¨ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- ã“ã®åœŸåœ°ã‚’分割ã™ã‚‹ã¨ã€2 ã¤ã®åŒºç”»ã«åˆ¥ã‚Œã¾ã™ã€‚
-区画ã”ã¨ã®è¨å®šãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ ã“ã®æ“作を行ã†ã¨ã€ä¸€éƒ¨ã®è¨å®šãŒãƒ‡ãƒ•ォルトã«ãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚
-
-土地ã®åˆ†å‰²æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 土地を分割ã§ãã¾ã›ã‚“:
-ã“ã®åœŸåœ°ãŒã‚るリージョンãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-
-
- 土地を統åˆã§ãã¾ã›ã‚“:
-ã“ã®åœŸåœ°ãŒã‚るリージョンãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-
-
- 土地を統åˆã§ãã¾ã›ã‚“ã§ã—ãŸï¼š
-区画ãŒé¸å®šã•れã¦ã„ã¾ã›ã‚“。
-
-
- 土地を統åˆã§ãã¾ã›ã‚“:
-区画㌠1 ã¤ã—ã‹é¸æŠžã•れã¦ã„ã¾ã›ã‚“。
-
-両方ã®åŒºç”»ã‚’ã¾ãŸã„ã§åœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- 土地を統åˆã§ãã¾ã›ã‚“:
-区画を 1 ã¤ä»¥ä¸Šé¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-両方ã®åŒºç”»ã‚’ã¾ãŸã„ã§åœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- ã“ã®åœŸåœ°ã‚’çµ±åˆã™ã‚‹ã¨ã€é¸æŠžã•れãŸé•·æ–¹å½¢ã«äº¤å·®ã™ã‚‹å…¨ã¦ã®åŒºç”»ã‚’基ã«ã—ã¦ã€å¤§ããªåŒºç”»ãŒ 1 ã¤ä½œæˆã•れã¾ã™ã€‚
-æ–°ã—ã„区画ã®åå‰ã¨ã‚ªãƒ—ションをå†è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-土地を統åˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã‚¢ã‚¤ãƒ†ãƒ をコピーã€è¡¨ç¤ºã™ã‚‹å‰ã«ã€ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ä¿å˜ãŒå¿…è¦ã§ã™ã€‚ ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ã‚ãªãŸã®æŒã¡ç‰©ã«ã‚³ãƒ”ーã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- è§£åƒåº¦ã‚’ [RESX]x[RESY] ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- ã‚¨ãƒ©ãƒ¼ï¼šæœªå®šç¾©ã®æ¤ç‰©ï¼š[SPECIES]
-
-
- ã‚¨ãƒ©ãƒ¼ï¼šæœªå®šç¾©ã®æ¨¹æœ¨ï¼š[SPECIES]
-
-
- 「 [NAME] ã€ã‚’衣類ã®ãƒ•ァイルã«ä¿å˜ã§ãã¾ã›ã‚“。
-コンピューターã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã‚’å°‘ã—増やã—ã¦ã‹ã‚‰ã€ã‚‚ã†ä¸€åº¦ä¿å˜ã—ã¦ã¿ã¦ãã ã•ã„。
-
-
- 「 [NAME] ã€ã‚’ä¿å˜ã§ãã¾ã›ã‚“。
-通常ã“れã¯ä¸€æ™‚çš„ãªã‚¨ãƒ©ãƒ¼ã§ã™ã€‚ 数分後ã«ã‚‚ã†ä¸€åº¦ç€ç”¨ç‰©ã‚’カスタマイズ・ä¿å˜ã—ã¦ãã ã•ã„。
-
-
- ã—ã¾ã£ãŸã€ [SECOND_LIFE] ã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆã•れã¦ã—ã¾ã„ã¾ã—ãŸã€‚
- [MESSAGE]
-
-
-
- グループ用ã®åœŸåœ°ã®è³¼å…¥ãŒã§ãã¾ã›ã‚“:
-ã‚ãªãŸã«ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã‚°ãƒ«ãƒ¼ãƒ—ã®ãŸã‚ã«åœŸåœ°ã‚’購入ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。
-
-
- フレンド登録ã™ã‚‹ã¨ã€ãŠäº’ã„ã®ç¾åœ¨åœ°ã®åœ°å›³ã¸ã®è¡¨ç¤ºè¨±å¯ã€ã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã®è¡¨ç¤ºè¨å®šãŒã§ãã¾ã™ã€‚
-
-[NAME] ã«ãƒ•レンドシップを申ã—出ã¾ã™ã‹ï¼Ÿ
-
-
-
- ç€ç”¨ä¸ã®ã‚¢ã‚¦ãƒˆãƒ•ィットを新ã—ã„アウトフットã¨ã—ã¦ä¿å˜ï¼š
-
-
-
- アイテムを別åã§æŒã¡ç‰©ã«ä¿å˜ï¼š
-
-
-
- æ–°ã—ã„アウトフィットã®åå‰ï¼š
-
-
-
- フレンドリストã‹ã‚‰ [NAME] を削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- フレンドリストã‹ã‚‰è¤‡æ•°ã®ãƒ•レンドを削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- **[AVATAR_NAME]**
-所有ã®ã™ã¹ã¦ã®ã‚¹ã‚¯ãƒªãƒ—トオブジェクトをã“ã®ã‚·ãƒ 内ã®ä»–ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- **[AVATAR_NAME]**
-所有ã®ã™ã¹ã¦ã®ã‚¹ã‚¯ãƒªãƒ—トオブジェクトをã“ã®ã‚·ãƒ 内ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- **[AVATAR_NAME]**
-所有ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクト(スクリプトオブジェクトã¨éžã‚¹ã‚¯ãƒªãƒ—トオブジェクト)を
-ã“ã®ã‚·ãƒ 内ã®ã™ã¹ã¦ã®åœŸåœ°ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- クラシファイドã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。
-
-
- åºƒå‘Šæ–™ã¯æœ€ä½Ž L$ [MIN_PRICE] å¿…è¦ã§ã™ã€‚
-
-金é¡ã‚’増やã—ã¦ãã ã•ã„。
-
-
- ã“ã“ã«ãƒªãƒ³ã‚¯ã•れãŸã‚¢ã‚¤ãƒ†ãƒ ãŒå°‘ãªãã¨ã‚‚1ã¤ã‚りã¾ã™ã€‚ ã“ã®ã‚¢ã‚¤ãƒ†ãƒ を削除ã™ã‚‹ã¨ã“ã“ã«ãƒªãƒ³ã‚¯ã•れãŸã‚‚ã®ãŒæ©Ÿèƒ½ã—ãªããªã‚Šã¾ã™ã€‚ リンクを先ã«å‰Šé™¤ã™ã‚‹ã“ã¨ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚
-
-ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ を削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®ã†ã¡ã€å°‘ãªãã¨ã‚‚ 1 ã¤ãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®ã†ã¡ã€å°‘ãªãã¨ã‚‚ 1 ã¤ãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã®ã†ã¡ã€å°‘ãªãã¨ã‚‚ 1 ã¤ãŒã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ã‚りã¾ã›ã‚“。
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚
-å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚
-å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ã‚りã¾ã›ã‚“。
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。
-å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ã‚りã¾ã›ã‚“。
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚
-å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒã‚³ãƒ”ーã§ãã¾ã›ã‚“。
-å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ã‚りã¾ã›ã‚“。
-
-本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚
-
-本当ã«ã“ã®ã¾ã¾å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- å–å¾—ã—よã†ã¨ã—ã¦ã„るオブジェクトã«ã¯ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
-ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトをå–å¾—ã™ã‚‹ã¨ã€æ¬¡ã®æ‰€æœ‰è€…ã®æ¨©é™ãŒãã®ã‚ªãƒ–ジェクトã«é©ç”¨ã•れã¾ã™ã€‚
-ãã®ãŸã‚ã€å°†æ¥ã€ä¿®æ£ã‚„コピーã®èƒ½åŠ›ãŒåˆ¶é™ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
-
-本当ã«ã“ã®ã¾ã¾å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- å°‘ãªãã¨ã‚‚ 1 ã¤ã®ã‚ªãƒ–ジェクトãŒãƒãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚
-å–å¾—ã—よã†ã¨ã—ã¦ã„るオブジェクトã«ã¯ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
-ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ãªã„オブジェクトをå–å¾—ã™ã‚‹ã¨ã€æ¬¡ã®æ‰€æœ‰è€…ã®æ¨©é™ãŒãã®ã‚ªãƒ–ジェクトã«é©ç”¨ã•れã¾ã™ã€‚
-ãã®ãŸã‚ã€å°†æ¥ã€ç·¨é›†ã‚„コピーã®èƒ½åŠ›ãŒåˆ¶é™ã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
-ã“ã®é¸æŠžå†…容ã®ã¾ã¾ã§ç¶šè¡Œã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€
-
-本当ã«ã“ã®ã¾ã¾å–å¾—ã‚’ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- 複数ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ãŒé¸æŠžã•れãŸãŸã‚ã€åœŸåœ°ã‚’購入ã§ãã¾ã›ã‚“。
-
-é¸æŠžã™ã‚‹é¢ç©ã‚’å°ã•ãã—ã¦ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- ã“ã®åŒºç”»ã®è²æ¸¡ã«éš›ã—ã¦ã¯ã€
-ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒå分ãªåœŸåœ°ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚’ä¿æœ‰ãŠã‚ˆã³ç¶æŒã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-土地ã®è³¼å…¥ä¾¡æ ¼ã¯ã€æ‰€æœ‰è€…ã«è¿”金ã•れã¾ã›ã‚“ã€‚è²æ¸¡ã•れãŸåŒºç”»ãŒå£²ã‚Œã‚‹ã¨ã€å£²ä¸Šé‡‘é¡ã¯ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã«å‡ç‰ã«åˆ†é…ã•れã¾ã™ã€‚
-
-ã“ã® [AREA] 平方メートルã®åœŸåœ°ã‚’ã€ã‚°ãƒ«ãƒ¼ãƒ—
-「 [GROUP_NAME] ã€ã«è²æ¸¡ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®åŒºç”»ãŒè²æ¸¡ã•れるã¨ã€ã‚°ãƒ«ãƒ¼ãƒ—ã¯ãã®åœŸåœ°åˆ©ç”¨æ–™ã¨ã—ã¦ååˆ†ãªæ®‹é«˜ã‚’ç¶æŒã—ã¦ã„ãå¿…è¦ãŒã‚りã¾ã™ã€‚
-è²æ¸¡ã«ã¯åŒæ™‚ã« [NAME] ã‹ã‚‰ã‚°ãƒ«ãƒ¼ãƒ—ã¸ã®åœŸåœ°ã®è²¢çŒ®ãŒå«ã¾ã‚Œã¾ã™ã€‚
-土地ã®è³¼å…¥ä¾¡æ ¼ã¯æ‰€æœ‰è€…ã«è¿”金ã•れã¾ã›ã‚“ã€‚è²æ¸¡ã•れãŸåŒºç”»ãŒå£²å´ã•れるã¨ã€è²©å£²ä¾¡æ ¼ã¯ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã®é–“ã§å‡ç‰ã«åˆ†é…ã•れã¾ã™ã€‚
-
-ã“ã® [AREA] m² ã®åœŸåœ°ã‚’ [GROUP_NAME] ã¨ã„ã†ã‚°ãƒ«ãƒ¼ãƒ—ã«è²æ¸¡ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- -safe オプションを指定ã—ãŸã®ã§ã€
-表示è¨å®šã¯ã‚»ãƒ¼ãƒ•レベルã«è¨å®šã•れã¦ã„ã¾ã™ã€‚
-
-
- 表示è¨å®šã¯ã€ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ æ§‹æˆã«åŸºã¥ã„ã¦æŽ¨å¥¨ã•れãŸãƒ¬ãƒ™ãƒ«ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚
-
-
- [ERROR_MESSAGE]
-
-
-
- 目的地ã¯ç¾åœ¨ã”利用ã„ãŸã ã‘ã¾ã›ã‚“。
-è¿‘ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ç§»å‹•ã—ã¾ã—ãŸã€‚
-
-
- å‰å›žã„ãŸå ´æ‰€ã¯ç¾åœ¨ã”利用ã„ãŸã ã‘ã¾ã›ã‚“。
-è¿‘ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ç§»å‹•ã—ã¾ã—ãŸã€‚
-
-
- ホームãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ç¾åœ¨ã”利用ã„ãŸã ã‘ã¾ã›ã‚“。
-è¿‘ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ç§»å‹•ã—ã¾ã—ãŸã€‚
-æ–°ãŸã«ãƒ›ãƒ¼ãƒ ã‚’è¨å®šã—ç›´ã™å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
-
-
- ç¾åœ¨è¡£é¡žã‚’ダウンãƒãƒ¼ãƒ‰ä¸ã§ã™ã€‚
-ã“ã®ã¾ã¾ [SECOND_LIFE] を通常通りã”使用ã„ãŸã ã‘ã¾ã™ã€‚他人ã‹ã‚‰ã¯ã‚ãªãŸã¯æ£ã—ã表示ã•れã¾ã™ã€‚
-
-
-
- [APP_NAME] ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå®Œäº†ã—ã¾ã—ãŸã€‚
-
-[SECOND_LIFE] を使ã£ãŸã“ã¨ãŒãªã„å ´åˆã¯ã€ãƒã‚°ã‚¤ãƒ³ã™ã‚‹å‰ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆã‚’行ã£ã¦ãã ã•ã„。
-[http://join.secondlife.com/?lang=ja-JP] ã§æ–°ã—ã„アカウントを作æˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 接続ãŒãªã‹ãªã‹ã§ãã¾ã›ã‚“。 ãŠä½¿ã„ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã‹ã€[SECOND_LIFE_GRID] ã®å•題ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
-
-インターãƒãƒƒãƒˆæŽ¥ç¶šã‚’確èªã—ã¦ã‹ã‚‰æ•°åˆ†å¾Œã«å†æŽ¥ç¶šã™ã‚‹ã‹ã€ãƒ˜ãƒ«ãƒ—をクリックã—㦠[SUPPORT_SITE] ã‚’ã”覧ã«ãªã‚‹ã‹ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’クリックã—ã¦ãƒ›ãƒ¼ãƒ ã«ç§»å‹•ã—ã¦ã¿ã¦ãã ã•ã„。
-
- http://jp.secondlife.com/support/
-
-
-
-
- ã¾ã‚‚ãªãã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
-
-矢å°ã‚ーを使用ã—ã¦æ©ãã¾ã™ã€‚
-ヘルプãŒå¿…è¦ãªã¨ãã‚„ [SECOND_LIFE] ã«ã¤ã„ã¦çŸ¥ã‚ŠãŸã„ã¨ãã¯ã€
-F1 ã‚ーを押ã—ã¦ãã ã•ã„。
-男性ã‚ã‚‹ã„ã¯å¥³æ€§ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-ã‚ãªãŸã®æ±ºå®šã¯å¾Œã§å¤‰æ›´ã§ãã¾ã™ã€‚
-
-
-
- ç¾åœ¨ã®ã‚°ãƒªãƒƒãƒ‰ï¼ˆ[CURRENT_GRID])ã¨ã¯ã‚°ãƒªãƒƒãƒ‰ï¼ˆ[GRID])ãŒç•°ãªã‚‹ãŸã‚ã€[SLURL] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ ビューワを閉ã˜ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
-
- サーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-[REASON]
-
-サブジェクトå: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-æ¬¡ã®æ›´æ–°æ—¥ï¼š [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-ã‚ー使用法: [KEYUSAGE]
-æ‹¡å¼µã‚ー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトã‚ーèªè˜åˆ¥å: [SUBJECTKEYIDENTIFIER]
-
-
-
- ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®èªè¨¼æ©Ÿé–¢ã¯ä¸æ˜Žã§ã™ã€‚
-
-èªè¨¼æƒ…å ±ï¼š
-サブジェクトå: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-æ¬¡ã®æ›´æ–°æ—¥ï¼š [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-ã‚ー使用法: [KEYUSAGE]
-æ‹¡å¼µã‚ー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトã‚ーèªè˜åˆ¥å: [SUBJECTKEYIDENTIFIER]
-
-ã“ã®èªè¨¼å±€ã‚’ä¿¡é ¼ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [NAME] L$[PRICE] 残高ä¸è¶³ã®ãŸã‚実行ä¸å¯ã§ã™ã€‚
-
-
- [NAME] ã¯ã€ã‚ãªãŸã«ã‚ªãƒ–ジェクトã®ç·¨é›†æ¨©é™ã‚’与ãˆã¾ã—ãŸã€‚
-
-
- [NAME] ã®ã‚ªãƒ–ジェクトを編集ã™ã‚‹æ¨©é™ã¯å–り消ã•れã¾ã—ãŸã€‚
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®åœ°å›³ã®ã‚ャッシュを消去ã—ã¾ã™ã€‚
-デãƒãƒƒã‚°ç›®çš„ã®ã¿ã«ä¾¿åˆ©ãªæ“作ã§ã™ã€‚
-(作æˆä¸ã¯ 5 分間経ã¤ã¨ã€å…¨å“¡ã®åœ°å›³ãŒå†åº¦ãƒã‚°ã‚¤ãƒ³å¾Œã«æ›´æ–°ã•れã¾ã™ï¼‰
-
-
-
- 一度㫠1 ã¤ä»¥ä¸Šã®ã‚ªãƒ–ジェクトを買ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 オブジェクトを 1 ã¤ã ã‘é¸ã‚“ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- 一度ã«è¤‡æ•°ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ä¸èº«ã‚’コピーã§ãã¾ã›ã‚“。
-オブジェクトを 1 ã¤ã ã‘é¸æŠžã—ã¦ã€ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ã„ã‚‹å…¨ã¦ã®ä½äººã‚’ホームã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [USER_NAME] ãŒæ‰€æœ‰ã—ã¦ã„るオブジェクトを返å´ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 地域テクスãƒãƒ£ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸï¼š
-地形テクスãƒãƒ£[TEXTURE_NUM]ã¯ã€ç„¡åйã®ãƒ“ット深度[TEXTURE_BIT_DEPTH]ã§ã™ã€‚
-
-テクスãƒãƒ£[TEXTURE_NUM]ã‚’24ビット512x512ã‹ãれ以下ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨äº¤æ›ã—ã€ã€Œé©ç”¨ã€ã‚’å†åº¦ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。
-
-
- 地域テクスãƒãƒ£ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸï¼š
-地形テクスãƒãƒ£ã€Œ [TEXTURE_NUM] ã€ã¯ã€[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] ã§ã¯å¤§ãã™ãŽã¾ã™ã€‚
-
-「 [TEXTURE_NUM] ã€ã‚’ 24 ビット 512x512 ã‹ãれ以下ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨äº¤æ›ã—ã€ã€Œé©ç”¨ã€ã‚’å†åº¦ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。
-
-
- アップãƒãƒ¼ãƒ‰ã‚’é–‹å§‹ã—ã¾ã—ãŸã€‚ 接続速度ã«ã‚ˆã£ã¦ã¯ã€æœ€å¤§ 2 分間ã‹ã‹ã‚Šã¾ã™ã€‚
-
-
- ç¾åœ¨ã®åœ°å½¢ã‚’構築ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-ã“ã®æ“作を行ã†ã¨ã€ç¾åœ¨ã®åœ°å½¢ãŒä¸Šæ˜‡ãƒ»ä¸‹é™ã®åˆ¶é™ç¯„囲ã®ä¸å¿ƒã¨ãªã‚Šã€ã€Œå¾©å…ƒã€ãƒ„ールã®ãƒ‡ãƒ•ォルトã«ãªã‚Šã¾ã™ã€‚
-æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 許å¯ä½äººã¯ [MAX_AGENTS] 人ã¾ã§ã§ã™ã€‚
-
-
- ç¦æ¢ä½äººã¯ [MAX_BANNED] 人ã¾ã§ã§ã™ã€‚
-
-
- [NUM_ADDED] 個ã®ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã‚’è¿½åŠ ã—よã†ã¨ã—ã¦å¤±æ•—ã—ã¾ã—ãŸï¼š [MAX_AGENTS] [LIST_TYPE] 制é™ã‚’ [NUM_EXCESS] 個超éŽã—ã¦ã„ã¾ã™ã€‚
-
-
- 許å¯ã‚°ãƒ«ãƒ¼ãƒ—㯠[MAX_GROUPS] グループã¾ã§ã§ã™ã€‚
-
-
-
- ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã¯ [MAX_MANAGER] 人ã¾ã§ã§ã™ã€‚
-
-
- ä¸å‹•産オーナーをä¸å‹•産ã®ã€Œç¦æ¢ä½äººã€ãƒªã‚¹ãƒˆã«è¿½åŠ ã§ãã¾ã›ã‚“。
-
-
- 衣類ãŠã‚ˆã³ã‚·ã‚§ã‚¤ãƒ—ãŒèªã¿è¾¼ã¾ã‚Œã‚‹ã¾ã§ã¯ã€å®¹å§¿ã®å¤‰æ›´ã¯ã§ãã¾ã›ã‚“。
-
-
- クラシファイド広告ã®åå‰ã¯ã€ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã‹æ•°å—ã§å§‹ã‚ã¾ã™ã€‚å¥èªç‚¹ã§ã¯å§‹ã‚られã¾ã›ã‚“。
-
-
- オブジェクトãŒè²©å£²å¯¾è±¡ã§ã¯ãªã„ãŸã‚ã€ã‚ªãƒ–ジェクトã®è³¼å…¥ãŒã§ãã¾ã›ã‚“。
-販売対象ã®ã‚ªãƒ–ジェクトを指定ã—ã¦ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- æœªåŠ å·¥ã®åœ°å½¢ãƒ•ァイルをダウンãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸï¼š
-[DOWNLOAD_PATH]
-
-
- [APP_NAME] ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-[APP_NAME] ã‚’ã”利用ã«ãªã‚‹ã«ã¯ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã™ã€‚
-
-
-
- [APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスå‘上ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-
-
-
- [APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスå‘上ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-
-
-
- [APP_NAME] ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-[APP_NAME] ã‚’ã”利用ã«ãªã‚‹ã«ã¯ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã™ã€‚
-
-
-
- [APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスå‘上ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-
-
-
- [APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスå‘上ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-
-
-
- [APP_NAME] ã®æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-[APP_NAME] ã‚’ã”利用ã«ãªã‚‹ã«ã¯ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã™ã€‚
-
-ã‚ãªãŸã®ã‚¢ãƒ—リケーションフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスå‘上ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-
-ã‚ãªãŸã®ã‚¢ãƒ—リケーションフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã”利用å¯èƒ½ã§ã™ã€‚
-[MESSAGE]
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“ãŒã€ãƒ‘フォーマンスå‘上ã®ãŸã‚ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’ãŠã™ã™ã‚ã—ã¾ã™ã€‚
-
-ã‚ãªãŸã®ã‚¢ãƒ—リケーションフォルダã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ビューワã®ã‚¢ãƒƒãƒ—デートをインストールä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚
-http://secondlife.com/download ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。
-
-
-
- å¿…è¦ãªã‚¢ãƒƒãƒ—デートをインストールã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-[APP_NAME] ãŒã‚¢ãƒƒãƒ—デートã•れるã¾ã§ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã›ã‚“。
-
-http://secondlife.com/download ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。
-
-
-
- ãŠä½¿ã„ã® Second Life ã«å¿…è¦ãªã‚¢ãƒƒãƒ—デートãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã›ã‚“。
-
-ã“ã®ã‚¢ãƒƒãƒ—デートã¯ã€http://www.secondlife.com/downloads ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¦ã€ä»Šã™ãインストールã§ãã¾ã™ã€‚
-
-
-
- ãŠä½¿ã„ã® [APP_NAME] ã«å¿…è¦ãªã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸã€‚
-ãƒãƒ¼ã‚¸ãƒ§ãƒ³ [VERSION] [[RELEASE_NOTES_FULL_URL] ã“ã®ã‚¢ãƒƒãƒ—デートã«é–¢ã™ã‚‹æƒ…å ±]
-
-
-
- ãŠä½¿ã„ã® [APP_NAME] ã«å¿…è¦ãªã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸã€‚
-ãƒãƒ¼ã‚¸ãƒ§ãƒ³ [VERSION] [[RELEASE_NOTES_FULL_URL] ã“ã®ã‚¢ãƒƒãƒ—デートã«é–¢ã™ã‚‹æƒ…å ±]
-
-
-
- å¿…è¦ãªã‚½ãƒ•トウェアã®ã‚¢ãƒƒãƒ—デートをダウンãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸã€‚
-ãƒãƒ¼ã‚¸ãƒ§ãƒ³ [VERSION]
-
-アップデートをインストールã™ã‚‹ã«ã¯ [APP_NAME] ã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
-
- アップデートをインストールã™ã‚‹ã«ã¯ [APP_NAME] ã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
-
- ã“ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’è²æ¸¡ã™ã‚‹ã¨ã‚°ãƒ«ãƒ¼ãƒ—ã¯ä»¥ä¸‹ã®ã“ã¨ãŒå¯èƒ½ã§ã™ï¼š
-* ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã‚れ㟠L$ ã‚’å—é ˜ã—ã¾ã™ã€‚
-
-
-
- Web ブラウザを開ã„ã¦ã“ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を表示ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [http://jp.secondlife.com/account/ マイアカウント] ページã«ç§»å‹•ã—ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’管ç†ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [SECOND_LIFE] Wiki ã§ã€ã‚»ã‚ュリティå•é¡Œã‚’å ±å‘Šã™ã‚‹æ–¹æ³•ã‚’ã”覧ãã ã•ã„。
-
-
-
- [SECOND_LIFE] å“質ä¿è¨¼é–¢é€£ Wiki ã‚’ã”覧ãã ã•ã„。
-
-
-
- [SECOND_LIFE] ã®ãƒ‘ブリックå•題トラッカーã§ã€
-ãƒã‚°ã‚„ãã®ä»–ã®å•é¡Œã‚’å ±å‘Šã§ãã¾ã™ã€‚
-
-
-
- Linden å…¬å¼ãƒ–ãƒã‚°ã§ã€æœ€æ–°ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚„æƒ…å ±ã‚’å…¥æ‰‹ã—ã¦ãã ã•ã„。
-
-
-
- スクリプトガイドを開ãã¾ã™ã‹ï¼Ÿ
-
-
-
- LSL ãƒãƒ¼ã‚¿ãƒ«ã§ã‚¹ã‚¯ãƒªãƒ—トã«é–¢ã™ã‚‹æƒ…å ±ã‚’ç¢ºèªã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’ã€æ‰€æœ‰è€…ã«è¿”å´ã—ã¾ã™ã‹ï¼Ÿ
-「å†è²©ãƒ»ãƒ—レゼントå¯ã€ã®è²æ¸¡ã•れãŸã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã™ã€‚
-
-*è¦å‘Š* 「å†è²©ãƒ»ãƒ—レゼントä¸å¯ã€ã®è²æ¸¡ã•れãŸã‚ªãƒ–ジェクトã¯ã€å‰Šé™¤ã•れã¾ã™ï¼
-
-
-
- ç¾åœ¨ã‚ãªãŸã¯ [GROUP] ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚
-ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を抜ã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- 本当ã«ä½äººå…¨å“¡ã‚’グリッドã‹ã‚‰è¿½ã„出ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- リンデンをブãƒãƒƒã‚¯ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
-
- æ—¢ã«å£²ã‚Šå‡ºã—ä¸ã®åŒºç”»ãªã®ã§ã‚ªãƒ¼ã‚¯ã‚·ãƒ§ãƒ³ã«ã‹ã‘ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 オークションã«ã‹ã‘ãŸã„å ´åˆã¯å£²ã‚Šå‡ºã—è¨å®šã‚’解除ã—ã¦ã‹ã‚‰è¡Œã£ã¦ãã ã•ã„。
-
-
- ã“ã®åå‰ã¯æ—¢ã«ãƒ–ãƒãƒƒã‚¯æ¸ˆã¿ã§ã™ã€‚
-
-
-
- コンテンツを削除ã™ã‚‹ã¨ã€è¨±å¯ãŒã‚ã£ã¦ã‚‚ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æå‚·ã‚’ä¸Žãˆã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
-削除を続ã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ç¾åœ¨ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’é€ã‚Œã¾ã›ã‚“。数分後ã«ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
-
- ç¾åœ¨ãƒ•レンドシップをé€ã‚Œã¾ã›ã‚“。数分後ã«ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
-
- å–り込ã¿ä¸ãƒ¢ãƒ¼ãƒ‰ã«ãªã‚Šã¾ã—ãŸã€‚
-ãƒãƒ£ãƒƒãƒˆã¨ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。 å—ä¿¡ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã¯å–り込ã¿ä¸è¿”ç”メッセージãŒè¡¨ç¤ºã•れã¾ã™ã€‚ テレãƒãƒ¼ãƒˆã®ã‚ªãƒ•ァーã¯å—ã‘å–り拒å¦ã¨ãªã‚Šã¾ã™ã€‚ アイテムã®ã‚ªãƒ•ァーã¯ã™ã¹ã¦ã”ã¿ç®±ã«å…¥ã‚Šã¾ã™ã€‚
-
-
-
- åŠ å…¥ã§ãã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã®æœ€å¤§é™ã«é”ã—ã¾ã—ãŸã€‚ ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«åŠ å…¥ã™ã‚‹ãŸã‚ã«ä»–ã®ã‚°ãƒ«ãƒ¼ãƒ—を脱退ã™ã‚‹ã‹ã€ã“ã®ç”³ã—入れをæ–ã£ã¦ãã ã•ã„。
-[NAME] ãŒã‚ãªãŸã‚’グループã®ãƒ¡ãƒ³ãƒãƒ¼ã¨ã—ã¦å‹§èª˜ã—ã¦ã„ã¾ã™ã€‚
-
-
-
- åŠ å…¥ã§ãã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã®æœ€å¤§é™ã«é”ã—ã¾ã—ãŸã€‚ æ–°ã—ãグループã«å‚åŠ ã€ã¾ãŸã¯ä½œæˆã™ã‚‹å‰ã«ã€ã©ã‚Œã‹ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰æŠœã‘ã¦ãã ã•ã„。
-
-
-
- ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã“ã®ä½äººã‚’追ã„出ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ã¤ã‘ã¦ã‚°ãƒªãƒƒãƒ‰ã«ã„る全員を追ã„出ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã“ã®ä½äººã‚’フリーズã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã©ã®ã‚ˆã†ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ã“ã®ä½äººã®ãƒ•リーズを解除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [DISPLAY_NAME] ã•ã‚“ã€
-
-ç¾å®Ÿã®ä¸–界ã¨åŒã˜ãã€Second Life ã§ã‚‚æ–°ã—ã„åå‰ãŒæµ¸é€ã™ã‚‹ã«ã¯æ™‚é–“ãŒã‹ã‹ã‚Šã¾ã™ã€‚オブジェクトã€ã‚¹ã‚¯ãƒªãƒ—ãƒˆã€æ¤œç´¢ãªã©ã§åå‰ãŒæ›´æ–°ã•れるã¾ã§ã«ï¼ˆ[http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update])数日ã‹ã‹ã‚Šã¾ã™ã®ã§ã”了承ãã ã•ã„。
-
-
- 申ã—訳ã‚りã¾ã›ã‚“ãŒã€ç¾åœ¨è¡¨ç¤ºåã¯å¤‰æ›´ã§ãã¾ã›ã‚“。システムã®ã‚¨ãƒ©ãƒ¼ã ã¨æ€ã‚ã‚Œã‚‹å ´åˆã¯ã€ã‚µãƒãƒ¼ãƒˆã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。
-
-
- 申ã—訳ã‚りã¾ã›ã‚“ãŒã€ãã®åå‰ã¯é•·ã™ãŽã¾ã™ã€‚表示åã¯æœ€é•· [LENGTH] æ–‡å—ã¾ã§ã§ã™ã€‚
-
-ã‚‚ã†å°‘ã—çŸã„åå‰ã‚’ãŠè©¦ã—ãã ã•ã„。
-
-
- 申ã—訳ã‚りã¾ã›ã‚“ãŒã€è¡¨ç¤ºåã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã‚ã¨ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- 入力ã—ãŸè¡¨ç¤ºåãŒä¸€è‡´ã—ã¾ã›ã‚“。もã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。
-
-
- ã—ã°ã‚‰ãã¯è¡¨ç¤ºåを変更ã§ãã¾ã›ã‚“。
-
-http://wiki.secondlife.com/wiki/Setting_your_display_name ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
-
-ã‚ã¨ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- 申ã—訳ã‚りã¾ã›ã‚“ãŒã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•れãŸåå‰ã¯ç¦å¥ã‚’å«ã‚€ãŸã‚ã«è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-
-別ã®åå‰ã‚’ãŠè©¦ã—ãã ã•ã„。
-
-
- è¨å®šã—よã†ã¨ã™ã‚‹è¡¨ç¤ºåã«ã¯ä½¿ãˆãªã„æ–‡å—ãŒå«ã¾ã‚Œã¾ã™ã€‚
-
-
- 表示åã«ã¯å¥èªç‚¹ä»¥å¤–ã®æ–‡å—ã‚’å«ã‚€å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
- [OLD_NAME] ([SLID]) 㯠[NEW_NAME] ã«å¤‰æ›´ã•れã¾ã—ãŸã€‚
-
-
- 次ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ·»ãˆã¦ç¾åœ¨åœ°ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã™ã‹ï¼Ÿ
-
-
-
- ç¾åœ¨åœ°ã«ä½äººã‚’ゴッドサモンã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã¾ã¾ <nolink>[LOCATION]</nolink> ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [PICK] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [CLASSIFIED] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- [HISTORY_ENTRY] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 今ã‚ãªãŸã®ä¸å‹•産ã«ã„る人全員ã«é€ã‚‹ã€çŸã„メッセージを入力ã—ã¦ãã ã•ã„。
-
-
-
- ãƒªãƒ³ãƒ‡ãƒ³ãŒæ‰€æœ‰ã™ã‚‹ã‚¨ã‚¹ãƒ†ãƒ¼ãƒˆï¼ˆãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-
-ä½äººã®ä½“é¨“ã«æ ¹æœ¬çš„ã«å½±éŸ¿ã‚’与ãˆã‚‹ãŸã‚ã€éžå¸¸ã«å±é™ºãªè¡Œç‚ºã§ã™ã€‚ メインランドã§ã¯ã€ä½•åƒã¨ã„ã†ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤‰æ›´ã«ã‚ˆã‚‹å½±éŸ¿ã‚’å—ã‘ã€ãã®ãŸã‚スペースサーãƒãƒ¼ã«è² æ‹…ã‚’ã‹ã‘ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚
-
-ãれã§ã‚‚ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã‚ãªãŸã¯ãƒªãƒ³ãƒ‡ãƒ³æ‰€æœ‰ã®ä¸å‹•産(メインランドã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒªã‚¹ãƒˆã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-
-ã“ã®è¡Œç‚ºã¯ã€Œå±é™ºã€ã§ã‚りã€ã‚°ãƒªãƒƒãƒ‰ã‹ã‚‰ã‚ªãƒ–ジェクトやãŠé‡‘ã®è»¢é€ã‚’ã‚‚ãŸã‚‰ã™ãƒãƒƒã‚ングを引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€å®Œå…¨ã«ãれをæ„図ã—ãŸå ´åˆã®ã¿è¡Œã†ã¹ãã‚‚ã®ã§ã™ã€‚
-ã“れã«ã‚ˆã‚Šå¤šæ•°ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ãŒå¤‰æ›´ã•れã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚
-
-
-
- ã“ã®ä¸å‹•産é™å®šã®è¨±å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ [ALL_ESTATES] ã®è¨±å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä¸å‹•産é™å®šã®è¨±å¯ãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ã€[ALL_ESTATES] ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä¸å‹•産é™å®šã®ã‚°ãƒ«ãƒ¼ãƒ—許å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ [ALL_ESTATES] ã®ã‚°ãƒ«ãƒ¼ãƒ—許å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä¸å‹•産é™å®šã®è¨±å¯ãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ã€[ALL_ESTATES] ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä¸å‹•産é™å®šã§ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™ã‹ï¼Ÿ ãれã¨ã‚‚ [ALL_ESTATE] ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä½äººãŒã€ã“ã®ä¸å‹•産é™å®šã€ã¾ãŸã¯ [ALL_ESTATES] ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ã€ç¦æ¢ãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä¸å‹•産é™å®šã€ã¾ãŸã¯ [ALL_ESTATES] ã®ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’ã€ã“ã®ä¸å‹•産é™å®šã€ã¾ãŸã¯ [ALL_ESTATES] ã‹ã‚‰ã€å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ä¸å‹•産ã‹ã‚‰ [EVIL_USER] を追ã„出ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ä¸å‹•産約款を変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 年齢を確èªã™ã‚‹éš›ã®æƒ…å ±ã«ä¸è¶³ãŒã‚ã£ãŸãŸã‚ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
-
-最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。ã“ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-ナレッジベースを開ãレーティング区分ã«ã¤ã„ã¦å¦ã³ã¾ã™ã‹ï¼Ÿ
-
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
-
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-
- レーティング区分ã«é–¢ã™ã‚‹è¨å®šã«ã‚ˆã‚Šã€ãã®åœ°åŸŸï¼ˆãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã«ã¯ç«‹ã¡å…¥ã‚Œã¾ã›ã‚“。
-
-ãã®åœ°åŸŸã«å…¥ã‚‹ã«ã¯ã€ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã®è¨å®šã‚’変更ã—ã¦ãã ã•ã„。変更ã™ã‚‹ã¨ã€[REGIONMATURITY]ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ¤œç´¢ã‚„アクセスãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚å¤‰æ›´å†…å®¹ã‚’å…ƒã«æˆ»ã™ã«ã¯ã€ãƒŸãƒ¼ > 環境è¨å®š > ä¸€èˆ¬ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†è¨å®šã¯ç¾åœ¨ [RATING] ã§ã™ã€‚
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 年齢を確èªã™ã‚‹éš›ã®æƒ…å ±ã«ä¸è¶³ãŒã‚ã£ãŸãŸã‚ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
-
-最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。ã“ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-ナレッジベースを開ãレーティング区分ã«ã¤ã„ã¦å¦ã³ã¾ã™ã‹ï¼Ÿ
-
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
-
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-「è¨å®šã‚’変更ã€ã‚’クリックã—ã¦ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã‚’上ã’ã‚‹ã¨ã€å…¥ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ ã‚ãªãŸã¯ä»Šå¾Œ [REGIONMATURITY] ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ¤œç´¢åŠã³ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ ã‚ã¨ã§è¨å®šã‚’å…ƒã«æˆ»ã—ãŸã„å ´åˆã¯ã€ã€Œç·¨é›†ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ã‚’ã”覧ãã ã•ã„。
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 年齢を確èªã™ã‚‹éš›ã®æƒ…å ±ã«ä¸è¶³ãŒã‚ã£ãŸãŸã‚ã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚
-
-最新ビューワãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。ã“ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’ã”覧ãã ã•ã„。
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-ナレッジベースを開ãレーティング区分ã«ã¤ã„ã¦å¦ã³ã¾ã™ã‹ï¼Ÿ
-
- http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
-
-
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†è¨å®šã«ã‚ˆã‚Šã€ã“ã®åœŸåœ°ã‚’購入ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-「è¨å®šã‚’変更ã€ã‚’クリックã—ã¦ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã‚’上ã’ã‚‹ã¨ã€å…¥ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ ã‚ãªãŸã¯ä»Šå¾Œ [REGIONMATURITY] ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ¤œç´¢åŠã³ã‚¢ã‚¯ã‚»ã‚¹ãŒå¯èƒ½ã¨ãªã‚Šã¾ã™ã€‚ ã‚ã¨ã§è¨å®šã‚’å…ƒã«æˆ»ã—ãŸã„å ´åˆã¯ã€ã€Œç·¨é›†ã€ï¼žã€Œç’°å¢ƒè¨å®šã€ã‚’ã”覧ãã ã•ã„。
-
-
-
- é¸æŠžã—ãŸãƒ—リムãŒå¤šã™ãŽã¾ã™ã€‚ [MAX_PRIM_COUNT] å€‹é¸æŠžã™ã‚‹ã‹ã€ãƒ—リム数を減らã—ã¦ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
-
- ä¸å‹•産約款ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆæ™‚ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚
-
-
-
- æ–°ã—ã„ä¸å‹•産マãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã®è¿½åŠ ã«é–¢ã™ã‚‹å•題:
-ã„ãšã‚Œã‹ã®ä¸å‹•産ã®ãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚
-
-
- ä¸å‹•産リストã®è¿½åŠ ã«é–¢ã™ã‚‹å•題:
-ã„ãšã‚Œã‹ã®ä¸å‹•産ã®ãƒªã‚¹ãƒˆãŒæº€æ¯ã«ãªã£ã¦ã„ã¾ã™ã€‚
-
-
- ç¾åœ¨ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã®ã‚¢ã‚»ãƒƒãƒˆ ID ã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-
-
- è¦æ±‚ã—ãŸã‚¢ã‚»ãƒƒãƒˆ ID ã«é–¢ã™ã‚‹ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’閲覧ã™ã‚‹ã«ã¯ã€æ¨©é™ãŒä¸å分ã§ã™ã€‚
-
-
-
- ノートカード用ã®ã‚¢ã‚»ãƒƒãƒˆ ID ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“。
-
-
-
- 注æ„ï¼šã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šã®æ–™é‡‘ã¯æ‰•ã„æˆ»ã—ã•れã¾ã›ã‚“。
-
-L$ [AMOUNT] ã§ã€ã“ã®ã‚¯ãƒ©ã‚·ãƒ•ァイド広告を今ã™ã公開ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®åºƒå‘Šã«ã€ŒModerateã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯å«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã€ŒModerateã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ 2 分後ã«å†èµ·å‹•ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ã„る人全員ã«é€ã‚‹çŸã„メッセージを入力ã—ã¦ãã ã•ã„。
-
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ï¼ˆåœ°åŸŸï¼‰ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ãŒã‚¢ãƒƒãƒ—デートã•れã¾ã—ãŸã€‚
-地図ã«å¤‰æ›´ãŒåæ˜ ã•れるã¾ã§æ•°åˆ†ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
-
-Adult 専用リージョンã«å…¥ã‚‹ã«ã¯ã€ä½äººã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¹´é½¢ç¢ºèªã‹æ”¯æ‰•方法ã®ã„ãšã‚Œã‹ã§ã€Œç¢ºèªæ¸ˆã¿ã€ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。
-
-
- [APP_NAME] ã®ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã€ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ãŠã‘るボイスãƒãƒ£ãƒƒãƒˆã®äº’æ›æ€§ãŒã‚りã¾ã›ã‚“。 ボイスãƒãƒ£ãƒƒãƒˆã‚’æ£å¸¸ã«è¡Œã†ãŸã‚ã«ã¯ã€[APP_NAME] ã®ã‚¢ãƒƒãƒ—デートãŒå¿…è¦ã§ã™ã€‚
-
-
- è¤‡æ•°ã®æ‰€æœ‰è€…ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- 一度ã«è¤‡æ•°ã®ã‚ªãƒ–ジェクトã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯è³¼å…¥ã§ãã¾ã›ã‚“。
-é¸æŠžã™ã‚‹ã‚ªãƒ–ジェクトを1ã¤ã ã‘ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- è¤‡æ•°ã®æ‰€æœ‰è€…ã‹ã‚‰åŒæ™‚ã«ã‚ªãƒ–ジェクトを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-å˜ä¸€ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- オリジナルã®ã‚ªãƒ–ジェクトを [OWNER] ã‹ã‚‰ L$ [PRICE] ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ
-購入ã™ã‚‹ã¨ã€ã‚ãªãŸãŒã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…ã¨ãªã‚Šã¾ã™ã€‚
-å¯èƒ½ãªæ“作ã¯ã€
-ä¿®æ£ï¼š[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]ã€
-å†è²©ãƒ»ãƒ—レゼント:[RESELLPERM] ã§ã™ã€‚
-
-
-
- L$ [PRICE] ã§ã‚ªãƒªã‚¸ãƒŠãƒ«ã®ã‚ªãƒ–ジェクトを購入ã—ã¾ã™ã‹ï¼Ÿ
-購入ã™ã‚‹ã¨ã€ã‚ãªãŸãŒã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…ã¨ãªã‚Šã¾ã™ã€‚
-å¯èƒ½ãªæ“作ã¯ã€
-ä¿®æ£ï¼š[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]ã€
-å†è²©ãƒ»ãƒ—レゼント:[RESELLPERM] ã§ã™ã€‚
-
-
-
- コピーを [OWNER] ã‹ã‚‰ L$ [PRICE] ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ
-購入ã—ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚
-å¯èƒ½ãªæ“作ã¯ã€
-ä¿®æ£ï¼š[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]ã€
-å†è²©ãƒ»ãƒ—レゼント:[RESELLPERM] ã§ã™ã€‚
-
-
-
- L$ [PRICE] ã§ã‚³ãƒ”ーを購入ã—ã¾ã™ã‹ï¼Ÿ
-購入ã—ãŸã‚ªãƒ–ジェクトã¯ã€ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚
-å¯èƒ½ãªæ“作ã¯ã€
-ä¿®æ£ï¼š[MODIFYPERM]ã€ã‚³ãƒ”ー:[COPYPERM]ã€
-å†è²©ãƒ»ãƒ—レゼント:[RESELLPERM] ã§ã™ã€‚
-
-
-
- ä¸èº«ã‚’ [OWNER] ã‹ã‚‰ L$ [PRICE] ã§è³¼å…¥ã—ã¾ã™ã‹ï¼Ÿ
-購入ã—ãŸä¸èº«ã¯ã€ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚
-
-
-
- L$ [PRICE] ã§ä¸èº«ã‚’購入ã—ã¾ã™ã‹ï¼Ÿ
-購入ã—ãŸä¸èº«ã¯ã€ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚
-
-
-
- ã“ã®å–引ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šè¡Œã‚れã¾ã™ï¼š
-[ACTION]
-
-購入を続ã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã“ã®å–引ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šè¡Œã‚れã¾ã™ï¼š
-[ACTION]
-
-購入を続ã‘ã¾ã™ã‹ï¼Ÿ
-パスワードをå†å…¥åŠ›ã—ã€ã€Œ OK ã€ã‚’クリックã—ã¦ãã ã•ã„。
-
-
-
- メモ:
-本ピックã®ä½ç½®ã‚’æ›´æ–°ã—ã¾ã—ãŸãŒã€
-ä»–ã®è©³ç´°ã¯å…ƒã®å€¤ã®ã¾ã¾ã«ãªã‚Šã¾ã™ã€‚
-
-
-
- 「コピーä¸å¯ã€ã®æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¾ã—ãŸã€‚
-ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚³ãƒ”ーã•れãªã„ã¾ã¾ã€ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«ç§»å‹•ã•れã¾ã™ã€‚
-
-
-アイテムを動ã‹ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 「コピーä¸å¯ã€ã®æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã—ã¾ã—ãŸã€‚
-ã“れらã®ã‚¢ã‚¤ãƒ†ãƒ ã¯ã‚³ãƒ”ーã•れãšã«ã€ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«ç§»å‹•ã•れã¾ã™ã€‚
-ã“ã®ã‚ªãƒ–ジェクトã¯ã‚¹ã‚¯ãƒªãƒ—ト付ããªã®ã§ã€ã€ŒæŒã¡ç‰©ã€ã«ç§»å‹•ã•ã›ã‚‹ã¨
-スクリプトã«èª¤å‹•作ãŒèµ·ãã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
-
-æŒã¡ç‰©ã‚¢ã‚¤ãƒ†ãƒ を移動ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- è¦å‘Šï¼š クリックã§ã€Œã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ”¯æ‰•ã†ã€è¨å®šã‚’ã—ã¾ã—ãŸã€‚スクリプト㫠money()イベントãŒè¿½åŠ ã•れるã¨å‹•作ã—ã¾ã™ã€‚
-
-
-
- ã“ã®ã‚ªãƒ–ジェクトã«ã¯ã€ã‚ãªãŸãŒã‚³ãƒ”ーã§ãるアイテムã¯ã‚りã¾ã›ã‚“。
-
-
- [http://jp.secondlife.com/account/ マイアカウント] ページã«ç§»å‹•ã—ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆå±¥æ´ã‚’確èªã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 終了ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- [QUESTION]
-
-
-
- ã“ã®ãƒ„ールを利用ã—㦠[http://secondlife.com/corporate/tos.php 利用è¦ç´„] ã‚„ [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] ã®é•åã‚’å ±å‘Šã—ã¦ãã ã•ã„。
-
-å ±å‘Šã•れãŸå«ŒãŒã‚‰ã›ã¯ã™ã¹ã¦èª¿æŸ»ãƒ»è§£æ±ºã•れã¾ã™ã€‚
-
-
- 嫌ãŒã‚‰ã›å ±å‘Šã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„。
-ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚
-
-
- 嫌ãŒã‚‰ã›è¡Œç‚ºã‚’ã—ãŸäººã®åå‰ã‚’入力ã—ã¦ãã ã•ã„。
-æ£ç¢ºãªæƒ…å ±ã®å…¥åŠ›ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚
-
-
- 嫌ãŒã‚‰ã›ãŒã‚ã£ãŸå ´æ‰€ã‚’入力ã—ã¦ãã ã•ã„。
-æ£ç¢ºãªæƒ…å ±ã®å…¥åŠ›ã«ã‚ˆã‚Šã€å«ŒãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚
-
-
- 嫌ãŒã‚‰ã›ã®æ¦‚è¦ã‚’入力ã—ã¦ãã ã•ã„。
-æ£ç¢ºãªæ¦‚è¦ã®å…¥åŠ›ã«ã‚ˆã‚Šã€
-嫌ãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚
-
-
- 嫌ãŒã‚‰ã›ã®è©³ç´°ãªèª¬æ˜Žã‚’入力ã—ã¦ãã ã•ã„。
-åå‰ã‚„嫌ãŒã‚‰ã›ã®è©³ç´°ã‚’ã€ã§ãã‚‹ã ã‘具体的ã«å…¥åŠ›ã—ã¦ãã ã•ã„。
-
-æ£ç¢ºãªèª¬æ˜Žã®å…¥åŠ›ã«ã‚ˆã‚Šã€
-嫌ãŒã‚‰ã›å ±å‘Šã®å‡¦ç†ã‚„ä¿ç®¡ã«å¤§å¤‰å½¹ç«‹ã¡ã¾ã™ã€‚
-
-
- ã“ã‚“ã«ã¡ã¯ã€
-
-知的財産権ã®ä¾µå®³ã‚’å ±å‘Šã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ æ£ç¢ºã«å ±å‘Šã™ã‚‹ãŸã‚ã«ã€ä»¥ä¸‹ã‚’ã”確èªãã ã•ã„:
-
-(1) 嫌ãŒã‚‰ã›ã®å ±å‘Šã®æ‰‹é † ä½äººãŒ [SECOND_LIFE] ã®æ¨©é™ã‚·ã‚¹ãƒ†ãƒ を悪用ã—ã¦ã„ã‚‹ã®ã‚’見ã¤ã‘ãŸã‚‰ã€å«ŒãŒã‚‰ã›ã®å ±å‘Šã‚’ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚例ãˆã°ã€CopyBot ã‚„ä¼¼ãŸã‚ˆã†ãªã‚³ãƒ”ーツールを使用ã—ã¦çŸ¥çš„財産権を侵害ã—ã¦ã„ã‚‹å ´åˆã§ã™ã€‚ 担当ãƒãƒ¼ãƒ ã¯èª¿æŸ»ã‚’行ã„ã€[SECOND_LIFE] [http://secondlife.com/corporate/tos.php 利用è¦ç´„] ã‚„ [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] ã«é•åã™ã‚‹è¡Œç‚ºã«å¯¾ã™ã‚‹é©åˆ‡ãªå‡¦ç½°ã‚’下ã—ã¾ã™ã€‚ ãŸã ã—ã€æ‹…当ãƒãƒ¼ãƒ 㯠[SECOND_LIFE] ã®ä¸–界ã‹ã‚‰ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を削除ã—ã¦æ¬²ã—ã„ã¨ã„ã†ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã¯å¿œã˜ã¾ã›ã‚“。
-
-(2) DMCA ã¾ãŸã¯ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®æ’¤åŽ»ã®æ‰‹é † コンテンツを [SECOND_LIFE] ã‹ã‚‰å‰Šé™¤ã—ã¦æ¬²ã—ã„ã¨ã„ã†ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ã™ã‚‹ã«ã¯ã€å¼Šç¤¾ [http://secondlife.com/corporate/dmca.php DMCA ãƒãƒªã‚·ãƒ¼] ã§æç¤ºã•れã¦ã„ã‚‹ã¨ãŠã‚Šã€æœ‰åйãªä¾µå®³ã®é€šçŸ¥ã‚’æå‡ºã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。.
-
-ã“ã®ã¾ã¾å«ŒãŒã‚‰ã›ã®å ±å‘Šã‚’ç¶šã‘ãŸã„å ´åˆã¯ã€ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¦å ±å‘Šã‚’é€ã£ã¦ãã ã•ã„。 「コピー Bot åŠã³æ¨©é™ã®æ‚ªç”¨ã€ã®ã‚«ãƒ†ã‚´ãƒªã‚’é¸ã‚“ã æ–¹ãŒé©åˆ‡ã®å ´åˆãŒã‚りã¾ã™ã€‚
-
-ã”å”力ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
-
-Linden Lab
-
-
- 以下ã®å¿…è¦ãªã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒã€[FLOATER] ã‹ã‚‰æŠœã‘è½ã¡ã¦ã„ã¾ã™
-[COMPONENTS]
-
-
- 体ã®ã“ã®éƒ¨ä½ã«ã¯æ—¢ã«ã‚ªãƒ–ジェクトãŒè£…ç€ã•れã¦ã„ã¾ã™ã€‚
-é¸æŠžã•れãŸã‚ªãƒ–ジェクトã¨ç½®ãæ›ãˆã¾ã™ã‹ï¼Ÿ
-
-
-
- ç¾åœ¨ã€ã€Œå–り込ã¿ä¸ã€ãƒ¢ãƒ¼ãƒ‰ã®ãŸã‚ã€æ”¯æ‰•ã„ã¨å¼•ãæ›ãˆã«ã‚¢ã‚¤ãƒ†ãƒ ã‚’å—ã‘å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-ã“ã®å–引を行ã†ãŸã‚ã«ã€Œå–り込ã¿ä¸ã€ã®è¨å®šã‚’解除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 「 [FOLDERNAME] 〠ã¯ã€ã‚·ã‚¹ãƒ†ãƒ フォルダã§ã™ã€‚ システムフォルダを削除ã™ã‚‹ã¨ä¸å®‰å®šã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ ç¶šã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- ã”ã¿ç®±ã®ä¸èº«ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- トラベルã€Webã€æ¤œç´¢ã®å±¥æ´ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 本当ã«ã‚¯ãƒƒã‚ーをクリアã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ä¿å˜ã•れ㟠URL ã®ãƒªã‚¹ãƒˆã‚’消去ã—ã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ
-
-
-
- 紛失物ã®ä¸èº«ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 次㮠SLurl ãŒã‚¯ãƒªãƒƒãƒ—ボードã«ã‚³ãƒ”ーã•れã¾ã—ãŸï¼š
- [SLURL]
-
-Web ページã«ãƒªãƒ³ã‚¯ã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚Web ブラウザã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãƒãƒ¼ã«è²¼ã‚Šä»˜ã‘ã¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„。
-
-
-
- ä¿å˜ã•れãŸäº‹å‰è¨å®šã‚’上書ãã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 「 [SKY] ã€ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- デフォルトã®è¨å®šã‚’編集ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- ã“ã®ãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ¬¡ã®å˜åœ¨ã—ãªã„「空ã€ãƒ•ァイルをå‚ç…§ã—ã¦ã„ã¾ã™ï¼š [SKY]。
-
-
- ãƒã‚¹ãƒˆãƒ—ãƒã‚»ã‚¹åŠ¹æžœãŒå˜åœ¨ã—ã¾ã™ã€‚ 上書ãã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- æ–°ã—ã„空ã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。
-
-
-
- 事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼
-
-
- æ–°ã—ã„æ°´ã®äº‹å‰è¨å®šã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。
-
-
-
- 事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼
-
-
- デフォルトã®è¨å®šã‚’編集ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- [RECIPIENT] ã¨æ–°ã—ã„ãƒãƒ£ãƒƒãƒˆã‚’é–‹å§‹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-[REASON]
-
-
-
- [EVENT]
-[REASON]
-
-
-
- [NAME] ã¨ã®ãƒãƒ£ãƒƒãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‰ã˜ã¾ã™ã€‚
-[REASON]
-
-
-
- オブジェクトãŒå–り付ã‘られã¦ã„ã‚‹ã¾ã¾ã§ã¯è³¼å…¥ã§ãã¾ã›ã‚“。
-
-
- ã“ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’許å¯ã™ã‚‹ã¨ã€ã‚¹ã‚¯ãƒªãƒ—トã§ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‹ã‚‰ãƒªãƒ³ãƒ‡ãƒ³ãƒ‰ãƒ«ã‚’引ã出ã›ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
-ã“ã®è¨±å¯ã‚’å–り消ã™ã«ã¯ã€ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ‰€æœ‰è€…ãŒã‚ªãƒ–ジェクトを削除ã™ã‚‹ã‹ã€ã‚ªãƒ–ジェクトã®ã‚¹ã‚¯ãƒªãƒ—トをリセットã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。
-
-
-
- 作æˆã™ã‚‹è¡£é¡žã‚’自動的ã«è£…ç€ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 年齢確èªã‚’済ã¾ã›ã¦ã„ãªã„ã¨ã“ã®åŒºç”»ã‚’訪れるã“ã¨ãŒã§ãã¾ã›ã‚“。 [SECOND_LIFE] サイトã§å¹´é½¢ã®ç¢ºèªã‚’行ã„ã¾ã™ã‹ï¼Ÿ
-
-[_URL]
-
- https://secondlife.com/account/verification.php?lang=ja
-
-
-
-
- æ”¯æ‰•æƒ…å ±ãŒç™»éŒ²ã•れã¦ã„ãªã„ã¨ã“ã®ã‚¨ãƒªã‚¢ã‚’訪れるã“ã¨ãŒã§ãã¾ã›ã‚“。 [SECOND_LIFE] サイトã§ç™»éŒ²ã‚’行ã„ã¾ã™ã‹ï¼Ÿ
-
-[_URL]
-
- https://secondlife.com/account/index.php?lang=ja
-
-
-
-
- æ–‡å—列 [STRING_NAME] ㌠strings.xml ã«å«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- å–り消ã•れã¾ã—ãŸã€‚
-
-
- 座るã®ã‚’ã‚„ã‚ã¾ã—ãŸã€‚
-
-
- 添付ãŒå–り消ã•れã¾ã—ãŸã€‚
-
-
- æ¬ è½ã—ã¦ã„る衣類や身体部ä½ã‚’デフォルトã«ç½®ãæ›ãˆã¾ã™ã€‚
-
-
- ä»¶å: [SUBJECT]ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼š [MESSAGE]
-
-
- [NAME] ã¯ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ä¸ã§ã™
-
-
- [NAME] ã¯ã‚ªãƒ•ラインä¸ã§ã™
-
-
- 残念ãªãŒã‚‰è‡ªåˆ†è‡ªèº«ã‚’フレンド登録ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- インワールド㨠Web サイトã®ã‚¹ãƒŠãƒƒãƒ—ショットをアップãƒãƒ¼ãƒ‰ä¸ã§ã™...
-ï¼ˆæ‰€è¦æ™‚間:約 5 分)
-
-
- アップãƒãƒ¼ãƒ‰ã« L$ [AMOUNT] 支払ã„ã¾ã—ãŸã€‚
-
-
- Web サイトã®ã‚¹ãƒŠãƒƒãƒ—ショットãŒã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã—ãŸã€‚
-
-
- インワールドã§ã®ã‚¹ãƒŠãƒƒãƒ—ショットã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ãŒå®Œäº†ã—ã¾ã—ãŸã€‚
-
-
- raw 地形ãŒãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã•れã¾ã—ãŸ
-
-
- ジェスãƒãƒ£ãƒ¼ã® [NAME] ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
-
-
- [NAME] ã¨ã„ã†ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã‚’èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- データベースã«ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ãŒã‚りã¾ã›ã‚“。
-
-
- ランドマークをèªã¿è¾¼ã‚ã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- CapsLock ã‚ãƒ¼ãŒæœ‰åйã«ãªã£ã¦ã„ã¾ã™ã€‚
-パスワードã«å½±éŸ¿ã™ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。
-
-
- ノートカードãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ã‚りã¾ã›ã‚“。
-
-
- ã“ã®ãƒŽãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’見る権é™ãŒã‚りã¾ã›ã‚“。
-
-
- オブジェクトを Rez ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚
-
-
- ノートカードをèªã¿è¾¼ã‚ã¾ã›ã‚“。ã‚ã¨ã§å†åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- データベースã«ã‚¹ã‚¯ãƒªãƒ—トãŒã‚りã¾ã›ã‚“。
-
-
- スクリプトを閲覧ã™ã‚‹ã«ã¯æ¨©é™ãŒä¸å分ã§ã™ã€‚
-
-
- スクリプトをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。
-
-
- ã‚ãªãŸã®æä¾›ã™ã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯ã€ãƒãƒ¼ã‚«ãƒ«ã§ã¯ã¾ã 全部æƒã£ã¦ã„ã¾ã›ã‚“。
-ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- ä¿è·ã•れãŸã‚«ãƒ†ã‚´ãƒªã¯ä¿®æ£ã§ãã¾ã›ã‚“。
-
-
- ä¿è·ã•れãŸã‚«ãƒ†ã‚´ãƒªã¯å‰Šé™¤ã§ãã¾ã›ã‚“。
-
-
- オブジェクトデータã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã¯è³¼å…¥ã§ãã¾ã›ã‚“。
-ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- オブジェクトデータã®ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ä¸ã¯ãƒªãƒ³ã‚¯ã§ãã¾ã›ã‚“。
-ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- オブジェクトã¯ä¸€åº¦ã«ä¸€äººã®æ‰€æœ‰è€…ã‹ã‚‰è³¼å…¥ã§ãã¾ã™ã€‚
-オブジェクトを 1 ã¤ã ã‘é¸ã‚“ã§ãã ã•ã„。
-
-
- ã“ã®ã‚ªãƒ–ジェクトã¯è²©å£²å¯¾è±¡ã§ã¯ã‚りã¾ã›ã‚“。
-
-
- レベル [LEVEL] ã®ã‚´ãƒƒãƒ‰ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã™
-
-
- レベル [LEVEL] ã®ã‚´ãƒƒãƒ‰ãƒ¢ãƒ¼ãƒ‰ã‚’解除ã—ã¾ã™
-
-
- ã“れをコピーã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。
-
-
- [NAME] ã¯ã€ã‚ãªãŸãŒæ¸¡ã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å—ã‘å–りã¾ã—ãŸã€‚
-
-
- [NAME] ã¯ã€æŒã¡ç‰©ã®æä¾›ã‚’æ–りã¾ã—ãŸã€‚
-
-
- [NAME]: [MESSAGE]
-
-
- コーリングカードãŒå—ç†ã•れã¾ã—ãŸã€‚
-
-
- ã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ãŒæ‹’å¦ã•れã¾ã—ãŸã€‚
-
-
- ç”»é¢å³ã®ã€Œå ´æ‰€ã€ãƒ‘ãƒãƒ«ã‚’é–‹ã„ã¦ã€ã€Œãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã€ã‚¿ãƒ–ã‚’é¸ã¶ã¨ã€[NAME] ã¨ã„ã£ãŸå ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚
-好ããªãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’クリックã—ã¦é¸ã³ã€æ¬¡ã«ãƒ‘ãƒãƒ«ä¸‹ã®ã€Œãƒ†ãƒ¬ãƒãƒ¼ãƒˆã€ã‚’クリックã—ã¾ã™ã€‚
-(ランドマークをダブルクリックã€ã¾ãŸã¯å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œãƒ†ãƒ¬ãƒãƒ¼ãƒˆã€ã‚’é¸ã‚“ã§ã‚‚åŒã˜ã§ã™ã€‚)
-
-
- ç”»é¢å³ã®ã€Œäººã€ãƒ‘ãƒãƒ«ã‚’é–‹ã„ã¦ã€[NAME] ã¨ã„ã£ãŸä½äººã«é€£çµ¡ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
-リストã‹ã‚‰ä½äººã‚’é¸æŠžã—ã¦ã€ãƒ‘ãƒãƒ«ä¸‹ã®ã€ŒIMã€ã‚’クリックã—ã¾ã™ã€‚
-(リストã®åå‰ã‚’ダブルクリックã€ã¾ãŸã¯å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€ŒIMã€ã‚’é¸ã‚“ã§ã‚‚åŒã˜ã§ã™ã€‚)
-
-
- サーãƒãƒ¼ã®å¢ƒç•Œã‚’è¶Šãˆã¦åœŸåœ°ã‚’é¸æŠžã™ã‚‹ã“ã¨ã§ãã¾ã›ã‚“。
-ã‚‚ã£ã¨å°ã•ãªåœŸåœ°ã‚’é¸æŠžã—ã¦ãã ã•ã„。
-
-
- ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰ã«æ˜Žè¨˜ã•れã¦ã„るコンテンツ制é™ã«ã‚ˆã‚Šã€ã‚ãªãŸã®æ¤œç´¢èªžã®ä¸€éƒ¨ãŒé™¤å¤–ã•れã¾ã—ãŸã€‚
-
-
- å°‘ãªãã¨ã‚‚ã©ã‚Œã‹ä¸€ã¤ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ç¨®é¡žã‚’é¸æŠžã—ã¦æ¤œç´¢ã‚’行ã£ã¦ãã ã•ã„。(Generalã€Moderateã€Adult)
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- イベント通知:
-
-[NAME]
-[DATE]
-
-
-
- ã“ã®åŒºç”»ã®è³¼å…¥è€…ã«å—ã‘æ¸¡ã•れるオブジェクトã¯ã€ã™ã¹ã¦åŒºç”»ä¸Šã§å¼·èª¿è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚
-
-
-*å—ã‘æ¸¡ã•れる樹木やæ¤ç‰©ã¯ã€å¼·èª¿è¡¨ç¤ºã•れã¦ã„ã¾ã›ã‚“。
-
-
-
- åŒã˜ãƒˆãƒªã‚¬ãƒ¼ã§ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ã—ãªã„ジェスãƒãƒ£ãƒ¼ï¼š
-[NAMES]
-
-
- Apple ã® QuickTime ソフトウェアãŒãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ãªã„よã†ã§ã™ã€‚
-ストリーミングメディアをサãƒãƒ¼ãƒˆã™ã‚‹åŒºç”»ã§è¦‹ãŸã„å ´åˆã¯ã€[http://www.apple.com/jp/quicktime QuickTime サイト] ã‹ã‚‰ QuickTime プレイヤーをインストールã—ã¦ãã ã•ã„。
-
-
- 「 [MIME_TYPE] ã€ã® MIME タイプを扱ã†ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ—ラグインãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ ã“ã®ã‚¿ã‚¤ãƒ—ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã¯ã”利用ã„ãŸã ã‘ã¾ã›ã‚“。
-
-
- 次ã®ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ—ラグインãŒå®Ÿè¡Œã§ãã¾ã›ã‚“ã§ã—ãŸï¼š
- [PLUGIN]
-
-プラグインをインストールã—ãªãŠã™ã‹ã€å•題ãŒè§£æ±ºã—ãªã„å ´åˆã¯ãƒ¡ãƒ¼ã‚«ãƒ¼ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。
-
-
-
- é¸æŠžã—ãŸåœŸåœ°ã®åŒºç”»ä¸Šã«ã‚ã£ãŸã‚ãªãŸã®ã‚ªãƒ–ジェクトã¯ã€ã™ã¹ã¦ã‚ãªãŸã®ã€ŒæŒã¡ç‰©ã€ã«è¿”å´ã•れã¾ã—ãŸã€‚
-
-
- [NAME] ãŒæ‰€æœ‰ã™ã‚‹ã€é¸æŠžã—ãŸåŒºç”»ã«ã‚るオブジェクトã¯ã€æ‰€æœ‰è€…ã®æŒã¡ç‰©ã«è¿”å´ã•れã¾ã—ãŸã€‚
-
-
- 「 [NAME] ã€ã¨ã„ã†åå‰ã®ä½äººãŒæ‰€æœ‰ã™ã‚‹ã€é¸æŠžã—ãŸåŒºç”»ä¸Šã®ã‚ªãƒ–ジェクトã¯ã€æœ¬äººã«è¿”å´ã•れã¾ã—ãŸã€‚
-
-
- é¸æŠžã—ãŸåŒºç”»ä¸Šã®ã€[GROUPNAME] ã¨ã„ã†ã‚°ãƒ«ãƒ¼ãƒ—ã¨å…±æœ‰ã—ã¦ã„ãŸã‚ªãƒ–ジェクトã¯ã€ãれãžã‚Œã®æ‰€æœ‰è€…ã®ã€ŒæŒã¡ç‰©ã€ã«è¿”å´ã•れã¾ã—ãŸã€‚
-è²æ¸¡ã•れã¦ã„ãŸã€Œå†è²©ãƒ»ãƒ—レゼントå¯ã€ã®ã‚ªãƒ–ジェクトã¯ã€ä»¥å‰ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã—ãŸã€‚
-グループã«è²æ¸¡ã•れã¦ã„ãŸã€Œå†è²©ãƒ»ãƒ—レゼントä¸å¯ã€ã®ã‚ªãƒ–ジェクトã¯ã€å‰Šé™¤ã•れã¾ã—ãŸã€‚
-
-
- é¸æŠžã—ãŸåœŸåœ°ã®åŒºç”»ä¸Šã®ã€ã‚ãªãŸã®æ‰€æœ‰ç‰©ã§ã¯ã€Œãªã‹ã£ãŸã€ã‚ªãƒ–ジェクトã¯ã€æœ¬æ¥ã®æ‰€æœ‰è€…ã«è¿”å´ã•れã¾ã—ãŸã€‚
-
-
- [NAME] ã‹ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼š
-<nolink>[MSG]</nolink>
-
-
- ã“ã®åœŸåœ°ã§ã¯ãƒ€ãƒ¡ãƒ¼ã‚¸ãŒæœ‰åйã§ã™ã€‚
-ケガをã™ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 æ»ã‚“ã§ã—ã¾ã£ãŸå ´åˆã¯ã€Œãƒ›ãƒ¼ãƒ ã€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•れã¾ã™ã€‚
-
-
- ã“ã®ã‚¨ãƒªã‚¢ã§ã¯é£›è¡ŒãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚
-ã“ã“ã§ã¯é£›ã¹ã¾ã›ã‚“。
-
-
- ã“ã®ã‚¨ãƒªã‚¢ã§ã¯ãƒ—ッシュãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚ 土地所有者以外ã¯ä»–人をプッシュã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- ã“ã®ã‚¨ãƒªã‚¢ã§ã¯ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆãŒç„¡åйã§ã™ã€‚ 誰ã‹ãŒè©±ã—ã¦ã„ã‚‹ã®ã‚’èžãã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- ã“ã®ã‚¨ãƒªã‚¢ã§ã¯åˆ¶ä½œãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚ オブジェクトを制作ã—ãŸã‚Š Rez ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- 管ç†è€…ãŒã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’ä¸€æ™‚åœæ¢ã—ã¾ã—ãŸã€‚
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã‚¹ã‚¯ãƒªãƒ—トã®ä½¿ç”¨ãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚
-
-
- ã“ã®åœŸåœ°ã§ã¯ã€å¤–部ã®ã‚¹ã‚¯ãƒªãƒ—トãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚
-
-土地所有者ã®ã‚‚ã®ä»¥å¤–ã¯ã‚¹ã‚¯ãƒªãƒ—トãŒå®Ÿè¡Œã•れã¾ã›ã‚“。
-
-
- ãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«ã„ãªã„ã¨å…¬å…±ã®åœŸåœ°ã‚’å–å¾—ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-
-
- ã‚ãªãŸã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã«ã‚ˆã‚Šãã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã¯å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 年齢確èªã‚’行ã†ã‹ã€æœ€æ–°ãƒ“ューワをインストールã—ã¦ãã ã•ã„。
-
-ç¾åœ¨ã®ãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°åŒºåˆ†ã§ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ãªã‚¨ãƒªã‚¢ã«é–¢ã™ã‚‹è©³ç´°ã¯ãƒŠãƒ¬ãƒƒã‚¸ãƒ™ãƒ¼ã‚¹ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
-
-
- ã‚ãªãŸã¯ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã®ç«‹å…¥ãŒç¦æ¢ã•れã¦ã„ã¾ã™ã€‚
-
-
- ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã¯ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã«æŽ¥ç¶šã§ãã¾ã›ã‚“。
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«å…¥ã‚‹ãŸã‚ã«é©ã—ãŸæ”¯æ‰•ã„ステータスãŒã‚りã¾ã›ã‚“。
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«å…¥ã‚‹ãŸã‚ã«ã¯ã€å¹´é½¢ç¢ºèªã‚’済ã¾ã›ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
- ã“ã®åŒºç”»ã«å…¥ã‚‹ãŸã‚ã«ã¯ã€å¹´é½¢ç¢ºèªã‚’済ã¾ã›ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
- 目的地ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- 目的地ã«å…¥ã‚‹è¨±å¯ãŒã‚りã¾ã›ã‚“。
-
-
- ç«‹å…¥ç¦æ¢ã•れãŸåŒºç”»ã‚’横æ–ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 åˆ¥ã®æ–¹æ³•ã‚’ãŠè©¦ã—ãã ã•ã„。
-
-
- テレãƒãƒ–ã«è»¢é€ã•れã¾ã—ãŸã€‚
-
-
- ã“れ以上目的地ã«è¿‘ã„å ´æ‰€ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- テレãƒãƒ¼ãƒˆãŒã‚ャンセルã•れã¾ã—ãŸã€‚
-
-
- å…¥ã‚ã†ã¨ã—ã¦ã„るリージョンã¯ç¾åœ¨æº€å“¡ã§ã™ã€‚
-ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- よãã‚る失敗
-
-
- ç•°ãªã‚‹ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã«è¿‚回ã•れã¾ã—ãŸã€‚ ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- エージェント ID ãŒç„¡åйã§ã™ã€‚
-
-
- セッション ID ãŒç„¡åйã§ã™ã€‚
-
-
- 回路コードãŒç„¡åйã§ã™ã€‚
-
-
- タイムスタンプãŒç„¡åйã§ã™ã€‚
-
-
- 接続を生æˆã§ãã¾ã›ã‚“。
-
-
- 内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ã€é©åˆ‡ãªãƒ†ãƒ¬ãƒãƒ¼ãƒˆç›®çš„地ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- 内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚
-
-
- 有効ãªç€åœ°ç‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- 有効ãªåŒºç”»ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- [NAME_SLURL] ãŒæ‰€æœ‰ã™ã‚‹ <nolink>[OBJECTFROMNAME]</nolink> ã¨ã„ã†åå‰ã®ã‚ªãƒ–ジェクトãŒã€ã‚ãªãŸã« <nolink>[ITEM_SLURL]</nolink> を渡ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚¢ã‚¤ãƒ†ãƒ を使ã†ã«ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã¸ã®åˆ‡ã‚Šæ›¿ãˆãŒå¿…è¦ã§ã™ã€‚アドãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ãƒã‚°ã‚¤ãƒ³ã—ãªãŠã™ã¨ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ãŒè¦‹ã¤ã‹ã‚Šã¾ã™ã€‚アドãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã«ã¯ã€ã“ã®ã‚¢ãƒ—リケーションを終了ã—ã¦å†èµ·å‹•ã—ã€ãƒã‚°ã‚¤ãƒ³ç”»é¢ã§ãƒ¢ãƒ¼ãƒ‰è¨å®šã‚’変更ã—ã¦ãã ã•ã„。
-
-
-
- [NAME_SLURL] 㯠[ITEM_SLURL] を渡ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚ã“ã®ã‚¢ã‚¤ãƒ†ãƒ を使ã†ã«ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã¸ã®åˆ‡ã‚Šæ›¿ãˆãŒå¿…è¦ã§ã™ã€‚アドãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ãƒã‚°ã‚¤ãƒ³ã—ãªãŠã™ã¨ã€ã‚ãªãŸã®æŒã¡ç‰©ã«ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ãŒè¦‹ã¤ã‹ã‚Šã¾ã™ã€‚アドãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã«ã¯ã€ã“ã®ã‚¢ãƒ—リケーションを終了ã—ã¦å†èµ·å‹•ã—ã€ãƒã‚°ã‚¤ãƒ³ç”»é¢ã§ãƒ¢ãƒ¼ãƒ‰è¨å®šã‚’変更ã—ã¦ãã ã•ã„。
-
-
-
- [NAME]
-
-[MESSAGE]
-
-
- [MESSAGE]
-
-
-
- [NAME_SLURL] ã¯ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã§ã‚ãªãŸã‚’呼んã§ã„ã¾ã™ã€‚
-
-[MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon>
-
-
-
- [TO_NAME] ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã—ãŸã€‚
-
-
- [MESSAGE]
-[URL]
-
-
-
- [NAME_SLURL] ã¯ãƒ•レンド登録を申ã—込んã§ã„ã¾ã™ã€‚
-
-[MESSAGE]
-
-(デフォルトè¨å®šã ã¨ãŠäº’ã„ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼‰
-
-
-
- [TO_NAME] ã«ãƒ•レンド登録を申ã—出ã¾ã—ãŸã€‚
-
-
- [NAME_SLURL] ã¯ãƒ•レンド登録を申ã—込んã§ã„ã¾ã™ã€‚
-
-(デフォルトè¨å®šã ã¨ãŠäº’ã„ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼‰
-
-
-
- [NAME]ã¯ã€ãƒ•レンド登録をå—ã‘入れã¾ã—ãŸã€‚
-
-
- [NAME]ã¯ã€ãƒ•レンド登録をæ–りã¾ã—ãŸã€‚
-
-
- フレンドã®ç™»éŒ²ä¾é ¼ãŒæ‰¿èªã•れã¾ã—ãŸã€‚
-
-
- フレンドã®ç™»éŒ²ä¾é ¼ãŒæ‹’å¦ã•れã¾ã—ãŸã€‚
-
-
- [NAME] ãŒã‚³ãƒ¼ãƒªãƒ³ã‚°ã‚«ãƒ¼ãƒ‰ã‚’渡ãã†ã¨ã—ã¦ã„ã¾ã™ã€‚
-ã‚ãªãŸã®æŒã¡ç‰©ã«ãƒ–ックマークãŒè¿½åŠ ã•れã€ã“ã®ä½äººã«ç´ æ—©ã IM ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
-
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã¯ [SECONDS] 分後ã«å†èµ·å‹•ã•れã¾ã™ã€‚
-ã“ã®ã¾ã¾ã“ã“ã«ã„ã‚‹ã¨ãƒã‚°ã‚¢ã‚¦ãƒˆã•れã¾ã™ã€‚
-
-
- ã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã¯ [SECONDS] 秒後ã«å†èµ·å‹•ã•れã¾ã™ã€‚.
-ã“ã®ã¾ã¾ã“ã“ã«ã„ã‚‹ã¨ãƒã‚°ã‚¢ã‚¦ãƒˆã•れã¾ã™ã€‚
-
-
- Web ページ [URL] ã‚’ãƒãƒ¼ãƒ‰ã—ã¾ã™ã‹ï¼Ÿ
-
-[MESSAGE]
-
-é€ä¿¡å…ƒã®ã‚ªãƒ–ジェクト:<nolink>[OBJECTNAME]</nolink>ã€æ‰€æœ‰è€…:[NAME]?
-
-
-
- データベース㫠[TYPE] ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ
-
-
- データベース㫠[DESC] ã¨ã„ã†åå‰ã® [TYPE] ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- ç€ç”¨ã—よã†ã¨ã—ã¦ã„るアイテムã¯ã‚ãªãŸã®ãƒ“ューワã§ã¯èªã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。 [APP_NAME] ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’アップグレードã—ã¦ã‹ã‚‰ã“ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’ç€ç”¨ã—ã¦ãã ã•ã„。
-
-
- [NAME] ãŒæ‰€æœ‰ã™ã‚‹ã€Œ<nolink>[OBJECTNAME]</nolink>〠ã¨ã„ã†ã‚ªãƒ–ジェクトãŒã€æ¬¡ã®ã“ã¨ã‚’ã—よã†ã¨ã—ã¦ã„ã¾ã™ï¼š
-
-[QUESTIONS]
-よã‚ã—ã„ã§ã™ã‹ï¼Ÿ
-
-
-
- [NAME] ãŒæ‰€æœ‰ã™ã‚‹ã€Œ<nolink>[OBJECTNAME]</nolink>〠ã¨ã„ã†ã‚ªãƒ–ジェクトãŒã€æ¬¡ã®ã“ã¨ã‚’ã—よã†ã¨ã—ã¦ã„ã¾ã™ï¼š
-
-[QUESTIONS]
-ã“ã®ã‚ªãƒ–ジェクトや制作者を信用ã§ããªã„å ´åˆã¯ã€ã“ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’æ‹’å¦ã—ã¦ãã ã•ã„。
-
-リクエストをå—ã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- [NAME] ã®ã€Œ<nolink>[TITLE]</nolink>ã€
-[MESSAGE]
-
-
-
- [GROUPNAME] ã®ã€Œ<nolink>[TITLE]</nolink>ã€
-[MESSAGE]
-
-
-
- ãŠæ”¯æ‰•ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
-
-ã‚ãªãŸã® L$ 残高ã¯ã€å‡¦ç†ãŒå®Œäº†ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—デートã•れã¾ã™ã€‚ 処ç†ã« 20 分以上ã‹ã‹ã£ãŸå ´åˆã€ãŠå–り引ããŒã‚ャンセルã•れるã“ã¨ãŒã‚りã¾ã™ã€‚ ãã®å ´åˆã¯ã€è³¼å…¥é‡‘é¡ã¯ã‚ãªãŸã® US$ 残高ã«è¿½åŠ ã•れã¾ã™ã€‚
-
-[http://secondlife.com/account/ マイアカウント] ã®å–引履æ´ãƒšãƒ¼ã‚¸ã§ã€æ”¯æ‰•状æ³ã‚’確èªã§ãã¾ã™ã€‚
-
-
- ã‚ãªãŸã®ç§»å‹•ã‚ãƒ¼ã‚’ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæ“作ã—ã¦ã„ã¾ã™ã€‚
-矢å°ã‹ AWSD ã®ã‚ーã§å‹•作を確èªã—ã¦ãã ã•ã„。
-銃ãªã©ã®ã‚ªãƒ–ジェクトã ã¨ã€ä¸€äººç§°è¦–点ã«å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚
-
-
- ã“ã“ã¯ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ã‚¨ãƒªã‚¢ã§ã™ã€‚ä½äººãŒåˆ¶ä½œã‚’å¦ã¶ã“ã¨ãŒã§ãã¾ã™ã€‚
-
-ã“ã“ã§åˆ¶ä½œã•れãŸã‚‚ã®ã¯æ™‚é–“ãŒçµŒã¤ã¨å‰Šé™¤ã•れã¾ã™ã€‚制作ã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ã€Œå–ã‚‹ã€ã‚’é¸ã³ã€æŒã¡ç‰©ã«å…¥ã‚Œã¦ãŠæŒã¡å¸°ã‚Šã™ã‚‹ã®ã‚’ãŠå¿˜ã‚Œãªã。
-
-
- ã“ã®ãƒªã‚¹ãƒˆã‹ã‚‰ [MAX_SELECT] 個ã¾ã§ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸æŠžã§ãã¾ã™ã€‚
-
-
- [NAME] ãŒã‚ãªãŸã‚’ボイスãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚
-å—ã‘入れるをクリックã™ã‚‹ã‹ã€æ–ã‚‹å ´åˆã¯æ‹’å¦ã‚’クリックã—ã¦ãã ã•ã„。 ブãƒãƒƒã‚¯ã‚’クリックã™ã‚‹ã¨ã€ã“ã®ç™ºä¿¡è€…をブãƒãƒƒã‚¯ã—ã¾ã™ã€‚
-
-
-
- [NAME] ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å—ã‘å–りã€è‡ªå‹•çš„ã«ãƒ–ãƒãƒƒã‚¯ãŒè§£é™¤ã•れã¾ã—ãŸã€‚
-
-
- [NAME] ã¯ãŠé‡‘ã‚’å—ã‘å–りã€è‡ªå‹•çš„ã«ãƒ–ãƒãƒƒã‚¯ãŒè§£é™¤ã•れã¾ã—ãŸã€‚
-
-
- [NAME] ã¯æŒã¡ç‰©ã‚’å—ã‘å–りã€è‡ªå‹•çš„ã«ãƒ–ãƒãƒƒã‚¯ãŒè§£é™¤ã•れã¾ã—ãŸã€‚
-
-
- [NAME] 㯠[GROUP] ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚
-å—ã‘入れるをクリックã™ã‚‹ã‹ã€æ–ã‚‹å ´åˆã¯æ‹’å¦ã‚’クリックã—ã¦ãã ã•ã„。 ブãƒãƒƒã‚¯ã‚’クリックã™ã‚‹ã¨ã€ã“ã®ç™ºä¿¡è€…をブãƒãƒƒã‚¯ã—ã¾ã™ã€‚
-
-
-
- [NAME] 㯠コンファレンスãƒãƒ£ãƒƒãƒˆã®ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚³ãƒ¼ãƒ«ã«å‚åŠ ã—ã¾ã—ãŸã€‚
-å—ã‘入れるをクリックã™ã‚‹ã‹ã€æ–ã‚‹å ´åˆã¯æ‹’å¦ã‚’クリックã—ã¦ãã ã•ã„。 ブãƒãƒƒã‚¯ã‚’クリックã™ã‚‹ã¨ã€ã“ã®ç™ºä¿¡è€…をブãƒãƒƒã‚¯ã—ã¾ã™ã€‚
-
-
-
- [NAME] ãŒã‚ãªãŸã‚’コンファレンスãƒãƒ£ãƒƒãƒˆã«æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚
-å—ã‘入れるをクリックã™ã‚‹ã‹ã€æ–ã‚‹å ´åˆã¯æ‹’å¦ã‚’クリックã—ã¦ãã ã•ã„。 ブãƒãƒƒã‚¯ã‚’クリックã™ã‚‹ã¨ã€ã“ã®ç™ºä¿¡è€…をブãƒãƒƒã‚¯ã—ã¾ã™ã€‚
-
-
-
- ã‚ãªãŸãŒå‚åŠ ã—よã†ã¨ã—ã¦ã„るボイスコール [VOICE_CHANNEL_NAME] ã¯ã€å‚åŠ è€…ãŒæœ€å¤§é™ã«é”ã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- ã“ã®ã‚¨ãƒªã‚¢ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã¯ã€æ··é›‘ã®ãŸã‚容é‡ã‚’è¶…ãˆã¦ã—ã¾ã£ã¦ã„ã¾ã™ã€‚申ã—訳ã‚りã¾ã›ã‚“ãŒã€ä»–ã®ã‚¨ãƒªã‚¢ã§ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã‚’ãŠè©¦ã—ãã ã•ã„。
-
-
- [VOICE_CHANNEL_NAME] ã¸ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚
-
-
- [VOICE_CHANNEL_NAME] ãŒã‚³ãƒ¼ãƒ«ã‚’終了ã—ã¾ã—ãŸã€‚ 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚
-
-
- [VOICE_CHANNEL_NAME] ãŒã‚ãªãŸã®ã‚³ãƒ¼ãƒ«ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚ 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚
-
-
- [VOICE_CHANNEL_NAME] ã¯ã‚ãªãŸã®ã‚³ãƒ¼ãƒ«ã‚’å—ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚
-
-
- [VOICE_CHANNEL_NAME] ã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚ã¨ã§å†åº¦ãŠè©¦ã—ãã ã•ã„。 「近ãã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã€ã«å†æŽ¥ç¶šã•れã¾ã™ã€‚
-
-
- ボイスãƒãƒ£ãƒ³ãƒãƒ«ã‚’作æˆã—ã¦ã„ã¾ã™ã€‚1 分ã»ã©ã‹ã‹ã‚Šã¾ã™ã€‚
-
-
- ボイスモーフィング効果ã®1ã¤ã¾ãŸã¯è¤‡æ•°ã®æœ‰åŠ¹æœŸé™ãŒçµ‚了ã—ã¾ã—ãŸã€‚期é™ã‚’延長・更新ã™ã‚‹ã«ã¯[[URL]ã“ã¡ã‚‰ã‚’クリック]ã—ã¦ãã ã•ã„。
-
-
- ãƒœã‚¤ã‚¹ãƒ¢ãƒ¼ãƒ•ã‚£ãƒ³ã‚°åŠ¹æžœã®æœ‰åŠ¹æœŸé™ãŒçµ‚了ã—ãŸãŸã‚ã€ã‚ãªãŸã®é€šå¸¸ã®ãƒœã‚¤ã‚¹è¨å®šãŒé©ç”¨ã•れã¾ã—ãŸã€‚期é™ã‚’延長・更新ã™ã‚‹ã«ã¯[[URL]ã“ã¡ã‚‰ã‚’クリック]ã—ã¦ãã ã•ã„。
-
-
- ボイスモーフィング効果ã®1ã¤ã¾ãŸã¯è¤‡æ•°ã®æœ‰åŠ¹æœŸé™ãŒ[INTERVAL]日以内ã«çµ‚了ã—ã¾ã™ã€‚期é™ã‚’延長・更新ã™ã‚‹ã«ã¯[[URL]ã“ã¡ã‚‰ã‚’クリック]ã—ã¦ãã ã•ã„。
-
-
- æ–°ã—ã„ボイスモーフィング効果ãŒç™»å ´ï¼
-
-
- 特定ã®ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã®ã¿ã“ã®ã‚¨ãƒªã‚¢ã‚’訪å•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
-
-
- ç«‹å…¥ç¦æ¢ã•れã¦ã„ã‚‹ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-
- アクセスリストã«å«ã¾ã‚Œã¦ã„ãªã„ãŸã‚ã€åŒºç”»ã«å…¥ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-
-
- ã‚ãªãŸã«ã¯ [VOICE_CHANNEL_NAME] ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã«æŽ¥ç¶šã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“。
-
-
- [VOICE_CHANNEL_NAME] ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã«æŽ¥ç¶šä¸ã«ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。
-
-
- クリックã—㟠SLurl ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。
-
-
- 信用ã§ããªã„ブラウザã‹ã‚‰ SLurl ãŒé€ã‚‰ã‚Œã¦ããŸã®ã§ã€ã‚»ã‚ュリティã®ãŸã‚ブãƒãƒƒã‚¯ã•れã¾ã—ãŸã€‚
-
-
- çŸæœŸé–“ã®ã‚ã„ã ã«ã€ä¿¡ç”¨ã§ããªã„ブラウザã‹ã‚‰è¤‡æ•°ã® SLurls ãŒé€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚
-安全ã®ãŸã‚ã«æ•°ç§’間ブãƒãƒƒã‚¯ã•れã¾ã™ã€‚
-
-
- [MESSAGE]
-
-
-
- ã™ã¹ã¦ã® IM ã‚’é–‰ã˜ã¾ã™ã‹ï¼Ÿ
-
-
-
- アタッãƒãƒ¡ãƒ³ãƒˆãŒä¿å˜ã•れã¾ã—ãŸã€‚
-
-
- ヘルプトピックãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
-
-
- サーãƒãƒ¼ã‚¨ãƒ©ãƒ¼ï¼š メディアã®ã‚¢ãƒƒãƒ—デートã¾ãŸã¯å¤±æ•—。
-「[ERROR]ã€
-
-
-
- モデレーターãŒã‚ãªãŸã®æ–‡å—ãƒãƒ£ãƒƒãƒˆã‚’ミュートã—ã¾ã—ãŸã€‚
-
-
-
- モデレーターãŒã‚ãªãŸã®ãƒœã‚¤ã‚¹ã‚’ミュートã—ã¾ã—ãŸã€‚
-
-
-
- テレãƒãƒ¼ãƒˆå±¥æ´ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- é¸æŠžã—ãŸãƒœã‚¿ãƒ³ã‚’ç¾åœ¨è¡¨ç¤ºã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。
-ã˜ã‚…ã†ã¶ã‚“ãªã‚¹ãƒšãƒ¼ã‚¹ãŒã§ãれã°ãƒœã‚¿ãƒ³ã¯è¡¨ç¤ºã•れã¾ã™ã€‚
-
-
- 共有ã™ã‚‹ä½äººã‚’é¸æŠžã—ã¾ã™ã€‚
-
-
- 次ã®ã‚¢ã‚¤ãƒ†ãƒ を共有ã—ã¾ã™ã‹ï¼Ÿ
-
-<nolink>[ITEMS]</nolink>
-
-次ã®ä½äººã¨å…±æœ‰ã—ã¾ã™ã‹ï¼Ÿ
-
-[RESIDENTS]
-
-
-
- アイテムãŒå…±æœ‰ã•れã¾ã—ãŸã€‚
-
-
- グループã¸ã®è²æ¸¡ã«å¤±æ•—ã—ã¾ã—ãŸã€‚
-
-
- (作æˆå¾Œ[EXISTENCE]秒経éŽï¼‰
-'[NAME]'ã¨ã„ã†ã‚¢ãƒã‚¿ãƒ¼ã¯[TIME]秒後ã«å§¿ã‚’ç¾ã‚ã—ã¾ã—ãŸã€‚
-
-
- (作æˆå¾Œ[EXISTENCE]秒経éŽï¼‰
-アウトフィットã®ãƒ™ãƒ¼ã‚¯ã¯[TIME]秒後ã«å®Œäº†ã—ã¾ã—ãŸã€‚
-
-
- (作æˆå¾Œ[EXISTENCE]秒経éŽï¼‰
-å®¹å§¿ã®æ›´æ–°ã¯[TIME]秒後ã«é€ä¿¡ã•れã¾ã—ãŸã€‚
-[STATUS]
-
-
- ( [EXISTENCE] 秒)
-ã‚¢ãƒã‚¿ãƒ¼ã€Œ NAME ã€ãŒã‚¯ãƒ©ã‚¦ãƒ‰ã«ãªã‚Šã¾ã—ãŸã€‚
-
-
- ( [EXISTENCE] 秒)
-ã‚¢ãƒã‚¿ãƒ¼ã€Œ NAME ã€ãŒç¾ã‚Œã¾ã—ãŸã€‚
-
-
- ( [EXISTENCE] 秒)
-ã‚¢ãƒã‚¿ãƒ¼ã€Œ [NAME] ã€ãŒ [TIME] ç§’ã§ã‚¯ãƒ©ã‚¦ãƒ‰çŠ¶æ…‹ã‹ã‚‰å‡ºç¾ã—ã¾ã™ã€‚
-
-
- ( [EXISTENCE] 秒)
-ã‚¢ãƒã‚¿ãƒ¼ã€Œ NAME ã€ãŒå®¹å§¿ç·¨é›†ãƒ¢ãƒ¼ãƒ‰ã«å…¥ã‚Šã¾ã—ãŸã€‚
-
-
- ( [EXISTENCE] 秒)
-ã‚¢ãƒã‚¿ãƒ¼ã€Œ NAME ã€ãŒå®¹å§¿ç·¨é›†ãƒ¢ãƒ¼ãƒ‰ã‚’解除ã—ã¾ã—ãŸã€‚
-
-
- [PROTOCOL] [HOSTID]を使ã£ã¦æŽ¥ç¶šã§ãã¾ã›ã‚“。
-ãŠä½¿ã„ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚„ファイアウォールã®è¨å®šã‚’確èªã—ã¦ãã ã•ã„。
-
-
-
- ボイスサーãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“:
-
-[HOSTID]
-
-ボイスãƒãƒ£ãƒƒãƒˆã«ã‚ˆã‚‹ã‚³ãƒŸãƒ¥ãƒ‹ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“。
-ãŠä½¿ã„ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚„ファイアウォールã®è¨å®šã‚’確èªã—ã¦ãã ã•ã„。
-
-
-
- ( [EXISTENCE] 秒)
-ã‚¢ãƒã‚¿ãƒ¼ã€Œ NAME ã€ãŒå®Œå…¨ã«èªã¿è¾¼ã¾ã‚Œã¾ã—ãŸã€‚
-
-
- ( 作æˆå¾Œ[EXISTENCE]秒経éŽï¼‰
-'[BODYREGION]'ã®[RESOLUTION]ã®ãƒ™ãƒ¼ã‚¯ãƒ‰ãƒ†ã‚¯ã‚¹ãƒãƒ£ã¯[TIME]秒後ã«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã•れã¾ã—ãŸã€‚
-
-
- ( 作æˆå¾Œ[EXISTENCE]秒経éŽï¼‰
-'[BODYREGION]'ã®[RESOLUTION]ã®ãƒ™ãƒ¼ã‚¯ãƒ‰ãƒ†ã‚¯ã‚¹ãƒãƒ£ã¯[TIME]秒後ã«ãƒãƒ¼ã‚«ãƒ«ã«æ›´æ–°ã•れã¾ã—ãŸã€‚
-
-
- ã“ã®ã‚³ãƒ¼ãƒ«ã‹ã‚‰æŠœã‘ã¾ã™ã‹ï¼Ÿ
-
-
-
- グループコールã®å‚åŠ è€…å…¨å“¡ã‚’ãƒŸãƒ¥ãƒ¼ãƒˆã—ã¾ã—ãŸã€‚
-ã‚ã¨ã‹ã‚‰ã“ã®ã‚³ãƒ¼ãƒ«ã«å‚åŠ ã™ã‚‹ä½äººã‚‚
-ミュートã•れã¾ã™ã€‚ã‚ãªãŸãŒã‚³ãƒ¼ãƒ«ã‚’終了ã—ã¦ã‚‚ä»–ã®å‚åŠ è€…ã®ãƒŸãƒ¥ãƒ¼ãƒˆçŠ¶æ…‹ãŒç¶šãã¾ã™ã€‚
-
-全員をミュートã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ãƒãƒ£ãƒƒãƒˆã«å‚åŠ ã™ã‚‹ã«ã¯ã€ç”»é¢ä¸‹ã®ãƒãƒ£ãƒƒãƒˆãƒ•ィールドã«ãƒ†ã‚ストを入力ã—ã¾ã™ã€‚
-
-
- 座る姿勢ã‹ã‚‰ç«‹ã¡ä¸ŠãŒã‚‹ã«ã¯ã€ã€Œç«‹ã¡ä¸ŠãŒã‚‹ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¾ã™ã€‚
-
-
- 「スピーカーã€ãƒœã‚¿ãƒ³ã‚’クリックã™ã‚‹ã¨ã€ãƒžã‚¤ã‚¯ã®ã‚ªãƒ³ãƒ»ã‚ªãƒ•ãŒåˆ‡ã‚Šæ›¿ã‚りã¾ã™ã€‚
-
-上矢å°ã‚’クリックã™ã‚‹ã¨ã€ãƒœã‚¤ã‚¹ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ«ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
-
-「スピーカーã€ãƒœã‚¿ãƒ³ã‚’éžè¡¨ç¤ºã«ã™ã‚‹ã¨ã€ãƒœã‚¤ã‚¹æ©Ÿèƒ½ã‚‚無効ã«ãªã‚Šã¾ã™ã€‚
-
-
- 行ã先ガイドã«ã¯æ•°å¤šãã®æŽ¢ç´¢å ´æ‰€ãŒå«ã¾ã‚Œã¾ã™ã€‚ã©ã“ã‹è¡Œã先を決ã‚ãŸã‚‰ã€ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã—ã¦æŽ¢ç´¢ã«å‡ºã‹ã‘ã¾ã—ょã†ã€‚
-
-
- サイドパãƒãƒ«ã§ã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã€æœã€ãƒ—ãƒãƒ•ィールãªã©ã«ã™ã°ã‚„ãアクセスã§ãã¾ã™ã€‚
-
-
- æ©è¡Œã‚„走行ã¯ã€ã€Œç§»å‹•ã€ãƒ‘ãƒãƒ«ã‚’é–‹ãã€çŸ¢å°ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ«ã«ã‚ˆã£ã¦æ“作ã—ã¾ã™ã€‚ã“ã®æ“作ã¯ã‚ーボードã®çŸ¢å°ã‚ーã§å®Ÿè¡Œã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚
-
-
- 1. クリックã—ã¦æ©è¡Œ
-地é¢ã®ä¸€ç®‡æ‰€ã‚’クリックã™ã‚‹ã¨ã€ãã®å ´æ‰€ã¾ã§æ©ãã¾ã™ã€‚
-
-2. クリック・ドラッグã§è¦–界を回転
-世界ã®ä¸€ç®‡æ‰€ã‚’クリックã—ã¦ãƒ‰ãƒ©ãƒƒã‚°ã™ã‚‹ã¨ã€è¦–界ã®å‘ããŒå¤‰ã‚りã¾ã™ã€‚
-
-
- 表示å(カスタマイズå¯èƒ½ï¼‰ã‚’è¨å®šã—ã¾ã™ã€‚ユーザーåã¯å›ºæœ‰ã§å¤‰æ›´ã§ãã¾ã›ã‚“ãŒã€ã“ã“ã§è¿½åŠ ã™ã‚‹è¡¨ç¤ºåã¯å¤‰æ›´å¯èƒ½ã§ã™ã€‚ä»–ã®ä½äººã®åå‰ã®è¡¨ç¤ºæ–¹æ³•ã¯ç’°å¢ƒè¨å®šã§å¤‰æ›´ã—ã¦ãã ã•ã„。
-
-
- カメラã®è¦–点を変更ã™ã‚‹ã«ã¯ã€æ°´å¹³ãƒ»åž‚直コントãƒãƒ¼ãƒ«ã‚’使ã„ã¾ã™ã€‚Escape を押ã™ã‹ã€ã¾ãŸã¯æ©è¡Œã™ã‚‹ã¨ã€è¦–点ãŒãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚
-
-
- æŒã¡ç‰©ã«ã¯ã‚ãªãŸã®ã‚¢ã‚¤ãƒ†ãƒ ãŒã™ã¹ã¦å«ã¾ã‚Œã¾ã™ã€‚æ–°ã—ãè¿½åŠ ã•れãŸã‚¢ã‚¤ãƒ†ãƒ ã¯ã€Œæœ€æ–°ã€ã‚¿ãƒ–ã«ä¸€è¦§è¡¨ç¤ºã•れã¦ã„ã¾ã™ã€‚
-
-
- ã“れãŒã‚ãªãŸã® L$ 残高ã§ã™ã€‚リンデンドルを購入ã™ã‚‹ã«ã¯ã€ŒL$ ã®è³¼å…¥ã€ã‚’クリックã—ã¾ã™ã€‚
-
-
- ãƒãƒƒãƒ—アップãŒãƒ–ãƒãƒƒã‚¯ã•れã¾ã—ãŸã€‚
-
-
-
- 「[REALM]ã€ã«ã‚る「<nolink>[HOST_NAME]</nolink>ã€ã®ã‚µã‚¤ãƒˆã«ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘スワードãŒå¿…è¦ã§ã™ã€‚
-
-
-
- モードを変更ã™ã‚‹ã«ã¯çµ‚了ã—ã¦å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
-
-
-
- クラシファイド広告ã®ä½œæˆã¨ç·¨é›†ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚終了ã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿãƒ¢ãƒ¼ãƒ‰ã¯ãƒã‚°ã‚¤ãƒ³ç”»é¢ã§é¸æŠžã§ãã¾ã™ã€‚
-
-
-
- グループã®ä½œæˆã¨ç·¨é›†ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚終了ã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿãƒ¢ãƒ¼ãƒ‰ã¯ãƒã‚°ã‚¤ãƒ³ç”»é¢ã§é¸æŠžã§ãã¾ã™ã€‚
-
-
-
- ピックã®ä½œæˆã¨ç·¨é›†ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚終了ã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿãƒ¢ãƒ¼ãƒ‰ã¯ãƒã‚°ã‚¤ãƒ³ç”»é¢ã§é¸æŠžã§ãã¾ã™ã€‚
-
-
-
- 世界地図ã®è¡¨ç¤ºã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚終了ã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿãƒ¢ãƒ¼ãƒ‰ã¯ãƒã‚°ã‚¤ãƒ³ç”»é¢ã§é¸æŠžã§ãã¾ã™ã€‚
-
-
-
- ボイスコールã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- 共有ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- ä»–ã®ä½äººã¸ã®æ”¯æ‰•ã„ã¯ã‚¢ãƒ‰ãƒãƒ³ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¦ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã‹ï¼Ÿ
-
-
-
- - ã‚ãªãŸã® CPU ã®é€Ÿåº¦ã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。
-
-
- [APP_NAME] ã«å¿…è¦ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãŒãªã„よã†ã§ã™ã€‚ [APP_NAME] ã«ã¯ãƒžãƒ«ãƒãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ OpenGL グラフィックカードãŒå¿…è¦ã§ã™ã€‚ ãŠä½¿ã„ã®ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ã‚«ãƒ¼ãƒ‰ã®æœ€æ–°ãƒ‰ãƒ©ã‚¤ãƒãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã€ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã®ã‚µãƒ¼ãƒ“スパックã¨ãƒ‘ッãƒãŒå…¥ã£ã¦ã„ã‚‹ã‹ã‚’ã”確èªãã ã•ã„。
-
-ã“ã®å•題ãŒä½•度も起ãã‚‹å ´åˆã¯ã€[SUPPORT_SITE] ã‚’ã”確èªãã ã•ã„。
-
-
- 796
-
-
- 510
-
-
- - ã‚ãªãŸã®ã‚°ãƒ©ãƒ•ィックカードã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。
-
-
- - ã‚ãªãŸã®ã‚·ã‚¹ãƒ†ãƒ メモリã¯å¿…é ˆå‹•ä½œç’°å¢ƒã®æ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。
-
-
- 自分ã®åœŸåœ°ã‚’ãŠæŒã¡ã®å ´åˆã€ã€Œãƒ›ãƒ¼ãƒ ã€ã«è¨å®šã§ãã¾ã™ã€‚
-ãŠæŒã¡ã§ãªã„å ´åˆã¯ã€åœ°å›³ã§ã€Œã‚¤ãƒ³ãƒ•ã‚©ãƒãƒ–ã€ã‚’ãŠæŽ¢ã—ãã ã•ã„。
-
-
- æ»ã‚“ã§ã—ã¾ã£ãŸã®ã§ã€ãƒ›ãƒ¼ãƒ ã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã•れã¾ã—ãŸã€‚
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
deleted file mode 100644
index 17e1283d24..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
deleted file mode 100644
index 13be2cea0a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
deleted file mode 100644
index f7f575206a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
deleted file mode 100644
index 14c38c796f..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_login.xml b/indra/newview/skins/minimal/xui/ja/panel_login.xml
deleted file mode 100644
index ac1fe455c7..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- http://jp.secondlife.com/registration/
-
-
- http://secondlife.com/account/request.php?lang=ja
-
-
-
-
- ユーザーãƒãƒ¼ãƒ :
-
-
-
- パスワード:
-
-
-
-
- モード:
-
-
-
-
-
-
- 開始地点:
-
-
-
-
-
-
-
-
-
- ãŠç”³ã—è¾¼ã¿
-
-
- ユーザーåã¾ãŸã¯ãƒ‘スワードをãŠå¿˜ã‚Œã§ã™ã‹ï¼Ÿ
-
-
- ãƒã‚°ã‚¤ãƒ³ã®æ–¹æ³•
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
deleted file mode 100644
index 0426c4fe9a..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_people.xml b/indra/newview/skins/minimal/xui/ja/panel_people.xml
deleted file mode 100644
index 5caeebc151..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- ä½äººã‚’å³ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹ã¨ã€ãƒ•レンド登録ã§ãã¾ã™ã€‚
-一緒ã«ä½•ã‹ã™ã‚‹ä»²é–“ã‚’ãŠæŽ¢ã—ã§ã™ã‹ï¼Ÿä¸‹ã®ã€Œè¡Œã先ガイドã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ãã ã•ã„。
-
-
- ãŠæŽ¢ã—ã®ã‚‚ã®ã¯è¦‹ã¤ã‹ã‚Šã¾ã—ãŸã‹ï¼Ÿä¸‹ã®ã€Œè¡Œã先ガイドã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ãã ã•ã„。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
deleted file mode 100644
index d06db8ccb1..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
deleted file mode 100644
index 163064484b..0000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- 日曜日:月曜日:ç«æ›œæ—¥:水曜日:木曜日:金曜日:土曜日
-
-
- 1月:2月:3月:4月:5月:6月:7月:8月:9月:10月:11月:12月
-
-
- パケットæå¤±
-
-
- 帯域幅
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt])
-
-
- L$ [AMT]
-
-
-
-
-
-
- 24:00 AM PST
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/floater_camera.xml b/indra/newview/skins/minimal/xui/pl/floater_camera.xml
deleted file mode 100644
index 5b9dd47616..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- Obracaj kamerę wokół obiektu
-
-
- Najedź kamerą w kierunku obiektu
-
-
- Poruszaj kamerą w dół/górę oraz w prawo/lewo
-
-
- Ustawienia
-
-
- W prawo lub w lewo
-
-
- Ustaw widok
-
-
- Zobacz obiekt
-
-
-
-
-
- Widok z przodu
-
-
-
-
- PodglÄ…d grupy
-
-
-
-
- Widok z tyłu
-
-
-
-
-
-
- Widok obiektu
-
-
-
-
- Widok panoramiczny
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
deleted file mode 100644
index 66fde04f88..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Åadowanie...
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
deleted file mode 100644
index 02b7c6bc2b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
deleted file mode 100644
index 7dc3e1f22e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml b/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
deleted file mode 100644
index e3096f1e54..0000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
deleted file mode 100644
index 5e982c0185..0000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- [AGE]
-
-
- [SL_PROFILE]
-
-
- To jest mój opis w Second Life.
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_object.xml b/indra/newview/skins/minimal/xui/pl/inspect_object.xml
deleted file mode 100644
index 23d8ce7700..0000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- Przez [CREATOR]
-
-
- Twórca [CREATOR]
-Właściciel [OWNER]
-
-
- L$[AMOUNT]
-
-
- Darmowe!
-
-
- Dotknij
-
-
- Usiądź tutaj
-
-
-
- L$30,000
-
-
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
deleted file mode 100644
index 7c572b4fc9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
deleted file mode 100644
index aacdad97e3..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
deleted file mode 100644
index 163b3a231e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
deleted file mode 100644
index e8d2b14231..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
deleted file mode 100644
index dcf7921bad..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
deleted file mode 100644
index d481475803..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
deleted file mode 100644
index 8da40dcedf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
deleted file mode 100644
index 4e5407601b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
deleted file mode 100644
index ee60d3feb6..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
deleted file mode 100644
index ad43900137..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
deleted file mode 100644
index 9fba39be1a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_edit.xml b/indra/newview/skins/minimal/xui/pl/menu_edit.xml
deleted file mode 100644
index 578e270fed..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml b/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
deleted file mode 100644
index 7310ff5c27..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
deleted file mode 100644
index a72dec22fc..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
deleted file mode 100644
index 83be4d38c5..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
deleted file mode 100644
index 19d9510cd3..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
deleted file mode 100644
index 207bc2211b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4ead44878a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
deleted file mode 100644
index 2b9a362123..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
deleted file mode 100644
index 8924d6db3e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 59560f236c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
deleted file mode 100644
index c12bd490ff..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
deleted file mode 100644
index c4ef9761d9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 5ef0f2f7a4..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
deleted file mode 100644
index e47ffa0e18..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
deleted file mode 100644
index 4a56586aaf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
deleted file mode 100644
index 591c3a81d5..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_land.xml b/indra/newview/skins/minimal/xui/pl/menu_land.xml
deleted file mode 100644
index cbfecaee56..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
deleted file mode 100644
index aa5808390c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_login.xml b/indra/newview/skins/minimal/xui/pl/menu_login.xml
deleted file mode 100644
index e50b694641..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
deleted file mode 100644
index 8f86965416..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
deleted file mode 100644
index 1d434670ee..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
deleted file mode 100644
index fe5bc6ba6f..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
deleted file mode 100644
index bd3d42f9b1..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object.xml b/indra/newview/skins/minimal/xui/pl/menu_object.xml
deleted file mode 100644
index 3da6c5c890..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
deleted file mode 100644
index b499bca2db..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
deleted file mode 100644
index 1a70e76ec7..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
deleted file mode 100644
index 998e25f38e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
deleted file mode 100644
index 9e59102788..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
deleted file mode 100644
index b62b85d30a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
deleted file mode 100644
index ace5ebf888..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
deleted file mode 100644
index c70ea2315f..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
deleted file mode 100644
index 0111e0fd51..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
deleted file mode 100644
index dcfc48fb60..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 8ec3820f84..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
deleted file mode 100644
index b474a556bd..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks.xml b/indra/newview/skins/minimal/xui/pl/menu_picks.xml
deleted file mode 100644
index 6f6e4b7fa8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
deleted file mode 100644
index e9c00f51a9..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place.xml b/indra/newview/skins/minimal/xui/pl/menu_place.xml
deleted file mode 100644
index c3b72d6abb..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
deleted file mode 100644
index 3d0c1c87fb..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
deleted file mode 100644
index d1f283b7aa..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
deleted file mode 100644
index 0139d3a987..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
deleted file mode 100644
index ef836c8ecf..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
deleted file mode 100644
index 4bc65eca38..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
deleted file mode 100644
index 256500a402..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
deleted file mode 100644
index 862f538aa7..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
deleted file mode 100644
index 0e58592d46..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
deleted file mode 100644
index cd36c116b0..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
deleted file mode 100644
index b12df08d6a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
deleted file mode 100644
index 812f87bc1a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
deleted file mode 100644
index 53536c8f1c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
deleted file mode 100644
index db729be725..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml b/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
deleted file mode 100644
index f340b3296a..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml b/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
deleted file mode 100644
index e73f7b6745..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
deleted file mode 100644
index e36fa0dd2b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml b/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
deleted file mode 100644
index 179ab1f676..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
deleted file mode 100644
index 7576208a9e..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
deleted file mode 100644
index 1b8dd62137..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
deleted file mode 100644
index eb83245c48..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
deleted file mode 100644
index 4d4a5b4c4d..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
deleted file mode 100644
index e225546930..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml b/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
deleted file mode 100644
index 0196dc8613..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
deleted file mode 100644
index bf85246be8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
deleted file mode 100644
index 47cafdbd99..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
deleted file mode 100644
index 7531437043..0000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/notifications.xml b/indra/newview/skins/minimal/xui/pl/notifications.xml
deleted file mode 100644
index 6475a37465..0000000000
--- a/indra/newview/skins/minimal/xui/pl/notifications.xml
+++ /dev/null
@@ -1,2907 +0,0 @@
-
-
-
- Nie pokazuj tej opcji następnym razem
-
-
- Pozwalaj na wybór tej opcji
-
-
- Zamknij
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Twoja wersja klienta [APP_NAME] nie może wyświetlić odebranej wiadomości. Upewnij się, że posiadasz najnowszą wersję klienta.
-
-Szczegóły błędu: Błąd o nazwie '[_NAME]' nie został odnaleziony w pliku notifications.xml.
-
-
-
- Błąd: nie można znaleźć następujących elementów:
-
-[CONTROLS]
-
-
-
- Brak samouczka na ten temat
-
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
-
- Podczas aktualizacji [APP_NAME] wystąpił błąd. Proszę odwiedzić stronę [http://get.secondlife.com pobierz najnowsza wersję] aby ściągnąć ostatnią wersję klienta.
-
-
-
- Nie można połączyć z [SECOND_LIFE_GRID].
- '[DIAGNOSTIC]'
-Upewnij się, że Twoje połączenie z internetem działa.
-
-
-
- Wzór komunikatu dla [PATH] nie został odnaleziony.
-
-
-
- Zapisać zmiany dotyczące ubrania/części ciała?
-
-
-
- W trakcie ładwania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
-
-
- W trakcie ładowania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
-
-
- Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut.
-
-
- W trakcie ładwania obrazu aukcji pojawił się problem z następującego powodu: [REASON].
-
-
- Nie można przeglądać zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-
-
- Zapisać wszystkie zmiany dotyczące ubrania/cześci ciała?
-
-
-
- Osoby spoza listy znajomych, których rozmowy głosowe i IM są ignorowane, nie wiedzą o tym.
-
-
-
- Pamiętaj: kiedy wyłączysz tą opcję, każdy kto używa tego komputera, może zobaczyć Twoją listę ulubionych miejsc.
-
-
-
- Udzielenie praw modyfikacji innemu Rezydentowi umożliwia modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz udzielić prawa do modyfikacji [NAME]?
-
-
-
- Udzielenie praw modyfikacji innym Rezydentom umożliwia im modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz dać prawa modyfikacji wybranym osobom?
-
-
-
- Czy chcesz odebrać prawa do modyfikacji [NAME]?
-
-
-
- Czy chcesz odebrać prawa modyfikacji wybranym Rezydentom?
-
-
-
- Założenie grupy nie jest możliwe.
-[MESSAGE]
-
-
-
- [NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-
-
-
- Aby wysłać ogłoszenie do grupy musisz nadać mu tytuł.
-
-
-
- Dodajesz członków do funkcji [ROLE_NAME].
-Ta funkcja nie może być odebrana.
-Członkowie muszą sami zrezygnować z pełnienia tej funkcji.
-Chcesz kontynuować?
-
-
-
- Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME].
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać siebie i innych członków nie będących właścicielami do funkcji dających więcej przywilejów niż posiadane obecnie potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagÄ…."
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
-
-
-
- Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME]
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać sobie i innychm członkom nie będącym właścicielami wszystkie przywileje potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagÄ….
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
-
-
-
- Wybrałeś opcję opuszczenia swojego załącznika.
- Czy chcesz kontynuować?
-
-
-
- Dołączenie do tej grupy kosztuje [COST]L$.
-Chcesz kontynuować?
-
-
-
- Dołączasz do grupy [NAME].
-Czy chcesz kontynuować?
-
-
-
- Członkostwo w tej grupie kosztuje [COST]L$
-Masz za mało L$ żeby zostać członkiem.
-
-
- Stworzenie tej grupy kosztuje 100L$.
-W grupie powinien być więcej niż jeden członek, albo zostanie na zawsze skasowana.
-Zaproś proszę członków w ciągu 48 godzin.
-
-
-
- Za [COST]L$ możesz odwiedzić tą posiadłość ('[PARCEL_NAME]') na [TIME] godzin. Chcesz kupić przepustkę?
-
-
-
- Cena sprzedaży musi być wyższa niż 0L$ jeżeli sprzedajesz komukolwiek.
-Musisz wybrać kupca jeżeli chcesz sprzedać za 0L$.
-
-
- Posiadłość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
-
-
-
- UWAGA: Wybierając opcję "Sprzedaj Każdemu" udostępniasz swoją posiadłość do sprzedaży dla jakiegokolwiek Rezydenta [SECOND_LIFE] , nawet osób nieobecnych w tym regionie.
-
-Posiadłość o powierzchni [LAND_SIZE] m² zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
-
-
-
- Czy na pewno chcesz zwrócić wszystkie obiekty udostępnione grupie [NAME] na tej posiadłości do szafy ich poprzednich właścicieli?
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów
-udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
-
-
-
- Czy na pewno chcesz zwrócić wszystkie obiekty należące do Rezydenta [NAME] znajdujące się na tej posiadłości do szafy właściciela?
-
-Obiekty: [N]
-
-
-
- Czy na pewno chcesz zwrócić wszystkie Twoje obiekty znajdujące się na tej posiadłości do swojej szafy?
-
-Obiekty: [N]
-
-
-
- Czy na pewno chcesz zwrócić wszystkie obiekty, których nie jesteś właścicielem znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
-
-
-
- Czy na pewno chcesz zwrócić wszystkie obiekty, które nie należą do [NAME] znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
-
-
-
- Czy na pewno chcesz zwrócić wszystkie wymienione obiekty znajdujące się na tej posiadłości do szaf ich właścicieli?
-
-
-
- Czy na pewno chcesz deaktywować wszystkie obiekty w tym Regionie?
-
-
-
- Zwrócić obiekty z tej posiadłości, które nie są udosępnione grupie [NAME] do ich właścicieli?
-
-Obiekty: [N]
-
-
-
- Nie można deaktywować skryptów.
-Ten region pozwala na uszkodzenia.
-Skrypty muszą pozostać aktywne dla prawidłowego działania broni.
-
-
- Obecnie zaznaczono wiele powierzchni.
-Jeśli działanie będzie kontynuowane, oddzielne media będą ustawione na wielu powierzchniach obiektu.
-W celu umieszczenia mediów tylko na jednej powierzchni skorzystaj z Wybierz powierzchnię i kliknij na wybranej powierzchni obiektu oraz kliknij Dodaj.
-
-
-
- Musisz znajdować się wewnątrz posiadłości żeby wybrać punkt lądowania.
-
-
- Proszę wpisać adres emailowy odbiorcy.
-
-
- Proszę wpisać swój adres emailowy.
-
-
- Wysłać widokówkę z domyślnym tematem i wiadomością?
-
-
-
- Błąd w trakcie przetwarzania danych zdjęcia.
-
-
- Błąd w kodowaniu zdjęcia.
-
-
- W trakcie ładowania zdjęcia pojawił się problem z następującego powodu: [REASON]
-
-
- W trakcie ładowania zdjęcia ekranu do raportu pojawił się problem z następującego powodu: [REASON]
-
-
- Musisz zaakceptować Warunki Umowy (Terms of Service) by kontynuować logowanie się do [SECOND_LIFE].
-
-
- Założenie stroju nie powiodło się.
-Folder stroju nie zawiera żadnego ubrania, części ciała ani załączników.
-
-
- Nie możesz założyć ubrania, które znajduje się w koszu.
-
-
- Nie można dołączyć obiektu.
-Limit [MAX_ATTACHMENTS] załączników został przekroczony. Proszę najpierw odłączyć inny obiekt.
-
-
- Nie możesz założyć tego artkułu ponieważ nie załadował się poprawnie. Spróbuj ponownie za kilka minut.
-
-
- Oops! Brakuje czegoÅ›.
-Należy wprowadzić nazwę użytkownika.
-
-Potrzebujesz konta aby się zalogować do [SECOND_LIFE]. Czy chcesz utworzyć je teraz?
-
-
-
- Należy wprowadzić nazwę użytkownika lub imię oraz nazwisko Twojego awatara w pole nazwy użytkownika a następnie ponownie się zalogować.
-
-
- Usunąć reklamę '[NAME]'?
-Pamiętaj! Nie ma rekompensaty za poniesione koszta.
-
-
-
- Wybrano usunięcie mediów związanych z tą powierzchnią.
-Czy na pewno chcesz kontynuować?
-
-
-
- Zapisać zmiany w reklamie [NAME]?
-
-
-
- Nie posiadasz wystarczających środków aby dodać reklamę.
-
-
-
- Usuń zdjęcie <nolink>[PICK]</nolink>?
-
-
-
- Skasować wybrane stroje?
-
-
-
- Odwiedzić internetową stronę Imprez [SECOND_LIFE]?
-
-
-
- Wybierz propozycję, którą chcesz zobaczyć.
-
-
- Wybierz obiekt z historii, który chcesz zobaczyć.
-
-
- Bufor danych zostanie wyczyszczony po restarcie aplikacji [APP_NAME].
-
-
- Bufor danych zostanie przeniesiony po restarcie aplikacji [APP_NAME].
-Pamiętaj: Opcja ta wyczyszcza bufor danych.
-
-
- Ustawienia portu zostajÄ… zaktualizowane po restarcie aplikacji [APP_NAME].
-
-
- Nowa skórka zostanie wczytana po restarcie aplikacji [APP_NAME].
-
-
- Zmiana języka zadziała po restarcie [APP_NAME].
-
-
- Odwiedzić stronę internetową [SECOND_LIFE] żeby zobaczyć szczgóły aukcji lub zrobić ofertę?
-
-
-
- Zapisać zmiany?
-
-
-
- Nie można zapisać gesturki.
-Ta gesturka ma zbyt wiele etapów.
-Usuń kilka etapów i zapisz jeszcze raz.
-
-
- Zapis gesturki nie powiódł się. Spróbuj jeszcze raz za kilka minut.
-
-
- Nie można zapisać gesturki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-
-
- Nie można zapisać gesturki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
-
-
- Nie można zapisać notki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-
-
- Nie można zapisać notki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
-
-
- Nie można cofnąć wszystkich zmian w Twojej wersji skryptu.
-Czy chcesz załadować ostatnią wersję zapisaną na serwerze?
-(*UWAGA* Ta operacja jest nieodwracalna.)
-
-
-
- Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
-
-
- Nie można zapisać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-
-
- Nie można zapisać skompilowanego skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
-
-
- Oops, Twoje miejsce startu nie zostało określone.
-Wpisz proszÄ™ nazwÄ™ regionu w lokalizacjÄ™ startu w polu Lokalizacja Startu lub wybierz Moja ostatnia lokalizacja albo Miejsce Startu.
-
-
-
- Nie można uruchomić lub zatrzymać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-
-
- Nie można załadować pliku
-
-
- Nie można zapisać pliku [[FILE]]
-
-
- Niestety Twój komputer nie spełnia minimalnych wymogów sprzętowych dla poprawnego działania [APP_NAME]. Możesz odczuwać bardzo niską wydajność operacyjną. Niestety portal pomocy, [SUPPORT_SITE] nie posiada informacji na temat poprawnej konfiguracji technicznej Twojego systemu.
-
-Po więcej info, odwiedź stronę [_URL] .
-
- http://www.secondlife.com/corporate/sysreqs.php
-
-
-
-
- Twój system jest wyposażony w kartę graficzną, która nie jest rozpoznana przez [APP_NAME].
-Zdarza się to często w przypadku nowego sprzętu, który nie był testowany z [APP_NAME]. Prawdopodobnie wystarczy dostosowanie ustawień grafiki aby działanie było poprawne.
-(Ja > Właściwości > Grafika).
-
-
-
- [APP_NAME] zawiesił się podczas inicjalizacji sterowników graficznych.
-Jakość grafiki została zmniejszona - może to pomóc.
-Pewne funkcje graficzne zostały wyłączone. Zalecamy aktualizcje sterowników graficznych.
-Możesz podnieść jakość grafiki pod Ustawienia > Grafika.
-
-
- Region [REGION] nie pozwala na formowanie powierzchni ziemi.
-
-
- Nie masz pozwolenia na kopiowanie następujących obiektów:
-[ITEMS]
-i stracisz je w momencie przekazania. Czy na pewno chcesz oddać te obiekty?
-
-
-
- Podarowanie obiektu nie powiodło się.
-
-
- Transakcja anulowana
-
-
- Jednorazowo możesz podarować maksymalnie 42 obiekty z szafy.
-
-
- Nie masz praw do transferu wybranych obiektów.
-
-
- Nie masz praw do skopiowania [COUNT] wybranych obiektów. Obiekty znikną z Twojej szafy.
-Na pewno chcesz oddać te obiekty?
-
-
-
- Nie masz praw do transferu wybranego foldera.
-
-
- Unieruchomić tego awatara?
-Awatar tymczasowo nie będzie mógł się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
-
-
-
- Unieruchowmić [AVATAR_NAME]?
-Ta osoba tymczasowo nie będzie mógła się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
-
-
-
- Wyrzucić [AVATAR_NAME] z Twojej posiadłości?
-
-
-
- Wyrzuć [AVATAR_NAME] z grupy [GROUP_NAME]
-
-
- BÅÄ„D OTRZYMYWANIA: Zbyt wiele wybranych obiektów.
-
-
- BÅÄ„D OTRZYMYWANIA: Obiekty przekraczajÄ… granicÄ™ regionów. Przemieść wszystkie otrzymywane obiekty do jednego regionu.
-
-
- [EXTRA]
-
-Odwiedź stronę [_URL] po więcej informacji na temat zakupu L$?
-
-
-
- Nie można połączyć [COUNT] obiektów.
-Maksymalnie można połączyć [MAX] obiektów.
-
-
- Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać więcej niż jeden obiekt.
-
-
- Nie możesz połączyć obiektów ponieważ nie masz praw modyfikacji dla wszystkich obiektów.
-
-Upewnij się, że żaden z obiktów nie jest zablokowany i że wszystkie obiekty należą do Ciebie.
-
-
- Nie możesz połączyć obiektów ponieważ należą one do różnych osób.
-
-Upewnij sie, że wszystkie wybrane obiekty należą do Ciebie.
-
-
- Niepoprawna końcówka nazwy pliku: '[FILE]'
-
-Upewnij się, że nazwa pliku ma poprawaną końcówkę.
-
-
- Niepoprawna końcówka nazwy pliku - [EXTENSION]
-Oczekiwana - [VALIDS]
-
-
-
- Nie można otworzyć załadowanego pliku dźwiękowego:
-[FILE]
-
-
- Plik nie jest w formacie RIFF WAVE:
-[FILE]
-
-
- Plik nie jest w formacie PCM WAVE:
-[FILE]
-
-
- Plik zawiera niewłaściwą liczbę kanałów (musi być mono albo stereo):
-[FILE]
-
-
- Plik zawiera niewłaścią częstotliwość (musi być 44.1k):
-[FILE]
-
-
- Plik zawiera niewłaściwą szerokość danych (musi być 8 albo 16 bitów):
-[FILE]
-
-
- Brak bloku 'data' w nagłówku pliku WAV:
-[FILE]
-
-
- Niewłaściwy rozmiar "chunk" w pliku WAV:
-[FILE]
-
-
- Plik audio jest zbyt długi (10 sekund maksimum):
-[FILE]
-
-
- Nie można otworzyć tymczasowego skompresowango pliku dźwiękowego w celu zapisu: [FILE]
-
-
- Nieznany błąd kodowania Vorbis w: [FILE]
-
-
- Kodowanie pliku: [FILE] nie powidło się.
-
-
- Nie można wpisać Twojego imienia użytkownika ani hasła. To może się zdarzyć kiedy zmieniasz ustawienia sieci.
-
-
-
- Skorumpowany plik zasobów: [FILE]
-
-
- Nieznana wersja pliku zasobów Linden w pliku: [FILE]
-
-
- Nie można utworzyć pliku wyjściowego: [FILE]
-
-
- [APP_NAME] obecnie nie wspomaga ładowania grupowego plików animacji.
-
-
- Åadowanie pliku [FILE] nie powiodÅ‚o siÄ™ z powodu: [REASON]
-Spróbuj jeszcze raz póżniej.
-
-
- Dodano "[LANDMARK_NAME]" do folderu [FOLDER_NAME].
-
-
- Posiadasz już landmark dla tej lokalizacji.
-
-
-
- Nie możesz zapamiętać tego miejsca (LM) ponieważ właściciel posiadłości nie pozwala na to.
-
-
- 'Rekompilacja' nie powiodła się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-
-
- 'Rekompilacja' nie powiodła się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
-
-
- 'Resetowanie' nie powiodło się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-
-
- 'Resetowanie' nie powiodło się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
-
-
- Nie można otworzyć skryptu bez prawa do modyfikacji obiektu.
-
-
- 'Uruchomienie' skryptów nie powiodło się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-
-
- 'Zatrzymanie' skryptów nie powiodło się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-
-
- Brak górnego okna do zapisu.
-
-
- Twoje zapytanie wyszukiwania zostło zmienione - zbyt krótkie słowa zostały usunięte.
-
-Nowe zapytanie: [FINALQUERY]
-
-
- Użyte terminy wyszukiwania były zbyt krótkie - wyszukiwanie zostało anulowane.
-
-
- Teleportacja nie powiodła się.
-[REASON]
-
-
- Niestety, pojawił się błąd podczas próby teleportacji. Proponujemy wylogowanie się i spróbowanie teleportacji ponownie.
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
-
-
- Niestety, pojawił się błąd podczas próby przedostania się na drugi region. Proponujemy wylogowanie się i spróbowanie przedostania się na drugi region ponownie.
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
-
-
- Przepraszamy, teleportacja jest chwilowo niedostępna. Spróbuj jeszcze raz.
-Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
-
-
- Przepraszamy, ale nie możemy znaleźć miejsca docelowego.
-
-
- Przepraszamy, ale nie udało się przeprowadzić teleportacji. Spróbuj jeszcze raz.
-
-
- Przepraszamy, ale nie masz dostępu do miejsca docelowego.
-
-
- Czekamy na Twoje akcesoria. Możesz poczekać kilka minut lub zrobić relog przed następną próbą teleportacji.
-
-
- Obecnie ten region ma problemy z ładowaniem obiektów w związku z czym teleportacja bardzo sie opóźnia.
-Spróbuj jeszcze raz za kilka minut albo teleportuj się do mniej zatłoczonego miejsca.
-
-
- Przepraszamy, ale nie udało się przeprowadzić teleportacji wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
-
-
- Przepraszamy, ale nie udało się przeprowadzić zmiany regionu wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
-
-
- Nie możemy znaleść miejsca docelowego. To miejsce może być chwilowo nieosiągalne albo przestało istnieć.
-Spróbuj jeszcze raz za kilka minut.
-
-
- Szafa chwilowo nie działa.
-
-
- Nie można wybrać właściciela posiadłości.
-Posiadłość nie została wybrana.
-
-
- Nie można wybrać właściciela posiadłości ponieważ wybrany obszar przekracza granicę regionów. Wybierz mniejszy obszar i spróbuj jeszcze raz.
-
-
- Ta posiadłość jest wystawiona na aukcję. Wymuszenie własności anuluje aukcję i potencjalnie może zdenerwować zainteresowanych Rezydentów, jeżeli licytacja już się rozpoczęła.
-Wymusić własność?
-
-
-
- Nie można sfinalizować:
-Posiadłość nie została wybrana.
-
-
- Nie można sfinalizować:
-Region nie znaleziony.
-
-
- Nie można porzucić posiadłości:
-Posiadłość nie została wybrana.
-
-
- Nie można porzucić posiadłości:
-Region nie znaleziony.
-
-
- Nie można kupić posiadłości:
-Posiadłość nie została wybrana.
-
-
- Nie można kupić posiadłości:
-Region nie znaleziony.
-
-
- Okno zakupu landu nie może zostać zamknięte dopóki aplikacja [APP_NAME] nie określi ceny dla tej transkacji.
-
-
- Nie można przekazać posiadłości:
-Posiadłość nie została wybrana.
-
-
- Nie można przekazać posiadłości:
-Grupa nie została wybrana.
-
-
- Brak możliwości przepisania posiadłości grupie:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-
-
- Nie można przekazać posiadłości:
-Wiele posiadłości jest wybranych.
-
-Spróbuj wybrać pojedynczą posiadłość.
-
-
- Nie można przekazać posiadłości:
-Serwer aktualizuje dane własności.
-
-Spróbuj jeszcze raz póżniej.
-
-
- Nie możesz przekazać posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
-
-
- Nie można porzucić posiadłości:
-Serwer aktualizuje dane posiadłości.
-
-Spróbuj jeszcze raz póżniej.
-
-
- Nie możesz porzucić posiadłości:
-Nie jesteś właścicielem wszystkich wybranych posiadłości.
-
-Wybierz pojedynczą posiadłość.
-
-
- Nie możesz porzucić posiadłości:
-Nie masz praw do porzucenia tej posiadłości.
-
-Twoje posiadłości są podkreślone na zielono.
-
-
- Brak możliwości porzucenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-
-
- Nie możesz porzucić posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
-
-
- Nie można porzucić posiadłości:
-Musisz wybrać całą posiadłość by ją porzucić.
-Wybierz całą posiadłość albo najpierw ją podziel.
-
-
- Porzucasz posiadłość o powierzchni [AREA] m².
-Porzucenie tej posiadłości usunie ją z Twoich własności.
-Nie otrzymasz za to żadnej opłaty.
-
-Porzucić posiadłość?
-
-
-
- Nie można podzielić posiadłości:
-
-Posiadłość nie została wybrana.
-
-
- Nie można podzielić posiadłości:
-
-Posiadłość została wybrana w całości.
-Spróbuj wybrać część posiadłości.
-
-
- Podział tej posiadłości stworzy dwie posiadłości z których każda będzie mogła mieć indywidualne ustawienia.
-Niektóre ustawienia zostaną zmienione na domyślne po tej operacji.
-
-Podzielić posiadłość?
-
-
-
- Brak możliwości podziału posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-
-
- Brak możliwości złączenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-
-
- Nie można połączyć posiadłości:
-Posiadłości nie zostały wybrane.
-
-
- Nie można połączyć posiadłości:
-Tylko jedna posiadłość została wybrana.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
-
-
- Nie można połączyć posiadłości:
-Musisz wybrać więcej niż jedną posiadłość.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
-
-
- Połączenie tego obszaru utworzy jedną większą posiadłość ze wszystkich posiadłości przecinających wybrany prostokąt. Nazwa i opcje posiadłości bedą musiały zostać skonfigurowane.
-
-Połączyć posiadłości?
-
-
-
- Ta notka musi być zapisana żeby mogła być skopiowana lub zobaczona. Zapisać notkę?
-
-
-
- Skopiować ten obiekt do Twojej szafy?
-
-
-
- Zmiana rozdzielczości do [RESX] x [RESY] nie powidła się
-
-
- Błąd: niezdefiniowane trawy: [SPECIES]
-
-
- Bład: niezdefiniowane drzewa: [SPECIES]
-
-
- Nie można zapisać '[NAME]' do pliku stroju. Musisz zwolnić trochę miejsca na Twoim komputerze i zapisać strój jeszcze raz.
-
-
- Nie można zapisać [NAME] w centralnym zbiorze danych.
-Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisać strój ponownie za kilka minut.
-
-
- Nastąpiło wylogowanie z [SECOND_LIFE]
- [MESSAGE]
-
-
-
- Nie możesz kupić posiadłości dla grupy.
-Nie masz praw kupowania posiadłości dla Twojej aktywnej grupy.
-
-
- Znajomi mogą pozwalać na odnajdywanie się wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE].
-
-Zaproponować znajomość [NAME]?
-
-
-
- Zapisz to co noszę jako nowy strój:
-
-
-
- Zapisz obiekt w mojej Szafie jako:
-
-
-
- Nowa nazwa stroju:
-
-
-
- Czy chcesz usunąć [NAME] z listy znajomych?
-
-
-
- Chcesz usunąć grupę osób z listy Twoich znajomych?
-
-
-
- Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-z posiadłości innych w tym symulatorze?
-
-
-
- Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
-
-
-
- Na pewno chcesz usunąć wszystkie obiekty (skryptowane i nie) należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
-
-
-
- Musisz nadać tytuł Twojej reklamie.
-
-
- Minimalna cena za publikacjÄ™ wynosi [MIN_PRICE]L$.
-
-Wybierz wyższą cenę.
-
-
- Co najmiej jeden z elementów, które masz posiada połączone z nim obiekty. Jeśli go usuniesz połączenia zostaną usunięte na stałe. Zaleca się usunięcie połączeń w pierwszej kolejności.
-
-Jesteś pewnien/pewna, że chcesz usunąć te elementy?
-
-
-
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmnie jeden obiekt jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
-
-
-
- Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
-
-
-
- Przynajmnie jeden obiekt jest zablokowany.
-Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
-
-
-
- Nie możesz kupić posiadłości ponieważ wybrany obszar przekracza granicę regionów.
-
-Wybierz mniejszy obszar i spróbuj jeszcze raz.
-
-
- Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości. Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie '[GROUP_NAME]'?
-
-
-
- Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości.
-Przekazanie będzie zawierać równoczesne przypisanie posiadłości do grupy od '[NAME]'.
-Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie '[GROUP_NAME]'?
-
-
-
- Ustawienia grafiki zostały zmienione do bezpiecznego poziomu ponieważ opcja -safe została wybrana.
-
-
- Ustawienia grafiki zostały zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu.
-
-
- [ERROR_MESSAGE]
-
-
-
- Miejsce, do którego chcesz się teleportować jest chwilowo nieobecne.
-Zostałeś przeniesiony do regionu sąsiedniego.
-
-
- Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do sąsiedniego regionu.
-
-
- Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do pobliskiego regionu.
-Możesz ustawić nowe miejsce startu.
-
-
- Twoje ubranie wciąż się ładuje.
-Możesz normalnie używać [SECOND_LIFE], inni użytkownicy będą Cię widzieli poprawnie.
-
-
-
- Instalacja [APP_NAME] zakończona.
-
-Jeżeli używasz [SECOND_LIFE] po raz pierwszy to musisz stworzyć konto żeby móc się zalogować.
-Czy chcesz przejść na stronę [http://join.secondlife.com secondlife.com] żeby stworzyć nowe konto?
-
-
-
- Problemy z połączeniem. Problem może być spowodowany Twoim połączeniem z Internetem albo może istnieć po stronie [SECOND_LIFE_GRID].
-
-Możesz sprawdzić swoje połączenie z Internetem i spróbować ponownie za kilka minut lub połączyć się ze stroną pomocy technicznej tutaj [SUPPORT_SITE] lub wybrać Teleportuj by teleportować się do swojego miejsca startu.
-
-
-
- Twoja postać pojawi się za moment.
-
-Używaj strzałek żeby sie poruszać.
-Naciśnij F1 w dowolnej chwili po pomoc albo żeby dowiedzieć się więcej o [SECOND_LIFE].
-Wybierz awatara właściwej płci.
-Ten wybór będzie można później zmienić.
-
-
-
- Nie można teleportować do [SLURL], ponieważ jest na innym gridzie ([GRID]) niż obecny grid ([CURRENT_GRID]). Proszę zamknąć przeglądarkę i spróbować ponownie.
-
-
-
- Połączenie z serwerem nie mogło zostać nawiązane.
-[REASON]
-
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-
-
- Wydawca certyfikatu dla tego serwera nie jest znany.
-
-Informacje o certyfikacie:
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Czy chcesz zaufać temu wydawcy?
-
-
-
- [NAME] [PRICE]L$ Masz za mało L$.
-
-
- Masz teraz prawa modyfikacji obiektów należących do [NAME].
-
-
- Prawa modyfikacji obiektów należących do [NAME] zostały Ci odebrane.
-
-
- To spowoduje wyczyszczenie buforów map regionu.
-Jest to użyteczne wyłącznie podczas szukania błędów.
-(Podczas produkcji poczekaj 5 minut i mapy wszystkich zostanÄ… uaktualnione po relogu.)
-
-
-
- Nie możesz zakupić więcej niż jednego obiektu w tym samym czasie. Proszę wybrać tylko jeden obiekt i spróbować ponowanie.
-
-
- Nie można kopiować zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-
-
-
- Teleportować wszystkich Rezydentów z tego regionu to ich miejsca startu?
-
-
-
- Na pewno chcesz odesłać wszystkie obiekty należące do
-[USER_NAME] ?
-
-
-
- Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] ma niewłaściwą głębię koloru - [TEXTURE_BIT_DEPTH].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
-
-
- Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] jest za duża - [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
-
-
- Åadowanie rozpoczÄ™te. Może potrwać do dwóch minut zależnie od prÄ™dkoÅ›ci Twojego połączenia.
-
-
- Na pewno chcesz zapisać obecne ukształtowanie terenu jako punkt odniesienia dla górnego i dolnego limitu terenu i jako domyślą wartość dla opcji Odtwórz?
-
-
-
- Maksymalna liczba gości wynosi [MAX_AGENTS].
-
-
- Maksymalna liczba niepożądanych Rezydentów (banów) wynosi [MAX_BANNED].
-
-
- Próba dodania [NUM_ADDED] osób nie powiodła się:
-[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS].
-
-
- Możesz mieć maksymalnie [MAX_GROUPS] dozwolonych grup.
-
-
-
- Możesz mieć maksymalnie [MAX_MANAGER] zarządców Majątku.
-
-
- Nie możesz dodać właściciela majątku do listy 'Niepożądanych Rezydentów (banów)' majątku.
-
-
- Nie możesz zmienić wyglądu podczas ładowania ubrań i kształtów.
-
-
- Tytuł Twojej reklamy musi zaczynać się od litery (A-Z) albo cyfry. Znaki przestankowe są niedozwolone.
-
-
- Nie możesz wybrać Kup obiekt ponieważ obiekt nie jest na sprzedaż.
-Wybierz obiekt na sprzedaż i spróbuj jeszcze raz.
-
-
- Plik surowego terenu załadowany pod:
-[DOWNLOAD_PATH].
-
-
- Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
-
-
-
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-
-
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-
-
- Nowa wersja [APP_NAME] jest dostępna.
-[MESSAGE]
-Musisz pobrać aktualizację aby korzystać z [APP_NAME].
-
-
-
- Aktualizacja [APP_NAME] jest dostępna.
-[MESSAGE]
-Ta aktualizacja nie jest wymagana ale zaleca się jej instalację w celu poprawienia szybkości i stabilności.
-
-
-
- Uaktualniona wersja [APP_NAME]została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-
-
- Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
-
-Pobrać i zapisać w folderze Aplikacji?
-
-
-
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
-
-
-
- Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
-
-
-
- Podczas aktualizacji pojawił się błąd. Proszę pobrać i zainstalować najnowszego klienta z http://secondlife.com/download.
-
-
-
- Nie można zainstalować wymaganej aktualizacji. Nie będzie można zalogować się dopóki [APP_NAME] nie zostanie zaktualizowana.
- Proszę pobrać i zainstalować najnowszą wersję z http://secondlife.com/download.
-
-
-
- Istnieje obowiązkowa aktualizacja dla Second Life. Możesz ją pobrać z http://www.secondlife.com/downloads lub zainstalować teraz.
-
-
-
- Aktualizacja dla [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o tej aktualizacji]
-
-
-
- Aktualizacja [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o aktualizacji]
-
-
-
- Pobrano wymaganÄ… aktualizacjÄ™.
-Wersja [VERSION]
-
-W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
-
-
-
- W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
-
-
-
- Przekazanie tego obiektu spowoduje, że grupa:
-* Otrzyma L$ zapłacone temu obiektowi
-
-
-
- Czy chcesz otworzyć swoją przeglądarkę internetową by zobaczyć zawartość?
-
-
-
- By dokonać zmian i aktualizacji swojego konta, odwiedź [http://secondlife.com/account/ Dashboard].
-
-
-
- Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgłaszać problemy z bezpieczeństwem danych.
-
-
-
- Odwiedź [SECOND_LIFE] Wiki pytań i odpowiedzi.
-
-
-
- Odwiedź [SECOND_LIFE] katalog publicznych problemów, gdzie możesz zgłaszać błędy i inne problemy.
-
-
-
- Otwórz oficjalny blog Lindenów żeby zobaczyć nowe wiadomości i informacje.
-
-
-
- Czy chcesz otworzyć samouczek Języka skryptowania?
-
-
-
- Czy napewno chcesz odwiedzić portal LSL Portal?
-
-
-
- Czy na pewno chcesz zwrócić wybrane obiekty do ich właścicieli? Wszystkie udostępnione obiekty z prawem transferu zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wszystkie udostępnione obiekty bez prawa transferu zostaną usunięte!
-
-
-
- Jesteś członkiem grupy [GROUP].
-Chcesz opuścić grupę?
-
-
-
- Napewno chcesz wyrzucić wszystkich Rezydentów z gridu?
-
-
-
- Przepraszamy, ale nie możesz zablokować Lindena.
-
-
-
- Aukcja nie może zostać rozpoczęta w posiadłości, która została już wcześniej wystawiona na aukcję. Deaktywuj opcję sprzedaży posiadłości jeżeli chcesz rozpocząć aukcję.
-
-
- Rezydent/obiekt jest już zablokowany.
-
-
-
- Pomimo, że jest to dozwolone, usunięcie zawartości może zniszczyć obiekt. Chcesz usunąć?
-
-
-
- Nie możesz dać wizytówki w tym momencie. Spróbuj jeszcze raz za chwilę.
-
-
-
- Nie możesz zaoferować znajomości w tym momencie. Spróbuj jeszcze raz za chwilę.
-
-
-
- Tryb Pracy jest włączony.
-Czat i IM będą ukryte. Wysłane IM będą otrzymywały Twoją odpowiedź Trybu Pracy. Propozycje teleportacji będą odrzucone.
-Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywane w folderze "Kosz" w Twojej szafie.
-
-
-
- Należysz już do maksymalnej ilości grup. Opuść proszę przynajmniej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
-[NAME] oferuje Ci członkostwo w grupie.
-
-
-
- Należysz już do maksymalnej ilości grup. Opuść proszę przynajmiej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
-
-
-
- Wyrzuć tego Rezydenta, wysyłając następujący komunikat.
-
-
-
- Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu?
-
-
-
- Unieruchom tego Rezydenta, wysyłając następujący komunikat.
-
-
-
- Cofnij unieruchomienie tego Rezydenta, wysyłając następujący komunikat.
-
-
-
- Witaj [DISPLAY_NAME]!
-
-Podobnie jak w realnym życiu potrzeba trochę czasu zanim wszyscy dowiedzą się o nowej nazwie. Kolejne kilka dni zajmie [http://wiki.secondlife.com/wiki/Setting_your_display_name aktualizacja nazwy] w obiektach, skryptach, wyszukiwarce, etc.
-
-
- Przepraszamy, nie można zmienić Twojej wyświetlanej nazwy. Jeśli uważasz ze jest to spowodowane błędem skontaktuj się z obsługą klienta.
-
-
- Przepraszamy, ta nazwa jest zbyt długa. Wyświetlana nazwa może mieć maksymalnie [LENGTH] znaków.
-
-Proszę wprowadzić krótszą nazwę.
-
-
- Przepraszamy, nie można ustawić Twojej wyświetlanej nazwy. Spróbuj ponownie później.
-
-
- Podana wyświetlana nazwa nie pasuje. Proszę wprowadzić ją ponownie.
-
-
- Przepraszamy, musisz jeszcze poczekać zanim będzie można zmienić Twoją wyświetlaną nazwę.
-
-Zobacz http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Proszę spróbować ponownie później.
-
-
- Przepraszamy, nie można ustawić wskazanej nazwy, ponieważ zawiera zabronione słowa.
-
- Proszę spróbować wprowadzić inną nazwę.
-
-
- Wyświetlana nazwa, którą chcesz ustawić zawiera niepoprawne znaki.
-
-
- Twoje wyświetlane imię musi zawierać litery inne niż znaki interpunkcyjne.
-
-
- [OLD_NAME] ([SLID]) jest od tej pory znana/znany jako [NEW_NAME].
-
-
- Zaproponować teleportację do miejsca Twojego pobytu z tą wiadomością?
-
-
-
- Wysłać propozycję teleportacji do Twojego miejsca?
-
-
-
- Na pewno chcesz się teleportować do <nolink>[LOCATION]</nolink>?
-
-
-
- Teleportuj do [PICK]?
-
-
-
- Teleportuj do [CLASSIFIED]?
-
-
-
- Teleportuj do [HISTORY_ENTRY]?
-
-
-
- Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w Twoim majątku.
-
-
-
- Czy napewno chcesz zmienić ustawienia majątku Linden (mainland, teen grid, orientacja, itp).
-
-Jest to wyjątkowo niebezpieczna decyzja, odczuwalna przez wszystkich Rezydentów. Dla mainland, spowoduje to zmianę tysięcy regionów oraz ich przestrzeń serwerową.
-
-Kontynuować?
-
-
-
- Dokonujesz zmiany w liście dostępu Regionu głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja).
-
-Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci.
-Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
-
-Kontynuować?
-
-
-
- Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]?
-
-
-
- Usunąć z listy dostępu do tego majątku czy do [ALL_ESTATES]?
-
-
-
- Dodać do listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
-
-
-
- Usunąć z listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
-
-
-
- Zablokować dostęp do tego majątku czy do [ALL_ESTATES]?
-
-
-
- Zdjąć tego Rezydenta z listy niepożądanych (bany) dla tego majątku czy dla [ALL_ESTATES]?
-
-
-
- Dodać zarządce majątku do tego majątku czy do [ALL_ESTATES]?
-
-
-
- Usunąć zarządce majątku z tego majątku czy z [ALL_ESTATES]?
-
-
-
- Wyrzucić [EVIL_USER] z tego majątku?
-
-
-
- Na pewno chcesz zminić treść umowy dla tego majątku?
-
-
-
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
-
-
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
-
-
-
-
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
-
-
- Nie masz zezwolenia na przebywanie w tym Regionie z powodu Twojego statusu ustawień wieku.
-
-W celu uzyskania dostępu do tego regiony zmień proszę swój status ustawień wieku. Będziesz mógł/mogła szukać i mieć dostęp do treści [REGIONMATURITY]. W celu cofnięcia zmian wybierz z menu Ja > Ustawienia > Ogólne.
-
-
-
- Twoja obecna klasyfikacja wieku to [RATING].
-
-
- W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
-
-
- Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
-
-
-
-
- Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
-
-
- W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości.
-
-Możesz wybrać 'Zmień Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja > Ustawienia > Główne.
-
-
-
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
-
-
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
- https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
-
-
-
-
- Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
-
-
- W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości.
-
-Możesz wybrać 'Zmień Ustawienia' by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja > Ustawienia > Główne.
-
-
-
- Zbyt wiele wybranych obiektów. Wybierz [MAX_PRIM_COUNT] lub mniej i spróbuj ponownie
-
-
- Problem z importem umowy majÄ…tku.
-
-
-
- Problemy z dodawaniem nowego zarządcy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę zarządców.
-
-
- Problemy z dodawaniem do listy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę.
-
-
- Brak możliwości załadowania noty w tej chwili.
-
-
-
- NiewystarczajÄ…ce prawa do zobaczenia notki przypisanej do wybranego ID.
-
-
-
- ID notki nie znalezione w bazie danych.
-
-
-
- Pamiętaj: Opłaty za reklamę są bezzwrotne.
-
-Zamieścić tą reklamę za [AMOUNT]L$?
-
-
-
- Czy ta reklama zawiera treść 'Mature'?
-
-
-
- Czy ta grupa zawiera treść 'Mature'?
-
-
-
- Na pewno chcesz zrobić restart tego regionu za 2 minuty?
-
-
-
- Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w tym regionie.
-
-
-
- Ustawienie restrykcji wieku dla regionu zostało zmienione.
-Zazwyczaj musi upłynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona na mapie.
-
-Aby wejść do regionu Adult, Rezydenci muszą posiadać zweryfikowane konto, albo w wyniku weryfikacji wieku albo płatości.
-
-
- Ta wersja [APP_NAME] nie jest kompatybilna z systemem rozmów w tym Regionie. Musisz zainstalować aktualną wersję [APP_NAME] aby komunikacja głosowa działała poprawnie.
-
-
- Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-
-
- Jednorazowo możesz kupić zawartość tylko jednego obiektu.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-
-
- Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-
-
- Kupić oryginalny obiekt od [OWNER] za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-
-
-
- Kupić oryginalny obiekt za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-
-
-
- Kupić kopię obiektu od [OWNER] za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-
-
-
- Kupić kopię obiektu za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-
-
-
- Kupić zawartość od [OWNER] za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
-
-
-
- Kupić zawartość za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
-
-
-
- Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
-
-
-
- Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
-Wpisz hasło ponownie i kliknij OK.
-
-
-
- Uwaga:
-Lokalizacja tego wyboru została zaktualizowana ale pozostałe szczegóły zachowają oryginalne wartości.
-
-
-
- Wybrane obiekty Szafy nie majÄ… praw kopiowania.
-Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane.
-
-Przenieść obiekty Szafy?
-
-
-
- Wybrane obiekty Szafy nie majÄ… praw kopiowania.
-Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane.
-Ponieważ obiekty zawierają skrypty, przeniesienie obiektów do Twojej Szafy może spowodować niepoprawne działanie skryptów.
-
-Przenieść obiekty szafy?
-
-
-
- Uwaga: Opcja Zapłać obiektowi została wybrana, ale żeby ta opcja działała musi być dodany skrypt z funkcją money().
-
-
-
- W tym obiekcie nie ma elementów które możesz skopiować.
-
-
- Przejść na stronę [http://secondlife.com/account/ Dashboard] żeby zobaczyć historię konta?
-
-
-
- Na pewno chcesz skończyć?
-
-
-
- [QUESTION]
-
-
-
- Używaj tej opcji do zgłaszania nadużyć [http://secondlife.com/corporate/tos.php Warunków Umowy (Terms of Service)] i [http://secondlife.com/corporate/cs.php Standardów Społeczeństwa (Community Standards)].
-
-Wszystkie zgłoszone nadużycia są badane i rozwiązywane.
-
-
- Wybierz kategorię dla tego raportu o nadużyciu.
-Określenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu.
-
-
- Wprowadź imię i nazwisko osoby popełniającej nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-
-
- Wprowadź nazwę miejsca gdzie popełniono nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-
-
- Wprowadź opis popełnionego nadużycia.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-
-
- Wprowadź szczgółowy opis popełnionego nadużycia.
-Podaj maksymalną ilość szczgółów oraz imiona i nazwiska osób związanych z nadużyciem które zgłaszasz.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-
-
- Szanowny Rezydencie,
-
-Jeżeli składasz raport dotyczący naruszenia praw autorskich proszę się upewnić, że robisz to poprawnie:
-
-(1) Przypadek Nadużycia. Możesz złożyć raport jeżeli sądzisz, że Rezydent narusza system przywilejów [SECOND_LIFE], na przykład używając CopyBot lub podobnych narzędzi robiących kopie, naruszając prawa autorskie. Komisja Nadużyć bada wykroczenia i stosuje akcje dyscyplinarne za zachowania sprzeczne z zasadami Warunków Umowy [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Terms of Service] i Standardów Społeczeństwa [http://secondlife.com/corporate/cs.php Community Standards]. Komisja Nadużyć nie zajmuje się i nie odpowiada na żądania usunięcia treści ze środowiska [SECOND_LIFE].
-
-(2) Przypadek DMCA lub Usuwanie Treści. Aby wystąpić z żądaniem o usunięcie treści ze środowiska [SECOND_LIFE] MUSISZ przedłożyć ważne zawiadomienie o nadużyciu zgodne z naszą polityką DMCA [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Jeżeli chcesz kontynuować dalej zamknij to okno i dokończ wysyłanie raportu. Może być potrzebny wybór kategorii 'CopyBot albo Nadużycie Przywilejów'.
-
-Dziękujemy,
-
-Linden Lab
-
-
- Brak następujących wymaganych komponentów w [FLOATER]:
-[COMPONENTS]
-
-
- Obecnie masz już dołączony obiekt do tej części Twojego ciała.
-Chcesz go zamienić na wybrany obiekt?
-
-
-
- Jesteś w Trybie pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę.
-
-Chcesz wyłączyć Tryb pracy przed zakończeniem tej tranzakcji?
-
-
-
- Ten folder '[FOLDERNAME]' to folder systemowy. Usunięcie foldera systemowego spowoduje niestabilność. Czy na pewno chcesz go skasować?
-
-
-
- Na pewno chcesz permanentnie usunąć zawartość Kosza?
-
-
-
- Na pewno chcesz wyczyścić bufor przeglądarki?
-
-
-
- Na pewno chcesz wyczyścić ciasteczka?
-
-
-
- Na pewno chcesz wyczyścić listę zapisanych linków?
-
-
-
- Na pewno chcesz permanentnie usunąć zawartość Twojego foldera Zgubione i odnalezione?
-
-
-
- Następujący link SLURL został skopiowany do schowka:
- [SLURL]
-
-Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do tego miejsca, albo wklej go do panela adresu Twojej przeglądarki żeby go otworzyć.
-
-
-
- Chcesz zmienić zapisane ustawienia?
-
-
-
- Chcesz usunąć [SKY]?
-
-
-
- Nie możesz edytować lub usunąć domyślnych ustawień.
-
-
- Ten plik cyklu dziennego używa brakującego pliku nieba: [SKY].
-
-
- Efekt post-procesu już istnieje. Chcesz zapisać nowy na jego miejsce?
-
-
-
- Nazwij nowe niebo.
-
-
-
- Ustawienie już istnieje!
-
-
- Nazwij nowe ustawienie wody.
-
-
-
- Ustawienie już istnieje!
-
-
- Domyślne ustawienie nie może być zmienione ani usunięte.
-
-
- Błąd podczas rozpoczynania czatu/IM z [RECIPIENT].
-[REASON]
-
-
-
- [EVENT]
-[REASON]
-
-
-
- Twój czat/IM z [NAME] zostanie zamknięty.
-[REASON]
-
-
-
- Rzeczy nie mogą być kupione jeżeli są częścią załącznika.
-
-
- Akceptując tą prośbę wyrażasz zgodę na ciągłe pobieranie Lindenów (L$) z Twojego konta. Żeby cofnąć to pozwolenie właściciel obiektu będzie musiał usunąć ten obiekt albo zresetowć skrypty obieku.
-
-
-
- Czy chcesz automatycznie nosić ubranie które tworzysz?
-
-
-
- Nie masz dostępu do tej posiadłości ze względu na brak weryfikacji Twojego wieku. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
-
- https://secondlife.com/account/verification.php
-
-
-
-
- Nie masz dostępu do tej posiadłości ze względu na brak danych o Twoim koncie. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
-
- https://secondlife.com/account/
-
-
-
-
- Zdanie [STRING_NAME] nie znalezione w strings.xml
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- Anulowane
-
-
- Siadanie anulowane
-
-
- Dołączenie anulowane
-
-
- Barkujące ubranie/części ciała zastąpiono domyślnymi obiektami.
-
-
- Temat: [SUBJECT], Treść: [MESSAGE]
-
-
- [NAME] jest w Second Life
-
-
- [NAME] opuszcza Second Life
-
-
- Nie możesz dodać siebie do listy znajomych.
-
-
- Åadowanie obrazu z Internetu...
-(Zajmuje około 5 minut.)
-
-
- Åadowanie kosztowaÅ‚o [AMOUNT]L$.
-
-
- Åadowanie obrazu z Internetu zakoÅ„czne pomyÅ›lnie.
-
-
- Åadowanie zdjÄ™cia zakoÅ„czone pomyÅ›lnie.
-
-
- Plik terrain.raw ściągniety.
-
-
- Gesturka [NAME] nie znaleziony w bazie danych.
-
-
- Åadowanie gesturki [NAME] nie powiodÅ‚o siÄ™.
-
-
- Miejsce (LM) nie znalezione w bazie danych.
-
-
- Åadowanie miejsca (LM) nie powiodÅ‚o siÄ™.
-Spróbuj jeszcze raz.
-
-
- Twój Caps Lock jest włączony.
-Ponieważ to ma wpływ na wpisywane hasło, możesz chcieć go wyłączyć.
-
-
- Notka nie została znaleziona w bazie danych.
-
-
- Nie masz pozwolenia na zobaczenie notki.
-
-
- Nie masz pozwolenia na stworzenie obiektu.
-
-
- Nie można załadować danych notki w tym momencie.
-
-
- Skrypt nie znaleziony w bazie danych.
-
-
- Nie masz pozwolenia na zobaczenie skryptu.
-
-
- Åadowanie skryptu nie powiodÅ‚o siÄ™.
-Spróbuj jeszcze raz.
-
-
- Zawartość obiektów którą chcesz podarować nie jest dostępna lokalnie. Spróbuj podarować te obiekty jeszcze raz za jakiś czas.
-
-
- Nie możesz zmienić chronionych kategorii.
-
-
- Nie możesz usunąć chronionych kategorii.
-
-
- Nie można kupować w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
-
-
- Nie można łączyć w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
-
-
- Nie możesz jednocześnie kupować obiektów od różnych osób.
-Wybierz jeden obiekt.
-
-
- Obiekt nie jest na sprzedaż.
-
-
- Włącznie trybu boskiego, poziom [LEVEL]
-
-
- Wyłączanie trybu boskiego, poziom [LEVEL]
-
-
- Nie masz praw do skopiowania wybranych obiektów.
-
-
- Podarunek od Ciebie został przyjęty przez [NAME].
-
-
- Podarunek od Ciebie został odrzucony przez [NAME].
-
-
- [NAME]: [MESSAGE]
-
-
- Twoja wizytówka została przyjęta.
-
-
- Twoja wizytówka została odrzucona.
-
-
- Jesteś w Głównym Regionie i możesz się stąd teleportować do innych miejsc jak '[NAME]' wybierając Moja Szafa w prawym dolnym rogu ekranu
-i wybierajÄ…c folder Zapisane Miejsca (LM).
-(Kliknij dwa razy na miejsce (LM) i wybierz 'Teleport' żeby tam się przenieść.)
-
-
- Możesz skontaktować się z Rezydentem '[NAME]' poprzez otworzenie panelu Ludzie po prawej stronie ekranu.
-Wybierz Rezydenta z listy, następnie kliknij 'IM' na dole panelu.
-(Możesz także kliknąć podwójnie na ich imię na liście, lub prawym przyciskiem i wybrać 'IM').
-
-
- Nie możesz przekraczać granic serwera wybierając obszar.
-Spróbuj wybrać mniejszy obszar.
-
-
- Pewne frazy podczas wyszukiwania zostały usunięte w związku z restrykcjami zawartymi w Standardach Społecznościowych (Community Standards).
-
-
- Proszę wybrać przynajmiej jeden z podanych rodzajów treści jaką zawiera region podczas wyszukiwania ('General', 'Moderate', lub 'Adult').
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- [MESSAGE]
-
-
- Zawiadomienie o imprezie:
-
-[NAME]
-[DATE]
-
-
-
- Obiekty na tej posiadłości które zostaną przekazane kupcowi tej posiadłości są teraz rozjaśnione.
-
-* Drzewa i trawy które zostaną przekazne nie są rozjaśnione.
-
-
-
- Zablokowane gesturki z jednakowym aktywowaniem:
-[NAMES]
-
-
- Wygląda na to, że QuickTime z Apple nie jest zainstalowany na Twoim komputerze.
-Jeżeli chcesz odtwarzać media na tej posiadłości które używają QuickTime idź do [http://www.apple.com/quicktime strona QuickTime] i zainstaluj odtwarzacz.
-
-
- Nie znaleziono wtyczki mediów dla "[MIME_TYPE]" typu mime. Media tego typu będą niedostępne.
-
-
- Następujące wtyczki mediów nie działają:
- [PLUGIN]
-
-Zainstaluj proszę wtyczki ponownie lub skontaktuj się z dostawcą jeśli nadal problem będzie występował.
-
-
-
- Twoje obiekty z wybranej posiadłości zostały zwrócone do Twojej Szafy.
-
-
- Obiekty należące do [NAME] na wybranej posiadłości zostały zwrócone do Szafy tej osoby.
-
-
- Obiekty z posiadłości należącej do Rezydenta'[NAME]' zostały zwrócone do właściciela.
-
-
- Obiekty z wybranej posiadłości przypisane do grupy [GROUPNAME] zostały zwrócone do szafy ich właścicieli.
-Przekazywalne obiekty przekazne grupie zostały zwrócone do ich poprzednich właścicieli.
-Nieprzekazywalne obiekty przekazane grupie zostały usunięte.
-
-
- Obiekty z wybranej posiadłości które nie należą do Ciebie zostały zwrócone do ich właścicieli.
-
-
- Wiadomość od [NAME]:
-<nolink>[MSG]</nolink>
-
-
- Ta posiadłość pozwala na uszkodzenia.
-Możesz doznać tutaj urazu. Jeżeli zginiesz nastąpi teleportacja do Twojego miejsca startu.
-
-
- Ta posiadłość nie pozwala na latanie.
-Nie możesz tutaj latać.
-
-
- Popychanie niedozwolone. Nie możesz tutaj popychać innych, chyba, że jesteś właścicielem tej posiadłości.
-
-
- Ta posiadłość nie pozwala na rozmowy.
-
-
- Ta posiadłość nie pozwala na budowanie. Nie możesz tworzyć tutaj obiektów.
-
-
- Administrator czasowo zatrzymał skrypty w tym regionie.
-
-
- Żadne skrypty nie działają w tym regionie.
-
-
- Ta posiadłość nie pozwala na zewnętrzne skrypty.
-
-Żadne skrypty nie będą tutaj działać za wyjątkiem skryptów należących do właściciela posiadłości.
-
-
- Tylko publiczne posiadłości w tym regionie mogą być przejęte.
-
-
- Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-
-
- Zostałeś zbanowany w regionie.
-
-
- Twoje konto nie może zostać połączone z podanym regionem Teen Grid.
-
-
- Nie posiadasz odpowiedniego statusu płatniczego by uzyskać dostęp do regionu.
-
-
- By móc przebywać na tej posiadłości wymagana jest weryfikacja Twojego wieku.
-
-
- Żądana lokalizacja regionu nie została odnaleziona.
-
-
- Brak dostępu do podanej lokalizacji.
-
-
- Nie możesz przejść przez zamkniętą posiadłość. Spróbuj skorzystać z innej drogi.
-
-
- Zostałeś przeniesiony do teleportera.
-
-
- Brak możliwości teleportacji do bliższej lokacji.
-
-
- Teleportacja anulowana.
-
-
- Region, który chcesz odwiedzić jest w tej chwili pełny.
-Spróbuj ponowanie za kilka minut.
-
-
- Nieudana próba.
-
-
- Wysłano niewłaściwe połączenie do regionu. Proszę spróbować ponownie.
-
-
- Nieważny identyfikator agenta.
-
-
- Nieważny identyfikator sesji.
-
-
- Nieważny obwód kodowania.
-
-
- Niewłaściwy czas zapisu.
-
-
- Brak możliwości wykonania połączenia.
-
-
- Podczas teleportacji nastąpił błąd wewnętrzny, który może być wynikiem problemów serwera.
-
-
- Brak lokalizacji punktu do teleportacji w podanym regionie.
-
-
- Podczas próby odnalezienia globalnych współrzędych dla żądanej teleportacji pojawił się wewnętrzny błąd. Może być to wynikiem problemów serwera.
-
-
- Nieważny punkt lądowania.
-
-
- Nieważana posiadłość.
-
-
- Obiekt o nazwie <nolink>[OBJECTFROMNAME]</nolink>, którego właścicielem jest [NAME_SLURL] oferuje Tobie <nolink>[ITEM_SLURL]</nolink>. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
-
-
-
- [NAME_SLURL] proponuje Tobie [ITEM_SLURL]. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
-
-
-
- [NAME]
-
-[MESSAGE]
-
-
- [MESSAGE]
-
-
-
- [NAME_SLURL] proponuje Ci teleportacjÄ™ do siebie:
-
-[MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon>
-
-
-
- Oferta teleportacji wysłana do [TO_NAME]
-
-
- [MESSAGE]
-[URL]
-
-
-
- [NAME_SLURL] proponuje znajomość.
-
-[MESSAGE]
-
-(Będziecie mogli widzieć swój status online)
-
-
-
- Oferta znajomości dla [TO_NAME]
-
-
- [NAME_SLURL] proponuje Ci znajomość.
-
-(Z zalożenia będzie widzić swój status online.)
-
-
-
- Twoja propozycja znajomości została przyjęta przez [NAME].
-
-
- Twoja propozycja znajomości została odrzucona przez [NAME].
-
-
- Propozycja znajomości została zaakceptowana.
-
-
- Propozycja znajomości została odrzucona.
-
-
- [NAME] oferuje swoją wizytówkę.
-Wizytówka w Twojej Szafie umożliwi szybki kontakt IM z tym Rezydentem.
-
-
-
- Restart regionu za [MINUTES] min.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
-
-
- Restart regionu za [SECONDS] sec.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
-
-
- Załadować stronę [URL]?
-
-[MESSAGE]
-
-Od obiektu: <nolink>[OBJECTNAME]</nolink>, właściciel właściciel: [NAME]?
-
-
-
- [TYPE] - nie znaleziono w bazie danych.
-
-
- [TYPE] [DESC] - nie znaleziono w bazie danych.
-
-
- Obiekt, który chcesz założyć używa narzędzia nieobecnego w wersji klienta, którą używasz. By go założyć ściągnij najnowszą wersję [APP_NAME].
-
-
- Obiekt '<nolink>[OBJECTNAME]</nolink>', którego właścicielem jest '[NAME]', chciałby:
-
-[QUESTIONS]
-Czy siÄ™ zgadzasz?
-
-
-
- Obiekt '<nolink>[OBJECTNAME]</nolink>', którego właścicielem jest '[NAME]' chciałby:
-
-[QUESTIONS]
-Jeśli nie ufasz temu obiektowi i jego kreatorowi, odmów.
-
-Czy siÄ™ zgadzasz?
-
-
-
- [NAME]'s '<nolink>[TITLE]</nolink>'
-[MESSAGE]
-
-
-
- [GROUPNAME]'s '<nolink>[TITLE]</nolink>'
-[MESSAGE]
-
-
-
- Dziękujemy za wpłatę!
-
-Twój stan konta L$ zostanie zaktualizowany w momencie zakończenia transakcji. Jeżeli w ciągu 20 minut, Twój balans konta nie ulegnie zmianie, transakcja została anulowana. W tym przypadku, pobrana kwota zostanie zwrócona na stan konta w US$.
-
-Status transkacji możesz sprawdzić odwiedzając Historię Transakcji swojego konta na [http://secondlife.com/account/ Dashboard]
-
-
- Twoje sterujące klawisze zostały przejęte przez obiekt.
-Użyj strzałek lub AWSD żeby sprawdzić ich działanie.
-Niektóre obiekty (np broń) wymagają trybu panoramicznego.
-Nacisnij 'M' żeby go wybrać.
-
-
- Ten region to piaskownica.
-
-Obiekty które tu zbudujesz mogą zostać usunięte jak opuścisz ten obszar - piaskownice są regularnie czyszczone, sprawdź informacje na górze ekranu obok nazwy regionu.
-
-
- Maksymalnie możesz wybrać [MAX_SELECT] rzeczy
-z tej listy.
-
-
- [NAME] zaprasza Cię do rozmowy głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia.
-Wybierz Zablokuj żeby wyciszyć dzwoniącą osób
-
-
-
- Wysłano [NAME] prywatną wiadomość i ta osoba została automatycznie odblokowana.
-
-
- Przekazano [NAME] pieniądze i ta osoba została automatycznie odblokowana.
-
-
- Zaoferowno [NAME] obiekty i ta osoba została automatycznie odblokowana.
-
-
- [NAME] zaczyna rozmowÄ™ z grupÄ… [GROUP].
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
-
-
-
- [NAME] zaczyna konferencję głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
-
-
-
- [NAME] zaprasza CiÄ™ do konferencji poprzez Czat/IM.
-Wybierz Zaakceptuj żeby zacząć czat albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć tą osobę.
-
-
-
- Rozmowa w której chcesz uczestniczyć, [VOICE_CHANNEL_NAME], nie akceptuje więcej rozmówców. Spróbuj póżniej.
-
-
- Przepraszamy. Limit rozmów został przekroczony w tym obszarze. Spróbuj w innym miejscu.
-
-
- [VOICE_CHANNEL_NAME] odłączył się. Przełączanie do rozmowy przestrzennej.
-
-
- [VOICE_CHANNEL_NAME] skończył rozmowę. Przełączanie do rozmowy przestrzennej.
-
-
- [VOICE_CHANNEL_NAME] odmówił połączenia. Przełączanie do rozmowy przestrzennej.
-
-
- [VOICE_CHANNEL_NAME] nie odpowiada. Przełączanie do rozmowy przestrzennej.
-
-
- Brak połączenia z [VOICE_CHANNEL_NAME], spróbuj póżniej. Przełączanie do rozmowy przestrzennej.
-
-
- Tworzymy kanał głosu dla Ciebie. Moze potrwać minutę.
-
-
- Subskrypcja jednego lub więcej z Voice Morph wygasła.
-[[URL] Kliknij tutaj] oby odnowić subskrypcję.
-
-
- Czas aktywności Voice Morph wygasł, normalne ustawienia Twojego głosu zostały zastosowane.
-[[URL] Kliknij tutaj] aby odnowić subskrypcję.
-
-
- Jedno lub więcej z Twoich Voice Morph wygaśnie za mniej niż [INTERVAL] dni.
-[[URL] Klinij tutaj] aby odnowić subskrypcję.
-
-
- Nowe Voice Morph są dostępne!
-
-
- Nie masz dostępu do posiadłości, nie należysz do właściwej grupy.
-
-
- Masz wzbroniony wstęp na tą posiadłości (ban).
-
-
- Nie masz dostępu do posiadłości, nie jesteś na liście dostępu.
-
-
- Nie masz pozwolenia na połączenie z rozmową [VOICE_CHANNEL_NAME].
-
-
- Błąd podczas łączenia z rozmową [VOICE_CHANNEL_NAME]. Spróbuj póżniej.
-
-
- Nie można otworzyć wybranego SLurl.
-
-
- SLurl został otrzymany z niesprawdzonej przeglądarki i został zablokowany dla bezpieczeństwa.
-
-
- Wiele SLurlów zostało otrzymanych w krótkim czasie od niesprawdzonej przeglądarki.
-Zostaną zablokowane na kilka sekund dla bezpieczeństwa.
-
-
- [MESSAGE]
-
-
-
- Czy chcesz zamknąć wszystkie wiadomości IM?
-
-
-
- Załącznik został zapisany.
-
-
- Nie można znależć tematu pomocy dla tego elementu.
-
-
- Błąd serwera: aktualizacja mediów nie powiodła się.
-'[ERROR]'
-
-
-
- Twój czat został wyciszony przez moderatora.
-
-
-
- Twoja rozmowa głosowa została wyciszona przez moderatora.
-
-
-
- Czy na pewno chcesz usunąć historię teleportacji?
-
-
-
- Wybrany przycisk nie może zostać wyświetlony w tej chwili.
-Przycisk zostanie wyświetlony w przypadku dostatecznej ilości przestrzeni.
-
-
- Zaznacz Rezydentów, z którymi chcesz się podzielić.
-
-
- Czy na pewno chcesz udostępnić następujące obiekty:
-
-<nolink>[ITEMS]</nolink>
-
-następującym Rezydentom:
-
-[RESIDENTS]
-
-
-
- Obiekty zostały udostępnione.
-
-
- Przekazanie grupie nie powiodło się.
-
-
- ( [EXISTENCE] sekund w Second Life)
-Awatar '[NAME]' rozchmurzył się po [TIME] sekundach.
-
-
- ( [EXISTENCE] sekund w Second Life)
-You finished baking your outfit after [TIME] seconds.
-
-
- ( [EXISTENCE] sekund w Second Life )
-Wysłano aktualizację wyglądu po [TIME] sekundach.
-[STATUS]
-
-
- ( [EXISTENCE] sekund w Second Life )
-Awatar '[NAME]' stał się chmurą.
-
-
- ( [EXISTENCE] sekund w Second Life)
-Awatar '[NAME]' pojawił się.
-
-
- ( [EXISTENCE] sekund w Second Life )
-Awatar '[NAME]' pozostał [TIME] sekund chmurą.
-
-
- ( [EXISTENCE] sekund w Second Life )
-Awatar '[NAME]' rozpoczÄ…Å‚ edycjÄ™ wyglÄ…du.
-
-
- ( [EXISTENCE] sekund w Second Life )
-Awatar '[NAME]' opuścił edycję wyglądu.
-
-
- Występuje problem z połączeniem [PROTOCOL] [HOSTID].
-Proszę sprawdź swoją sieć i ustawienia firewall.
-
-
-
- Występuje problem z Twoim połączniem głosowym:
-
-[HOSTID]
-
-Komunikacja głosowa nie będzie dostępna.
-Proszę sprawdź swoją sieć i ustawienia firewall.
-
-
-
- ( [EXISTENCE] sekund w Second Life)
-Awatar '[NAME]' pozostał w pełni załadowany.
-
-
- ( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury [RESOLUTION] dla '[BODYREGION]' zostały załadowane po[TIME] sekundach.
-
-
- ( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury zostały lokalnie zaktualizowane [RESOLUTION] dla '[BODYREGION]' po [TIME] sekundach.
-
-
- Czy jestes pewien/pewna, że chcesz zakończyć rozmowę?
-
-
-
- Wybrano wyciszenie wszystkich uczestników rozmowy głosowej w grupie.
-To spowoduje również wyciszenie wszystkich Rezydentów, którzy dołączą póżniej do rozmowy, nawet jeśli zakończysz rozmowę.
-
-Wyciszyć wszystkich?
-
-
-
- W celu przylączenia się do rozmowy zacznij pisać w poniższym polu czatu.
-
-
- Aby wstać i opuścić pozycję siedzącą, kliknij przycisk Wstań.
-
-
- Destination Guide zawiera tysiące nowych miejsc do odkrycia. Wybierz lokalizację i teleportuj się aby rozpocząć zwiedzanie.
-
-
- Schowek umożliwia szybki dostęp do Twojej Szafy, ubrań, profili i innych w panelu bocznym.
-
-
- Aby chodzić lub biegać, otwórz panel ruchu i użyj strzałek do nawigacji. Możesz także używać strzałek z klawiatury.
-
-
- Ustaw wyświetlaną nazwę, którą możesz zmieniać tutaj. Jest ona dodatkiem do unikatowej nazwy użytkownika, która nie może być zmieniona. Możesz zmienić sposób w jaki widzisz nazwy innych osób w Twoich Ustawieniach.
-
-
- Użyj przycisków ze strzałkami z klawiatury aby chodzić. Jeśli wciśniesz strzałkę 'do góry' podwójnie, zaczniesz biec.
-
-
- To change your camera view, use the Orbit and Pan controls. Zresetuj widok poprzez wciśnięcie klawisza Esc lub chodzenie.
-
-
- Sprawdź swoją Szafę aby znaleźć obiekty. Najnowsze obiekty mogą być łatwo odnalezione w zakładce Nowe obiekty.
-
-
- Tutaj znajduje się Twoj bieżący bilans L$. Kliknij Kup aby kupić więcej L$.
-
-
- Wyskakujące okienko zostało zablokowane.
-
-
-
- Strpna '<nolink>[HOST_NAME]</nolink>' w domenie '[REALM]' wymaga nazwy użytkownika i hasła.
-
-
-
- Zmiana trybu wymaga restartu.
-
-
-
- Tworzenie i edycja reklam jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-
-
-
- Tworzenie i edycja grup jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-
-
-
- Tworzenie i edycja Ulubionych jest możliwa jedynie w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-
-
-
- Oglądanie mapy świata jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-
-
-
- Rozmowy głosowe są możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb?
-
-
-
- Udostępnienie jest możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-
-
-
- Płacenie innym Rezydentom jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-
-
-
- - Prędkość Twojego CPU nie spełnia minimalnych wymagań.
-
-
- Wygląda na to, że Twój system nie spełnia wymagań sprzętowych [APP_NAME]. [APP_NAME] wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz taką kartę zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego.
-
-Jeżeli wciąż masz problemy sprawdź: [SUPPORT_SITE].
-
-
- 796
-
-
- 510
-
-
- - Twoja karta graficzna nie spełnia minimalnych wymagań.
-
-
- - Pamięć Twojego systemu nie spełnia minimalnych wymagań.
-
-
- Jeśli jesteś właścicielem posiadłości, możesz ustawić na niej miejsce startu.
-W innym przypadku możesz poszukać na mapie miejsca oznaczone jako "Infohub".
-
-
- Nastąpiła śmierć i teleportacja do Miejsca Startu.
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
deleted file mode 100644
index ba0c85e4ef..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
deleted file mode 100644
index f49d820938..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
deleted file mode 100644
index 074f572a4c..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
deleted file mode 100644
index 4aadd3b93b..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_login.xml b/indra/newview/skins/minimal/xui/pl/panel_login.xml
deleted file mode 100644
index dc8e7399af..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_login.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
- http://secondlife.com/account/request.php
-
-
-
-
- Użytkownik:
-
-
-
- Hasło:
-
-
-
-
- Tryb życia:
-
-
-
-
-
-
- Rozpocznij w:
-
-
-
-
-
-
-
-
-
- Utwórz nowe konto
-
-
- Zapomniałeś swojej nazwy użytkownika lub hasła?
-
-
- Potrzebujesz pomocy z logowaniem siÄ™?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
deleted file mode 100644
index b01e686c41..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_people.xml b/indra/newview/skins/minimal/xui/pl/panel_people.xml
deleted file mode 100644
index 3b3aaa0987..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Kliknij prawym przyciskiem na Rezydenta aby dodać go do listy znajomych.
-Chcesz spotkać ludzi? Skorzystaj z przycisku "Atrakcje turystyczne" poniżej.
-
-
- Nie znaleziono tego czego szukasz? Skorzystaj z przycisku "Atrakcje turystyczne" poniżej.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 95cd7c53dc..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
deleted file mode 100644
index 6aa0d27bb8..0000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Niedziela:Poniedziałek:Wtorek:Środa:Czwartek:Piątek:Sobota
-
-
- Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień
-
-
- Utracone pakiety
-
-
- Przepustowość
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- L$ [AMT]
-
-
-
-
-
-
- 24:00 AM PST
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/floater_camera.xml b/indra/newview/skins/minimal/xui/pt/floater_camera.xml
deleted file mode 100644
index 4f3729c623..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- Girar a Câmera ao redor do Foco
-
-
- Aproximar a Câmera in direção ao Foco
-
-
- Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
-
-
- Modos de câmera
-
-
- Pan zoom orbital
-
-
- Ângulos predefinidos
-
-
- Visualizar objeto
-
-
-
-
-
- Vista frontal
-
-
-
-
- Vista lateral
-
-
-
-
- Vista de trás
-
-
-
-
-
-
- Vista de objetos
-
-
-
-
- Vista do mouse
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
deleted file mode 100644
index 11428ff651..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Carregando...
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
deleted file mode 100644
index da7428007e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- http://www.secondlife.com
-
-
- http://support.secondlife.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
deleted file mode 100644
index 60edfa505f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml b/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
deleted file mode 100644
index 5101579c6f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
deleted file mode 100644
index a199c58c15..0000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- [IDADE]
-
-
- [PERFIL_SL]
-
-
- This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_object.xml b/indra/newview/skins/minimal/xui/pt/inspect_object.xml
deleted file mode 100644
index b72de7038d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_object.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- Autor: [CREATOR]
-
-
- Autor [CREATOR]
-Proprietário [OWNER]
-
-
- L$[AMOUNT]
-
-
- Grátis!
-
-
- Tocar
-
-
- Sentar
-
-
-
- L$30.000
-
-
- This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
deleted file mode 100644
index 4b81276ab3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
deleted file mode 100644
index cfd69158bc..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
deleted file mode 100644
index 09060cf3ae..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
deleted file mode 100644
index beba969b7e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
deleted file mode 100644
index a4a26144c7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
deleted file mode 100644
index 6e203d5a25..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
deleted file mode 100644
index 479d02512f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
deleted file mode 100644
index 527e3af3c9..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
deleted file mode 100644
index 704fd226eb..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
deleted file mode 100644
index 051323ae6a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
deleted file mode 100644
index 8716992a5e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_edit.xml b/indra/newview/skins/minimal/xui/pt/menu_edit.xml
deleted file mode 100644
index ff431c9a21..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml b/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
deleted file mode 100644
index 062820fbca..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
deleted file mode 100644
index 70d8ae7a8e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
deleted file mode 100644
index 1083845d68..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
deleted file mode 100644
index c2b063193e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
deleted file mode 100644
index 2d37cefd6f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
deleted file mode 100644
index ead949ba13..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
deleted file mode 100644
index dd177d1b8d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
deleted file mode 100644
index d821b3ded0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 90b321e0a2..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
deleted file mode 100644
index 184db26538..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
deleted file mode 100644
index c1f27e765d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c404719c95..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
deleted file mode 100644
index 1b1efd3270..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
deleted file mode 100644
index 2723f39287..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
deleted file mode 100644
index 3400578d9a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_land.xml b/indra/newview/skins/minimal/xui/pt/menu_land.xml
deleted file mode 100644
index 9182ce321a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
deleted file mode 100644
index 6accfebee7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_login.xml b/indra/newview/skins/minimal/xui/pt/menu_login.xml
deleted file mode 100644
index 3dff3d7c8a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
deleted file mode 100644
index 6a3fe55de5..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
deleted file mode 100644
index 57c1471de3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
deleted file mode 100644
index f1ea83c837..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
deleted file mode 100644
index 43ad4134ec..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object.xml b/indra/newview/skins/minimal/xui/pt/menu_object.xml
deleted file mode 100644
index bf94859699..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
deleted file mode 100644
index 7af760a6ee..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
deleted file mode 100644
index 11b3e653c6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
deleted file mode 100644
index 8db5e405b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
deleted file mode 100644
index 01f1d4ef80..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
deleted file mode 100644
index e7c325010f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
deleted file mode 100644
index 9a924ad7b9..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
deleted file mode 100644
index 86a9d2263f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
deleted file mode 100644
index b446a2fe81..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 79edb96b1c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 228ce46a31..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
deleted file mode 100644
index f3b89e01cd..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks.xml b/indra/newview/skins/minimal/xui/pt/menu_picks.xml
deleted file mode 100644
index 8b9e10fc02..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
deleted file mode 100644
index 95a7c05262..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place.xml b/indra/newview/skins/minimal/xui/pt/menu_place.xml
deleted file mode 100644
index 282ea20a7a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
deleted file mode 100644
index d099d04f8d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
deleted file mode 100644
index 2059a9ed2d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
deleted file mode 100644
index 52a9d13735..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
deleted file mode 100644
index d41ecbd755..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
deleted file mode 100644
index 61c6b9202f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
deleted file mode 100644
index ccf3878e14..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
deleted file mode 100644
index 6d4c84fc3c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
deleted file mode 100644
index f034509be8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
deleted file mode 100644
index ec1e7a0950..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
deleted file mode 100644
index 6a633cf74c..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
deleted file mode 100644
index 31c284c6ed..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
deleted file mode 100644
index d9347950b1..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
deleted file mode 100644
index ba5e055124..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml b/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
deleted file mode 100644
index 5b67a69c9a..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml b/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
deleted file mode 100644
index e53a2572b8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
deleted file mode 100644
index 45c14355d0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml b/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
deleted file mode 100644
index ba114cccaa..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
deleted file mode 100644
index c197444181..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
deleted file mode 100644
index 6cc668bfd3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
deleted file mode 100644
index d0784149ac..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
deleted file mode 100644
index 7216ccf0b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
deleted file mode 100644
index f007425646..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml b/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
deleted file mode 100644
index 2bd1e88279..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
deleted file mode 100644
index 2487f6779f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
deleted file mode 100644
index 7b6ce4d87e..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
deleted file mode 100644
index 4e6e52ebc7..0000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/notifications.xml b/indra/newview/skins/minimal/xui/pt/notifications.xml
deleted file mode 100644
index 9e5ff6fe60..0000000000
--- a/indra/newview/skins/minimal/xui/pt/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- [NAME_SLURL] quer lhe dar [ITEM_SLURL]. Esta ação requer o modo Avançado. Passe para o modo avançado e você verá o item em seu inventário. Para passar para o modo avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
-
-
-
- Um objeto chamado <nolink>[OBJECTFROMNAME]</nolink>, de [NAME_SLURL], está lhe oferecendo <nolink>[ITEM_SLURL]</nolink>. Esta ação requer o modo Avançado. Passe para o modo Avançado e você verá o item em seu Inventário. Para passar para o modo Avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
deleted file mode 100644
index bd50d4953d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
deleted file mode 100644
index 9b4eb2c2b8..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
deleted file mode 100644
index 177cee28a6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
deleted file mode 100644
index 190323c3b0..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_login.xml b/indra/newview/skins/minimal/xui/pt/panel_login.xml
deleted file mode 100644
index de9717874f..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- http://join.secondlife.com/
-
-
- http://secondlife.com/account/request.php?lang=pt
-
-
-
-
- Nome de usuário:
-
-
-
- Senha:
-
-
-
-
- Modo:
-
-
-
-
-
-
-
-
- Cadastre-se
-
-
- Esqueceu seu nome ou senha?
-
-
- Precisa de ajuda ao conectar?
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
deleted file mode 100644
index 01930bf3b3..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_people.xml b/indra/newview/skins/minimal/xui/pt/panel_people.xml
deleted file mode 100644
index 0e98c586c6..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Clique em um residente com o botão direito to mouse para adicioná-lo como amigo.
-Em busca de alguém para conversar? Confira o botão Destinos abaixo.
-
-
- Não encontrou o que procura? Confira o botão Destinos abaixo.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 09444a5535..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
deleted file mode 100644
index f7890ae57d..0000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- Domingo:Segunda-feira:Terça-feira:Quarta-feira:Quinta-feira:Sexta-feira:Sábado
-
-
- Janeiro:Fevereiro:Março:Abril:Maio:Junho:Julho:Agosto:Setembro:Outubro:Novembro:Dezembro
-
-
- Perda de pacote
-
-
- Banda
-
-
- [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-
-
- [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-
-
- L$ [AMT]
-
-
-
-
-
-
- 24:00 AM PST
-
-
-
-
--
cgit v1.3
From 8a846bd3747ac9192691b8b588bbae8d5e0de403 Mon Sep 17 00:00:00 2001
From: Richard Linden
Date: Tue, 20 Sep 2011 19:02:11 -0700
Subject: EXP-1230 FIX As a resident, I want to not have to choose a UI mode
cleaned up status and navigation bars
---
indra/newview/skins/default/xui/en/panel_navigation_bar.xml | 4 ++--
indra/newview/skins/default/xui/en/panel_status_bar.xml | 12 ++++++------
2 files changed, 8 insertions(+), 8 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 9749b6fdd4..8a7bd53054 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -97,7 +97,7 @@
mouse_opaque="false"
name="location_combo"
top_delta="0"
- width="226">
+ width="266">
-
Date: Wed, 21 Sep 2011 13:51:59 -0700
Subject: Updating toolbar test floater to use new side definition rather than
orientation
---
indra/newview/skins/default/xui/en/floater_test_toolbar.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index 55cfd462ac..76bba4e72e 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -13,7 +13,7 @@
width="500"
left="0"
top="20"
- orientation="horizontal">
+ side="top">
@@ -30,7 +30,7 @@
width="100"
left="0"
top="70"
- orientation="vertical">
+ side="left">
Date: Wed, 21 Sep 2011 14:24:38 -0700
Subject: EXP-1207 : LLToolbarView skeleton, nothing operational yet...
---
indra/llui/CMakeLists.txt | 2 +
indra/llui/lltoolbarview.cpp | 74 ++++++++++++++++++++++++
indra/llui/lltoolbarview.h | 52 +++++++++++++++++
indra/newview/app_settings/settings.xml | 11 ++++
indra/newview/llviewerwindow.cpp | 10 ++++
indra/newview/skins/default/xui/en/main_view.xml | 35 +++++++++++
6 files changed, 184 insertions(+)
create mode 100644 indra/llui/lltoolbarview.cpp
create mode 100644 indra/llui/lltoolbarview.h
(limited to 'indra/newview')
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index cf3f9b1a7b..d81801a0d2 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -100,6 +100,7 @@ set(llui_SOURCE_FILES
lltransutil.cpp
lltoggleablemenu.cpp
lltoolbar.cpp
+ lltoolbarview.cpp
lltooltip.cpp
llui.cpp
lluicolortable.cpp
@@ -202,6 +203,7 @@ set(llui_HEADER_FILES
lltimectrl.h
lltoggleablemenu.h
lltoolbar.h
+ lltoolbarview.h
lltooltip.h
lltransutil.h
lluicolortable.h
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
new file mode 100644
index 0000000000..40d1ac3418
--- /dev/null
+++ b/indra/llui/lltoolbarview.cpp
@@ -0,0 +1,74 @@
+/**
+ * @file lltoolbarview.cpp
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#include "linden_common.h"
+
+#include "lltoolbarview.h"
+#include "llbutton.h"
+
+LLToolBarView* gToolBarView = NULL;
+
+static LLDefaultChildRegistry::Register r("toolbar_view");
+
+LLToolBarView::LLToolBarView(const Params& p)
+: LLUICtrl(p)
+{
+}
+
+BOOL LLToolBarView::postBuild()
+{
+ LLButton* btn = getChild("color_pipette");
+ btn->setVisible(TRUE);
+ LLRect ctrl_rect = getRect();
+ LLRect btn_rect = btn->getRect();
+ llinfos << "Merov debug : control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
+ llinfos << "Merov debug : button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ btn_rect.mLeft = 0;
+ btn_rect.mTop = ctrl_rect.getHeight();
+ btn_rect.mRight = 28;
+ btn_rect.mBottom = btn_rect.mTop - 28;
+ btn->setRect(btn_rect);
+ btn_rect = btn->getRect();
+ llinfos << "Merov debug : button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ return TRUE;
+}
+
+void LLToolBarView::draw()
+{
+ LLButton* btn = getChild("color_pipette");
+ btn->setVisible(TRUE);
+ static bool debug_print = true;
+ if (debug_print)
+ {
+ LLRect ctrl_rect = getRect();
+ LLRect btn_rect = btn->getRect();
+ llinfos << "Merov debug : draw control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
+ llinfos << "Merov debug : draw button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ debug_print = false;
+ }
+ LLUICtrl::draw();
+}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
new file mode 100644
index 0000000000..0bd0070ab7
--- /dev/null
+++ b/indra/llui/lltoolbarview.h
@@ -0,0 +1,52 @@
+/**
+ * @file lltoolbarview.h
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifndef LL_LLTOOLBARVIEW_H
+#define LL_LLTOOLBARVIEW_H
+
+#include "lluictrl.h"
+
+// Parent of all LLToolBar
+
+class LLToolBarView : public LLUICtrl
+{
+public:
+ struct Params : public LLInitParam::Block {};
+ void draw();
+ /*virtual*/ BOOL postBuild();
+
+protected:
+ friend class LLUICtrlFactory;
+ LLToolBarView(const Params&);
+
+private:
+ LLHandle mSnapView;
+};
+
+extern LLToolBarView* gToolBarView;
+
+#endif // LL_LLTOOLBARVIEW_H
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7ab9f36b87..edebbcb8cf 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2652,6 +2652,17 @@
Value
-1
+ DebugToolbarFUI
+
+ Comment
+ Turn on the FUI Toolbars
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DebugViews
Comment
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 5893259d96..e92e7f1183 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -76,6 +76,7 @@
#include "lltimer.h"
#include "timing.h"
#include "llviewermenu.h"
+#include "lltoolbarview.h"
#include "lltooltip.h"
#include "llmediaentry.h"
#include "llurldispatcher.h"
@@ -1778,6 +1779,14 @@ void LLViewerWindow::initBase()
mHintHolder = main_view->getChild("hint_holder")->getHandle();
mLoginPanelHolder = main_view->getChild("login_panel_holder")->getHandle();
+ // Update the toolbar global holder
+ // *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
+ if (gSavedSettings.getBOOL("DebugToolbarFUI"))
+ {
+ gToolBarView = main_view->getChild("Toolbar View");
+ }
+
+
// Constrain floaters to inside the menu and status bar regions.
gFloaterView = main_view->getChild("Floater View");
gFloaterView->setFloaterSnapView(main_view->getChild("floater_snap_region")->getHandle());
@@ -2000,6 +2009,7 @@ void LLViewerWindow::shutdownViews()
gIMMgr = NULL;
gToolTipView = NULL;
+ gToolBarView = NULL;
gFloaterView = NULL;
gMorphView = NULL;
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a7d1aa963c..54badb1386 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -162,6 +162,41 @@
top="0"
width="1024"/>
+
+
+
+
+
+
+
Date: Wed, 21 Sep 2011 17:25:38 -0700
Subject: EXP-1205 PROGRESS -- As a User, I want a toybox which will contain
all buttons that I can d&d into the toolbars EXP-1232 FIX -- Create class to
load and hold all of the command meta data associated with FUI toolbar
actions
* Added basic commands.xml file to define FUI-related toolbar actions. For now
a basic "avatar" and "places" button are defined.
* Added basic command manager to parse and hold strings that define potential
toolbar command actions.
* Broke out a separate floater function as a placeholder for the 3-state toolbar
floater toggling.
* LLUI::initClass now parses the new commands.xml file
Reviewed by Richard.
---
indra/llui/CMakeLists.txt | 2 +
indra/llui/llcommandmanager.cpp | 138 ++++++++++++++++++++++
indra/llui/llcommandmanager.h | 97 +++++++++++++++
indra/llui/llfloaterreg.cpp | 11 ++
indra/llui/llfloaterreg.h | 1 +
indra/llui/llui.cpp | 5 +
indra/newview/CMakeLists.txt | 1 +
indra/newview/app_settings/commands.xml | 17 +++
indra/newview/skins/default/textures/textures.xml | 3 +
indra/newview/skins/default/xui/en/strings.xml | 8 +-
10 files changed, 282 insertions(+), 1 deletion(-)
create mode 100644 indra/llui/llcommandmanager.cpp
create mode 100644 indra/llui/llcommandmanager.h
create mode 100644 indra/newview/app_settings/commands.xml
(limited to 'indra/newview')
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index cf3f9b1a7b..0687cf55d8 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -35,6 +35,7 @@ set(llui_SOURCE_FILES
llcheckboxctrl.cpp
llclipboard.cpp
llcombobox.cpp
+ llcommandmanager.cpp
llconsole.cpp
llcontainerview.cpp
llctrlselectioninterface.cpp
@@ -132,6 +133,7 @@ set(llui_HEADER_FILES
llcheckboxctrl.h
llclipboard.h
llcombobox.h
+ llcommandmanager.h
llconsole.h
llcontainerview.h
llctrlselectioninterface.h
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
new file mode 100644
index 0000000000..306b357d6a
--- /dev/null
+++ b/indra/llui/llcommandmanager.cpp
@@ -0,0 +1,138 @@
+/**
+ * @file llcommandmanager.cpp
+ * @brief LLCommandManager class
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+// A control that displays the name of the chosen item, which when
+// clicked shows a scrolling box of options.
+
+#include "linden_common.h"
+
+#include "llcommandmanager.h"
+#include "lldir.h"
+#include "llerror.h"
+#include "llxuiparser.h"
+
+#include
+
+
+//
+// LLCommand class
+//
+
+LLCommand::Params::Params()
+ : function("function")
+ , icon("icon")
+ , label_ref("label_ref")
+ , name("name")
+ , param("param")
+ , tooltip_ref("tooltip_ref")
+{
+}
+
+LLCommand::LLCommand(const LLCommand::Params& p)
+ : mFunction(p.function)
+ , mIcon(p.icon)
+ , mLabelRef(p.label_ref)
+ , mName(p.name)
+ , mParam(p.param)
+ , mTooltipRef(p.tooltip_ref)
+{
+}
+
+
+//
+// LLCommandManager class
+//
+
+LLCommandManager::LLCommandManager()
+{
+}
+
+LLCommandManager::~LLCommandManager()
+{
+}
+
+U32 LLCommandManager::count() const
+{
+ return mCommands.size();
+}
+
+LLCommand * LLCommandManager::getCommand(U32 commandIndex)
+{
+ return mCommands[commandIndex];
+}
+
+LLCommand * LLCommandManager::getCommand(const std::string& commandName)
+{
+ LLCommand * command_name_match = NULL;
+
+ for (CommandVector::iterator it = mCommands.begin(); it != mCommands.end(); ++it)
+ {
+ LLCommand * command = *it;
+
+ if (command->name() == commandName)
+ {
+ command_name_match = command;
+ break;
+ }
+ }
+
+ return command_name_match;
+}
+
+//static
+bool LLCommandManager::load()
+{
+ LLCommandManager& mgr = LLCommandManager::instance();
+
+ std::string commands_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "commands.xml");
+
+ LLCommandManager::Params commandsParams;
+
+ LLSimpleXUIParser parser;
+
+ if (!parser.readXUI(commands_file, commandsParams))
+ {
+ llerrs << "Unable to load xml file: " << commands_file << llendl;
+ return false;
+ }
+
+ if (!commandsParams.validateBlock())
+ {
+ llerrs << "Unable to validate commands param block from file: " << commands_file << llendl;
+ return false;
+ }
+
+ BOOST_FOREACH(LLCommand::Params& commandParams, commandsParams.commands)
+ {
+ LLCommand * command = new LLCommand(commandParams);
+
+ mgr.mCommands.push_back(command);
+
+ llinfos << "Successfully loaded command: " << command->name() << llendl;
+ }
+
+ return true;
+}
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
new file mode 100644
index 0000000000..4f3c9b2ada
--- /dev/null
+++ b/indra/llui/llcommandmanager.h
@@ -0,0 +1,97 @@
+/**
+ * @file llcommandmanager.h
+ * @brief LLCommandManager class to hold commands
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifndef LL_COMMANDMANAGER_H
+#define LL_COMMANDMANAGER_H
+
+#include "llinitparam.h"
+#include "llsingleton.h"
+
+
+class LLCommand
+{
+public:
+ struct Params : public LLInitParam::Block
+ {
+ Mandatory function;
+ Mandatory icon;
+ Mandatory label_ref;
+ Mandatory name;
+ Optional param;
+ Mandatory tooltip_ref;
+
+ Params();
+ };
+
+ LLCommand(const LLCommand::Params& p);
+
+ const std::string& functionName() const { return mFunction; }
+ const std::string& icon() const { return mIcon; }
+ const std::string& labelRef() const { return mLabelRef; }
+ const std::string& name() const { return mName; }
+ const std::string& param() const { return mParam; }
+ const std::string& tooltipRef() const { return mTooltipRef; }
+
+private:
+ std::string mFunction;
+ std::string mIcon;
+ std::string mLabelRef;
+ std::string mName;
+ std::string mParam;
+ std::string mTooltipRef;
+};
+
+
+class LLCommandManager
+: public LLSingleton
+{
+public:
+ struct Params : public LLInitParam::Block
+ {
+ Multiple< LLCommand::Params, AtLeast<1> > commands;
+
+ Params()
+ : commands("command")
+ {
+ }
+ };
+
+ LLCommandManager();
+ ~LLCommandManager();
+
+ U32 count() const;
+ LLCommand * getCommand(U32 commandIndex);
+ LLCommand * getCommand(const std::string& commandName);
+
+ static bool load();
+
+private:
+ typedef std::vector CommandVector;
+ CommandVector mCommands;
+};
+
+
+#endif // LL_COMMANDMANAGER_H
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index fc7dcfcc4e..bc740dde17 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -452,6 +452,17 @@ void LLFloaterReg::toggleFloaterInstance(const LLSD& sdname)
toggleInstance(name, key);
}
+//static
+void LLFloaterReg::toggleToolbarFloaterInstance(const LLSD& sdname)
+{
+ // Do some extra logic here for 3-state toolbar floater toggling madness :)
+
+ LLSD key;
+ std::string name = sdname.asString();
+ parse_name_key(name, key);
+ toggleInstance(name, key);
+}
+
//static
bool LLFloaterReg::floaterInstanceVisible(const LLSD& sdname)
{
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index a2027a77a0..6239d98a7d 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -127,6 +127,7 @@ public:
static void showFloaterInstance(const LLSD& sdname);
static void hideFloaterInstance(const LLSD& sdname);
static void toggleFloaterInstance(const LLSD& sdname);
+ static void toggleToolbarFloaterInstance(const LLSD& sdname);
static bool floaterInstanceVisible(const LLSD& sdname);
static bool floaterInstanceMinimized(const LLSD& sdname);
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 593354ee9b..1bc575438c 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -41,6 +41,7 @@
#include "llgl.h"
// Project includes
+#include "llcommandmanager.h"
#include "llcontrol.h"
#include "llui.h"
#include "lluicolortable.h"
@@ -1617,6 +1618,7 @@ void LLUI::initClass(const settings_map_t& settings,
// Callbacks for associating controls with floater visibilty:
reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleFloaterInstance, _2));
+ reg.add("Floater.ToolbarToggle", boost::bind(&LLFloaterReg::toggleToolbarFloaterInstance, _2));
reg.add("Floater.Show", boost::bind(&LLFloaterReg::showFloaterInstance, _2));
reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideFloaterInstance, _2));
reg.add("Floater.InitToVisibilityControl", boost::bind(&LLFloaterReg::initUICtrlToFloaterVisibilityControl, _1, _2));
@@ -1635,6 +1637,9 @@ void LLUI::initClass(const settings_map_t& settings,
// Used by menus along with Floater.Toggle to display visibility as a checkmark
LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.Visible", boost::bind(&LLFloaterReg::floaterInstanceVisible, _2));
+
+ // Parse the master list of commands
+ LLCommandManager::load();
}
void LLUI::cleanupClass()
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 18e092eb4a..597a1dd603 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1409,6 +1409,7 @@ list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
set(viewer_APPSETTINGS_FILES
app_settings/anim.ini
app_settings/cmd_line.xml
+ app_settings/commands.xml
app_settings/grass.xml
app_settings/high_graphics.xml
app_settings/ignorable_dialogs.xml
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
new file mode 100644
index 0000000000..8e45e866ca
--- /dev/null
+++ b/indra/newview/app_settings/commands.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 4d83ec2902..598e39730c 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -125,6 +125,9 @@ with the same filename but different name
+
+
+
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c0154ae9b3..3b986664db 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3651,4 +3651,10 @@ Try enclosing path to the editor with double quotes.
Viewing media beacons (white)
Hiding Particles
-
+
+ Avatar
+ Customize your avatar
+ Places
+ Destination guide
+
+
--
cgit v1.3
From f72115059e7b1450e221a8006d2030ac35767b5a Mon Sep 17 00:00:00 2001
From: Richard Nelson
Date: Wed, 21 Sep 2011 17:57:49 -0700
Subject: EXP-1230 FIX As a resident, I want to not have to choose a UI mode
for existing configs that point to settings_minimal.xml, make it a valid, but
empty file
---
indra/newview/app_settings/settings_minimal.xml | 1 +
1 file changed, 1 insertion(+)
create mode 100644 indra/newview/app_settings/settings_minimal.xml
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
new file mode 100644
index 0000000000..01a70f2671
--- /dev/null
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
--
cgit v1.3
From 7e308b551c7fde9178e354dba005a5b35f793245 Mon Sep 17 00:00:00 2001
From: Richard Nelson
Date: Wed, 21 Sep 2011 18:48:39 -0700
Subject: EXP-1239 WIP make toolbars wrap when there is not enough room initial
pass at wrapping
---
indra/llui/lltoolbar.cpp | 196 ++++++++++++++-------
indra/llui/lltoolbar.h | 27 ++-
.../skins/default/xui/en/floater_test_toolbar.xml | 13 +-
3 files changed, 165 insertions(+), 71 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 2c1e141ca7..1e8be93f17 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -30,9 +30,10 @@
#include "boost/foreach.hpp"
#include "lltoolbar.h"
+// uncomment this and remove the one in llui.cpp when there is an external reference to this translation unit
+// thanks, MSVC!
//static LLDefaultChildRegistry::Register r1("toolbar");
-
namespace LLToolBarEnums
{
LLLayoutStack::ELayoutOrientation getOrientation(SideType sideType)
@@ -47,85 +48,88 @@ namespace LLToolBarEnums
return orientation;
}
}
-
+using namespace LLToolBarEnums;
LLToolBar::Params::Params()
: button_display_mode("button_display_mode"),
buttons("button"),
- side("side")
+ side("side"),
+ button_icon("button_icon"),
+ button_icon_and_text("button_icon_and_text"),
+ wrap("wrap", true),
+ min_width("min_width", 0),
+ max_width("max_width", S32_MAX),
+ background_image("background_image")
{}
LLToolBar::LLToolBar(const Params& p)
: LLUICtrl(p),
mButtonType(p.button_display_mode),
mSideType(p.side),
- mStack(NULL)
+ mWrap(p.wrap),
+ mNeedsLayout(false),
+ mCenterPanel(NULL),
+ mCenteringStack(NULL),
+ mMinWidth(p.min_width),
+ mMaxWidth(p.max_width),
+ mBackgroundImage(p.background_image)
{
}
void LLToolBar::initFromParams(const LLToolBar::Params& p)
{
- LLLayoutStack::ELayoutOrientation orientation = LLToolBarEnums::getOrientation(p.side);
+ LLLayoutStack::ELayoutOrientation orientation = getOrientation(p.side);
LLLayoutStack::Params centering_stack_p;
+ centering_stack_p.name = "centering_stack";
centering_stack_p.rect = getLocalRect();
centering_stack_p.follows.flags = FOLLOWS_ALL;
centering_stack_p.orientation = orientation;
- centering_stack_p.name = "centering_stack";
+ mCenteringStack = LLUICtrlFactory::create(centering_stack_p);
+ addChild(mCenteringStack);
+
LLLayoutPanel::Params border_panel_p;
border_panel_p.name = "border_panel";
border_panel_p.rect = getLocalRect();
border_panel_p.auto_resize = true;
border_panel_p.user_resize = false;
-
- LLLayoutStack* centering_stack = LLUICtrlFactory::create(centering_stack_p);
- addChild(centering_stack);
+ mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
+
LLLayoutPanel::Params center_panel_p;
center_panel_p.name = "center_panel";
center_panel_p.rect = getLocalRect();
center_panel_p.auto_resize = false;
center_panel_p.user_resize = false;
center_panel_p.fit_content = true;
+ mCenterPanel = LLUICtrlFactory::create(center_panel_p);
+ mCenteringStack->addChild(mCenterPanel);
+
+ mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
- centering_stack->addChild(LLUICtrlFactory::create(border_panel_p));
- LLLayoutPanel* center_panel = LLUICtrlFactory::create(center_panel_p);
- centering_stack->addChild(center_panel);
- centering_stack->addChild(LLUICtrlFactory::create(border_panel_p));
-
- LLLayoutStack::Params stack_p;
- stack_p.rect = getLocalRect();
- stack_p.name = "button_stack";
- stack_p.orientation = orientation;
- stack_p.follows.flags = (orientation == LLLayoutStack::HORIZONTAL)
- ? (FOLLOWS_TOP|FOLLOWS_BOTTOM) // horizontal
- : (FOLLOWS_LEFT|FOLLOWS_RIGHT); // vertical
-
- mStack = LLUICtrlFactory::create(stack_p);
- center_panel->addChild(mStack);
+ addRow();
BOOST_FOREACH (LLToolBarButton::Params button_p, p.buttons)
{
- // remove any offset from button
LLRect button_rect(button_p.rect);
-
- if (orientation == LLLayoutStack::HORIZONTAL)
- {
- button_rect.setOriginAndSize(0, 0, 0, getRect().getHeight());
+ { // remove any offset from button
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ button_rect.setOriginAndSize(0, 0, mMinWidth, getRect().getHeight());
+ }
+ else // VERTICAL
+ {
+ button_rect.setOriginAndSize(0, 0, mMinWidth, button_rect.getHeight());
+ }
}
- else // VERTICAL
- {
- button_rect.setOriginAndSize(0, 0, 0, button_rect.getHeight());
- }
- button_p.follows.flags = FOLLOWS_NONE;
- button_p.rect = button_rect;
- button_p.chrome = true;
- button_p.auto_resize = true;
- LLToolBarButton* button = LLUICtrlFactory::create(button_p);
+ button_p.fillFrom((mButtonType == BTNTYPE_ICONS_ONLY)
+ ? p.button_icon // icon only
+ : p.button_icon_and_text); // icon + text
- addButton(button);
+ mButtons.push_back(LLUICtrlFactory::create(button_p));
+ mNeedsLayout = true;
}
updateLayout();
@@ -142,57 +146,127 @@ void LLToolBar::addButton(LLToolBarButton* buttonp)
LLLayoutPanel* panel = LLUICtrlFactory::create(panel_p);
panel->addChild(buttonp);
- mStack->addChild(panel);
- mButtons.push_back(buttonp);
+ mStacks.back()->addChild(panel);
}
void LLToolBar::updateLayout()
{
- S32 total_width = 0;
- S32 total_height = 0;
- S32 max_width = getRect().getWidth();
- S32 max_height = getRect().getHeight();
+ mCenteringStack->updateLayout();
+
+ if (!mNeedsLayout) return;
+ mNeedsLayout = false;
+
+ { // clean up existing rows
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
+ if (button->getParent())
+ {
+ button->getParent()->removeChild(button);
+ }
+ }
+
+ BOOST_FOREACH(LLLayoutStack* stack, mStacks)
+ {
+ delete stack;
+ }
+ mStacks.clear();
+ }
+ // start with one row of buttons
+ addRow();
+ S32 total_width = 0, total_height = 0;
+ S32 max_total_width = 0, max_total_height = 0;
+ S32 max_width = getRect().getWidth(), max_height = getRect().getHeight();
BOOST_FOREACH(LLToolBarButton* button, mButtons)
{
- total_width += button->getRect().getWidth();
- total_height += button->getRect().getHeight();
+ S32 button_width = button->getRect().getWidth();
+ S32 button_height = button->getRect().getHeight();
+
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL
+ && total_width + button_height > getRect().getWidth())
+ {
+ addRow();
+ total_width = 0;
+ }
+ addButton(button);
+
+ total_width += button_width;
+ total_height += button_height;
+ max_total_width = llmax(max_total_width, total_width);
+ max_total_height = llmax(max_total_height, total_height);
max_width = llmax(button->getRect().getWidth(), max_width);
max_height = llmax(button->getRect().getHeight(), max_height);
}
- if (LLToolBarEnums::getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
{
- mStack->reshape(total_width, mStack->getParent()->getRect().getHeight());
+ BOOST_FOREACH(LLLayoutStack* stack, mStacks)
+ {
+ stack->reshape(max_total_width, stack->getParent()->getRect().getHeight());
+ stack->updateLayout();
+ }
}
else
{
- mStack->reshape(mStack->getParent()->getRect().getWidth(), total_height);
- reshape(max_width, getRect().getHeight());
+ BOOST_FOREACH(LLLayoutStack* stack, mStacks)
+ {
+ stack->reshape(stack->getParent()->getRect().getWidth(), max_total_height);
+ stack->updateLayout();
+ }
+
+ reshape(max_total_width, getRect().getHeight());
}
}
void LLToolBar::draw()
{
- //gl_rect_2d(getLocalRect(), LLColor4::blue, TRUE);
+ updateLayout();
+
+ { // draw background
+ LLRect bg_rect;
+ localRectToOtherView(mCenterPanel->getRect(),&bg_rect, this);
+ mBackgroundImage->draw(bg_rect);
+ }
LLUICtrl::draw();
}
+void LLToolBar::addRow()
+{
+ LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
+
+ LLLayoutStack::Params stack_p;
+ stack_p.rect = getLocalRect();
+ stack_p.name = llformat("button_stack_%d", mStacks.size());
+ stack_p.orientation = orientation;
+ stack_p.follows.flags = (orientation == LLLayoutStack::HORIZONTAL)
+ ? (FOLLOWS_TOP|FOLLOWS_BOTTOM) // horizontal
+ : (FOLLOWS_LEFT|FOLLOWS_RIGHT); // vertical
+
+ mStacks.push_back(LLUICtrlFactory::create(stack_p));
+ mCenterPanel->addChild(mStacks.back());
+}
+
+void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+ LLUICtrl::reshape(width, height, called_from_parent);
+ mNeedsLayout = true;
+}
+
namespace LLInitParam
{
- void TypeValues::declareValues()
+ void TypeValues::declareValues()
{
- declare("icons_only", LLToolBarEnums::BTNTYPE_ICONS_ONLY);
- declare("icons_with_text", LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT);
+ declare("icons_only", BTNTYPE_ICONS_ONLY);
+ declare("icons_with_text", BTNTYPE_ICONS_WITH_TEXT);
}
- void TypeValues::declareValues()
+ void TypeValues::declareValues()
{
- declare("none", LLToolBarEnums::SIDE_NONE);
- declare("bottom", LLToolBarEnums::SIDE_BOTTOM);
- declare("left", LLToolBarEnums::SIDE_LEFT);
- declare("right", LLToolBarEnums::SIDE_RIGHT);
- declare("top", LLToolBarEnums::SIDE_TOP);
+ declare("none", SIDE_NONE);
+ declare("bottom", SIDE_BOTTOM);
+ declare("left", SIDE_LEFT);
+ declare("right", SIDE_RIGHT);
+ declare("top", SIDE_TOP);
}
}
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 60a848a6e3..3a593e42d9 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -87,14 +87,25 @@ public:
struct Params : public LLInitParam::Block
{
Mandatory button_display_mode;
- Multiple buttons;
Mandatory side;
+ Optional button_icon,
+ button_icon_and_text;
+
+ Optional wrap;
+ Optional min_width,
+ max_width;
+ // get rid of this
+ Multiple buttons;
+
+ Optional background_image;
+
Params();
};
// virtuals
void draw();
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
protected:
friend class LLUICtrlFactory;
@@ -105,10 +116,22 @@ protected:
void updateLayout();
private:
+ void addRow();
+
std::list mButtons;
LLToolBarEnums::ButtonType mButtonType;
+ LLLayoutStack* mCenteringStack;
+ LLLayoutStack* mWrapStack;
+ LLLayoutPanel* mCenterPanel;
LLToolBarEnums::SideType mSideType;
- LLLayoutStack* mStack;
+
+ std::vector mStacks;
+ bool mWrap;
+ bool mNeedsLayout;
+ S32 mMinWidth,
+ mMaxWidth;
+
+ LLUIImagePtr mBackgroundImage;
};
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index 55cfd462ac..138322eca7 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -13,15 +13,12 @@
width="500"
left="0"
top="20"
- orientation="horizontal">
-
+
-
-
+ side="left">
Date: Wed, 21 Sep 2011 18:48:51 -0700
Subject: EXP-1239 WIP make toolbars wrap when there is not enough room initial
pass at wrapping
---
indra/newview/skins/default/xui/en/widgets/toolbar.xml | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 indra/newview/skins/default/xui/en/widgets/toolbar.xml
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
new file mode 100644
index 0000000000..a7f73c0c7c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
--
cgit v1.3
From 65892a01cad5d22403f36a10187af40b37b48383 Mon Sep 17 00:00:00 2001
From: Merov Linden
Date: Wed, 21 Sep 2011 19:31:07 -0700
Subject: EXP-1207 : More work on LLToolbarView, still not operational...
---
indra/llui/lltoolbarview.cpp | 35 ++++++++------
indra/newview/app_settings/settings.xml | 2 +-
indra/newview/llviewerwindow.cpp | 11 ++++-
indra/newview/skins/default/xui/en/main_view.xml | 44 ++++-------------
.../skins/default/xui/en/panel_toolbar_view.xml | 55 ++++++++++++++++++++++
5 files changed, 95 insertions(+), 52 deletions(-)
create mode 100644 indra/newview/skins/default/xui/en/panel_toolbar_view.xml
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 40d1ac3418..0e54c91cea 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -28,6 +28,7 @@
#include "linden_common.h"
#include "lltoolbarview.h"
+#include "lltoolbar.h"
#include "llbutton.h"
LLToolBarView* gToolBarView = NULL;
@@ -41,34 +42,40 @@ LLToolBarView::LLToolBarView(const Params& p)
BOOL LLToolBarView::postBuild()
{
- LLButton* btn = getChild("color_pipette");
- btn->setVisible(TRUE);
LLRect ctrl_rect = getRect();
+ LLButton* btn = getChild("test");
LLRect btn_rect = btn->getRect();
llinfos << "Merov debug : control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
- llinfos << "Merov debug : button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
- btn_rect.mLeft = 0;
- btn_rect.mTop = ctrl_rect.getHeight();
- btn_rect.mRight = 28;
- btn_rect.mBottom = btn_rect.mTop - 28;
- btn->setRect(btn_rect);
- btn_rect = btn->getRect();
- llinfos << "Merov debug : button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ llinfos << "Merov debug : test rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
return TRUE;
}
void LLToolBarView::draw()
{
- LLButton* btn = getChild("color_pipette");
- btn->setVisible(TRUE);
static bool debug_print = true;
+
+ LLToolBar* toolbar_bottom = getChild("toolbar_bottom");
+ LLToolBar* toolbar_left = getChild("toolbar_left");
+ LLToolBar* toolbar_right = getChild("toolbar_right");
+
+ LLRect bottom_rect = toolbar_bottom->getRect();
+ LLRect left_rect = toolbar_left->getRect();
+ LLRect right_rect = toolbar_right->getRect();
+
if (debug_print)
{
LLRect ctrl_rect = getRect();
- LLRect btn_rect = btn->getRect();
llinfos << "Merov debug : draw control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
- llinfos << "Merov debug : draw button rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
+ llinfos << "Merov debug : draw bottom rect = " << bottom_rect.mLeft << ", " << bottom_rect.mTop << ", " << bottom_rect.mRight << ", " << bottom_rect.mBottom << llendl;
+ llinfos << "Merov debug : draw left rect = " << left_rect.mLeft << ", " << left_rect.mTop << ", " << left_rect.mRight << ", " << left_rect.mBottom << llendl;
+ llinfos << "Merov debug : draw right rect = " << right_rect.mLeft << ", " << right_rect.mTop << ", " << right_rect.mRight << ", " << right_rect.mBottom << llendl;
debug_print = false;
}
+ // Debug draw
+ gl_rect_2d(getLocalRect(), LLColor4::blue, TRUE);
+ gl_rect_2d(bottom_rect, LLColor4::red, TRUE);
+ gl_rect_2d(left_rect, LLColor4::green, TRUE);
+ gl_rect_2d(right_rect, LLColor4::yellow, TRUE);
+
LLUICtrl::draw();
}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index cc9e17409f..148b80e817 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1858,7 +1858,7 @@
Type
Boolean
Value
- 1
+ 0
Cursor3D
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 1055fd373b..d197782eed 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1783,10 +1783,17 @@ void LLViewerWindow::initBase()
// *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
if (gSavedSettings.getBOOL("DebugToolbarFUI"))
{
- gToolBarView = main_view->getChild("Toolbar View");
+ llinfos << "Merov debug : Creating the toolbar view" << llendl;
+ // Get a pointer to the toolbar view holder
+ LLPanel* panel_holder = main_view->getChild("toolbar_view_holder");
+ llinfos << "Merov debug : panel_holder = " << panel_holder << llendl;
+ // Load the toolbar view from file
+ gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", NULL, LLPanel::child_registry_t::instance());
+ llinfos << "Merov debug : gToolBarView = " << gToolBarView << llendl;
+ // Attach it to the toolbar view holder
+ panel_holder->addChild(gToolBarView);
}
-
// Constrain floaters to inside the menu and status bar regions.
gFloaterView = main_view->getChild("Floater View");
gFloaterView->setFloaterSnapView(main_view->getChild("floater_snap_region")->getHandle());
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 54badb1386..a21c988bb8 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -162,41 +162,15 @@
top="0"
width="1024"/>
-
-
-
-
-
-
-
+
+
+
+
+
+
+
--
cgit v1.3
From a2d08a6d80c4be7456d30f728da1838e63eb397f Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 22 Sep 2011 00:10:57 -0500
Subject: SH-2244 Fix "RenderGLCoreProfile" actually make a core profile
context and modify viewer to run under said context without generating
errors.
---
indra/llrender/llfontgl.cpp | 2 +-
indra/llrender/llgl.cpp | 102 ++++++++++++++--
indra/llrender/llgl.h | 2 +
indra/llrender/llglheaders.h | 13 ++
indra/llrender/llglslshader.cpp | 7 ++
indra/llrender/llimagegl.cpp | 99 +++++++++++++--
indra/llrender/llrender.cpp | 205 +++++++++++++++++++++++++++++---
indra/llrender/llrender.h | 1 +
indra/llrender/llvertexbuffer.cpp | 191 +++++++++++++++++++++++------
indra/llrender/llvertexbuffer.h | 10 +-
indra/llwindow/llwindowwin32.cpp | 61 +++++-----
indra/newview/app_settings/settings.xml | 2 +-
indra/newview/lldrawpoolterrain.cpp | 7 +-
indra/newview/llspatialpartition.cpp | 1 -
indra/newview/llviewerjointmesh.cpp | 2 +-
indra/newview/llviewershadermgr.cpp | 14 +++
indra/newview/llvoavatarself.cpp | 85 +------------
indra/newview/llvoavatarself.h | 3 -
indra/newview/llvowlsky.cpp | 10 +-
indra/newview/pipeline.cpp | 45 +------
20 files changed, 615 insertions(+), 247 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 607473d416..54f72d103e 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -329,7 +329,7 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
if (glyph_count >= GLYPH_BATCH_SIZE)
{
- gGL.begin(LLRender::QUADS);
+ gGL.begin(LLRender::TRIANGLES);
{
gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4);
}
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 718de346f6..6875674e79 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -67,6 +67,22 @@ static const std::string HEADLESS_VERSION_STRING("1.0");
std::ofstream gFailLog;
+void APIENTRY gl_debug_callback(GLenum source,
+ GLenum type,
+ GLuint id,
+ GLenum severity,
+ GLsizei length,
+ const GLchar* message,
+ GLvoid* userParam)
+{
+ llwarns << "----- GL ERROR --------" << llendl;
+ llwarns << "Type: " << std::hex << type << llendl;
+ llwarns << "ID: " << std::hex << id << llendl;
+ llwarns << "Severity: " << std::hex << severity << llendl;
+ llwarns << "Message: " << message << llendl;
+ llwarns << "-----------------------" << llendl;
+}
+
void ll_init_fail_log(std::string filename)
{
gFailLog.open(filename.c_str());
@@ -110,6 +126,9 @@ std::list LLGLUpdate::sGLQ;
#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS) && !LL_MESA_HEADLESS
// ATI prototypes
+
+PFNGLGETSTRINGIPROC glGetStringi = NULL;
+
// vertex blending prototypes
PFNGLWEIGHTPOINTERARBPROC glWeightPointerARB = NULL;
PFNGLVERTEXBLENDARBPROC glVertexBlendARB = NULL;
@@ -128,6 +147,12 @@ PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB = NULL;
PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB = NULL;
PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB = NULL;
+//GL_ARB_vertex_array_object
+PFNGLBINDVERTEXARRAYPROC glBindVertexArray = NULL;
+PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays = NULL;
+PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = NULL;
+PFNGLISVERTEXARRAYPROC glIsVertexArray = NULL;
+
// GL_ARB_map_buffer_range
PFNGLMAPBUFFERRANGEPROC glMapBufferRange = NULL;
PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange = NULL;
@@ -197,10 +222,16 @@ PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample = NULL;
PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer = NULL;
//GL_ARB_texture_multisample
-PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
-PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
-PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
-PFNGLSAMPLEMASKIPROC glSampleMaski;
+PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample = NULL;
+PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample = NULL;
+PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv = NULL;
+PFNGLSAMPLEMASKIPROC glSampleMaski = NULL;
+
+//GL_ARB_debug_output
+PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB = NULL;
+PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB = NULL;
+PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB = NULL;
+PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB = NULL;
// GL_EXT_blend_func_separate
PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT = NULL;
@@ -353,6 +384,7 @@ LLGLManager::LLGLManager() :
mHasBlendFuncSeparate(FALSE),
mHasSync(FALSE),
mHasVertexBufferObject(FALSE),
+ mHasVertexArrayObject(FALSE),
mHasMapBufferRange(FALSE),
mHasFlushBufferRange(FALSE),
mHasPBuffer(FALSE),
@@ -374,6 +406,7 @@ LLGLManager::LLGLManager() :
mHasAnisotropic(FALSE),
mHasARBEnvCombine(FALSE),
mHasCubeMap(FALSE),
+ mHasDebugOutput(FALSE),
mIsATI(FALSE),
mIsNVIDIA(FALSE),
@@ -451,13 +484,39 @@ bool LLGLManager::initGL()
LL_ERRS("RenderInit") << "Calling init on LLGLManager after already initialized!" << LL_ENDL;
}
- GLint alpha_bits;
- glGetIntegerv( GL_ALPHA_BITS, &alpha_bits );
- if( 8 != alpha_bits )
+ if (!glGetStringi)
{
- LL_WARNS("RenderInit") << "Frame buffer has less than 8 bits of alpha. Avatar texture compositing will fail." << LL_ENDL;
+ glGetStringi = (PFNGLGETSTRINGIPROC) GLH_EXT_GET_PROC_ADDRESS("glGetStringi");
}
+ //reload extensions string (may have changed after using wglCreateContextAttrib)
+ if (glGetStringi)
+ {
+ std::stringstream str;
+
+ GLint count = 0;
+ glGetIntegerv(GL_NUM_EXTENSIONS, &count);
+ for (GLint i = 0; i < count; ++i)
+ {
+ str << (const char*) glGetStringi(GL_EXTENSIONS, i) << " ";
+ }
+
+#if LL_WINDOWS
+ {
+ PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = 0;
+ wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB");
+ if(wglGetExtensionsStringARB)
+ {
+ str << (const char*) wglGetExtensionsStringARB(wglGetCurrentDC());
+ }
+ }
+#endif
+ free(gGLHExts.mSysExts);
+ std::string extensions = str.str();
+ gGLHExts.mSysExts = strdup(extensions.c_str());
+
+ }
+
// Extract video card strings and convert to upper case to
// work around driver-to-driver variation in capitalization.
mGLVendor = std::string((const char *)glGetString(GL_VENDOR));
@@ -595,6 +654,12 @@ bool LLGLManager::initGL()
glGetIntegerv(GL_MAX_SAMPLE_MASK_WORDS, &mMaxSampleMaskWords);
}
+ if (mHasDebugOutput && gDebugGL)
+ { //setup debug output callback
+ glDebugMessageCallbackARB((GLDEBUGPROCARB) gl_debug_callback, NULL);
+ glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
+ }
+
//HACK always disable texture multisample, use FXAA instead
mHasTextureMultisample = FALSE;
#if LL_WINDOWS
@@ -789,7 +854,7 @@ void LLGLManager::initExtensions()
mHasVertexShader = FALSE;
mHasFragmentShader = FALSE;
mHasTextureRectangle = FALSE;
-#else // LL_MESA_HEADLESS
+#else // LL_MESA_HEADLESS //important, gGLHExts.mSysExts is uninitialized until after glh_init_extensions is called
mHasMultitexture = glh_init_extensions("GL_ARB_multitexture");
mHasATIMemInfo = ExtensionExists("GL_ATI_meminfo", gGLHExts.mSysExts);
mHasNVXMemInfo = ExtensionExists("GL_NVX_gpu_memory_info", gGLHExts.mSysExts);
@@ -803,6 +868,7 @@ void LLGLManager::initExtensions()
mHasOcclusionQuery = ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts);
mHasOcclusionQuery2 = ExtensionExists("GL_ARB_occlusion_query2", gGLHExts.mSysExts);
mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts);
+ mHasVertexArrayObject = ExtensionExists("GL_ARB_vertex_array_object", gGLHExts.mSysExts);
mHasSync = ExtensionExists("GL_ARB_sync", gGLHExts.mSysExts);
mHasMapBufferRange = ExtensionExists("GL_ARB_map_buffer_range", gGLHExts.mSysExts);
mHasFlushBufferRange = ExtensionExists("GL_APPLE_flush_buffer_range", gGLHExts.mSysExts);
@@ -821,6 +887,7 @@ void LLGLManager::initExtensions()
mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts);
mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts);
mHasTextureMultisample = ExtensionExists("GL_ARB_texture_multisample", gGLHExts.mSysExts);
+ mHasDebugOutput = ExtensionExists("GL_ARB_debug_output", gGLHExts.mSysExts);
#if !LL_DARWIN
mHasPointParameters = !mIsATI && ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts);
#endif
@@ -1000,6 +1067,13 @@ void LLGLManager::initExtensions()
mHasVertexBufferObject = FALSE;
}
}
+ if (mHasVertexArrayObject)
+ {
+ glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC) GLH_EXT_GET_PROC_ADDRESS("glBindVertexArray");
+ glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteVertexArrays");
+ glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenVertexArrays");
+ glIsVertexArray = (PFNGLISVERTEXARRAYPROC) GLH_EXT_GET_PROC_ADDRESS("glIsVertexArray");
+ }
if (mHasSync)
{
glFenceSync = (PFNGLFENCESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glFenceSync");
@@ -1054,6 +1128,13 @@ void LLGLManager::initExtensions()
glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetMultisamplefv");
glSampleMaski = (PFNGLSAMPLEMASKIPROC) GLH_EXT_GET_PROC_ADDRESS("glSampleMaski");
}
+ if (mHasDebugOutput)
+ {
+ glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageControlARB");
+ glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageInsertARB");
+ glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageCallbackARB");
+ glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetDebugMessageLogARB");
+ }
#if (!LL_LINUX && !LL_SOLARIS) || LL_LINUX_NV_GL_HEADERS
// This is expected to be a static symbol on Linux GL implementations, except if we use the nvidia headers - bah
glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");
@@ -1341,9 +1422,6 @@ void LLGLState::initClass()
//make sure multisample defaults to disabled
sStateMap[GL_MULTISAMPLE_ARB] = GL_FALSE;
glDisable(GL_MULTISAMPLE_ARB);
-
- sStateMap[GL_MULTISAMPLE_ARB] = GL_FALSE;
- glDisable(GL_MULTISAMPLE_ARB);
}
//static
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index 495e523c31..dee7ec0739 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -88,6 +88,7 @@ public:
// ARB Extensions
BOOL mHasVertexBufferObject;
+ BOOL mHasVertexArrayObject;
BOOL mHasSync;
BOOL mHasMapBufferRange;
BOOL mHasFlushBufferRange;
@@ -112,6 +113,7 @@ public:
BOOL mHasAnisotropic;
BOOL mHasARBEnvCombine;
BOOL mHasCubeMap;
+ BOOL mHasDebugOutput;
// Vendor-specific extensions
BOOL mIsATI;
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index f319009bc8..ede1983651 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -533,6 +533,7 @@ extern PFNGLSAMPLEMASKIPROC glSampleMaski;
// WGL_ARB_create_context
extern PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
+extern PFNGLGETSTRINGIPROC glGetStringi;
// GL_ARB_vertex_buffer_object
extern PFNGLBINDBUFFERARBPROC glBindBufferARB;
@@ -547,6 +548,12 @@ extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB;
extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB;
extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB;
+// GL_ARB_vertex_array_object
+extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
+extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
+extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
+extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
+
// GL_ARB_sync
extern PFNGLFENCESYNCPROC glFenceSync;
extern PFNGLISSYNCPROC glIsSync;
@@ -737,6 +744,12 @@ extern PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
extern PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
extern PFNGLSAMPLEMASKIPROC glSampleMaski;
+//GL_ARB_debug_output
+extern PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
+extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
+extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
+extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
+
#elif LL_DARWIN
//----------------------------------------------------------------------------
// LL_DARWIN
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 0dcf563491..da4658dc03 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -243,6 +243,13 @@ void LLGLSLShader::attachObjects(GLhandleARB* objects, S32 count)
BOOL LLGLSLShader::mapAttributes(const vector * attributes)
{
+ //before linking, make sure reserved attributes always have consistent locations
+ for (U32 i = 0; i < LLShaderMgr::instance()->mReservedAttribs.size(); i++)
+ {
+ const char* name = LLShaderMgr::instance()->mReservedAttribs[i].c_str();
+ glBindAttribLocationARB(mProgramObject, i, (const GLcharARB *) name);
+ }
+
//link the program
BOOL res = link();
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 0fb4a7784a..4da796dd1e 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -725,7 +725,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
}
else if (!is_compressed)
{
- if (mAutoGenMips) //auto-generating mipmaps is deprecated in GL 3.0
+ if (mAutoGenMips && !LLRender::sGLCoreProfile) //auto-generating mipmaps is deprecated in GL 3.0
{
glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_GENERATE_MIPMAP_SGIS, TRUE);
stop_glerror();
@@ -877,6 +877,9 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)
{
+ //not compatible with core GL profile
+ llassert(!LLRender::sGLCoreProfile);
+
if (gGLManager.mIsDisabled)
{
llwarns << "Trying to create a texture while GL is disabled!" << llendl;
@@ -903,29 +906,29 @@ BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)
{
switch (mComponents)
{
- case 1:
+ case 1:
// Use luminance alpha (for fonts)
mFormatInternal = GL_LUMINANCE8;
mFormatPrimary = GL_LUMINANCE;
mFormatType = GL_UNSIGNED_BYTE;
break;
- case 2:
+ case 2:
// Use luminance alpha (for fonts)
mFormatInternal = GL_LUMINANCE8_ALPHA8;
mFormatPrimary = GL_LUMINANCE_ALPHA;
mFormatType = GL_UNSIGNED_BYTE;
break;
- case 3:
+ case 3:
mFormatInternal = GL_RGB8;
mFormatPrimary = GL_RGB;
mFormatType = GL_UNSIGNED_BYTE;
break;
- case 4:
+ case 4:
mFormatInternal = GL_RGBA8;
mFormatPrimary = GL_RGBA;
mFormatType = GL_UNSIGNED_BYTE;
break;
- default:
+ default:
llerrs << "Bad number of components for texture: " << (U32)getComponents() << llendl;
}
}
@@ -1101,8 +1104,76 @@ void LLImageGL::deleteTextures(S32 numTextures, U32 *textures, bool immediate)
// static
void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 width, S32 height, U32 pixformat, U32 pixtype, const void *pixels)
{
- glTexImage2D(target, miplevel, intformat, width, height, 0, pixformat, pixtype, pixels);
+ bool use_scratch = false;
+ U32* scratch = NULL;
+ if (LLRender::sGLCoreProfile)
+ {
+ if (intformat == GL_ALPHA8 && pixformat == GL_ALPHA && pixtype == GL_UNSIGNED_BYTE)
+ { //GL_ALPHA is deprecated, convert to RGBA
+ use_scratch = true;
+ scratch = new U32[width*height];
+
+ U32 pixel_count = (U32) (width*height);
+ for (U32 i = 0; i < pixel_count; i++)
+ {
+ U8* pix = (U8*) &scratch[i];
+ pix[0] = pix[1] = pix[2] = 0;
+ pix[3] = ((U8*) pixels)[i];
+ }
+
+ pixformat = GL_RGBA;
+ intformat = GL_RGBA8;
+ }
+
+ if (intformat == GL_LUMINANCE8_ALPHA8 && pixformat == GL_LUMINANCE_ALPHA && pixtype == GL_UNSIGNED_BYTE)
+ { //GL_LUMINANCE_ALPHA is deprecated, convert to RGBA
+ use_scratch = true;
+ scratch = new U32[width*height];
+
+ U32 pixel_count = (U32) (width*height);
+ for (U32 i = 0; i < pixel_count; i++)
+ {
+ U8 lum = ((U8*) pixels)[i*2+0];
+ U8 alpha = ((U8*) pixels)[i*2+1];
+
+ U8* pix = (U8*) &scratch[i];
+ pix[0] = pix[1] = pix[2] = lum;
+ pix[3] = alpha;
+ }
+
+ pixformat = GL_RGBA;
+ intformat = GL_RGBA8;
+ }
+
+ if (intformat == GL_LUMINANCE8 && pixformat == GL_LUMINANCE && pixtype == GL_UNSIGNED_BYTE)
+ { //GL_LUMINANCE_ALPHA is deprecated, convert to RGB
+ use_scratch = true;
+ scratch = new U32[width*height];
+
+ U32 pixel_count = (U32) (width*height);
+ for (U32 i = 0; i < pixel_count; i++)
+ {
+ U8 lum = ((U8*) pixels)[i*2+0];
+ U8 alpha = ((U8*) pixels)[i*2+1];
+
+ U8* pix = (U8*) &scratch[i];
+ pix[0] = pix[1] = pix[2] = lum;
+ pix[3] = 255;
+ }
+
+ pixformat = GL_RGBA;
+ intformat = GL_RGB8;
+ }
+ }
+
+ stop_glerror();
+ glTexImage2D(target, miplevel, intformat, width, height, 0, pixformat, pixtype, use_scratch ? scratch : pixels);
stop_glerror();
+
+ if (use_scratch)
+ {
+ delete [] scratch;
+ }
}
//create an empty GL texture: just create a texture name
@@ -1169,29 +1240,29 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
{
switch (mComponents)
{
- case 1:
+ case 1:
// Use luminance alpha (for fonts)
mFormatInternal = GL_LUMINANCE8;
mFormatPrimary = GL_LUMINANCE;
mFormatType = GL_UNSIGNED_BYTE;
break;
- case 2:
+ case 2:
// Use luminance alpha (for fonts)
mFormatInternal = GL_LUMINANCE8_ALPHA8;
mFormatPrimary = GL_LUMINANCE_ALPHA;
mFormatType = GL_UNSIGNED_BYTE;
break;
- case 3:
+ case 3:
mFormatInternal = GL_RGB8;
mFormatPrimary = GL_RGB;
mFormatType = GL_UNSIGNED_BYTE;
break;
- case 4:
+ case 4:
mFormatInternal = GL_RGBA8;
mFormatPrimary = GL_RGBA;
mFormatType = GL_UNSIGNED_BYTE;
break;
- default:
+ default:
llerrs << "Bad number of components for texture: " << (U32)getComponents() << llendl;
}
@@ -1214,6 +1285,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_hasmips, S32 usename)
{
llassert(data_in);
+ stop_glerror();
if (discard_level < 0)
{
@@ -1242,8 +1314,11 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_
stop_glerror();
{
llverify(gGL.getTexUnit(0)->bind(this));
+ stop_glerror();
glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_TEXTURE_BASE_LEVEL, 0);
+ stop_glerror();
glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_TEXTURE_MAX_LEVEL, mMaxDiscardLevel-discard_level);
+ stop_glerror();
}
}
if (!mTexName)
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index efeb7709a4..daeb58b279 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -179,10 +179,13 @@ void LLTexUnit::enable(eTextureType type)
if ( (mCurrTexType != type || gGL.mDirty) && (type != TT_NONE) )
{
+ stop_glerror();
activate();
+ stop_glerror();
if (mCurrTexType != TT_NONE && !gGL.mDirty)
{
disable(); // Force a disable of a previous texture type if it's enabled.
+ stop_glerror();
}
mCurrTexType = type;
@@ -191,7 +194,9 @@ void LLTexUnit::enable(eTextureType type)
type != LLTexUnit::TT_MULTISAMPLE_TEXTURE &&
mIndex < gGLManager.mNumTextureUnits)
{
+ stop_glerror();
glEnable(sGLTextureType[type]);
+ stop_glerror();
}
}
}
@@ -287,26 +292,35 @@ bool LLTexUnit::bind(LLImageGL* texture, bool for_rendering, bool forceBind)
{
return bind(LLImageGL::sDefaultGLTexture) ;
}
+ stop_glerror();
return false ;
}
if ((mCurrTexture != texture->getTexName()) || forceBind)
{
gGL.flush();
+ stop_glerror();
activate();
+ stop_glerror();
enable(texture->getTarget());
+ stop_glerror();
mCurrTexture = texture->getTexName();
glBindTexture(sGLTextureType[texture->getTarget()], mCurrTexture);
+ stop_glerror();
texture->updateBindStats(texture->mTextureMemory);
mHasMipMaps = texture->mHasMipMaps;
if (texture->mTexOptionsDirty)
{
+ stop_glerror();
texture->mTexOptionsDirty = false;
setTextureAddressMode(texture->mAddressMode);
setTextureFilteringOption(texture->mFilterOption);
+ stop_glerror();
}
}
+ stop_glerror();
+
return true;
}
@@ -989,6 +1003,7 @@ void LLLightState::setSpotDirection(const LLVector3& direction)
LLRender::LLRender()
: mDirty(false),
mCount(0),
+ mQuadCycle(0),
mMode(LLRender::TRIANGLES),
mCurrTextureUnitIndex(0),
mMaxAnisotropy(0.f)
@@ -1678,6 +1693,11 @@ void LLRender::begin(const GLuint& mode)
{
if (mode != mMode)
{
+ if (mode == LLRender::QUADS)
+ {
+ mQuadCycle = 1;
+ }
+
if (mMode == LLRender::QUADS ||
mMode == LLRender::LINES ||
mMode == LLRender::TRIANGLES ||
@@ -1765,7 +1785,7 @@ void LLRender::flush()
if (gDebugGL)
{
- if (mMode == LLRender::QUADS)
+ if (mMode == LLRender::QUADS && !sGLCoreProfile)
{
if (mCount%4 != 0)
{
@@ -1794,12 +1814,30 @@ void LLRender::flush()
U32 count = mCount;
mCount = 0;
+ if (mBuffer->useVBOs() && !mBuffer->isLocked())
+ { //hack to only flush the part of the buffer that was updated (relies on stream draw using buffersubdata)
+ mBuffer->getVertexStrider(mVerticesp, 0, count);
+ mBuffer->getTexCoord0Strider(mTexcoordsp, 0, count);
+ mBuffer->getColorStrider(mColorsp, 0, count);
+ }
+
+ //only flush the part of the
mBuffer->setBuffer(immediate_mask);
- mBuffer->drawArrays(mMode, 0, count);
+
+ if (mMode == LLRender::QUADS && sGLCoreProfile)
+ {
+ mBuffer->drawArrays(LLRender::TRIANGLES, 0, count);
+ mQuadCycle = 1;
+ }
+ else
+ {
+ mBuffer->drawArrays(mMode, 0, count);
+ }
mVerticesp[0] = mVerticesp[count];
mTexcoordsp[0] = mTexcoordsp[count];
mColorsp[0] = mColorsp[count];
+
mCount = 0;
}
}
@@ -1823,10 +1861,29 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
mVerticesp[mCount] = vert;
}
+ if (mMode == LLRender::QUADS && LLRender::sGLCoreProfile)
+ {
+ mQuadCycle++;
+ if (mQuadCycle == 4)
+ { //copy two vertices so fourth quad element will add a triangle
+ mQuadCycle = 0;
+
+ mCount++;
+ mVerticesp[mCount] = mVerticesp[mCount-3];
+ mColorsp[mCount] = mColorsp[mCount-3];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-3];
+
+ mCount++;
+ mVerticesp[mCount] = mVerticesp[mCount-2];
+ mColorsp[mCount] = mColorsp[mCount-2];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-2];
+ }
+ }
+
mCount++;
mVerticesp[mCount] = mVerticesp[mCount-1];
mColorsp[mCount] = mColorsp[mCount-1];
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
}
void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
@@ -1837,13 +1894,50 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
return;
}
- for (S32 i = 0; i < vert_count; i++)
+ if (sGLCoreProfile && mMode == LLRender::QUADS)
+ { //quads are deprecated, convert to triangle list
+ S32 i = 0;
+
+ while (i < vert_count)
+ {
+ //read first three
+ mVerticesp[mCount++] = verts[i++];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ mVerticesp[mCount++] = verts[i++];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ mVerticesp[mCount++] = verts[i++];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ //copy two
+ mVerticesp[mCount++] = verts[i-3];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ mVerticesp[mCount++] = verts[i-1];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ //copy last one
+ mVerticesp[mCount++] = verts[i++];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+ }
+ }
+ else
{
- mVerticesp[mCount] = verts[i];
+ for (S32 i = 0; i < vert_count; i++)
+ {
+ mVerticesp[mCount] = verts[i];
- mCount++;
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
- mColorsp[mCount] = mColorsp[mCount-1];
+ mCount++;
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+ }
}
mVerticesp[mCount] = mVerticesp[mCount-1];
@@ -1857,13 +1951,50 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 v
return;
}
- for (S32 i = 0; i < vert_count; i++)
+ if (sGLCoreProfile && mMode == LLRender::QUADS)
+ { //quads are deprecated, convert to triangle list
+ S32 i = 0;
+
+ while (i < vert_count)
+ {
+ //read first three
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount++] = uvs[i++];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount++] = uvs[i++];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount++] = uvs[i++];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ //copy last two
+ mVerticesp[mCount] = verts[i-3];
+ mTexcoordsp[mCount++] = uvs[i-3];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ mVerticesp[mCount] = verts[i-1];
+ mTexcoordsp[mCount++] = uvs[i-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+
+ //copy last one
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount++] = uvs[i++];
+ mColorsp[mCount] = mColorsp[mCount-1];
+ }
+ }
+ else
{
- mVerticesp[mCount] = verts[i];
- mTexcoordsp[mCount] = uvs[i];
+ for (S32 i = 0; i < vert_count; i++)
+ {
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount] = uvs[i];
- mCount++;
- mColorsp[mCount] = mColorsp[mCount-1];
+ mCount++;
+ mColorsp[mCount] = mColorsp[mCount-1];
+ }
}
mVerticesp[mCount] = mVerticesp[mCount-1];
@@ -1878,13 +2009,51 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLCol
return;
}
- for (S32 i = 0; i < vert_count; i++)
+
+ if (sGLCoreProfile && mMode == LLRender::QUADS)
+ { //quads are deprecated, convert to triangle list
+ S32 i = 0;
+
+ while (i < vert_count)
+ {
+ //read first three
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount] = uvs[i];
+ mColorsp[mCount++] = colors[i++];
+
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount] = uvs[i];
+ mColorsp[mCount++] = colors[i++];
+
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount] = uvs[i];
+ mColorsp[mCount++] = colors[i++];
+
+ //copy last two
+ mVerticesp[mCount] = verts[i-3];
+ mTexcoordsp[mCount] = uvs[i-3];
+ mColorsp[mCount++] = colors[i-3];
+
+ mVerticesp[mCount] = verts[i-1];
+ mTexcoordsp[mCount] = uvs[i-1];
+ mColorsp[mCount++] = colors[i-1];
+
+ //copy last one
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount] = uvs[i];
+ mColorsp[mCount++] = colors[i++];
+ }
+ }
+ else
{
- mVerticesp[mCount] = verts[i];
- mTexcoordsp[mCount] = uvs[i];
- mColorsp[mCount] = colors[i];
+ for (S32 i = 0; i < vert_count; i++)
+ {
+ mVerticesp[mCount] = verts[i];
+ mTexcoordsp[mCount] = uvs[i];
+ mColorsp[mCount] = colors[i];
- mCount++;
+ mCount++;
+ }
}
mVerticesp[mCount] = mVerticesp[mCount-1];
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
index 44d9ec1f15..61e503d384 100644
--- a/indra/llrender/llrender.h
+++ b/indra/llrender/llrender.h
@@ -442,6 +442,7 @@ private:
LLColor4 mAmbientLightColor;
bool mDirty;
+ U32 mQuadCycle;
U32 mCount;
U32 mMode;
U32 mCurrTextureUnitIndex;
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 090da765ac..f822a7babd 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -55,6 +55,7 @@ S32 LLVertexBuffer::sMappedCount = 0;
BOOL LLVertexBuffer::sDisableVBOMapping = FALSE ;
BOOL LLVertexBuffer::sEnableVBOs = TRUE;
U32 LLVertexBuffer::sGLRenderBuffer = 0;
+U32 LLVertexBuffer::sGLRenderArray = 0;
U32 LLVertexBuffer::sGLRenderIndices = 0;
U32 LLVertexBuffer::sLastMask = 0;
BOOL LLVertexBuffer::sVBOActive = FALSE;
@@ -149,7 +150,7 @@ U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] =
//static
-void LLVertexBuffer::setupClientArrays(U32 data_mask)
+void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
{
/*if (LLGLImmediate::sStarted)
{
@@ -158,13 +159,10 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
- if (sLastMask != data_mask)
+ if (ref_mask != data_mask)
{
llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
- static LLGLSLShader* last_shader = LLGLSLShader::sCurBoundShaderPtr;
- llassert(sLastMask == 0 || last_shader == shader);
- last_shader = shader;
-
+
U32 mask[] =
{
MAP_VERTEX,
@@ -213,7 +211,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
loc = shader->getAttribLocation(type[i]);
}
- if (sLastMask & mask[i])
+ if (ref_mask & mask[i])
{ //was enabled
if (!(data_mask & mask[i]))
{ //needs to be disabled
@@ -297,7 +295,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
loc = shader->getAttribLocation(type_tc[i]);
}
- if (sLastMask & map_tc[i])
+ if (ref_mask & map_tc[i])
{
if (!(data_mask & map_tc[i]))
{ //disable
@@ -330,7 +328,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
if (!shader)
{
- if (sLastMask & MAP_BINORMAL)
+ if (ref_mask & MAP_BINORMAL)
{
if (!(data_mask & MAP_BINORMAL))
{
@@ -347,7 +345,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
}
}
- sLastMask = data_mask;
+ ref_mask = data_mask;
}
}
@@ -589,6 +587,12 @@ void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping)
//static
void LLVertexBuffer::unbind()
{
+ if (sGLRenderArray)
+ {
+ glBindVertexArray(0);
+ sGLRenderArray = 0;
+ }
+
if (sVBOActive)
{
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
@@ -640,6 +644,8 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
mRequestedNumIndices(-1),
mUsage(usage),
mGLBuffer(0),
+ mGLArray(0),
+ mLastMask(0),
mGLIndices(0),
mMappedData(NULL),
mMappedIndexData(NULL),
@@ -669,12 +675,23 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
mUsage = GL_STREAM_DRAW_ARB;
}
+ if (mUsage == 0 && LLRender::sGLCoreProfile)
+ { //MUST use VBOs for all rendering
+ mUsage = GL_STREAM_DRAW_ARB;
+ }
+
//zero out offsets
for (U32 i = 0; i < TYPE_MAX; i++)
{
mOffsets[i] = 0;
}
+ //initialize cached attrib pointers
+ for (U32 i = 0; i < LL_MAX_VERTEX_ATTRIB_LOCATION; i++)
+ {
+ mLastPointer[i] = (void*) 0xFFFFFFFF;
+ }
+
mTypeMask = typemask;
mSize = 0;
mAlignedOffset = 0;
@@ -732,6 +749,12 @@ LLVertexBuffer::~LLVertexBuffer()
LLMemType mt2(LLMemType::MTYPE_VERTEX_DESTRUCTOR);
destroyGLBuffer();
destroyGLIndices();
+
+ if (mGLArray)
+ {
+ glDeleteVertexArrays(1, &mGLArray);
+ }
+
sCount--;
if (mFence)
@@ -1041,6 +1064,11 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
{
createGLBuffer();
createGLIndices();
+
+ if (gGLManager.mHasVertexArrayObject && useVBOs())
+ {
+ glGenVertexArrays(1, &mGLArray);
+ }
}
sAllocatedBytes += getSize() + getIndicesSize();
@@ -1762,7 +1790,8 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
{
LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER);
//set up pointers if the data mask is different ...
- BOOL setup = (sLastMask != data_mask);
+ U32& ref_mask = mGLArray ? mLastMask : sLastMask;
+ BOOL setup = (ref_mask != data_mask);
if (gDebugGL && data_mask != 0)
{
@@ -1794,15 +1823,19 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
if (useVBOs())
{
+ if (mGLArray && mGLArray != sGLRenderArray)
+ {
+ glBindVertexArray(mGLArray);
+ sGLRenderArray = mGLArray;
+ }
+
if (mGLBuffer && (mGLBuffer != sGLRenderBuffer || !sVBOActive))
{
/*if (sMapped)
{
llerrs << "VBO bound while another VBO mapped!" << llendl;
}*/
- stop_glerror();
glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer);
- stop_glerror();
sBindCount++;
sVBOActive = TRUE;
setup = TRUE; // ... or the bound buffer changed
@@ -1813,13 +1846,12 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
{
llerrs << "VBO bound while another VBO mapped!" << llendl;
}*/
- stop_glerror();
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);
stop_glerror();
sBindCount++;
sIBOActive = TRUE;
}
-
+
BOOL error = FALSE;
if (gDebugGL)
{
@@ -1957,7 +1989,10 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
}
}
- setupClientArrays(data_mask);
+ if (data_mask)
+ {
+ setupClientArrays(data_mask, ref_mask);
+ }
if (mGLIndices)
{
@@ -1998,10 +2033,18 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
{
loc = shader->getAttribLocation(TYPE_NORMAL);
}
-
+
if (loc >= 0)
{
- glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
+ void* ptr = (void*)(base + mOffsets[TYPE_NORMAL]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2018,7 +2061,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
+ void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD3]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2037,7 +2088,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
+ void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD2]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2056,7 +2115,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
+ void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD1]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2075,7 +2142,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
+ void* ptr = (void*)(base + mOffsets[TYPE_BINORMAL]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2094,7 +2169,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
+ void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD0]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2111,7 +2194,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
+ void* ptr = (void*)(base + mOffsets[TYPE_COLOR]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
else if (!shader)
{
@@ -2128,7 +2219,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
if (loc >= 0)
{
- glVertexAttribPointerARB(loc, 1, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], (void*)(base + mOffsets[TYPE_EMISSIVE]));
+ void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 1, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
}
if (data_mask & MAP_WEIGHT)
@@ -2139,13 +2238,18 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
loc = shader->getAttribLocation(TYPE_WEIGHT);
}
- if (loc < 0)
- { //legacy behavior, some shaders have weight hardcoded to location 1
- loc = 1;
+ if (loc > -1)
+ {
+ void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
-
- glVertexAttribPointerARB(loc, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], (void*)(base + mOffsets[TYPE_WEIGHT]));
-
}
if (data_mask & MAP_WEIGHT4)
@@ -2155,7 +2259,15 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
S32 loc = shader->getAttribLocation(TYPE_WEIGHT4);
if (loc > -1)
{
- glVertexAttribPointerARB(loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], (void*)(base+mOffsets[TYPE_WEIGHT4]));
+ void* ptr = (void*)(base+mOffsets[TYPE_WEIGHT4]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
}
}
@@ -2168,11 +2280,18 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
loc = shader->getAttribLocation(TYPE_CLOTHWEIGHT);
}
- if (loc < 0)
- { //legacy behavior, some shaders have weight hardcoded to location 4
- loc = 4;
+ if (loc > -1)
+ {
+ void* ptr = (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]);
+ if (mLastPointer[loc] != ptr)
+ {
+ glVertexAttribPointerARB(loc, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr);
+ }
+ if (mGLArray)
+ {
+ mLastPointer[loc] = ptr;
+ }
}
- glVertexAttribPointerARB(loc, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
}
if (data_mask & MAP_VERTEX)
{
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index 7aa5928524..60cfde39f5 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -38,6 +38,8 @@
#include
#include
+#define LL_MAX_VERTEX_ATTRIB_LOCATION 64
+
//============================================================================
// NOTES
// Threading:
@@ -49,7 +51,6 @@
//============================================================================
// gl name pools for dynamic and streaming buffers
-
class LLVBOPool : public LLGLNamePool
{
protected:
@@ -116,7 +117,7 @@ public:
static void initClass(bool use_vbo, bool no_vbo_mapping);
static void cleanupClass();
- static void setupClientArrays(U32 data_mask);
+ static void setupClientArrays(U32 data_mask, U32& ref_mask = LLVertexBuffer::sLastMask);
static void drawArrays(U32 mode, const std::vector& pos, const std::vector& norm);
static void drawElements(U32 mode, const LLVector4a* pos, const LLVector2* tc, S32 num_indices, const U16* indicesp);
@@ -271,6 +272,10 @@ protected:
S32 mUsage; // GL usage
U32 mGLBuffer; // GL VBO handle
U32 mGLIndices; // GL IBO handle
+ U32 mGLArray; // GL VAO handle
+ U32 mLastMask;
+ mutable void* mLastPointer[LL_MAX_VERTEX_ATTRIB_LOCATION];
+
U8* mMappedData; // pointer to currently mapped data (NULL if unmapped)
U8* mMappedIndexData; // pointer to currently mapped indices (NULL if unmapped)
BOOL mVertexLocked; // if TRUE, vertex buffer is being or has been written to in client memory
@@ -307,6 +312,7 @@ public:
static S32 sTypeSize[TYPE_MAX];
static U32 sGLMode[LLRender::NUM_MODES];
static U32 sGLRenderBuffer;
+ static U32 sGLRenderArray;
static U32 sGLRenderIndices;
static BOOL sVBOActive;
static BOOL sIBOActive;
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 2ba14f8f6e..bac23279cc 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -41,6 +41,7 @@
#include "llgl.h"
#include "llstring.h"
#include "lldir.h"
+#include "llglslshader.h"
// System includes
#include
@@ -1121,34 +1122,6 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
}
gGLManager.initWGL();
-
- if (wglCreateContextAttribsARB && LLRender::sGLCoreProfile)
- {
- S32 attribs[] =
- {
- WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
- WGL_CONTEXT_MINOR_VERSION_ARB, 0,
- WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
- 0
- };
-
- HGLRC res = wglCreateContextAttribsARB(mhDC, mhRC, attribs);
-
- if (!res)
- {
- attribs[1] = 3;
- attribs[3] = 1;
-
- res = wglCreateContextAttribsARB(mhDC, mhRC, attribs);
- }
-
- if (res)
- {
- wglMakeCurrent(mhDC, res);
- wglDeleteContext(mhRC);
- mhRC = res;
- }
- }
if (wglChoosePixelFormatARB)
{
@@ -1406,7 +1379,35 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
return FALSE;
}
- if (!(mhRC = wglCreateContext(mhDC)))
+ mhRC = 0;
+ if (wglCreateContextAttribsARB)
+ { //attempt to create a non-compatibility profile context
+ S32 attribs[] =
+ {
+ WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
+ WGL_CONTEXT_MINOR_VERSION_ARB, 0,
+ WGL_CONTEXT_PROFILE_MASK_ARB, LLRender::sGLCoreProfile ? WGL_CONTEXT_CORE_PROFILE_BIT_ARB : WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
+ WGL_CONTEXT_FLAGS_ARB, gDebugGL ? WGL_CONTEXT_DEBUG_BIT_ARB : 0,
+ 0
+ };
+
+ mhRC = wglCreateContextAttribsARB(mhDC, mhRC, attribs);
+
+ if (!mhRC)
+ {
+ attribs[1] = 3;
+ attribs[3] = 3;
+
+ mhRC = wglCreateContextAttribsARB(mhDC, mhRC, attribs);
+ }
+
+ if (mhRC)
+ { //success, disable fixed function calls
+ LLGLSLShader::sNoFixedFunction = true;
+ }
+ }
+
+ if (!mhRC && !(mhRC = wglCreateContext(mhDC)))
{
close();
OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
@@ -1426,7 +1427,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
return FALSE;
}
-
+
// Disable vertical sync for swap
if (disable_vsync && wglSwapIntervalEXT)
{
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 32d4097ff3..a8a7b165a3 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7681,7 +7681,7 @@
Type
Boolean
Value
- 0
+ 1
RenderDebugNormalScale
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 5078da02e3..d503d935d0 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -62,13 +62,16 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
LLFacePool(POOL_TERRAIN),
mTexturep(texturep)
{
+ U32 format = GL_ALPHA8;
+ U32 int_format = GL_ALPHA;
+
// Hack!
sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga",
TRUE, LLViewerTexture::BOOST_UI,
LLViewerTexture::FETCHED_TEXTURE,
- GL_ALPHA8, GL_ALPHA,
+ format, int_format,
LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
//gGL.getTexUnit(0)->bind(mAlphaRampImagep.get());
@@ -77,7 +80,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c",
TRUE, LLViewerTexture::BOOST_UI,
LLViewerTexture::FETCHED_TEXTURE,
- GL_ALPHA8, GL_ALPHA,
+ format, int_format,
LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
//gGL.getTexUnit(0)->bind(m2DAlphaRampImagep.get());
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 81d7fe70c1..db5e4a2fb5 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -261,7 +261,6 @@ void LLSpatialGroup::buildOcclusion()
{
if (mOcclusionVerts.isNull())
{
-
mOcclusionVerts = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX,
LLVertexBuffer::sUseStreamDraw ? mBufferUsage : 0); //if GL has a hard time with VBOs, don't use them for occlusion culling.
mOcclusionVerts->allocateBuffer(8, 64, true);
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 20ee475939..59835028a1 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -537,7 +537,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
stop_glerror();
- LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), mFace->getPool()->getVertexShaderLevel() > 0 ? 0.f : mShiny);
+ LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), (mFace->getPool()->getVertexShaderLevel() > 0 || LLGLSLShader::sNoFixedFunction) ? 0.f : mShiny);
//----------------------------------------------------------------
// setup current texture
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 23351fc994..d1d3334fed 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -443,6 +443,20 @@ void LLViewerShaderMgr::setShaders()
return;
}
+ if (LLRender::sGLCoreProfile)
+ {
+ if (!gSavedSettings.getBOOL("VertexShaderEnable"))
+ { //vertex shaders MUST be enabled to use core profile
+ gSavedSettings.setBOOL("VertexShaderEnable", TRUE);
+ }
+
+ if (!gSavedSettings.getBOOL("RenderTransparentWater"))
+ { //non-transparent water uses fixed function
+ gSavedSettings.setBOOL("RenderTransparentWater", TRUE);
+ }
+ }
+
+
//setup preprocessor definitions
LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")));
LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 59883e0bb1..581912f844 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2558,7 +2558,7 @@ void LLVOAvatarSelf::deleteScratchTextures()
LLImageGL::decTextureCounter(tex_size, 1, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
total_tex_size -= tex_size ;
}
- if( sScratchTexNames.checkData( GL_LUMINANCE_ALPHA ) )
+ if( sScratchTexNames.checkData( LLRender::sGLCoreProfile ? GL_RG : GL_LUMINANCE_ALPHA ) )
{
LLImageGL::decTextureCounter(tex_size, 2, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
total_tex_size -= 2 * tex_size ;
@@ -2600,89 +2600,6 @@ void LLVOAvatarSelf::deleteScratchTextures()
}
}
-BOOL LLVOAvatarSelf::bindScratchTexture( LLGLenum format )
-{
- U32 texture_bytes = 0;
- S32 components = 0;
- GLuint gl_name = getScratchTexName( format, components, &texture_bytes );
- if( gl_name )
- {
- gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, gl_name);
- stop_glerror();
-
- F32* last_bind_time = sScratchTexLastBindTime.getIfThere( format );
- if( last_bind_time )
- {
- if( *last_bind_time != LLImageGL::sLastFrameTime )
- {
- *last_bind_time = LLImageGL::sLastFrameTime;
- LLImageGL::updateBoundTexMem(texture_bytes, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
- }
- }
- else
- {
- LLImageGL::updateBoundTexMem(texture_bytes, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
- sScratchTexLastBindTime.addData( format, new F32(LLImageGL::sLastFrameTime) );
- }
- return TRUE;
- }
- return FALSE;
-}
-
-LLGLuint LLVOAvatarSelf::getScratchTexName( LLGLenum format, S32& components, U32* texture_bytes )
-{
- GLenum internal_format;
- switch( format )
- {
- case GL_LUMINANCE: components = 1; internal_format = GL_LUMINANCE8; break;
- case GL_ALPHA: components = 1; internal_format = GL_ALPHA8; break;
- case GL_LUMINANCE_ALPHA: components = 2; internal_format = GL_LUMINANCE8_ALPHA8; break;
- case GL_RGB: components = 3; internal_format = GL_RGB8; break;
- case GL_RGBA: components = 4; internal_format = GL_RGBA8; break;
- default: llassert(0); components = 4; internal_format = GL_RGBA8; break;
- }
-
- *texture_bytes = components * SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT;
-
- if( sScratchTexNames.checkData( format ) )
- {
- return *( sScratchTexNames.getData( format ) );
- }
-
- LLGLSUIDefault gls_ui;
-
- U32 name = 0;
- LLImageGL::generateTextures(1, &name );
- stop_glerror();
-
- gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, name);
- stop_glerror();
-
- LLImageGL::setManualImage(
- GL_TEXTURE_2D, 0, internal_format,
- SCRATCH_TEX_WIDTH, SCRATCH_TEX_HEIGHT,
- format, GL_UNSIGNED_BYTE, NULL );
- stop_glerror();
-
- gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
- stop_glerror();
-
- gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- stop_glerror();
-
- sScratchTexNames.addData( format, new LLGLuint( name ) );
-
- sScratchTexBytes += *texture_bytes;
- LLImageGL::sGlobalTextureMemoryInBytes += *texture_bytes;
-
- if(gAuditTexture)
- {
- LLImageGL::incTextureCounter(SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
- }
- return name;
-}
-
// static
void LLVOAvatarSelf::dumpScratchTextureByteCount()
{
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 51f06dee5f..74ff47a3e4 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -249,10 +249,7 @@ public:
// Scratch textures (used for compositing)
//--------------------------------------------------------------------
public:
- BOOL bindScratchTexture(LLGLenum format);
static void deleteScratchTextures();
-protected:
- LLGLuint getScratchTexName(LLGLenum format, S32& components, U32* texture_bytes);
private:
static S32 sScratchTexBytes;
static LLMap< LLGLenum, LLGLuint*> sScratchTexNames;
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index 39c9945fb4..824cb8a15f 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -485,7 +485,7 @@ void LLVOWLSky::drawStars(void)
if (mStarsVerts.notNull())
{
mStarsVerts->setBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK);
- mStarsVerts->drawArrays(LLRender::QUADS, 0, getStarsNumVerts()*4);
+ mStarsVerts->drawArrays(LLRender::TRIANGLES, 0, getStarsNumVerts()*4);
}
}
@@ -772,7 +772,7 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
if (mStarsVerts.isNull())
{
mStarsVerts = new LLVertexBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK, GL_DYNAMIC_DRAW);
- mStarsVerts->allocateBuffer(getStarsNumVerts()*4, 0, TRUE);
+ mStarsVerts->allocateBuffer(getStarsNumVerts()*6, 0, TRUE);
}
BOOL success = mStarsVerts->getVertexStrider(verticesp)
@@ -807,17 +807,23 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
*(verticesp++) = mStarVertices[vtx];
*(verticesp++) = mStarVertices[vtx]+left;
*(verticesp++) = mStarVertices[vtx]+left+up;
+ *(verticesp++) = mStarVertices[vtx]+left;
+ *(verticesp++) = mStarVertices[vtx]+left+up;
*(verticesp++) = mStarVertices[vtx]+up;
*(texcoordsp++) = LLVector2(0,0);
*(texcoordsp++) = LLVector2(0,1);
*(texcoordsp++) = LLVector2(1,1);
+ *(texcoordsp++) = LLVector2(0,1);
+ *(texcoordsp++) = LLVector2(1,1);
*(texcoordsp++) = LLVector2(1,0);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
*(colorsp++) = LLColor4U(mStarColors[vtx]);
+ *(colorsp++) = LLColor4U(mStarColors[vtx]);
+ *(colorsp++) = LLColor4U(mStarColors[vtx]);
}
mStarsVerts->setBuffer(0);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 2248d18155..0ca28eb03b 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -106,26 +106,6 @@
#include "llnotifications.h"
-void check_stack_depth(S32 stack_depth)
-{
- if (gDebugGL || gDebugSession)
- {
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth != stack_depth)
- {
- if (gDebugSession)
- {
- ll_fail("GL matrix stack corrupted.");
- }
- else
- {
- llerrs << "GL matrix stack corrupted!" << llendl;
- }
- }
- }
-}
-
#ifdef _DEBUG
// Debug indices is disabled for now for debug performance - djs 4/24/02
//#define DEBUG_INDICES
@@ -701,7 +681,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
if (!mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
#else
- if (!mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
+ if (!mEdgeMap.allocate(resX, resY, LLRender::sGLCoreProfile ? GL_RGBA : GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
#endif
if (shadow_detail > 0 || ssao)
@@ -916,6 +896,7 @@ void LLPipeline::releaseScreenBuffers()
void LLPipeline::createGLBuffers()
{
+ stop_glerror();
LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS);
assertInitialized();
@@ -1020,7 +1001,7 @@ void LLPipeline::createGLBuffers()
LLImageGL::generateTextures(1, &mLightFunc);
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc);
- LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_ALPHA, lightResX, lightResY, GL_ALPHA, GL_UNSIGNED_BYTE, lg);
+ LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_R8, lightResX, lightResY, GL_RED, GL_UNSIGNED_BYTE, lg);
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
@@ -3597,13 +3578,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
}
}
- S32 stack_depth = 0;
-
- if (gDebugGL)
- {
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &stack_depth);
- }
-
///////////////////////////////////////////
//
// Sync and verify GL state
@@ -3731,7 +3705,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
if (gDebugGL)
{
- check_stack_depth(stack_depth);
std::string msg = llformat("pass %d", i);
LLGLState::checkStates(msg);
//LLGLState::checkTextureChannels(msg);
@@ -3907,12 +3880,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
if (gDebugGL || gDebugPipeline)
{
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth > 3)
- {
- llerrs << "GL matrix stack corrupted!" << llendl;
- }
LLGLState::checkStates();
}
}
@@ -4000,12 +3967,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
if (gDebugGL || gDebugPipeline)
{
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth > 3)
- {
- llerrs << "GL matrix stack corrupted!" << llendl;
- }
LLGLState::checkStates();
}
}
--
cgit v1.3
From e7b743d80bb6e7bde9c90eb0a7f0e0244bb41f8d Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 22 Sep 2011 00:33:27 -0500
Subject: SH-2244 Fix for artifacts with L&S enabled when using core profile.
---
.../app_settings/shaders/class1/deferred/multiPointLightF.glsl | 2 +-
.../app_settings/shaders/class1/deferred/multiSpotLightF.glsl | 1 -
indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl | 2 +-
.../newview/app_settings/shaders/class1/deferred/softenLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl | 1 -
.../app_settings/shaders/class2/deferred/multiSpotLightF.glsl | 1 -
.../app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl | 1 -
.../newview/app_settings/shaders/class2/deferred/softenLightF.glsl | 2 +-
.../app_settings/shaders/class2/deferred/softenLightMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl | 1 -
.../newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl | 1 -
indra/newview/app_settings/shaders/class3/deferred/giF.glsl | 4 ++--
.../newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 4 ++--
indra/newview/pipeline.cpp | 6 +++++-
14 files changed, 14 insertions(+), 16 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 585faf6cd5..5f83d06388 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -126,7 +126,7 @@ void main()
if (sa > 0.0)
{
- sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc,vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
sa *= noise;
col += da*sa*light_col[i].rgb*spec.rgb;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 6351a5ac0d..17955f32cd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -37,7 +37,6 @@ uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform samplerCube environmentMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 60f99fac15..b8ed398a81 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -107,7 +107,7 @@ void main()
float sa = dot(normalize(lv-normalize(pos)),norm);
if (sa > 0.0)
{
- sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+ sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
sa *= noise;
col += da*sa*color.rgb*spec.rgb;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index e86b0445ed..0844e659b6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -307,7 +307,7 @@ void main()
//
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
float sa = dot(refnormpersp, sun_dir.xyz);
- vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
+ vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).r;
// add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 8eac16d3f0..93842e818f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -35,7 +35,6 @@ uniform sampler2DRect specularRect;
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 409db862e6..7ef2608841 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -36,7 +36,6 @@ uniform sampler2DRect normalMap;
uniform samplerCube environmentMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
index 9e7542c01c..c2d374d22c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
@@ -38,7 +38,6 @@ uniform sampler2DMS depthMap;
uniform sampler2DMS normalMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 642145a856..c09e3bb6e6 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -313,7 +313,7 @@ void main()
//
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
float sa = dot(refnormpersp, sun_dir.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+ vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).r;
// add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
index ab187ccfa5..6d746ebbba 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
@@ -314,7 +314,7 @@ void main()
//
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+ vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).r;
// add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index c2e36abbd6..93b385cbf5 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -38,7 +38,6 @@ uniform sampler2DRect normalMap;
uniform samplerCube environmentMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
index 50369cb205..1e3257d4a2 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
@@ -38,7 +38,6 @@ uniform sampler2DMS depthMap;
uniform sampler2DMS normalMap;
uniform sampler2DRect lightMap;
uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
uniform sampler2D projectionMap;
uniform mat4 proj_mat; //screen space to light space
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
index dad62a074a..39975f8249 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
@@ -156,7 +156,7 @@ vec3 giAmbient(vec3 pos, vec3 norm)
if (spec.a > 0.0)
{
float sa = dot(ha,lnorm);
- da = texture2D(lightFunc, vec2(sa, spec.a)).a;
+ da = texture2D(lightFunc, vec2(sa, spec.a)).r;
}
else
{
@@ -171,7 +171,7 @@ vec3 giAmbient(vec3 pos, vec3 norm)
if (c_spec.a > 0.0)
{
float sa = dot(ha, gi_norm);
- da = dist_atten*texture2D(lightFunc, vec2(sa, c_spec.a)).a;
+ da = dist_atten*texture2D(lightFunc, vec2(sa, c_spec.a)).r;
}
else
{
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index cc6d080344..338d289ab0 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -295,7 +295,7 @@ void main()
{
vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
- da = texture2D(lightFunc, vec2(da, 0.0)).a;
+ da = texture2D(lightFunc, vec2(da, 0.0)).r;
vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
float scol = max(scol_ambocc.r, diffuse.a);
@@ -314,7 +314,7 @@ void main()
//
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
+ vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).r;
// add the two types of shiny together
vec3 spec_contrib = dumbshiny * spec.rgb;
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 0ca28eb03b..0fbe030832 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7472,6 +7472,7 @@ void LLPipeline::renderDeferredLighting()
//correspond to their axis facing, with bit position 3,2,1 matching
//axis facing x,y,z, bit set meaning positive facing, bit clear
//meaning negative facing
+ mDeferredVB->getVertexStrider(vert);
v[0].set(c[0]-s,c[1]-s,c[2]-s); // 0 - 0000
v[1].set(c[0]-s,c[1]-s,c[2]+s); // 1 - 0001
v[2].set(c[0]-s,c[1]+s,c[2]-s); // 2 - 0010
@@ -7506,6 +7507,7 @@ void LLPipeline::renderDeferredLighting()
gDeferredLightProgram.uniform1f("falloff", volume->getLightFalloff()*0.5f);
//gGL.diffuseColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
gGL.syncMatrices();
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
stop_glerror();
@@ -7562,6 +7564,7 @@ void LLPipeline::renderDeferredLighting()
//correspond to their axis facing, with bit position 3,2,1 matching
//axis facing x,y,z, bit set meaning positive facing, bit clear
//meaning negative facing
+ mDeferredVB->getVertexStrider(vert);
v[0].set(c[0]-s,c[1]-s,c[2]-s); // 0 - 0000
v[1].set(c[0]-s,c[1]-s,c[2]+s); // 1 - 0001
v[2].set(c[0]-s,c[1]+s,c[2]-s); // 2 - 0010
@@ -7577,6 +7580,7 @@ void LLPipeline::renderDeferredLighting()
gDeferredSpotLightProgram.uniform3fv("color", 1, col.mV);
gDeferredSpotLightProgram.uniform1f("falloff", volume->getLightFalloff()*0.5f);
gGL.syncMatrices();
+ mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
}
@@ -7585,6 +7589,7 @@ void LLPipeline::renderDeferredLighting()
}
//reset mDeferredVB to fullscreen triangle
+ mDeferredVB->getVertexStrider(vert);
vert[0].set(-1,1,0);
vert[1].set(-1,-3,0);
vert[2].set(3,1,0);
@@ -7632,7 +7637,6 @@ void LLPipeline::renderDeferredLighting()
gDeferredMultiLightProgram.uniform1f("far_z", far_z);
far_z = 0.f;
count = 0;
-
mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
}
}
--
cgit v1.3
From cdba1674c5293f5d55c059ada18eb1a1b75cf1e8 Mon Sep 17 00:00:00 2001
From: Paul ProductEngine
Date: Thu, 22 Sep 2011 13:27:59 +0300
Subject: EXP-1203 ADDITIONAL FIX (As a FUI user, I want the address bar and
favorites to be on one line)
- Changed member variable name mChevronButton to mMoreTextBox
- Fixed some bugs which PE testers have found:
1. Parcel characteristics icons from location bar overlay other ui elements
2. Navigation & Favorites bar are displayed after exitting mouselook mode although 'Show Navigation & Favorites bar' is unchecked
---
indra/newview/llagent.cpp | 2 +-
indra/newview/llfavoritesbar.cpp | 30 +++++++++++-----------
indra/newview/llfavoritesbar.h | 2 +-
.../skins/default/xui/en/panel_navigation_bar.xml | 16 ++++++------
4 files changed, 25 insertions(+), 25 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 642a1907f0..1587ed2dd7 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1797,7 +1797,7 @@ void LLAgent::endAnimationUpdateUI()
gViewerWindow->showCursor();
// show menus
gMenuBarView->setVisible(TRUE);
- LLNavigationBar::getInstance()->setVisible(TRUE);
+ LLNavigationBar::getInstance()->setVisible(TRUE && gSavedSettings.getBOOL("ShowNavbarNavigationPanel"));
gStatusBar->setVisibleForMouselook(true);
if (gSavedSettings.getBOOL("ShowMiniLocationPanel"))
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 63519b7c21..e10767af30 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -390,9 +390,9 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
//make chevron button
LLTextBox::Params more_button_params(p.more_button);
- mChevronButton = LLUICtrlFactory::create (more_button_params);
- mChevronButton->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
- addChild(mChevronButton);
+ mMoreTextBox = LLUICtrlFactory::create (more_button_params);
+ mMoreTextBox->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
+ addChild(mMoreTextBox);
LLTextBox::Params label_param(p.label);
mBarLabel = LLUICtrlFactory::create (label_param);
@@ -692,7 +692,7 @@ void LLFavoritesBarCtrl::updateButtons()
const child_list_t* childs = getChildList();
child_list_const_iter_t child_it = childs->begin();
int first_changed_item_index = 0;
- int rightest_point = getRect().mRight - mChevronButton->getRect().getWidth();
+ int rightest_point = getRect().mRight - mMoreTextBox->getRect().getWidth();
//lets find first changed button
while (child_it != childs->end() && first_changed_item_index < mItems.count())
{
@@ -735,9 +735,9 @@ void LLFavoritesBarCtrl::updateButtons()
}
// we have to remove ChevronButton to make sure that the last item will be LandmarkButton to get the right aligning
// keep in mind that we are cutting all buttons in space between the last visible child of favbar and ChevronButton
- if (mChevronButton->getParent() == this)
+ if (mMoreTextBox->getParent() == this)
{
- removeChild(mChevronButton);
+ removeChild(mMoreTextBox);
}
int last_right_edge = 0;
//calculate new buttons offset
@@ -777,13 +777,13 @@ void LLFavoritesBarCtrl::updateButtons()
S32 buttonHGap = button_params.rect.left; // default value
LLRect rect;
// Chevron button should stay right aligned
- rect.setOriginAndSize(getRect().mRight - mChevronButton->getRect().getWidth() - buttonHGap, 0,
- mChevronButton->getRect().getWidth(),
- mChevronButton->getRect().getHeight());
+ rect.setOriginAndSize(getRect().mRight - mMoreTextBox->getRect().getWidth() - buttonHGap, 0,
+ mMoreTextBox->getRect().getWidth(),
+ mMoreTextBox->getRect().getHeight());
- addChild(mChevronButton);
- mChevronButton->setRect(rect);
- mChevronButton->setVisible(TRUE);
+ addChild(mMoreTextBox);
+ mMoreTextBox->setRect(rect);
+ mMoreTextBox->setVisible(TRUE);
}
// Update overflow menu
LLToggleableMenu* overflow_menu = static_cast (mOverflowMenuHandle.get());
@@ -816,8 +816,8 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer def_button_width? def_button_width : required_width;
LLFavoriteLandmarkButton* fav_btn = NULL;
- // do we have a place for next button + double buttonHGap + mChevronButton ?
- if(curr_x + width + 2*button_x_delta + mChevronButton->getRect().getWidth() > getRect().mRight )
+ // do we have a place for next button + double buttonHGap + mMoreTextBox ?
+ if(curr_x + width + 2*button_x_delta + mMoreTextBox->getRect().getWidth() > getRect().mRight )
{
return NULL;
}
@@ -967,7 +967,7 @@ void LLFavoritesBarCtrl::showDropDownMenu()
menu->buildDrawLabels();
menu->updateParent(LLMenuGL::sMenuContainer);
- menu->setButtonRect(mChevronButton->getRect(), this);
+ menu->setButtonRect(mMoreTextBox->getRect(), this);
LLMenuGL::showPopup(this, menu, getRect().getWidth() - max_width, 0);
}
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 3811de3e2f..a41795a080 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -135,7 +135,7 @@ private:
BOOL mShowDragMarker;
LLUICtrl* mLandingTab;
LLUICtrl* mLastTab;
- LLTextBox* mChevronButton;
+ LLTextBox* mMoreTextBox;
LLTextBox* mBarLabel;
LLUUID mDragItemId;
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 9aa2da5abd..54befa38e9 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -9,7 +9,7 @@
layout="topleft"
name="navigation_bar"
chrome="true"
- width="600">
+ width="800">
+ width="800">
+ width="500">
+ width="500">
+ width="213">
@@ -174,7 +174,7 @@
user_resize="true"
min_width="190"
name="favorites_layout_panel"
- width="190">
+ width="290">
+ width="290">
Cursor3D
--
cgit v1.3
From 89b6e92b6cb60d326db0f3f129bf5227513d3b5c Mon Sep 17 00:00:00 2001
From: Richard Linden
Date: Thu, 22 Sep 2011 11:17:42 -0700
Subject: removed unused toolbar files
---
indra/newview/lltoolbar.cpp | 365 --------------------------------------------
indra/newview/lltoolbar.h | 82 ----------
2 files changed, 447 deletions(-)
delete mode 100644 indra/newview/lltoolbar.cpp
delete mode 100644 indra/newview/lltoolbar.h
(limited to 'indra/newview')
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
deleted file mode 100644
index c4f599561d..0000000000
--- a/indra/newview/lltoolbar.cpp
+++ /dev/null
@@ -1,365 +0,0 @@
-/**
- * @file lltoolbar.cpp
- * @author James Cook, Richard Nelson
- * @brief Large friendly buttons at bottom of screen.
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lltoolbar.h"
-
-#include "imageids.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llflyoutbutton.h"
-#include "llrect.h"
-#include "llparcel.h"
-
-#include "llagent.h"
-#include "llagentwearables.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-#include "llviewercontrol.h"
-#include "llmenucommands.h"
-#include "llimview.h"
-#include "lluiconstants.h"
-#include "llvoavatarself.h"
-#include "lltooldraganddrop.h"
-#include "llfloaterinventory.h"
-#include "llfloaterchatterbox.h"
-#include "llfloatersnapshot.h"
-#include "llinventorypanel.h"
-#include "lltoolmgr.h"
-#include "llui.h"
-#include "llviewermenu.h"
-//#include "llfirstuse.h"
-#include "llpanelblockedlist.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llscrolllistcell.h"
-#include "llviewerparcelmgr.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "lltoolgrab.h"
-#include "llcombobox.h"
-#include "lllayoutstack.h"
-
-#if LL_DARWIN
-
- #include "llresizehandle.h"
-
-#endif // LL_DARWIN
-
-//
-// Globals
-//
-
-LLToolBar *gToolBar = NULL;
-
-//
-// Statics
-//
-F32 LLToolBar::sInventoryAutoOpenTime = 1.f;
-
-//
-// Functions
-//
-
-LLToolBar::LLToolBar()
- : LLPanel(),
-
- mInventoryAutoOpen(FALSE),
- mNumUnreadIMs(0)
-#if LL_DARWIN
- , mResizeHandle(NULL)
-#endif // LL_DARWIN
-{
- setIsChrome(TRUE);
- setFocusRoot(TRUE);
-
- mCommitCallbackRegistrar.add("HandleCommunicate", &LLToolBar::onClickCommunicate);
-}
-
-
-BOOL LLToolBar::postBuild()
-{
- for (child_list_const_iter_t child_iter = getChildList()->begin();
- child_iter != getChildList()->end(); ++child_iter)
- {
- LLView *view = *child_iter;
- LLButton* buttonp = dynamic_cast(view);
- if(buttonp)
- {
- buttonp->setSoundFlags(LLView::SILENT);
- }
- }
-
-#if LL_DARWIN
- if(mResizeHandle == NULL)
- {
- LLRect rect(0, 0, RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT);
- LLResizeHandle::Params p;
- p.name("");
- p.rect(rect);
- p.min_width(RESIZE_HANDLE_WIDTH);
- p.min_height(RESIZE_HANDLE_HEIGHT);
- p.enabled(false);
- mResizeHandle = LLUICtrlFactory::create(p);
- addChildInBack(mResizeHandle);
- LLLayoutStack* toolbar_stack = getChild("toolbar_stack");
- toolbar_stack->reshape(toolbar_stack->getRect().getWidth() - RESIZE_HANDLE_WIDTH, toolbar_stack->getRect().getHeight());
- }
-#endif // LL_DARWIN
-
- layoutButtons();
-
- return TRUE;
-}
-
-LLToolBar::~LLToolBar()
-{
- // LLView destructor cleans up children
-}
-
-
-BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg)
-{
- LLButton* inventory_btn = getChild("inventory_btn");
- if (!inventory_btn) return FALSE;
-
- LLRect button_screen_rect;
- inventory_btn->localRectToScreen(inventory_btn->getRect(),&button_screen_rect);
-
- const LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel();
- if(active_panel)
- {
- mInventoryAutoOpen = FALSE;
- }
- else if (button_screen_rect.pointInRect(x, y))
- {
- if (mInventoryAutoOpen)
- {
- if (!active_panel &&
- mInventoryAutoOpenTimer.getElapsedTimeF32() > sInventoryAutoOpenTime)
- {
- LLFloaterInventory::showAgentInventory();
- }
- }
- else
- {
- mInventoryAutoOpen = TRUE;
- mInventoryAutoOpenTimer.reset();
- }
- }
-
- return LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-}
-
-// static
-void LLToolBar::toggle(void*)
-{
- BOOL show = gSavedSettings.getBOOL("ShowToolBar");
- gSavedSettings.setBOOL("ShowToolBar", !show);
- gToolBar->setVisible(!show);
-}
-
-
-// static
-BOOL LLToolBar::visible(void*)
-{
- return gToolBar->getVisible();
-}
-
-
-void LLToolBar::layoutButtons()
-{
-#if LL_DARWIN
- const S32 FUDGE_WIDTH_OF_SCREEN = 4;
- S32 width = gViewerWindow->getWindowWidthScaled() + FUDGE_WIDTH_OF_SCREEN;
- S32 pad = 2;
-
- // this function may be called before postBuild(), in which case mResizeHandle won't have been set up yet.
- if(mResizeHandle != NULL)
- {
- // Only when running in windowed mode on the Mac, leave room for a resize widget on the right edge of the bar.
- width -= RESIZE_HANDLE_WIDTH;
-
- LLRect r;
- r.mLeft = width - pad;
- r.mBottom = 0;
- r.mRight = r.mLeft + RESIZE_HANDLE_WIDTH;
- r.mTop = r.mBottom + RESIZE_HANDLE_HEIGHT;
- mResizeHandle->setRect(r);
- mResizeHandle->setVisible(TRUE);
- }
-#endif // LL_DARWIN
-}
-
-
-// virtual
-void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
-
- layoutButtons();
-}
-
-
-// Per-frame updates of visibility
-void LLToolBar::refresh()
-{
- BOOL show = gSavedSettings.getBOOL("ShowToolBar");
- BOOL mouselook = gAgent.cameraMouselook();
- setVisible(show && !mouselook);
-
- if (isInVisibleChain())
- {
- updateCommunicateList();
- }
-}
-
-void LLToolBar::updateCommunicateList()
-{
- LLFlyoutButton* communicate_button = getChild("communicate_btn");
- LLSD selected = communicate_button->getValue();
-
- communicate_button->removeall();
-
- //LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater();
- LLScrollListItem* itemp = NULL;
-
- LLSD contact_sd;
- contact_sd["value"] = "contacts";
- /*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle();
- if (LLFloaterMyFriends::getInstance() == frontmost_floater)
- {
- contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- contact_sd["columns"][0]["font"]["style"] = "BOLD";
- // make sure current tab is selected in list
- if (selected.isUndefined())
- {
- selected = "contacts";
- }
- }*/
- itemp = communicate_button->addElement(contact_sd, ADD_TOP);
-
- communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);
- communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getString("Blocked List"), LLSD("mute list"), ADD_TOP);
-
- std::set >::const_iterator floater_handle_it;
-
- /*if (gIMMgr->getIMFloaterHandles().size() > 0)
- {
- communicate_button->addSeparator(ADD_TOP);
- }
-
- for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
- {
- LLFloaterIMPanel* im_floaterp = (LLFloaterIMPanel*)floater_handle_it->get();
- if (im_floaterp)
- {
- std::string floater_title = im_floaterp->getNumUnreadMessages() > 0 ? "*" : "";
- floater_title.append(im_floaterp->getShortTitle());
- LLSD im_sd;
- im_sd["value"] = im_floaterp->getSessionID();
- im_sd["columns"][0]["value"] = floater_title;
- if (im_floaterp == frontmost_floater)
- {
- im_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- im_sd["columns"][0]["font"]["style"] = "BOLD";
- if (selected.isUndefined())
- {
- selected = im_floaterp->getSessionID();
- }
- }
- itemp = communicate_button->addElement(im_sd, ADD_TOP);
- }
- }*/
-
- communicate_button->setValue(selected);
-}
-
-
-// static
-void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
-{
- LLFlyoutButton* communicate_button = dynamic_cast(ctrl);
- llassert_always(communicate_button);
-
- LLSD selected_option = communicate_button->getValue();
-
- if (selected_option.asString() == "contacts")
- {
- LLFloaterReg::showInstance("contacts", "friends");
- }
- else if (selected_option.asString() == "local chat")
- {
- LLFloaterReg::showInstance("communicate", "local");
- }
- else if (selected_option.asString() == "redock")
- {
- /*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance();
- if(chatterbox_instance)
- {
- chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE);
-
- LLUUID session_to_show;
-
- std::set >::const_iterator floater_handle_it;
- for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
- {
- LLFloater* im_floaterp = floater_handle_it->get();
- if (im_floaterp)
- {
- if (im_floaterp->isFrontmost())
- {
- session_to_show = ((LLFloaterIMPanel*)im_floaterp)->getSessionID();
- }
- chatterbox_instance->addFloater(im_floaterp, FALSE);
- }
- }
- LLFloaterReg::showInstance("communicate", session_to_show);
- }*/
- }
- else if (selected_option.asString() == "mute list")
- {
- LLPanelBlockedList::showPanelAndSelect(LLUUID::null);
- }
- else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle
- {
- /*LLFloaterReg::toggleInstance("communicate");*/
- }
- else // otherwise selection_option is undifined or a specific IM session id
- {
- /*LLFloaterReg::showInstance("communicate", selected_option);*/
- }
-}
-
-
diff --git a/indra/newview/lltoolbar.h b/indra/newview/lltoolbar.h
deleted file mode 100644
index 217b3c0ac8..0000000000
--- a/indra/newview/lltoolbar.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * @file lltoolbar.h
- * @brief Large friendly buttons at bottom of screen.
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#ifndef LL_LLTOOLBAR_H
-#define LL_LLTOOLBAR_H
-
-#include "llpanel.h"
-
-#include "llframetimer.h"
-
-class LLResizeHandle;
-
-class LLToolBar
-: public LLPanel
-{
-public:
- LLToolBar();
- ~LLToolBar();
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
- EDragAndDropType cargo_type,
- void* cargo_data,
- EAcceptance* accept,
- std::string& tooltip_msg);
-
- /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static void toggle(void*);
- static BOOL visible(void*);
-
- // Move buttons to appropriate locations based on rect.
- void layoutButtons();
-
- // Per-frame refresh call
- void refresh();
-
- // callbacks
- static void onClickCommunicate(LLUICtrl*, const LLSD&);
-
- static F32 sInventoryAutoOpenTime;
-
-private:
- void updateCommunicateList();
-
-
-private:
- BOOL mInventoryAutoOpen;
- LLFrameTimer mInventoryAutoOpenTimer;
- S32 mNumUnreadIMs;
-#if LL_DARWIN
- LLResizeHandle *mResizeHandle;
-#endif // LL_DARWIN
-};
-
-extern LLToolBar *gToolBar;
-
-#endif
--
cgit v1.3
From 7e4e4175ff9feae2a0f98a61c533edb9237947b3 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Thu, 22 Sep 2011 22:02:02 +0300
Subject: STORM-1620 FIXED Re-enabled saving settings.
Reason: settings.xml was mistakenly marked as a per session (not saved)
settings file. See description of the "SessionSettingsFile" setting.
Fix: It looks like the proper way to make the Advanced mode default
is to leave the setting value empty, which is what this change does.
It also re-fixes STORM-1616.
---
indra/newview/llappviewer.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 12795a1ec6..11e2e1e607 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2326,7 +2326,7 @@ bool LLAppViewer::initConfiguration()
if (gSavedSettings.getBOOL("FirstRunThisInstall"))
{
- gSavedSettings.setString("SessionSettingsFile", "settings.xml");
+ // Note that the "FirstRunThisInstall" settings is currently unused.
gSavedSettings.setBOOL("FirstRunThisInstall", FALSE);
}
--
cgit v1.3
From 00f66ccf409b0f7fb974f23cd157cdd0b8a6ab96 Mon Sep 17 00:00:00 2001
From: Richard Linden
Date: Thu, 22 Sep 2011 15:08:59 -0700
Subject: EXP-1239 WIP make toolbars wrap when there is not enough room added
more toolbars to floater_test_toolbar.xml removed layout stack and got basic
wrapping working reviewed by Leslie
---
indra/llui/lltoolbar.cpp | 196 +++++++++++----------
indra/llui/lltoolbar.h | 13 +-
indra/newview/lldndbutton.cpp | 9 +-
indra/newview/lldndbutton.h | 5 +-
.../skins/default/xui/en/floater_test_toolbar.xml | 47 ++++-
5 files changed, 150 insertions(+), 120 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 1e8be93f17..f623d99dc7 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -57,8 +57,8 @@ LLToolBar::Params::Params()
button_icon("button_icon"),
button_icon_and_text("button_icon_and_text"),
wrap("wrap", true),
- min_width("min_width", 0),
- max_width("max_width", S32_MAX),
+ min_button_width("min_button_width", 0),
+ max_button_width("max_button_width", S32_MAX),
background_image("background_image")
{}
@@ -70,8 +70,8 @@ LLToolBar::LLToolBar(const Params& p)
mNeedsLayout(false),
mCenterPanel(NULL),
mCenteringStack(NULL),
- mMinWidth(p.min_width),
- mMaxWidth(p.max_width),
+ mMinButtonWidth(p.min_button_width),
+ mMaxButtonWidth(p.max_button_width),
mBackgroundImage(p.background_image)
{
}
@@ -108,120 +108,148 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
- addRow();
-
BOOST_FOREACH (LLToolBarButton::Params button_p, p.buttons)
{
+ // buttons always follow left and top, for all orientations
+ button_p.follows.flags = FOLLOWS_LEFT|FOLLOWS_TOP;
+ button_p.fillFrom((mButtonType == BTNTYPE_ICONS_ONLY)
+ ? p.button_icon // icon only
+ : p.button_icon_and_text); // icon + text
+
LLRect button_rect(button_p.rect);
{ // remove any offset from button
if (orientation == LLLayoutStack::HORIZONTAL)
{
- button_rect.setOriginAndSize(0, 0, mMinWidth, getRect().getHeight());
+ button_rect.setOriginAndSize(0, 0, mMinButtonWidth, button_rect.getHeight());
}
else // VERTICAL
{
- button_rect.setOriginAndSize(0, 0, mMinWidth, button_rect.getHeight());
+ button_rect.setOriginAndSize(0, 0, mMinButtonWidth, button_rect.getHeight());
}
}
- button_p.fillFrom((mButtonType == BTNTYPE_ICONS_ONLY)
- ? p.button_icon // icon only
- : p.button_icon_and_text); // icon + text
+ // use our calculated rect
+ button_p.rect = button_rect;
+ LLToolBarButton* buttonp = LLUICtrlFactory::create(button_p);
+
+ mButtons.push_back(buttonp);
+ mCenterPanel->addChild(buttonp);
- mButtons.push_back(LLUICtrlFactory::create(button_p));
mNeedsLayout = true;
}
-
- updateLayout();
}
-void LLToolBar::addButton(LLToolBarButton* buttonp)
+void LLToolBar::updateLayoutAsNeeded()
{
- LLLayoutPanel::Params panel_p;
- panel_p.name = buttonp->getName() + "_panel";
- panel_p.user_resize = false;
- panel_p.auto_resize= false;
- panel_p.fit_content = true;
+ if (!mNeedsLayout) return;
- LLLayoutPanel* panel = LLUICtrlFactory::create(panel_p);
-
- panel->addChild(buttonp);
- mStacks.back()->addChild(panel);
-}
+ LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
-void LLToolBar::updateLayout()
-{
- mCenteringStack->updateLayout();
+ // our terminology for orientation-agnostic layout is that
+ // length refers to a distance in the direction we stack the buttons
+ // and girth refers to a distance in the direction buttons wrap
+ S32 total_length = 0;
+ S32 max_length = (orientation == LLLayoutStack::HORIZONTAL)
+ ? getRect().getWidth()
+ : getRect().getHeight();
+ S32 max_row_girth = 0;
+ S32 cur_start = 0;
+ S32 cur_row = 0;
- if (!mNeedsLayout) return;
- mNeedsLayout = false;
+ LLRect panel_rect = mCenterPanel->getLocalRect();
- { // clean up existing rows
- BOOST_FOREACH(LLToolBarButton* button, mButtons)
- {
- if (button->getParent())
+ std::vector buttons_in_row;
+
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
+ S32 button_clamped_width = llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth);
+ S32 button_length = (orientation == LLLayoutStack::HORIZONTAL)
+ ? button_clamped_width
+ : button->getRect().getHeight();
+ S32 button_girth = (orientation == LLLayoutStack::HORIZONTAL)
+ ? button->getRect().getHeight()
+ : button_clamped_width;
+
+ // handle wrapping
+ if (total_length + button_length > max_length
+ && cur_start != 0) // not first button in row
+ { // go ahead and wrap
+ if (orientation == LLLayoutStack::VERTICAL)
+ {
+ // row girth is clamped to allowable button widths
+ max_row_girth = llclamp(max_row_girth, mMinButtonWidth, mMaxButtonWidth);
+ }
+ // make buttons in current row all same girth
+ BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
{
- button->getParent()->removeChild(button);
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
+ }
+ else // VERTICAL
+ {
+ button->reshape(max_row_girth, button->getRect().getHeight());
+ }
}
- }
+ buttons_in_row.clear();
- BOOST_FOREACH(LLLayoutStack* stack, mStacks)
- {
- delete stack;
+ total_length = 0;
+ cur_start = 0;
+ cur_row += max_row_girth;
+ max_row_girth = 0;
}
- mStacks.clear();
- }
- // start with one row of buttons
- addRow();
-
- S32 total_width = 0, total_height = 0;
- S32 max_total_width = 0, max_total_height = 0;
- S32 max_width = getRect().getWidth(), max_height = getRect().getHeight();
- BOOST_FOREACH(LLToolBarButton* button, mButtons)
- {
- S32 button_width = button->getRect().getWidth();
- S32 button_height = button->getRect().getHeight();
- if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL
- && total_width + button_height > getRect().getWidth())
+ LLRect button_rect;
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
+ }
+ else // VERTICAL
{
- addRow();
- total_width = 0;
+ button_rect.setLeftTopAndSize(cur_row, panel_rect.mTop - cur_start, button_clamped_width, button->getRect().getHeight());
}
- addButton(button);
-
- total_width += button_width;
- total_height += button_height;
- max_total_width = llmax(max_total_width, total_width);
- max_total_height = llmax(max_total_height, total_height);
- max_width = llmax(button->getRect().getWidth(), max_width);
- max_height = llmax(button->getRect().getHeight(), max_height);
+ button->setShape(button_rect);
+
+ buttons_in_row.push_back(button);
+
+ total_length += button_length;
+ cur_start = total_length;
+ max_row_girth = llmax(button_girth, max_row_girth);
}
- if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+ // final resizing in "girth" direction
+ S32 total_girth = cur_row + max_row_girth; // increment by size of final row
+
+ // grow and optionally shift toolbar to accomodate buttons
+ if (orientation == LLLayoutStack::HORIZONTAL)
{
- BOOST_FOREACH(LLLayoutStack* stack, mStacks)
- {
- stack->reshape(max_total_width, stack->getParent()->getRect().getHeight());
- stack->updateLayout();
+ if (mSideType == SIDE_TOP)
+ { // shift down to maintain top edge
+ translate(0, getRect().getHeight() - total_girth);
}
+
+ reshape(getRect().getWidth(), total_girth);
}
- else
+ else // VERTICAL
{
- BOOST_FOREACH(LLLayoutStack* stack, mStacks)
- {
- stack->reshape(stack->getParent()->getRect().getWidth(), max_total_height);
- stack->updateLayout();
+ if (mSideType == SIDE_RIGHT)
+ { // shift left to maintain right edge
+ translate(getRect().getWidth() - total_girth, 0);
}
-
- reshape(max_total_width, getRect().getHeight());
+ reshape(total_girth, getRect().getHeight());
}
+
+ // recenter toolbar buttons
+ mCenteringStack->updateLayout();
+
+ // don't clear flag until after we've resized ourselves, to avoid laying out every frame
+ mNeedsLayout = false;
}
void LLToolBar::draw()
{
- updateLayout();
+ updateLayoutAsNeeded();
{ // draw background
LLRect bg_rect;
@@ -231,22 +259,6 @@ void LLToolBar::draw()
LLUICtrl::draw();
}
-void LLToolBar::addRow()
-{
- LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
-
- LLLayoutStack::Params stack_p;
- stack_p.rect = getLocalRect();
- stack_p.name = llformat("button_stack_%d", mStacks.size());
- stack_p.orientation = orientation;
- stack_p.follows.flags = (orientation == LLLayoutStack::HORIZONTAL)
- ? (FOLLOWS_TOP|FOLLOWS_BOTTOM) // horizontal
- : (FOLLOWS_LEFT|FOLLOWS_RIGHT); // vertical
-
- mStacks.push_back(LLUICtrlFactory::create(stack_p));
- mCenterPanel->addChild(mStacks.back());
-}
-
void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
{
LLUICtrl::reshape(width, height, called_from_parent);
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 3a593e42d9..31729e32b4 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -93,8 +93,8 @@ public:
button_icon_and_text;
Optional wrap;
- Optional min_width,
- max_width;
+ Optional min_button_width,
+ max_button_width;
// get rid of this
Multiple buttons;
@@ -112,11 +112,9 @@ protected:
LLToolBar(const Params&);
void initFromParams(const Params&);
- void addButton(LLToolBarButton* buttonp);
- void updateLayout();
private:
- void addRow();
+ void updateLayoutAsNeeded();
std::list mButtons;
LLToolBarEnums::ButtonType mButtonType;
@@ -125,11 +123,10 @@ private:
LLLayoutPanel* mCenterPanel;
LLToolBarEnums::SideType mSideType;
- std::vector mStacks;
bool mWrap;
bool mNeedsLayout;
- S32 mMinWidth,
- mMaxWidth;
+ S32 mMinButtonWidth,
+ mMaxButtonWidth;
LLUIImagePtr mBackgroundImage;
};
diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp
index 8a38c8a643..7c9dda6b1d 100644
--- a/indra/newview/lldndbutton.cpp
+++ b/indra/newview/lldndbutton.cpp
@@ -31,16 +31,9 @@
static LLDefaultChildRegistry::Register r("dnd_button");
-LLDragAndDropButton::Params::Params()
-{
-
-}
-
LLDragAndDropButton::LLDragAndDropButton(const Params& params)
: LLButton(params)
-{
-
-}
+{}
BOOL LLDragAndDropButton::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, std::string& tooltip_msg)
{
diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h
index 0642cbb7b9..53ea2f5ea7 100644
--- a/indra/newview/lldndbutton.h
+++ b/indra/newview/lldndbutton.h
@@ -43,10 +43,7 @@
class LLDragAndDropButton : public LLButton
{
public:
- struct Params : public LLInitParam::Block
- {
- Params();
- };
+ struct Params : public LLInitParam::Block {};
LLDragAndDropButton(const Params& params);
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index 138322eca7..85f0f104fc 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -7,33 +7,64 @@
name="floater_test_toolbar"
translate="false"
width="500">
-
+ label="Button"/>
-
+ label="Button"/>
+ label="Button with long label"/>
+ label="Button with longest label of all"/>
+
+
+
+
+
+
+
+
+
+
-
--
cgit v1.3
From 565483ee1f2ea7b8d525c6d89700452216481c5e Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Thu, 22 Sep 2011 15:43:08 -0700
Subject: EXP-1205 PROGRESS -- As a User, I want a toybox which will contain
all buttons that I can d&d into the toolbars EXP-1233 PROGRESS -- Populate
the toybox floater window with all FUI toolbar buttons EXP-1236 FIX -- The
toybox floater should remember its position for the user
* Basic addCommand function to the LLToolBar. Need proper implementation.
* Added map for faster lookup of commands
* Toybox now adds commands to its toolbar for basic button setup
Reviewed by Richard.
---
indra/llui/llcommandmanager.cpp | 32 +++++----
indra/llui/llcommandmanager.h | 16 +++--
indra/llui/lltoolbar.cpp | 77 ++++++++++++++++++----
indra/llui/lltoolbar.h | 9 +++
indra/newview/llfloatertoybox.cpp | 18 ++---
indra/newview/llfloatertoybox.h | 5 +-
.../skins/default/xui/en/floater_toybox.xml | 5 ++
7 files changed, 120 insertions(+), 42 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 306b357d6a..6be616b980 100644
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -72,9 +72,15 @@ LLCommandManager::LLCommandManager()
LLCommandManager::~LLCommandManager()
{
+ for (CommandVector::iterator cmdIt = mCommands.begin(); cmdIt != mCommands.end(); ++cmdIt)
+ {
+ LLCommand * command = *cmdIt;
+
+ delete command;
+ }
}
-U32 LLCommandManager::count() const
+U32 LLCommandManager::commandCount() const
{
return mCommands.size();
}
@@ -88,20 +94,24 @@ LLCommand * LLCommandManager::getCommand(const std::string& commandName)
{
LLCommand * command_name_match = NULL;
- for (CommandVector::iterator it = mCommands.begin(); it != mCommands.end(); ++it)
+ CommandIndexMap::const_iterator found = mCommandIndices.find(commandName);
+
+ if (found != mCommandIndices.end())
{
- LLCommand * command = *it;
-
- if (command->name() == commandName)
- {
- command_name_match = command;
- break;
- }
+ command_name_match = mCommands[found->second];
}
return command_name_match;
}
+void LLCommandManager::addCommand(LLCommand * command)
+{
+ mCommandIndices[command->name()] = mCommands.size();
+ mCommands.push_back(command);
+
+ llinfos << "Successfully added command: " << command->name() << llendl;
+}
+
//static
bool LLCommandManager::load()
{
@@ -129,9 +139,7 @@ bool LLCommandManager::load()
{
LLCommand * command = new LLCommand(commandParams);
- mgr.mCommands.push_back(command);
-
- llinfos << "Successfully loaded command: " << command->name() << llendl;
+ mgr.addCommand(command);
}
return true;
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 4f3c9b2ada..24378ecd62 100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -24,8 +24,8 @@
* $/LicenseInfo$
*/
-#ifndef LL_COMMANDMANAGER_H
-#define LL_COMMANDMANAGER_H
+#ifndef LL_LLCOMMANDMANAGER_H
+#define LL_LLCOMMANDMANAGER_H
#include "llinitparam.h"
#include "llsingleton.h"
@@ -82,16 +82,22 @@ public:
LLCommandManager();
~LLCommandManager();
- U32 count() const;
+ U32 commandCount() const;
LLCommand * getCommand(U32 commandIndex);
LLCommand * getCommand(const std::string& commandName);
static bool load();
+protected:
+ void addCommand(LLCommand * command);
+
private:
+ typedef std::map CommandIndexMap;
typedef std::vector CommandVector;
- CommandVector mCommands;
+
+ CommandVector mCommands;
+ CommandIndexMap mCommandIndices;
};
-#endif // LL_COMMANDMANAGER_H
+#endif // LL_LLCOMMANDMANAGER_H
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 8ed828efd3..bbd7706a11 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -27,9 +27,12 @@
#include "linden_common.h"
-#include "boost/foreach.hpp"
+#include
#include "lltoolbar.h"
+#include "llcommandmanager.h"
+#include "lltrans.h"
+
// uncomment this and remove the one in llui.cpp when there is an external reference to this translation unit
// thanks, MSVC!
//static LLDefaultChildRegistry::Register r1("toolbar");
@@ -74,6 +77,8 @@ LLToolBar::LLToolBar(const Params& p)
mMaxButtonWidth(p.max_button_width),
mBackgroundImage(p.background_image)
{
+ mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_ONLY] = p.button_icon;
+ mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text;
}
void LLToolBar::initFromParams(const LLToolBar::Params& p)
@@ -112,9 +117,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
{
// buttons always follow left and top, for all orientations
button_p.follows.flags = FOLLOWS_LEFT|FOLLOWS_TOP;
- button_p.fillFrom((mButtonType == BTNTYPE_ICONS_ONLY)
- ? p.button_icon // icon only
- : p.button_icon_and_text); // icon + text
+ button_p.fillFrom(mButtonParams[mButtonType]);
LLRect button_rect(button_p.rect);
{ // remove any offset from button
@@ -139,12 +142,58 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
}
}
+bool LLToolBar::addCommand(LLCommand * command)
+{
+ //
+ // Init basic toolbar button params
+ //
+
+ LLToolBarButton::Params button_p;
+ button_p.fillFrom(mButtonParams[mButtonType]);
+
+ button_p.name = command->name();
+ button_p.label = LLTrans::getString(command->labelRef());
+ button_p.tool_tip = LLTrans::getString(command->tooltipRef());
+
+ //
+ // Set up the button rectangle
+ //
+
+ S32 btn_width = mMinButtonWidth;
+ S32 btn_height = mButtonParams[mButtonType].rect.height;
+
+ if ((mSideType == LLToolBarEnums::SIDE_BOTTOM) || (mSideType == LLToolBarEnums::SIDE_TOP))
+ {
+ btn_height = getRect().getHeight();
+ }
+
+ LLRect button_rect;
+ button_rect.setOriginAndSize(0, 0, btn_width, btn_height);
+
+ button_p.rect = button_rect;
+
+ //
+ // Add it to the list of buttons
+ //
+
+ LLToolBarButton * toolbar_button = LLUICtrlFactory::create(button_p);
+
+ toolbar_button->reshape(llclamp(toolbar_button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), toolbar_button->getRect().getHeight());
+
+ mButtons.push_back(toolbar_button);
+ mCenterPanel->addChild(toolbar_button);
+
+ mNeedsLayout = true;
+
+ return true;
+}
+
void LLToolBar::updateLayoutAsNeeded()
{
if (!mNeedsLayout) return;
LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
-
+
// our terminology for orientation-agnostic layout is that
// length refers to a distance in the direction we stack the buttons
// and girth refers to a distance in the direction buttons wrap
@@ -160,8 +209,8 @@ void LLToolBar::updateLayoutAsNeeded()
std::vector buttons_in_row;
- BOOST_FOREACH(LLToolBarButton* button, mButtons)
- {
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
S32 button_clamped_width = llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth);
S32 button_length = (orientation == LLLayoutStack::HORIZONTAL)
? button_clamped_width
@@ -185,23 +234,23 @@ void LLToolBar::updateLayoutAsNeeded()
if (orientation == LLLayoutStack::HORIZONTAL)
{
button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
- }
+ }
else // VERTICAL
- {
+ {
button->reshape(max_row_girth, button->getRect().getHeight());
}
- }
+ }
buttons_in_row.clear();
row_running_length = 0;
cur_start = 0;
cur_row += max_row_girth;
max_row_girth = 0;
- }
+ }
LLRect button_rect;
if (orientation == LLLayoutStack::HORIZONTAL)
- {
+ {
button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
}
else // VERTICAL
@@ -209,7 +258,7 @@ void LLToolBar::updateLayoutAsNeeded()
button_rect.setLeftTopAndSize(cur_row, panel_rect.mTop - cur_start, button_clamped_width, button->getRect().getHeight());
}
button->setShape(button_rect);
-
+
buttons_in_row.push_back(button);
row_running_length += button_length;
@@ -237,7 +286,7 @@ void LLToolBar::updateLayoutAsNeeded()
translate(getRect().getWidth() - total_girth, 0);
}
reshape(total_girth, getRect().getHeight());
- }
+ }
// recenter toolbar buttons
mCenteringStack->updateLayout();
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 31729e32b4..85cd6d5170 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -33,6 +33,9 @@
#include "llbutton.h"
+class LLCommand;
+
+
class LLToolBarButton : public LLButton
{
public:
@@ -50,6 +53,8 @@ namespace LLToolBarEnums
{
BTNTYPE_ICONS_ONLY = 0,
BTNTYPE_ICONS_WITH_TEXT,
+
+ BTNTYPE_COUNT
};
enum SideType
@@ -107,6 +112,8 @@ public:
void draw();
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+ bool addCommand(LLCommand * command);
+
protected:
friend class LLUICtrlFactory;
LLToolBar(const Params&);
@@ -129,6 +136,8 @@ private:
mMaxButtonWidth;
LLUIImagePtr mBackgroundImage;
+
+ LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
};
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
index b4fb2e45ab..eaaaeb3357 100644
--- a/indra/newview/llfloatertoybox.cpp
+++ b/indra/newview/llfloatertoybox.cpp
@@ -29,12 +29,15 @@
#include "llfloatertoybox.h"
#include "llbutton.h"
+#include "llcommandmanager.h"
#include "llpanel.h"
+#include "lltoolbar.h"
LLFloaterToybox::LLFloaterToybox(const LLSD& key)
: LLFloater(key)
, mBtnRestoreDefaults(NULL)
+ , mToolBar(NULL)
{
mCommitCallbackRegistrar.add("Toybox.RestoreDefaults", boost::bind(&LLFloaterToybox::onBtnRestoreDefaults, this));
}
@@ -48,23 +51,20 @@ BOOL LLFloaterToybox::postBuild()
center();
mBtnRestoreDefaults = getChild("btn_restore_defaults");
+ mToolBar = getChild("toybox_toolbar");
//
// Create Buttons
//
-/*
- LLToyboxButtons::load();
- for (size_t i = 0; i < LLToyboxButtons::buttonCount(); i++)
- {
- LLToyboxButton * button = LLToyboxButtons::get(i);
+ LLCommandManager& cmdMgr = LLCommandManager::instance();
- // Panel opacity depends on whether or not button position is established
- LLPanel * buttonPanel = createPanelForButton(button);
+ for (U32 i = 0; i < cmdMgr.commandCount(); i++)
+ {
+ LLCommand * command = cmdMgr.getCommand(i);
- mToolBar->add(buttonPanel);
+ mToolBar->addCommand(command);
}
-*/
return TRUE;
}
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
index bb9392a0e3..3574e060bf 100644
--- a/indra/newview/llfloatertoybox.h
+++ b/indra/newview/llfloatertoybox.h
@@ -31,10 +31,10 @@
class LLButton;
+class LLToolBar;
-class LLFloaterToybox
-: public LLFloater
+class LLFloaterToybox : public LLFloater
{
public:
LLFloaterToybox(const LLSD& key);
@@ -53,6 +53,7 @@ protected:
public:
LLButton * mBtnRestoreDefaults;
+ LLToolBar * mToolBar;
};
#endif // LL_LLFLOATERTOYBOX_H
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index 1951497309..5f3a59d964 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -11,6 +11,7 @@
legacy_header_height="18"
name="Toybox"
open_centered="true"
+ save_rect="true"
single_instance="true"
title="Customize toolbars"
width="658">
@@ -45,7 +46,11 @@
Date: Thu, 22 Sep 2011 17:34:42 -0700
Subject: EXP-1239 WIP make toolbars wrap when there is not enough room toolbar
button height configured by button_height attribute vertical toolbar buttons
now share common width wrap attribute now controls wrapping
---
indra/llui/lltoolbar.cpp | 60 +++++++++++++---------
indra/llui/lltoolbar.h | 7 ++-
.../skins/default/xui/en/floater_test_toolbar.xml | 10 ++--
.../skins/default/xui/en/widgets/toolbar.xml | 23 ++++-----
4 files changed, 58 insertions(+), 42 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 8ed828efd3..e10a254197 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -59,6 +59,7 @@ LLToolBar::Params::Params()
wrap("wrap", true),
min_button_width("min_button_width", 0),
max_button_width("max_button_width", S32_MAX),
+ button_height("button_height"),
background_image("background_image")
{}
@@ -72,6 +73,7 @@ LLToolBar::LLToolBar(const Params& p)
mCenteringStack(NULL),
mMinButtonWidth(p.min_button_width),
mMaxButtonWidth(p.max_button_width),
+ mButtonHeight(p.button_height),
mBackgroundImage(p.background_image)
{
}
@@ -120,11 +122,11 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
{ // remove any offset from button
if (orientation == LLLayoutStack::HORIZONTAL)
{
- button_rect.setOriginAndSize(0, 0, mMinButtonWidth, button_rect.getHeight());
+ button_rect.setOriginAndSize(0, 0, mMinButtonWidth, mButtonHeight);
}
else // VERTICAL
{
- button_rect.setOriginAndSize(0, 0, mMinButtonWidth, button_rect.getHeight());
+ button_rect.setOriginAndSize(0, 0, mMinButtonWidth, mButtonHeight);
}
}
@@ -139,19 +141,38 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
}
}
+void LLToolBar::resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth)
+{
+ // make buttons in current row all same girth
+ BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
+ {
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+ {
+ button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
+ }
+ else // VERTICAL
+ {
+ button->reshape(max_row_girth, button->getRect().getHeight());
+ }
+ }
+}
+
void LLToolBar::updateLayoutAsNeeded()
{
if (!mNeedsLayout) return;
LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
- // our terminology for orientation-agnostic layout is that
+ // our terminology for orientation-agnostic layout is such that
// length refers to a distance in the direction we stack the buttons
// and girth refers to a distance in the direction buttons wrap
S32 row_running_length = 0;
S32 max_length = (orientation == LLLayoutStack::HORIZONTAL)
? getRect().getWidth()
: getRect().getHeight();
+ S32 max_total_girth = (orientation == LLLayoutStack::HORIZONTAL)
+ ? getRect().getHeight()
+ : getRect().getWidth();
S32 max_row_girth = 0;
S32 cur_start = 0;
S32 cur_row = 0;
@@ -170,27 +191,18 @@ void LLToolBar::updateLayoutAsNeeded()
? button->getRect().getHeight()
: button_clamped_width;
- // handle wrapping
- if (row_running_length + button_length > max_length
- && cur_start != 0) // not first button in row
- { // go ahead and wrap
+ // wrap if needed
+ if (mWrap
+ && row_running_length + button_length > max_length // out of room...
+ && cur_start != 0) // ...and not first button in row
+ {
if (orientation == LLLayoutStack::VERTICAL)
- {
- // row girth is clamped to allowable button widths
+ { // row girth (width in this case) is clamped to allowable button widths
max_row_girth = llclamp(max_row_girth, mMinButtonWidth, mMaxButtonWidth);
}
+
// make buttons in current row all same girth
- BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
- {
- if (orientation == LLLayoutStack::HORIZONTAL)
- {
- button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
- }
- else // VERTICAL
- {
- button->reshape(max_row_girth, button->getRect().getHeight());
- }
- }
+ resizeButtonsInRow(buttons_in_row, max_row_girth);
buttons_in_row.clear();
row_running_length = 0;
@@ -218,9 +230,11 @@ void LLToolBar::updateLayoutAsNeeded()
}
// final resizing in "girth" direction
- S32 total_girth = cur_row + max_row_girth; // increment by size of final row
+ S32 total_girth = cur_row // current row position...
+ + max_row_girth; // ...incremented by size of final row
+ resizeButtonsInRow(buttons_in_row, max_row_girth);
- // grow and optionally shift toolbar to accomodate buttons
+ // grow and optionally shift toolbar to accommodate buttons
if (orientation == LLLayoutStack::HORIZONTAL)
{
if (mSideType == SIDE_TOP)
@@ -239,7 +253,7 @@ void LLToolBar::updateLayoutAsNeeded()
reshape(total_girth, getRect().getHeight());
}
- // recenter toolbar buttons
+ // re-center toolbar buttons
mCenteringStack->updateLayout();
// don't clear flag until after we've resized ourselves, to avoid laying out every frame
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 31729e32b4..83e482a946 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -94,7 +94,8 @@ public:
Optional wrap;
Optional min_button_width,
- max_button_width;
+ max_button_width,
+ button_height;
// get rid of this
Multiple buttons;
@@ -115,6 +116,7 @@ protected:
private:
void updateLayoutAsNeeded();
+ void resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth);
std::list mButtons;
LLToolBarEnums::ButtonType mButtonType;
@@ -126,7 +128,8 @@ private:
bool mWrap;
bool mNeedsLayout;
S32 mMinButtonWidth,
- mMaxButtonWidth;
+ mMaxButtonWidth,
+ mButtonHeight;
LLUIImagePtr mBackgroundImage;
};
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index 85f0f104fc..da964b88e2 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -13,13 +13,16 @@
width="500"
left="0"
top="20"
- min_width="100"
+ min_button_width="0"
+ max_button_width="100"
side="top">
@@ -43,7 +46,6 @@
width="100"
right="500"
top="70"
- min_width="100"
side="right">
@@ -58,7 +60,7 @@
width="500"
left="0"
bottom="500"
- min_width="100"
+ min_button_width="100"
side="bottom">
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index a7f73c0c7c..f9cc9b7c69 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -1,15 +1,12 @@
-
-
-
+
+
+
--
cgit v1.3
From b9926e8f57787eb146b06260cc3d0260e34330ce Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Fri, 23 Sep 2011 02:29:53 -0500
Subject: SH-2244 Better VAO support -- still slower than non-VAO
implementation for some reason
---
indra/llrender/llrender.cpp | 2 +-
indra/llrender/llvertexbuffer.cpp | 862 ++++++++++-----------
indra/llrender/llvertexbuffer.h | 19 +-
indra/newview/app_settings/settings.xml | 2 +-
.../shaders/class1/deferred/alphaV.glsl | 5 +-
.../shaders/class1/deferred/diffuseV.glsl | 5 +-
.../shaders/class1/deferred/emissiveV.glsl | 5 +-
.../shaders/class1/deferred/fullbrightV.glsl | 5 +-
.../shaders/class1/objects/emissiveV.glsl | 5 +-
.../shaders/class2/deferred/alphaV.glsl | 5 +-
.../shaders/class2/objects/fullbrightShinyV.glsl | 5 +-
.../shaders/class2/objects/fullbrightV.glsl | 5 +-
.../shaders/class2/objects/shinyV.glsl | 5 +-
.../shaders/class2/objects/simpleV.glsl | 5 +-
indra/newview/llface.cpp | 20 +-
indra/newview/llspatialpartition.cpp | 2 +-
indra/newview/llsprite.cpp | 2 +-
indra/newview/llviewerjointmesh.cpp | 2 +-
indra/newview/llviewerjointmesh_sse.cpp | 2 +-
indra/newview/llviewerjointmesh_vec.cpp | 2 +-
indra/newview/llviewershadermgr.cpp | 1 +
indra/newview/llvoavatar.cpp | 4 +-
indra/newview/llvoground.cpp | 2 +-
indra/newview/llvopartgroup.cpp | 2 +-
indra/newview/llvosky.cpp | 8 +-
indra/newview/llvosurfacepatch.cpp | 4 +-
indra/newview/llvotree.cpp | 6 +-
indra/newview/llvovolume.cpp | 8 +-
indra/newview/llvowater.cpp | 2 +-
indra/newview/llvowlsky.cpp | 8 +-
indra/newview/pipeline.cpp | 2 +-
31 files changed, 508 insertions(+), 504 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index daeb58b279..685334555a 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -1821,7 +1821,7 @@ void LLRender::flush()
mBuffer->getColorStrider(mColorsp, 0, count);
}
- //only flush the part of the
+ mBuffer->flush();
mBuffer->setBuffer(immediate_mask);
if (mMode == LLRender::QUADS && sGLCoreProfile)
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 40a96eb407..a48669a300 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -150,19 +150,18 @@ U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] =
//static
-void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
+void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& sLastMask)
{
/*if (LLGLImmediate::sStarted)
{
llerrs << "Cannot use LLGLImmediate and LLVertexBuffer simultaneously!" << llendl;
}*/
- LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
-
- if (ref_mask != data_mask)
+ if (sLastMask != data_mask)
{
- llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
-
+
+ LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
U32 mask[] =
{
MAP_VERTEX,
@@ -174,6 +173,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
MAP_WEIGHT4,
MAP_BINORMAL,
MAP_CLOTHWEIGHT,
+ MAP_TEXTURE_INDEX,
};
U32 type[] =
@@ -187,6 +187,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
TYPE_WEIGHT4,
TYPE_BINORMAL,
TYPE_CLOTHWEIGHT,
+ TYPE_TEXTURE_INDEX-1,
};
GLenum array[] =
@@ -200,18 +201,20 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
0,
0,
0,
+ 0,
};
BOOL error = FALSE;
- for (U32 i = 0; i < 9; ++i)
+ for (U32 i = 0; i < 10; ++i)
{
S32 loc = -1;
- if (shader)
+
+ if (LLGLSLShader::sNoFixedFunction)
{
- loc = shader->getAttribLocation(type[i]);
+ loc = type[i];
}
-
- if (ref_mask & mask[i])
+
+ if (sLastMask & mask[i])
{ //was enabled
if (!(data_mask & mask[i]))
{ //needs to be disabled
@@ -219,12 +222,12 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
{
glDisableVertexAttribArrayARB(loc);
}
- else if (!shader)
+ else
{
glDisableClientState(array[i]);
}
}
- else if (gDebugGL && !shader && array[i])
+ else if (gDebugGL && !LLGLSLShader::sNoFixedFunction && array[i])
{ //needs to be enabled, make sure it was (DEBUG)
if (loc < 0 && !glIsEnabled(array[i]))
{
@@ -248,12 +251,12 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
{
glEnableVertexAttribArrayARB(loc);
}
- else if (!shader)
+ else
{
glEnableClientState(array[i]);
}
}
- else if (!shader && array[i] && gDebugGL && glIsEnabled(array[i]))
+ else if (!LLGLSLShader::sNoFixedFunction && array[i] && gDebugGL && glIsEnabled(array[i]))
{ //needs to be disabled, make sure it was (DEBUG TEMPORARY)
if (gDebugSession)
{
@@ -290,12 +293,13 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
for (U32 i = 0; i < 3; i++)
{
S32 loc = -1;
- if (shader)
+
+ if (LLGLSLShader::sNoFixedFunction)
{
- loc = shader->getAttribLocation(type_tc[i]);
+ loc = type_tc[i];
}
- if (ref_mask & map_tc[i])
+ if (sLastMask & map_tc[i])
{
if (!(data_mask & map_tc[i]))
{ //disable
@@ -303,7 +307,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
{
glDisableVertexAttribArrayARB(loc);
}
- else if (!shader)
+ else
{
glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -317,7 +321,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
{
glEnableVertexAttribArrayARB(loc);
}
- else if (!shader)
+ else
{
glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -326,9 +330,9 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
}
}
- if (!shader)
+ if (!LLGLSLShader::sNoFixedFunction)
{
- if (ref_mask & MAP_BINORMAL)
+ if (sLastMask & MAP_BINORMAL)
{
if (!(data_mask & MAP_BINORMAL))
{
@@ -345,7 +349,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& ref_mask)
}
}
- ref_mask = data_mask;
+ sLastMask = data_mask;
}
}
@@ -367,12 +371,12 @@ void LLVertexBuffer::drawArrays(U32 mode, const std::vector& pos, con
if (shader)
{
- S32 loc = shader->getAttribLocation(LLVertexBuffer::TYPE_VERTEX);
+ S32 loc = LLVertexBuffer::TYPE_VERTEX;
if (loc > -1)
{
glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 0, pos[0].mV);
}
- loc = shader->getAttribLocation(LLVertexBuffer::TYPE_NORMAL);
+ loc = LLVertexBuffer::TYPE_NORMAL;
if (loc > -1)
{
glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 0, norm[0].mV);
@@ -404,23 +408,15 @@ void LLVertexBuffer::drawElements(U32 mode, const LLVector4a* pos, const LLVecto
setupClientArrays(mask);
- LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
-
- if (shader)
+ if (LLGLSLShader::sNoFixedFunction)
{
- S32 loc = shader->getAttribLocation(LLVertexBuffer::TYPE_VERTEX);
- if (loc > -1)
- {
- glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 16, pos);
+ S32 loc = LLVertexBuffer::TYPE_VERTEX;
+ glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 16, pos);
- if (tc)
- {
- loc = shader->getAttribLocation(LLVertexBuffer::TYPE_TEXCOORD0);
- if (loc > -1)
- {
- glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, 0, tc);
- }
- }
+ if (tc)
+ {
+ loc = LLVertexBuffer::TYPE_TEXCOORD0;
+ glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, 0, tc);
}
}
else
@@ -470,14 +466,35 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
llassert(mRequestedNumVerts >= 0);
llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
- if (mGLIndices != sGLRenderIndices)
+ if (mGLArray)
{
- llerrs << "Wrong index buffer bound." << llendl;
+ if (mGLArray != sGLRenderArray)
+ {
+ llerrs << "Wrong vertex array bound." << llendl;
+ }
}
+ else
+ {
+ if (mGLIndices != sGLRenderIndices)
+ {
+ llerrs << "Wrong index buffer bound." << llendl;
+ }
- if (mGLBuffer != sGLRenderBuffer)
+ if (mGLBuffer != sGLRenderBuffer)
+ {
+ llerrs << "Wrong vertex buffer bound." << llendl;
+ }
+ }
+
+ if (gDebugGL && useVBOs())
{
- llerrs << "Wrong vertex buffer bound." << llendl;
+ GLint elem = 0;
+ glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &elem);
+
+ if (elem != mGLIndices)
+ {
+ llerrs << "Wrong index buffer bound!" << llendl;
+ }
}
if (mode >= LLRender::NUM_MODES)
@@ -508,14 +525,24 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
}
- if (mGLIndices != sGLRenderIndices)
+ if (mGLArray)
{
- llerrs << "Wrong index buffer bound." << llendl;
+ if (mGLArray != sGLRenderArray)
+ {
+ llerrs << "Wrong vertex array bound." << llendl;
+ }
}
-
- if (mGLBuffer != sGLRenderBuffer)
+ else
{
- llerrs << "Wrong vertex buffer bound." << llendl;
+ if (mGLIndices != sGLRenderIndices)
+ {
+ llerrs << "Wrong index buffer bound." << llendl;
+ }
+
+ if (mGLBuffer != sGLRenderBuffer)
+ {
+ llerrs << "Wrong vertex buffer bound." << llendl;
+ }
}
if (mode >= LLRender::NUM_MODES)
@@ -544,9 +571,19 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
llerrs << "Bad vertex buffer draw range: [" << first << ", " << first+count << "]" << llendl;
}
- if (mGLBuffer != sGLRenderBuffer || useVBOs() != sVBOActive)
+ if (mGLArray)
{
- llerrs << "Wrong vertex buffer bound." << llendl;
+ if (mGLArray != sGLRenderArray)
+ {
+ llerrs << "Wrong vertex array bound." << llendl;
+ }
+ }
+ else
+ {
+ if (mGLBuffer != sGLRenderBuffer || useVBOs() != sVBOActive)
+ {
+ llerrs << "Wrong vertex buffer bound." << llendl;
+ }
}
if (mode >= LLRender::NUM_MODES)
@@ -645,7 +682,6 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
mUsage(usage),
mGLBuffer(0),
mGLArray(0),
- mLastMask(0),
mGLIndices(0),
mMappedData(NULL),
mMappedIndexData(NULL),
@@ -686,12 +722,6 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
mOffsets[i] = 0;
}
- //initialize cached attrib pointers
- for (U32 i = 0; i < LL_MAX_VERTEX_ATTRIB_LOCATION; i++)
- {
- mLastPointer[i] = (void*) 0xFFFFFFFF;
- }
-
mTypeMask = typemask;
mSize = 0;
mAlignedOffset = 0;
@@ -1065,15 +1095,98 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
createGLBuffer();
createGLIndices();
+
if (gGLManager.mHasVertexArrayObject && useVBOs() && LLRender::sGLCoreProfile)
{
glGenVertexArrays(1, &mGLArray);
+ setupVertexArray();
}
}
sAllocatedBytes += getSize() + getIndicesSize();
}
+void LLVertexBuffer::setupVertexArray()
+{
+ bindGLArray();
+
+ U32 attrib_size[] =
+ {
+ 3, //TYPE_VERTEX,
+ 3, //TYPE_NORMAL,
+ 2, //TYPE_TEXCOORD0,
+ 2, //TYPE_TEXCOORD1,
+ 2, //TYPE_TEXCOORD2,
+ 2, //TYPE_TEXCOORD3,
+ 4, //TYPE_COLOR,
+ 1, //TYPE_EMISSIVE,
+ 3, //TYPE_BINORMAL,
+ 1, //TYPE_WEIGHT,
+ 4, //TYPE_WEIGHT4,
+ 4, //TYPE_CLOTHWEIGHT,
+ };
+
+ U32 attrib_type[] =
+ {
+ GL_FLOAT, //TYPE_VERTEX,
+ GL_FLOAT, //TYPE_NORMAL,
+ GL_FLOAT, //TYPE_TEXCOORD0,
+ GL_FLOAT, //TYPE_TEXCOORD1,
+ GL_FLOAT, //TYPE_TEXCOORD2,
+ GL_FLOAT, //TYPE_TEXCOORD3,
+ GL_UNSIGNED_BYTE, //TYPE_COLOR,
+ GL_UNSIGNED_BYTE, //TYPE_EMISSIVE,
+ GL_FLOAT, //TYPE_BINORMAL,
+ GL_FLOAT, //TYPE_WEIGHT,
+ GL_FLOAT, //TYPE_WEIGHT4,
+ GL_FLOAT, //TYPE_CLOTHWEIGHT,
+ };
+
+ U32 attrib_normalized[] =
+ {
+ GL_FALSE, //TYPE_VERTEX,
+ GL_FALSE, //TYPE_NORMAL,
+ GL_FALSE, //TYPE_TEXCOORD0,
+ GL_FALSE, //TYPE_TEXCOORD1,
+ GL_FALSE, //TYPE_TEXCOORD2,
+ GL_FALSE, //TYPE_TEXCOORD3,
+ GL_TRUE, //TYPE_COLOR,
+ GL_TRUE, //TYPE_EMISSIVE,
+ GL_FALSE, //TYPE_BINORMAL,
+ GL_FALSE, //TYPE_WEIGHT,
+ GL_FALSE, //TYPE_WEIGHT4,
+ GL_FALSE, //TYPE_CLOTHWEIGHT,
+ };
+
+ bindGLBuffer(true);
+ bindGLIndices(true);
+
+ for (U32 i = 0; i < TYPE_MAX; ++i)
+ {
+ if (mTypeMask & (1 << i))
+ {
+ glEnableVertexAttribArrayARB(i);
+ glVertexAttribPointerARB(i, attrib_size[i], attrib_type[i], attrib_normalized[i], sTypeSize[i], (void*) mOffsets[i]);
+ }
+ else
+ {
+ glDisableVertexAttribArrayARB(i);
+ }
+ }
+
+ if (mTypeMask & MAP_VERTEX)
+ { //special handling for texture index
+ S32 loc = TYPE_TEXTURE_INDEX-1;
+ glEnableVertexAttribArrayARB(loc);
+ glVertexAttribPointerARB(loc, 1, GL_FLOAT, GL_FALSE, sTypeSize[TYPE_VERTEX], (void*) (mOffsets[TYPE_VERTEX]+12));
+ }
+ else
+ {
+ glDisableVertexAttribArrayARB(TYPE_TEXTURE_INDEX-1);
+ }
+ glBindVertexArray(0);
+}
+
void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
{
llassert(newnverts >= 0);
@@ -1149,8 +1262,13 @@ void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
if (mResized && useVBOs())
{
- freeClientBuffer() ;
- setBuffer(0);
+ freeClientBuffer();
+ flush();
+
+ if (mGLArray)
+ { //if size changed, offsets changed
+ setupVertexArray();
+ }
}
}
@@ -1215,6 +1333,7 @@ bool expand_region(LLVertexBuffer::MappedRegion& region, S32 index, S32 count)
// Map for data access
U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_range)
{
+ bindGLBuffer(true);
LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);
if (mFinal)
{
@@ -1265,7 +1384,6 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
if (!mVertexLocked)
{
LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES);
- setBuffer(0, type);
mVertexLocked = TRUE;
sMappedCount++;
stop_glerror();
@@ -1380,6 +1498,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
{
LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);
+ bindGLIndices(true);
if (mFinal)
{
llerrs << "LLVertexBuffer::mapIndexBuffer() called on a finalized buffer." << llendl;
@@ -1427,11 +1546,21 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
{
LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES);
- setBuffer(0, TYPE_INDEX);
mIndexLocked = TRUE;
sMappedCount++;
stop_glerror();
+ if (gDebugGL && useVBOs())
+ {
+ GLint elem = 0;
+ glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &elem);
+
+ if (elem != mGLIndices)
+ {
+ llerrs << "Wrong index buffer bound!" << llendl;
+ }
+ }
+
if(sDisableVBOMapping)
{
map_range = false;
@@ -1528,19 +1657,20 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
}
}
-void LLVertexBuffer::unmapBuffer(S32 type)
+void LLVertexBuffer::unmapBuffer()
{
LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER);
- if (!useVBOs() || type == -2)
+ if (!useVBOs())
{
return ; //nothing to unmap
}
bool updated_all = false ;
- if (mMappedData && mVertexLocked && type != TYPE_INDEX)
+ if (mMappedData && mVertexLocked)
{
- updated_all = (mIndexLocked && type < 0) ; //both vertex and index buffers done updating
+ bindGLBuffer(true);
+ updated_all = mIndexLocked; //both vertex and index buffers done updating
if(sDisableVBOMapping)
{
@@ -1604,8 +1734,9 @@ void LLVertexBuffer::unmapBuffer(S32 type)
sMappedCount--;
}
- if (mMappedIndexData && mIndexLocked && (type < 0 || type == TYPE_INDEX))
+ if (mMappedIndexData && mIndexLocked)
{
+ bindGLIndices();
if(sDisableVBOMapping)
{
if (!mMappedIndexRegions.empty())
@@ -1785,16 +1916,131 @@ bool LLVertexBuffer::getClothWeightStrider(LLStrider& strider, S32 in
//----------------------------------------------------------------------------
+bool LLVertexBuffer::bindGLArray()
+{
+ if (mGLArray && sGLRenderArray != mGLArray)
+ {
+ glBindVertexArray(mGLArray);
+ sGLRenderArray = mGLArray;
+ return true;
+ }
+
+ return false;
+}
+
+bool LLVertexBuffer::bindGLBuffer(bool force_bind)
+{
+ bindGLArray();
+
+ bool ret = false;
+
+ if (useVBOs() && (force_bind || (mGLBuffer && (mGLBuffer != sGLRenderBuffer || !sVBOActive))))
+ {
+ /*if (sMapped)
+ {
+ llerrs << "VBO bound while another VBO mapped!" << llendl;
+ }*/
+ glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer);
+ sGLRenderBuffer = mGLBuffer;
+ sBindCount++;
+ sVBOActive = TRUE;
+
+ if (mGLArray)
+ {
+ llassert(sGLRenderArray == mGLArray);
+ //mCachedRenderBuffer = mGLBuffer;
+ }
+
+ ret = true;
+ }
+
+ if (gDebugGL && useVBOs())
+ {
+ GLint elem = 0;
+ glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &elem);
+
+ if (elem != mGLBuffer)
+ {
+ llerrs << "Wrong vertex buffer bound!" << llendl;
+ }
+ }
+
+ return ret;
+}
+
+bool LLVertexBuffer::bindGLIndices(bool force_bind)
+{
+ bindGLArray();
+
+ bool ret = false;
+ if (useVBOs() && (force_bind || (mGLIndices && (mGLIndices != sGLRenderIndices || !sIBOActive))))
+ {
+ /*if (sMapped)
+ {
+ llerrs << "VBO bound while another VBO mapped!" << llendl;
+ }*/
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);
+ sGLRenderIndices = mGLIndices;
+ stop_glerror();
+ sBindCount++;
+ sIBOActive = TRUE;
+ ret = true;
+ }
+
+ if (gDebugGL && useVBOs())
+ {
+ GLint elem = 0;
+ glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &elem);
+
+ if (elem != mGLIndices)
+ {
+ llerrs << "Wrong index buffer bound!" << llendl;
+ }
+ }
+
+ return ret;
+}
+
+void LLVertexBuffer::flush()
+{
+ if (useVBOs())
+ {
+ if (mResized)
+ {
+ if (mGLBuffer)
+ {
+ stop_glerror();
+ bindGLBuffer(true);
+ glBufferDataARB(GL_ARRAY_BUFFER_ARB, getSize(), NULL, mUsage);
+ stop_glerror();
+ }
+ if (mGLIndices)
+ {
+ stop_glerror();
+ bindGLIndices(true);
+ glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, getIndicesSize(), NULL, mUsage);
+ stop_glerror();
+ }
+
+ mEmpty = TRUE;
+ mResized = FALSE;
+ }
+
+ unmapBuffer();
+ }
+}
+
// Set for rendering
-void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
+void LLVertexBuffer::setBuffer(U32 data_mask)
{
+ flush();
+
LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER);
//set up pointers if the data mask is different ...
- U32& ref_mask = mGLArray ? mLastMask : sLastMask;
- BOOL setup = (ref_mask != data_mask);
+ BOOL setup = (sLastMask != data_mask);
if (gDebugGL && data_mask != 0)
- {
+ { //make sure data requirements are fulfilled
LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
if (shader)
{
@@ -1823,37 +2069,25 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
if (useVBOs())
{
- if (mGLArray && mGLArray != sGLRenderArray)
+ if (mGLArray)
{
- glBindVertexArray(mGLArray);
- sGLRenderArray = mGLArray;
+ bindGLArray();
+ setup = FALSE; //do NOT perform pointer setup if using VAO
}
-
- if (mGLBuffer && (mGLBuffer != sGLRenderBuffer || !sVBOActive))
+ else
{
- /*if (sMapped)
+ if (bindGLBuffer())
{
- llerrs << "VBO bound while another VBO mapped!" << llendl;
- }*/
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer);
- sBindCount++;
- sVBOActive = TRUE;
- setup = TRUE; // ... or the bound buffer changed
- }
- if (mGLIndices && (mGLIndices != sGLRenderIndices || !sIBOActive))
- {
- /*if (sMapped)
+ setup = TRUE;
+ }
+ if (bindGLIndices())
{
- llerrs << "VBO bound while another VBO mapped!" << llendl;
- }*/
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);
- stop_glerror();
- sBindCount++;
- sIBOActive = TRUE;
+ setup = TRUE;
+ }
}
BOOL error = FALSE;
- if (gDebugGL)
+ if (gDebugGL && !mGLArray)
{
GLint buff;
glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff);
@@ -1888,81 +2122,16 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
}
}
- if (mResized)
+
+ }
+ else
+ {
+ if (sGLRenderArray)
{
- if (gDebugGL)
- {
- GLint buff;
- glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff);
- if ((GLuint)buff != mGLBuffer)
- {
- if (gDebugSession)
- {
- error = TRUE;
- gFailLog << "Invalid GL vertex buffer bound: " << std::endl;
- }
- else
- {
- llerrs << "Invalid GL vertex buffer bound: " << buff << llendl;
- }
- }
-
- if (mGLIndices != 0)
- {
- glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff);
- if ((GLuint)buff != mGLIndices)
- {
- if (gDebugSession)
- {
- error = TRUE;
- gFailLog << "Invalid GL index buffer bound: "<< std::endl;
- }
- else
- {
- llerrs << "Invalid GL index buffer bound: " << buff << llendl;
- }
- }
- }
- }
-
- if (mGLBuffer)
- {
- stop_glerror();
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, getSize(), NULL, mUsage);
- stop_glerror();
- }
- if (mGLIndices)
- {
- stop_glerror();
- glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, getIndicesSize(), NULL, mUsage);
- stop_glerror();
- }
-
- mEmpty = TRUE;
- mResized = FALSE;
-
- if (data_mask != 0)
- {
- if (gDebugSession)
- {
- error = TRUE;
- gFailLog << "Buffer set for rendering before being filled after resize." << std::endl;
- }
- else
- {
- llerrs << "Buffer set for rendering before being filled after resize." << llendl;
- }
- }
+ glBindVertexArray(0);
+ sGLRenderArray = 0;
}
- if (error)
- {
- ll_fail("LLVertexBuffer::mapBuffer failed");
- }
- unmapBuffer(type);
- }
- else
- {
if (mGLBuffer)
{
if (sVBOActive)
@@ -1974,30 +2143,30 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
}
if (sGLRenderBuffer != mGLBuffer)
{
+ sGLRenderBuffer = mGLBuffer;
setup = TRUE; // ... or a client memory pointer changed
}
}
- if (mGLIndices && sIBOActive)
+ if (mGLIndices)
{
- /*if (sMapped)
+ if (sIBOActive)
{
- llerrs << "VBO unbound while potentially mapped!" << llendl;
- }*/
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
- sBindCount++;
- sIBOActive = FALSE;
+ glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+ sBindCount++;
+ sIBOActive = FALSE;
+ }
+
+ sGLRenderIndices = mGLIndices;
}
}
- setupClientArrays(data_mask, ref_mask);
-
- if (mGLIndices)
+ if (!mGLArray)
{
- sGLRenderIndices = mGLIndices;
+ setupClientArrays(data_mask, sLastMask);
}
+
if (mGLBuffer)
{
- sGLRenderBuffer = mGLBuffer;
if (data_mask && setup)
{
setupVertexBuffer(data_mask); // subclass specific setup (virtual function)
@@ -2007,319 +2176,140 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
}
// virtual (default)
-void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
+void LLVertexBuffer::setupVertexBuffer(U32 data_mask)
{
LLMemType mt2(LLMemType::MTYPE_VERTEX_SETUP_VERTEX_BUFFER);
stop_glerror();
U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
- if ((data_mask & mTypeMask) != data_mask)
+ /*if ((data_mask & mTypeMask) != data_mask)
{
llerrs << "LLVertexBuffer::setupVertexBuffer missing required components for supplied data mask." << llendl;
- }
-
- LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
-
- //assert that fixed function is allowed OR a shader is currently bound
- llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+ }*/
- if (data_mask & MAP_NORMAL)
+ if (LLGLSLShader::sNoFixedFunction)
{
- S32 loc = -1;
- if (shader)
- {
- loc = shader->getAttribLocation(TYPE_NORMAL);
- }
-
- if (loc >= 0)
+ if (data_mask & MAP_NORMAL)
{
+ S32 loc = TYPE_NORMAL;
void* ptr = (void*)(base + mOffsets[TYPE_NORMAL]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
- }
- else if (!shader)
- {
- glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
- }
- }
- if (data_mask & MAP_TEXCOORD3)
- {
- S32 loc = -1;
- if (shader)
- {
- loc = shader->getAttribLocation(TYPE_TEXCOORD3);
+ glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr);
}
-
- if (loc >= 0)
+ if (data_mask & MAP_TEXCOORD3)
{
+ S32 loc = TYPE_TEXCOORD3;
void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD3]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
- }
- else if (!shader)
- {
- glClientActiveTextureARB(GL_TEXTURE3_ARB);
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr);
}
- }
- if (data_mask & MAP_TEXCOORD2)
- {
- S32 loc = -1;
- if (shader)
- {
- loc = shader->getAttribLocation(TYPE_TEXCOORD2);
- }
-
- if (loc >= 0)
+ if (data_mask & MAP_TEXCOORD2)
{
+ S32 loc = TYPE_TEXCOORD2;
void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD2]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
- }
- else if (!shader)
- {
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr);
}
- }
- if (data_mask & MAP_TEXCOORD1)
- {
- S32 loc = -1;
- if (shader)
- {
- loc = shader->getAttribLocation(TYPE_TEXCOORD1);
- }
-
- if (loc >= 0)
+ if (data_mask & MAP_TEXCOORD1)
{
+ S32 loc = TYPE_TEXCOORD1;
void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD1]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
- }
- else if (!shader)
- {
- glClientActiveTextureARB(GL_TEXTURE1_ARB);
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr);
}
- }
- if (data_mask & MAP_BINORMAL)
- {
- S32 loc = -1;
- if (shader)
- {
- loc = shader->getAttribLocation(TYPE_BINORMAL);
- }
-
- if (loc >= 0)
+ if (data_mask & MAP_BINORMAL)
{
+ S32 loc = TYPE_BINORMAL;
void* ptr = (void*)(base + mOffsets[TYPE_BINORMAL]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
- }
- else if (!shader)
- {
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
- glTexCoordPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
- glClientActiveTextureARB(GL_TEXTURE0_ARB);
+ glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], ptr);
}
- }
- if (data_mask & MAP_TEXCOORD0)
- {
- S32 loc = -1;
- if (shader)
- {
- loc = shader->getAttribLocation(TYPE_TEXCOORD0);
- }
-
- if (loc >= 0)
+ if (data_mask & MAP_TEXCOORD0)
{
+ S32 loc = TYPE_TEXCOORD0;
void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD0]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
+ glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr);
}
- else if (!shader)
+ if (data_mask & MAP_COLOR)
{
- glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
+ S32 loc = TYPE_COLOR;
+ void* ptr = (void*)(base + mOffsets[TYPE_COLOR]);
+ glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr);
}
- }
- if (data_mask & MAP_COLOR)
- {
- S32 loc = -1;
- if (shader)
+ if (data_mask & MAP_EMISSIVE)
{
- loc = shader->getAttribLocation(TYPE_COLOR);
+ S32 loc = TYPE_EMISSIVE;
+ void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]);
+ glVertexAttribPointerARB(loc, 1, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);
}
-
- if (loc >= 0)
+ if (data_mask & MAP_WEIGHT)
{
- void* ptr = (void*)(base + mOffsets[TYPE_COLOR]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
+ S32 loc = TYPE_WEIGHT;
+ void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT]);
+ glVertexAttribPointerARB(loc, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr);
}
- else if (!shader)
+ if (data_mask & MAP_WEIGHT4)
{
- glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
+ S32 loc = TYPE_WEIGHT4;
+ void* ptr = (void*)(base+mOffsets[TYPE_WEIGHT4]);
+ glVertexAttribPointerARB(loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr);
}
- }
- if (data_mask & MAP_EMISSIVE)
- {
- S32 loc = -1;
- if (shader)
+ if (data_mask & MAP_CLOTHWEIGHT)
{
- loc = shader->getAttribLocation(TYPE_EMISSIVE);
+ S32 loc = TYPE_CLOTHWEIGHT;
+ void* ptr = (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]);
+ glVertexAttribPointerARB(loc, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr);
}
-
- if (loc >= 0)
+ if (data_mask & MAP_TEXTURE_INDEX)
{
- void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 1, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
+ S32 loc = TYPE_TEXTURE_INDEX-1; //hack, texture index attrib location is off by one
+ void *ptr = (void*) (base + mOffsets[TYPE_VERTEX] + 12);
+ glVertexAttribPointerARB(loc, 1, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr);
}
- }
- if (data_mask & MAP_WEIGHT)
+ if (data_mask & MAP_VERTEX)
+ {
+ S32 loc = TYPE_VERTEX;
+ void* ptr = (void*)(base + mOffsets[TYPE_VERTEX]);
+ glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ }
+ }
+ else
{
- S32 loc = -1;
- if (shader)
+ if (data_mask & MAP_NORMAL)
{
- loc = shader->getAttribLocation(TYPE_WEIGHT);
+ glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
}
-
- if (loc > -1)
+ if (data_mask & MAP_TEXCOORD3)
{
- void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
+ glClientActiveTextureARB(GL_TEXTURE3_ARB);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
- }
-
- if (data_mask & MAP_WEIGHT4)
- {
- if (shader)
+ if (data_mask & MAP_TEXCOORD2)
{
- S32 loc = shader->getAttribLocation(TYPE_WEIGHT4);
- if (loc > -1)
- {
- void* ptr = (void*)(base+mOffsets[TYPE_WEIGHT4]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
- }
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
- }
-
- if (data_mask & MAP_CLOTHWEIGHT)
- {
- S32 loc = -1;
- if (shader)
+ if (data_mask & MAP_TEXCOORD1)
{
- loc = shader->getAttribLocation(TYPE_CLOTHWEIGHT);
+ glClientActiveTextureARB(GL_TEXTURE1_ARB);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
-
- if (loc > -1)
+ if (data_mask & MAP_BINORMAL)
{
- void* ptr = (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]);
- if (mLastPointer[loc] != ptr)
- {
- glVertexAttribPointerARB(loc, 4, GL_FLOAT, TRUE, LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr);
- }
- if (mGLArray)
- {
- mLastPointer[loc] = ptr;
- }
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glTexCoordPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
- }
- if (data_mask & MAP_VERTEX)
- {
- S32 loc = -1;
- if (shader)
+ if (data_mask & MAP_TEXCOORD0)
{
- loc = shader->getAttribLocation(TYPE_VERTEX);
+ glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
}
-
- if (loc >= 0)
+ if (data_mask & MAP_COLOR)
{
- if (data_mask & MAP_TEXTURE_INDEX)
- {
- glVertexAttribPointerARB(loc, 4,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
- }
- else
- {
- glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
- }
+ glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
}
- else if (!shader)
+ if (data_mask & MAP_VERTEX)
{
- if (data_mask & MAP_TEXTURE_INDEX)
- {
- glVertexPointer(4,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
- }
- else
- {
- glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
- }
- }
+ glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+ }
}
llglassertok();
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index 60cfde39f5..eba10dbaa5 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -139,6 +139,7 @@ public:
// 3 - modify LLVertexBuffer::setupVertexBuffer
// 4 - modify LLVertexBuffer::setupClientArray
// 5 - modify LLViewerShaderMgr::mReservedAttribs
+ // 6 - update LLVertexBuffer::setupVertexArray
enum {
TYPE_VERTEX,
TYPE_NORMAL,
@@ -154,10 +155,9 @@ public:
TYPE_WEIGHT4,
TYPE_CLOTHWEIGHT,
TYPE_MAX,
- TYPE_INDEX,
-
//no actual additional data, but indicates position.w is texture index
TYPE_TEXTURE_INDEX,
+ TYPE_INDEX,
};
enum {
MAP_VERTEX = (1<Type
Boolean
Value
- 1
+ 0
RenderDebugNormalScale
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index 9920caf7f6..74ee082bed 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -28,7 +28,8 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -97,7 +98,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
index 36000b86d6..908f3abcd0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
@@ -27,7 +27,8 @@ uniform mat3 normal_matrix;
uniform mat4 texture_matrix0;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec2 texcoord0;
@@ -43,7 +44,7 @@ void main()
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vary_normal = normalize(normal_matrix * normal);
vertex_color = diffuse_color;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
index b3558be678..50e92c191b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
@@ -27,7 +27,8 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE float emissive;
ATTRIBUTE vec2 texcoord0;
@@ -48,7 +49,7 @@ void main()
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
vec4 pos = (modelview_matrix * vert);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
index ef9f62da84..ab638991f7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
@@ -28,7 +28,8 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -49,7 +50,7 @@ void main()
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
vec4 pos = (modelview_matrix * vert);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
index 0e05beac67..77b0806bfc 100644
--- a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
@@ -27,7 +27,8 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE float emissive;
ATTRIBUTE vec2 texcoord0;
@@ -42,7 +43,7 @@ VARYING float fog_depth;
void main()
{
//transform vertex
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 268e4127a2..6a3777c7c8 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -28,7 +28,8 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -96,7 +97,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
index ef97e4f781..580ef2694f 100644
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
@@ -36,7 +36,8 @@ uniform vec4 origin;
VARYING float vary_texture_index;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -50,7 +51,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
index 2fd22cee9d..09dbd0b6cd 100644
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
@@ -27,7 +27,8 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
@@ -44,7 +45,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
index 472ff219e5..86c592ea57 100644
--- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
@@ -29,7 +29,8 @@ uniform mat4 texture_matrix1;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
@@ -51,7 +52,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
index 144336417e..8e8f0664b0 100644
--- a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
@@ -28,7 +28,8 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-ATTRIBUTE vec4 position;
+ATTRIBUTE vec3 position;
+ATTRIBUTE float texture_index;
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
@@ -45,7 +46,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = position.w;
+ vary_texture_index = texture_index;
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 7ae11bff94..d36379b0e7 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1216,7 +1216,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1441,7 +1441,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
else
@@ -1588,7 +1588,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
if (do_bump)
@@ -1625,7 +1625,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
}
@@ -1675,7 +1675,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1695,7 +1695,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1715,7 +1715,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1727,7 +1727,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
LLVector4a::memcpyNonAliased16((F32*) weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32));
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1757,7 +1757,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
@@ -1796,7 +1796,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (map_range)
{
- mVertexBuffer->setBuffer(0);
+ mVertexBuffer->flush();
}
}
if (rebuild_tcoord)
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index db5e4a2fb5..cc92ab4539 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -320,7 +320,7 @@ void LLSpatialGroup::buildOcclusion()
}
{
- mOcclusionVerts->setBuffer(0);
+ mOcclusionVerts->flush();
}
clearState(LLSpatialGroup::OCCLUSION_DIRTY);
diff --git a/indra/newview/llsprite.cpp b/indra/newview/llsprite.cpp
index 4bde2dfcab..c3eb70f850 100644
--- a/indra/newview/llsprite.cpp
+++ b/indra/newview/llsprite.cpp
@@ -243,7 +243,7 @@ void LLSprite::updateFace(LLFace &face)
*indicesp++ = 3 + index_offset;
}
- face.getVertexBuffer()->setBuffer(0);
+ face.getVertexBuffer()->flush();
face.mCenterAgent = mPosition;
}
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 59835028a1..331eb8b8f4 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -817,7 +817,7 @@ void LLViewerJointMesh::updateGeometryOriginal(LLFace *mFace, LLPolyMesh *mMesh)
}
}
- buffer->setBuffer(0);
+ buffer->flush();
}
const U32 UPDATE_GEOMETRY_CALL_MASK = 0x1FFF; // 8K samples before overflow
diff --git a/indra/newview/llviewerjointmesh_sse.cpp b/indra/newview/llviewerjointmesh_sse.cpp
index 400b49d046..00ed47e091 100644
--- a/indra/newview/llviewerjointmesh_sse.cpp
+++ b/indra/newview/llviewerjointmesh_sse.cpp
@@ -101,7 +101,7 @@ void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh)
((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
}
- buffer->setBuffer(0);
+ buffer->flush();
}
#else
diff --git a/indra/newview/llviewerjointmesh_vec.cpp b/indra/newview/llviewerjointmesh_vec.cpp
index 6600d01d17..a8713b6f05 100644
--- a/indra/newview/llviewerjointmesh_vec.cpp
+++ b/indra/newview/llviewerjointmesh_vec.cpp
@@ -92,6 +92,6 @@ void LLViewerJointMesh::updateGeometryVectorized(LLFace *face, LLPolyMesh *mesh)
((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
}
- buffer->setBuffer(0);
+ buffer->flush();
#endif
}
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index d1d3334fed..b0d97ee5f6 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -317,6 +317,7 @@ void LLViewerShaderMgr::initAttribsAndUniforms(void)
mReservedAttribs.push_back("weight");
mReservedAttribs.push_back("weight4");
mReservedAttribs.push_back("clothing");
+ mReservedAttribs.push_back("texture_index");
mAvatarUniforms.push_back("matrixPalette");
mAvatarUniforms.push_back("gWindDir");
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 7c6a815def..2a670275a3 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2142,7 +2142,7 @@ void LLVOAvatar::updateMeshData()
}
stop_glerror();
- buff->setBuffer(0);
+ buff->flush();
if(!f_num)
{
@@ -4132,7 +4132,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
LLVertexBuffer* vb = mDrawable->getFace(0)->getVertexBuffer();
if (vb)
{
- vb->setBuffer(0);
+ vb->flush();
}
}
}
diff --git a/indra/newview/llvoground.cpp b/indra/newview/llvoground.cpp
index ce256fdedf..0060f81ab5 100644
--- a/indra/newview/llvoground.cpp
+++ b/indra/newview/llvoground.cpp
@@ -162,7 +162,7 @@ BOOL LLVOGround::updateGeometry(LLDrawable *drawable)
*(texCoordsp++) = LLVector2(0.f, 1.f);
*(texCoordsp++) = LLVector2(0.5f, 0.5f);
- face->getVertexBuffer()->setBuffer(0);
+ face->getVertexBuffer()->flush();
LLPipeline::sCompiles++;
return TRUE;
}
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
index a4b0910c92..d7edc94c2f 100644
--- a/indra/newview/llvopartgroup.cpp
+++ b/indra/newview/llvopartgroup.cpp
@@ -513,7 +513,7 @@ void LLParticlePartition::getGeometry(LLSpatialGroup* group)
}
}
- buffer->setBuffer(0);
+ buffer->flush();
mFaceList.clear();
}
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 29ca16ede6..d90c3be6c7 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -1267,7 +1267,7 @@ void LLVOSky::updateDummyVertexBuffer()
LLStrider vertices ;
mFace[FACE_DUMMY]->getVertexBuffer()->getVertexStrider(vertices, 0);
*vertices = mCameraPosAgent ;
- mFace[FACE_DUMMY]->getVertexBuffer()->setBuffer(0) ;
+ mFace[FACE_DUMMY]->getVertexBuffer()->flush();
}
//----------------------------------
//end of fake vertex buffer updating
@@ -1351,7 +1351,7 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
*indicesp++ = index_offset + 3;
*indicesp++ = index_offset + 2;
- buff->setBuffer(0);
+ buff->flush();
}
}
@@ -1516,7 +1516,7 @@ BOOL LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, cons
*indicesp++ = index_offset + 2;
*indicesp++ = index_offset + 3;
- facep->getVertexBuffer()->setBuffer(0);
+ facep->getVertexBuffer()->flush();
if (is_sun)
{
@@ -2030,7 +2030,7 @@ void LLVOSky::updateReflectionGeometry(LLDrawable *drawable, F32 H,
}
}
- face->getVertexBuffer()->setBuffer(0);
+ face->getVertexBuffer()->flush();
}
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 7e00350926..bc82b0df13 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -57,7 +57,7 @@ public:
};
// virtual
- void setupVertexBuffer(U32 data_mask) const
+ void setupVertexBuffer(U32 data_mask)
{
if (LLGLSLShader::sNoFixedFunction)
{ //just use default if shaders are in play
@@ -1122,7 +1122,7 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
index_offset += facep->getGeomCount();
}
- buffer->setBuffer(0);
+ buffer->flush();
mFaceList.clear();
}
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 4cef0f5b5b..6486fd24ea 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -858,7 +858,7 @@ BOOL LLVOTree::updateGeometry(LLDrawable *drawable)
slices /= 2;
}
- mReferenceBuffer->setBuffer(0);
+ mReferenceBuffer->flush();
llassert(vertex_count == max_vertices);
llassert(index_count == max_indices);
}
@@ -940,8 +940,8 @@ void LLVOTree::updateMesh()
genBranchPipeline(vertices, normals, tex_coords, indices, idx_offset, scale_mat, mTrunkLOD, stop_depth, mDepth, mTrunkDepth, 1.0, mTwist, droop, mBranches, alpha);
- mReferenceBuffer->setBuffer(0);
- buff->setBuffer(0);
+ mReferenceBuffer->flush();
+ buff->flush();
}
void LLVOTree::appendMesh(LLStrider& vertices,
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 3b31100305..c56a62a41b 100755
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -4422,7 +4422,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
for (std::set::iterator iter = mapped_buffers.begin(); iter != mapped_buffers.end(); ++iter)
{
- (*iter)->setBuffer(0);
+ (*iter)->flush();
}
// don't forget alpha
@@ -4430,7 +4430,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
!group->mVertexBuffer.isNull() &&
group->mVertexBuffer->isLocked())
{
- group->mVertexBuffer->setBuffer(0);
+ group->mVertexBuffer->flush();
}
//if not all buffers are unmapped
@@ -4446,7 +4446,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
LLVertexBuffer* buff = face->getVertexBuffer();
if (face && buff && buff->isLocked())
{
- buff->setBuffer(0) ;
+ buff->flush();
}
}
}
@@ -4852,7 +4852,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
++face_iter;
}
- buffer->setBuffer(0);
+ buffer->flush();
}
group->mBufferMap[mask].clear();
diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp
index e70ac0a2e7..75198c465b 100644
--- a/indra/newview/llvowater.cpp
+++ b/indra/newview/llvowater.cpp
@@ -231,7 +231,7 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
}
}
- buff->setBuffer(0);
+ buff->flush();
mDrawable->movePartition();
LLPipeline::sCompiles++;
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index 824cb8a15f..c26aefb28f 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -326,7 +326,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
buildFanBuffer(vertices, texCoords, indices);
- mFanVerts->setBuffer(0);
+ mFanVerts->flush();
}
{
@@ -388,7 +388,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
buildStripsBuffer(begin_stack, end_stack, vertices, texCoords, indices);
// and unlock the buffer
- segment->setBuffer(0);
+ segment->flush();
}
}
#else
@@ -468,7 +468,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
}
}
- mStripsVerts->setBuffer(0);
+ mStripsVerts->flush();
#endif
updateStarColors();
@@ -826,6 +826,6 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
*(colorsp++) = LLColor4U(mStarColors[vtx]);
}
- mStarsVerts->setBuffer(0);
+ mStarsVerts->flush();
return TRUE;
}
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 0fbe030832..28391bf423 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -6553,7 +6553,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
v[1] = LLVector3(-1,3,0);
v[2] = LLVector3(3,-1,0);
- buff->setBuffer(0);
+ buff->flush();
LLGLDisable blend(GL_BLEND);
--
cgit v1.3
From c80df5ac39e31fb17fa8a1158cbea2de8faf0319 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Fri, 23 Sep 2011 18:00:35 +0300
Subject: STORM-1612 FIXED Implemented click-to-walk in Advanced mode.
Changes:
* Click and double click in-world can now trigger click-to-walk or
click-to-teleport actions, depending on preferences.
* Grouped keyboard- and mouse-related settings in Preferences -> Move.
---
indra/newview/app_settings/settings.xml | 11 ++
indra/newview/llfloaterpreference.cpp | 166 +++++++++++++--------
indra/newview/llfloaterpreference.h | 27 ++--
indra/newview/lltoolpie.cpp | 157 ++++++++++++++-----
indra/newview/lltoolpie.h | 8 +
.../default/xui/en/panel_preferences_move.xml | 148 ++++++++++++++----
6 files changed, 384 insertions(+), 133 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 8804c40aff..5ffbbc6163 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -13564,6 +13564,17 @@
Type
Boolean
Value
+ 1
+
+ ClickToTeleport
+
+ Comment
+ Click in world to teleport to location
+ Persist
+ 1
+ Type
+ Boolean
+ Value
0
ShowOfferedInventory
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d65928e385..5dd1cc3b97 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -304,7 +304,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mOriginalIMViaEmail(false),
mLanguageChanged(false),
mAvatarDataInitialized(false),
- mDoubleClickActionDirty(false)
+ mClickActionDirty(false)
{
//Build Floater is now Called from LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
@@ -348,8 +348,10 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
sSkin = gSavedSettings.getString("SkinCurrent");
- mCommitCallbackRegistrar.add("Pref.CommitDoubleClickChekbox", boost::bind(&LLFloaterPreference::onDoubleClickCheckBox, this, _1));
- mCommitCallbackRegistrar.add("Pref.CommitRadioDoubleClick", boost::bind(&LLFloaterPreference::onDoubleClickRadio, this));
+ mCommitCallbackRegistrar.add("Pref.CommitClickToWalkCheckbox", boost::bind(&LLFloaterPreference::onWalkCheckboxCommit, this));
+ mCommitCallbackRegistrar.add("Pref.CommitClickToTeleportCheckbox", boost::bind(&LLFloaterPreference::onTeleportCheckboxCommit, this));
+ mCommitCallbackRegistrar.add("Pref.CommitWalkTriggerRadio", boost::bind(&LLFloaterPreference::onWalkTriggerRadioCommit, this));
+ mCommitCallbackRegistrar.add("Pref.CommitTeleportTriggerRadio", boost::bind(&LLFloaterPreference::onTeleportTriggerRadioCommit, this));
gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
gSavedSettings.getControl("NameTagShowFriends")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
@@ -439,8 +441,6 @@ BOOL LLFloaterPreference::postBuild()
if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
tabcontainer->selectFirstTab();
- updateDoubleClickControls();
-
getChild("cache_location")->setEnabled(FALSE); // make it read-only but selectable (STORM-227)
std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
setCacheLocation(cache_location);
@@ -581,10 +581,10 @@ void LLFloaterPreference::apply()
saveAvatarProperties();
- if (mDoubleClickActionDirty)
+ if (mClickActionDirty)
{
- updateDoubleClickSettings();
- mDoubleClickActionDirty = false;
+ updateClickActionSettings();
+ mClickActionDirty = false;
}
}
@@ -613,11 +613,12 @@ void LLFloaterPreference::cancel()
// reverts any changes to current skin
gSavedSettings.setString("SkinCurrent", sSkin);
- if (mDoubleClickActionDirty)
+ if (mClickActionDirty)
{
- updateDoubleClickControls();
- mDoubleClickActionDirty = false;
+ updateClickActionControls();
+ mClickActionDirty = false;
}
+
LLFloaterPreferenceProxy * advanced_proxy_settings = LLFloaterReg::findTypedInstance("prefs_proxy");
if (advanced_proxy_settings)
{
@@ -681,6 +682,9 @@ void LLFloaterPreference::onOpen(const LLSD& key)
// Display selected maturity icons.
onChangeMaturity();
+
+ // Load (double-)click to walk/teleport settings.
+ updateClickActionControls();
// Enabled/disabled popups, might have been changed by user actions
// while preferences floater was closed.
@@ -1503,72 +1507,116 @@ void LLFloaterPreference::onClickBlockList()
}
}
-void LLFloaterPreference::onDoubleClickCheckBox(LLUICtrl* ctrl)
+void LLFloaterPreference::onClickProxySettings()
{
- if (!ctrl) return;
- mDoubleClickActionDirty = true;
- LLRadioGroup* radio_double_click_action = getChild("double_click_action");
- if (!radio_double_click_action) return;
- // select default value("teleport") in radio-group.
- radio_double_click_action->setSelectedIndex(0);
- // set radio-group enabled depending on state of checkbox
- radio_double_click_action->setEnabled(ctrl->getValue());
+ LLFloaterReg::showInstance("prefs_proxy");
}
-void LLFloaterPreference::onDoubleClickRadio()
+void LLFloaterPreference::onWalkCheckboxCommit()
{
- mDoubleClickActionDirty = true;
+ LLCheckBoxCtrl* walk_trigger_cb = getChild("walk_to_chkbox");
+ LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
+ const bool checked = walk_trigger_cb->getValue().asBoolean();
+
+ mClickActionDirty = true;
+ walk_trigger_radio->setEnabled(checked);
+ if (checked)
+ {
+ fixWalkRadioValue(); // don't allow two actions on click or double click
+ }
}
-void LLFloaterPreference::updateDoubleClickSettings()
+void LLFloaterPreference::onTeleportCheckboxCommit()
{
- LLCheckBoxCtrl* double_click_action_cb = getChild("double_click_chkbox");
- if (!double_click_action_cb) return;
- bool enable = double_click_action_cb->getValue().asBoolean();
+ LLCheckBoxCtrl* teleport_trigger_cb = getChild("teleport_to_chkbox");
+ LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
+ const bool checked = teleport_trigger_cb->getValue().asBoolean();
- LLRadioGroup* radio_double_click_action = getChild("double_click_action");
- if (!radio_double_click_action) return;
-
- // enable double click radio-group depending on state of checkbox
- radio_double_click_action->setEnabled(enable);
-
- if (!enable)
+ mClickActionDirty = true;
+ teleport_trigger_radio->setEnabled(checked);
+ if (checked)
{
- // set double click action settings values to false if checkbox was unchecked
- gSavedSettings.setBOOL("DoubleClickAutoPilot", false);
- gSavedSettings.setBOOL("DoubleClickTeleport", false);
- }
- else
- {
- std::string selected = radio_double_click_action->getValue().asString();
- bool teleport_selected = selected == "radio_teleport";
- // set double click action settings values depending on chosen radio-button
- gSavedSettings.setBOOL( "DoubleClickTeleport", teleport_selected );
- gSavedSettings.setBOOL( "DoubleClickAutoPilot", !teleport_selected );
+ fixTeleportRadioValue(); // don't allow two actions on click or double click
}
}
-void LLFloaterPreference::onClickProxySettings()
+void LLFloaterPreference::onWalkTriggerRadioCommit()
{
- LLFloaterReg::showInstance("prefs_proxy");
+ mClickActionDirty = true;
+ fixTeleportRadioValue();
+}
+
+void LLFloaterPreference::onTeleportTriggerRadioCommit()
+{
+ mClickActionDirty = true;
+ fixWalkRadioValue();
+}
+
+void LLFloaterPreference::fixWalkRadioValue()
+{
+ LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
+ LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
+
+ walk_trigger_radio->setSelectedIndex(!teleport_trigger_radio->getSelectedIndex());
+}
+
+
+void LLFloaterPreference::fixTeleportRadioValue()
+{
+ LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
+ LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
+
+ teleport_trigger_radio->setSelectedIndex(!walk_trigger_radio->getSelectedIndex());
+}
+
+void LLFloaterPreference::updateClickActionSettings()
+{
+ const bool walk_trigger_enabled = getChild("walk_to_chkbox")->getValue().asBoolean();
+ const bool teleport_trigger_enabled = getChild("teleport_to_chkbox")->getValue().asBoolean();
+
+ const bool walk_on_dbl_click = (bool) getChild("walk_trigger_radio")->getSelectedIndex();
+ const bool teleport_on_dbl_click = (bool) getChild("teleport_trigger_radio")->getSelectedIndex();
+
+ gSavedSettings.setBOOL("ClickToWalk", walk_trigger_enabled && !walk_on_dbl_click);
+ gSavedSettings.setBOOL("ClickToTeleport", teleport_trigger_enabled && !teleport_on_dbl_click);
+ gSavedSettings.setBOOL("DoubleClickAutoPilot", walk_trigger_enabled && walk_on_dbl_click);
+ gSavedSettings.setBOOL("DoubleClickTeleport", teleport_trigger_enabled && teleport_on_dbl_click);
}
-void LLFloaterPreference::updateDoubleClickControls()
+void LLFloaterPreference::updateClickActionControls()
{
- // check is one of double-click actions settings enabled
- bool double_click_action_enabled = gSavedSettings.getBOOL("DoubleClickAutoPilot") || gSavedSettings.getBOOL("DoubleClickTeleport");
- LLCheckBoxCtrl* double_click_action_cb = getChild("double_click_chkbox");
- if (double_click_action_cb)
+ LLCheckBoxCtrl* walk_trigger_cb = getChild("walk_to_chkbox");
+ LLCheckBoxCtrl* teleport_trigger_cb = getChild("teleport_to_chkbox");
+
+ LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
+ LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
+
+ const bool click_to_walk = gSavedSettings.getBOOL("ClickToWalk");
+ const bool click_to_teleport = gSavedSettings.getBOOL("ClickToTeleport");
+ const bool dbl_click_to_walk = gSavedSettings.getBOOL("DoubleClickAutoPilot");
+ const bool dbl_click_to_teleport = gSavedSettings.getBOOL("DoubleClickTeleport");
+
+ const bool walk_trigger_enabled = click_to_walk || dbl_click_to_walk;
+ const bool teleport_trigger_enabled = click_to_teleport || dbl_click_to_teleport;
+
+ walk_trigger_cb->setValue(walk_trigger_enabled);
+ teleport_trigger_cb->setValue(teleport_trigger_enabled);
+
+ walk_trigger_radio->setEnabled(walk_trigger_enabled);
+ walk_trigger_radio->setSelectedIndex(dbl_click_to_walk);
+
+ teleport_trigger_radio->setEnabled(teleport_trigger_enabled);
+ teleport_trigger_radio->setSelectedIndex(dbl_click_to_teleport);
+
+ // Make sure it doesn't look like there is more than one action per trigger.
+ if (teleport_trigger_enabled)
+ {
+ fixWalkRadioValue();
+ }
+ else
{
- // check checkbox if one of double-click actions settings enabled, uncheck otherwise
- double_click_action_cb->setValue(double_click_action_enabled);
+ fixTeleportRadioValue();
}
- LLRadioGroup* double_click_action_radio = getChild("double_click_action");
- if (!double_click_action_radio) return;
- // set radio-group enabled if one of double-click actions settings enabled
- double_click_action_radio->setEnabled(double_click_action_enabled);
- // select button in radio-group depending on setting
- double_click_action_radio->setSelectedIndex(gSavedSettings.getBOOL("DoubleClickAutoPilot"));
}
void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param)
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index ef9bc2dd53..b7263f0ac3 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -104,14 +104,23 @@ protected:
void setHardwareDefaults();
// callback for when client turns on shaders
void onVertexShaderEnable();
- // callback for changing double click action checkbox
- void onDoubleClickCheckBox(LLUICtrl* ctrl);
- // callback for selecting double click action radio-button
- void onDoubleClickRadio();
- // updates double-click action settings depending on controls from preferences
- void updateDoubleClickSettings();
- // updates double-click action controls depending on values from settings.xml
- void updateDoubleClickControls();
+
+ // callback for clicking the "Walk to Click Point" checkbox
+ void onWalkCheckboxCommit();
+ // callback for clicking the "Teleport to Click Point" checkbox
+ void onTeleportCheckboxCommit();
+ // callback for selecting trigger for "Walk to Click Point"
+ void onWalkTriggerRadioCommit();
+ // callback for selecting trigger for "Teleport to Click Point"
+ void onTeleportTriggerRadioCommit();
+ // make sure the radio buttons have mutually exclusive values
+ void fixWalkRadioValue();
+ // make sure the radio buttons have mutually exclusive values
+ void fixTeleportRadioValue();
+ // updates click/double-click action settings depending on controls values
+ void updateClickActionSettings();
+ // updates click/double-click action controls depending on values from settings.xml
+ void updateClickActionControls();
// This function squirrels away the current values of the controls so that
// cancel() can restore them.
@@ -166,7 +175,7 @@ private:
static std::string sSkin;
// set true if state of double-click action checkbox or radio-group was changed by user
// (reset back to false on apply or cancel)
- bool mDoubleClickActionDirty;
+ bool mClickActionDirty; ///< Set to true when the click/double-click options get changed by user.
bool mGotPersonalInfo;
bool mOriginalIMViaEmail;
bool mLanguageChanged;
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index c38c8bad80..e614fe23d0 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -35,7 +35,7 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llavatarnamecache.h"
-#include "llviewercontrol.h"
+#include "lleventtimer.h"
#include "llfocusmgr.h"
#include "llfirstuse.h"
#include "llfloaterland.h"
@@ -57,6 +57,7 @@
#include "lltrans.h"
#include "llviewercamera.h"
#include "llviewerparcelmedia.h"
+#include "llviewercontrol.h"
#include "llviewermenu.h"
#include "llviewerobjectlist.h"
#include "llviewerobject.h"
@@ -76,6 +77,41 @@ static void handle_click_action_play();
static void handle_click_action_open_media(LLPointer objectp);
static ECursorType cursor_from_parcel_media(U8 click_action);
+/**
+ * Schedule teleport to the specified location when user clicks in world.
+ *
+ * Deferring teleport is needed for double-click-to-walk to work.
+ * If double click in the world view occurs, teleport gets canceled.
+ */
+class LLClickToTeleportTimer : public LLEventTimer
+{
+ LOG_CLASS(LLClickToTeleportTimer);
+public:
+ LLClickToTeleportTimer(const LLVector3d& pos);
+ ~LLClickToTeleportTimer();
+ /*virtual*/ BOOL tick();
+
+private:
+ LLVector3d mTeleportPos;
+};
+
+LLClickToTeleportTimer::LLClickToTeleportTimer(const LLVector3d& pos)
+: LLEventTimer(0.33) // should be greater than double click interval
+, mTeleportPos(pos)
+{
+};
+
+LLClickToTeleportTimer::~LLClickToTeleportTimer()
+{
+ LLToolPie::instance().mClickToTeleportTimer = NULL;
+}
+
+BOOL LLClickToTeleportTimer::tick()
+{
+ lldebugs << "Teleporting to " << mTeleportPos << llendl;
+ gAgent.teleportViaLocationLookAt(mTeleportPos);
+ return TRUE; // destroy the timer
+}
LLToolPie::LLToolPie()
: LLTool(std::string("Pie")),
@@ -84,6 +120,8 @@ LLToolPie::LLToolPie()
mMouseSteerX(-1),
mMouseSteerY(-1),
mBlockClickToWalk(false),
+ mBlockClickToTeleport(false),
+ mClickToTeleportTimer(NULL),
mClickAction(0),
mClickActionBuyEnabled( gSavedSettings.getBOOL("ClickActionBuyEnabled") ),
mClickActionPayEnabled( gSavedSettings.getBOOL("ClickActionPayEnabled") )
@@ -479,6 +517,18 @@ void LLToolPie::resetSelection()
mClickAction = 0;
}
+void LLToolPie::walkToClickedLocation()
+{
+ if(mAutoPilotDestination) { mAutoPilotDestination->markDead(); }
+ mAutoPilotDestination = (LLHUDEffectBlob *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BLOB, FALSE);
+ mAutoPilotDestination->setPositionGlobal(mPick.mPosGlobal);
+ mAutoPilotDestination->setPixelSize(5);
+ mAutoPilotDestination->setColor(LLColor4U(170, 210, 190));
+ mAutoPilotDestination->setDuration(3.f);
+
+ handle_go_to();
+}
+
// When we get object properties after left-clicking on an object
// with left-click = buy, if it's the same object, do the buy.
@@ -637,44 +687,64 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
mMouseButtonDown = false;
if (click_action == CLICK_ACTION_NONE // not doing 1-click action
- && gSavedSettings.getBOOL("ClickToWalk") // click to walk enabled
&& !gAgent.getFlying() // don't auto-navigate while flying until that works
&& gAgentAvatarp
&& !gAgentAvatarp->isSitting()
- && !mBlockClickToWalk // another behavior hasn't cancelled click to walk
&& !mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick
&& (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land
|| mPick.mObjectID.notNull())) // or on an object
{
- // handle special cases of steering picks
- LLViewerObject* avatar_object = mPick.getObject();
-
- // get pointer to avatar
- while (avatar_object && !avatar_object->isAvatar())
+ if (gSavedSettings.getBOOL("ClickToWalk")
+ && !mBlockClickToWalk) // another behavior hasn't cancelled click to walk
{
- avatar_object = (LLViewerObject*)avatar_object->getParent();
- }
+ // handle special cases of steering picks
+ LLViewerObject* avatar_object = mPick.getObject();
- if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
- {
- const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
- // pretend we picked some point a bit in front of avatar
- mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
+ // get pointer to avatar
+ while (avatar_object && !avatar_object->isAvatar())
+ {
+ avatar_object = (LLViewerObject*)avatar_object->getParent();
+ }
+
+ if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
+ {
+ const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
+ // pretend we picked some point a bit in front of avatar
+ mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
+ }
+ gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
+ walkToClickedLocation();
+ LLFirstUse::notMoving(false);
+
+ return TRUE;
}
- gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
- if(mAutoPilotDestination) { mAutoPilotDestination->markDead(); }
- mAutoPilotDestination = (LLHUDEffectBlob *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BLOB, FALSE);
- mAutoPilotDestination->setPositionGlobal(mPick.mPosGlobal);
- mAutoPilotDestination->setPixelSize(5);
- mAutoPilotDestination->setColor(LLColor4U(170, 210, 190));
- mAutoPilotDestination->setDuration(3.f);
+ else if (gSavedSettings.getBOOL("ClickToTeleport") && !mBlockClickToTeleport)
+ {
+ LLViewerObject* objp = mPick.getObject();
+ LLViewerObject* parentp = objp ? objp->getRootEdit() : NULL;
- handle_go_to();
- LLFirstUse::notMoving(false);
+ bool is_in_world = mPick.mObjectID.notNull() && objp && !objp->isHUDAttachment();
+ bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND;
+ bool has_touch_handler = (objp && objp->flagHandleTouch()) || (parentp && parentp->flagHandleTouch());
+ bool has_click_action = final_click_action(objp);
- mBlockClickToWalk = false;
+ if (is_land || (is_in_world && !has_touch_handler && !has_click_action))
+ {
+ LLVector3d pos = mPick.mPosGlobal;
+ pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot();
- return TRUE;
+ if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
+ {
+ // defer for more than the double click interval.
+ scheduleTeleport(pos);
+ }
+ else
+ {
+ gAgent.teleportViaLocationLookAt(pos);
+ }
+ return TRUE;
+ }
+ }
}
gViewerWindow->setCursor(UI_CURSOR_ARROW);
if (hasMouseCapture())
@@ -686,6 +756,7 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
gAgentCamera.setLookAt(LOOKAT_TARGET_CONVERSATION, obj); // maybe look at object/person clicked on
mBlockClickToWalk = false;
+ mBlockClickToTeleport = false;
return LLTool::handleMouseUp(x, y, mask);
}
@@ -706,18 +777,17 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
llinfos << "LLToolPie handleDoubleClick (becoming mouseDown)" << llendl;
}
+ cancelScheduledTeleport();
+
if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
{
- if (mPick.mPickType == LLPickInfo::PICK_LAND
- && !mPick.mPosGlobal.isExactlyZero())
- {
- handle_go_to();
- return TRUE;
- }
- else if (mPick.mObjectID.notNull()
- && !mPick.mPosGlobal.isExactlyZero())
+ // Avoid teleporting for the second time when user releases mouse button after double click.
+ mBlockClickToTeleport = true;
+
+ if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
+ (mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
{
- handle_go_to();
+ walkToClickedLocation();
return TRUE;
}
}
@@ -1373,6 +1443,23 @@ bool LLToolPie::inCameraSteerMode()
return mMouseButtonDown && mMouseOutsideSlop && gSavedSettings.getBOOL("ClickToWalk");
}
+void LLToolPie::scheduleTeleport(const LLVector3d& pos)
+{
+ // cancel previously scheduled teleport (if any)
+ cancelScheduledTeleport();
+
+ // and schedule new one
+ mClickToTeleportTimer = new LLClickToTeleportTimer(pos);
+}
+
+void LLToolPie::cancelScheduledTeleport()
+{
+ if (mClickToTeleportTimer)
+ {
+ delete mClickToTeleportTimer;
+ }
+}
+
// true if x,y outside small box around start_x,start_y
BOOL LLToolPie::outsideSlop(S32 x, S32 y, S32 start_x, S32 start_y)
{
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index d7c79ee223..7e84170549 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -32,6 +32,7 @@
#include "llviewerwindow.h" // for LLPickInfo
#include "llhudeffectblob.h" // for LLPointer, apparently
+class LLClickToTeleportTimer;
class LLViewerObject;
class LLObjectSelection;
@@ -66,6 +67,7 @@ public:
LLViewerObject* getClickActionObject() { return mClickActionObject; }
LLObjectSelection* getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
void resetSelection();
+ void walkToClickedLocation();
void blockClickToWalk() { mBlockClickToWalk = true; }
void stopClickToWalk();
@@ -96,8 +98,12 @@ private:
void startCameraSteering();
void stopCameraSteering();
bool inCameraSteerMode();
+ void scheduleTeleport(const LLVector3d& pos);
+ void cancelScheduledTeleport();
private:
+ friend class LLClickToTeleportTimer;
+
bool mMouseButtonDown;
bool mMouseOutsideSlop; // for this drag, has mouse moved outside slop region
S32 mMouseDownX;
@@ -108,6 +114,8 @@ private:
LLPointer mMouseSteerGrabPoint;
bool mClockwise;
bool mBlockClickToWalk;
+ bool mBlockClickToTeleport;
+ LLClickToTeleportTimer* mClickToTeleportTimer;
LLUUID mMediaMouseCaptureID;
LLPickInfo mPick;
LLPickInfo mHoverPick;
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index 1a8aae7f91..5a70acddeb 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -105,16 +105,61 @@
mouse_opaque="false"
visible="true"
width="18"
- top_pad="2"
+ top_pad="10"
left="30" />
+
+ Keyboard:
+
+
+
+
+ Mouse:
+
-
+ left="259"
+ name="single_click_lbl"
+ width="100"
+ top_pad="10">
+ Single-Click
+
+
+ Double-Click
+
+ top_pad="7">
+
+
+
+
+
+
+
+ function="Pref.CommitClickToTeleportCheckbox"/>
+ height="20"
+ layout="topleft"
+ left="280"
+ top_delta="3"
+ name="teleport_trigger_radio"
+ width="200">
+ function="Pref.CommitTeleportTriggerRadio"/>
Date: Fri, 23 Sep 2011 11:05:33 -0400
Subject: Improve recognition of many ATI cards (some changes are reorderings)
---
indra/newview/gpu_table.txt | 146 +++++++++++++++++++++-----------------------
1 file changed, 68 insertions(+), 78 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 5ad00b5252..21cb988819 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -63,12 +63,16 @@ ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1
ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1
ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1
ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 3 1
+ATI ASUS EAH6xxx .*ATI.*ASUS.*EAH6.* 3 1
ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1
ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1
-ATI Radeon X1xxx .*ATI.*X1.* 0 1
-ATI Radeon X13xx .*ATI.*Diamond X13.* 1 1
-ATI Radeon X16xx .*ATI.*Diamond X16.* 1 1
-ATI Radeon X19xx .*ATI.*Diamond X19.* 1 1
+ATI Radeon X19xx .*ATI.*(Radeon|Diamond) X19.* ?.* 3 1
+ATI Radeon X18xx .*ATI.*(Radeon|Diamond) X18.* ?.* 3 1
+ATI Radeon X17xx .*ATI.*(Radeon|Diamond) X17.* ?.* 2 1
+ATI Radeon X16xx .*ATI.*(Radeon|Diamond) X16.* ?.* 2 1
+ATI Radeon X15xx .*ATI.*(Radeon|Diamond) X15.* ?.* 2 1
+ATI Radeon X13xx .*ATI.*(Radeon|Diamond) X13.* ?.* 1 1
+ATI Radeon X1xxx .*ATI.*(Radeon|Diamond) X1.. ?.* 1 1
ATI Display Adapter .*ATI.*display adapter.* 0 1
ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1
ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1
@@ -78,8 +82,9 @@ ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1
ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1
ATI FirePro M7820 .*ATI.*FirePro.*M78.* 3 1
ATI FireMV .*ATI.*FireMV.* 0 1
-ATI Geforce 9500 GT .*ATI.*Geforce 9500 *GT 2 1
-ATI Geforce 9800 GT .*ATI.*Geforce 9800 *GT 2 1
+ATI Geforce 9500 GT .*ATI.*Geforce 9500 *GT.* 2 1
+ATI Geforce 9600 GT .*ATI.*Geforce 9600 *GT.* 2 1
+ATI Geforce 9800 GT .*ATI.*Geforce 9800 *GT.* 2 1
ATI Generic .*ATI.*Generic.* 0 0
ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1
ATI IGP 340M .*ATI.*IGP.*340M.* 0 0
@@ -89,7 +94,7 @@ ATI M56 .*ATI.*M56.* 1 1
ATI M71 .*ATI.*M71.* 1 1
ATI M72 .*ATI.*M72.* 1 1
ATI M76 .*ATI.*M76.* 3 1
-ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.* 0 1
+ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.* 1 1
ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1
ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1
ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 1 1
@@ -116,75 +121,69 @@ ATI Mobility Radeon HD 4300 .*ATI.*Mobility.*HD *43.* 2 1
ATI Mobility Radeon HD 4500 .*ATI.*Mobility.*HD *45.* 3 1
ATI Mobility Radeon HD 4600 .*ATI.*Mobility.*HD *46.* 3 1
ATI Mobility Radeon HD 4800 .*ATI.*Mobility.*HD *48.* 3 1
-ATI Mobility Radeon HD 5100 .*ATI.*Mobility.*HD *51.* 2 1
-ATI Mobility Radeon HD 5300 .*ATI.*Mobility.*HD *53.* 2 1
-ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD *54.* 2 1
-ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD *55.* 2 1
-ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD *56.* 2 1
+ATI Mobility Radeon HD 5100 .*ATI.*Mobility.*HD *51.* 3 1
+ATI Mobility Radeon HD 5300 .*ATI.*Mobility.*HD *53.* 3 1
+ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD *54.* 3 1
+ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD *55.* 3 1
+ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD *56.* 3 1
ATI Mobility Radeon HD 5700 .*ATI.*Mobility.*HD *57.* 3 1
-ATI Mobility Radeon HD 6200 .*ATI.*Mobility.*HD *62.* 2 1
-ATI Mobility Radeon HD 6300 .*ATI.*Mobility.*HD *63.* 2 1
+ATI Mobility Radeon HD 6200 .*ATI.*Mobility.*HD *62.* 3 1
+ATI Mobility Radeon HD 6300 .*ATI.*Mobility.*HD *63.* 3 1
ATI Mobility Radeon HD 6400M .*ATI.*Mobility.*HD *64.* 3 1
ATI Mobility Radeon HD 6500M .*ATI.*Mobility.*HD *65.* 3 1
ATI Mobility Radeon HD 6600M .*ATI.*Mobility.*HD *66.* 3 1
ATI Mobility Radeon HD 6700M .*ATI.*Mobility.*HD *67.* 3 1
ATI Mobility Radeon HD 6800M .*ATI.*Mobility.*HD *68.* 3 1
ATI Mobility Radeon HD 6900M .*ATI.*Mobility.*HD *69.* 3 1
-ATI Mobility Radeon X1xxx .*ATI.*Mobility.*X1.* 0 1
-ATI Mobility Radeon X2xxx .*ATI.*Mobility.*X2.* 0 1
-ATI Mobility Radeon X3xx .*ATI.*Mobility.*X3.* 1 1
-ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1
-ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1
-ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 0 1
-ATI Mobility Radeon .*ATI.*Mobility.* 0 1
-ATI Radeon HD 2300 .*ATI.*Radeon HD *23.* 0 1
-ATI Radeon HD 2400 .*ATI.*Radeon HD *24.* 1 1
-ATI Radeon HD 2600 .*ATI.*Radeon HD *26.* 2 1
-ATI Radeon HD 2900 .*ATI.*Radeon HD *29.* 3 1
-ATI Radeon HD 3000 .*ATI.*Radeon HD *30.* 0 1
-ATI Radeon HD 3100 .*ATI.*Radeon HD *31.* 1 1
-ATI Radeon HD 3200 .*ATI.*Radeon HD *32.* 0 1
-ATI Radeon HD 3300 .*ATI.*Radeon HD *33.* 1 1
-ATI Radeon HD 3400 .*ATI.*Radeon HD *34.* 1 1
-ATI Radeon HD 3500 .*ATI.*Radeon HD *35.* 1 1
-ATI Radeon HD 3600 .*ATI.*Radeon HD *36.* 3 1
-ATI Radeon HD 3700 .*ATI.*Radeon HD *37.* 3 1
-ATI Radeon HD 3800 .*ATI.*Radeon HD *38.* 3 1
-ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1
-ATI Radeon HD 4300 .*ATI.*Radeon HD *43.* 1 1
-ATI Radeon HD 4400 .*ATI.*Radeon HD *44.* 1 1
-ATI Radeon HD 4500 .*ATI.*Radeon HD *45.* 3 1
-ATI Radeon HD 4600 .*ATI.*Radeon HD *46.* 3 1
-ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1
-ATI Radeon HD 4800 .*ATI.*Radeon HD *48.* 3 1
-ATI Radeon HD 5400 .*ATI.*Radeon HD *54.* 3 1
-ATI Radeon HD 5500 .*ATI.*Radeon HD *55.* 3 1
-ATI Radeon HD 5600 .*ATI.*Radeon HD *56.* 3 1
-ATI Radeon HD 5700 .*ATI.*Radeon HD *57.* 3 1
-ATI Radeon HD 5800 .*ATI.*Radeon HD *58.* 3 1
-ATI Radeon HD 5900 .*ATI.*Radeon HD *59.* 3 1
-ATI Radeon HD 6200 .*ATI.*Radeon HD *62.* 2 1
-ATI Radeon HD 6300 .*ATI.*Radeon HD *63.* 2 1
-ATI Radeon HD 6400 .*ATI.*Radeon HD *64.* 3 1
-ATI Radeon HD 6500 .*ATI.*Radeon HD *65.* 3 1
-ATI Radeon HD 66xx .*ATI.*Radeon HD *66.* 3 1
-ATI Radeon HD 6700 .*ATI.*Radeon HD *67.* 3 1
-ATI Radeon HD 6800 .*ATI.*Radeon HD *68.* 3 1
-ATI Radeon HD 6900 .*ATI.*Radeon HD *69.* 3 1
+ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 0 1
+ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 1 1
+ATI Radeon HD 2600 .*ATI.*Radeon HD *26.. 2 1
+ATI Radeon HD 2900 .*ATI.*Radeon HD *29.. 3 1
+ATI Radeon HD 3000 .*ATI.*Radeon HD *30.. 0 1
+ATI Radeon HD 3100 .*ATI.*Radeon HD *31.. 1 1
+ATI Radeon HD 3200 .*ATI.*Radeon HD *32.. 1 1
+ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 1 1
+ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1
+ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 1 1
+ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1
+ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1
+ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1
+ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1
+ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1
+ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 1 1
+ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 1 1
+ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 3 1
+ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1
+ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1
+ATI Radeon HD 4800 .*ATI.*Radeon HD *48.. 3 1
+ATI Radeon HD 5400 .*ATI.*Radeon HD *54.. 3 1
+ATI Radeon HD 5500 .*ATI.*Radeon HD *55.. 3 1
+ATI Radeon HD 5600 .*ATI.*Radeon HD *56.. 3 1
+ATI Radeon HD 5700 .*ATI.*Radeon HD *57.. 3 1
+ATI Radeon HD 5800 .*ATI.*Radeon HD *58.. 3 1
+ATI Radeon HD 5900 .*ATI.*Radeon HD *59.. 3 1
+ATI Radeon HD 6200 .*ATI.*Radeon HD *62.. 3 1
+ATI Radeon HD 6300 .*ATI.*Radeon HD *63.. 3 1
+ATI Radeon HD 6400 .*ATI.*Radeon HD *64.. 3 1
+ATI Radeon HD 6500 .*ATI.*Radeon HD *65.. 3 1
+ATI Radeon HD 66xx .*ATI.*Radeon HD *66.. 3 1
+ATI Radeon HD 6700 .*ATI.*Radeon HD *67.. 3 1
+ATI Radeon HD 6800 .*ATI.*Radeon HD *68.. 3 1
+ATI Radeon HD 6900 .*ATI.*Radeon HD *69.. 3 1
ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0
-ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1
-ATI Radeon 3000 .*ATI.*Radeon 30.* 0 1
-ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1
-ATI Radeon 5xxx .*ATI.*Radeon 5.* 3 1
-ATI Radeon 7xxx .*ATI.*Radeon 7.* 0 1
-ATI Radeon 8xxx .*ATI.*Radeon 8.* 0 1
-ATI Radeon 9000 .*ATI.*Radeon 90.* 0 1
-ATI Radeon 9100 .*ATI.*Radeon 91.* 0 1
-ATI Radeon 9200 .*ATI.*Radeon 92.* 0 1
-ATI Radeon 9500 .*ATI.*Radeon 95.* 0 1
-ATI Radeon 9600 .*ATI.*Radeon 96.* 0 1
-ATI Radeon 9700 .*ATI.*Radeon 97.* 1 1
-ATI Radeon 9800 .*ATI.*Radeon 98.* 1 1
+ATI Radeon 2100 .*ATI.*Radeon 21.. 0 1
+ATI Radeon 3000 .*ATI.*Radeon 30.. 0 1
+ATI Radeon 3100 .*ATI.*Radeon 31.. 1 1
+ATI Radeon 5xxx .*ATI.*Radeon 5... 3 1
+ATI Radeon 7xxx .*ATI.*Radeon 7... 0 1
+ATI Radeon 8xxx .*ATI.*Radeon 8... 0 1
+ATI Radeon 9000 .*ATI.*Radeon 90.. 0 1
+ATI Radeon 9100 .*ATI.*Radeon 91.. 0 1
+ATI Radeon 9200 .*ATI.*Radeon 92.. 0 1
+ATI Radeon 9500 .*ATI.*Radeon 95.. 0 1
+ATI Radeon 9600 .*ATI.*Radeon 96.. 0 1
+ATI Radeon 9700 .*ATI.*Radeon 97.. 1 1
+ATI Radeon 9800 .*ATI.*Radeon 98.. 1 1
ATI Radeon RV250 .*ATI.*RV250.* 0 1
ATI Radeon RV600 .*ATI.*RV6.* 1 1
ATI Radeon RX700 .*ATI.*RX70.* 1 1
@@ -192,15 +191,6 @@ ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1
ATI RS880M .*ATI.*RS880M 1 1
ATI Radeon RX9550 .*ATI.*RX9550.* 1 1
ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0
-ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1
-ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1
-ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1
-ATI Radeon X1400 .*ATI.*Radeon *X14.* 1 1
-ATI Radeon X1500 .*ATI.*Radeon *X15.* 1 1
-ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1
-ATI Radeon X1700 .*ATI.*Radeon *X17.* 1 1
-ATI Radeon X1800 .*ATI.*Radeon *X18.* 3 1
-ATI Radeon X1900 .*ATI.*Radeon *X19.* 3 1
ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1
ATI Radeon X400 .*ATI.*Radeon X4.* 0 1
ATI Radeon X500 .*ATI.*Radeon X5.* 0 1
@@ -261,7 +251,7 @@ ATI FirePro M .*ATI.*FirePro M.* 3 1
ATI Technologies .*ATI *Technologies.* 0 1
// This entry is last to work around the "R300" driver problem.
ATI R300 (9700) .*R300.* 1 1
-ATI Radeon .*ATI.*Radeon.* 0 1
+ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1
Intel X3100 .*Intel.*X3100.* 0 1
Intel 830M .*Intel.*830M 0 0
Intel 845G .*Intel.*845G 0 0
--
cgit v1.3
From 2b66777a3b392a3e788333647631d27842ea6fcd Mon Sep 17 00:00:00 2001
From: Oz Linden
Date: Fri, 23 Sep 2011 11:12:14 -0400
Subject: update gpus seen and recognition results for them
---
indra/newview/tests/gpus_results.txt | 628 +++++++++++++++-----------
indra/newview/tests/gpus_seen.txt | 828 +++++++++++++++++++++++++++++++++++
2 files changed, 1207 insertions(+), 249 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/tests/gpus_results.txt b/indra/newview/tests/gpus_results.txt
index 2d7df8f0dc..0b349b481d 100644
--- a/indra/newview/tests/gpus_results.txt
+++ b/indra/newview/tests/gpus_results.txt
@@ -1,6 +1,6 @@
GPU String Supported? Class Recognizer
------------------------------------------------------------------------------------------------------ ----------- ----- ------------------------------------
-ATI UNRECOGNIZED
+ATI NO MATCH
ATI 3D-Analyze unsupported 0 ATI 3D-Analyze
ATI ASUS A9xxx supported 1 ATI ASUS A9xxx
ATI ASUS AH24xx supported 1 ATI ASUS AH24xx
@@ -25,7 +25,7 @@ ATI All-in-Wonder X1800
ATI All-in-Wonder X1900 supported 3 ATI All-in-Wonder X1900
ATI All-in-Wonder X600 supported 1 ATI All-in-Wonder X600
ATI All-in-Wonder X800 supported 2 ATI All-in-Wonder X800
-ATI Diamond X1xxx supported 0 ATI Radeon X1xxx
+ATI Diamond X1xxx supported 1 ATI Radeon X1xxx
ATI Display Adapter supported 0 ATI Display Adapter
ATI FireGL supported 0 ATI FireGL
ATI FireGL 5200 supported 0 ATI FireGL
@@ -40,7 +40,7 @@ ATI M56
ATI M71 supported 1 ATI M71
ATI M72 supported 1 ATI M72
ATI M76 supported 3 ATI M76
-ATI Mobility Radeon supported 0 ATI Mobility Radeon
+ATI Mobility Radeon supported 0 ATI Radeon
ATI Mobility Radeon 7xxx supported 0 ATI Mobility Radeon 7xxx
ATI Mobility Radeon 9600 supported 0 ATI Mobility Radeon 9600
ATI Mobility Radeon 9700 supported 1 ATI Mobility Radeon 9700
@@ -57,14 +57,14 @@ ATI Mobility Radeon HD 4300
ATI Mobility Radeon HD 4500 supported 3 ATI Mobility Radeon HD 4500
ATI Mobility Radeon HD 4600 supported 3 ATI Mobility Radeon HD 4600
ATI Mobility Radeon HD 4800 supported 3 ATI Mobility Radeon HD 4800
-ATI Mobility Radeon HD 5400 supported 2 ATI Mobility Radeon HD 5400
-ATI Mobility Radeon HD 5600 supported 2 ATI Mobility Radeon HD 5600
-ATI Mobility Radeon X1xxx supported 0 ATI Radeon X1xxx
-ATI Mobility Radeon X2xxx supported 0 ATI Mobility Radeon X2xxx
-ATI Mobility Radeon X3xx supported 1 ATI Mobility Radeon X3xx
-ATI Mobility Radeon X6xx supported 1 ATI Mobility Radeon X6xx
-ATI Mobility Radeon X7xx supported 1 ATI Mobility Radeon X7xx
-ATI Mobility Radeon Xxxx supported 0 ATI Mobility Radeon Xxxx
+ATI Mobility Radeon HD 5400 supported 3 ATI Mobility Radeon HD 5400
+ATI Mobility Radeon HD 5600 supported 3 ATI Mobility Radeon HD 5600
+ATI Mobility Radeon X1xxx supported 1 ATI Radeon X1xxx
+ATI Mobility Radeon X2xxx supported 0 ATI Radeon
+ATI Mobility Radeon X3xx supported 0 ATI Radeon X300
+ATI Mobility Radeon X6xx supported 1 ATI Radeon X600
+ATI Mobility Radeon X7xx supported 1 ATI Radeon X700
+ATI Mobility Radeon Xxxx supported 0 ATI Radeon
ATI RV380 supported 0 ATI RV380
ATI RV530 supported 1 ATI RV530
ATI Radeon 2100 supported 0 ATI Radeon 2100
@@ -86,7 +86,7 @@ ATI Radeon HD 2600
ATI Radeon HD 2900 supported 3 ATI Radeon HD 2900
ATI Radeon HD 3000 supported 0 ATI Radeon HD 3000
ATI Radeon HD 3100 supported 1 ATI Radeon HD 3100
-ATI Radeon HD 3200 supported 0 ATI Radeon HD 3200
+ATI Radeon HD 3200 supported 1 ATI Radeon HD 3200
ATI Radeon HD 3300 supported 1 ATI Radeon HD 3300
ATI Radeon HD 3400 supported 1 ATI Radeon HD 3400
ATI Radeon HD 3600 supported 3 ATI Radeon HD 3600
@@ -103,8 +103,8 @@ ATI Radeon HD 5600
ATI Radeon HD 5700 supported 3 ATI Radeon HD 5700
ATI Radeon HD 5800 supported 3 ATI Radeon HD 5800
ATI Radeon HD 5900 supported 3 ATI Radeon HD 5900
-ATI Radeon HD 6200 supported 2 ATI Radeon HD 6200
-ATI Radeon HD 6300 supported 2 ATI Radeon HD 6300
+ATI Radeon HD 6200 supported 3 ATI Radeon HD 6200
+ATI Radeon HD 6300 supported 3 ATI Radeon HD 6300
ATI Radeon HD 6500 supported 3 ATI Radeon HD 6500
ATI Radeon HD 6800 supported 3 ATI Radeon HD 6800
ATI Radeon HD 6900 supported 3 ATI Radeon HD 6900
@@ -113,19 +113,19 @@ ATI Radeon RV250
ATI Radeon RV600 supported 1 ATI Radeon RV600
ATI Radeon RX9550 supported 1 ATI Radeon RX9550
ATI Radeon VE unsupported 0 ATI Radeon VE
-ATI Radeon X1000 supported 0 ATI Radeon X1xxx
-ATI Radeon X1200 supported 0 ATI Radeon X1xxx
-ATI Radeon X1300 supported 0 ATI Radeon X1xxx
-ATI Radeon X13xx supported 0 ATI Radeon X1xxx
-ATI Radeon X1400 supported 0 ATI Radeon X1xxx
-ATI Radeon X1500 supported 0 ATI Radeon X1xxx
-ATI Radeon X1600 supported 0 ATI Radeon X1xxx
-ATI Radeon X16xx supported 0 ATI Radeon X1xxx
-ATI Radeon X1700 supported 0 ATI Radeon X1xxx
-ATI Radeon X1800 supported 0 ATI Radeon X1xxx
-ATI Radeon X1900 supported 0 ATI Radeon X1xxx
-ATI Radeon X19xx supported 0 ATI Radeon X1xxx
-ATI Radeon X1xxx supported 0 ATI Radeon X1xxx
+ATI Radeon X1000 supported 1 ATI Radeon X1xxx
+ATI Radeon X1200 supported 1 ATI Radeon X1xxx
+ATI Radeon X1300 supported 1 ATI Radeon X13xx
+ATI Radeon X13xx supported 1 ATI Radeon X13xx
+ATI Radeon X1400 supported 1 ATI Radeon X1xxx
+ATI Radeon X1500 supported 2 ATI Radeon X15xx
+ATI Radeon X1600 supported 2 ATI Radeon X16xx
+ATI Radeon X16xx supported 2 ATI Radeon X16xx
+ATI Radeon X1700 supported 2 ATI Radeon X17xx
+ATI Radeon X1800 supported 3 ATI Radeon X18xx
+ATI Radeon X1900 supported 3 ATI Radeon X19xx
+ATI Radeon X19xx supported 3 ATI Radeon X19xx
+ATI Radeon X1xxx supported 1 ATI Radeon X1xxx
ATI Radeon X300 supported 0 ATI Radeon X300
ATI Radeon X500 supported 0 ATI Radeon X500
ATI Radeon X600 supported 1 ATI Radeon X600
@@ -138,50 +138,68 @@ ATI Technologies Inc.
ATI Technologies Inc. x86 supported 0 ATI Technologies
ATI Technologies Inc. x86/SSE2 supported 0 ATI Technologies
ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730 supported 3 ATI Mobility Radeon HD 5700
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2 supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2 supported 1 ATI Radeon X13xx
ATI Technologies Inc. AMD 760G supported 1 ATI 760G/Radeon 3000
ATI Technologies Inc. AMD 760G (Microsoft WDDM 1.1) supported 1 ATI 760G/Radeon 3000
ATI Technologies Inc. AMD 780L supported 1 ATI 780L/Radeon 3000
ATI Technologies Inc. AMD FirePro 2270 supported 1 ATI FirePro 2000
-ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100 supported 0 ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100 supported 1 ATI Mobility Radeon 4100
ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200 supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250 supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. AMD RADEON HD 6350 supported 3 ATI Radeon HD 6300
ATI Technologies Inc. AMD RADEON HD 6450 supported 3 ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6200 series Graphics supported 2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6250 Graphics supported 2 ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6300 series Graphics supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6300M Series supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310M supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6330M supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6350 supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6370M supported 2 ATI Radeon HD 6300
+ATI Technologies Inc. AMD RADEON HD 6670 supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon 6600M and 6700M Series supported 0 ATI Technologies
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6290 Graphics supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6300M Series supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6310M supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6330M supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6350 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6370M supported 3 ATI Radeon HD 6300
ATI Technologies Inc. AMD Radeon HD 6400M Series supported 3 ATI Radeon HD 64xxM
ATI Technologies Inc. AMD Radeon HD 6450 supported 3 ATI Radeon HD 6400
ATI Technologies Inc. AMD Radeon HD 6470M supported 3 ATI Radeon HD 64xxM
ATI Technologies Inc. AMD Radeon HD 6490M supported 3 ATI Radeon HD 64xxM
+ATI Technologies Inc. AMD Radeon HD 6500 Series supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6500M Series supported 3 ATI Radeon HD 6500
ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series supported 3 ATI Radeon HD 6500
ATI Technologies Inc. AMD Radeon HD 6530M supported 3 ATI Radeon HD 6500
ATI Technologies Inc. AMD Radeon HD 6550M supported 3 ATI Radeon HD 6500
ATI Technologies Inc. AMD Radeon HD 6570 supported 3 ATI Radeon HD 6500
ATI Technologies Inc. AMD Radeon HD 6570M supported 3 ATI Radeon HD 6500
ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6600 Series supported 3 ATI Radeon HD 66xx
ATI Technologies Inc. AMD Radeon HD 6600M Series supported 3 ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon HD 6630M supported 3 ATI Radeon HD 66xx
ATI Technologies Inc. AMD Radeon HD 6650M supported 3 ATI Radeon HD 66xx
ATI Technologies Inc. AMD Radeon HD 6670 supported 3 ATI Radeon HD 66xx
ATI Technologies Inc. AMD Radeon HD 6700 Series supported 3 ATI Radeon HD 6700
ATI Technologies Inc. AMD Radeon HD 6750 supported 3 ATI Radeon HD 6700
ATI Technologies Inc. AMD Radeon HD 6750M supported 3 ATI Radeon HD 6700
ATI Technologies Inc. AMD Radeon HD 6770 supported 3 ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6770M supported 3 ATI Radeon HD 6700
ATI Technologies Inc. AMD Radeon HD 6800 Series supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6800M Series supported 3 ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6850 supported 3 ATI Radeon HD 6800
ATI Technologies Inc. AMD Radeon HD 6850M supported 3 ATI Radeon HD 6800
ATI Technologies Inc. AMD Radeon HD 6870 supported 3 ATI Radeon HD 6800
ATI Technologies Inc. AMD Radeon HD 6870M supported 3 ATI Radeon HD 6800
ATI Technologies Inc. AMD Radeon HD 6900 Series supported 3 ATI Radeon HD 6900
+ATI Technologies Inc. AMD Radeon HD 6900M Series supported 3 ATI Radeon HD 6900
ATI Technologies Inc. AMD Radeon HD 6970M supported 3 ATI Radeon HD 6900
ATI Technologies Inc. AMD Radeon HD 6990 supported 3 ATI Radeon HD 6900
ATI Technologies Inc. AMD Radeon(TM) HD 6470M supported 3 ATI Radeon HD 64xxM
+ATI Technologies Inc. AMD Radeon(TM) HD 6480G supported 0 ATI Technologies
+ATI Technologies Inc. AMD Radeon(TM) HD 6520G supported 0 ATI Technologies
+ATI Technologies Inc. AMD Radeon(TM) HD 6620G supported 0 ATI Technologies
+ATI Technologies Inc. AMD Radeon(TM) HD 6630M supported 0 ATI Technologies
ATI Technologies Inc. ASUS 5870 Eyefinity 6 supported 0 ATI Technologies
+ATI Technologies Inc. ASUS A9550 Series supported 1 ATI ASUS A9xxx
ATI Technologies Inc. ASUS AH2600 Series supported 3 ATI ASUS AH26xx
ATI Technologies Inc. ASUS AH3450 Series supported 1 ATI ASUS AH34xx
ATI Technologies Inc. ASUS AH3650 Series supported 3 ATI ASUS AH36xx
@@ -208,10 +226,13 @@ ATI Technologies Inc. ASUS EAH5830 Series
ATI Technologies Inc. ASUS EAH5850 Series supported 3 ATI ASUS EAH58xx
ATI Technologies Inc. ASUS EAH5870 Series supported 3 ATI ASUS EAH58xx
ATI Technologies Inc. ASUS EAH5970 Series supported 0 ATI Technologies
-ATI Technologies Inc. ASUS EAH6850 Series supported 0 ATI Technologies
-ATI Technologies Inc. ASUS EAH6870 Series supported 0 ATI Technologies
-ATI Technologies Inc. ASUS EAH6950 Series supported 0 ATI Technologies
-ATI Technologies Inc. ASUS EAH6970 Series supported 0 ATI Technologies
+ATI Technologies Inc. ASUS EAH6450 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6570 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6670 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6850 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6870 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6950 Series supported 3 ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6970 Series supported 3 ATI ASUS EAH6xxx
ATI Technologies Inc. ASUS EAHG4670 series supported 0 ATI Technologies
ATI Technologies Inc. ASUS Extreme AX600 Series supported 0 ATI Technologies
ATI Technologies Inc. ASUS Extreme AX600XT-TD supported 0 ATI Technologies
@@ -232,19 +253,23 @@ ATI Technologies Inc. ATI FirePro V4800
ATI Technologies Inc. ATI FirePro V4800 (FireGL) supported 0 ATI FireGL
ATI Technologies Inc. ATI FirePro V5800 supported 3 ATI FirePro 5000
ATI Technologies Inc. ATI FirePro V7800 supported 3 ATI FirePro 7000
-ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2 supported 0 ATI Mobility Radeon Xxxx
+ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series supported 1 ATI Mobility Radeon 9700
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON HD 2300 supported 1 ATI Mobility Radeon HD 2300
ATI Technologies Inc. ATI MOBILITY RADEON HD 3450 supported 2 ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI MOBILITY RADEON X1600 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X300 supported 1 ATI Mobility Radeon X3xx
-ATI Technologies Inc. ATI MOBILITY RADEON X600 supported 1 ATI Mobility Radeon X6xx
-ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200 supported 0 ATI Mobility Radeon Xxxx
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3650 supported 3 ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI MOBILITY RADEON X1600 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 supported 0 ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON X300 supported 0 ATI Radeon X300
+ATI Technologies Inc. ATI MOBILITY RADEON X600 supported 1 ATI Radeon X600
+ATI Technologies Inc. ATI MOBILITY RADEON X700 supported 1 ATI Radeon X700
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Mobility FireGL V5700 supported 1 ATI FireGL 5xxx
-ATI Technologies Inc. ATI Mobility Radeon 4100 supported 0 ATI Mobility Radeon 4100
-ATI Technologies Inc. ATI Mobility Radeon Graphics supported 0 ATI Mobility Radeon
+ATI Technologies Inc. ATI Mobility Radeon 4100 supported 1 ATI Mobility Radeon 4100
+ATI Technologies Inc. ATI Mobility Radeon Graphics supported 0 ATI Technologies
ATI Technologies Inc. ATI Mobility Radeon HD 2300 supported 1 ATI Mobility Radeon HD 2300
ATI Technologies Inc. ATI Mobility Radeon HD 2400 supported 1 ATI Mobility Radeon HD 2400
ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT supported 1 ATI Mobility Radeon HD 2400
@@ -252,17 +277,20 @@ ATI Technologies Inc. ATI Mobility Radeon HD 2600
ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT supported 3 ATI Mobility Radeon HD 2600
ATI Technologies Inc. ATI Mobility Radeon HD 2700 supported 3 ATI Mobility Radeon HD 2700
ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series supported 2 ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3410 supported 1 ATI Mobility Radeon 4100
ATI Technologies Inc. ATI Mobility Radeon HD 3430 supported 2 ATI Mobility Radeon HD 3400
ATI Technologies Inc. ATI Mobility Radeon HD 3450 supported 2 ATI Mobility Radeon HD 3400
ATI Technologies Inc. ATI Mobility Radeon HD 3470 supported 2 ATI Mobility Radeon HD 3400
ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2 supported 2 ATI Mobility Radeon HD 3400
ATI Technologies Inc. ATI Mobility Radeon HD 3650 supported 3 ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI Mobility Radeon HD 3670 supported 3 ATI Mobility Radeon HD 3600
ATI Technologies Inc. ATI Mobility Radeon HD 4200 supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4225 supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4250 supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics supported 2 ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4270 supported 2 ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series supported 2 ATI Mobility Radeon HD 4300
ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series supported 2 ATI Mobility Radeon HD 4300
@@ -283,53 +311,55 @@ ATI Technologies Inc. ATI Mobility Radeon HD 4670
ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series supported 3 ATI Mobility Radeon HD 4800
ATI Technologies Inc. ATI Mobility Radeon HD 4850 supported 3 ATI Mobility Radeon HD 4800
ATI Technologies Inc. ATI Mobility Radeon HD 4870 supported 3 ATI Mobility Radeon HD 4800
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 supported 0 ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series supported 0 ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5145 supported 2 ATI Mobility Radeon HD 5100
-ATI Technologies Inc. ATI Mobility Radeon HD 5165 supported 2 ATI Mobility Radeon HD 5100
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 5145 supported 3 ATI Mobility Radeon HD 5100
+ATI Technologies Inc. ATI Mobility Radeon HD 5165 supported 3 ATI Mobility Radeon HD 5100
ATI Technologies Inc. ATI Mobility Radeon HD 530v supported 1 ATI Mobility Radeon HD 530v
-ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series supported 2 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series supported 3 ATI Mobility Radeon HD 5400
ATI Technologies Inc. ATI Mobility Radeon HD 540v supported 2 ATI Mobility Radeon HD 540v
-ATI Technologies Inc. ATI Mobility Radeon HD 5430 supported 2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5450 supported 2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series supported 2 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5430 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series supported 3 ATI Mobility Radeon HD 5400
ATI Technologies Inc. ATI Mobility Radeon HD 545v supported 2 ATI Mobility Radeon HD 545v
-ATI Technologies Inc. ATI Mobility Radeon HD 5470 supported 2 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5470 supported 3 ATI Mobility Radeon HD 5400
ATI Technologies Inc. ATI Mobility Radeon HD 550v supported 2 ATI Mobility Radeon HD 550v
-ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series supported 2 ATI Mobility Radeon HD 5600
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series supported 3 ATI Mobility Radeon HD 5600
ATI Technologies Inc. ATI Mobility Radeon HD 560v supported 2 ATI Mobility Radeon HD 560v
-ATI Technologies Inc. ATI Mobility Radeon HD 5650 supported 2 ATI Mobility Radeon HD 5600
+ATI Technologies Inc. ATI Mobility Radeon HD 5650 supported 3 ATI Mobility Radeon HD 5600
ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series supported 3 ATI Mobility Radeon HD 5700
ATI Technologies Inc. ATI Mobility Radeon HD 5730 supported 3 ATI Mobility Radeon HD 5700
-ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series supported 0 ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5850 supported 0 ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5870 supported 0 ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 6300 series supported 2 ATI Mobility Radeon HD 6300
-ATI Technologies Inc. ATI Mobility Radeon HD 6370 supported 2 ATI Mobility Radeon HD 6300
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5850 supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5870 supported 3 ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series supported 3 ATI Mobility Radeon HD 6300
+ATI Technologies Inc. ATI Mobility Radeon HD 6370 supported 3 ATI Mobility Radeon HD 6300
ATI Technologies Inc. ATI Mobility Radeon HD 6470M supported 3 ATI Mobility Radeon HD 6400M
ATI Technologies Inc. ATI Mobility Radeon HD 6550 supported 3 ATI Mobility Radeon HD 6500M
ATI Technologies Inc. ATI Mobility Radeon HD 6570 supported 3 ATI Mobility Radeon HD 6500M
-ATI Technologies Inc. ATI Mobility Radeon X1300 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1350 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1400 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1600 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442) supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2500 supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2 supported 0 ATI Mobility Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X1300 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1350 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1400 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Mobility Radeon X1600 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2 supported 2 ATI Radeon X17xx
+ATI Technologies Inc. ATI Mobility Radeon X2300 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442) supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon X2500 supported 0 ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2 supported 0 ATI Technologies
ATI Technologies Inc. ATI Mobility Radeon. HD 530v supported 1 ATI Mobility Radeon HD 530v
-ATI Technologies Inc. ATI Mobility Radeon. HD 5470 supported 2 ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO supported 0 ATI Radeon HD 3200
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470 supported 3 ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO supported 1 ATI Radeon HD 3200
ATI Technologies Inc. ATI RADEON XPRESS 1100 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI RADEON XPRESS 200 Series supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES supported 0 ATI Radeon Xpress
@@ -341,14 +371,15 @@ ATI Technologies Inc. ATI Radeon 3000
ATI Technologies Inc. ATI Radeon 3000 Graphics supported 0 ATI Radeon 3000
ATI Technologies Inc. ATI Radeon 3100 Graphics supported 1 ATI Radeon 3100
ATI Technologies Inc. ATI Radeon 5xxx series supported 3 ATI Radeon 5xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/MMX/3DNow!/SSE supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft - WDDM) supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9600 / X1050 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/MMX/3DNow!/SSE supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2 supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft - WDDM) supported 0 ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9600 / X1050 Series supported 0 ATI Radeon 9600
+ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series supported 0 ATI Radeon 9600
ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine supported 0 ATI Technologies
ATI Technologies Inc. ATI Radeon BB Prototype OpenGL Engine supported 0 ATI Technologies
+ATI Technologies Inc. ATI Radeon Broadway XT Prototype OpenGL Engine supported 0 ATI Technologies
ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine supported 2 AMD CEDAR (HD 5450)
ATI Technologies Inc. ATI Radeon Cypress PRO Prototype OpenGL Engine supported 3 AMD CYPRESS (HD 5800)
ATI Technologies Inc. ATI Radeon Graphics Processor supported 0 ATI Technologies
@@ -370,7 +401,7 @@ ATI Technologies Inc. ATI Radeon HD 2600 Series
ATI Technologies Inc. ATI Radeon HD 2600 XT supported 2 ATI Radeon HD 2600
ATI Technologies Inc. ATI Radeon HD 2900 GT supported 3 ATI Radeon HD 2900
ATI Technologies Inc. ATI Radeon HD 2900 XT supported 3 ATI Radeon HD 2900
-ATI Technologies Inc. ATI Radeon HD 3200 Graphics supported 0 ATI Radeon HD 3200
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics supported 1 ATI Radeon HD 3200
ATI Technologies Inc. ATI Radeon HD 3300 Graphics supported 1 ATI Radeon HD 3300
ATI Technologies Inc. ATI Radeon HD 3400 Series supported 1 ATI Radeon HD 3400
ATI Technologies Inc. ATI Radeon HD 3450 supported 1 ATI Radeon HD 3400
@@ -392,6 +423,7 @@ ATI Technologies Inc. ATI Radeon HD 4250
ATI Technologies Inc. ATI Radeon HD 4250 Graphics supported 1 ATI Radeon HD 4200
ATI Technologies Inc. ATI Radeon HD 4270 supported 1 ATI Radeon HD 4200
ATI Technologies Inc. ATI Radeon HD 4290 supported 1 ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4290 (Engineering Sample) supported 1 ATI Radeon HD 4200
ATI Technologies Inc. ATI Radeon HD 4300 Series supported 1 ATI Radeon HD 4300
ATI Technologies Inc. ATI Radeon HD 4300/4500 Series supported 1 ATI Radeon HD 4300
ATI Technologies Inc. ATI Radeon HD 4350 supported 1 ATI Radeon HD 4300
@@ -418,9 +450,11 @@ ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 4870 X2 supported 3 ATI Radeon HD 4800
ATI Technologies Inc. ATI Radeon HD 5400 Series supported 3 ATI Radeon HD 5400
ATI Technologies Inc. ATI Radeon HD 5450 supported 3 ATI Radeon HD 5400
+ATI Technologies Inc. ATI Radeon HD 5470 supported 3 ATI Radeon HD 5400
ATI Technologies Inc. ATI Radeon HD 5500 Series supported 3 ATI Radeon HD 5500
ATI Technologies Inc. ATI Radeon HD 5570 supported 3 ATI Radeon HD 5500
ATI Technologies Inc. ATI Radeon HD 5600 Series supported 3 ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5600/5700 supported 3 ATI Radeon HD 5600
ATI Technologies Inc. ATI Radeon HD 5630 supported 3 ATI Radeon HD 5600
ATI Technologies Inc. ATI Radeon HD 5670 supported 3 ATI Radeon HD 5600
ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine supported 3 ATI Radeon HD 5600
@@ -435,13 +469,14 @@ ATI Technologies Inc. ATI Radeon HD 5870
ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine supported 3 ATI Radeon HD 5800
ATI Technologies Inc. ATI Radeon HD 5900 Series supported 3 ATI Radeon HD 5900
ATI Technologies Inc. ATI Radeon HD 5970 supported 3 ATI Radeon HD 5900
-ATI Technologies Inc. ATI Radeon HD 6230 supported 2 ATI Radeon HD 6200
-ATI Technologies Inc. ATI Radeon HD 6250 supported 2 ATI Radeon HD 6200
-ATI Technologies Inc. ATI Radeon HD 6350 supported 2 ATI Radeon HD 6300
-ATI Technologies Inc. ATI Radeon HD 6390 supported 2 ATI Radeon HD 6300
+ATI Technologies Inc. ATI Radeon HD 6230 supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. ATI Radeon HD 6250 supported 3 ATI Radeon HD 6200
+ATI Technologies Inc. ATI Radeon HD 6350 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. ATI Radeon HD 6390 supported 3 ATI Radeon HD 6300
ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine supported 3 ATI Radeon HD 6400
ATI Technologies Inc. ATI Radeon HD 6510 supported 3 ATI Radeon HD 6500
ATI Technologies Inc. ATI Radeon HD 6570M supported 3 ATI Radeon HD 6500
+ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine supported 3 ATI Radeon HD 66xx
ATI Technologies Inc. ATI Radeon HD 6750 supported 3 ATI Radeon HD 6700
ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine supported 3 ATI Radeon HD 6700
ATI Technologies Inc. ATI Radeon HD 6770 supported 3 ATI Radeon HD 6700
@@ -459,21 +494,21 @@ ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Redwood PRO Prototype OpenGL Engine supported 3 AMD REDWOOD (HD 5500/5600)
ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine supported 3 AMD REDWOOD (HD 5500/5600)
ATI Technologies Inc. ATI Radeon Whistler PRO/LP Prototype OpenGL Engine supported 0 ATI Technologies
-ATI Technologies Inc. ATI Radeon X1050 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1050 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1200 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1200 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1250 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1270 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1300/X1550 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1550 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1950 GT supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1050 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1050 Series supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 Series supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1250 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1270 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1300/X1550 Series supported 1 ATI Radeon X13xx
+ATI Technologies Inc. ATI Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine supported 2 ATI Radeon X16xx
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine supported 3 ATI Radeon X19xx
+ATI Technologies Inc. ATI Radeon X1950 GT supported 3 ATI Radeon X19xx
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series supported 0 ATI Radeon X300
ATI Technologies Inc. ATI Radeon Xpress 1100 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Radeon Xpress 1150 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
@@ -482,18 +517,21 @@ ATI Technologies Inc. ATI Radeon Xpress 1200 Series
ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Radeon Xpress 1250 supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Radeon Xpress Series supported 0 ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. ATI Yamaha HD 9000 supported 0 ATI Technologies
ATI Technologies Inc. ATi RS880M supported 1 ATI RS880M
ATI Technologies Inc. Carte graphique VGA standard supported 0 ATI Technologies
-ATI Technologies Inc. Diamond Radeon X1550 Series supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. Diamond Radeon X1550 Series supported 2 ATI Radeon X15xx
ATI Technologies Inc. EG JUNIPER supported 3 AMD JUNIPER (HD 5700)
ATI Technologies Inc. EG PARK supported 3 AMD PARK
ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2) supported 0 ATI FireGL
ATI Technologies Inc. FireMV 2400 PCI DDR x86 supported 0 ATI FireMV
ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2 supported 0 ATI FireMV
-ATI Technologies Inc. GeCube Radeon X1550 supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. GeCube Radeon X1550 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. GeForce 9600 GT x86/SSE2 supported 2 ATI Geforce 9600 GT
ATI Technologies Inc. Geforce 9500 GT supported 2 ATI Geforce 9500 GT
ATI Technologies Inc. Geforce 9500GT supported 2 ATI Geforce 9500 GT
ATI Technologies Inc. Geforce 9800 GT supported 2 ATI Geforce 9800 GT
@@ -503,17 +541,21 @@ ATI Technologies Inc. HIGHTECH EXCALIBUR X700 PRO
ATI Technologies Inc. M21 x86/MMX/3DNow!/SSE2 supported 0 ATI Technologies
ATI Technologies Inc. M76M supported 3 ATI M76
ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2 supported 0 ATI Mobility Radeon 7xxx
-ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2 supported 0 ATI Mobility Radeon Xxxx
-ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2 supported 0 ATI Mobility Radeon Xxxx
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2 supported 0 ATI Radeon 9000
+ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2 supported 0 ATI Radeon 9000
+ATI Technologies Inc. MOBILITY RADEON 9100 IGP DDR x86/SSE2 supported 0 ATI Radeon 9100
ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2 supported 0 ATI Mobility Radeon 9600
ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2 supported 1 ATI Mobility Radeon 9700
-ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2 supported 1 ATI Mobility Radeon X3xx
-ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2 supported 1 ATI Mobility Radeon X6xx
-ATI Technologies Inc. MOBILITY RADEON X700 SE x86 supported 1 ATI Mobility Radeon X7xx
-ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2 supported 1 ATI Mobility Radeon X7xx
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2 supported 0 ATI Radeon X300
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2 supported 1 ATI Radeon X600
+ATI Technologies Inc. MOBILITY RADEON X700 SE x86 supported 1 ATI Radeon X700
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2 supported 1 ATI Radeon X700
+ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. MSI RX9550SE supported 1 ATI Radeon RX9550
-ATI Technologies Inc. Mobility Radeon X2300 HD supported 0 ATI Mobility Radeon X2xxx
-ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2 supported 0 ATI Mobility Radeon X2xxx
+ATI Technologies Inc. MSI Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Mobility Radeon HD 6000 series supported 0 ATI Technologies
+ATI Technologies Inc. Mobility Radeon X2300 HD supported 0 ATI Technologies
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2 supported 0 ATI Technologies
ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE supported 0 ATI Radeon 7xxx
ATI Technologies Inc. RADEON 7000 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 7xxx
@@ -535,6 +577,7 @@ ATI Technologies Inc. RADEON 9500
ATI Technologies Inc. RADEON 9550 x86/SSE2 supported 0 ATI Radeon 9500
ATI Technologies Inc. RADEON 9600 SERIES supported 0 ATI Radeon 9600
ATI Technologies Inc. RADEON 9600 SERIES x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 SERIES x86/SSE2 supported 0 ATI Radeon 9600
ATI Technologies Inc. RADEON 9600 TX x86/SSE2 supported 0 ATI Radeon 9600
ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon 9600
ATI Technologies Inc. RADEON 9600 x86/SSE2 supported 0 ATI Radeon 9600
@@ -549,8 +592,10 @@ ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON X550 x86/SSE2 supported 0 ATI Radeon X500
ATI Technologies Inc. RADEON X600 Series supported 1 ATI Radeon X600
ATI Technologies Inc. RADEON X600 x86/SSE2 supported 1 ATI Radeon X600
+ATI Technologies Inc. RADEON X600/X550 Series supported 1 ATI Radeon X600
ATI Technologies Inc. RADEON X700 PRO x86/SSE2 supported 1 ATI Radeon X700
ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X800
+ATI Technologies Inc. RADEON X800 XT supported 2 ATI Radeon X800
ATI Technologies Inc. RADEON X800GT supported 2 ATI Radeon X800
ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon Xpress
ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2 supported 0 ATI Radeon Xpress
@@ -569,7 +614,10 @@ ATI Technologies Inc. RV410 Pro x86/SSE2
ATI Technologies Inc. RV790 supported 3 AMD RV790 (HD 4800)
ATI Technologies Inc. Radeon (TM) HD 6470M supported 0 ATI Technologies
ATI Technologies Inc. Radeon (TM) HD 6490M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6750M supported 0 ATI Technologies
ATI Technologies Inc. Radeon (TM) HD 6770M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6850M supported 0 ATI Technologies
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE supported 0 ATI Radeon 7xxx
ATI Technologies Inc. Radeon 7000 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
ATI Technologies Inc. Radeon 7000 SDR x86/SSE2 supported 0 ATI Radeon 7xxx
ATI Technologies Inc. Radeon 7500 DDR x86/SSE2 supported 0 ATI Radeon 7xxx
@@ -577,37 +625,43 @@ ATI Technologies Inc. Radeon 9000 DDR x86/SSE2
ATI Technologies Inc. Radeon DDR x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon DDR
ATI Technologies Inc. Radeon DDR x86/SSE supported 0 ATI Radeon DDR
ATI Technologies Inc. Radeon DDR x86/SSE2 supported 0 ATI Radeon DDR
-ATI Technologies Inc. Radeon HD 6310 supported 2 ATI Radeon HD 6300
+ATI Technologies Inc. Radeon HD 6310 supported 3 ATI Radeon HD 6300
+ATI Technologies Inc. Radeon HD 6470M supported 3 ATI Radeon HD 6400
+ATI Technologies Inc. Radeon HD 6490M supported 3 ATI Radeon HD 6400
ATI Technologies Inc. Radeon HD 6800 Series supported 3 ATI Radeon HD 6800
ATI Technologies Inc. Radeon SDR x86/SSE2 supported 0 ATI Technologies
-ATI Technologies Inc. Radeon X1300 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300 Series x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300/X1550 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM) supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1550 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1550 Series x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600 Series x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600/X1650 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1650 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1650 Series x86/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Pro supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Series (Microsoft - WDDM) supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X300/X550/X1050 Series supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. Radeon X1300 Series supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300 Series x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300/X1550 Series supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2 supported 1 ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM) supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1550 Series x86/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1600 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Series x86/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600/1650 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600/X1650 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2 supported 2 ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2 supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Pro supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2 supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Series supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Series (Microsoft - WDDM) supported 3 ATI Radeon X19xx
+ATI Technologies Inc. Radeon X300/X550/X1050 Series supported 0 ATI Radeon X300
ATI Technologies Inc. Radeon X550/X700 Series supported 0 ATI Radeon X500
ATI Technologies Inc. Radeon X550XTX x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X500
ATI Technologies Inc. SAPPHIRE RADEON X300SE supported 0 ATI Radeon X300
ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X300
ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/SSE2 supported 0 ATI Radeon X300
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series supported 0 ATI Radeon X1xxx
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2 supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series supported 2 ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2 supported 2 ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 x86/SSE2 supported 2 ATI Radeon X15xx
ATI Technologies Inc. Sapphire Radeon HD 3730 supported 3 ATI Radeon HD 3700
ATI Technologies Inc. Sapphire Radeon HD 3750 supported 3 ATI Radeon HD 3700
ATI Technologies Inc. Standard VGA Graphics Adapter supported 0 ATI Technologies
@@ -616,7 +670,7 @@ ATI Technologies Inc. Tul, RADEON X600 PRO x86/SSE2
ATI Technologies Inc. Tul, RADEON X700 PRO supported 0 ATI Technologies
ATI Technologies Inc. Tul, RADEON X700 PRO x86/MMX/3DNow!/SSE2 supported 0 ATI Technologies
ATI Technologies Inc. VisionTek Radeon 4350 supported 0 ATI Technologies
-ATI Technologies Inc. VisionTek Radeon X1550 Series supported 0 ATI Radeon X1xxx
+ATI Technologies Inc. VisionTek Radeon X1550 Series supported 2 ATI Radeon X15xx
ATI Technologies Inc. WRESTLER 9802 supported 0 ATI Technologies
ATI Technologies Inc. WRESTLER 9803 supported 0 ATI Technologies
ATI Technologies Inc. XFX Radeon HD 4570 supported 3 ATI Radeon HD 4500
@@ -632,13 +686,14 @@ Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX+/3DNow!
Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 AMD RV620 (HD 3400)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV635 9596) 20090101 x86/MMX+/3DNow!+/SSE TCL DRI2 supported 3 AMD RV635 (HD 3600)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 3 AMD RV670 (HD 3800)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX/SSE2 TCL DRI2 supported 3 AMD RV670 (HD 3800)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV710 9552) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 AMD RV710 (HD 4300)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 3 AMD RV730 (HD 4600)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX/SSE2 TCL DRI2 supported 3 AMD RV730 (HD 4600)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9498) 20090101 TCL DRI2 supported 3 AMD RV730 (HD 4600)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9440) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 supported 3 AMD RV770 (HD 4800)
Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9442) 20090101 x86/MMX/SSE2 TCL DRI2 supported 3 AMD RV770 (HD 4800)
-Alex Mohr GL Hijacker! UNRECOGNIZED
+Alex Mohr GL Hijacker! NO MATCH
Apple Software Renderer unsupported 0 Apple Software Renderer
DRI R300 Project Mesa DRI R300 (RS400 5954) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2 supported 1 ATI R300 (9700)
DRI R300 Project Mesa DRI R300 (RS400 5975) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2 supported 1 ATI R300 (9700)
@@ -658,13 +713,15 @@ DRI R300 Project Mesa DRI R300 (RV515 7149) 20090101 x86/MMX/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL supported 1 ATI RV515
DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV515
DRI R300 Project Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2 supported 1 ATI RV530
-GPU_CLASS_UNKNOWN UNRECOGNIZED
-Humper Chromium UNRECOGNIZED
-Intel UNRECOGNIZED
+GPU_CLASS_UNKNOWN NO MATCH
+Humper 3D-Analyze v2.3 - http://www.tommti-systems.com NO MATCH
+Humper Chromium NO MATCH
+Imagination Technologies PowerVR SGX545 NO MATCH
+Intel NO MATCH
Intel HD Graphics Family supported 2 Intel HD Graphics
-Intel 3D-Analyze v2.2 - http://www.tommti-systems.com UNRECOGNIZED
-Intel 3D-Analyze v2.3 - http://www.tommti-systems.com UNRECOGNIZED
-Intel 4 Series Internal Chipset UNRECOGNIZED
+Intel 3D-Analyze v2.2 - http://www.tommti-systems.com NO MATCH
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com NO MATCH
+Intel 4 Series Internal Chipset NO MATCH
Intel 830M unsupported 0 Intel 830M
Intel 845G unsupported 0 Intel 845G
Intel 855GM unsupported 0 Intel 855GM
@@ -675,13 +732,14 @@ Intel 945G
Intel 945GM supported 0 Intel 945GM
Intel 950 supported 0 Intel 950
Intel 965 supported 0 Intel 965
-Intel B43 Express Chipset UNRECOGNIZED
+Intel B43 Express Chipset NO MATCH
Intel Bear Lake unsupported 0 Intel Bear Lake
Intel Broadwater unsupported 0 Intel Broadwater
Intel Brookdale unsupported 0 Intel Brookdale
Intel Cantiga unsupported 0 Intel Cantiga
+Intel EMGD on PowerVR SGX535 NO MATCH
Intel Eaglelake supported 0 Intel Eaglelake
-Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1) UNRECOGNIZED
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1) NO MATCH
Intel G33 unsupported 0 Intel G33
Intel G41 supported 0 Intel G41
Intel G41 Express Chipset supported 0 Intel G41
@@ -710,12 +768,12 @@ Intel HD Graphics Family BR-1012-00Y8
Intel HD Graphics Family BR-1012-00YF supported 2 Intel HD Graphics
Intel HD Graphics Family BR-1012-00ZD supported 2 Intel HD Graphics
Intel HD Graphics Family BR-1102-00ML supported 2 Intel HD Graphics
-Intel Inc. Intel GMA 900 OpenGL Engine UNRECOGNIZED
+Intel Inc. Intel GMA 900 OpenGL Engine NO MATCH
Intel Inc. Intel GMA 950 OpenGL Engine supported 0 Intel 950
Intel Inc. Intel GMA X3100 OpenGL Engine supported 0 Intel X3100
Intel Inc. Intel HD Graphics 3000 OpenGL Engine supported 2 Intel HD Graphics
Intel Inc. Intel HD Graphics OpenGL Engine supported 2 Intel HD Graphics
-Intel Inc. Intel HD xxxx OpenGL Engine UNRECOGNIZED
+Intel Inc. Intel HD xxxx OpenGL Engine NO MATCH
Intel Intel 845G unsupported 0 Intel 845G
Intel Intel 855GM unsupported 0 Intel 855GM
Intel Intel 865G unsupported 0 Intel 865G
@@ -727,40 +785,42 @@ Intel Intel 965/963 Graphics Media Accelerator
Intel Intel Bear Lake B unsupported 0 Intel Bear Lake
Intel Intel Broadwater G unsupported 0 Intel Broadwater
Intel Intel Brookdale-G unsupported 0 Intel Brookdale
-Intel Intel Calistoga UNRECOGNIZED
+Intel Intel Calistoga NO MATCH
Intel Intel Cantiga unsupported 0 Intel Cantiga
Intel Intel Eaglelake supported 0 Intel Eaglelake
-Intel Intel Grantsdale-G UNRECOGNIZED
+Intel Intel Generic Renderer NO MATCH
+Intel Intel Grantsdale-G NO MATCH
Intel Intel HD Graphics 3000 supported 2 Intel HD Graphics
-Intel Intel Lakeport UNRECOGNIZED
+Intel Intel Lakeport NO MATCH
Intel Intel Montara-GM unsupported 0 Intel Montara
Intel Intel Pineview Platform supported 0 Intel Pineview
Intel Intel Springdale-G unsupported 0 Intel Springdale
-Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1) UNRECOGNIZED
+Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1) NO MATCH
Intel Mobile 4 Series supported 0 Intel Mobile 4 Series
Intel Mobile 4 Series Express Chipset Family supported 0 Intel Mobile 4 Series
-Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1) UNRECOGNIZED
+Intel Mobile 45 Express Chipset Family NO MATCH
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1) NO MATCH
Intel Mobile HD Graphics supported 2 Intel HD Graphics
Intel Mobile Intel(R) 4 Series Express Chipset Family supported 0 Intel Mobile 4 Series
Intel Mobile SandyBridge HD Graphics supported 2 Intel HD Graphics
Intel Montara unsupported 0 Intel Montara
Intel Pineview supported 0 Intel Pineview
-Intel Q45/Q43 Express Chipset UNRECOGNIZED
-Intel Royal BNA Driver UNRECOGNIZED
+Intel Q45/Q43 Express Chipset NO MATCH
+Intel Royal BNA Driver NO MATCH
Intel SandyBridge HD Graphics supported 2 Intel HD Graphics
Intel SandyBridge HD Graphics BR-1006-00V8 supported 2 Intel HD Graphics
Intel Springdale unsupported 0 Intel Springdale
Intel X3100 supported 0 Intel X3100
-Intergraph wcgdrv 06.05.06.18 UNRECOGNIZED
-Intergraph wcgdrv 06.06.00.35 UNRECOGNIZED
-LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgra... UNRECOGNIZED
+Intergraph wcgdrv 06.05.06.18 NO MATCH
+Intergraph wcgdrv 06.06.00.35 NO MATCH
+LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgra... NO MATCH
LegendgrafiX NVIDIA GeForce GT 430/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgr... supported 3 NVIDIA GT 430M
-Linden Lab Headless UNRECOGNIZED
+Linden Lab Headless NO MATCH
Matrox unsupported 0 Matrox
Mesa unsupported 0 Mesa
Mesa Project Software Rasterizer unsupported 0 Mesa
-NVIDIA /PCI/SSE2 UNRECOGNIZED
-NVIDIA /PCI/SSE2/3DNOW! UNRECOGNIZED
+NVIDIA /PCI/SSE2 NO MATCH
+NVIDIA /PCI/SSE2/3DNOW! NO MATCH
NVIDIA 205 supported 0 NVIDIA G 205M
NVIDIA 210 supported 1 NVIDIA G 210
NVIDIA 310 supported 2 NVIDIA G 310M
@@ -769,21 +829,25 @@ NVIDIA 315
NVIDIA 315M supported 2 NVIDIA G 315
NVIDIA 320M supported 2 NVIDIA G 320M
NVIDIA C51 supported 0 NVIDIA C51
-NVIDIA D10M2-20/PCI/SSE2 UNRECOGNIZED
-NVIDIA D10P1-25/PCI/SSE2 UNRECOGNIZED
-NVIDIA D10P1-30/PCI/SSE2 UNRECOGNIZED
-NVIDIA D10P2-50/PCI/SSE2 UNRECOGNIZED
-NVIDIA D11M2-30/PCI/SSE2 UNRECOGNIZED
-NVIDIA D12-P1-35/PCI/SSE2 UNRECOGNIZED
-NVIDIA D12U-15/PCI/SSE2 UNRECOGNIZED
-NVIDIA D13M1-40/PCI/SSE2 UNRECOGNIZED
-NVIDIA D13P1-40/PCI/SSE2 UNRECOGNIZED
-NVIDIA D13U-10/PCI/SSE2 UNRECOGNIZED
-NVIDIA D13U/PCI/SSE2 UNRECOGNIZED
+NVIDIA Corporation GeForce GT 230/PCI/SSE2 NO MATCH
+NVIDIA Corporation GeForce GTX 285/PCI/SSE2 NO MATCH
+NVIDIA D10M2-20/PCI/SSE2 NO MATCH
+NVIDIA D10P1-25/PCI/SSE2 NO MATCH
+NVIDIA D10P1-25/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA D10P1-30/PCI/SSE2 NO MATCH
+NVIDIA D10P2-50/PCI/SSE2 NO MATCH
+NVIDIA D11M2-30/PCI/SSE2 NO MATCH
+NVIDIA D12-P1-35/PCI/SSE2 NO MATCH
+NVIDIA D12U-15/PCI/SSE2 NO MATCH
+NVIDIA D13M1-40/PCI/SSE2 NO MATCH
+NVIDIA D13P1-40/PCI/SSE2 NO MATCH
+NVIDIA D13P1-40/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA D13U-10/PCI/SSE2 NO MATCH
+NVIDIA D13U/PCI/SSE2 NO MATCH
NVIDIA D9M supported 1 NVIDIA D9M
NVIDIA D9M-20/PCI/SSE2 supported 1 NVIDIA D9M
-NVIDIA Entry Graphics/PCI/SSE2 UNRECOGNIZED
-NVIDIA Entry Graphics/PCI/SSE2/3DNOW! UNRECOGNIZED
+NVIDIA Entry Graphics/PCI/SSE2 NO MATCH
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW! NO MATCH
NVIDIA G 102M supported 0 NVIDIA G102M
NVIDIA G 103M supported 0 NVIDIA G103M
NVIDIA G 105M supported 0 NVIDIA G105M
@@ -794,7 +858,7 @@ NVIDIA G103M
NVIDIA G105M supported 0 NVIDIA G105M
NVIDIA G210 supported 1 NVIDIA G 210
NVIDIA G210M supported 1 NVIDIA G 210
-NVIDIA G70/PCI/SSE2 UNRECOGNIZED
+NVIDIA G70/PCI/SSE2 NO MATCH
NVIDIA G72 supported 1 NVIDIA G72
NVIDIA G73 supported 1 NVIDIA G73
NVIDIA G84 supported 2 NVIDIA G84
@@ -802,8 +866,9 @@ NVIDIA G86
NVIDIA G92 supported 3 NVIDIA G92
NVIDIA G92-200/PCI/SSE2 supported 3 NVIDIA G92
NVIDIA G94 supported 3 NVIDIA G94
-NVIDIA G96/PCI/SSE2 UNRECOGNIZED
-NVIDIA G98/PCI/SSE2 UNRECOGNIZED
+NVIDIA G96/PCI/SSE2 NO MATCH
+NVIDIA G98/PCI/SSE2 NO MATCH
+NVIDIA G98/PCI/SSE2/3DNOW! NO MATCH
NVIDIA GT 120 supported 2 NVIDIA GT 120M
NVIDIA GT 130 supported 2 NVIDIA GT 130M
NVIDIA GT 130M supported 2 NVIDIA GT 130M
@@ -832,7 +897,7 @@ NVIDIA GT 520
NVIDIA GT 540 supported 3 NVIDIA GT 540M
NVIDIA GT 540M supported 3 NVIDIA GT 540M
NVIDIA GT-120 supported 2 NVIDIA GT 120
-NVIDIA GT200/PCI/SSE2 UNRECOGNIZED
+NVIDIA GT200/PCI/SSE2 NO MATCH
NVIDIA GTS 150 supported 2 NVIDIA GT 150M
NVIDIA GTS 240 supported 3 NVIDIA GTS 240
NVIDIA GTS 250 supported 3 NVIDIA GTS 250
@@ -859,7 +924,7 @@ NVIDIA GTX 560 Ti
NVIDIA GTX 570 supported 3 NVIDIA GTX 570
NVIDIA GTX 580 supported 3 NVIDIA GTX 580
NVIDIA GTX 590 supported 3 NVIDIA GTX 590
-NVIDIA GeForce UNRECOGNIZED
+NVIDIA GeForce NO MATCH
NVIDIA GeForce 2 supported 0 NVIDIA GeForce 2
NVIDIA GeForce 205/PCI/SSE2 supported 2 NVIDIA 205
NVIDIA GeForce 210 supported 2 NVIDIA 210
@@ -878,6 +943,7 @@ NVIDIA GeForce 4 Go
NVIDIA GeForce 4 MX supported 0 NVIDIA GeForce 4
NVIDIA GeForce 4 Ti supported 0 NVIDIA GeForce 4
NVIDIA GeForce 405/PCI/SSE2 supported 1 NVIDIA G 405
+NVIDIA GeForce 410M/PCI/SSE2 supported 1 NVIDIA G 410M
NVIDIA GeForce 6100 supported 0 NVIDIA GeForce 6100
NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 6100
NVIDIA GeForce 6100 nForce 405/PCI/SSE2 supported 0 NVIDIA GeForce 6100
@@ -922,11 +988,13 @@ NVIDIA GeForce 6600/PCI/SSE2
NVIDIA GeForce 6600/PCI/SSE2/3DNOW! supported 1 NVIDIA GeForce 6600
NVIDIA GeForce 6700 supported 2 NVIDIA GeForce 6700
NVIDIA GeForce 6800 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2 supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800 GS/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800 GT/AGP/SSE2 supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800 GT/PCI/SSE2 supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800 XT/AGP/SSE2 supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800 XT/PCI/SSE2 supported 2 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 XT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800/PCI/SSE2 supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 6800/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 6800
NVIDIA GeForce 7000 supported 0 NVIDIA GeForce 7000
@@ -983,12 +1051,14 @@ NVIDIA GeForce 7800
NVIDIA GeForce 7800 GS/AGP/SSE2 supported 2 NVIDIA GeForce 7800
NVIDIA GeForce 7800 GS/AGP/SSE2/3DNOW! supported 2 NVIDIA GeForce 7800
NVIDIA GeForce 7800 GT/PCI/SSE2 supported 2 NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7800
NVIDIA GeForce 7800 GTX/PCI/SSE2 supported 2 NVIDIA GeForce 7800
NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7800
NVIDIA GeForce 7900 supported 2 NVIDIA GeForce 7900
NVIDIA GeForce 7900 GS/PCI/SSE2 supported 2 NVIDIA GeForce 7900
NVIDIA GeForce 7900 GS/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
NVIDIA GeForce 7900 GT/GTO/PCI/SSE2 supported 2 NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce 7900
NVIDIA GeForce 7900 GTX/PCI/SSE2 supported 2 NVIDIA GeForce 7900
NVIDIA GeForce 7950 GT/PCI/SSE2 supported 2 NVIDIA GeForce 7900
@@ -1146,8 +1216,10 @@ NVIDIA GeForce FX Go5600
NVIDIA GeForce FX Go5600/AGP/SSE2 supported 0 NVIDIA GeForce FX Go5600
NVIDIA GeForce FX Go5650/AGP/SSE2 supported 0 NVIDIA GeForce FX Go5600
NVIDIA GeForce FX Go5700 supported 1 NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5700/AGP/SSE2 supported 1 NVIDIA GeForce FX Go5700
NVIDIA GeForce FX Go5xxx/AGP/SSE2 supported 0 NVIDIA GeForce FX Go5xxx
NVIDIA GeForce G 103M/PCI/SSE2 supported 0 NVIDIA G103M
+NVIDIA GeForce G 103M/PCI/SSE2/3DNOW! supported 0 NVIDIA G103M
NVIDIA GeForce G 105M/PCI/SSE2 supported 0 NVIDIA G105M
NVIDIA GeForce G 110M/PCI/SSE2 supported 0 NVIDIA G 110M
NVIDIA GeForce G100/PCI/SSE2 supported 0 NVIDIA G100
@@ -1193,9 +1265,14 @@ NVIDIA GeForce GT 435M/PCI/SSE2
NVIDIA GeForce GT 440/PCI/SSE2 supported 3 NVIDIA GT 440M
NVIDIA GeForce GT 440/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 440M
NVIDIA GeForce GT 445M/PCI/SSE2 supported 3 NVIDIA GT 445M
+NVIDIA GeForce GT 520/PCI/SSE2 supported 3 NVIDIA GT 520M
+NVIDIA GeForce GT 520/PCI/SSE2/3DNOW! supported 3 NVIDIA GT 520M
NVIDIA GeForce GT 520M/PCI/SSE2 supported 3 NVIDIA GT 520M
NVIDIA GeForce GT 525M/PCI/SSE2 supported 3 NVIDIA GT 525M
+NVIDIA GeForce GT 530/PCI/SSE2 NO MATCH
+NVIDIA GeForce GT 530/PCI/SSE2/3DNOW! NO MATCH
NVIDIA GeForce GT 540M/PCI/SSE2 supported 3 NVIDIA GT 540M
+NVIDIA GeForce GT 545/PCI/SSE2 NO MATCH
NVIDIA GeForce GT 550M/PCI/SSE2 supported 3 NVIDIA GT 550M
NVIDIA GeForce GT 555M/PCI/SSE2 supported 3 NVIDIA GT 555M
NVIDIA GeForce GTS 150/PCI/SSE2 supported 2 NVIDIA GT 150M
@@ -1213,9 +1290,11 @@ NVIDIA GeForce GTX 260/PCI/SSE2
NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 260
NVIDIA GeForce GTX 260M/PCI/SSE2 supported 3 NVIDIA GTX 260
NVIDIA GeForce GTX 275/PCI/SSE2 supported 3 NVIDIA GTX 275
+NVIDIA GeForce GTX 275/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 275
NVIDIA GeForce GTX 280 supported 3 NVIDIA GTX 280
NVIDIA GeForce GTX 280/PCI/SSE2 supported 3 NVIDIA GTX 280
NVIDIA GeForce GTX 280M/PCI/SSE2 supported 3 NVIDIA GTX 280
+NVIDIA GeForce GTX 285 supported 3 NVIDIA GTX 285
NVIDIA GeForce GTX 285/PCI/SSE2 supported 3 NVIDIA GTX 285
NVIDIA GeForce GTX 295/PCI/SSE2 supported 3 NVIDIA GTX 295
NVIDIA GeForce GTX 460 SE/PCI/SSE2 supported 3 NVIDIA GTX 460
@@ -1233,6 +1312,8 @@ NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 560 Ti/PCI/SSE2 supported 3 NVIDIA GTX 560
NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 560
NVIDIA GeForce GTX 560/PCI/SSE2 supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 560/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 560
+NVIDIA GeForce GTX 560M/PCI/SSE2 supported 3 NVIDIA GTX 560
NVIDIA GeForce GTX 570/PCI/SSE2 supported 3 NVIDIA GTX 570
NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW! supported 3 NVIDIA GTX 570
NVIDIA GeForce GTX 580/PCI/SSE2 supported 3 NVIDIA GTX 580
@@ -1267,6 +1348,7 @@ NVIDIA GeForce Go 7600
NVIDIA GeForce Go 7600/PCI/SSE2 supported 2 NVIDIA GeForce Go 7600
NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW! supported 2 NVIDIA GeForce Go 7600
NVIDIA GeForce Go 7700 supported 2 NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7700/PCI/SSE2 supported 2 NVIDIA GeForce Go 7700
NVIDIA GeForce Go 7800 supported 2 NVIDIA GeForce Go 7800
NVIDIA GeForce Go 7800 GTX/PCI/SSE2 supported 2 NVIDIA GeForce Go 7800
NVIDIA GeForce Go 7900 supported 2 NVIDIA GeForce Go 7900
@@ -1284,7 +1366,9 @@ NVIDIA GeForce3/AGP/SSE2
NVIDIA GeForce4 420 Go 32M/AGP/SSE2 supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 420 Go 32M/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 420 Go 32M/PCI/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 420 Go/AGP/SSE2 supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 440 Go 64M/AGP/SSE2/3DNOW! supported 0 NVIDIA GeForce 4
+NVIDIA GeForce4 440 Go/AGP/SSE2 supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 460 Go/AGP/SSE2 supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 MX 4000/AGP/SSE2 supported 0 NVIDIA GeForce 4
@@ -1301,39 +1385,44 @@ NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW! supported 0 NVIDIA GeForce 4
NVIDIA GeForce4 Ti 4400/AGP/SSE2 supported 0 NVIDIA GeForce 4
-NVIDIA Generic UNRECOGNIZED
+NVIDIA Generic NO MATCH
NVIDIA ION LE/PCI/SSE2 supported 2 NVIDIA ION
NVIDIA ION/PCI/SSE2 supported 2 NVIDIA ION
NVIDIA ION/PCI/SSE2/3DNOW! supported 2 NVIDIA ION
-NVIDIA MCP61/PCI/SSE2 UNRECOGNIZED
-NVIDIA MCP61/PCI/SSE2/3DNOW! UNRECOGNIZED
-NVIDIA MCP73/PCI/SSE2 UNRECOGNIZED
-NVIDIA MCP79MH/PCI/SSE2 UNRECOGNIZED
-NVIDIA MCP79MX/PCI/SSE2 UNRECOGNIZED
-NVIDIA MCP7A-O/PCI/SSE2 UNRECOGNIZED
-NVIDIA MCP7A-S/PCI/SSE2 UNRECOGNIZED
-NVIDIA MCP89-EPT/PCI/SSE2 UNRECOGNIZED
-NVIDIA N10M-GE1/PCI/SSE2 UNRECOGNIZED
-NVIDIA N10P-GE1/PCI/SSE2 UNRECOGNIZED
-NVIDIA N10P-GV2/PCI/SSE2 UNRECOGNIZED
-NVIDIA N11M-GE1/PCI/SSE2 UNRECOGNIZED
-NVIDIA N11M-GE2/PCI/SSE2 UNRECOGNIZED
-NVIDIA N12E-GS-A1/PCI/SSE2 UNRECOGNIZED
-NVIDIA NB9M-GE/PCI/SSE2 UNRECOGNIZED
-NVIDIA NB9M-GE1/PCI/SSE2 UNRECOGNIZED
-NVIDIA NB9M-GS/PCI/SSE2 UNRECOGNIZED
-NVIDIA NB9M-NS/PCI/SSE2 UNRECOGNIZED
-NVIDIA NB9P-GE1/PCI/SSE2 UNRECOGNIZED
-NVIDIA NB9P-GS/PCI/SSE2 UNRECOGNIZED
-NVIDIA NV17/AGP/3DNOW! UNRECOGNIZED
-NVIDIA NV17/AGP/SSE2 UNRECOGNIZED
+NVIDIA MCP61/PCI/SSE2 NO MATCH
+NVIDIA MCP61/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA MCP73/PCI/SSE2 NO MATCH
+NVIDIA MCP79MH/PCI/SSE2 NO MATCH
+NVIDIA MCP79MX/PCI/SSE2 NO MATCH
+NVIDIA MCP7A-O/PCI/SSE2 NO MATCH
+NVIDIA MCP7A-S/PCI/SSE2 NO MATCH
+NVIDIA MCP89-EPT/PCI/SSE2 NO MATCH
+NVIDIA N10M-GE1/PCI/SSE2 NO MATCH
+NVIDIA N10P-GE1/PCI/SSE2 NO MATCH
+NVIDIA N10P-GV2/PCI/SSE2 NO MATCH
+NVIDIA N11M-GE1/PCI/SSE2 NO MATCH
+NVIDIA N11M-GE2/PCI/SSE2 NO MATCH
+NVIDIA N12E-GS-A1/PCI/SSE2 NO MATCH
+NVIDIA N12P-GVR-B-A1/PCI/SSE2 NO MATCH
+NVIDIA N13M-GE1-B-A1/PCI/SSE2 NO MATCH
+NVIDIA N13P-GL-A1/PCI/SSE2 NO MATCH
+NVIDIA NB9M-GE/PCI/SSE2 NO MATCH
+NVIDIA NB9M-GE1/PCI/SSE2 NO MATCH
+NVIDIA NB9M-GS/PCI/SSE2 NO MATCH
+NVIDIA NB9M-NS/PCI/SSE2 NO MATCH
+NVIDIA NB9P-GE1/PCI/SSE2 NO MATCH
+NVIDIA NB9P-GS/PCI/SSE2 NO MATCH
+NVIDIA NV17/AGP/3DNOW! NO MATCH
+NVIDIA NV17/AGP/SSE2 NO MATCH
NVIDIA NV34 supported 0 NVIDIA NV34
NVIDIA NV35 supported 0 NVIDIA NV35
-NVIDIA NV36/AGP/SSE/3DNOW! UNRECOGNIZED
-NVIDIA NV36/AGP/SSE2 UNRECOGNIZED
-NVIDIA NV41/PCI/SSE2 UNRECOGNIZED
+NVIDIA NV36/AGP/SSE/3DNOW! NO MATCH
+NVIDIA NV36/AGP/SSE2 NO MATCH
+NVIDIA NV41/PCI/SSE2 NO MATCH
NVIDIA NV43 supported 1 NVIDIA NV43
+NVIDIA NV43/PCI/SSE2 supported 1 NVIDIA NV43
NVIDIA NV44 supported 1 NVIDIA NV44
+NVIDIA NV44/AGP/SSE2 supported 1 NVIDIA NV44
NVIDIA NVIDIA GeForce 210 OpenGL Engine supported 2 NVIDIA 210
NVIDIA NVIDIA GeForce 320M OpenGL Engine supported 2 NVIDIA 320M
NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine supported 1 NVIDIA GeForce 7300
@@ -1365,7 +1454,9 @@ NVIDIA NVIDIA GeForce GTX 460M OpenGL Engine
NVIDIA NVIDIA GeForce GTX 465 OpenGL Engine supported 3 NVIDIA GTX 465
NVIDIA NVIDIA GeForce GTX 470 OpenGL Engine supported 3 NVIDIA GTX 470
NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine supported 3 NVIDIA GTX 480
-NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine UNRECOGNIZED
+NVIDIA NVIDIA GeForce Pre-Release GF108 ES OpenGL Engine NO MATCH
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine NO MATCH
+NVIDIA NVIDIA GeForce Pre-Release MCP7A-J-DC OpenGL Engine NO MATCH
NVIDIA NVIDIA GeForce4 OpenGL Engine supported 0 NVIDIA GeForce 4
NVIDIA NVIDIA NV34MAP OpenGL Engine supported 0 NVIDIA NV34
NVIDIA NVIDIA Quadro 4000 OpenGL Engine supported 3 NVIDIA Quadro 4000
@@ -1376,11 +1467,15 @@ NVIDIA NVS 3100M/PCI/SSE2
NVIDIA NVS 4100/PCI/SSE2/3DNOW! supported 0 NVIDIA Quadro NVS
NVIDIA NVS 4200M/PCI/SSE2 supported 2 NVIDIA Quadro NVS 4200M
NVIDIA NVS 5100M/PCI/SSE2 supported 2 NVIDIA Quadro NVS 5100M
-NVIDIA PCI UNRECOGNIZED
+NVIDIA PCI NO MATCH
+NVIDIA Quadro 1000M/PCI/SSE2 supported 2 NVIDIA Quadro 1000M
NVIDIA Quadro 2000/PCI/SSE2 supported 3 NVIDIA Quadro 2000 M/D
+NVIDIA Quadro 2000M/PCI/SSE2 supported 3 NVIDIA Quadro 2000 M/D
+NVIDIA Quadro 3000M/PCI/SSE2 NO MATCH
NVIDIA Quadro 4000 supported 3 NVIDIA Quadro 4000
NVIDIA Quadro 4000 OpenGL Engine supported 3 NVIDIA Quadro 4000
NVIDIA Quadro 4000/PCI/SSE2 supported 3 NVIDIA Quadro 4000
+NVIDIA Quadro 4000M/PCI/SSE2 supported 3 NVIDIA Quadro 4000M
NVIDIA Quadro 5000/PCI/SSE2 supported 3 NVIDIA Quadro 50x0 M
NVIDIA Quadro 5000M/PCI/SSE2 supported 3 NVIDIA Quadro 50x0 M
NVIDIA Quadro 600 supported 2 NVIDIA Quadro 600
@@ -1388,12 +1483,13 @@ NVIDIA Quadro 600/PCI/SSE2
NVIDIA Quadro 600/PCI/SSE2/3DNOW! supported 2 NVIDIA Quadro 600
NVIDIA Quadro 6000 supported 3 NVIDIA Quadro 6000
NVIDIA Quadro 6000/PCI/SSE2 supported 3 NVIDIA Quadro 6000
-NVIDIA Quadro CX/PCI/SSE2 UNRECOGNIZED
+NVIDIA Quadro CX/PCI/SSE2 NO MATCH
NVIDIA Quadro DCC supported 0 NVIDIA Quadro DCC
NVIDIA Quadro FX supported 1 NVIDIA Quadro FX
NVIDIA Quadro FX 1100/AGP/SSE2 supported 1 NVIDIA Quadro FX
NVIDIA Quadro FX 1400/PCI/SSE2 supported 2 NVIDIA Quadro 400
NVIDIA Quadro FX 1500 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 1500/PCI/SSE2 supported 1 NVIDIA Quadro FX
NVIDIA Quadro FX 1500M/PCI/SSE2 supported 1 NVIDIA Quadro FX 1500M
NVIDIA Quadro FX 1600M/PCI/SSE2 supported 2 NVIDIA Quadro 600
NVIDIA Quadro FX 1700 supported 1 NVIDIA Quadro FX
@@ -1421,7 +1517,9 @@ NVIDIA Quadro FX 4500
NVIDIA Quadro FX 4600 supported 2 NVIDIA Quadro 600
NVIDIA Quadro FX 4800 supported 3 NVIDIA Quadro FX 4800
NVIDIA Quadro FX 4800/PCI/SSE2 supported 3 NVIDIA Quadro FX 4800
+NVIDIA Quadro FX 540/PCI/SSE2/3DNOW! supported 1 NVIDIA Quadro FX
NVIDIA Quadro FX 560 supported 1 NVIDIA Quadro FX
+NVIDIA Quadro FX 560/PCI/SSE2 supported 1 NVIDIA Quadro FX
NVIDIA Quadro FX 5600 supported 2 NVIDIA Quadro 600
NVIDIA Quadro FX 570 supported 1 NVIDIA Quadro FX
NVIDIA Quadro FX 570/PCI/SSE2 supported 1 NVIDIA Quadro FX
@@ -1445,15 +1543,25 @@ NVIDIA Quadro NVS 295/PCI/SSE2
NVIDIA Quadro NVS 320M/PCI/SSE2 supported 2 NVIDIA Quadro NVS 320M
NVIDIA Quadro NVS 55/280 PCI/PCI/SSE2 supported 0 NVIDIA Quadro NVS
NVIDIA Quadro NVS/PCI/SSE2 supported 0 NVIDIA Quadro NVS
-NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW! UNRECOGNIZED
-NVIDIA Quadro VX 200/PCI/SSE2 UNRECOGNIZED
-NVIDIA Quadro/AGP/SSE2 UNRECOGNIZED
+NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW! NO MATCH
+NVIDIA Quadro VX 200/PCI/SSE2 NO MATCH
+NVIDIA Quadro/AGP/SSE2 NO MATCH
NVIDIA Quadro2 supported 0 NVIDIA Quadro2
NVIDIA Quadro4 supported 0 NVIDIA Quadro4
+NVIDIA Quadro4 750 XGL/AGP/SSE2 supported 0 NVIDIA Quadro4
NVIDIA RIVA TNT unsupported 0 NVIDIA RIVA TNT
NVIDIA RIVA TNT2/AGP/SSE2 unsupported 0 NVIDIA RIVA TNT
NVIDIA RIVA TNT2/PCI/3DNOW! unsupported 0 NVIDIA RIVA TNT
+NVIDIA Tesla C2050/PCI/SSE2 NO MATCH
NVIDIA nForce unsupported 0 NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA nForce 750a SLI/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 750a SLI/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA nForce 760i SLI/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 780a SLI/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
+NVIDIA nForce 980a/780a SLI/PCI/SSE2 unsupported 0 NVIDIA nForce
+NVIDIA nForce 980a/780a SLI/PCI/SSE2/3DNOW! unsupported 0 NVIDIA nForce
NVIDIA unknown board/AGP/SSE2 unsupported 0 NVIDIA Generic
NVIDIA unknown board/PCI/SSE2 unsupported 0 NVIDIA Generic
NVIDIA unknown board/PCI/SSE2/3DNOW! unsupported 0 NVIDIA Generic
@@ -1462,27 +1570,33 @@ Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL En
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine supported 3 ATI Radeon HD 5700
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine supported 3 ATI Radeon HD 6400
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine supported 3 ATI Radeon HD 6700
-Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com UNRECOGNIZED
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine supported 3 ATI Radeon HD 6700
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine supported 3 ATI Radeon HD 6900
+Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com NO MATCH
Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine supported 2 Intel HD Graphics
Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine supported 2 NVIDIA 320M
Parallels and NVIDIA Parallels using NVIDIA GeForce 9400 OpenGL Engine supported 1 NVIDIA GeForce 9400
Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine supported 2 NVIDIA GT 120M
Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine supported 3 NVIDIA GT 330M
Radeon RV350 on Gallium supported 0 ATI RV350 (9600)
-S3 UNRECOGNIZED
+S3 NO MATCH
+S3 Fire GL2 NO MATCH
S3 Graphics VIA/S3G UniChrome IGP/MMX/K3D unsupported 0 S3
+S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE unsupported 0 S3
S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE unsupported 0 S3
S3 Graphics, Incorporated ProSavage/Twister unsupported 0 S3
S3 Graphics, Incorporated S3 Graphics Chrome9 HC unsupported 0 S3
S3 Graphics, Incorporated S3 Graphics DeltaChrome unsupported 0 S3
S3 Graphics, Incorporated VIA Chrome9 HC IGP unsupported 0 S3
SiS unsupported 0 SiS
+SiS 650/M650 VGA unsupported 0 SiS
SiS 661 VGA unsupported 0 SiS
SiS 662 VGA unsupported 0 SiS
SiS 741 VGA unsupported 0 SiS
SiS 760 VGA unsupported 0 SiS
SiS 761GX VGA unsupported 0 SiS
SiS Mirage Graphics3 unsupported 0 SiS
+SiS Xabre VGA unsupported 0 SiS
Trident unsupported 0 Trident
Tungsten Graphics unsupported 0 Tungsten Graphics
Tungsten Graphics, Inc Mesa DRI 865G GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
@@ -1521,22 +1635,27 @@ Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI IGDNG_D GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Ironlake Desktop GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2 unsupported 0 Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset 20080716 x86/MMX/SSE2 unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20090712 2009Q2 RC3 x86/MMX... unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2 unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100328 2010Q1 unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT unsupported 0 Mesa
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MM... unsupported 0 Mesa
+Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) 20090101 x86/MMX/SSE2 TCL DRI2 unsupported 0 Mesa
Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5964) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2 unsupported 0 Mesa
VIA unsupported 0 VIA
-VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE; UNRECOGNIZED
-VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM) UNRECOGNIZED
-VMware, Inc. Gallium 0.4 on llvmpipe UNRECOGNIZED
-VMware, Inc. Gallium 0.4 on softpipe UNRECOGNIZED
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE; NO MATCH
+VMware, Inc. Gallium 0.4 on SVGA3D; build: DEBUG; mutex: MSVC Intrinsics NO MATCH
+VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE; NO MATCH
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM) NO MATCH
+VMware, Inc. Gallium 0.4 on llvmpipe NO MATCH
+VMware, Inc. Gallium 0.4 on softpipe NO MATCH
X.Org Gallium 0.4 on AMD BARTS supported 3 AMD BARTS (HD 6800)
X.Org Gallium 0.4 on AMD CEDAR supported 2 AMD CEDAR (HD 5450)
X.Org Gallium 0.4 on AMD HEMLOCK supported 3 AMD HEMLOCK (HD 5970)
X.Org Gallium 0.4 on AMD JUNIPER supported 3 AMD JUNIPER (HD 5700)
+X.Org Gallium 0.4 on AMD PALM NO MATCH
X.Org Gallium 0.4 on AMD REDWOOD supported 3 AMD REDWOOD (HD 5500/5600)
X.Org Gallium 0.4 on AMD RS780 supported 0 AMD RS780 (HD 3200)
X.Org Gallium 0.4 on AMD RS880 supported 1 AMD RS880 (HD 4200)
@@ -1549,16 +1668,21 @@ X.Org Gallium 0.4 on AMD RV730
X.Org Gallium 0.4 on AMD RV740 supported 3 AMD RV740 (HD 4700)
X.Org Gallium 0.4 on AMD RV770 supported 3 AMD RV770 (HD 4800)
X.Org R300 Project Gallium 0.4 on ATI R300 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI R350 supported 1 ATI R350 (9800)
+X.Org R300 Project Gallium 0.4 on ATI R420 supported 1 ATI R300 (9700)
X.Org R300 Project Gallium 0.4 on ATI R580 supported 3 ATI R580 (X1900)
X.Org R300 Project Gallium 0.4 on ATI RC410 unsupported 0 ATI RC410 (Xpress 200)
+X.Org R300 Project Gallium 0.4 on ATI RS480 unsupported 0 ATI RS48x (Xpress 200x)
X.Org R300 Project Gallium 0.4 on ATI RS482 unsupported 0 ATI RS48x (Xpress 200x)
X.Org R300 Project Gallium 0.4 on ATI RS600 unsupported 0 ATI RS600 (Xpress 3200)
X.Org R300 Project Gallium 0.4 on ATI RS690 supported 1 ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI RS740 supported 1 ATI R300 (9700)
X.Org R300 Project Gallium 0.4 on ATI RV350 supported 0 ATI RV350 (9600)
X.Org R300 Project Gallium 0.4 on ATI RV370 supported 0 ATI RV370 (X300)
X.Org R300 Project Gallium 0.4 on ATI RV410 supported 1 ATI RV410 (X700)
X.Org R300 Project Gallium 0.4 on ATI RV515 supported 1 ATI RV515
X.Org R300 Project Gallium 0.4 on ATI RV530 supported 1 ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV560 supported 1 ATI R300 (9700)
X.Org R300 Project Gallium 0.4 on ATI RV570 supported 3 ATI RV570 (X1900 GT/PRO)
X.Org R300 Project Gallium 0.4 on R420 supported 1 ATI R300 (9700)
X.Org R300 Project Gallium 0.4 on R580 supported 3 ATI R580 (X1900)
@@ -1574,23 +1698,29 @@ X.Org R300 Project Gallium 0.4 on RV410
X.Org R300 Project Gallium 0.4 on RV515 supported 1 ATI RV515
X.Org R300 Project Gallium 0.4 on RV530 supported 1 ATI RV530
XGI unsupported 0 XGI
-nouveau Gallium 0.4 on NV34 UNRECOGNIZED
-nouveau Gallium 0.4 on NV36 UNRECOGNIZED
-nouveau Gallium 0.4 on NV46 UNRECOGNIZED
-nouveau Gallium 0.4 on NV49 UNRECOGNIZED
-nouveau Gallium 0.4 on NV4A UNRECOGNIZED
-nouveau Gallium 0.4 on NV4B UNRECOGNIZED
-nouveau Gallium 0.4 on NV4E UNRECOGNIZED
-nouveau Gallium 0.4 on NV50 UNRECOGNIZED
-nouveau Gallium 0.4 on NV84 UNRECOGNIZED
-nouveau Gallium 0.4 on NV86 UNRECOGNIZED
-nouveau Gallium 0.4 on NV92 UNRECOGNIZED
-nouveau Gallium 0.4 on NV94 UNRECOGNIZED
-nouveau Gallium 0.4 on NV96 UNRECOGNIZED
-nouveau Gallium 0.4 on NV98 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA0 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA3 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA5 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA8 UNRECOGNIZED
-nouveau Gallium 0.4 on NVAA UNRECOGNIZED
-nouveau Gallium 0.4 on NVAC UNRECOGNIZED
+nouveau Gallium 0.4 on NV31 NO MATCH
+nouveau Gallium 0.4 on NV34 NO MATCH
+nouveau Gallium 0.4 on NV36 NO MATCH
+nouveau Gallium 0.4 on NV43 NO MATCH
+nouveau Gallium 0.4 on NV44 NO MATCH
+nouveau Gallium 0.4 on NV46 NO MATCH
+nouveau Gallium 0.4 on NV49 NO MATCH
+nouveau Gallium 0.4 on NV4A NO MATCH
+nouveau Gallium 0.4 on NV4B NO MATCH
+nouveau Gallium 0.4 on NV4C NO MATCH
+nouveau Gallium 0.4 on NV4E NO MATCH
+nouveau Gallium 0.4 on NV50 NO MATCH
+nouveau Gallium 0.4 on NV63 NO MATCH
+nouveau Gallium 0.4 on NV67 NO MATCH
+nouveau Gallium 0.4 on NV84 NO MATCH
+nouveau Gallium 0.4 on NV86 NO MATCH
+nouveau Gallium 0.4 on NV92 NO MATCH
+nouveau Gallium 0.4 on NV94 NO MATCH
+nouveau Gallium 0.4 on NV96 NO MATCH
+nouveau Gallium 0.4 on NV98 NO MATCH
+nouveau Gallium 0.4 on NVA0 NO MATCH
+nouveau Gallium 0.4 on NVA3 NO MATCH
+nouveau Gallium 0.4 on NVA5 NO MATCH
+nouveau Gallium 0.4 on NVA8 NO MATCH
+nouveau Gallium 0.4 on NVAA NO MATCH
+nouveau Gallium 0.4 on NVAC NO MATCH
diff --git a/indra/newview/tests/gpus_seen.txt b/indra/newview/tests/gpus_seen.txt
index 98b4adcf39..570f92a9b0 100644
--- a/indra/newview/tests/gpus_seen.txt
+++ b/indra/newview/tests/gpus_seen.txt
@@ -135,208 +135,386 @@ ATI Rage 128
ATI Technologies Inc.
ATI Technologies Inc. x86
ATI Technologies Inc. x86/SSE2
+ATI Technologies Inc. x86/SSE2
ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730
+ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2
ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2
ATI Technologies Inc. AMD 760G
+ATI Technologies Inc. AMD 760G
ATI Technologies Inc. AMD 760G (Microsoft WDDM 1.1)
ATI Technologies Inc. AMD 780L
ATI Technologies Inc. AMD FirePro 2270
ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200
ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200
ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250
+ATI Technologies Inc. AMD RADEON HD 6350
+ATI Technologies Inc. AMD RADEON HD 6450
ATI Technologies Inc. AMD RADEON HD 6450
+ATI Technologies Inc. AMD RADEON HD 6670
+ATI Technologies Inc. AMD Radeon 6600M and 6700M Series
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics
ATI Technologies Inc. AMD Radeon HD 6200 series Graphics
ATI Technologies Inc. AMD Radeon HD 6250 Graphics
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics
+ATI Technologies Inc. AMD Radeon HD 6290 Graphics
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics
ATI Technologies Inc. AMD Radeon HD 6300 series Graphics
ATI Technologies Inc. AMD Radeon HD 6300M Series
+ATI Technologies Inc. AMD Radeon HD 6300M Series
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics
ATI Technologies Inc. AMD Radeon HD 6310 Graphics
ATI Technologies Inc. AMD Radeon HD 6310M
+ATI Technologies Inc. AMD Radeon HD 6310M
+ATI Technologies Inc. AMD Radeon HD 6330M
ATI Technologies Inc. AMD Radeon HD 6330M
ATI Technologies Inc. AMD Radeon HD 6350
ATI Technologies Inc. AMD Radeon HD 6370M
+ATI Technologies Inc. AMD Radeon HD 6370M
ATI Technologies Inc. AMD Radeon HD 6400M Series
+ATI Technologies Inc. AMD Radeon HD 6400M Series
+ATI Technologies Inc. AMD Radeon HD 6450
ATI Technologies Inc. AMD Radeon HD 6450
ATI Technologies Inc. AMD Radeon HD 6470M
+ATI Technologies Inc. AMD Radeon HD 6470M
+ATI Technologies Inc. AMD Radeon HD 6490M
ATI Technologies Inc. AMD Radeon HD 6490M
+ATI Technologies Inc. AMD Radeon HD 6500 Series
+ATI Technologies Inc. AMD Radeon HD 6500M Series
ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6530M
ATI Technologies Inc. AMD Radeon HD 6530M
ATI Technologies Inc. AMD Radeon HD 6550M
+ATI Technologies Inc. AMD Radeon HD 6550M
ATI Technologies Inc. AMD Radeon HD 6570
+ATI Technologies Inc. AMD Radeon HD 6570
+ATI Technologies Inc. AMD Radeon HD 6570M
ATI Technologies Inc. AMD Radeon HD 6570M
ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6600 Series
ATI Technologies Inc. AMD Radeon HD 6600M Series
+ATI Technologies Inc. AMD Radeon HD 6630M
+ATI Technologies Inc. AMD Radeon HD 6650M
ATI Technologies Inc. AMD Radeon HD 6650M
ATI Technologies Inc. AMD Radeon HD 6670
+ATI Technologies Inc. AMD Radeon HD 6670
+ATI Technologies Inc. AMD Radeon HD 6700 Series
ATI Technologies Inc. AMD Radeon HD 6700 Series
ATI Technologies Inc. AMD Radeon HD 6750
+ATI Technologies Inc. AMD Radeon HD 6750
ATI Technologies Inc. AMD Radeon HD 6750M
+ATI Technologies Inc. AMD Radeon HD 6750M
+ATI Technologies Inc. AMD Radeon HD 6770
ATI Technologies Inc. AMD Radeon HD 6770
+ATI Technologies Inc. AMD Radeon HD 6770M
ATI Technologies Inc. AMD Radeon HD 6800 Series
+ATI Technologies Inc. AMD Radeon HD 6800 Series
+ATI Technologies Inc. AMD Radeon HD 6800M Series
+ATI Technologies Inc. AMD Radeon HD 6850
+ATI Technologies Inc. AMD Radeon HD 6850M
ATI Technologies Inc. AMD Radeon HD 6850M
ATI Technologies Inc. AMD Radeon HD 6870
+ATI Technologies Inc. AMD Radeon HD 6870
+ATI Technologies Inc. AMD Radeon HD 6870M
ATI Technologies Inc. AMD Radeon HD 6870M
ATI Technologies Inc. AMD Radeon HD 6900 Series
+ATI Technologies Inc. AMD Radeon HD 6900 Series
+ATI Technologies Inc. AMD Radeon HD 6900M Series
ATI Technologies Inc. AMD Radeon HD 6970M
+ATI Technologies Inc. AMD Radeon HD 6970M
+ATI Technologies Inc. AMD Radeon HD 6990
ATI Technologies Inc. AMD Radeon HD 6990
ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6480G
+ATI Technologies Inc. AMD Radeon(TM) HD 6520G
+ATI Technologies Inc. AMD Radeon(TM) HD 6620G
+ATI Technologies Inc. AMD Radeon(TM) HD 6630M
ATI Technologies Inc. ASUS 5870 Eyefinity 6
+ATI Technologies Inc. ASUS A9550 Series
ATI Technologies Inc. ASUS AH2600 Series
ATI Technologies Inc. ASUS AH3450 Series
ATI Technologies Inc. ASUS AH3650 Series
+ATI Technologies Inc. ASUS AH3650 Series
ATI Technologies Inc. ASUS AH4650 Series
ATI Technologies Inc. ASUS ARES
+ATI Technologies Inc. ASUS ARES
ATI Technologies Inc. ASUS EAH2900 Series
ATI Technologies Inc. ASUS EAH3450 Series
+ATI Technologies Inc. ASUS EAH3450 Series
ATI Technologies Inc. ASUS EAH3650 Series
+ATI Technologies Inc. ASUS EAH3650 Series
+ATI Technologies Inc. ASUS EAH4350 series
ATI Technologies Inc. ASUS EAH4350 series
ATI Technologies Inc. ASUS EAH4550 series
+ATI Technologies Inc. ASUS EAH4550 series
ATI Technologies Inc. ASUS EAH4650 series
ATI Technologies Inc. ASUS EAH4670 series
+ATI Technologies Inc. ASUS EAH4670 series
ATI Technologies Inc. ASUS EAH4750 Series
ATI Technologies Inc. ASUS EAH4770 Series
+ATI Technologies Inc. ASUS EAH4770 Series
+ATI Technologies Inc. ASUS EAH4770 series
ATI Technologies Inc. ASUS EAH4770 series
ATI Technologies Inc. ASUS EAH4850 series
ATI Technologies Inc. ASUS EAH5450 Series
+ATI Technologies Inc. ASUS EAH5450 Series
ATI Technologies Inc. ASUS EAH5550 Series
+ATI Technologies Inc. ASUS EAH5550 Series
+ATI Technologies Inc. ASUS EAH5570 series
ATI Technologies Inc. ASUS EAH5570 series
ATI Technologies Inc. ASUS EAH5670 Series
+ATI Technologies Inc. ASUS EAH5670 Series
+ATI Technologies Inc. ASUS EAH5750 Series
ATI Technologies Inc. ASUS EAH5750 Series
ATI Technologies Inc. ASUS EAH5770 Series
+ATI Technologies Inc. ASUS EAH5770 Series
ATI Technologies Inc. ASUS EAH5830 Series
ATI Technologies Inc. ASUS EAH5850 Series
+ATI Technologies Inc. ASUS EAH5850 Series
+ATI Technologies Inc. ASUS EAH5870 Series
ATI Technologies Inc. ASUS EAH5870 Series
ATI Technologies Inc. ASUS EAH5970 Series
+ATI Technologies Inc. ASUS EAH5970 Series
+ATI Technologies Inc. ASUS EAH6450 Series
+ATI Technologies Inc. ASUS EAH6570 Series
+ATI Technologies Inc. ASUS EAH6670 Series
+ATI Technologies Inc. ASUS EAH6850 Series
ATI Technologies Inc. ASUS EAH6850 Series
ATI Technologies Inc. ASUS EAH6870 Series
+ATI Technologies Inc. ASUS EAH6870 Series
+ATI Technologies Inc. ASUS EAH6950 Series
ATI Technologies Inc. ASUS EAH6950 Series
ATI Technologies Inc. ASUS EAH6970 Series
+ATI Technologies Inc. ASUS EAH6970 Series
ATI Technologies Inc. ASUS EAHG4670 series
ATI Technologies Inc. ASUS Extreme AX600 Series
+ATI Technologies Inc. ASUS Extreme AX600 Series
+ATI Technologies Inc. ASUS Extreme AX600XT-TD
ATI Technologies Inc. ASUS Extreme AX600XT-TD
ATI Technologies Inc. ASUS X1300 Series x86/SSE2
ATI Technologies Inc. ASUS X1550 Series
ATI Technologies Inc. ASUS X1950 Series x86/SSE2
ATI Technologies Inc. ASUS X800 Series
+ATI Technologies Inc. ASUS X800 Series
ATI Technologies Inc. ASUS X850 Series
ATI Technologies Inc. ATI All-in-Wonder HD
ATI Technologies Inc. ATI FirePro 2260
+ATI Technologies Inc. ATI FirePro 2260
ATI Technologies Inc. ATI FirePro 2450
ATI Technologies Inc. ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M7740
ATI Technologies Inc. ATI FirePro M7740
ATI Technologies Inc. ATI FirePro M7820
+ATI Technologies Inc. ATI FirePro M7820
ATI Technologies Inc. ATI FirePro V3700 (FireGL)
ATI Technologies Inc. ATI FirePro V3800
ATI Technologies Inc. ATI FirePro V4800
ATI Technologies Inc. ATI FirePro V4800 (FireGL)
ATI Technologies Inc. ATI FirePro V5800
ATI Technologies Inc. ATI FirePro V7800
+ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2
ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON HD 2300
ATI Technologies Inc. ATI MOBILITY RADEON HD 3450
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3650
+ATI Technologies Inc. ATI MOBILITY RADEON X1600
ATI Technologies Inc. ATI MOBILITY RADEON X1600
ATI Technologies Inc. ATI MOBILITY RADEON X2300
+ATI Technologies Inc. ATI MOBILITY RADEON X2300
ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2
ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2
ATI Technologies Inc. ATI MOBILITY RADEON X300
+ATI Technologies Inc. ATI MOBILITY RADEON X300
ATI Technologies Inc. ATI MOBILITY RADEON X600
+ATI Technologies Inc. ATI MOBILITY RADEON X700
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
ATI Technologies Inc. ATI Mobility FireGL V5700
+ATI Technologies Inc. ATI Mobility FireGL V5700
+ATI Technologies Inc. ATI Mobility Radeon 4100
ATI Technologies Inc. ATI Mobility Radeon 4100
ATI Technologies Inc. ATI Mobility Radeon Graphics
+ATI Technologies Inc. ATI Mobility Radeon Graphics
ATI Technologies Inc. ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2400
ATI Technologies Inc. ATI Mobility Radeon HD 2400
ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2600
ATI Technologies Inc. ATI Mobility Radeon HD 2600
ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT
ATI Technologies Inc. ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series
ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 3410
+ATI Technologies Inc. ATI Mobility Radeon HD 3430
ATI Technologies Inc. ATI Mobility Radeon HD 3430
ATI Technologies Inc. ATI Mobility Radeon HD 3450
+ATI Technologies Inc. ATI Mobility Radeon HD 3450
+ATI Technologies Inc. ATI Mobility Radeon HD 3470
ATI Technologies Inc. ATI Mobility Radeon HD 3470
ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2
ATI Technologies Inc. ATI Mobility Radeon HD 3650
+ATI Technologies Inc. ATI Mobility Radeon HD 3650
+ATI Technologies Inc. ATI Mobility Radeon HD 3670
+ATI Technologies Inc. ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4200
ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4225
ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4250
ATI Technologies Inc. ATI Mobility Radeon HD 4250
ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4270
ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4330
ATI Technologies Inc. ATI Mobility Radeon HD 4330
ATI Technologies Inc. ATI Mobility Radeon HD 4330 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4350
ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4530
+ATI Technologies Inc. ATI Mobility Radeon HD 4530
+ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4550
+ATI Technologies Inc. ATI Mobility Radeon HD 4550
+ATI Technologies Inc. ATI Mobility Radeon HD 4570
ATI Technologies Inc. ATI Mobility Radeon HD 4570
ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4650
ATI Technologies Inc. ATI Mobility Radeon HD 4650
ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4670
ATI Technologies Inc. ATI Mobility Radeon HD 4670
ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series
ATI Technologies Inc. ATI Mobility Radeon HD 4850
ATI Technologies Inc. ATI Mobility Radeon HD 4870
+ATI Technologies Inc. ATI Mobility Radeon HD 4870
+ATI Technologies Inc. ATI Mobility Radeon HD 5000
ATI Technologies Inc. ATI Mobility Radeon HD 5000
ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5145
ATI Technologies Inc. ATI Mobility Radeon HD 5145
ATI Technologies Inc. ATI Mobility Radeon HD 5165
+ATI Technologies Inc. ATI Mobility Radeon HD 5165
ATI Technologies Inc. ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series
ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series
ATI Technologies Inc. ATI Mobility Radeon HD 540v
ATI Technologies Inc. ATI Mobility Radeon HD 5430
+ATI Technologies Inc. ATI Mobility Radeon HD 5430
+ATI Technologies Inc. ATI Mobility Radeon HD 5450
ATI Technologies Inc. ATI Mobility Radeon HD 5450
ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 545v
ATI Technologies Inc. ATI Mobility Radeon HD 545v
ATI Technologies Inc. ATI Mobility Radeon HD 5470
+ATI Technologies Inc. ATI Mobility Radeon HD 5470
ATI Technologies Inc. ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series
ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series
ATI Technologies Inc. ATI Mobility Radeon HD 560v
ATI Technologies Inc. ATI Mobility Radeon HD 5650
+ATI Technologies Inc. ATI Mobility Radeon HD 5650
+ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
ATI Technologies Inc. ATI Mobility Radeon HD 5730
+ATI Technologies Inc. ATI Mobility Radeon HD 5730
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series
ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5850
ATI Technologies Inc. ATI Mobility Radeon HD 5850
ATI Technologies Inc. ATI Mobility Radeon HD 5870
+ATI Technologies Inc. ATI Mobility Radeon HD 5870
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series
ATI Technologies Inc. ATI Mobility Radeon HD 6300 series
ATI Technologies Inc. ATI Mobility Radeon HD 6370
+ATI Technologies Inc. ATI Mobility Radeon HD 6370
ATI Technologies Inc. ATI Mobility Radeon HD 6470M
ATI Technologies Inc. ATI Mobility Radeon HD 6550
+ATI Technologies Inc. ATI Mobility Radeon HD 6550
ATI Technologies Inc. ATI Mobility Radeon HD 6570
+ATI Technologies Inc. ATI Mobility Radeon HD 6570
+ATI Technologies Inc. ATI Mobility Radeon X1300
ATI Technologies Inc. ATI Mobility Radeon X1300
ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1350
ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1400
+ATI Technologies Inc. ATI Mobility Radeon X1400
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1600
+ATI Technologies Inc. ATI Mobility Radeon X1600
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon X2300
+ATI Technologies Inc. ATI Mobility Radeon X2300
ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442)
ATI Technologies Inc. ATI Mobility Radeon X2300 x86
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2500
ATI Technologies Inc. ATI Mobility Radeon X2500
ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2
ATI Technologies Inc. ATI Mobility Radeon. HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470
ATI Technologies Inc. ATI Mobility Radeon. HD 5470
ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO
ATI Technologies Inc. ATI RADEON XPRESS 1100
+ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series
ATI Technologies Inc. ATI RADEON XPRESS 200 Series
ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2
ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES
ATI Technologies Inc. ATI Radeon
ATI Technologies Inc. ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 2100
ATI Technologies Inc. ATI Radeon 2100 (Microsoft - WDDM)
ATI Technologies Inc. ATI Radeon 2100 Graphics
ATI Technologies Inc. ATI Radeon 3000
+ATI Technologies Inc. ATI Radeon 3000
ATI Technologies Inc. ATI Radeon 3000 Graphics
+ATI Technologies Inc. ATI Radeon 3000 Graphics
+ATI Technologies Inc. ATI Radeon 3100 Graphics
ATI Technologies Inc. ATI Radeon 3100 Graphics
ATI Technologies Inc. ATI Radeon 5xxx series
ATI Technologies Inc. ATI Radeon 9550 / X1050 Series
@@ -347,143 +525,239 @@ ATI Technologies Inc. ATI Radeon 9600 / X1050 Series
ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series
ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon BB Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Broadway XT Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Cypress PRO Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Graphics Processor
+ATI Technologies Inc. ATI Radeon Graphics Processor
ATI Technologies Inc. ATI Radeon HD 2200 Graphics
ATI Technologies Inc. ATI Radeon HD 2350
ATI Technologies Inc. ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 2400 PRO
ATI Technologies Inc. ATI Radeon HD 2400 PRO AGP
ATI Technologies Inc. ATI Radeon HD 2400 Pro
+ATI Technologies Inc. ATI Radeon HD 2400 Pro
+ATI Technologies Inc. ATI Radeon HD 2400 Series
ATI Technologies Inc. ATI Radeon HD 2400 Series
ATI Technologies Inc. ATI Radeon HD 2400 XT
+ATI Technologies Inc. ATI Radeon HD 2400 XT
+ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 2600 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 2600 PRO
ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 Pro
ATI Technologies Inc. ATI Radeon HD 2600 Pro
ATI Technologies Inc. ATI Radeon HD 2600 Series
ATI Technologies Inc. ATI Radeon HD 2600 XT
+ATI Technologies Inc. ATI Radeon HD 2600 XT
ATI Technologies Inc. ATI Radeon HD 2900 GT
ATI Technologies Inc. ATI Radeon HD 2900 XT
ATI Technologies Inc. ATI Radeon HD 3200 Graphics
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics
ATI Technologies Inc. ATI Radeon HD 3300 Graphics
ATI Technologies Inc. ATI Radeon HD 3400 Series
+ATI Technologies Inc. ATI Radeon HD 3400 Series
ATI Technologies Inc. ATI Radeon HD 3450
+ATI Technologies Inc. ATI Radeon HD 3450
+ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex
ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex
ATI Technologies Inc. ATI Radeon HD 3470
ATI Technologies Inc. ATI Radeon HD 3470 - Dell Optiplex
ATI Technologies Inc. ATI Radeon HD 3550
+ATI Technologies Inc. ATI Radeon HD 3550
ATI Technologies Inc. ATI Radeon HD 3600 Series
+ATI Technologies Inc. ATI Radeon HD 3600 Series
+ATI Technologies Inc. ATI Radeon HD 3650
ATI Technologies Inc. ATI Radeon HD 3650
ATI Technologies Inc. ATI Radeon HD 3650 AGP
ATI Technologies Inc. ATI Radeon HD 3730
ATI Technologies Inc. ATI Radeon HD 3800 Series
+ATI Technologies Inc. ATI Radeon HD 3800 Series
+ATI Technologies Inc. ATI Radeon HD 3850
ATI Technologies Inc. ATI Radeon HD 3850
ATI Technologies Inc. ATI Radeon HD 3850 AGP
ATI Technologies Inc. ATI Radeon HD 3870
+ATI Technologies Inc. ATI Radeon HD 3870
ATI Technologies Inc. ATI Radeon HD 3870 X2
ATI Technologies Inc. ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4250
ATI Technologies Inc. ATI Radeon HD 4250
ATI Technologies Inc. ATI Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Radeon HD 4270
ATI Technologies Inc. ATI Radeon HD 4270
ATI Technologies Inc. ATI Radeon HD 4290
+ATI Technologies Inc. ATI Radeon HD 4290
+ATI Technologies Inc. ATI Radeon HD 4290 (Engineering Sample)
ATI Technologies Inc. ATI Radeon HD 4300 Series
+ATI Technologies Inc. ATI Radeon HD 4300 Series
+ATI Technologies Inc. ATI Radeon HD 4300/4500 Series
ATI Technologies Inc. ATI Radeon HD 4300/4500 Series
ATI Technologies Inc. ATI Radeon HD 4350
+ATI Technologies Inc. ATI Radeon HD 4350
ATI Technologies Inc. ATI Radeon HD 4350 (Microsoft WDDM 1.1)
ATI Technologies Inc. ATI Radeon HD 4450
+ATI Technologies Inc. ATI Radeon HD 4450
ATI Technologies Inc. ATI Radeon HD 4500 Series
ATI Technologies Inc. ATI Radeon HD 4550
+ATI Technologies Inc. ATI Radeon HD 4550
+ATI Technologies Inc. ATI Radeon HD 4600 Series
ATI Technologies Inc. ATI Radeon HD 4600 Series
ATI Technologies Inc. ATI Radeon HD 4650
+ATI Technologies Inc. ATI Radeon HD 4650
ATI Technologies Inc. ATI Radeon HD 4670
+ATI Technologies Inc. ATI Radeon HD 4670
+ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 4700 Series
+ATI Technologies Inc. ATI Radeon HD 4700 Series
+ATI Technologies Inc. ATI Radeon HD 4720
ATI Technologies Inc. ATI Radeon HD 4720
ATI Technologies Inc. ATI Radeon HD 4730
+ATI Technologies Inc. ATI Radeon HD 4730
+ATI Technologies Inc. ATI Radeon HD 4730 Series
ATI Technologies Inc. ATI Radeon HD 4730 Series
ATI Technologies Inc. ATI Radeon HD 4750
ATI Technologies Inc. ATI Radeon HD 4770
+ATI Technologies Inc. ATI Radeon HD 4770
ATI Technologies Inc. ATI Radeon HD 4800 Series
+ATI Technologies Inc. ATI Radeon HD 4800 Series
+ATI Technologies Inc. ATI Radeon HD 4850
ATI Technologies Inc. ATI Radeon HD 4850
ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 4850 Series
ATI Technologies Inc. ATI Radeon HD 4870
+ATI Technologies Inc. ATI Radeon HD 4870
ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 4870 X2
+ATI Technologies Inc. ATI Radeon HD 4870 X2
+ATI Technologies Inc. ATI Radeon HD 5400 Series
ATI Technologies Inc. ATI Radeon HD 5400 Series
ATI Technologies Inc. ATI Radeon HD 5450
+ATI Technologies Inc. ATI Radeon HD 5450
+ATI Technologies Inc. ATI Radeon HD 5470
ATI Technologies Inc. ATI Radeon HD 5500 Series
+ATI Technologies Inc. ATI Radeon HD 5500 Series
+ATI Technologies Inc. ATI Radeon HD 5570
ATI Technologies Inc. ATI Radeon HD 5570
ATI Technologies Inc. ATI Radeon HD 5600 Series
+ATI Technologies Inc. ATI Radeon HD 5600 Series
+ATI Technologies Inc. ATI Radeon HD 5600/5700
ATI Technologies Inc. ATI Radeon HD 5630
ATI Technologies Inc. ATI Radeon HD 5670
+ATI Technologies Inc. ATI Radeon HD 5670
ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5700 Series
ATI Technologies Inc. ATI Radeon HD 5700 Series
ATI Technologies Inc. ATI Radeon HD 5750
+ATI Technologies Inc. ATI Radeon HD 5750
ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5770
ATI Technologies Inc. ATI Radeon HD 5770
ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5800 Series
ATI Technologies Inc. ATI Radeon HD 5800 Series
ATI Technologies Inc. ATI Radeon HD 5850
+ATI Technologies Inc. ATI Radeon HD 5850
ATI Technologies Inc. ATI Radeon HD 5870
ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5900 Series
ATI Technologies Inc. ATI Radeon HD 5900 Series
ATI Technologies Inc. ATI Radeon HD 5970
ATI Technologies Inc. ATI Radeon HD 6230
+ATI Technologies Inc. ATI Radeon HD 6230
+ATI Technologies Inc. ATI Radeon HD 6250
ATI Technologies Inc. ATI Radeon HD 6250
ATI Technologies Inc. ATI Radeon HD 6350
ATI Technologies Inc. ATI Radeon HD 6390
ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6510
ATI Technologies Inc. ATI Radeon HD 6510
ATI Technologies Inc. ATI Radeon HD 6570M
+ATI Technologies Inc. ATI Radeon HD 6570M
+ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 6750
ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6770
ATI Technologies Inc. ATI Radeon HD 6770
ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine
ATI Technologies Inc. ATI Radeon HD 6800 Series
ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
ATI Technologies Inc. ATI Radeon HD3750
ATI Technologies Inc. ATI Radeon HD4300/HD4500 series
+ATI Technologies Inc. ATI Radeon HD4300/HD4500 series
+ATI Technologies Inc. ATI Radeon HD4670
ATI Technologies Inc. ATI Radeon HD4670
ATI Technologies Inc. ATI Radeon Juniper LE Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon RV710 Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon RV730 Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon RV770 Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Redwood PRO Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon Whistler PRO/LP Prototype OpenGL Engine
ATI Technologies Inc. ATI Radeon X1050
ATI Technologies Inc. ATI Radeon X1050 Series
ATI Technologies Inc. ATI Radeon X1200
+ATI Technologies Inc. ATI Radeon X1200
ATI Technologies Inc. ATI Radeon X1200 Series
+ATI Technologies Inc. ATI Radeon X1200 Series
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon X1250
+ATI Technologies Inc. ATI Radeon X1250
ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon X1270
+ATI Technologies Inc. ATI Radeon X1270
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon X1300/X1550 Series
ATI Technologies Inc. ATI Radeon X1550 Series
+ATI Technologies Inc. ATI Radeon X1550 Series
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine
ATI Technologies Inc. ATI Radeon X1950 GT
ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
ATI Technologies Inc. ATI Radeon Xpress 1100
ATI Technologies Inc. ATI Radeon Xpress 1150
+ATI Technologies Inc. ATI Radeon Xpress 1150
ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon Xpress 1200
+ATI Technologies Inc. ATI Radeon Xpress 1200
ATI Technologies Inc. ATI Radeon Xpress 1200 Series
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon Xpress 1250
+ATI Technologies Inc. ATI Radeon Xpress 1250
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2
ATI Technologies Inc. ATI Radeon Xpress Series
+ATI Technologies Inc. ATI Radeon Xpress Series
+ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. ATI Yamaha HD 9000
ATI Technologies Inc. ATi RS880M
+ATI Technologies Inc. ATi RS880M
ATI Technologies Inc. Carte graphique VGA standard
ATI Technologies Inc. Diamond Radeon X1550 Series
ATI Technologies Inc. EG JUNIPER
@@ -491,7 +765,9 @@ ATI Technologies Inc. EG PARK
ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2)
ATI Technologies Inc. FireMV 2400 PCI DDR x86
ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
+ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
ATI Technologies Inc. GeCube Radeon X1550
+ATI Technologies Inc. GeForce 9600 GT x86/SSE2
ATI Technologies Inc. Geforce 9500 GT
ATI Technologies Inc. Geforce 9500GT
ATI Technologies Inc. Geforce 9800 GT
@@ -501,98 +777,153 @@ ATI Technologies Inc. HIGHTECH EXCALIBUR X700 PRO
ATI Technologies Inc. M21 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. M76M
ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2
ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
ATI Technologies Inc. MOBILITY RADEON X700 SE x86
ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2
ATI Technologies Inc. MSI RX9550SE
+ATI Technologies Inc. MSI Radeon X1550 Series
+ATI Technologies Inc. Mobility Radeon HD 6000 series
ATI Technologies Inc. Mobility Radeon X2300 HD
+ATI Technologies Inc. Mobility Radeon X2300 HD
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE
ATI Technologies Inc. RADEON 7000 DDR x86/SSE2
ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON 7500 DDR x86/SSE2
ATI Technologies Inc. RADEON 9100 IGP DDR x86/SSE2
ATI Technologies Inc. RADEON 9200 DDR x86/MMX/3DNow!/SSE
ATI Technologies Inc. RADEON 9200 DDR x86/SSE2
ATI Technologies Inc. RADEON 9200 PRO DDR x86/MMX/3DNow!/SSE
ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2
ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2
ATI Technologies Inc. RADEON 9200SE DDR x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON 9200SE DDR x86/SSE2
ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE
ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2
ATI Technologies Inc. RADEON 9500
ATI Technologies Inc. RADEON 9550 x86/SSE2
ATI Technologies Inc. RADEON 9600 SERIES
ATI Technologies Inc. RADEON 9600 SERIES x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9600 SERIES x86/SSE2
+ATI Technologies Inc. RADEON 9600 TX x86/SSE2
ATI Technologies Inc. RADEON 9600 TX x86/SSE2
ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON 9600 x86/SSE2
+ATI Technologies Inc. RADEON 9600 x86/SSE2
ATI Technologies Inc. RADEON 9700 PRO x86/MMX/3DNow!/SSE
ATI Technologies Inc. RADEON 9800 PRO
ATI Technologies Inc. RADEON 9800 x86/SSE2
ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
+ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
ATI Technologies Inc. RADEON X300 Series x86/SSE2
ATI Technologies Inc. RADEON X300 x86/SSE2
+ATI Technologies Inc. RADEON X300 x86/SSE2
+ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2
ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2
ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON X550 x86/SSE2
ATI Technologies Inc. RADEON X600 Series
ATI Technologies Inc. RADEON X600 x86/SSE2
+ATI Technologies Inc. RADEON X600 x86/SSE2
+ATI Technologies Inc. RADEON X600/X550 Series
ATI Technologies Inc. RADEON X700 PRO x86/SSE2
ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON X800 XT
ATI Technologies Inc. RADEON X800GT
ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2
ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2
ATI Technologies Inc. RADEON XPRESS 200 Series x86/SSE2
ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2
ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2
ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. RADEON XPRESS 200M Series x86/SSE2
ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/SSE2
ATI Technologies Inc. RADEON XPRESS Series x86/SSE2
ATI Technologies Inc. RS740
ATI Technologies Inc. RS780C
ATI Technologies Inc. RS780M
+ATI Technologies Inc. RS780M
+ATI Technologies Inc. RS880
ATI Technologies Inc. RS880
ATI Technologies Inc. RV410 Pro x86/SSE2
ATI Technologies Inc. RV790
+ATI Technologies Inc. RV790
+ATI Technologies Inc. Radeon (TM) HD 6470M
ATI Technologies Inc. Radeon (TM) HD 6470M
ATI Technologies Inc. Radeon (TM) HD 6490M
+ATI Technologies Inc. Radeon (TM) HD 6490M
+ATI Technologies Inc. Radeon (TM) HD 6750M
+ATI Technologies Inc. Radeon (TM) HD 6770M
ATI Technologies Inc. Radeon (TM) HD 6770M
+ATI Technologies Inc. Radeon (TM) HD 6850M
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE
ATI Technologies Inc. Radeon 7000 DDR x86/SSE2
ATI Technologies Inc. Radeon 7000 SDR x86/SSE2
ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
+ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
ATI Technologies Inc. Radeon 9000 DDR x86/SSE2
ATI Technologies Inc. Radeon DDR x86/MMX/3DNow!/SSE2
ATI Technologies Inc. Radeon DDR x86/SSE
ATI Technologies Inc. Radeon DDR x86/SSE2
ATI Technologies Inc. Radeon HD 6310
+ATI Technologies Inc. Radeon HD 6310
+ATI Technologies Inc. Radeon HD 6470M
+ATI Technologies Inc. Radeon HD 6490M
ATI Technologies Inc. Radeon HD 6800 Series
+ATI Technologies Inc. Radeon HD 6800 Series
+ATI Technologies Inc. Radeon SDR x86/SSE2
ATI Technologies Inc. Radeon SDR x86/SSE2
ATI Technologies Inc. Radeon X1300 Series
ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. Radeon X1300 Series x86/SSE2
ATI Technologies Inc. Radeon X1300/X1550 Series
+ATI Technologies Inc. Radeon X1300/X1550 Series
ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2
ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM)
ATI Technologies Inc. Radeon X1550 Series
ATI Technologies Inc. Radeon X1550 Series x86/SSE2
ATI Technologies Inc. Radeon X1600
ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1600 Series
ATI Technologies Inc. Radeon X1600 Series x86/SSE2
+ATI Technologies Inc. Radeon X1600/1650 Series
ATI Technologies Inc. Radeon X1600/X1650 Series
ATI Technologies Inc. Radeon X1650 Series
+ATI Technologies Inc. Radeon X1650 Series
ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. Radeon X1650 Series x86/SSE2
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2
ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2
ATI Technologies Inc. Radeon X1950 Pro
ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2
@@ -602,18 +933,24 @@ ATI Technologies Inc. Radeon X300/X550/X1050 Series
ATI Technologies Inc. Radeon X550/X700 Series
ATI Technologies Inc. Radeon X550XTX x86/MMX/3DNow!/SSE2
ATI Technologies Inc. SAPPHIRE RADEON X300SE
+ATI Technologies Inc. SAPPHIRE RADEON X300SE
ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/MMX/3DNow!/SSE2
ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/SSE2
ATI Technologies Inc. SAPPHIRE Radeon X1550 Series
ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 x86/SSE2
+ATI Technologies Inc. Sapphire Radeon HD 3730
ATI Technologies Inc. Sapphire Radeon HD 3730
ATI Technologies Inc. Sapphire Radeon HD 3750
ATI Technologies Inc. Standard VGA Graphics Adapter
+ATI Technologies Inc. Standard VGA Graphics Adapter
ATI Technologies Inc. Tul, RADEON X600 PRO
ATI Technologies Inc. Tul, RADEON X600 PRO x86/SSE2
ATI Technologies Inc. Tul, RADEON X700 PRO
ATI Technologies Inc. Tul, RADEON X700 PRO x86/MMX/3DNow!/SSE2
ATI Technologies Inc. VisionTek Radeon 4350
+ATI Technologies Inc. VisionTek Radeon 4350
ATI Technologies Inc. VisionTek Radeon X1550 Series
ATI Technologies Inc. WRESTLER 9802
ATI Technologies Inc. WRESTLER 9803
@@ -630,6 +967,7 @@ Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX+/3DNow!
Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX/SSE2 TCL DRI2
Advanced Micro Devices, Inc. Mesa DRI R600 (RV635 9596) 20090101 x86/MMX+/3DNow!+/SSE TCL DRI2
Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX/SSE2 TCL DRI2
Advanced Micro Devices, Inc. Mesa DRI R600 (RV710 9552) 20090101 x86/MMX/SSE2 TCL DRI2
Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX/SSE2 TCL DRI2
@@ -648,6 +986,7 @@ DRI R300 Project Mesa DRI R300 (RV350 4153) 20090101 AGP 8x x86/MMX+/3DNow!+/SSE
DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV380 5B62) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV515 7145) 20090101 x86/MMX/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV515 7146) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
@@ -657,11 +996,17 @@ DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL
DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL DRI2
DRI R300 Project Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2
GPU_CLASS_UNKNOWN
+Humper 3D-Analyze v2.3 - http://www.tommti-systems.com
Humper Chromium
+Humper Chromium
+Imagination Technologies PowerVR SGX545
Intel
Intel HD Graphics Family
+Intel HD Graphics Family
Intel 3D-Analyze v2.2 - http://www.tommti-systems.com
Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
+Intel 4 Series Internal Chipset
Intel 4 Series Internal Chipset
Intel 830M
Intel 845G
@@ -674,19 +1019,26 @@ Intel 945GM
Intel 950
Intel 965
Intel B43 Express Chipset
+Intel B43 Express Chipset
Intel Bear Lake
Intel Broadwater
Intel Brookdale
Intel Cantiga
+Intel EMGD on PowerVR SGX535
Intel Eaglelake
Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)
Intel G33
Intel G41
Intel G41 Express Chipset
+Intel G41 Express Chipset
Intel G45
Intel G45/G43 Express Chipset
+Intel G45/G43 Express Chipset
+Intel Graphics Media Accelerator HD
Intel Graphics Media Accelerator HD
Intel HD Graphics
+Intel HD Graphics
Intel HD Graphics 100
Intel HD Graphics 200
Intel HD Graphics 200 BR-1101-00SH
@@ -695,6 +1047,7 @@ Intel HD Graphics 200 BR-1101-00SK
Intel HD Graphics 200 BR-1101-01M5
Intel HD Graphics 200 BR-1101-01M6
Intel HD Graphics BR-1004-01Y1
+Intel HD Graphics BR-1004-01Y1
Intel HD Graphics BR-1006-0364
Intel HD Graphics BR-1006-0365
Intel HD Graphics BR-1006-0366
@@ -704,46 +1057,73 @@ Intel HD Graphics BR-1101-04SZ
Intel HD Graphics BR-1101-04T0
Intel HD Graphics BR-1101-04T9
Intel HD Graphics Family
+Intel HD Graphics Family
Intel HD Graphics Family BR-1012-00Y8
Intel HD Graphics Family BR-1012-00YF
Intel HD Graphics Family BR-1012-00ZD
Intel HD Graphics Family BR-1102-00ML
Intel Inc. Intel GMA 900 OpenGL Engine
+Intel Inc. Intel GMA 900 OpenGL Engine
+Intel Inc. Intel GMA 950 OpenGL Engine
Intel Inc. Intel GMA 950 OpenGL Engine
Intel Inc. Intel GMA X3100 OpenGL Engine
+Intel Inc. Intel GMA X3100 OpenGL Engine
+Intel Inc. Intel HD Graphics 3000 OpenGL Engine
Intel Inc. Intel HD Graphics 3000 OpenGL Engine
Intel Inc. Intel HD Graphics OpenGL Engine
+Intel Inc. Intel HD Graphics OpenGL Engine
Intel Inc. Intel HD xxxx OpenGL Engine
Intel Intel 845G
+Intel Intel 845G
Intel Intel 855GM
+Intel Intel 855GM
+Intel Intel 865G
Intel Intel 865G
Intel Intel 915G
+Intel Intel 915G
Intel Intel 915GM
+Intel Intel 915GM
+Intel Intel 945G
Intel Intel 945G
Intel Intel 945GM
+Intel Intel 945GM
+Intel Intel 965/963 Graphics Media Accelerator
Intel Intel 965/963 Graphics Media Accelerator
Intel Intel Bear Lake B
+Intel Intel Bear Lake B
Intel Intel Broadwater G
Intel Intel Brookdale-G
+Intel Intel Brookdale-G
Intel Intel Calistoga
Intel Intel Cantiga
+Intel Intel Cantiga
Intel Intel Eaglelake
+Intel Intel Eaglelake
+Intel Intel Generic Renderer
+Intel Intel Grantsdale-G
Intel Intel Grantsdale-G
Intel Intel HD Graphics 3000
Intel Intel Lakeport
Intel Intel Montara-GM
Intel Intel Pineview Platform
+Intel Intel Pineview Platform
Intel Intel Springdale-G
Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1)
Intel Mobile 4 Series
Intel Mobile 4 Series Express Chipset Family
+Intel Mobile 4 Series Express Chipset Family
+Intel Mobile 45 Express Chipset Family
Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
+Intel Mobile HD Graphics
Intel Mobile HD Graphics
Intel Mobile Intel(R) 4 Series Express Chipset Family
Intel Mobile SandyBridge HD Graphics
Intel Montara
Intel Pineview
Intel Q45/Q43 Express Chipset
+Intel Q45/Q43 Express Chipset
+Intel Royal BNA Driver
Intel Royal BNA Driver
Intel SandyBridge HD Graphics
Intel SandyBridge HD Graphics BR-1006-00V8
@@ -751,14 +1131,18 @@ Intel Springdale
Intel X3100
Intergraph wcgdrv 06.05.06.18
Intergraph wcgdrv 06.06.00.35
+Intergraph wcgdrv 06.06.00.35
LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://LegendgrafiX.tk
LegendgrafiX NVIDIA GeForce GT 430/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://LegendgrafiX.tk
Linden Lab Headless
Matrox
Mesa
Mesa Project Software Rasterizer
+Mesa Project Software Rasterizer
+NVIDIA /PCI/SSE2
NVIDIA /PCI/SSE2
NVIDIA /PCI/SSE2/3DNOW!
+NVIDIA /PCI/SSE2/3DNOW!
NVIDIA 205
NVIDIA 210
NVIDIA 310
@@ -767,8 +1151,13 @@ NVIDIA 315
NVIDIA 315M
NVIDIA 320M
NVIDIA C51
+NVIDIA Corporation GeForce GT 230/PCI/SSE2
+NVIDIA Corporation GeForce GTX 285/PCI/SSE2
+NVIDIA D10M2-20/PCI/SSE2
NVIDIA D10M2-20/PCI/SSE2
NVIDIA D10P1-25/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2/3DNOW!
NVIDIA D10P1-30/PCI/SSE2
NVIDIA D10P2-50/PCI/SSE2
NVIDIA D11M2-30/PCI/SSE2
@@ -776,11 +1165,16 @@ NVIDIA D12-P1-35/PCI/SSE2
NVIDIA D12U-15/PCI/SSE2
NVIDIA D13M1-40/PCI/SSE2
NVIDIA D13P1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2/3DNOW!
NVIDIA D13U-10/PCI/SSE2
NVIDIA D13U/PCI/SSE2
+NVIDIA D13U/PCI/SSE2
NVIDIA D9M
NVIDIA D9M-20/PCI/SSE2
NVIDIA Entry Graphics/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW!
NVIDIA Entry Graphics/PCI/SSE2/3DNOW!
NVIDIA G 102M
NVIDIA G 103M
@@ -801,7 +1195,10 @@ NVIDIA G92
NVIDIA G92-200/PCI/SSE2
NVIDIA G94
NVIDIA G96/PCI/SSE2
+NVIDIA G96/PCI/SSE2
+NVIDIA G98/PCI/SSE2
NVIDIA G98/PCI/SSE2
+NVIDIA G98/PCI/SSE2/3DNOW!
NVIDIA GT 120
NVIDIA GT 130
NVIDIA GT 130M
@@ -810,6 +1207,8 @@ NVIDIA GT 150
NVIDIA GT 160M
NVIDIA GT 220
NVIDIA GT 220/PCI/SSE2
+NVIDIA GT 220/PCI/SSE2
+NVIDIA GT 220/PCI/SSE2/3DNOW!
NVIDIA GT 220/PCI/SSE2/3DNOW!
NVIDIA GT 230
NVIDIA GT 230M
@@ -860,58 +1259,89 @@ NVIDIA GTX 590
NVIDIA GeForce
NVIDIA GeForce 2
NVIDIA GeForce 205/PCI/SSE2
+NVIDIA GeForce 205/PCI/SSE2
NVIDIA GeForce 210
NVIDIA GeForce 210/PCI/SSE2
+NVIDIA GeForce 210/PCI/SSE2
+NVIDIA GeForce 210/PCI/SSE2/3DNOW!
NVIDIA GeForce 210/PCI/SSE2/3DNOW!
NVIDIA GeForce 3
NVIDIA GeForce 305M/PCI/SSE2
+NVIDIA GeForce 305M/PCI/SSE2
+NVIDIA GeForce 310/PCI/SSE2
NVIDIA GeForce 310/PCI/SSE2
NVIDIA GeForce 310/PCI/SSE2/3DNOW!
+NVIDIA GeForce 310/PCI/SSE2/3DNOW!
+NVIDIA GeForce 310M/PCI/SSE2
NVIDIA GeForce 310M/PCI/SSE2
NVIDIA GeForce 315/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2/3DNOW!
NVIDIA GeForce 315/PCI/SSE2/3DNOW!
NVIDIA GeForce 315M/PCI/SSE2
+NVIDIA GeForce 315M/PCI/SSE2
NVIDIA GeForce 320M/PCI/SSE2
NVIDIA GeForce 4 Go
NVIDIA GeForce 4 MX
NVIDIA GeForce 4 Ti
NVIDIA GeForce 405/PCI/SSE2
+NVIDIA GeForce 405/PCI/SSE2
+NVIDIA GeForce 410M/PCI/SSE2
NVIDIA GeForce 6100
NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
NVIDIA GeForce 6100 nForce 405/PCI/SSE2
NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100/PCI/SSE2/3DNOW!
NVIDIA GeForce 6100/PCI/SSE2/3DNOW!
NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!
NVIDIA GeForce 6150/PCI/SSE2
NVIDIA GeForce 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2
NVIDIA GeForce 6150SE nForce 430/PCI/SSE2
NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!
NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!
NVIDIA GeForce 6200
NVIDIA GeForce 6200 A-LE/AGP/SSE/3DNOW!
NVIDIA GeForce 6200 A-LE/AGP/SSE2
NVIDIA GeForce 6200 A-LE/AGP/SSE2/3DNOW!
NVIDIA GeForce 6200 LE/PCI/SSE2
+NVIDIA GeForce 6200 LE/PCI/SSE2
NVIDIA GeForce 6200 LE/PCI/SSE2/3DNOW!
NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2
NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW!
NVIDIA GeForce 6200/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE2
NVIDIA GeForce 6200/AGP/SSE2
NVIDIA GeForce 6200/AGP/SSE2/3DNOW!
NVIDIA GeForce 6200/PCI/SSE/3DNOW!
NVIDIA GeForce 6200/PCI/SSE2
+NVIDIA GeForce 6200/PCI/SSE2
+NVIDIA GeForce 6200/PCI/SSE2/3DNOW!
NVIDIA GeForce 6200/PCI/SSE2/3DNOW!
NVIDIA GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW!
NVIDIA GeForce 6500
NVIDIA GeForce 6500/PCI/SSE2
+NVIDIA GeForce 6500/PCI/SSE2
NVIDIA GeForce 6600
NVIDIA GeForce 6600 GT/AGP/SSE/3DNOW!
NVIDIA GeForce 6600 GT/AGP/SSE2
+NVIDIA GeForce 6600 GT/AGP/SSE2
NVIDIA GeForce 6600 GT/PCI/SSE/3DNOW!
NVIDIA GeForce 6600 GT/PCI/SSE2
NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 6600 LE/PCI/SSE2
NVIDIA GeForce 6600/AGP/SSE/3DNOW!
NVIDIA GeForce 6600/AGP/SSE2
@@ -920,50 +1350,78 @@ NVIDIA GeForce 6600/PCI/SSE2
NVIDIA GeForce 6600/PCI/SSE2/3DNOW!
NVIDIA GeForce 6700
NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2
NVIDIA GeForce 6800 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 6800 GT/AGP/SSE2
NVIDIA GeForce 6800 GT/PCI/SSE2
NVIDIA GeForce 6800 XT/AGP/SSE2
NVIDIA GeForce 6800 XT/PCI/SSE2
+NVIDIA GeForce 6800 XT/PCI/SSE2/3DNOW!
NVIDIA GeForce 6800/PCI/SSE2
NVIDIA GeForce 6800/PCI/SSE2/3DNOW!
NVIDIA GeForce 7000
NVIDIA GeForce 7000M
NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2
NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2
NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
NVIDIA GeForce 7050 / NVIDIA nForce 620i/PCI/SSE2
NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2
NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2
NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2
NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW!
NVIDIA GeForce 7050 SE / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
NVIDIA GeForce 7100
NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 GS/PCI/SSE2
NVIDIA GeForce 7100 GS/PCI/SSE2
NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2
NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2
NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300
NVIDIA GeForce 7300 GS/PCI/SSE2
+NVIDIA GeForce 7300 GS/PCI/SSE2
+NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300 GT/AGP/SSE2
NVIDIA GeForce 7300 GT/AGP/SSE2/3DNOW!
NVIDIA GeForce 7300 GT/PCI/SSE2
+NVIDIA GeForce 7300 GT/PCI/SSE2
+NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300 LE/PCI/SSE2
+NVIDIA GeForce 7300 LE/PCI/SSE2
NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2
NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2
NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300 SE/PCI/SSE2
+NVIDIA GeForce 7300 SE/PCI/SSE2
+NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!
NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!
NVIDIA GeForce 7350 LE/PCI/SSE2
+NVIDIA GeForce 7350 LE/PCI/SSE2
NVIDIA GeForce 7500
NVIDIA GeForce 7500 LE/PCI/SSE2
NVIDIA GeForce 7500 LE/PCI/SSE2/3DNOW!
@@ -971,22 +1429,30 @@ NVIDIA GeForce 7600
NVIDIA GeForce 7600 GS/AGP/SSE2
NVIDIA GeForce 7600 GS/AGP/SSE2/3DNOW!
NVIDIA GeForce 7600 GS/PCI/SSE2
+NVIDIA GeForce 7600 GS/PCI/SSE2
+NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 7600 GT/AGP/SSE/3DNOW!
NVIDIA GeForce 7600 GT/AGP/SSE2
NVIDIA GeForce 7600 GT/PCI/SSE2
+NVIDIA GeForce 7600 GT/PCI/SSE2
NVIDIA GeForce 7600 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 7650 GS/PCI/SSE2
NVIDIA GeForce 7800
NVIDIA GeForce 7800 GS/AGP/SSE2
NVIDIA GeForce 7800 GS/AGP/SSE2/3DNOW!
NVIDIA GeForce 7800 GT/PCI/SSE2
+NVIDIA GeForce 7800 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 7800 GTX/PCI/SSE2
NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!
NVIDIA GeForce 7900
NVIDIA GeForce 7900 GS/PCI/SSE2
+NVIDIA GeForce 7900 GS/PCI/SSE2
NVIDIA GeForce 7900 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 7900 GT/GTO/PCI/SSE2
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 7900 GTX/PCI/SSE2
NVIDIA GeForce 7950 GT/PCI/SSE2
@@ -995,123 +1461,186 @@ NVIDIA GeForce 8100
NVIDIA GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW!
NVIDIA GeForce 8200
NVIDIA GeForce 8200/PCI/SSE2
+NVIDIA GeForce 8200/PCI/SSE2
+NVIDIA GeForce 8200/PCI/SSE2/3DNOW!
NVIDIA GeForce 8200/PCI/SSE2/3DNOW!
NVIDIA GeForce 8200M
NVIDIA GeForce 8200M G/PCI/SSE2
+NVIDIA GeForce 8200M G/PCI/SSE2
+NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!
NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!
NVIDIA GeForce 8300
NVIDIA GeForce 8300 GS/PCI/SSE2
+NVIDIA GeForce 8300 GS/PCI/SSE2
NVIDIA GeForce 8400
NVIDIA GeForce 8400 GS/PCI/SSE/3DNOW!
NVIDIA GeForce 8400 GS/PCI/SSE2
+NVIDIA GeForce 8400 GS/PCI/SSE2
+NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400GS/PCI/SSE2
+NVIDIA GeForce 8400GS/PCI/SSE2
+NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400M
NVIDIA GeForce 8400M G/PCI/SSE2
+NVIDIA GeForce 8400M G/PCI/SSE2
+NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW!
NVIDIA GeForce 8400M GS/PCI/SSE2
+NVIDIA GeForce 8400M GS/PCI/SSE2
NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GT/PCI/SSE2
NVIDIA GeForce 8400M GT/PCI/SSE2
NVIDIA GeForce 8500
NVIDIA GeForce 8500 GT/PCI/SSE2
+NVIDIA GeForce 8500 GT/PCI/SSE2
+NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 8600
NVIDIA GeForce 8600 GS/PCI/SSE2
+NVIDIA GeForce 8600 GS/PCI/SSE2
NVIDIA GeForce 8600 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8600 GT/PCI/SSE2
+NVIDIA GeForce 8600 GT/PCI/SSE2
+NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 8600 GTS/PCI/SSE2
NVIDIA GeForce 8600 GTS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8600GS/PCI/SSE2
+NVIDIA GeForce 8600GS/PCI/SSE2
NVIDIA GeForce 8600M
NVIDIA GeForce 8600M GS/PCI/SSE2
NVIDIA GeForce 8600M GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8600M GT/PCI/SSE2
+NVIDIA GeForce 8600M GT/PCI/SSE2
NVIDIA GeForce 8700
NVIDIA GeForce 8700M
NVIDIA GeForce 8700M GT/PCI/SSE2
+NVIDIA GeForce 8700M GT/PCI/SSE2
NVIDIA GeForce 8800
NVIDIA GeForce 8800 GS/PCI/SSE2
NVIDIA GeForce 8800 GT/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 8800 GTS 512/PCI/SSE2
NVIDIA GeForce 8800 GTS 512/PCI/SSE2/3DNOW!
NVIDIA GeForce 8800 GTS/PCI/SSE2
+NVIDIA GeForce 8800 GTS/PCI/SSE2
NVIDIA GeForce 8800 GTS/PCI/SSE2/3DNOW!
NVIDIA GeForce 8800 GTX/PCI/SSE2
NVIDIA GeForce 8800 Ultra/PCI/SSE2
NVIDIA GeForce 8800M GTS/PCI/SSE2
+NVIDIA GeForce 8800M GTS/PCI/SSE2
+NVIDIA GeForce 8800M GTX/PCI/SSE2
NVIDIA GeForce 8800M GTX/PCI/SSE2
NVIDIA GeForce 9100
NVIDIA GeForce 9100/PCI/SSE2
+NVIDIA GeForce 9100/PCI/SSE2
NVIDIA GeForce 9100/PCI/SSE2/3DNOW!
NVIDIA GeForce 9100M
NVIDIA GeForce 9100M G/PCI/SSE2
+NVIDIA GeForce 9100M G/PCI/SSE2
NVIDIA GeForce 9100M G/PCI/SSE2/3DNOW!
NVIDIA GeForce 9200
NVIDIA GeForce 9200/PCI/SSE2
+NVIDIA GeForce 9200/PCI/SSE2
NVIDIA GeForce 9200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200M GE/PCI/SSE2
NVIDIA GeForce 9200M GE/PCI/SSE2
NVIDIA GeForce 9200M GS/PCI/SSE2
+NVIDIA GeForce 9200M GS/PCI/SSE2
NVIDIA GeForce 9300
NVIDIA GeForce 9300 / nForce 730i/PCI/SSE2
NVIDIA GeForce 9300 GE/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW!
NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW!
NVIDIA GeForce 9300 GS/PCI/SSE2
+NVIDIA GeForce 9300 GS/PCI/SSE2
+NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 9300 SE/PCI/SSE2
NVIDIA GeForce 9300M
NVIDIA GeForce 9300M G/PCI/SSE2
+NVIDIA GeForce 9300M G/PCI/SSE2
NVIDIA GeForce 9300M G/PCI/SSE2/3DNOW!
NVIDIA GeForce 9300M GS/PCI/SSE2
+NVIDIA GeForce 9300M GS/PCI/SSE2
NVIDIA GeForce 9300M GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 9400
NVIDIA GeForce 9400 GT/PCI/SSE2
+NVIDIA GeForce 9400 GT/PCI/SSE2
+NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9400/PCI/SSE2
NVIDIA GeForce 9400M
NVIDIA GeForce 9400M G/PCI/SSE2
+NVIDIA GeForce 9400M G/PCI/SSE2
+NVIDIA GeForce 9400M/PCI/SSE2
NVIDIA GeForce 9400M/PCI/SSE2
NVIDIA GeForce 9500
NVIDIA GeForce 9500 GS/PCI/SSE2
+NVIDIA GeForce 9500 GS/PCI/SSE2
NVIDIA GeForce 9500 GS/PCI/SSE2/3DNOW!
NVIDIA GeForce 9500 GT/PCI/SSE2
+NVIDIA GeForce 9500 GT/PCI/SSE2
+NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9500M
NVIDIA GeForce 9500M GS/PCI/SSE2
+NVIDIA GeForce 9500M GS/PCI/SSE2
NVIDIA GeForce 9600
NVIDIA GeForce 9600 GS/PCI/SSE2
NVIDIA GeForce 9600 GSO 512/PCI/SSE2
NVIDIA GeForce 9600 GSO/PCI/SSE2
NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW!
NVIDIA GeForce 9600 GT/PCI/SSE2
+NVIDIA GeForce 9600 GT/PCI/SSE2
+NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9600M
NVIDIA GeForce 9600M GS/PCI/SSE2
+NVIDIA GeForce 9600M GS/PCI/SSE2
+NVIDIA GeForce 9600M GT/PCI/SSE2
NVIDIA GeForce 9600M GT/PCI/SSE2
NVIDIA GeForce 9650M GT/PCI/SSE2
+NVIDIA GeForce 9650M GT/PCI/SSE2
NVIDIA GeForce 9700M
NVIDIA GeForce 9700M GT/PCI/SSE2
NVIDIA GeForce 9700M GTS/PCI/SSE2
+NVIDIA GeForce 9700M GTS/PCI/SSE2
NVIDIA GeForce 9800
NVIDIA GeForce 9800 GT/PCI/SSE2
+NVIDIA GeForce 9800 GT/PCI/SSE2
+NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW!
NVIDIA GeForce 9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX+/PCI/SSE2
NVIDIA GeForce 9800 GTX+/PCI/SSE2/3DNOW!
NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2
NVIDIA GeForce 9800 GTX/PCI/SSE2
NVIDIA GeForce 9800 GX2/PCI/SSE2
NVIDIA GeForce 9800M
NVIDIA GeForce 9800M GS/PCI/SSE2
+NVIDIA GeForce 9800M GS/PCI/SSE2
+NVIDIA GeForce 9800M GT/PCI/SSE2
NVIDIA GeForce 9800M GT/PCI/SSE2
NVIDIA GeForce 9800M GTS/PCI/SSE2
+NVIDIA GeForce 9800M GTS/PCI/SSE2
NVIDIA GeForce FX 5100
NVIDIA GeForce FX 5100/AGP/SSE/3DNOW!
NVIDIA GeForce FX 5200
NVIDIA GeForce FX 5200/AGP/SSE
NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200/AGP/SSE2
NVIDIA GeForce FX 5200/AGP/SSE2
NVIDIA GeForce FX 5200/AGP/SSE2/3DNOW!
NVIDIA GeForce FX 5200/PCI/SSE2
@@ -1120,11 +1649,16 @@ NVIDIA GeForce FX 5200LE/AGP/SSE2
NVIDIA GeForce FX 5500
NVIDIA GeForce FX 5500/AGP/SSE/3DNOW!
NVIDIA GeForce FX 5500/AGP/SSE2
+NVIDIA GeForce FX 5500/AGP/SSE2
NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/PCI/SSE2
NVIDIA GeForce FX 5500/PCI/SSE2
NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW!
NVIDIA GeForce FX 5600
NVIDIA GeForce FX 5600/AGP/SSE2
+NVIDIA GeForce FX 5600/AGP/SSE2
NVIDIA GeForce FX 5600/AGP/SSE2/3DNOW!
NVIDIA GeForce FX 5600XT/AGP/SSE2/3DNOW!
NVIDIA GeForce FX 5700
@@ -1139,136 +1673,239 @@ NVIDIA GeForce FX Go5100
NVIDIA GeForce FX Go5100/AGP/SSE2
NVIDIA GeForce FX Go5200
NVIDIA GeForce FX Go5200/AGP/SSE2
+NVIDIA GeForce FX Go5200/AGP/SSE2
NVIDIA GeForce FX Go5300
NVIDIA GeForce FX Go5600
NVIDIA GeForce FX Go5600/AGP/SSE2
+NVIDIA GeForce FX Go5600/AGP/SSE2
NVIDIA GeForce FX Go5650/AGP/SSE2
NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5700/AGP/SSE2
NVIDIA GeForce FX Go5xxx/AGP/SSE2
+NVIDIA GeForce FX Go5xxx/AGP/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2
NVIDIA GeForce G 103M/PCI/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2/3DNOW!
NVIDIA GeForce G 105M/PCI/SSE2
+NVIDIA GeForce G 105M/PCI/SSE2
+NVIDIA GeForce G 110M/PCI/SSE2
NVIDIA GeForce G 110M/PCI/SSE2
NVIDIA GeForce G100/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2/3DNOW!
NVIDIA GeForce G100/PCI/SSE2/3DNOW!
NVIDIA GeForce G102M/PCI/SSE2
+NVIDIA GeForce G102M/PCI/SSE2
+NVIDIA GeForce G105M/PCI/SSE2
NVIDIA GeForce G105M/PCI/SSE2
NVIDIA GeForce G200/PCI/SSE2
+NVIDIA GeForce G200/PCI/SSE2
+NVIDIA GeForce G205M/PCI/SSE2
NVIDIA GeForce G205M/PCI/SSE2
NVIDIA GeForce G210/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2/3DNOW!
NVIDIA GeForce G210/PCI/SSE2/3DNOW!
NVIDIA GeForce G210M/PCI/SSE2
+NVIDIA GeForce G210M/PCI/SSE2
NVIDIA GeForce G310M/PCI/SSE2
NVIDIA GeForce GT 120/PCI/SSE2
+NVIDIA GeForce GT 120/PCI/SSE2
NVIDIA GeForce GT 120/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 120M/PCI/SSE2
NVIDIA GeForce GT 130M/PCI/SSE2
+NVIDIA GeForce GT 130M/PCI/SSE2
+NVIDIA GeForce GT 140/PCI/SSE2
NVIDIA GeForce GT 140/PCI/SSE2
NVIDIA GeForce GT 220/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 220/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 220M/PCI/SSE2
+NVIDIA GeForce GT 220M/PCI/SSE2
+NVIDIA GeForce GT 230/PCI/SSE2
NVIDIA GeForce GT 230/PCI/SSE2
NVIDIA GeForce GT 230M/PCI/SSE2
+NVIDIA GeForce GT 230M/PCI/SSE2
NVIDIA GeForce GT 240
NVIDIA GeForce GT 240/PCI/SSE2
+NVIDIA GeForce GT 240/PCI/SSE2
NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 240M/PCI/SSE2
NVIDIA GeForce GT 240M/PCI/SSE2
NVIDIA GeForce GT 320/PCI/SSE2
NVIDIA GeForce GT 320M/PCI/SSE2
+NVIDIA GeForce GT 320M/PCI/SSE2
NVIDIA GeForce GT 325M/PCI/SSE2
NVIDIA GeForce GT 330/PCI/SSE2
+NVIDIA GeForce GT 330/PCI/SSE2
NVIDIA GeForce GT 330/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 330M/PCI/SSE2
+NVIDIA GeForce GT 330M/PCI/SSE2
+NVIDIA GeForce GT 335M/PCI/SSE2
NVIDIA GeForce GT 335M/PCI/SSE2
NVIDIA GeForce GT 340/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 340/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 415M/PCI/SSE2
+NVIDIA GeForce GT 415M/PCI/SSE2
+NVIDIA GeForce GT 420/PCI/SSE2
NVIDIA GeForce GT 420/PCI/SSE2
NVIDIA GeForce GT 420M/PCI/SSE2
+NVIDIA GeForce GT 420M/PCI/SSE2
+NVIDIA GeForce GT 425M/PCI/SSE2
NVIDIA GeForce GT 425M/PCI/SSE2
NVIDIA GeForce GT 430/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 430/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 435M/PCI/SSE2
+NVIDIA GeForce GT 435M/PCI/SSE2
+NVIDIA GeForce GT 440/PCI/SSE2
NVIDIA GeForce GT 440/PCI/SSE2
NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 445M/PCI/SSE2
NVIDIA GeForce GT 445M/PCI/SSE2
+NVIDIA GeForce GT 520/PCI/SSE2
+NVIDIA GeForce GT 520/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 520M/PCI/SSE2
+NVIDIA GeForce GT 520M/PCI/SSE2
+NVIDIA GeForce GT 525M/PCI/SSE2
NVIDIA GeForce GT 525M/PCI/SSE2
+NVIDIA GeForce GT 530/PCI/SSE2
+NVIDIA GeForce GT 530/PCI/SSE2/3DNOW!
NVIDIA GeForce GT 540M/PCI/SSE2
+NVIDIA GeForce GT 540M/PCI/SSE2
+NVIDIA GeForce GT 545/PCI/SSE2
+NVIDIA GeForce GT 550M/PCI/SSE2
NVIDIA GeForce GT 550M/PCI/SSE2
NVIDIA GeForce GT 555M/PCI/SSE2
+NVIDIA GeForce GT 555M/PCI/SSE2
+NVIDIA GeForce GTS 150/PCI/SSE2
NVIDIA GeForce GTS 150/PCI/SSE2
NVIDIA GeForce GTS 160M/PCI/SSE2
+NVIDIA GeForce GTS 160M/PCI/SSE2
+NVIDIA GeForce GTS 240/PCI/SSE2
NVIDIA GeForce GTS 240/PCI/SSE2
NVIDIA GeForce GTS 250/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW!
NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW!
NVIDIA GeForce GTS 250M/PCI/SSE2
NVIDIA GeForce GTS 350M/PCI/SSE2
+NVIDIA GeForce GTS 350M/PCI/SSE2
+NVIDIA GeForce GTS 360M/PCI/SSE2
NVIDIA GeForce GTS 360M/PCI/SSE2
NVIDIA GeForce GTS 450/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW!
NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW!
NVIDIA GeForce GTS 455/PCI/SSE2
NVIDIA GeForce GTX 260/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 260M/PCI/SSE2
+NVIDIA GeForce GTX 260M/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2
NVIDIA GeForce GTX 275/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 280
NVIDIA GeForce GTX 280/PCI/SSE2
NVIDIA GeForce GTX 280M/PCI/SSE2
+NVIDIA GeForce GTX 285
+NVIDIA GeForce GTX 285/PCI/SSE2
+NVIDIA GeForce GTX 285/PCI/SSE2
NVIDIA GeForce GTX 285/PCI/SSE2
NVIDIA GeForce GTX 295/PCI/SSE2
+NVIDIA GeForce GTX 295/PCI/SSE2
+NVIDIA GeForce GTX 460 SE/PCI/SSE2
NVIDIA GeForce GTX 460 SE/PCI/SSE2
NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460/PCI/SSE2
NVIDIA GeForce GTX 460/PCI/SSE2
NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460M/PCI/SSE2
NVIDIA GeForce GTX 460M/PCI/SSE2
NVIDIA GeForce GTX 465/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 470/PCI/SSE2
+NVIDIA GeForce GTX 470/PCI/SSE2
NVIDIA GeForce GTX 470/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 480/PCI/SSE2
NVIDIA GeForce GTX 550 Ti/PCI/SSE2
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2
NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2
NVIDIA GeForce GTX 560 Ti/PCI/SSE2
NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560/PCI/SSE2
NVIDIA GeForce GTX 560/PCI/SSE2
+NVIDIA GeForce GTX 560/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560M/PCI/SSE2
NVIDIA GeForce GTX 570/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 580/PCI/SSE2
+NVIDIA GeForce GTX 580/PCI/SSE2
+NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
NVIDIA GeForce GTX 580M/PCI/SSE2
NVIDIA GeForce GTX 590/PCI/SSE2
+NVIDIA GeForce GTX 590/PCI/SSE2
NVIDIA GeForce Go 6
NVIDIA GeForce Go 6100
NVIDIA GeForce Go 6100/PCI/SSE2
NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 6150/PCI/SSE2
NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 6200
NVIDIA GeForce Go 6200/PCI/SSE2
NVIDIA GeForce Go 6400
NVIDIA GeForce Go 6400/PCI/SSE2
+NVIDIA GeForce Go 6400/PCI/SSE2
NVIDIA GeForce Go 6600
NVIDIA GeForce Go 6600/PCI/SSE2
+NVIDIA GeForce Go 6600/PCI/SSE2
NVIDIA GeForce Go 6800
NVIDIA GeForce Go 6800 Ultra/PCI/SSE2
+NVIDIA GeForce Go 6800 Ultra/PCI/SSE2
NVIDIA GeForce Go 6800/PCI/SSE2
NVIDIA GeForce Go 7200
NVIDIA GeForce Go 7200/PCI/SSE2
NVIDIA GeForce Go 7200/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 7300
NVIDIA GeForce Go 7300/PCI/SSE2
+NVIDIA GeForce Go 7300/PCI/SSE2
NVIDIA GeForce Go 7300/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 7400
NVIDIA GeForce Go 7400/PCI/SSE2
+NVIDIA GeForce Go 7400/PCI/SSE2
NVIDIA GeForce Go 7400/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 7600
NVIDIA GeForce Go 7600/PCI/SSE2
+NVIDIA GeForce Go 7600/PCI/SSE2
+NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!
NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7700/PCI/SSE2
NVIDIA GeForce Go 7800
NVIDIA GeForce Go 7800 GTX/PCI/SSE2
NVIDIA GeForce Go 7900
NVIDIA GeForce Go 7900 GS/PCI/SSE2
+NVIDIA GeForce Go 7900 GS/PCI/SSE2
NVIDIA GeForce Go 7900 GTX/PCI/SSE2
NVIDIA GeForce Go 7950 GTX/PCI/SSE2
NVIDIA GeForce PCX
@@ -1276,15 +1913,20 @@ NVIDIA GeForce2 GTS/AGP/SSE
NVIDIA GeForce2 MX/AGP/3DNOW!
NVIDIA GeForce2 MX/AGP/SSE/3DNOW!
NVIDIA GeForce2 MX/AGP/SSE2
+NVIDIA GeForce2 MX/AGP/SSE2
NVIDIA GeForce2 MX/PCI/SSE2
NVIDIA GeForce3/AGP/SSE/3DNOW!
NVIDIA GeForce3/AGP/SSE2
NVIDIA GeForce4 420 Go 32M/AGP/SSE2
NVIDIA GeForce4 420 Go 32M/AGP/SSE2/3DNOW!
NVIDIA GeForce4 420 Go 32M/PCI/SSE2/3DNOW!
+NVIDIA GeForce4 420 Go/AGP/SSE2
NVIDIA GeForce4 440 Go 64M/AGP/SSE2/3DNOW!
+NVIDIA GeForce4 440 Go/AGP/SSE2
NVIDIA GeForce4 460 Go/AGP/SSE2
NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/AGP/SSE2
NVIDIA GeForce4 MX 4000/AGP/SSE2
NVIDIA GeForce4 MX 4000/PCI/3DNOW!
NVIDIA GeForce4 MX 4000/PCI/SSE/3DNOW!
@@ -1292,97 +1934,161 @@ NVIDIA GeForce4 MX 4000/PCI/SSE2
NVIDIA GeForce4 MX 420/AGP/SSE/3DNOW!
NVIDIA GeForce4 MX 420/AGP/SSE2
NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440/AGP/SSE2
NVIDIA GeForce4 MX 440/AGP/SSE2
NVIDIA GeForce4 MX 440/AGP/SSE2/3DNOW!
NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE
NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW!
NVIDIA GeForce4 Ti 4400/AGP/SSE2
NVIDIA Generic
NVIDIA ION LE/PCI/SSE2
+NVIDIA ION LE/PCI/SSE2
+NVIDIA ION/PCI/SSE2
NVIDIA ION/PCI/SSE2
NVIDIA ION/PCI/SSE2/3DNOW!
+NVIDIA ION/PCI/SSE2/3DNOW!
+NVIDIA MCP61/PCI/SSE2
NVIDIA MCP61/PCI/SSE2
NVIDIA MCP61/PCI/SSE2/3DNOW!
+NVIDIA MCP61/PCI/SSE2/3DNOW!
+NVIDIA MCP73/PCI/SSE2
NVIDIA MCP73/PCI/SSE2
NVIDIA MCP79MH/PCI/SSE2
+NVIDIA MCP79MH/PCI/SSE2
+NVIDIA MCP79MX/PCI/SSE2
NVIDIA MCP79MX/PCI/SSE2
NVIDIA MCP7A-O/PCI/SSE2
+NVIDIA MCP7A-O/PCI/SSE2
NVIDIA MCP7A-S/PCI/SSE2
NVIDIA MCP89-EPT/PCI/SSE2
+NVIDIA MCP89-EPT/PCI/SSE2
NVIDIA N10M-GE1/PCI/SSE2
+NVIDIA N10M-GE1/PCI/SSE2
+NVIDIA N10P-GE1/PCI/SSE2
NVIDIA N10P-GE1/PCI/SSE2
NVIDIA N10P-GV2/PCI/SSE2
+NVIDIA N10P-GV2/PCI/SSE2
+NVIDIA N11M-GE1/PCI/SSE2
NVIDIA N11M-GE1/PCI/SSE2
NVIDIA N11M-GE2/PCI/SSE2
+NVIDIA N11M-GE2/PCI/SSE2
NVIDIA N12E-GS-A1/PCI/SSE2
+NVIDIA N12P-GVR-B-A1/PCI/SSE2
+NVIDIA N13M-GE1-B-A1/PCI/SSE2
+NVIDIA N13P-GL-A1/PCI/SSE2
+NVIDIA NB9M-GE/PCI/SSE2
NVIDIA NB9M-GE/PCI/SSE2
NVIDIA NB9M-GE1/PCI/SSE2
+NVIDIA NB9M-GE1/PCI/SSE2
+NVIDIA NB9M-GS/PCI/SSE2
NVIDIA NB9M-GS/PCI/SSE2
NVIDIA NB9M-NS/PCI/SSE2
+NVIDIA NB9M-NS/PCI/SSE2
+NVIDIA NB9P-GE1/PCI/SSE2
NVIDIA NB9P-GE1/PCI/SSE2
NVIDIA NB9P-GS/PCI/SSE2
NVIDIA NV17/AGP/3DNOW!
NVIDIA NV17/AGP/SSE2
+NVIDIA NV17/AGP/SSE2
NVIDIA NV34
NVIDIA NV35
NVIDIA NV36/AGP/SSE/3DNOW!
NVIDIA NV36/AGP/SSE2
NVIDIA NV41/PCI/SSE2
NVIDIA NV43
+NVIDIA NV43/PCI/SSE2
NVIDIA NV44
+NVIDIA NV44/AGP/SSE2
+NVIDIA NVIDIA GeForce 210 OpenGL Engine
NVIDIA NVIDIA GeForce 210 OpenGL Engine
NVIDIA NVIDIA GeForce 320M OpenGL Engine
+NVIDIA NVIDIA GeForce 320M OpenGL Engine
+NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine
NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine
NVIDIA NVIDIA GeForce 7600 GT OpenGL Engine
NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine
NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine
NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9400 OpenGL Engine
NVIDIA NVIDIA GeForce 9400 OpenGL Engine
NVIDIA NVIDIA GeForce 9400M OpenGL Engine
+NVIDIA NVIDIA GeForce 9400M OpenGL Engine
NVIDIA NVIDIA GeForce 9500 GT OpenGL Engine
NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine
NVIDIA NVIDIA GeForce GT 120 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 120 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 130 OpenGL Engine
NVIDIA NVIDIA GeForce GT 130 OpenGL Engine
NVIDIA NVIDIA GeForce GT 220 OpenGL Engine
NVIDIA NVIDIA GeForce GT 230M OpenGL Engine
NVIDIA NVIDIA GeForce GT 240M OpenGL Engine
NVIDIA NVIDIA GeForce GT 330M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 330M OpenGL Engine
NVIDIA NVIDIA GeForce GT 420M OpenGL Engine
NVIDIA NVIDIA GeForce GT 425M OpenGL Engine
NVIDIA NVIDIA GeForce GT 430 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 430 OpenGL Engine
NVIDIA NVIDIA GeForce GT 440 OpenGL Engine
NVIDIA NVIDIA GeForce GT 540M OpenGL Engine
NVIDIA NVIDIA GeForce GTS 240 OpenGL Engine
NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine
NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine
NVIDIA NVIDIA GeForce GTX 285 OpenGL Engine
NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine
NVIDIA NVIDIA GeForce GTX 460M OpenGL Engine
NVIDIA NVIDIA GeForce GTX 465 OpenGL Engine
NVIDIA NVIDIA GeForce GTX 470 OpenGL Engine
NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release GF108 ES OpenGL Engine
NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release MCP7A-J-DC OpenGL Engine
NVIDIA NVIDIA GeForce4 OpenGL Engine
NVIDIA NVIDIA NV34MAP OpenGL Engine
NVIDIA NVIDIA Quadro 4000 OpenGL Engine
+NVIDIA NVIDIA Quadro 4000 OpenGL Engine
NVIDIA NVIDIA Quadro FX 4800 OpenGL Engine
NVIDIA NVS 2100M/PCI/SSE2
+NVIDIA NVS 2100M/PCI/SSE2
+NVIDIA NVS 300/PCI/SSE2
NVIDIA NVS 300/PCI/SSE2
NVIDIA NVS 3100M/PCI/SSE2
+NVIDIA NVS 3100M/PCI/SSE2
NVIDIA NVS 4100/PCI/SSE2/3DNOW!
NVIDIA NVS 4200M/PCI/SSE2
+NVIDIA NVS 4200M/PCI/SSE2
+NVIDIA NVS 5100M/PCI/SSE2
NVIDIA NVS 5100M/PCI/SSE2
NVIDIA PCI
+NVIDIA Quadro 1000M/PCI/SSE2
+NVIDIA Quadro 2000/PCI/SSE2
NVIDIA Quadro 2000/PCI/SSE2
+NVIDIA Quadro 2000M/PCI/SSE2
+NVIDIA Quadro 3000M/PCI/SSE2
NVIDIA Quadro 4000
NVIDIA Quadro 4000 OpenGL Engine
NVIDIA Quadro 4000/PCI/SSE2
+NVIDIA Quadro 4000/PCI/SSE2
+NVIDIA Quadro 4000M/PCI/SSE2
+NVIDIA Quadro 5000/PCI/SSE2
NVIDIA Quadro 5000/PCI/SSE2
NVIDIA Quadro 5000M/PCI/SSE2
NVIDIA Quadro 600
NVIDIA Quadro 600/PCI/SSE2
+NVIDIA Quadro 600/PCI/SSE2
NVIDIA Quadro 600/PCI/SSE2/3DNOW!
NVIDIA Quadro 6000
NVIDIA Quadro 6000/PCI/SSE2
@@ -1391,16 +2097,22 @@ NVIDIA Quadro DCC
NVIDIA Quadro FX
NVIDIA Quadro FX 1100/AGP/SSE2
NVIDIA Quadro FX 1400/PCI/SSE2
+NVIDIA Quadro FX 1400/PCI/SSE2
NVIDIA Quadro FX 1500
+NVIDIA Quadro FX 1500/PCI/SSE2
NVIDIA Quadro FX 1500M/PCI/SSE2
NVIDIA Quadro FX 1600M/PCI/SSE2
+NVIDIA Quadro FX 1600M/PCI/SSE2
NVIDIA Quadro FX 1700
NVIDIA Quadro FX 1700M/PCI/SSE2
NVIDIA Quadro FX 1800
NVIDIA Quadro FX 1800/PCI/SSE2
NVIDIA Quadro FX 1800M/PCI/SSE2
NVIDIA Quadro FX 2500M/PCI/SSE2
+NVIDIA Quadro FX 2500M/PCI/SSE2
NVIDIA Quadro FX 2700M/PCI/SSE2
+NVIDIA Quadro FX 2700M/PCI/SSE2
+NVIDIA Quadro FX 2800M/PCI/SSE2
NVIDIA Quadro FX 2800M/PCI/SSE2
NVIDIA Quadro FX 3400
NVIDIA Quadro FX 3450
@@ -1412,75 +2124,125 @@ NVIDIA Quadro FX 370
NVIDIA Quadro FX 370/PCI/SSE2
NVIDIA Quadro FX 3700
NVIDIA Quadro FX 3700M/PCI/SSE2
+NVIDIA Quadro FX 3700M/PCI/SSE2
NVIDIA Quadro FX 370M/PCI/SSE2
NVIDIA Quadro FX 3800
NVIDIA Quadro FX 3800M/PCI/SSE2
+NVIDIA Quadro FX 3800M/PCI/SSE2
NVIDIA Quadro FX 4500
NVIDIA Quadro FX 4600
NVIDIA Quadro FX 4800
NVIDIA Quadro FX 4800/PCI/SSE2
+NVIDIA Quadro FX 540/PCI/SSE2/3DNOW!
NVIDIA Quadro FX 560
+NVIDIA Quadro FX 560/PCI/SSE2
NVIDIA Quadro FX 5600
NVIDIA Quadro FX 570
NVIDIA Quadro FX 570/PCI/SSE2
NVIDIA Quadro FX 570M/PCI/SSE2
NVIDIA Quadro FX 580/PCI/SSE2
+NVIDIA Quadro FX 580/PCI/SSE2
+NVIDIA Quadro FX 770M/PCI/SSE2
NVIDIA Quadro FX 770M/PCI/SSE2
NVIDIA Quadro FX 880M
NVIDIA Quadro FX 880M/PCI/SSE2
+NVIDIA Quadro FX 880M/PCI/SSE2
NVIDIA Quadro FX Go700/AGP/SSE2
NVIDIA Quadro NVS
NVIDIA Quadro NVS 110M/PCI/SSE2
+NVIDIA Quadro NVS 110M/PCI/SSE2
NVIDIA Quadro NVS 130M/PCI/SSE2
NVIDIA Quadro NVS 135M/PCI/SSE2
+NVIDIA Quadro NVS 135M/PCI/SSE2
+NVIDIA Quadro NVS 140M/PCI/SSE2
NVIDIA Quadro NVS 140M/PCI/SSE2
NVIDIA Quadro NVS 150M/PCI/SSE2
+NVIDIA Quadro NVS 150M/PCI/SSE2
+NVIDIA Quadro NVS 160M/PCI/SSE2
NVIDIA Quadro NVS 160M/PCI/SSE2
NVIDIA Quadro NVS 210S/PCI/SSE2/3DNOW!
NVIDIA Quadro NVS 285/PCI/SSE2
+NVIDIA Quadro NVS 285/PCI/SSE2
+NVIDIA Quadro NVS 290/PCI/SSE2
NVIDIA Quadro NVS 290/PCI/SSE2
NVIDIA Quadro NVS 295/PCI/SSE2
NVIDIA Quadro NVS 320M/PCI/SSE2
+NVIDIA Quadro NVS 320M/PCI/SSE2
NVIDIA Quadro NVS 55/280 PCI/PCI/SSE2
NVIDIA Quadro NVS/PCI/SSE2
NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW!
NVIDIA Quadro VX 200/PCI/SSE2
+NVIDIA Quadro VX 200/PCI/SSE2
+NVIDIA Quadro/AGP/SSE2
NVIDIA Quadro/AGP/SSE2
NVIDIA Quadro2
NVIDIA Quadro4
+NVIDIA Quadro4 750 XGL/AGP/SSE2
NVIDIA RIVA TNT
NVIDIA RIVA TNT2/AGP/SSE2
NVIDIA RIVA TNT2/PCI/3DNOW!
+NVIDIA Tesla C2050/PCI/SSE2
NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2
+NVIDIA nForce 730a/PCI/SSE2/3DNOW!
+NVIDIA nForce 750a SLI/PCI/SSE2
+NVIDIA nForce 750a SLI/PCI/SSE2/3DNOW!
+NVIDIA nForce 760i SLI/PCI/SSE2
+NVIDIA nForce 780a SLI/PCI/SSE2/3DNOW!
+NVIDIA nForce 980a/780a SLI/PCI/SSE2
+NVIDIA nForce 980a/780a SLI/PCI/SSE2/3DNOW!
NVIDIA unknown board/AGP/SSE2
NVIDIA unknown board/PCI/SSE2
NVIDIA unknown board/PCI/SSE2/3DNOW!
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine
Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine
Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com
Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
+Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine
Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine
Parallels and NVIDIA Parallels using NVIDIA GeForce 9400 OpenGL Engine
Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine
Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine
Radeon RV350 on Gallium
S3
+S3 Fire GL2
S3 Graphics VIA/S3G UniChrome IGP/MMX/K3D
+S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE
+S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE
S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE
S3 Graphics, Incorporated ProSavage/Twister
S3 Graphics, Incorporated S3 Graphics Chrome9 HC
+S3 Graphics, Incorporated S3 Graphics Chrome9 HC
S3 Graphics, Incorporated S3 Graphics DeltaChrome
+S3 Graphics, Incorporated S3 Graphics DeltaChrome
+S3 Graphics, Incorporated VIA Chrome9 HC IGP
S3 Graphics, Incorporated VIA Chrome9 HC IGP
SiS
+SiS 650/M650 VGA
+SiS 661 VGA
SiS 661 VGA
SiS 662 VGA
SiS 741 VGA
SiS 760 VGA
+SiS 760 VGA
SiS 761GX VGA
+SiS 761GX VGA
+SiS Mirage Graphics3
SiS Mirage Graphics3
+SiS Xabre VGA
Trident
Tungsten Graphics
Tungsten Graphics, Inc Mesa DRI 865G GEM 20091221 2009Q4 x86/MMX/SSE2
@@ -1490,6 +2252,7 @@ Tungsten Graphics, Inc Mesa DRI 915G GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 915GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 915GM GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945G
Tungsten Graphics, Inc Mesa DRI 945G GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945G GEM 20100330 DEVELOPMENT
@@ -1498,18 +2261,23 @@ Tungsten Graphics, Inc Mesa DRI 945GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GM GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100328 2010Q1 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GME x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GME 20061017
Tungsten Graphics, Inc Mesa DRI 945GME GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GME GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI G33 20061017 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI G33 GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI G41 GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI G41 GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI GMA500 20081116 - 5.0.1.0046 x86/MMX/SSE2
@@ -1519,44 +2287,83 @@ Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI IGDNG_D GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI Ironlake Desktop GEM 20100330 DEVELOPMENT x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset 20080716 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100328 2010Q1
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT
Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) 20090101 x86/MMX/SSE2 TCL DRI2
Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5964) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
VIA
VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.4 on SVGA3D; build: DEBUG; mutex: MSVC Intrinsics
+VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)
VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)
VMware, Inc. Gallium 0.4 on llvmpipe
+VMware, Inc. Gallium 0.4 on llvmpipe
+VMware, Inc. Gallium 0.4 on softpipe
VMware, Inc. Gallium 0.4 on softpipe
X.Org Gallium 0.4 on AMD BARTS
+X.Org Gallium 0.4 on AMD BARTS
+X.Org Gallium 0.4 on AMD CEDAR
X.Org Gallium 0.4 on AMD CEDAR
X.Org Gallium 0.4 on AMD HEMLOCK
X.Org Gallium 0.4 on AMD JUNIPER
+X.Org Gallium 0.4 on AMD JUNIPER
+X.Org Gallium 0.4 on AMD PALM
+X.Org Gallium 0.4 on AMD REDWOOD
X.Org Gallium 0.4 on AMD REDWOOD
X.Org Gallium 0.4 on AMD RS780
+X.Org Gallium 0.4 on AMD RS780
+X.Org Gallium 0.4 on AMD RS880
X.Org Gallium 0.4 on AMD RS880
X.Org Gallium 0.4 on AMD RV610
+X.Org Gallium 0.4 on AMD RV610
+X.Org Gallium 0.4 on AMD RV620
X.Org Gallium 0.4 on AMD RV620
X.Org Gallium 0.4 on AMD RV630
+X.Org Gallium 0.4 on AMD RV630
+X.Org Gallium 0.4 on AMD RV635
X.Org Gallium 0.4 on AMD RV635
X.Org Gallium 0.4 on AMD RV710
+X.Org Gallium 0.4 on AMD RV710
+X.Org Gallium 0.4 on AMD RV730
X.Org Gallium 0.4 on AMD RV730
X.Org Gallium 0.4 on AMD RV740
+X.Org Gallium 0.4 on AMD RV740
X.Org Gallium 0.4 on AMD RV770
X.Org R300 Project Gallium 0.4 on ATI R300
+X.Org R300 Project Gallium 0.4 on ATI R350
+X.Org R300 Project Gallium 0.4 on ATI R420
+X.Org R300 Project Gallium 0.4 on ATI R580
X.Org R300 Project Gallium 0.4 on ATI R580
X.Org R300 Project Gallium 0.4 on ATI RC410
+X.Org R300 Project Gallium 0.4 on ATI RC410
+X.Org R300 Project Gallium 0.4 on ATI RS480
+X.Org R300 Project Gallium 0.4 on ATI RS482
X.Org R300 Project Gallium 0.4 on ATI RS482
X.Org R300 Project Gallium 0.4 on ATI RS600
X.Org R300 Project Gallium 0.4 on ATI RS690
+X.Org R300 Project Gallium 0.4 on ATI RS690
+X.Org R300 Project Gallium 0.4 on ATI RS740
+X.Org R300 Project Gallium 0.4 on ATI RV350
X.Org R300 Project Gallium 0.4 on ATI RV350
X.Org R300 Project Gallium 0.4 on ATI RV370
+X.Org R300 Project Gallium 0.4 on ATI RV370
+X.Org R300 Project Gallium 0.4 on ATI RV410
X.Org R300 Project Gallium 0.4 on ATI RV410
X.Org R300 Project Gallium 0.4 on ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV530
X.Org R300 Project Gallium 0.4 on ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV560
+X.Org R300 Project Gallium 0.4 on ATI RV570
X.Org R300 Project Gallium 0.4 on ATI RV570
X.Org R300 Project Gallium 0.4 on R420
X.Org R300 Project Gallium 0.4 on R580
@@ -1572,23 +2379,44 @@ X.Org R300 Project Gallium 0.4 on RV410
X.Org R300 Project Gallium 0.4 on RV515
X.Org R300 Project Gallium 0.4 on RV530
XGI
+nouveau Gallium 0.4 on NV31
+nouveau Gallium 0.4 on NV34
nouveau Gallium 0.4 on NV34
nouveau Gallium 0.4 on NV36
+nouveau Gallium 0.4 on NV43
+nouveau Gallium 0.4 on NV44
+nouveau Gallium 0.4 on NV46
nouveau Gallium 0.4 on NV46
nouveau Gallium 0.4 on NV49
nouveau Gallium 0.4 on NV4A
+nouveau Gallium 0.4 on NV4A
nouveau Gallium 0.4 on NV4B
+nouveau Gallium 0.4 on NV4B
+nouveau Gallium 0.4 on NV4C
nouveau Gallium 0.4 on NV4E
nouveau Gallium 0.4 on NV50
+nouveau Gallium 0.4 on NV63
+nouveau Gallium 0.4 on NV67
+nouveau Gallium 0.4 on NV84
nouveau Gallium 0.4 on NV84
nouveau Gallium 0.4 on NV86
+nouveau Gallium 0.4 on NV86
+nouveau Gallium 0.4 on NV92
nouveau Gallium 0.4 on NV92
nouveau Gallium 0.4 on NV94
+nouveau Gallium 0.4 on NV94
+nouveau Gallium 0.4 on NV96
nouveau Gallium 0.4 on NV96
nouveau Gallium 0.4 on NV98
+nouveau Gallium 0.4 on NV98
+nouveau Gallium 0.4 on NVA0
nouveau Gallium 0.4 on NVA0
nouveau Gallium 0.4 on NVA3
nouveau Gallium 0.4 on NVA5
+nouveau Gallium 0.4 on NVA5
+nouveau Gallium 0.4 on NVA8
nouveau Gallium 0.4 on NVA8
nouveau Gallium 0.4 on NVAA
+nouveau Gallium 0.4 on NVAA
+nouveau Gallium 0.4 on NVAC
nouveau Gallium 0.4 on NVAC
--
cgit v1.3
From 53a8e1299305a4acad83f52401679c86485fcf51 Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Fri, 23 Sep 2011 09:45:28 -0700
Subject: EXP-1205 PROGRESS -- As a User, I want a toybox which will contain
all buttons that I can d&d into the toolbars EXP-1233 PROGRESS -- Populate
the toybox floater window with all FUI toolbar buttons
* Added all documented FUI commands from the wiki, 20 in all, with text,
tooltips and placeholder icons.
* Note current toolbar checked in toolbar code does not lay these commands out
properly.
---
indra/newview/app_settings/commands.xml | 126 ++++++++++++++++++++++
indra/newview/skins/default/textures/textures.xml | 22 +++-
indra/newview/skins/default/xui/en/strings.xml | 38 ++++++-
3 files changed, 183 insertions(+), 3 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 8e45e866ca..5cb8ddffcd 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -7,6 +7,83 @@
function="Floater.ToolbarToggle"
param="avatar"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 598e39730c..d68594097c 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -125,8 +125,26 @@ with the same filename but different name
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 3b986664db..d4c2bc50ca 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3653,8 +3653,44 @@ Try enclosing path to the editor with double quotes.
Avatar
- Customize your avatar
+ Change the appearance of your avatar
+ Build
+ Building, reshaping terrain
+ Chat
+ Chat with people nearby
+ Compass
+
+ Gestures
+
+ How To
+
+ Landmarks
+
+ Map
+
+ Move
+
+ My Land
+ Information about the land you're visiting
+ My Stuff
+ View and use your belongings
+ People
+
Places
Destination guide
+ Search
+ Find...
+ Settings
+ Preferences
+ Shop
+
+ Snapshot
+ Take a picture
+ Speak
+ Speak with people nearby using your microphone
+ Upload
+
+ View
+ Changing your view of the world
--
cgit v1.3
From ddc74472e9273075e3b2b2f13e7f32ed50771933 Mon Sep 17 00:00:00 2001
From: Oz Linden
Date: Fri, 23 Sep 2011 13:03:11 -0400
Subject: improve recognition of some more ATI Radeon cards, allow class zero
use for Humper virtual machines
---
doc/contributions.txt | 1 +
indra/newview/gpu_table.txt | 7 +++++--
2 files changed, 6 insertions(+), 2 deletions(-)
(limited to 'indra/newview')
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 94f8110aed..54392cf724 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1029,6 +1029,7 @@ Synystyr Texan
Takeda Terrawyng
TankMaster Finesmith
STORM-1100
+ STORM-1602
VWR-26622
Talamasca
Tali Rosca
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 21cb988819..e95d4d9401 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -94,6 +94,9 @@ ATI M56 .*ATI.*M56.* 1 1
ATI M71 .*ATI.*M71.* 1 1
ATI M72 .*ATI.*M72.* 1 1
ATI M76 .*ATI.*M76.* 3 1
+ATI Radeon HD 64xx .*ATI.*AMD Radeon.* HD [67]4..[MG] 3 1
+ATI Radeon HD 65xx .*ATI.*AMD Radeon.* HD [67]5..[MG] 3 1
+ATI Radeon HD 66xx .*ATI.*AMD Radeon.* HD [67]6..[MG] 3 1
ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.* 1 1
ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1
ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1
@@ -106,7 +109,6 @@ ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD *545v.* 2 1
ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD *550v.* 2 1
ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD *560v.* 2 1
ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD *565v.* 2 1
-ATI Radeon HD 64xxM .*ATI.*AMD Radeon.* HD [67]4..M 3 1
ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 1 1
ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 1 1
ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD *26.* 3 1
@@ -166,7 +168,7 @@ ATI Radeon HD 6200 .*ATI.*Radeon HD *62.. 3 1
ATI Radeon HD 6300 .*ATI.*Radeon HD *63.. 3 1
ATI Radeon HD 6400 .*ATI.*Radeon HD *64.. 3 1
ATI Radeon HD 6500 .*ATI.*Radeon HD *65.. 3 1
-ATI Radeon HD 66xx .*ATI.*Radeon HD *66.. 3 1
+ATI Radeon HD 6600 .*ATI.*Radeon HD *66.. 3 1
ATI Radeon HD 6700 .*ATI.*Radeon HD *67.. 3 1
ATI Radeon HD 6800 .*ATI.*Radeon HD *68.. 3 1
ATI Radeon HD 6900 .*ATI.*Radeon HD *69.. 3 1
@@ -512,3 +514,4 @@ XGI XGI.* 0 0
VIA VIA.* 0 0
Apple Generic Apple.*Generic.* 0 0
Apple Software Renderer Apple.*Software Renderer.* 0 0
+Humper Humper.* 0 1
--
cgit v1.3
From bcdd0b52dd3f0b2e0f5d7310526dca79aea7b146 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Fri, 23 Sep 2011 21:46:55 +0300
Subject: STORM-1612 FOLLOWUP Trivial Windows compilation fix.
---
indra/newview/lltoolpie.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index e614fe23d0..a05fc9536e 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -96,7 +96,7 @@ private:
};
LLClickToTeleportTimer::LLClickToTeleportTimer(const LLVector3d& pos)
-: LLEventTimer(0.33) // should be greater than double click interval
+: LLEventTimer(0.33f) // should be greater than double click interval
, mTeleportPos(pos)
{
};
--
cgit v1.3
From 1bcf6882c5faa94385f045e1c591da96408bb032 Mon Sep 17 00:00:00 2001
From: Merov Linden
Date: Fri, 23 Sep 2011 15:09:37 -0700
Subject: EXP-1207 : More on lltoolbarview. Still not rendering
---
indra/llui/lltoolbar.cpp | 9 +++---
indra/llui/lltoolbarview.cpp | 36 ++++++++++++++--------
indra/llui/lltoolbarview.h | 8 +++--
indra/llui/llui.cpp | 1 -
indra/llui/lluictrlfactory.h | 4 +--
indra/newview/llviewerwindow.cpp | 7 ++---
indra/newview/skins/default/xui/en/main_view.xml | 3 +-
.../skins/default/xui/en/panel_toolbar_view.xml | 28 ++++++++---------
8 files changed, 55 insertions(+), 41 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 1e8be93f17..167dbfcc47 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -30,9 +30,7 @@
#include "boost/foreach.hpp"
#include "lltoolbar.h"
-// uncomment this and remove the one in llui.cpp when there is an external reference to this translation unit
-// thanks, MSVC!
-//static LLDefaultChildRegistry::Register r1("toolbar");
+static LLDefaultChildRegistry::Register r1("toolbar");
namespace LLToolBarEnums
{
@@ -62,7 +60,7 @@ LLToolBar::Params::Params()
background_image("background_image")
{}
-LLToolBar::LLToolBar(const Params& p)
+LLToolBar::LLToolBar(const LLToolBar::Params& p)
: LLUICtrl(p),
mButtonType(p.button_display_mode),
mSideType(p.side),
@@ -78,6 +76,9 @@ LLToolBar::LLToolBar(const Params& p)
void LLToolBar::initFromParams(const LLToolBar::Params& p)
{
+ // Initialize the base object
+ LLUICtrl::initFromParams(p);
+
LLLayoutStack::ELayoutOrientation orientation = getOrientation(p.side);
LLLayoutStack::Params centering_stack_p;
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 0e54c91cea..590cd4ffca 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -28,6 +28,7 @@
#include "linden_common.h"
#include "lltoolbarview.h"
+
#include "lltoolbar.h"
#include "llbutton.h"
@@ -35,33 +36,39 @@ LLToolBarView* gToolBarView = NULL;
static LLDefaultChildRegistry::Register r("toolbar_view");
-LLToolBarView::LLToolBarView(const Params& p)
+LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
: LLUICtrl(p)
{
}
-BOOL LLToolBarView::postBuild()
+void LLToolBarView::initFromParams(const LLToolBarView::Params& p)
+{
+ // Initialize the base object
+ LLUICtrl::initFromParams(p);
+}
+
+LLToolBarView::~LLToolBarView()
{
- LLRect ctrl_rect = getRect();
- LLButton* btn = getChild("test");
- LLRect btn_rect = btn->getRect();
- llinfos << "Merov debug : control rect = " << ctrl_rect.mLeft << ", " << ctrl_rect.mTop << ", " << ctrl_rect.mRight << ", " << ctrl_rect.mBottom << llendl;
- llinfos << "Merov debug : test rect = " << btn_rect.mLeft << ", " << btn_rect.mTop << ", " << btn_rect.mRight << ", " << btn_rect.mBottom << llendl;
- return TRUE;
}
void LLToolBarView::draw()
{
static bool debug_print = true;
+ static S32 old_width = 0;
+ static S32 old_height = 0;
LLToolBar* toolbar_bottom = getChild("toolbar_bottom");
LLToolBar* toolbar_left = getChild("toolbar_left");
LLToolBar* toolbar_right = getChild("toolbar_right");
+ LLPanel* sizer_left = getChild("sizer_left");
LLRect bottom_rect = toolbar_bottom->getRect();
LLRect left_rect = toolbar_left->getRect();
LLRect right_rect = toolbar_right->getRect();
+ LLRect sizer_left_rect = sizer_left->getRect();
+ if ((old_width != getRect().getWidth()) || (old_height != getRect().getHeight()))
+ debug_print = true;
if (debug_print)
{
LLRect ctrl_rect = getRect();
@@ -69,13 +76,18 @@ void LLToolBarView::draw()
llinfos << "Merov debug : draw bottom rect = " << bottom_rect.mLeft << ", " << bottom_rect.mTop << ", " << bottom_rect.mRight << ", " << bottom_rect.mBottom << llendl;
llinfos << "Merov debug : draw left rect = " << left_rect.mLeft << ", " << left_rect.mTop << ", " << left_rect.mRight << ", " << left_rect.mBottom << llendl;
llinfos << "Merov debug : draw right rect = " << right_rect.mLeft << ", " << right_rect.mTop << ", " << right_rect.mRight << ", " << right_rect.mBottom << llendl;
+ llinfos << "Merov debug : draw s left rect = " << sizer_left_rect.mLeft << ", " << sizer_left_rect.mTop << ", " << sizer_left_rect.mRight << ", " << sizer_left_rect.mBottom << llendl;
+ old_width = ctrl_rect.getWidth();
+ old_height = ctrl_rect.getHeight();
debug_print = false;
}
// Debug draw
- gl_rect_2d(getLocalRect(), LLColor4::blue, TRUE);
- gl_rect_2d(bottom_rect, LLColor4::red, TRUE);
- gl_rect_2d(left_rect, LLColor4::green, TRUE);
- gl_rect_2d(right_rect, LLColor4::yellow, TRUE);
+ LLColor4 back_color = LLColor4::blue;
+ back_color[VALPHA] = 0.5f;
+// gl_rect_2d(getLocalRect(), back_color, TRUE);
+// gl_rect_2d(bottom_rect, LLColor4::red, TRUE);
+// gl_rect_2d(left_rect, LLColor4::green, TRUE);
+// gl_rect_2d(right_rect, LLColor4::yellow, TRUE);
LLUICtrl::draw();
}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index 0bd0070ab7..73278e226b 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -30,19 +30,23 @@
#include "lluictrl.h"
+class LLUICtrlFactory;
+
// Parent of all LLToolBar
class LLToolBarView : public LLUICtrl
{
public:
struct Params : public LLInitParam::Block {};
- void draw();
- /*virtual*/ BOOL postBuild();
+ virtual ~LLToolBarView();
+ virtual void draw();
protected:
friend class LLUICtrlFactory;
LLToolBarView(const Params&);
+ void initFromParams(const Params&);
+
private:
LLHandle mSnapView;
};
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 1bc575438c..a4303780fd 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -93,7 +93,6 @@ std::list gUntranslated;
static LLDefaultChildRegistry::Register register_filter_editor("filter_editor");
static LLDefaultChildRegistry::Register register_flyout_button("flyout_button");
static LLDefaultChildRegistry::Register register_search_editor("search_editor");
-static LLDefaultChildRegistry::Register r1("toolbar");
// register other widgets which otherwise may not be linked in
static LLDefaultChildRegistry::Register register_loading_indicator("loading_indicator");
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index d345ad4cd0..71c38237c1 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -172,7 +172,7 @@ public:
static T* createFromFile(const std::string &filename, LLView *parent, const widget_registry_t& registry, LLXMLNodePtr output_node = NULL)
{
T* widget = NULL;
-
+
std::string skinned_filename = findSkinnedFilename(filename);
instance().pushFileName(filename);
{
@@ -201,10 +201,10 @@ public:
// not of right type, so delete it
if (!widget)
{
+ llwarns << "Widget in " << filename << " was of type " << typeid(view).name() << " instead of expected type " << typeid(T).name() << llendl;
delete view;
view = NULL;
}
-
}
}
fail:
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index d197782eed..e851398bf5 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1783,15 +1783,12 @@ void LLViewerWindow::initBase()
// *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
if (gSavedSettings.getBOOL("DebugToolbarFUI"))
{
- llinfos << "Merov debug : Creating the toolbar view" << llendl;
// Get a pointer to the toolbar view holder
LLPanel* panel_holder = main_view->getChild("toolbar_view_holder");
- llinfos << "Merov debug : panel_holder = " << panel_holder << llendl;
// Load the toolbar view from file
- gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", NULL, LLPanel::child_registry_t::instance());
- llinfos << "Merov debug : gToolBarView = " << gToolBarView << llendl;
+ gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", panel_holder, LLPanel::child_registry_t::instance());
// Attach it to the toolbar view holder
- panel_holder->addChild(gToolBarView);
+ //panel_holder->addChild(gToolBarView);
}
// Constrain floaters to inside the menu and status bar regions.
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a21c988bb8..448f10a93c 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -170,7 +170,8 @@
top="0"
left="0"
mouse_opaque="false"
- tab_stop="false"/>
+ tab_stop="false">
+
-
-
-
+
--
cgit v1.3
From 57620a9da903f3c6fe482627d18c44b6411e6910 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Fri, 23 Sep 2011 17:59:05 -0500
Subject: SH-2244 Vertex buffer cleanup, fix for bad vertices in rigged
attachments, added "RenderUseVAO" debug setting to control whether or not to
use VAO's in non-core GL profiles.
---
indra/llrender/llgl.cpp | 1 +
indra/llrender/llimagegl.cpp | 5 +-
indra/llrender/llvertexbuffer.cpp | 276 +++++++++++++-------------------
indra/llrender/llvertexbuffer.h | 13 +-
indra/newview/app_settings/settings.xml | 11 ++
indra/newview/lldrawpoolavatar.cpp | 73 +++++++--
indra/newview/lldrawpoolavatar.h | 1 +
indra/newview/llviewercontrol.cpp | 1 +
indra/newview/pipeline.cpp | 2 +
9 files changed, 201 insertions(+), 182 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 6875674e79..f546e07320 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -656,6 +656,7 @@ bool LLGLManager::initGL()
if (mHasDebugOutput && gDebugGL)
{ //setup debug output callback
+ glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_LOW_ARB, 0, NULL, GL_TRUE);
glDebugMessageCallbackARB((GLDEBUGPROCARB) gl_debug_callback, NULL);
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
}
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 4da796dd1e..12089e5ad3 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1153,9 +1153,8 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
U32 pixel_count = (U32) (width*height);
for (U32 i = 0; i < pixel_count; i++)
{
- U8 lum = ((U8*) pixels)[i*2+0];
- U8 alpha = ((U8*) pixels)[i*2+1];
-
+ U8 lum = ((U8*) pixels)[i];
+
U8* pix = (U8*) &scratch[i];
pix[0] = pix[1] = pix[2] = lum;
pix[3] = 255;
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index a48669a300..b2a0f6822d 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -63,6 +63,7 @@ BOOL LLVertexBuffer::sIBOActive = FALSE;
U32 LLVertexBuffer::sAllocatedBytes = 0;
BOOL LLVertexBuffer::sMapped = FALSE;
BOOL LLVertexBuffer::sUseStreamDraw = TRUE;
+BOOL LLVertexBuffer::sUseVAO = FALSE;
BOOL LLVertexBuffer::sPreferStreamDraw = FALSE;
std::vector LLVertexBuffer::sDeleteList;
@@ -134,6 +135,7 @@ S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
sizeof(F32), // TYPE_WEIGHT,
sizeof(LLVector4), // TYPE_WEIGHT4,
sizeof(LLVector4), // TYPE_CLOTHWEIGHT,
+ sizeof(LLVector4), // TYPE_TEXTURE_INDEX (actually exists as position.w), no extra data, but stride is 16 bytes
};
U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] =
@@ -150,188 +152,135 @@ U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] =
//static
-void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& sLastMask)
+void LLVertexBuffer::setupClientArrays(U32 data_mask)
{
- /*if (LLGLImmediate::sStarted)
- {
- llerrs << "Cannot use LLGLImmediate and LLVertexBuffer simultaneously!" << llendl;
- }*/
-
if (sLastMask != data_mask)
{
-
- LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
-
- U32 mask[] =
- {
- MAP_VERTEX,
- MAP_NORMAL,
- MAP_TEXCOORD0,
- MAP_COLOR,
- MAP_EMISSIVE,
- MAP_WEIGHT,
- MAP_WEIGHT4,
- MAP_BINORMAL,
- MAP_CLOTHWEIGHT,
- MAP_TEXTURE_INDEX,
- };
-
- U32 type[] =
- {
- TYPE_VERTEX,
- TYPE_NORMAL,
- TYPE_TEXCOORD0,
- TYPE_COLOR,
- TYPE_EMISSIVE,
- TYPE_WEIGHT,
- TYPE_WEIGHT4,
- TYPE_BINORMAL,
- TYPE_CLOTHWEIGHT,
- TYPE_TEXTURE_INDEX-1,
- };
-
- GLenum array[] =
- {
- GL_VERTEX_ARRAY,
- GL_NORMAL_ARRAY,
- GL_TEXTURE_COORD_ARRAY,
- GL_COLOR_ARRAY,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- };
-
BOOL error = FALSE;
- for (U32 i = 0; i < 10; ++i)
- {
- S32 loc = -1;
- if (LLGLSLShader::sNoFixedFunction)
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ for (U32 i = 0; i < TYPE_MAX; ++i)
{
- loc = type[i];
- }
-
- if (sLastMask & mask[i])
- { //was enabled
- if (!(data_mask & mask[i]))
- { //needs to be disabled
- if (loc >= 0)
- {
+ S32 loc = i;
+
+ U32 mask = 1 << i;
+
+ if (sLastMask & (1 << i))
+ { //was enabled
+ if (!(data_mask & mask))
+ { //needs to be disabled
glDisableVertexAttribArrayARB(loc);
}
- else
- {
+ }
+ else
+ { //was disabled
+ if (data_mask & mask)
+ { //needs to be enabled
+ glEnableVertexAttribArrayARB(loc);
+ }
+ }
+ }
+ }
+ else
+ {
+
+ GLenum array[] =
+ {
+ GL_VERTEX_ARRAY,
+ GL_NORMAL_ARRAY,
+ GL_TEXTURE_COORD_ARRAY,
+ GL_COLOR_ARRAY,
+ };
+
+ GLenum mask[] =
+ {
+ MAP_VERTEX,
+ MAP_NORMAL,
+ MAP_TEXCOORD0,
+ MAP_COLOR
+ };
+
+
+
+ for (U32 i = 0; i < 4; ++i)
+ {
+ if (sLastMask & mask[i])
+ { //was enabled
+ if (!(data_mask & mask[i]))
+ { //needs to be disabled
glDisableClientState(array[i]);
}
+ else if (gDebugGL)
+ { //needs to be enabled, make sure it was (DEBUG)
+ if (!glIsEnabled(array[i]))
+ {
+ if (gDebugSession)
+ {
+ error = TRUE;
+ gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl;
+ }
+ else
+ {
+ llerrs << "Bad client state! " << array[i] << " disabled." << llendl;
+ }
+ }
+ }
}
- else if (gDebugGL && !LLGLSLShader::sNoFixedFunction && array[i])
- { //needs to be enabled, make sure it was (DEBUG)
- if (loc < 0 && !glIsEnabled(array[i]))
- {
+ else
+ { //was disabled
+ if (data_mask & mask[i])
+ { //needs to be enabled
+ glEnableClientState(array[i]);
+ }
+ else if (gDebugGL && glIsEnabled(array[i]))
+ { //needs to be disabled, make sure it was (DEBUG TEMPORARY)
if (gDebugSession)
{
error = TRUE;
- gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl;
+ gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl;
}
else
{
- llerrs << "Bad client state! " << array[i] << " disabled." << llendl;
+ llerrs << "Bad client state! " << array[i] << " enabled." << llendl;
}
}
}
}
- else
- { //was disabled
- if (data_mask & mask[i])
- { //needs to be enabled
- if (loc >= 0)
- {
- glEnableVertexAttribArrayARB(loc);
- }
- else
- {
- glEnableClientState(array[i]);
- }
- }
- else if (!LLGLSLShader::sNoFixedFunction && array[i] && gDebugGL && glIsEnabled(array[i]))
- { //needs to be disabled, make sure it was (DEBUG TEMPORARY)
- if (gDebugSession)
- {
- error = TRUE;
- gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl;
- }
- else
- {
- llerrs << "Bad client state! " << array[i] << " enabled." << llendl;
- }
- }
- }
- }
-
- if (error)
- {
- ll_fail("LLVertexBuffer::setupClientArrays failed");
- }
-
- U32 map_tc[] =
- {
- MAP_TEXCOORD1,
- MAP_TEXCOORD2,
- MAP_TEXCOORD3
- };
-
- U32 type_tc[] =
- {
- TYPE_TEXCOORD1,
- TYPE_TEXCOORD2,
- TYPE_TEXCOORD3
- };
-
- for (U32 i = 0; i < 3; i++)
- {
- S32 loc = -1;
+
+ U32 map_tc[] =
+ {
+ MAP_TEXCOORD1,
+ MAP_TEXCOORD2,
+ MAP_TEXCOORD3
+ };
- if (LLGLSLShader::sNoFixedFunction)
+ U32 type_tc[] =
{
- loc = type_tc[i];
- }
+ TYPE_TEXCOORD1,
+ TYPE_TEXCOORD2,
+ TYPE_TEXCOORD3
+ };
- if (sLastMask & map_tc[i])
+ for (U32 i = 0; i < 3; i++)
{
- if (!(data_mask & map_tc[i]))
- { //disable
- if (loc >= 0)
- {
- glDisableVertexAttribArrayARB(loc);
- }
- else
- {
+ if (sLastMask & map_tc[i])
+ {
+ if (!(data_mask & map_tc[i]))
+ { //disable
glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
}
- }
- else if (data_mask & map_tc[i])
- {
- if (loc >= 0)
- {
- glEnableVertexAttribArrayARB(loc);
- }
- else
+ else if (data_mask & map_tc[i])
{
glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
}
- }
- if (!LLGLSLShader::sNoFixedFunction)
- {
if (sLastMask & MAP_BINORMAL)
{
if (!(data_mask & MAP_BINORMAL))
@@ -348,7 +297,7 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask, U32& sLastMask)
glClientActiveTextureARB(GL_TEXTURE0_ARB);
}
}
-
+
sLastMask = data_mask;
}
}
@@ -734,12 +683,12 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
S32 LLVertexBuffer::calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices)
{
S32 offset = 0;
- for (S32 i=0; i& pos, const std::vector& norm);
static void drawElements(U32 mode, const LLVector4a* pos, const LLVector2* tc, S32 num_indices, const U16* indicesp);
@@ -141,7 +140,7 @@ public:
// 5 - modify LLViewerShaderMgr::mReservedAttribs
// 6 - update LLVertexBuffer::setupVertexArray
enum {
- TYPE_VERTEX,
+ TYPE_VERTEX = 0,
TYPE_NORMAL,
TYPE_TEXCOORD0,
TYPE_TEXCOORD1,
@@ -149,14 +148,12 @@ public:
TYPE_TEXCOORD3,
TYPE_COLOR,
TYPE_EMISSIVE,
- // These use VertexAttribPointer and should possibly be made generic
TYPE_BINORMAL,
TYPE_WEIGHT,
TYPE_WEIGHT4,
TYPE_CLOTHWEIGHT,
- TYPE_MAX,
- //no actual additional data, but indicates position.w is texture index
TYPE_TEXTURE_INDEX,
+ TYPE_MAX,
TYPE_INDEX,
};
enum {
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 32d4097ff3..5201349b17 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9205,6 +9205,17 @@
Value
1
+ RenderUseVAO
+
+ Comment
+ Use GL Vertex Array Objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderVBOMappingDisable
Comment
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index f161790b99..f4e6bb9b1d 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -1274,9 +1274,11 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
U32 data_mask = face->getRiggedVertexBufferDataMask();
+ S32 num_verts = (vol_face.mNumVertices + 0xF) & ~0xF;
+
if (!buffer ||
buffer->getTypeMask() != data_mask ||
- buffer->getRequestedVerts() != vol_face.mNumVertices)
+ buffer->getRequestedVerts() != num_verts)
{
face->setGeomIndex(0);
face->setIndicesIndex(0);
@@ -1310,6 +1312,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
LLMatrix3 mat_normal(mat3);
face->getGeometryVolume(*volume, face->getTEOffset(), mat_vert, mat_normal, offset, true);
+
+ buffer->flush();
}
if (sShaderLevel <= 0 && face->mLastSkinTime < avatar->getLastSkinTime())
@@ -1441,12 +1445,12 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
continue;
}
- stop_glerror();
+ //stop_glerror();
- const LLVolumeFace& vol_face = volume->getVolumeFace(te);
- updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
+ //const LLVolumeFace& vol_face = volume->getVolumeFace(te);
+ //updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
- stop_glerror();
+ //stop_glerror();
U32 data_mask = LLFace::getRiggedDataMask(type);
@@ -1482,17 +1486,15 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
data_mask &= ~LLVertexBuffer::MAP_WEIGHT4;
}
- buff->setBuffer(data_mask);
-
U16 start = face->getGeomStart();
U16 end = start + face->getGeomCount()-1;
S32 offset = face->getIndicesStart();
U32 count = face->getIndicesCount();
- if (glow)
+ /*if (glow)
{
gGL.diffuseColor4f(0,0,0,face->getTextureEntry()->getGlow());
- }
+ }*/
gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture());
if (normal_channel > -1)
@@ -1504,12 +1506,14 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
{
gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.loadMatrix((F32*) face->mTextureMatrix->mMatrix);
+ buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
gGL.loadIdentity();
gGL.matrixMode(LLRender::MM_MODELVIEW);
}
else
{
+ buff->setBuffer(data_mask);
buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
}
}
@@ -1518,6 +1522,7 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
void LLDrawPoolAvatar::renderDeferredRiggedSimple(LLVOAvatar* avatar)
{
+ updateRiggedVertexBuffers(avatar);
renderRigged(avatar, RIGGED_DEFERRED_SIMPLE);
}
@@ -1526,8 +1531,58 @@ void LLDrawPoolAvatar::renderDeferredRiggedBump(LLVOAvatar* avatar)
renderRigged(avatar, RIGGED_DEFERRED_BUMP);
}
+void LLDrawPoolAvatar::updateRiggedVertexBuffers(LLVOAvatar* avatar)
+{
+ //update rigged vertex buffers
+ for (U32 type = 0; type < NUM_RIGGED_PASSES; ++type)
+ {
+ for (U32 i = 0; i < mRiggedFace[type].size(); ++i)
+ {
+ LLFace* face = mRiggedFace[type][i];
+ LLDrawable* drawable = face->getDrawable();
+ if (!drawable)
+ {
+ continue;
+ }
+
+ LLVOVolume* vobj = drawable->getVOVolume();
+
+ if (!vobj)
+ {
+ continue;
+ }
+
+ LLVolume* volume = vobj->getVolume();
+ S32 te = face->getTEOffset();
+
+ if (!volume || volume->getNumVolumeFaces() <= te)
+ {
+ continue;
+ }
+
+ LLUUID mesh_id = volume->getParams().getSculptID();
+ if (mesh_id.isNull())
+ {
+ continue;
+ }
+
+ const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(mesh_id, vobj);
+ if (!skin)
+ {
+ continue;
+ }
+
+ stop_glerror();
+
+ const LLVolumeFace& vol_face = volume->getVolumeFace(te);
+ updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
+ }
+ }
+}
+
void LLDrawPoolAvatar::renderRiggedSimple(LLVOAvatar* avatar)
{
+ updateRiggedVertexBuffers(avatar);
renderRigged(avatar, RIGGED_SIMPLE);
}
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index e0326bcfaf..69e3068858 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -134,6 +134,7 @@ public:
const LLMeshSkinInfo* skin,
LLVolume* volume,
const LLVolumeFace& vol_face);
+ void updateRiggedVertexBuffers(LLVOAvatar* avatar);
void renderRigged(LLVOAvatar* avatar, U32 type, bool glow = false);
void renderRiggedSimple(LLVOAvatar* avatar);
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index b87ca1eaec..e2674a8e19 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -660,6 +660,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+ gSavedSettings.getControl("RenderUseVAO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderVBOMappingDisable")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderPreferStreamDraw")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 28391bf423..8c1bb0f628 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -379,6 +379,7 @@ void LLPipeline::init()
sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
+ LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseVAO");
LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw");
sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights");
sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles");
@@ -6061,6 +6062,7 @@ void LLPipeline::resetVertexBuffers()
sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
+ LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseVAO");
LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw");
LLVertexBuffer::sEnableVBOs = gSavedSettings.getBOOL("RenderVBOEnable");
LLVertexBuffer::sDisableVBOMapping = LLVertexBuffer::sEnableVBOs && gSavedSettings.getBOOL("RenderVBOMappingDisable") ;
--
cgit v1.3
From 74d9663ff6444899bd5eedd29da197746a3ae226 Mon Sep 17 00:00:00 2001
From: Leyla Farazha
Date: Fri, 23 Sep 2011 16:14:13 -0700
Subject: EXP-1246 Create chat bar floater reviewed by Leslie
---
indra/newview/app_settings/settings.xml | 2 +-
indra/newview/llbottomtray.cpp | 30 +++++++++--------
indra/newview/llnearbychat.cpp | 2 +-
indra/newview/llnearbychatbar.cpp | 35 ++++++++++----------
indra/newview/llnearbychatbar.h | 8 ++---
indra/newview/llviewerfloaterreg.cpp | 2 ++
indra/newview/llviewerwindow.cpp | 57 ++++++++++++++++++---------------
7 files changed, 72 insertions(+), 64 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7ab9f36b87..238e4296cf 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1493,7 +1493,7 @@
Type
S32
Value
- 0
+ 1
ChatBubbleOpacity
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 79e6c7b66b..bcb89b379e 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -165,13 +165,13 @@ public:
mChatBarContainer(NULL),
mGesturePanel(NULL)
{
- mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
+ //mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
buildFromFile("panel_bottomtray_lite.xml");
}
BOOL postBuild()
{
- mNearbyChatBar = findChild("chat_bar");
+ //mNearbyChatBar = findChild("chat_bar");
mChatBarContainer = getChild("chat_bar_layout_panel");
mGesturePanel = getChild("gesture_panel");
@@ -223,7 +223,7 @@ LLBottomTray::LLBottomTray(const LLSD&)
// before chiclets do that.
LLIMMgr::getInstance()->addSessionObserver(this);
- mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
+ //mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
buildFromFile("panel_bottomtray.xml");
@@ -270,7 +270,8 @@ LLBottomTray::~LLBottomTray()
// *TODO Vadim: why void* ?
void* LLBottomTray::createNearbyChatBar(void* userdata)
{
- return new LLNearbyChatBar();
+ //return new LLNearbyChatBar();
+ return NULL;
}
LLNearbyChatBar* LLBottomTray::getNearbyChatBar()
@@ -536,10 +537,10 @@ BOOL LLBottomTray::postBuild()
mBottomTrayContextMenu = LLUICtrlFactory::getInstance()->createFromFile("menu_bottomtray.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
gMenuHolder->addChild(mBottomTrayContextMenu);
- mNearbyChatBar = findChild("chat_bar");
- LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle());
+ //mNearbyChatBar = findChild("chat_bar");
+ //LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle());
- mListener.reset(new LLNearbyChatBarListener(*mNearbyChatBar));
+ //mListener.reset(new LLNearbyChatBarListener(*mNearbyChatBar));
mChatBarContainer = getChild("chat_bar_layout_panel");
mNearbyCharResizeHandlePanel = getChild("chat_bar_resize_handle_panel");
@@ -576,7 +577,7 @@ BOOL LLBottomTray::postBuild()
// Registering Chat Bar to receive Voice client status change notifications.
LLVoiceClient::getInstance()->addObserver(this);
- mNearbyChatBar->getChatBox()->setContextMenu(NULL);
+ //mNearbyChatBar->getChatBox()->setContextMenu(NULL);
mChicletPanel = getChild("chiclet_list");
@@ -881,6 +882,7 @@ void LLBottomTray::draw()
bool LLBottomTray::onContextMenuItemEnabled(const LLSD& userdata)
{
std::string item = userdata.asString();
+ /*
LLLineEditor* edit_box = mNearbyChatBar->findChild("chat_box");
if (item == "can_cut")
@@ -902,13 +904,13 @@ bool LLBottomTray::onContextMenuItemEnabled(const LLSD& userdata)
else if (item == "can_select_all")
{
return edit_box->canSelectAll() && (edit_box->getLength()>0);
- }
+ }*/
return true;
}
void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
-{
+{/*
std::string item = userdata.asString();
LLLineEditor* edit_box = mNearbyChatBar->findChild("chat_box");
@@ -932,7 +934,7 @@ void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
else if (item == "select_all")
{
edit_box->selectAll();
- }
+ }*/
}
void LLBottomTray::log(LLView* panel, const std::string& descr)
@@ -1115,7 +1117,7 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)
if(delta_panel > 0)
{
lldebugs << "Shrinking nearby chat bar by " << delta_panel << " px " << llendl;
- mChatBarContainer->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mChatBarContainer->getRect().getHeight());
+ //mChatBarContainer->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mChatBarContainer->getRect().getHeight());
}
log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel");
@@ -1141,8 +1143,8 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)
if (buttons_freed_width > 0)
{
- S32 nearby_needed_width = mDesiredNearbyChatWidth - mNearbyChatBar->getRect().getWidth();
- if (nearby_needed_width > 0)
+ S32 nearby_needed_width = mDesiredNearbyChatWidth;
+ if ( 0)
{
S32 compensative_width = nearby_needed_width > buttons_freed_width ? buttons_freed_width : nearby_needed_width;
log(mNearbyChatBar, "before applying compensative width");
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 03ebc344f1..361912a5cb 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -92,7 +92,7 @@ BOOL LLNearbyChat::postBuild()
if (getDockControl() == NULL)
{
setDockControl(new LLDockControl(
- LLBottomTray::getInstance()->getNearbyChatBar(), this,
+ LLFloaterReg::getInstance("chat_bar"), this,
getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
}
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4b961db5f9..185acb1414 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -411,8 +411,9 @@ LLCtrlListInterface* LLGestureComboList::getListInterface()
return mList;
}
-LLNearbyChatBar::LLNearbyChatBar()
-: mChatBox(NULL)
+LLNearbyChatBar::LLNearbyChatBar(const LLSD& key)
+ : LLFloater(key),
+ mChatBox(NULL)
{
mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
}
@@ -457,19 +458,13 @@ void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
//static
LLNearbyChatBar* LLNearbyChatBar::getInstance()
{
- return LLBottomTray::getInstance() ? LLBottomTray::getInstance()->getNearbyChatBar() : NULL;
-}
-
-//static
-bool LLNearbyChatBar::instanceExists()
-{
- return LLBottomTray::instanceExists() && LLBottomTray::getInstance()->getNearbyChatBar() != NULL;
+ return LLFloaterReg::getTypedInstance("chat_bar");
}
void LLNearbyChatBar::draw()
{
displaySpeakingIndicator();
- LLPanel::draw();
+ LLFloater::draw();
}
std::string LLNearbyChatBar::getCurrentChat()
@@ -780,17 +775,12 @@ void LLNearbyChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type,
// static
void LLNearbyChatBar::startChat(const char* line)
{
- LLBottomTray *bt = LLBottomTray::getInstance();
-
- if (!bt)
- return;
-
- LLNearbyChatBar* cb = bt->getNearbyChatBar();
+ LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
if (!cb )
return;
- bt->setVisible(TRUE);
+ cb->setVisible(TRUE);
cb->mChatBox->setFocus(TRUE);
if (line)
@@ -811,7 +801,7 @@ void LLNearbyChatBar::stopChat()
if (!bt)
return;
- LLNearbyChatBar* cb = bt->getNearbyChatBar();
+ LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
if (!cb)
return;
@@ -822,6 +812,15 @@ void LLNearbyChatBar::stopChat()
gAgent.stopTyping();
}
+void LLNearbyChatBar::onClose(bool app_quitting)
+{
+ LLFloater* nearby_chat = LLFloaterReg::findInstance("nearby_chat", LLSD());
+ if (nearby_chat)
+ {
+ nearby_chat->closeFloater(app_quitting);
+ }
+}
+
// If input of the form "/20foo" or "/20 foo", returns "foo" and channel 20.
// Otherwise returns input and channel 0.
LLWString LLNearbyChatBar::stripChannelNumber(const LLWString &mesg, S32* channel)
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index efddec942f..f4a8605e18 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -93,23 +93,23 @@ private:
};
class LLNearbyChatBar
-: public LLPanel
+: public LLFloater
{
public:
// constructor for inline chat-bars (e.g. hosted in chat history window)
- LLNearbyChatBar();
+ LLNearbyChatBar(const LLSD& key);
~LLNearbyChatBar() {}
virtual BOOL postBuild();
static LLNearbyChatBar* getInstance();
- static bool instanceExists();
-
LLLineEditor* getChatBox() { return mChatBox; }
virtual void draw();
+ virtual void onClose(bool app_quitting);
+
std::string getCurrentChat();
virtual BOOL handleKeyHere( KEY key, MASK mask );
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index fecc6d91bd..30fd631d4f 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -127,6 +127,7 @@
#include "llscriptfloater.h"
#include "llfloatermodelpreview.h"
#include "llcommandhandler.h"
+#include "llnearbychatbar.h"
// *NOTE: Please add files in alphabetical order to keep merges easy.
@@ -177,6 +178,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
+ LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 5893259d96..6381f58f63 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2467,38 +2467,43 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
// Traverses up the hierarchy
if( keyboard_focus )
{
- LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
- // arrow keys move avatar while chatting hack
- if (chat_editor && chat_editor->hasFocus())
+ LLNearbyChatBar* nearby_chat = LLFloaterReg::findTypedInstance("chat_bar");
+
+ if (nearby_chat)
{
- // If text field is empty, there's no point in trying to move
- // cursor with arrow keys, so allow movement
- if (chat_editor->getText().empty()
- || gSavedSettings.getBOOL("ArrowKeysAlwaysMove"))
+ LLLineEditor* chat_editor = nearby_chat->getChatBox();
+
+ // arrow keys move avatar while chatting hack
+ if (chat_editor && chat_editor->hasFocus())
{
- // let Control-Up and Control-Down through for chat line history,
- if (!(key == KEY_UP && mask == MASK_CONTROL)
- && !(key == KEY_DOWN && mask == MASK_CONTROL))
+ // If text field is empty, there's no point in trying to move
+ // cursor with arrow keys, so allow movement
+ if (chat_editor->getText().empty()
+ || gSavedSettings.getBOOL("ArrowKeysAlwaysMove"))
{
- switch(key)
+ // let Control-Up and Control-Down through for chat line history,
+ if (!(key == KEY_UP && mask == MASK_CONTROL)
+ && !(key == KEY_DOWN && mask == MASK_CONTROL))
{
- case KEY_LEFT:
- case KEY_RIGHT:
- case KEY_UP:
- case KEY_DOWN:
- case KEY_PAGE_UP:
- case KEY_PAGE_DOWN:
- case KEY_HOME:
- // when chatbar is empty or ArrowKeysAlwaysMove set,
- // pass arrow keys on to avatar...
- return FALSE;
- default:
- break;
+ switch(key)
+ {
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ case KEY_UP:
+ case KEY_DOWN:
+ case KEY_PAGE_UP:
+ case KEY_PAGE_DOWN:
+ case KEY_HOME:
+ // when chatbar is empty or ArrowKeysAlwaysMove set,
+ // pass arrow keys on to avatar...
+ return FALSE;
+ default:
+ break;
+ }
}
}
}
}
-
if (keyboard_focus->handleKey(key, mask, FALSE))
{
return TRUE;
@@ -2529,11 +2534,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() &&
!keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) )
{
- LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+ LLLineEditor* chat_editor = LLFloaterReg::getTypedInstance("chat_bar")->getChatBox();
if (chat_editor)
{
// passing NULL here, character will be added later when it is handled by character handler.
- LLBottomTray::getInstance()->getNearbyChatBar()->startChat(NULL);
+ LLNearbyChatBar::getInstance()->startChat(NULL);
return TRUE;
}
}
--
cgit v1.3
From b6d7f99f065c87f7409a1e5e1ba1b59f3f4a3efb Mon Sep 17 00:00:00 2001
From: Richard Linden
Date: Fri, 23 Sep 2011 17:01:15 -0700
Subject: EXP-1239 FIX make toolbars wrap when there is not enough room spacing
between buttons now configurable and correct background art now wraps buttons
correctly created customizable panel for button background
---
indra/llui/lltoolbar.cpp | 235 +++++++++++----------
indra/llui/lltoolbar.h | 20 +-
.../skins/default/xui/en/floater_test_toolbar.xml | 4 +-
.../skins/default/xui/en/widgets/toolbar.xml | 17 +-
4 files changed, 154 insertions(+), 122 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index b2cf7e6554..3311ed4a1b 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -53,17 +53,40 @@ namespace LLToolBarEnums
}
using namespace LLToolBarEnums;
+
+namespace LLInitParam
+{
+ void TypeValues::declareValues()
+ {
+ declare("icons_only", BTNTYPE_ICONS_ONLY);
+ declare("icons_with_text", BTNTYPE_ICONS_WITH_TEXT);
+ }
+
+ void TypeValues::declareValues()
+ {
+ declare("bottom", SIDE_BOTTOM);
+ declare("left", SIDE_LEFT);
+ declare("right", SIDE_RIGHT);
+ declare("top", SIDE_TOP);
+ }
+}
+
LLToolBar::Params::Params()
: button_display_mode("button_display_mode"),
buttons("button"),
- side("side"),
+ side("side", SIDE_TOP),
button_icon("button_icon"),
button_icon_and_text("button_icon_and_text"),
wrap("wrap", true),
min_button_width("min_button_width", 0),
max_button_width("max_button_width", S32_MAX),
button_height("button_height"),
- background_image("background_image")
+ pad_left("pad_left"),
+ pad_top("pad_top"),
+ pad_right("pad_right"),
+ pad_bottom("pad_bottom"),
+ pad_between("pad_between"),
+ button_panel("button_panel")
{}
LLToolBar::LLToolBar(const Params& p)
@@ -72,12 +95,16 @@ LLToolBar::LLToolBar(const Params& p)
mSideType(p.side),
mWrap(p.wrap),
mNeedsLayout(false),
- mCenterPanel(NULL),
+ mButtonPanel(NULL),
mCenteringStack(NULL),
- mMinButtonWidth(p.min_button_width),
- mMaxButtonWidth(p.max_button_width),
+ mMinButtonWidth(llmin(p.min_button_width(), p.max_button_width())),
+ mMaxButtonWidth(llmax(p.max_button_width(), p.min_button_width())),
mButtonHeight(p.button_height),
- mBackgroundImage(p.background_image)
+ mPadLeft(p.pad_left),
+ mPadRight(p.pad_right),
+ mPadTop(p.pad_top),
+ mPadBottom(p.pad_bottom),
+ mPadBetween(p.pad_between)
{
mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_ONLY] = p.button_icon;
mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text;
@@ -110,102 +137,81 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
center_panel_p.auto_resize = false;
center_panel_p.user_resize = false;
center_panel_p.fit_content = true;
- mCenterPanel = LLUICtrlFactory::create(center_panel_p);
- mCenteringStack->addChild(mCenterPanel);
+ LLLayoutPanel* center_panel = LLUICtrlFactory::create(center_panel_p);
+ mCenteringStack->addChild(center_panel);
+
+ LLPanel::Params button_panel_p(p.button_panel);
+ button_panel_p.rect = center_panel->getLocalRect();
+ switch(p.side())
+ {
+ case SIDE_LEFT:
+ button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
+ break;
+ case SIDE_RIGHT:
+ button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_RIGHT;
+ break;
+ case SIDE_TOP:
+ button_panel_p.follows.flags = FOLLOWS_TOP|FOLLOWS_LEFT;
+ break;
+ case SIDE_BOTTOM:
+ button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
+ break;
+ }
+ mButtonPanel = LLUICtrlFactory::create(button_panel_p);
+ center_panel->addChild(mButtonPanel);
mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
BOOST_FOREACH (LLToolBarButton::Params button_p, p.buttons)
{
- // buttons always follow left and top, for all orientations
- button_p.follows.flags = FOLLOWS_LEFT|FOLLOWS_TOP;
button_p.fillFrom(mButtonParams[mButtonType]);
-
- LLRect button_rect(button_p.rect);
- { // remove any offset from button
- if (orientation == LLLayoutStack::HORIZONTAL)
- {
- button_rect.setOriginAndSize(0, 0, mMinButtonWidth, mButtonHeight);
- }
- else // VERTICAL
- {
- button_rect.setOriginAndSize(0, 0, mMinButtonWidth, mButtonHeight);
- }
- }
-
- // use our calculated rect
- button_p.rect = button_rect;
LLToolBarButton* buttonp = LLUICtrlFactory::create(button_p);
mButtons.push_back(buttonp);
- mCenterPanel->addChild(buttonp);
+ mButtonPanel->addChild(buttonp);
mNeedsLayout = true;
}
}
-void LLToolBar::resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth)
-{
- // make buttons in current row all same girth
- BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
- {
- if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
- {
- button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
- }
- else // VERTICAL
- {
- button->reshape(max_row_girth, button->getRect().getHeight());
- }
- }
-}
-
bool LLToolBar::addCommand(LLCommand * command)
{
//
// Init basic toolbar button params
//
-
- LLToolBarButton::Params button_p;
- button_p.fillFrom(mButtonParams[mButtonType]);
-
+ LLToolBarButton::Params button_p(mButtonParams[mButtonType]);
button_p.name = command->name();
button_p.label = LLTrans::getString(command->labelRef());
button_p.tool_tip = LLTrans::getString(command->tooltipRef());
- //
- // Set up the button rectangle
- //
-
- S32 btn_width = mMinButtonWidth;
- S32 btn_height = mButtonParams[mButtonType].rect.height;
-
- if ((mSideType == LLToolBarEnums::SIDE_BOTTOM) || (mSideType == LLToolBarEnums::SIDE_TOP))
- {
- btn_height = getRect().getHeight();
- }
-
- LLRect button_rect;
- button_rect.setOriginAndSize(0, 0, btn_width, btn_height);
-
- button_p.rect = button_rect;
-
//
// Add it to the list of buttons
//
-
LLToolBarButton * toolbar_button = LLUICtrlFactory::create(button_p);
-
- toolbar_button->reshape(llclamp(toolbar_button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), toolbar_button->getRect().getHeight());
-
mButtons.push_back(toolbar_button);
- mCenterPanel->addChild(toolbar_button);
+ mButtonPanel->addChild(toolbar_button);
mNeedsLayout = true;
return true;
}
+void LLToolBar::resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth)
+{
+ // make buttons in current row all same girth
+ BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
+ {
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+ {
+ button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
+ }
+ else // VERTICAL
+ {
+ button->reshape(max_row_girth, button->getRect().getHeight());
+ }
+ }
+}
+
void LLToolBar::updateLayoutAsNeeded()
{
if (!mNeedsLayout) return;
@@ -215,23 +221,51 @@ void LLToolBar::updateLayoutAsNeeded()
// our terminology for orientation-agnostic layout is such that
// length refers to a distance in the direction we stack the buttons
// and girth refers to a distance in the direction buttons wrap
- S32 row_running_length = 0;
- S32 max_length = (orientation == LLLayoutStack::HORIZONTAL)
- ? getRect().getWidth()
- : getRect().getHeight();
- S32 max_total_girth = (orientation == LLLayoutStack::HORIZONTAL)
- ? getRect().getHeight()
- : getRect().getWidth();
S32 max_row_girth = 0;
- S32 cur_start = 0;
- S32 cur_row = 0;
+ S32 max_row_length = 0;
- LLRect panel_rect = mCenterPanel->getLocalRect();
+ S32 max_length;
+ S32 max_total_girth;
+ S32 cur_start;
+ S32 cur_row ;
+ S32 row_pad_start;
+ S32 row_pad_end;
+ S32 girth_pad_end;
+ S32 row_running_length;
+
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ max_length = getRect().getWidth() - mPadLeft - mPadRight;
+ max_total_girth = getRect().getHeight() - mPadTop - mPadBottom;
+ row_pad_start = mPadLeft;
+ row_running_length = row_pad_start;
+ row_pad_end = mPadRight;
+ cur_row = mPadTop;
+ girth_pad_end = mPadBottom;
+ }
+ else // VERTICAL
+ {
+ max_length = getRect().getHeight() - mPadTop - mPadBottom;
+ max_total_girth = getRect().getWidth() - mPadLeft - mPadRight;
+ row_pad_start = mPadTop;
+ row_running_length = row_pad_start;
+ row_pad_end = mPadBottom;
+ cur_row = mPadLeft;
+ girth_pad_end = mPadRight;
+ }
+
+ cur_start = row_pad_start;
+
+
+ LLRect panel_rect = mButtonPanel->getLocalRect();
std::vector buttons_in_row;
BOOST_FOREACH(LLToolBarButton* button, mButtons)
{
+ button->reshape(mMinButtonWidth, mButtonHeight);
+ button->autoResize();
+
S32 button_clamped_width = llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth);
S32 button_length = (orientation == LLLayoutStack::HORIZONTAL)
? button_clamped_width
@@ -254,9 +288,10 @@ void LLToolBar::updateLayoutAsNeeded()
resizeButtonsInRow(buttons_in_row, max_row_girth);
buttons_in_row.clear();
- row_running_length = 0;
- cur_start = 0;
- cur_row += max_row_girth;
+ max_row_length = llmax(max_row_length, row_running_length);
+ row_running_length = row_pad_start;
+ cur_start = row_pad_start;
+ cur_row += max_row_girth + mPadBetween;
max_row_girth = 0;
}
@@ -273,14 +308,17 @@ void LLToolBar::updateLayoutAsNeeded()
buttons_in_row.push_back(button);
- row_running_length += button_length;
+ row_running_length += button_length + mPadBetween;
cur_start = row_running_length;
max_row_girth = llmax(button_girth, max_row_girth);
}
// final resizing in "girth" direction
S32 total_girth = cur_row // current row position...
- + max_row_girth; // ...incremented by size of final row
+ + max_row_girth // ...incremented by size of final row...
+ + girth_pad_end; // ...plus padding reserved on end
+ max_row_length = llmax(max_row_length, row_running_length - mPadBetween + row_pad_end);
+
resizeButtonsInRow(buttons_in_row, max_row_girth);
// grow and optionally shift toolbar to accommodate buttons
@@ -288,18 +326,18 @@ void LLToolBar::updateLayoutAsNeeded()
{
if (mSideType == SIDE_TOP)
{ // shift down to maintain top edge
- translate(0, getRect().getHeight() - total_girth);
+ mButtonPanel->translate(0, mButtonPanel->getRect().getHeight() - total_girth);
}
- reshape(getRect().getWidth(), total_girth);
+ mButtonPanel->reshape(max_row_length, total_girth);
}
else // VERTICAL
{
if (mSideType == SIDE_RIGHT)
{ // shift left to maintain right edge
- translate(getRect().getWidth() - total_girth, 0);
+ mButtonPanel->translate(mButtonPanel->getRect().getWidth() - total_girth, 0);
}
- reshape(total_girth, getRect().getHeight());
+ mButtonPanel->reshape(total_girth, max_row_length);
}
// re-center toolbar buttons
@@ -313,12 +351,6 @@ void LLToolBar::updateLayoutAsNeeded()
void LLToolBar::draw()
{
updateLayoutAsNeeded();
-
- { // draw background
- LLRect bg_rect;
- localRectToOtherView(mCenterPanel->getRect(),&bg_rect, this);
- mBackgroundImage->draw(bg_rect);
- }
LLUICtrl::draw();
}
@@ -328,20 +360,3 @@ void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
mNeedsLayout = true;
}
-namespace LLInitParam
-{
- void TypeValues::declareValues()
- {
- declare("icons_only", BTNTYPE_ICONS_ONLY);
- declare("icons_with_text", BTNTYPE_ICONS_WITH_TEXT);
- }
-
- void TypeValues::declareValues()
- {
- declare("none", SIDE_NONE);
- declare("bottom", SIDE_BOTTOM);
- declare("left", SIDE_LEFT);
- declare("right", SIDE_RIGHT);
- declare("top", SIDE_TOP);
- }
-}
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 9b08b26ce4..92c289cd3f 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -59,7 +59,6 @@ namespace LLToolBarEnums
enum SideType
{
- SIDE_NONE = 0,
SIDE_BOTTOM,
SIDE_LEFT,
SIDE_RIGHT,
@@ -101,10 +100,16 @@ public:
Optional min_button_width,
max_button_width,
button_height;
+
+ Optional pad_left,
+ pad_top,
+ pad_right,
+ pad_bottom,
+ pad_between;
// get rid of this
Multiple buttons;
- Optional background_image;
+ Optional button_panel;
Params();
};
@@ -129,16 +134,19 @@ private:
LLToolBarEnums::ButtonType mButtonType;
LLLayoutStack* mCenteringStack;
LLLayoutStack* mWrapStack;
- LLLayoutPanel* mCenterPanel;
+ LLPanel* mButtonPanel;
LLToolBarEnums::SideType mSideType;
bool mWrap;
bool mNeedsLayout;
S32 mMinButtonWidth,
mMaxButtonWidth,
- mButtonHeight;
-
- LLUIImagePtr mBackgroundImage;
+ mButtonHeight,
+ mPadLeft,
+ mPadRight,
+ mPadTop,
+ mPadBottom,
+ mPadBetween;
LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
};
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index da964b88e2..b58c006b3f 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -28,7 +28,7 @@
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index f9cc9b7c69..45210277b2 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -1,11 +1,20 @@
-
-
+
+
+
-
--
cgit v1.3
From 105b15436d37149f6df71866125871448ee4fbcb Mon Sep 17 00:00:00 2001
From: Merov Linden
Date: Fri, 23 Sep 2011 19:24:55 -0700
Subject: EXP-1027 : Fix the children creation code in LLToolBarView. Only a
left panel is displayed now.
---
indra/llui/lltoolbar.cpp | 2 +-
indra/llui/lltoolbarview.cpp | 8 ++++----
indra/llui/lltoolbarview.h | 3 +++
indra/llui/llui.cpp | 1 +
indra/newview/llviewerwindow.cpp | 2 +-
indra/newview/skins/default/xui/en/panel_toolbar_view.xml | 4 +++-
6 files changed, 13 insertions(+), 7 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index e052c1c876..ac07e6dd0b 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -33,7 +33,7 @@
#include "llcommandmanager.h"
#include "lltrans.h"
-static LLDefaultChildRegistry::Register r1("toolbar");
+//static LLDefaultChildRegistry::Register r1("toolbar");
namespace LLToolBarEnums
{
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 590cd4ffca..c99b573b35 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -84,10 +84,10 @@ void LLToolBarView::draw()
// Debug draw
LLColor4 back_color = LLColor4::blue;
back_color[VALPHA] = 0.5f;
-// gl_rect_2d(getLocalRect(), back_color, TRUE);
-// gl_rect_2d(bottom_rect, LLColor4::red, TRUE);
-// gl_rect_2d(left_rect, LLColor4::green, TRUE);
-// gl_rect_2d(right_rect, LLColor4::yellow, TRUE);
+ //gl_rect_2d(getLocalRect(), back_color, TRUE);
+ //gl_rect_2d(bottom_rect, LLColor4::red, TRUE);
+ //gl_rect_2d(left_rect, LLColor4::green, TRUE);
+ //gl_rect_2d(right_rect, LLColor4::yellow, TRUE);
LLUICtrl::draw();
}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index 73278e226b..0e6545015d 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -41,6 +41,9 @@ public:
virtual ~LLToolBarView();
virtual void draw();
+ // valid children for LLToolBarView are stored in this registry
+ typedef LLDefaultChildRegistry child_registry_t;
+
protected:
friend class LLUICtrlFactory;
LLToolBarView(const Params&);
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index a4303780fd..4f129ccfba 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -96,6 +96,7 @@ static LLDefaultChildRegistry::Register register_search_editor("
// register other widgets which otherwise may not be linked in
static LLDefaultChildRegistry::Register register_loading_indicator("loading_indicator");
+static LLDefaultChildRegistry::Register register_toolbar("toolbar");
//
// Functions
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index e851398bf5..c651e86606 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1786,7 +1786,7 @@ void LLViewerWindow::initBase()
// Get a pointer to the toolbar view holder
LLPanel* panel_holder = main_view->getChild("toolbar_view_holder");
// Load the toolbar view from file
- gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", panel_holder, LLPanel::child_registry_t::instance());
+ gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
// Attach it to the toolbar view holder
//panel_holder->addChild(gToolBarView);
}
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index 33a19bcdb0..12c442d8f1 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -5,6 +5,8 @@
name="toolbar view"
height="500"
width="1024"
+ left="0"
+ top="0"
mouse_opaque="false"
tab_stop="false"
visible="true">
@@ -39,7 +41,7 @@
side="right"
visible="true" />
Date: Sat, 24 Sep 2011 03:09:32 -0500
Subject: SH-2244 Fix for shaders not compiling on pre-GL-3.0 ATI drivers
---
indra/llrender/llshadermgr.cpp | 1 +
indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl | 2 +-
.../newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl | 2 +-
.../app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl | 2 +-
.../newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/giF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl | 2 +-
.../newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl | 2 +-
.../app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl | 2 +-
.../app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl | 2 +-
.../app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl | 2 +-
.../newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/effects/glowF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/environment/terrainF.glsl | 2 +-
.../newview/app_settings/shaders/class1/environment/terrainWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/environment/waterF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/debugF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl | 2 +-
.../newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/highlightF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl | 2 +-
.../app_settings/shaders/class1/interface/onetexturenocolorF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl | 2 +-
.../app_settings/shaders/class1/interface/splattexturerectF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/interface/uiF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/lighting/lightF.glsl | 2 +-
.../newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl | 2 +-
.../app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl | 2 +-
.../shaders/class1/lighting/lightFullbrightShinyWaterF.glsl | 2 +-
.../app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl | 2 +-
.../newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/objects/bumpF.glsl | 2 +-
indra/newview/app_settings/shaders/class1/objects/impostorF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl | 2 +-
.../newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl | 2 +-
.../app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl | 2 +-
.../newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/effects/extractF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/effects/simpleF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/environment/terrainF.glsl | 2 +-
.../newview/app_settings/shaders/class2/environment/terrainWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/environment/waterF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/lighting/lightF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl | 2 +-
.../newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightNonIndexedF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightShinyWaterF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl | 2 +-
.../class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl | 2 +-
.../shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl | 2 +-
.../newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl | 2 +-
.../newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl | 2 +-
.../shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl | 2 +-
.../shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl | 2 +-
.../app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl | 2 +-
indra/newview/app_settings/shaders/class2/windlight/skyF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/giF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl | 2 +-
indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 2 +-
112 files changed, 112 insertions(+), 111 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 889b436ac5..17191a2d97 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -561,6 +561,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
text[count++] = strdup("#version 400\n");
}
+ text[count++] = strdup("#define DEFINE_GL_FRAGCOLOR 1\n");
text[count++] = strdup("#define FXAA_GLSL_130 1\n");
text[count++] = strdup("#define ATTRIBUTE in\n");
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
index a009d0dd86..3e4d438ed3 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index c40a62e49c..4cca287356 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
index 3f6d6a8fd6..8641827777 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
index e24734c2db..c13ea702db 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
index f899ecabe0..402f681631 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
@@ -22,7 +22,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
index 4591bb9397..558a88009a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
index 1b04be7d9c..7d3b546d3e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
index fdcce78940..92f78125d8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 25d5906b77..84ae2f9f10 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
index 55b816041b..29ca80ae92 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
index f17c64e751..e014a14ad8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
@@ -25,7 +25,7 @@
uniform sampler2DRect diffuseMap;
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 5f83d06388..179c721a2f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 17955f32cd..d3984276ef 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index b8ed398a81..b673d00d6e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index c8ee1dac00..fb574359ac 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index 7f16c32331..066dfba5d9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl
index e3a5462589..c275434777 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl
index 55e07db879..985f44fb6c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
index 0f85a299a5..84d65d5b3b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
- #ifndef gl_FragColor
+ #ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
index a35826ce7d..71b12326d8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
index 608ac4d3de..bf75ca262e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 0844e659b6..255796aa27 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 93842e818f..cc0f4e5b6b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
index 1114a0f0c4..adc7c5d005 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
@@ -27,7 +27,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
index 96f3248e55..fc5959a33c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
index 910b8f6c8c..29ec6e6bee 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
index b2d3a135ba..9a3d792224 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
index 18b6e503e1..ec4e2ae4d5 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
index 8e83e53b78..90bb84323c 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
index 5f12b18398..f0837dd4ca 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
index 0d1d7d6b89..b84f29423f 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
index 4ad1b82e0a..2e138d35bf 100644
--- a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
index 8aa4cb5434..1512074dda 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
index 433ecc9d2a..4f2767fc97 100644
--- a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
index 765040a27f..4b481ba834 100644
--- a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
index d89c7b0072..6bcc97ba18 100644
--- a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
index 8023545c4e..f67703b839 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
index 57e9f93768..7136d412ea 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
index ce5409c816..ecbc30f05f 100644
--- a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
index 5f91ce5e80..85f819f4c2 100644
--- a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
index 95b7632521..fafeb5a7b4 100644
--- a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
index 7ba2d07ca4..f790122749 100644
--- a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
index b085eb1760..a0bb255cfa 100644
--- a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
index 9cbdfea2df..cdb48163dd 100644
--- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
index 0c5479af36..36d6e06fc5 100644
--- a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
index 7f23c5e78c..8274a655db 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
index b67203065f..ec7ec9ae7d 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
index d9b7ba0db1..d47d1724a7 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
index 0ace495d5a..bd67e2659e 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
@@ -22,7 +22,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
index fac476e2ce..0cf5152661 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
index b1ab065712..761bda487d 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
index 05c9310a37..6761d35316 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
index 27d05baaa7..2908d77443 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
index 664967d36f..4b85d61aca 100644
--- a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
index 8a4932122f..e7c81888eb 100644
--- a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index ab4ed093c8..8d88e93698 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
index a9ee534bdf..0df557f2aa 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
index 98dd9d4a1e..331dbc7079 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
index 96e71b46d7..f75a08779c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
index 540c71c5e3..b9c65b168c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 7ef2608841..14a683971a 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
index c2d374d22c..4037dca91a 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index c09e3bb6e6..4543e83d0a 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
index 6d746ebbba..62a86a3f09 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 93b385cbf5..31bd0c79da 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
index 1e3257d4a2..af3487fd91 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index efb1984874..7e62012b5d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
index 96b6140c0a..11b3faa4c9 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
@@ -26,7 +26,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
index 1886178731..025ff48109 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
@@ -24,7 +24,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
index 4a2ba0afc5..c571db9df2 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
#extension GL_ARB_texture_multisample : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
index 439855910e..f42497d8be 100644
--- a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
index 786c00f946..ebf4f28a74 100644
--- a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
+++ b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
index 4074540591..2bfcfad081 100644
--- a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
+++ b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
index 7e8be3c19c..932bd87152 100644
--- a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
+++ b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
index eed8b3cc01..18f6d91804 100644
--- a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
index c48333aa87..e5c7ced52c 100644
--- a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
index 90a7aab62e..1fdb90f792 100644
--- a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
index 33ffeaefb0..444c896d38 100644
--- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
index 7325e0fe4e..6815f7aa85 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
index 9a9f8fbf75..2640668d7d 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
index c2847bbce8..735f5b3813 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
index 29dbcb2d8c..92113d9afa 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
index 5dd8822a68..c3edc0bd70 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
index ccd8fddb99..d1ad3da009 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
index 14d44de3d5..4e1e664e6b 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
index 6cb6453f58..c981e9eba2 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
index 8940e1683b..a4893f0359 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
index 560702c8ce..c10cde98e0 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
@@ -22,7 +22,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
index b8b6a22a43..e9b26087f4 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
@@ -22,7 +22,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
index 748e30b8fb..32a1c71099 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
index 5a47f85833..2547f9e750 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
index 8430091bf5..1b5aa61441 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
index fe9f330215..aa3ef8cdd9 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
index fc88010978..9f1a358b53 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
index 9f416090aa..e9c27dbefd 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
index abc41fc09a..595ad74365 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
index 99df846e68..68c727d62c 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
index d67aeb6655..f32b9e1958 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
index ad219d0d2a..60289cf7f7 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
index 3ec16b1681..d0038ae89b 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
index 4dddc95afd..e9537d1e9d 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
index f89b2dcea2..8b0c25b705 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
index d06e80ec35..4ab06c6e21 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
index be9fefcb33..c9d96b2cf4 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
index af8c05dbeb..832cf46150 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
@@ -24,7 +24,7 @@
*/
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
index 39975f8249..ee992f2fe9 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor;
+#ifdef DEFINE_GL_FRAGCOLOR;
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
index 5fbbc0a0cc..3ace57e3cb 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
index 53bbcc0300..3057b63ecd 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
index 6d17942683..c7ccf3a613 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
index 44b36d3307..499a72222d 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index 338d289ab0..7089c53f1c 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -25,7 +25,7 @@
#extension GL_ARB_texture_rectangle : enable
-#ifndef gl_FragColor
+#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
--
cgit v1.3
From 102f600d3ae5427be0e338ae291d2f803436cd32 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Sat, 24 Sep 2011 22:56:33 -0500
Subject: SH-2244 Fix for bump surfaces appearing black when L&S disabled
---
indra/llrender/llrender.cpp | 1 +
indra/newview/llviewershadermgr.cpp | 8 ++++++++
2 files changed, 9 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 685334555a..13e7c6094c 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -1039,6 +1039,7 @@ LLRender::LLRender()
mMatIdx[i] = 0;
mMatHash[i] = 0;
mCurMatHash[i] = 0xFFFFFFFF;
+ mMatrix[i][0].make_identity();
}
mLightHash = 0;
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index b0d97ee5f6..17cce3069e 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -2122,6 +2122,14 @@ BOOL LLViewerShaderMgr::loadShadersObject()
gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB));
gObjectBumpProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
success = gObjectBumpProgram.createShader(NULL, NULL);
+
+ if (success)
+ { //lldrawpoolbump assumes "texture0" has channel 0 and "texture1" has channel 1
+ gObjectBumpProgram.bind();
+ gObjectBumpProgram.uniform1i("texture0", 0);
+ gObjectBumpProgram.uniform1i("texture1", 1);
+ gObjectBumpProgram.unbind();
+ }
}
--
cgit v1.3
From f49e7014ca9693d77ff265d3fc668a8b05ddf085 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Sat, 24 Sep 2011 23:29:38 -0500
Subject: SH-2244 Fix for crash when transparent water disabled (silently
ignore setting when basic shaders enabled)
---
indra/llui/llui.cpp | 6 +++---
indra/newview/lldrawpoolwater.cpp | 7 ++++++-
indra/newview/llvowater.cpp | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 212672b809..36f87fc597 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -534,7 +534,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
}
}
- gGL.getTexUnit(0)->bind(image);
+ gGL.getTexUnit(0)->bind(image, true);
gGL.color4fv(color.mV);
@@ -732,7 +732,7 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre
LLGLSUIDefault gls_ui;
- gGL.getTexUnit(0)->bind(image);
+ gGL.getTexUnit(0)->bind(image, true);
gGL.color4fv(color.mV);
@@ -785,7 +785,7 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre
LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
- gGL.getTexUnit(0)->bind(image);
+ gGL.getTexUnit(0)->bind(image, true);
gGL.color4fv(color.mV);
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index c97f92fa6f..5de0b8c796 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -167,7 +167,7 @@ void LLDrawPoolWater::render(S32 pass)
std::sort(mDrawFace.begin(), mDrawFace.end(), LLFace::CompareDistanceGreater());
// See if we are rendering water as opaque or not
- if (!gSavedSettings.getBOOL("RenderTransparentWater"))
+ if (!gSavedSettings.getBOOL("RenderTransparentWater") && !LLGLSLShader::sNoFixedFunction)
{
// render water for low end hardware
renderOpaqueLegacyWater();
@@ -332,6 +332,11 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
{
LLVOSky *voskyp = gSky.mVOSkyp;
+ if (LLGLSLShader::sNoFixedFunction)
+ {
+ gObjectSimpleProgram.bind();
+ }
+
stop_glerror();
// Depth sorting and write to depth buffer
diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp
index 75198c465b..7df50ec815 100644
--- a/indra/newview/llvowater.cpp
+++ b/indra/newview/llvowater.cpp
@@ -160,7 +160,7 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
static const unsigned int vertices_per_quad = 4;
static const unsigned int indices_per_quad = 6;
- const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") ? 16 : 1;
+ const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") && !LLGLSLShader::sNoFixedFunction ? 16 : 1;
const S32 num_quads = size * size;
face->setSize(vertices_per_quad * num_quads,
--
cgit v1.3
From a80d5f2b46b21a8d1a48da4b4d2c740cb8260928 Mon Sep 17 00:00:00 2001
From: Seth ProductEngine
Date: Mon, 26 Sep 2011 15:21:46 +0300
Subject: EXP-1222 FIXED Added a floater for My Profile side tab. - Replaced
calls to LLSideTray with LLFloaterSidePanelContainer. - Removed obsolete code
implementing the tri-state behavior of Profile side panel. - Added People
panel XUI which is referenced from Profile panel.
---
indra/newview/llpanelme.cpp | 40 ---------------------
indra/newview/llpanelme.h | 1 -
indra/newview/llpanelpicks.cpp | 17 +++++----
indra/newview/llviewerfloaterreg.cpp | 2 ++
.../skins/default/xui/en/floater_my_profile.xml | 19 ++++++++++
.../skins/default/xui/en/floater_people.xml | 41 ++++++++++++++++++++++
6 files changed, 72 insertions(+), 48 deletions(-)
create mode 100644 indra/newview/skins/default/xui/en/floater_my_profile.xml
create mode 100644 indra/newview/skins/default/xui/en/floater_people.xml
(limited to 'indra/newview')
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 1347a02a52..4d86fa15df 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -37,7 +37,6 @@
#include "llfirstuse.h"
#include "llfloaterreg.h"
#include "llhints.h"
-#include "llsidetray.h"
#include "llviewercontrol.h"
#include "llviewerdisplayname.h"
@@ -89,45 +88,6 @@ void LLPanelMe::onOpen(const LLSD& key)
//}
}
-bool LLPanelMe::notifyChildren(const LLSD& info)
-{
- if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")
- {
- // Implement task panel tri-state behavior.
- //
- // When the button of an active open task panel is clicked, side tray
- // calls notifyChildren() on the panel, passing task-panel-action=>handle-tri-state as an argument.
- // The task panel is supposed to handle this by reverting to the default view,
- // i.e. closing any dependent panels like "pick info" or "profile edit".
-
- bool on_default_view = true;
-
- const LLRect& task_panel_rect = getRect();
- for (LLView* child = getFirstChild(); child; child = findNextSibling(child))
- {
- LLPanel* panel = dynamic_cast(child);
- if (!panel)
- continue;
-
- // *HACK: implement panel stack instead (e.g. me->pick_info->pick_edit).
- if (panel->getRect().getWidth() == task_panel_rect.getWidth() &&
- panel->getRect().getHeight() == task_panel_rect.getHeight() &&
- panel->getVisible())
- {
- panel->setVisible(FALSE);
- on_default_view = false;
- }
- }
-
- if (on_default_view)
- LLSideTray::getInstance()->collapseSideBar();
-
- return true; // this notification is only supposed to be handled by task panels
- }
-
- return LLPanel::notifyChildren(info);
-}
-
void LLPanelMe::buildEditPanel()
{
if (NULL == mEditPanel)
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
index f27f5a268e..22cbb9e055 100644
--- a/indra/newview/llpanelme.h
+++ b/indra/newview/llpanelme.h
@@ -49,7 +49,6 @@ public:
LLPanelMe();
/*virtual*/ void onOpen(const LLSD& key);
- /*virtual*/ bool notifyChildren(const LLSD& info);
/*virtual*/ BOOL postBuild();
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index ddce83c616..15b5fc8301 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -48,11 +48,11 @@
#include "llaccordionctrl.h"
#include "llaccordionctrltab.h"
#include "llavatarpropertiesprocessor.h"
+#include "llfloatersidepanelcontainer.h"
#include "llpanelavatar.h"
#include "llpanelprofile.h"
#include "llpanelpick.h"
#include "llpanelclassified.h"
-#include "llsidetray.h"
static const std::string XML_BTN_NEW = "new_btn";
static const std::string XML_BTN_DELETE = "trash_btn";
@@ -133,7 +133,7 @@ public:
params["id"] = gAgent.getID();
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "create_pick";
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
void editPick(LLPickData* pick_info)
@@ -146,8 +146,7 @@ public:
params["snapshot_id"] = pick_info->snapshot_id;
params["pick_name"] = pick_info->name;
params["pick_desc"] = pick_info->desc;
-
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)
@@ -252,7 +251,7 @@ public:
params["id"] = gAgent.getID();
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "create_classified";
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
void openClassified(LLAvatarClassifiedInfo* c_info)
@@ -270,7 +269,11 @@ public:
params["classified_name"] = c_info->name;
params["classified_desc"] = c_info->description;
params["from_search"] = true;
- LLSideTray::getInstance()->showPanel("panel_profile_view", params);
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance("people");
+ if (floaterp)
+ {
+ floaterp->openChildPanel("panel_profile_view", params);
+ }
}
else if (mRequestVerb == "edit")
{
@@ -283,7 +286,7 @@ public:
params["open_tab_name"] = "panel_picks";
params["show_tab_panel"] = "edit_classified";
params["classified_id"] = c_info->classified_id;
- LLSideTray::getInstance()->showPanel("panel_me", params);
+ LLFloaterSidePanelContainer::showPanel("my_profile", params);
}
else
{
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b28373c6d5..b30ef11978 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -223,6 +223,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("moveview", "floater_moveview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("mute_object_by_name", "floater_mute_object.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
+ LLFloaterReg::add("my_profile", "floater_my_profile.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("notification_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
@@ -231,6 +232,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterPayUtil::registerFloater();
+ LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("postcard", "floater_postcard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/skins/default/xui/en/floater_my_profile.xml b/indra/newview/skins/default/xui/en/floater_my_profile.xml
new file mode 100644
index 0000000000..b3ebe7f791
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_profile.xml
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
new file mode 100644
index 0000000000..13e0738e52
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
--
cgit v1.3
From b72c8df1f6aac0932ae587a6a94fd87db5007366 Mon Sep 17 00:00:00 2001
From: Paul ProductEngine
Date: Mon, 26 Sep 2011 19:38:12 +0300
Subject: Fixed Linux TeamCity build
---
indra/newview/llfloatersidepanelcontainer.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index cff46e80eb..cf66fd1792 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -69,7 +69,7 @@ LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_na
panel = container->getCurrentPanel();
}
- else if (panel = dynamic_cast(view))
+ else if ((panel = dynamic_cast(view)) != NULL)
{
panel->onOpen(params);
}
--
cgit v1.3
From 679a028fcc5615b9725bf11f6949634617fad06d Mon Sep 17 00:00:00 2001
From: Paul ProductEngine
Date: Mon, 26 Sep 2011 20:37:02 +0300
Subject: EXP-1203 ADDITIONAL FIX (As a FUI user, I want the address bar and
favorites to be on one line)
- Removed search combobox by spec
- Fixed EXP-1243 (Parcel characteristics icons from location bar overlay other ui elements)
- Fixed EXP-1245 (More spillover list "jumps" on copying landmarks)
---
indra/newview/llnavigationbar.cpp | 38 +---------------------
indra/newview/llnavigationbar.h | 4 ---
.../skins/default/xui/en/panel_navigation_bar.xml | 37 ++++-----------------
3 files changed, 8 insertions(+), 71 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 133168f0ba..4c0823874c 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -269,7 +269,6 @@ LLNavigationBar::LLNavigationBar()
mBtnForward(NULL),
mBtnHome(NULL),
mCmbLocation(NULL),
- mSearchComboBox(NULL),
mPurgeTPHistoryItems(false),
mSaveToLocationHistory(false)
{
@@ -291,10 +290,7 @@ BOOL LLNavigationBar::postBuild()
mBtnForward = getChild("forward_btn");
mBtnHome = getChild("home_btn");
- mCmbLocation= getChild("location_combo");
- mSearchComboBox = getChild("search_combo_box");
-
- fillSearchComboBox();
+ mCmbLocation= getChild("location_combo");
mBtnBack->setEnabled(FALSE);
mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
@@ -309,8 +305,6 @@ BOOL LLNavigationBar::postBuild()
mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
mCmbLocation->setCommitCallback(boost::bind(&LLNavigationBar::onLocationSelection, this));
-
- mSearchComboBox->setCommitCallback(boost::bind(&LLNavigationBar::onSearchCommit, this));
mTeleportFinishConnection = LLViewerParcelMgr::getInstance()->
setTeleportFinishedCallback(boost::bind(&LLNavigationBar::onTeleportFinished, this, _1));
@@ -344,26 +338,6 @@ void LLNavigationBar::setVisible(BOOL visible)
}
}
-
-void LLNavigationBar::fillSearchComboBox()
-{
- if(!mSearchComboBox)
- {
- return;
- }
-
- LLSearchHistory::getInstance()->load();
-
- LLSearchHistory::search_history_list_t search_list =
- LLSearchHistory::getInstance()->getSearchHistoryList();
- LLSearchHistory::search_history_list_t::const_iterator it = search_list.begin();
- for( ; search_list.end() != it; ++it)
- {
- LLSearchHistory::LLSearchHistoryItem item = *it;
- mSearchComboBox->add(item.search_query);
- }
-}
-
void LLNavigationBar::draw()
{
if(mPurgeTPHistoryItems)
@@ -416,16 +390,6 @@ void LLNavigationBar::onHomeButtonClicked()
gAgent.teleportHome();
}
-void LLNavigationBar::onSearchCommit()
-{
- std::string search_query = mSearchComboBox->getSimple();
- if(!search_query.empty())
- {
- LLSearchHistory::getInstance()->addEntry(search_query);
- }
- invokeSearch(search_query);
-}
-
void LLNavigationBar::onTeleportHistoryMenuItemClicked(const LLSD& userdata)
{
int idx = userdata.asInteger();
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index f200253de5..e4ce9e3998 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -118,7 +118,6 @@ private:
void onHomeButtonClicked();
void onLocationSelection();
void onLocationPrearrange(const LLSD& data);
- void onSearchCommit();
void onTeleportFinished(const LLVector3d& global_agent_pos);
void onTeleportFailed();
void onRegionNameResponse(
@@ -128,8 +127,6 @@ private:
U64 region_handle, const std::string& url,
const LLUUID& snapshot_id, bool teleport);
- void fillSearchComboBox();
-
static void destroyClass()
{
if (LLNavigationBar::instanceExists())
@@ -142,7 +139,6 @@ private:
LLPullButton* mBtnBack;
LLPullButton* mBtnForward;
LLButton* mBtnHome;
- LLSearchComboBox* mSearchComboBox;
LLLocationInputCtrl* mCmbLocation;
LLRect mDefaultNbRect;
LLRect mDefaultFpRect;
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 54befa38e9..719d3531ed 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -60,9 +60,9 @@
layout="topleft"
auto_resize="true"
user_resize="true"
- min_width="500"
+ min_width="340"
name="navigation_layout_panel"
- width="500">
+ width="340">
+ width="340">
+ width="215">
-
-
-
-
@@ -172,9 +149,9 @@
layout="topleft"
auto_resize="true"
user_resize="true"
- min_width="190"
+ min_width="335"
name="favorites_layout_panel"
- width="290">
+ width="335">
+ width="331">
Cursor3D
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 947f0ec184..34ee893594 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1779,7 +1779,7 @@ void LLViewerWindow::initBase()
mHintHolder = main_view->getChild("hint_holder")->getHandle();
mLoginPanelHolder = main_view->getChild("login_panel_holder")->getHandle();
- // Update the toolbar global holder
+ // Create the toolbar view
// *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
if (gSavedSettings.getBOOL("DebugToolbarFUI"))
{
@@ -1787,8 +1787,8 @@ void LLViewerWindow::initBase()
LLPanel* panel_holder = main_view->getChild("toolbar_view_holder");
// Load the toolbar view from file
gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
- // Attach it to the toolbar view holder
- //panel_holder->addChild(gToolBarView);
+ // Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
+ gToolBarView->setVisible(FALSE);
}
// Constrain floaters to inside the menu and status bar regions.
@@ -1953,6 +1953,12 @@ void LLViewerWindow::initWorldUI()
buttons_panel->setShape(buttons_panel_container->getLocalRect());
buttons_panel->setFollowsAll();
buttons_panel_container->addChild(buttons_panel);
+
+ // Make the toolbars visible
+ if (gToolBarView)
+ {
+ gToolBarView->setVisible(TRUE);
+ }
}
// Destroy the UI
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index 6701266887..7503da1d36 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -3,18 +3,32 @@
follows="all"
layout="topleft"
name="toolbar view"
- height="500"
+ height="716"
width="1024"
left="0"
top="0"
mouse_opaque="false"
tab_stop="false"
visible="true">
+
@@ -36,25 +50,11 @@
follows="top|bottom|right"
layout="topleft"
name="toolbar_right"
- height="500"
+ height="686"
width="30"
left="994"
top="0"
side="right"
button_display_mode="icons_only"
visible="true" />
-
--
cgit v1.3
From 058b79fadd8b134b6f718be2efb395d6d61e0aeb Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Mon, 26 Sep 2011 17:19:08 -0500
Subject: SH-2244 Fix for menu backgrounds being invisible on login screen when
shaders enabled.
---
indra/newview/llviewerdisplay.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 4f3127805f..e47ac8680a 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -124,7 +124,8 @@ void display_startup()
// Update images?
//gImageList.updateImages(0.01f);
-
+ LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
+
LLGLSDefault gls_default;
// Required for HTML update in login screen
--
cgit v1.3
From c7a16ef091409f55427f7cf0e9057130b47d2574 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Mon, 26 Sep 2011 17:54:38 -0500
Subject: SH-2244 Fix for crash in LLVertexBuffer::mapBuffer (don't use
glMapBuffer by default)
---
indra/newview/app_settings/settings.xml | 2 +-
indra/newview/featuretable_mac.txt | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5201349b17..7d61250fae 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9225,7 +9225,7 @@
Type
Boolean
Value
- 0
+ 1
RenderUseStreamVBO
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 2690e8ec70..36ffa54184 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -48,9 +48,9 @@ RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
RenderVBOEnable 1 0
-RenderVBOMappingDisable 1 0
+RenderVBOMappingDisable 1 1
RenderVolumeLODFactor 1 2.0
-UseStartScreen 1 1
+UseStartScreen 1 1
UseOcclusion 1 1
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
--
cgit v1.3
From 54ba56dbe995a3d215f85932c83948145a871ac4 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Mon, 26 Sep 2011 18:31:55 -0500
Subject: SH-2244 changes to run in a core context on AMD hardware without
generating deprecation or performance warnings
---
indra/llrender/llgl.cpp | 2 +-
indra/llrender/llimagegl.cpp | 12 +++++--
indra/llrender/llvertexbuffer.cpp | 17 ++++-----
indra/llrender/llvertexbuffer.h | 2 +-
.../shaders/class1/environment/waterFogF.glsl | 7 ++--
indra/newview/lldrawpoolsky.cpp | 9 ++---
indra/newview/lldrawpoolwater.cpp | 2 ++
indra/newview/lldrawpoolwater.h | 1 +
indra/newview/llface.cpp | 6 ++--
indra/newview/llviewerdisplay.cpp | 5 +++
indra/newview/llvosky.cpp | 41 +++++++++++++++-------
indra/newview/llwaterparammanager.cpp | 1 +
12 files changed, 71 insertions(+), 34 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 59c63d8465..189a460001 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -650,7 +650,7 @@ bool LLGLManager::initGL()
if (LLRender::sGLCoreProfile)
{
- mNumTextureUnits = mNumTextureImageUnits;
+ mNumTextureUnits = llmin(mNumTextureImageUnits, MAX_GL_TEXTURE_UNITS);
}
else if (mHasMultitexture)
{
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 12089e5ad3..cbdb8f83f6 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -725,9 +725,12 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
}
else if (!is_compressed)
{
- if (mAutoGenMips && !LLRender::sGLCoreProfile) //auto-generating mipmaps is deprecated in GL 3.0
+ if (mAutoGenMips)
{
- glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_GENERATE_MIPMAP_SGIS, TRUE);
+ if (!glGenerateMipmap)
+ {
+ glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_GENERATE_MIPMAP_SGIS, TRUE);
+ }
stop_glerror();
{
// LLFastTimer t2(FTM_TEMP4);
@@ -756,6 +759,11 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
stop_glerror();
}
}
+
+ if (glGenerateMipmap)
+ {
+ glGenerateMipmap(LLTexUnit::getInternalType(mBindTarget));
+ }
}
else
{
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 1b7b0cdf3e..199699449a 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -34,6 +34,7 @@
#include "llmemtype.h"
#include "llrender.h"
#include "llvector4a.h"
+#include "llshadermgr.h"
#include "llglslshader.h"
#include "llmemory.h"
@@ -121,6 +122,7 @@ public:
};
+//NOTE: each component must be AT LEAST 4 bytes in size to avoid a performance penalty on AMD hardware
S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
{
sizeof(LLVector4), // TYPE_VERTEX,
@@ -130,7 +132,7 @@ S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
sizeof(LLVector2), // TYPE_TEXCOORD2,
sizeof(LLVector2), // TYPE_TEXCOORD3,
sizeof(LLColor4U), // TYPE_COLOR,
- sizeof(U8), // TYPE_EMISSIVE
+ sizeof(LLColor4U), // TYPE_EMISSIVE, only alpha is used currently
sizeof(LLVector4), // TYPE_BINORMAL,
sizeof(F32), // TYPE_WEIGHT,
sizeof(LLVector4), // TYPE_WEIGHT4,
@@ -1071,7 +1073,7 @@ void LLVertexBuffer::setupVertexArray()
2, //TYPE_TEXCOORD2,
2, //TYPE_TEXCOORD3,
4, //TYPE_COLOR,
- 1, //TYPE_EMISSIVE,
+ 4, //TYPE_EMISSIVE,
3, //TYPE_BINORMAL,
1, //TYPE_WEIGHT,
4, //TYPE_WEIGHT4,
@@ -1842,9 +1844,9 @@ bool LLVertexBuffer::getColorStrider(LLStrider& strider, S32 index, S
{
return VertexBufferStrider::get(*this, strider, index, count, map_range);
}
-bool LLVertexBuffer::getEmissiveStrider(LLStrider& strider, S32 index, S32 count, bool map_range)
+bool LLVertexBuffer::getEmissiveStrider(LLStrider& strider, S32 index, S32 count, bool map_range)
{
- return VertexBufferStrider::get(*this, strider, index, count, map_range);
+ return VertexBufferStrider::get(*this, strider, index, count, map_range);
}
bool LLVertexBuffer::getWeightStrider(LLStrider& strider, S32 index, S32 count, bool map_range)
{
@@ -1994,18 +1996,17 @@ void LLVertexBuffer::setBuffer(U32 data_mask)
if (shader)
{
U32 required_mask = 0;
- for (U32 i = 0; i < LLVertexBuffer::TYPE_MAX; ++i)
+ for (U32 i = 0; i < LLVertexBuffer::TYPE_TEXTURE_INDEX; ++i)
{
if (shader->getAttribLocation(i) > -1)
{
U32 required = 1 << i;
if ((data_mask & required) == 0)
{
- llwarns << "Missing attribute: " << i << llendl;
+ llwarns << "Missing attribute: " << LLShaderMgr::instance()->mReservedAttribs[i] << llendl;
}
required_mask |= required;
-
}
}
@@ -2186,7 +2187,7 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask)
{
S32 loc = TYPE_EMISSIVE;
void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]);
- glVertexAttribPointerARB(loc, 1, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);
+ glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);
}
if (data_mask & MAP_WEIGHT)
{
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index d116a552fa..98cab8b162 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -228,7 +228,7 @@ public:
bool getNormalStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getBinormalStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getColorStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
- bool getEmissiveStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
+ bool getEmissiveStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getWeightStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getWeight4Strider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
bool getClothWeightStrider(LLStrider& strider, S32 index=0, S32 count = -1, bool map_range = false);
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
index e4db326bed..57b3a6d001 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
@@ -26,6 +26,9 @@
VARYING float fog_depth;
+uniform vec4 waterFogColor;
+uniform float waterFogEnd;
+
vec4 applyWaterFog(vec4 color)
{
// GL_EXP2 Fog
@@ -33,9 +36,9 @@ vec4 applyWaterFog(vec4 color)
// GL_EXP Fog
// float fog = exp(-gl_Fog.density * fog_depth);
// GL_LINEAR Fog
- float fog = (gl_Fog.end - fog_depth) * gl_Fog.scale;
+ float fog = (waterFogEnd - fog_depth) * gl_Fog.scale;
fog = clamp(fog, 0.0, 1.0);
- color.rgb = mix(gl_Fog.color.rgb, color.rgb, fog);
+ color.rgb = mix(waterFogColor.rgb, color.rgb, fog);
return color;
}
diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp
index 8a3871b6b4..7f7d9f65c6 100644
--- a/indra/newview/lldrawpoolsky.cpp
+++ b/indra/newview/lldrawpoolsky.cpp
@@ -76,13 +76,14 @@ void LLDrawPoolSky::render(S32 pass)
return;
}
- // use a shader only underwater
+ // don't render sky under water (background just gets cleared to fog color)
if(mVertexShaderLevel > 0 && LLPipeline::sUnderWaterRender)
{
- mShader = &gObjectFullbrightWaterProgram;
- mShader->bind();
+ return;
}
- else if (LLGLSLShader::sNoFixedFunction)
+
+
+ if (LLGLSLShader::sNoFixedFunction)
{ //just use the UI shader (generic single texture no lighting)
gOneTextureNoColorProgram.bind();
}
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 5de0b8c796..f6fe96877d 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -59,6 +59,8 @@ BOOL LLDrawPoolWater::sSkipScreenCopy = FALSE;
BOOL LLDrawPoolWater::sNeedsReflectionUpdate = TRUE;
BOOL LLDrawPoolWater::sNeedsDistortionUpdate = TRUE;
LLColor4 LLDrawPoolWater::sWaterFogColor = LLColor4(0.2f, 0.5f, 0.5f, 0.f);
+F32 LLDrawPoolWater::sWaterFogEnd = 0.f;
+
LLVector3 LLDrawPoolWater::sLightDir;
LLDrawPoolWater::LLDrawPoolWater() :
diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h
index 99b541ca5a..aeeba179d6 100644
--- a/indra/newview/lldrawpoolwater.h
+++ b/indra/newview/lldrawpoolwater.h
@@ -49,6 +49,7 @@ public:
static LLVector3 sLightDir;
static LLColor4 sWaterFogColor;
+ static F32 sWaterFogEnd;
enum
{
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index d36379b0e7..36b88ebbd4 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1764,7 +1764,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (rebuild_emissive)
{
LLFastTimer t(FTM_FACE_GEOM_EMISSIVE);
- LLStrider emissive;
+ LLStrider emissive;
mVertexBuffer->getEmissiveStrider(emissive, mGeomIndex, mGeomCount, map_range);
U8 glow = (U8) llclamp((S32) (getTextureEntry()->getGlow()*255), 0, 255);
@@ -1783,8 +1783,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
src.loadua((F32*) vec);
LLVector4a* dst = (LLVector4a*) emissive.get();
- S32 num_vecs = num_vertices/16;
- if (num_vertices%16 > 0)
+ S32 num_vecs = num_vertices/4;
+ if (num_vertices%4 > 0)
{
++num_vecs;
}
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 4f3127805f..efe93b7f48 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -865,6 +865,11 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
else
{
gPipeline.mScreen.bindTarget();
+ if (LLPipeline::sUnderWaterRender && !gPipeline.canUseWindLightShaders())
+ {
+ const LLColor4 &col = LLDrawPoolWater::sWaterFogColor;
+ glClearColor(col.mV[0], col.mV[1], col.mV[2], 0.f);
+ }
gPipeline.mScreen.clear();
}
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index d90c3be6c7..e9db37821b 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -2040,9 +2040,12 @@ void LLVOSky::updateFog(const F32 distance)
{
if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FOG))
{
- glFogf(GL_FOG_DENSITY, 0);
- glFogfv(GL_FOG_COLOR, (F32 *) &LLColor4::white.mV);
- glFogf(GL_FOG_END, 1000000.f);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogf(GL_FOG_DENSITY, 0);
+ glFogfv(GL_FOG_COLOR, (F32 *) &LLColor4::white.mV);
+ glFogf(GL_FOG_END, 1000000.f);
+ }
return;
}
@@ -2112,7 +2115,10 @@ void LLVOSky::updateFog(const F32 distance)
if (camera_height > water_height)
{
LLColor4 fog(render_fog_color);
- glFogfv(GL_FOG_COLOR, fog.mV);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogfv(GL_FOG_COLOR, fog.mV);
+ }
mGLFogCol = fog;
if (hide_clip_plane)
@@ -2120,13 +2126,19 @@ void LLVOSky::updateFog(const F32 distance)
// For now, set the density to extend to the cull distance.
const F32 f_log = 2.14596602628934723963618357029f; // sqrt(fabs(log(0.01f)))
fog_density = f_log/fog_distance;
- glFogi(GL_FOG_MODE, GL_EXP2);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogi(GL_FOG_MODE, GL_EXP2);
+ }
}
else
{
const F32 f_log = 4.6051701859880913680359829093687f; // fabs(log(0.01f))
fog_density = (f_log)/fog_distance;
- glFogi(GL_FOG_MODE, GL_EXP);
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogi(GL_FOG_MODE, GL_EXP);
+ }
}
}
else
@@ -2146,24 +2158,27 @@ void LLVOSky::updateFog(const F32 distance)
fogCol.setAlpha(1);
// set the gl fog color
- glFogfv(GL_FOG_COLOR, (F32 *) &fogCol.mV);
mGLFogCol = fogCol;
// set the density based on what the shaders use
fog_density = water_fog_density * gSavedSettings.getF32("WaterGLFogDensityScale");
- glFogi(GL_FOG_MODE, GL_EXP2);
+
+ if (!LLGLSLShader::sNoFixedFunction)
+ {
+ glFogfv(GL_FOG_COLOR, (F32 *) &fogCol.mV);
+ glFogi(GL_FOG_MODE, GL_EXP2);
+ }
}
mFogColor = sky_fog_color;
mFogColor.setAlpha(1);
- LLGLSFog gls_fog;
-
- glFogf(GL_FOG_END, fog_distance*2.2f);
-
- glFogf(GL_FOG_DENSITY, fog_density);
+ LLDrawPoolWater::sWaterFogEnd = fog_distance*2.2f;
if (!LLGLSLShader::sNoFixedFunction)
{
+ LLGLSFog gls_fog;
+ glFogf(GL_FOG_END, fog_distance*2.2f);
+ glFogf(GL_FOG_DENSITY, fog_density);
glHint(GL_FOG_HINT, GL_NICEST);
}
stop_glerror();
diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp
index 1a98d4c6c2..20b34637b8 100644
--- a/indra/newview/llwaterparammanager.cpp
+++ b/indra/newview/llwaterparammanager.cpp
@@ -190,6 +190,7 @@ void LLWaterParamManager::updateShaderUniforms(LLGLSLShader * shader)
shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, LLWLParamManager::getInstance()->getRotatedLightDir().mV);
shader->uniform3fv("camPosLocal", 1, LLViewerCamera::getInstance()->getOrigin().mV);
shader->uniform4fv("waterFogColor", 1, LLDrawPoolWater::sWaterFogColor.mV);
+ shader->uniform1f("waterFogEnd", LLDrawPoolWater::sWaterFogEnd);
shader->uniform4fv("waterPlane", 1, mWaterPlane.mV);
shader->uniform1f("waterFogDensity", getFogDensity());
shader->uniform1f("waterFogKS", mWaterFogKS);
--
cgit v1.3
From a465f816b8e7674aa3f22023d7708106ca35b350 Mon Sep 17 00:00:00 2001
From: Richard Nelson
Date: Mon, 26 Sep 2011 17:36:07 -0700
Subject: EXP-1239 FIX make toolbars wrap when there is not enough room
toolbars resize to fit buttons toolbar view uses layout stacks to organize
toolbars reviewed by Leslie
---
indra/llui/llcommandmanager.cpp | 2 +-
indra/llui/lldockcontrol.cpp | 3 +-
indra/llui/lltoolbar.cpp | 27 ++--
indra/llui/lltoolbarview.cpp | 3 -
indra/newview/llviewerwindow.cpp | 1 +
.../skins/default/xui/en/panel_toolbar_view.xml | 146 ++++++++++++++-------
.../skins/default/xui/en/widgets/toolbar.xml | 3 +-
7 files changed, 114 insertions(+), 71 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 6be616b980..071ab24cda 100644
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -109,7 +109,7 @@ void LLCommandManager::addCommand(LLCommand * command)
mCommandIndices[command->name()] = mCommands.size();
mCommands.push_back(command);
- llinfos << "Successfully added command: " << command->name() << llendl;
+ lldebugs << "Successfully added command: " << command->name() << llendl;
}
//static
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index b1c27126d9..6e39fcd714 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -97,6 +97,7 @@ void LLDockControl::getAllowedRect(LLRect& rect)
void LLDockControl::repositionDockable()
{
+ if (!mDockWidget) return;
LLRect dockRect = mDockWidget->calcScreenRect();
LLRect rootRect;
mGetAllowedRectCallback(rootRect);
@@ -160,7 +161,7 @@ bool LLDockControl::isDockVisible()
case TOP:
{
// check is dock inside parent rect
- // assume that parent for all dockable flaoters
+ // assume that parent for all dockable floaters
// is the root view
LLRect dockParentRect =
mDockWidget->getRootView()->calcScreenRect();
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 31a18dc707..90ade136e8 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -122,6 +122,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
centering_stack_p.rect = getLocalRect();
centering_stack_p.follows.flags = FOLLOWS_ALL;
centering_stack_p.orientation = orientation;
+ centering_stack_p.mouse_opaque = false;
mCenteringStack = LLUICtrlFactory::create(centering_stack_p);
addChild(mCenteringStack);
@@ -131,6 +132,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
border_panel_p.rect = getLocalRect();
border_panel_p.auto_resize = true;
border_panel_p.user_resize = false;
+ border_panel_p.mouse_opaque = false;
mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
@@ -145,21 +147,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
LLPanel::Params button_panel_p(p.button_panel);
button_panel_p.rect = center_panel->getLocalRect();
- switch(p.side())
- {
- case SIDE_LEFT:
- button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
- break;
- case SIDE_RIGHT:
- button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_RIGHT;
- break;
- case SIDE_TOP:
- button_panel_p.follows.flags = FOLLOWS_TOP|FOLLOWS_LEFT;
- break;
- case SIDE_BOTTOM:
- button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
- break;
- }
+ button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
mButtonPanel = LLUICtrlFactory::create(button_panel_p);
center_panel->addChild(mButtonPanel);
@@ -329,19 +317,22 @@ void LLToolBar::updateLayoutAsNeeded()
{
if (mSideType == SIDE_TOP)
{ // shift down to maintain top edge
- mButtonPanel->translate(0, mButtonPanel->getRect().getHeight() - total_girth);
+ translate(0, getRect().getHeight() - total_girth);
}
+ reshape(getRect().getWidth(), total_girth);
mButtonPanel->reshape(max_row_length, total_girth);
}
else // VERTICAL
{
if (mSideType == SIDE_RIGHT)
{ // shift left to maintain right edge
- mButtonPanel->translate(mButtonPanel->getRect().getWidth() - total_girth, 0);
+ translate(getRect().getWidth() - total_girth, 0);
}
+
+ reshape(total_girth, getRect().getHeight());
mButtonPanel->reshape(total_girth, max_row_length);
- }
+ }
// re-center toolbar buttons
mCenteringStack->updateLayout();
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index c99b573b35..27d67184d8 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -60,12 +60,10 @@ void LLToolBarView::draw()
LLToolBar* toolbar_bottom = getChild("toolbar_bottom");
LLToolBar* toolbar_left = getChild("toolbar_left");
LLToolBar* toolbar_right = getChild("toolbar_right");
- LLPanel* sizer_left = getChild("sizer_left");
LLRect bottom_rect = toolbar_bottom->getRect();
LLRect left_rect = toolbar_left->getRect();
LLRect right_rect = toolbar_right->getRect();
- LLRect sizer_left_rect = sizer_left->getRect();
if ((old_width != getRect().getWidth()) || (old_height != getRect().getHeight()))
debug_print = true;
@@ -76,7 +74,6 @@ void LLToolBarView::draw()
llinfos << "Merov debug : draw bottom rect = " << bottom_rect.mLeft << ", " << bottom_rect.mTop << ", " << bottom_rect.mRight << ", " << bottom_rect.mBottom << llendl;
llinfos << "Merov debug : draw left rect = " << left_rect.mLeft << ", " << left_rect.mTop << ", " << left_rect.mRight << ", " << left_rect.mBottom << llendl;
llinfos << "Merov debug : draw right rect = " << right_rect.mLeft << ", " << right_rect.mTop << ", " << right_rect.mRight << ", " << right_rect.mBottom << llendl;
- llinfos << "Merov debug : draw s left rect = " << sizer_left_rect.mLeft << ", " << sizer_left_rect.mTop << ", " << sizer_left_rect.mRight << ", " << sizer_left_rect.mBottom << llendl;
old_width = ctrl_rect.getWidth();
old_height = ctrl_rect.getHeight();
debug_print = false;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 947f0ec184..4a20be63f6 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1787,6 +1787,7 @@ void LLViewerWindow::initBase()
LLPanel* panel_holder = main_view->getChild("toolbar_view_holder");
// Load the toolbar view from file
gToolBarView = LLUICtrlFactory::getInstance()->createFromFile("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
+ gToolBarView->setShape(panel_holder->getLocalRect());
// Attach it to the toolbar view holder
//panel_holder->addChild(gToolBarView);
}
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index 6701266887..b24f5c3347 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -10,51 +10,103 @@
mouse_opaque="false"
tab_stop="false"
visible="true">
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 45210277b2..69fd6f569c 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -4,7 +4,8 @@
pad_right="5"
pad_top="5"
pad_bottom="5"
- pad_between="5">
+ pad_between="5"
+ mouse_opaque="false">
Date: Mon, 26 Sep 2011 17:38:10 -0700
Subject: EXP-1205 PROGRESS -- As a User, I want a toybox which will contain
all buttons that I can d&d into the toolbars
* Command buttons are now enabled/disabled in toybox based on whether or not the
LLToolBarView has them anywhere.
* Commands now have argument to specify whether or not they should be in the
toybox.
* LLCommandId is now used a universal reference for commands.
Reviewed by Richard.
---
indra/llui/llcommandmanager.cpp | 24 +++++---
indra/llui/llcommandmanager.h | 50 +++++++++++++--
indra/llui/lltoolbar.cpp | 71 +++++++++++++++-------
indra/llui/lltoolbar.h | 11 ++--
indra/llui/lltoolbarview.cpp | 8 +--
indra/llui/lltoolbarview.h | 3 +-
indra/newview/app_settings/commands.xml | 23 ++++++-
indra/newview/llfloatertoybox.cpp | 9 ++-
.../skins/default/xui/en/floater_toybox.xml | 21 ++++---
9 files changed, 167 insertions(+), 53 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 6be616b980..62e1d186f5 100644
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -37,12 +37,19 @@
#include
+//
+// LLCommandId class
+//
+
+const LLCommandId LLCommandId::null("null command");
+
//
// LLCommand class
//
LLCommand::Params::Params()
: function("function")
+ , available_in_toybox("available_in_toybox", false)
, icon("icon")
, label_ref("label_ref")
, name("name")
@@ -53,9 +60,10 @@ LLCommand::Params::Params()
LLCommand::LLCommand(const LLCommand::Params& p)
: mFunction(p.function)
+ , mAvailableInToybox(p.available_in_toybox)
, mIcon(p.icon)
+ , mIdentifier(p.name)
, mLabelRef(p.label_ref)
- , mName(p.name)
, mParam(p.param)
, mTooltipRef(p.tooltip_ref)
{
@@ -90,26 +98,26 @@ LLCommand * LLCommandManager::getCommand(U32 commandIndex)
return mCommands[commandIndex];
}
-LLCommand * LLCommandManager::getCommand(const std::string& commandName)
+LLCommand * LLCommandManager::getCommand(const LLCommandId& commandId)
{
- LLCommand * command_name_match = NULL;
+ LLCommand * command_match = NULL;
- CommandIndexMap::const_iterator found = mCommandIndices.find(commandName);
+ CommandIndexMap::const_iterator found = mCommandIndices.find(commandId);
if (found != mCommandIndices.end())
{
- command_name_match = mCommands[found->second];
+ command_match = mCommands[found->second];
}
- return command_name_match;
+ return command_match;
}
void LLCommandManager::addCommand(LLCommand * command)
{
- mCommandIndices[command->name()] = mCommands.size();
+ mCommandIndices[command->id()] = mCommands.size();
mCommands.push_back(command);
- llinfos << "Successfully added command: " << command->name() << llendl;
+ llinfos << "Successfully added command: " << command->id().name() << llendl;
}
//static
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 24378ecd62..5b53b65500 100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -31,11 +31,50 @@
#include "llsingleton.h"
+class LLCommand;
+class LLCommandManager;
+
+
+class LLCommandId
+{
+public:
+ friend LLCommand;
+ friend LLCommandManager;
+
+ LLCommandId(const std::string& name)
+ : mName(name)
+ {
+ }
+
+ const std::string& name() const { return mName; }
+
+ bool operator!=(const LLCommandId& command) const
+ {
+ return (mName != command.mName);
+ }
+
+ bool operator==(const LLCommandId& command) const
+ {
+ return (mName == command.mName);
+ }
+
+ bool operator<(const LLCommandId& command) const
+ {
+ return (mName < command.mName);
+ }
+
+ static const LLCommandId null;
+
+private:
+ std::string mName;
+};
+
class LLCommand
{
public:
struct Params : public LLInitParam::Block
{
+ Mandatory available_in_toybox;
Mandatory function;
Mandatory icon;
Mandatory label_ref;
@@ -48,18 +87,21 @@ public:
LLCommand(const LLCommand::Params& p);
+ const bool availableInToybox() const { return mAvailableInToybox; }
const std::string& functionName() const { return mFunction; }
const std::string& icon() const { return mIcon; }
+ const LLCommandId& id() const { return mIdentifier; }
const std::string& labelRef() const { return mLabelRef; }
- const std::string& name() const { return mName; }
const std::string& param() const { return mParam; }
const std::string& tooltipRef() const { return mTooltipRef; }
private:
+ LLCommandId mIdentifier;
+
+ bool mAvailableInToybox;
std::string mFunction;
std::string mIcon;
std::string mLabelRef;
- std::string mName;
std::string mParam;
std::string mTooltipRef;
};
@@ -84,7 +126,7 @@ public:
U32 commandCount() const;
LLCommand * getCommand(U32 commandIndex);
- LLCommand * getCommand(const std::string& commandName);
+ LLCommand * getCommand(const LLCommandId& commandId);
static bool load();
@@ -92,7 +134,7 @@ protected:
void addCommand(LLCommand * command);
private:
- typedef std::map CommandIndexMap;
+ typedef std::map CommandIndexMap;
typedef std::vector CommandVector;
CommandVector mCommands;
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 5802d2adda..1e1cb16fbb 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -30,7 +30,6 @@
#include
#include "lltoolbar.h"
-#include "llcommandmanager.h"
#include "llmenugl.h"
#include "lltrans.h"
@@ -212,48 +211,79 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
LLToolBarButton* buttonp = LLUICtrlFactory::create(button_p);
mButtons.push_back(buttonp);
+ mButtonCommands.push_back(LLCommandId::null);
mButtonPanel->addChild(buttonp);
mNeedsLayout = true;
}
}
-bool LLToolBar::addCommand(LLCommand * command)
+bool LLToolBar::addCommand(const LLCommandId& commandId)
{
+ LLCommand * command = LLCommandManager::instance().getCommand(commandId);
+
+ bool add_command = (command != NULL);
+
//
// Init basic toolbar button params
//
- LLToolBarButton::Params button_p(mButtonParams[mButtonType]);
- button_p.name = command->name();
- button_p.label = LLTrans::getString(command->labelRef());
- button_p.tool_tip = LLTrans::getString(command->tooltipRef());
+ if (add_command)
+ {
+ LLToolBarButton::Params button_p(mButtonParams[mButtonType]);
+ button_p.name = commandId.name();
+ button_p.label = LLTrans::getString(command->labelRef());
+ button_p.tool_tip = LLTrans::getString(command->tooltipRef());
- //
- // Add it to the list of buttons
- //
- LLToolBarButton * toolbar_button = LLUICtrlFactory::create(button_p);
- mButtons.push_back(toolbar_button);
- mButtonPanel->addChild(toolbar_button);
+ //
+ // Add it to the list of buttons
+ //
+ LLToolBarButton * toolbar_button = LLUICtrlFactory::create(button_p);
+ mButtons.push_back(toolbar_button);
+ mButtonCommands.push_back(commandId);
+ mButtonPanel->addChild(toolbar_button);
- mNeedsLayout = true;
+ mNeedsLayout = true;
+ }
- return true;
+ return add_command;
}
-bool LLToolBar::hasCommand(const std::string& command_name)
+bool LLToolBar::hasCommand(const LLCommandId& commandId) const
{
bool has_command = false;
- for (std::list::iterator cmd = mButtons.begin(); cmd != mButtons.end(); cmd++)
+
+ if (commandId != LLCommandId::null)
{
- if ((*cmd)->getName() == command_name)
+ for (std::list::const_iterator cmd = mButtonCommands.begin(); cmd != mButtonCommands.end(); ++cmd)
{
- has_command = true;
- break;
+ if ((*cmd) == commandId)
+ {
+ has_command = true;
+ break;
+ }
}
}
+
return has_command;
}
+bool LLToolBar::enableCommand(const LLCommandId& commandId, bool enabled)
+{
+ LLButton * command_button = NULL;
+
+ if (commandId != LLCommandId::null)
+ {
+ command_button = mButtonPanel->findChild(commandId.name());
+
+ if (command_button)
+ {
+ command_button->setEnabled(enabled);
+ }
+ }
+
+ return (command_button != NULL);
+}
+
BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
BOOL handle_it_here = !mReadOnly;
@@ -351,7 +381,6 @@ void LLToolBar::updateLayoutAsNeeded()
max_length = getRect().getWidth() - mPadLeft - mPadRight;
max_total_girth = getRect().getHeight() - mPadTop - mPadBottom;
row_pad_start = mPadLeft;
- row_running_length = row_pad_start;
row_pad_end = mPadRight;
cur_row = mPadTop;
girth_pad_end = mPadBottom;
@@ -361,12 +390,12 @@ void LLToolBar::updateLayoutAsNeeded()
max_length = getRect().getHeight() - mPadTop - mPadBottom;
max_total_girth = getRect().getWidth() - mPadLeft - mPadRight;
row_pad_start = mPadTop;
- row_running_length = row_pad_start;
row_pad_end = mPadBottom;
cur_row = mPadLeft;
girth_pad_end = mPadRight;
}
+ row_running_length = row_pad_start;
cur_start = row_pad_start;
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 00e6ed131a..f7562b29d2 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -28,9 +28,10 @@
#ifndef LL_LLTOOLBAR_H
#define LL_LLTOOLBAR_H
-#include "lluictrl.h"
-#include "lllayoutstack.h"
#include "llbutton.h"
+#include "llcommandmanager.h"
+#include "lllayoutstack.h"
+#include "lluictrl.h"
class LLCommand;
@@ -121,8 +122,9 @@ public:
BOOL postBuild();
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
- bool addCommand(LLCommand * command);
- bool hasCommand(const std::string& command_name);
+ bool addCommand(const LLCommandId& commandId);
+ bool hasCommand(const LLCommandId& commandId) const;
+ bool enableCommand(const LLCommandId& commandId, bool enabled);
protected:
friend class LLUICtrlFactory;
@@ -142,6 +144,7 @@ private:
const bool mReadOnly;
std::list mButtons;
+ std::list mButtonCommands;
LLToolBarEnums::ButtonType mButtonType;
LLLayoutStack* mCenteringStack;
LLLayoutStack* mWrapStack;
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 3b4960fdd5..6c29e566b8 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -62,20 +62,20 @@ BOOL LLToolBarView::postBuild()
return TRUE;
}
-bool LLToolBarView::hasCommand(const std::string& command_name)
+bool LLToolBarView::hasCommand(const LLCommandId& commandId) const
{
bool has_command = false;
if (mToolbarLeft && !has_command)
{
- has_command = mToolbarLeft->hasCommand(command_name);
+ has_command = mToolbarLeft->hasCommand(commandId);
}
if (mToolbarRight && !has_command)
{
- has_command = mToolbarRight->hasCommand(command_name);
+ has_command = mToolbarRight->hasCommand(commandId);
}
if (mToolbarBottom && !has_command)
{
- has_command = mToolbarBottom->hasCommand(command_name);
+ has_command = mToolbarBottom->hasCommand(commandId);
}
return has_command;
}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index 65d339315b..2e7885f391 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -30,6 +30,7 @@
#include "lluictrl.h"
#include "lltoolbar.h"
+#include "llcommandmanager.h"
class LLUICtrlFactory;
@@ -45,7 +46,7 @@ public:
virtual void draw();
- bool hasCommand(const std::string& command_name);
+ bool hasCommand(const LLCommandId& commandId) const;
// valid children for LLToolBarView are stored in this registry
typedef LLDefaultChildRegistry child_registry_t;
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index dbb0e8b7ca..4a33b24075 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -1,6 +1,7 @@
-
addCommand(command);
+ if (command->availableInToybox())
+ {
+ mToolBar->addCommand(command->id());
+
+ llassert(gToolBarView != NULL);
+ mToolBar->enableCommand(command->id(), !gToolBarView->hasCommand(command->id()));
+ }
}
return TRUE;
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index 1c9f20c496..60a39b0bff 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -14,17 +14,17 @@
save_rect="true"
single_instance="true"
title="Customize toolbars"
- width="658">
+ width="650">
Add or remove buttons by dragging them to or from the toolbars.
@@ -35,10 +35,10 @@
halign="left"
height="20"
layout="topleft"
- left="40"
+ left="20"
length="1"
name="toybox label 2"
- right="-40"
+ right="-20"
top="55"
type="string">
Buttons will appear as shown or as icon-only depending on each toolbar's settings.
@@ -46,12 +46,17 @@
@@ -61,7 +66,7 @@
label="Restore defaults"
label_selected="Restore defaults"
layout="topleft"
- left="40"
+ left="20"
name="btn_restore_defaults"
top="415"
width="130">
--
cgit v1.3
From 328cf0d1c71efa785b0f1201c27776a3a6d6a041 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Mon, 26 Sep 2011 20:00:38 -0500
Subject: Merge cleanup
---
indra/newview/lldrawpoolavatar.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 6acc195889..d9b0b195f5 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -1277,9 +1277,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
S32 num_verts = (vol_face.mNumVertices + 0xF) & ~0xF;
if (buffer.isNull() ||
-
buffer->getTypeMask() != data_mask ||
- buffer->getRequestedVerts() != num_verts)
+ buffer->getRequestedVerts() != num_verts ||
buffer->getRequestedIndices() != vol_face.mNumIndices ||
(drawable && drawable->isState(LLDrawable::REBUILD_ALL)))
{
--
cgit v1.3
From 7fd0e8c69e6dced4a770da4fac10c154eac5899f Mon Sep 17 00:00:00 2001
From: Richard Nelson
Date: Mon, 26 Sep 2011 18:51:43 -0700
Subject: fixed toolbar context menu deprecated pointless
LLView::deleteViewByHandle
---
indra/llui/llmenugl.cpp | 2 +-
indra/llui/lltoolbar.cpp | 18 +++++++-----------
indra/llui/lltoolbar.h | 11 +++++------
indra/llui/lltoolbarview.cpp | 6 +++---
indra/llui/llview.cpp | 7 -------
indra/llui/llview.h | 1 -
indra/newview/llfavoritesbar.cpp | 4 ++--
indra/newview/llfloatersnapshot.cpp | 2 +-
indra/newview/llfolderview.cpp | 4 ++--
indra/newview/llgrouplist.cpp | 2 +-
indra/newview/llpanelpeople.cpp | 10 +++++-----
indra/newview/llpanelteleporthistory.cpp | 2 +-
indra/newview/skins/default/xui/en/menu_toolbars.xml | 4 ++--
indra/newview/skins/default/xui/en/widgets/toolbar.xml | 1 -
14 files changed, 30 insertions(+), 44 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 6cac841cde..badba7a416 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -947,7 +947,7 @@ LLMenuItemBranchGL::LLMenuItemBranchGL(const LLMenuItemBranchGL::Params& p)
LLMenuItemBranchGL::~LLMenuItemBranchGL()
{
- LLView::deleteViewByHandle(mBranchHandle);
+ delete mBranchHandle.get();
}
// virtual
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 278c04aef8..bd45cf4656 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -116,12 +116,12 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p)
LLToolBar::~LLToolBar()
{
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
}
-BOOL LLToolBar::postBuild()
+void LLToolBar::createContextMenu()
{
- if (!mReadOnly)
+ if (!mPopupMenuHandle.get())
{
LLUICtrl::CommitCallbackRegistry::Registrar& commit_reg = LLUICtrl::CommitCallbackRegistry::defaultRegistrar();
commit_reg.add("Toolbars.EnableSetting", boost::bind(&LLToolBar::onSettingEnable, this, _2));
@@ -129,11 +129,7 @@ BOOL LLToolBar::postBuild()
LLUICtrl::EnableCallbackRegistry::Registrar& enable_reg = LLUICtrl::EnableCallbackRegistry::defaultRegistrar();
enable_reg.add("Toolbars.CheckSetting", boost::bind(&LLToolBar::isSettingChecked, this, _2));
- //
- // Setup the context menu
- //
-
- LLMenuGL* menu = LLUICtrlFactory::instance().createFromFile("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
+ LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
if (menu)
{
@@ -146,8 +142,6 @@ BOOL LLToolBar::postBuild()
llwarns << "Unable to load toolbars context menu." << llendl;
}
}
-
- return TRUE;
}
void LLToolBar::initFromParams(const LLToolBar::Params& p)
@@ -278,10 +272,12 @@ BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
if (handle_it_here)
{
- LLMenuGL * menu = (LLMenuGL *) mPopupMenuHandle.get();
+ createContextMenu();
+ LLContextMenu * menu = (LLContextMenu *) mPopupMenuHandle.get();
if (menu)
{
+ menu->show(x, y);
LLMenuGL::showPopup(this, menu, x, y);
}
}
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index f7562b29d2..657e928319 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -119,8 +119,8 @@ public:
// virtuals
void draw();
- BOOL postBuild();
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
bool addCommand(const LLCommandId& commandId);
bool hasCommand(const LLCommandId& commandId) const;
@@ -133,13 +133,12 @@ protected:
void initFromParams(const Params&);
- BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
- BOOL isSettingChecked(const LLSD& userdata);
- void onSettingEnable(const LLSD& userdata);
-
private:
+ void createContextMenu();
void updateLayoutAsNeeded();
void resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth);
+ BOOL isSettingChecked(const LLSD& userdata);
+ void onSettingEnable(const LLSD& userdata);
const bool mReadOnly;
@@ -164,7 +163,7 @@ private:
LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
- LLHandle mPopupMenuHandle;
+ LLHandle mPopupMenuHandle;
};
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 21d3785c82..6ae10fbf1d 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -90,9 +90,9 @@ void LLToolBarView::draw()
LLRect bottom_rect, left_rect, right_rect;
- if (mToolbarBottom) bottom_rect = mToolbarBottom->getRect();
- if (mToolbarLeft) left_rect = mToolbarLeft->getRect();
- if (mToolbarRight) right_rect = mToolbarRight->getRect();
+ if (mToolbarBottom) mToolbarBottom->localRectToOtherView(mToolbarBottom->getLocalRect(), &bottom_rect, this);
+ if (mToolbarLeft) mToolbarLeft->localRectToOtherView(mToolbarLeft->getLocalRect(), &left_rect, this);
+ if (mToolbarRight) mToolbarRight->localRectToOtherView(mToolbarRight->getLocalRect(), &right_rect, this);
if ((old_width != getRect().getWidth()) || (old_height != getRect().getHeight()))
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 60452b9ae4..e10c2f0d1e 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1826,13 +1826,6 @@ LLView* LLView::findNextSibling(LLView* child)
return (next_it != mChildList.end()) ? *next_it : NULL;
}
-void LLView::deleteViewByHandle(LLHandle handle)
-{
- LLView* viewp = handle.get();
-
- delete viewp;
-}
-
LLCoordGL getNeededTranslation(const LLRect& input, const LLRect& constraint, BOOL allow_partial_outside)
{
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index 594a5eec6b..7a1b2e4ba0 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -482,7 +482,6 @@ public:
// return query for iterating over focus roots in tab order
static const LLCtrlQuery & getFocusRootsQuery();
- static void deleteViewByHandle(LLHandle handle);
static LLWindow* getWindow(void) { return LLUI::sWindow; }
// Set up params after XML load before calling new(),
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 0b17d64eb0..836c580ea8 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -403,8 +403,8 @@ LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
{
gInventory.removeObserver(this);
- LLView::deleteViewByHandle(mOverflowMenuHandle);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mOverflowMenuHandle.get();
+ delete mContextMenuHandle.get();
}
BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 00dc7b1627..9d020517d8 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2112,7 +2112,7 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
// Destroys the object
LLFloaterSnapshot::~LLFloaterSnapshot()
{
- LLView::deleteViewByHandle(impl.mPreviewHandle);
+ delete impl.mPreviewHandle.get();
//unfreeze everything else
gSavedSettings.setBOOL("FreezeTime", FALSE);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 9ba5f827e2..6ec2598e44 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -299,7 +299,7 @@ LLFolderView::~LLFolderView( void )
mAutoOpenItems.removeAllNodes();
gIdleCallbacks.deleteFunction(idle, this);
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mAutoOpenItems.removeAllNodes();
clearSelection();
@@ -1969,7 +1969,7 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFolderView::deleteAllChildren()
{
closeRenamer();
- LLView::deleteViewByHandle(mPopupMenuHandle);
+ delete mPopupMenuHandle.get();
mPopupMenuHandle = LLHandle();
mScrollContainer = NULL;
mRenameItem = NULL;
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index c3e6e1c2dc..f7ed1116cb 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -95,7 +95,7 @@ LLGroupList::LLGroupList(const Params& p)
LLGroupList::~LLGroupList()
{
gAgent.removeListener(this);
- LLView::deleteViewByHandle(mContextMenuHandle);
+ delete mContextMenuHandle.get();
}
// virtual
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e3a7b749ea..177aa4f5c8 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -526,11 +526,11 @@ LLPanelPeople::~LLPanelPeople()
LLVoiceClient::getInstance()->removeObserver(this);
}
- LLView::deleteViewByHandle(mGroupPlusMenuHandle);
- LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
- LLView::deleteViewByHandle(mFriendsViewSortMenuHandle);
- LLView::deleteViewByHandle(mGroupsViewSortMenuHandle);
- LLView::deleteViewByHandle(mRecentViewSortMenuHandle);
+ delete mGroupPlusMenuHandle.get();
+ delete mNearbyViewSortMenuHandle.get();
+ delete mFriendsViewSortMenuHandle.get();
+ delete mGroupsViewSortMenuHandle.get();
+ delete mRecentViewSortMenuHandle.get();
}
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 9b35e78134..dfa8c75493 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -388,7 +388,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
LLTeleportHistoryPanel::~LLTeleportHistoryPanel()
{
LLTeleportHistoryFlatItemStorage::instance().purge();
- LLView::deleteViewByHandle(mGearMenuHandle);
+ delete mGearMenuHandle.get();
}
BOOL LLTeleportHistoryPanel::postBuild()
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
index b3ecd3dcb6..de13fec670 100644
--- a/indra/newview/skins/default/xui/en/menu_toolbars.xml
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -1,5 +1,5 @@
-
@@ -26,4 +26,4 @@
-
+
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 95ccc6e92c..29b5d02299 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -7,7 +7,6 @@
pad_between="5"
mouse_opaque="false"
read_only="false">
-
Date: Mon, 26 Sep 2011 19:48:17 -0700
Subject: initial support for switching between icons only and icons + text
---
indra/llui/llcommandmanager.h | 16 ++++-
indra/llui/lltoolbar.cpp | 79 ++++++++++++----------
indra/llui/lltoolbar.h | 7 +-
indra/newview/skins/default/textures/textures.xml | 23 +++++++
.../skins/default/xui/en/floater_test_toolbar.xml | 38 ++++-------
.../skins/default/xui/en/panel_toolbar_view.xml | 25 +++----
.../skins/default/xui/en/widgets/toolbar.xml | 2 +
7 files changed, 106 insertions(+), 84 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 7ed8785f17..8435d915f3 100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -41,10 +41,22 @@ public:
friend class LLCommand;
friend class LLCommandManager;
+ struct Params : public LLInitParam::Block
+ {
+ Mandatory name;
+
+ Params()
+ : name("name")
+ {}
+ };
+
LLCommandId(const std::string& name)
: mName(name)
- {
- }
+ {}
+
+ LLCommandId(const Params& p)
+ : mName(p.name)
+ {}
const std::string& name() const { return mName; }
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index bd45cf4656..2fb9f249d4 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -74,7 +74,7 @@ namespace LLInitParam
LLToolBar::Params::Params()
: button_display_mode("button_display_mode"),
- buttons("button"),
+ commands("command"),
side("side", SIDE_TOP),
button_icon("button_icon"),
button_icon_and_text("button_icon_and_text"),
@@ -187,17 +187,13 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
- BOOST_FOREACH (LLToolBarButton::Params button_p, p.buttons)
+ BOOST_FOREACH (const LLCommandId::Params& command_id, p.commands)
{
- button_p.fillFrom(mButtonParams[mButtonType]);
- LLToolBarButton* buttonp = LLUICtrlFactory::create(button_p);
-
- mButtons.push_back(buttonp);
- mButtonCommands.push_back(LLCommandId::null);
- mButtonPanel->addChild(buttonp);
-
- mNeedsLayout = true;
+ mButtonCommands.push_back(command_id);
}
+ createButtons();
+
+ mNeedsLayout = true;
}
bool LLToolBar::addCommand(const LLCommandId& commandId)
@@ -206,26 +202,8 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)
bool add_command = (command != NULL);
- //
- // Init basic toolbar button params
- //
- if (add_command)
- {
- LLToolBarButton::Params button_p(mButtonParams[mButtonType]);
- button_p.name = commandId.name();
- button_p.label = LLTrans::getString(command->labelRef());
- button_p.tool_tip = LLTrans::getString(command->tooltipRef());
-
- //
- // Add it to the list of buttons
- //
- LLToolBarButton * toolbar_button = LLUICtrlFactory::create(button_p);
- mButtons.push_back(toolbar_button);
- mButtonCommands.push_back(commandId);
- mButtonPanel->addChild(toolbar_button);
-
- mNeedsLayout = true;
- }
+ mButtonCommands.push_back(commandId);
+ createButtons();
return add_command;
}
@@ -320,7 +298,10 @@ void LLToolBar::onSettingEnable(const LLSD& userdata)
mButtonType = BTNTYPE_ICONS_ONLY;
}
- mNeedsLayout |= (current_button_type != mButtonType);
+ if(current_button_type != mButtonType)
+ {
+ createButtons();
+ }
}
void LLToolBar::resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth)
@@ -387,8 +368,8 @@ void LLToolBar::updateLayoutAsNeeded()
std::vector buttons_in_row;
- BOOST_FOREACH(LLToolBarButton* button, mButtons)
- {
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
button->reshape(mMinButtonWidth, mButtonHeight);
button->autoResize();
@@ -421,8 +402,8 @@ void LLToolBar::updateLayoutAsNeeded()
max_row_girth = 0;
}
- LLRect button_rect;
- if (orientation == LLLayoutStack::HORIZONTAL)
+ LLRect button_rect;
+ if (orientation == LLLayoutStack::HORIZONTAL)
{
button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
}
@@ -467,7 +448,7 @@ void LLToolBar::updateLayoutAsNeeded()
reshape(total_girth, getRect().getHeight());
mButtonPanel->reshape(total_girth, max_row_length);
- }
+ }
// re-center toolbar buttons
mCenteringStack->updateLayout();
@@ -489,3 +470,29 @@ void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
mNeedsLayout = true;
}
+void LLToolBar::createButtons()
+{
+ BOOST_FOREACH(LLToolBarButton* button, mButtons)
+ {
+ delete button;
+ }
+ mButtons.clear();
+
+ BOOST_FOREACH(LLCommandId& command_id, mButtonCommands)
+ {
+ LLCommand* commandp = LLCommandManager::instance().getCommand(command_id);
+ if (!commandp) continue;
+
+ LLToolBarButton::Params button_p;
+ button_p.label = LLTrans::getString(commandp->labelRef());
+ button_p.image_overlay = LLUI::getUIImage(commandp->icon());
+ button_p.overwriteFrom(mButtonParams[mButtonType]);
+ LLToolBarButton* button = LLUICtrlFactory::create(button_p);
+
+ mButtons.push_back(button);
+ mButtonPanel->addChild(button);
+ }
+
+ mNeedsLayout = true;
+}
+
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 657e928319..75ae499a3d 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -32,9 +32,7 @@
#include "llcommandmanager.h"
#include "lllayoutstack.h"
#include "lluictrl.h"
-
-
-class LLCommand;
+#include "llcommandmanager.h"
class LLToolBarButton : public LLButton
@@ -110,7 +108,7 @@ public:
pad_bottom,
pad_between;
// get rid of this
- Multiple buttons;
+ Multiple commands;
Optional button_panel;
@@ -136,6 +134,7 @@ protected:
private:
void createContextMenu();
void updateLayoutAsNeeded();
+ void createButtons();
void resizeButtonsInRow(std::vector& buttons_in_row, S32 max_row_girth);
BOOL isSettingChecked(const LLSD& userdata);
void onSettingEnable(const LLSD& userdata);
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 8f2194e652..be68c2873e 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -759,4 +759,27 @@ with the same filename but different name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index b58c006b3f..fbfbe51a69 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -16,14 +16,9 @@
min_button_width="0"
max_button_width="100"
side="top">
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index b24f5c3347..23ea516b86 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -47,11 +47,9 @@
top="0"
side="left"
button_display_mode="icons_only">
-
-
-
-
-
+
+
+
-
-
-
-
-
+
+
+
@@ -100,12 +96,9 @@
follows="left|right|bottom"
button_display_mode="icons_with_text"
visible="true">
-
-
-
-
-
-
+
+
+
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 29b5d02299..32bc88cc9a 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -13,9 +13,11 @@
background_opaque="true"/>
--
cgit v1.3
From 795ae760e8b81a4e1b0ae4666d94d80919305189 Mon Sep 17 00:00:00 2001
From: Leyla Farazha
Date: Tue, 27 Sep 2011 10:12:48 -0700
Subject: adding missing xml file
---
.../skins/default/xui/en/floater_chat_bar.xml | 63 ++++++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 indra/newview/skins/default/xui/en/floater_chat_bar.xml
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
new file mode 100644
index 0000000000..d0059b281e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
--
cgit v1.3
From cb699e3f2d64999e9817d0c4df5b7f9484e8e722 Mon Sep 17 00:00:00 2001
From: Leyla Farazha
Date: Tue, 27 Sep 2011 10:52:47 -0700
Subject: EXP-1252 Opening chat history crashes browser (from dev work in
progress) EXP-1253 Entering text in chat bar does not show for other users
(dev work in progress)
---
indra/newview/llbottomtray.cpp | 6 +++---
indra/newview/llnearbychat.cpp | 39 +++++++--------------------------------
indra/newview/llnearbychat.h | 6 +++---
3 files changed, 13 insertions(+), 38 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 7a60903950..55c63edd74 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -400,7 +400,7 @@ void LLBottomTray::onMouselookModeOut()
{
mIsInLiteMode = false;
mBottomTrayLite->setVisible(FALSE);
- mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText());
+ //mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText());
setVisible(TRUE);
}
@@ -413,8 +413,8 @@ void LLBottomTray::onMouselookModeIn()
getParent()->addChild(mBottomTrayLite);
mBottomTrayLite->setShape(getLocalRect());
- mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText());
- mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton"));
+ //mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText());
+ //mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton"));
mIsInLiteMode = true;
}
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 361912a5cb..8d57ae3a32 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -58,7 +58,7 @@
static const S32 RESIZE_BAR_THICKNESS = 3;
LLNearbyChat::LLNearbyChat(const LLSD& key)
- : LLDockableFloater(NULL, false, false, key)
+ : LLFloater(key)
,mChatHistory(NULL)
{
@@ -86,20 +86,9 @@ BOOL LLNearbyChat::postBuild()
mChatHistory = getChild("chat_history");
- if(!LLDockableFloater::postBuild())
+ if(!LLFloater::postBuild())
return false;
- if (getDockControl() == NULL)
- {
- setDockControl(new LLDockControl(
- LLFloaterReg::getInstance("chat_bar"), this,
- getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
- }
-
- //fix for EXT-4621
- //chrome="true" prevents floater from stilling capture
- setIsChrome(true);
- //chrome="true" hides floater caption
if (mDragHandle)
mDragHandle->setTitleVisible(TRUE);
@@ -118,20 +107,6 @@ void LLNearbyChat::applySavedVariables()
setRect(rect);
}
}
-
-
- if(!LLFloater::getControlGroup()->controlExists(mDocStateControl))
- {
- setDocked(true);
- }
- else
- {
- if (mDocStateControl.size() > 1)
- {
- bool dockState = LLFloater::getControlGroup()->getBOOL(mDocStateControl);
- setDocked(dockState);
- }
- }
}
std::string appendTime()
@@ -229,17 +204,17 @@ void LLNearbyChat::setVisible(BOOL visible)
}
}
- LLDockableFloater::setVisible(visible);
+ LLFloater::setVisible(visible);
}
void LLNearbyChat::onOpen(const LLSD& key )
{
- LLDockableFloater::onOpen(key);
+ LLFloater::onOpen(key);
}
void LLNearbyChat::setRect (const LLRect &rect)
{
- LLDockableFloater::setRect(rect);
+ LLFloater::setRect(rect);
}
void LLNearbyChat::getAllowedRect(LLRect& rect)
@@ -367,7 +342,7 @@ BOOL LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
if(mChatHistory)
mChatHistory->setFocus(TRUE);
- return LLDockableFloater::handleMouseDown(x, y, mask);
+ return LLFloater::handleMouseDown(x, y, mask);
}
void LLNearbyChat::draw()
@@ -380,5 +355,5 @@ void LLNearbyChat::draw()
setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE);
}
- LLDockableFloater::draw();
+ LLFloater::draw();
}
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 2ea79797f8..834a31bbf0 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -1,4 +1,4 @@
-/**
+ /**
* @file llnearbychat.h
* @brief nearby chat history scrolling panel implementation
*
@@ -27,14 +27,14 @@
#ifndef LL_LLNEARBYCHAT_H_
#define LL_LLNEARBYCHAT_H_
-#include "lldockablefloater.h"
#include "llscrollbar.h"
#include "llviewerchat.h"
+#include "llfloater.h"
class LLResizeBar;
class LLChatHistory;
-class LLNearbyChat: public LLDockableFloater
+class LLNearbyChat: public LLFloater
{
public:
LLNearbyChat(const LLSD& key);
--
cgit v1.3
From 0f3221e25d6261d7f29b5b37391156c07fde1d0c Mon Sep 17 00:00:00 2001
From: Seth ProductEngine
Date: Tue, 27 Sep 2011 21:05:05 +0300
Subject: EXP-1225 FIXED Added a floater for My Inventory side tab. - Replaced
calls to LLSideTray with LLFloaterSidePanelContainer. - Added
LLFloaterSidePanelContainer::getPanel() for getting custom type panels.
---
indra/newview/llavataractions.cpp | 12 +++--
indra/newview/llfloatersidepanelcontainer.cpp | 18 ++++++-
indra/newview/llfloatersidepanelcontainer.h | 23 +++++++++
indra/newview/llinspectobject.cpp | 3 +-
indra/newview/llinventoryfunctions.cpp | 17 +++++--
indra/newview/llinventorypanel.cpp | 57 ++++++++--------------
indra/newview/llpanelmaininventory.cpp | 12 +++--
indra/newview/llpanelmarketplaceinbox.cpp | 16 +++---
indra/newview/llpanelmarketplaceoutbox.cpp | 17 ++++---
indra/newview/llsidepanelinventory.cpp | 20 +++++---
indra/newview/llviewerfloaterreg.cpp | 1 +
indra/newview/llviewerinventory.cpp | 3 +-
indra/newview/llviewermenu.cpp | 14 +++---
.../skins/default/xui/en/floater_my_inventory.xml | 20 ++++++++
indra/newview/skins/default/xui/en/menu_viewer.xml | 4 +-
.../skins/minimal/xui/en/panel_bottomtray.xml | 2 +-
16 files changed, 158 insertions(+), 81 deletions(-)
create mode 100644 indra/newview/skins/default/xui/en/floater_my_inventory.xml
(limited to 'indra/newview')
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4cdfcea64e..efb46166b8 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -47,6 +47,7 @@
#include "llfloatergroups.h"
#include "llfloaterreg.h"
#include "llfloaterpay.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterwebcontent.h"
#include "llfloaterworldmap.h"
#include "llfolderview.h"
@@ -438,8 +439,7 @@ void LLAvatarActions::csr(const LLUUID& id, std::string name)
void LLAvatarActions::share(const LLUUID& id)
{
LLSD key;
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
-
+ LLFloaterSidePanelContainer::showPanel("my_inventory", key);
LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,id);
@@ -696,9 +696,11 @@ std::set LLAvatarActions::getInventorySelectedUUIDs()
if (inventory_selected_uuids.empty())
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel("sidepanel_inventory");
-
- inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (sidepanel_inventory)
+ {
+ inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+ }
}
return inventory_selected_uuids;
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index cf66fd1792..c73ec90a12 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -33,6 +33,9 @@
#include "llsidetraypanelcontainer.h"
#include "lltransientfloatermgr.h"
+//static
+const std::string LLFloaterSidePanelContainer::sMainPanelName("main_panel");
+
LLFloaterSidePanelContainer::LLFloaterSidePanelContainer(const LLSD& key, const Params& params)
: LLFloater(key, params)
{
@@ -48,7 +51,7 @@ LLFloaterSidePanelContainer::~LLFloaterSidePanelContainer()
void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
{
- getChild("main_panel")->onOpen(key);
+ getChild(sMainPanelName)->onOpen(key);
}
LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
@@ -82,6 +85,17 @@ void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, con
LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
if (floaterp)
{
- floaterp->openChildPanel("main_panel", panel_name);
+ floaterp->openChildPanel(sMainPanelName, panel_name);
}
}
+
+LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
+ if (floaterp)
+ {
+ return floaterp->findChild(panel_name, true);
+ }
+
+ return NULL;
+}
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 7b4e7643ae..0d17a14c0b 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -51,6 +51,29 @@ public:
LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
static void showPanel(const std::string& floater_name, const LLSD& panel_name);
+
+ static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
+
+ /**
+ * Gets the panel of given type T (doesn't show it or do anything else with it).
+ *
+ * @param floater_name a string specifying the floater to be searched for a child panel.
+ * @param panel_name a string specifying the child panel to get.
+ * @returns a pointer to the panel of given type T.
+ */
+ template
+ static T* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName)
+ {
+ T* panel = dynamic_cast(getPanel(floater_name, panel_name));
+ if (!panel)
+ {
+ llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
+ }
+ return panel;
+ }
+
+private:
+ static const std::string sMainPanelName;
};
#endif // LL_LLFLOATERSIDEPANELCONTAINER_H
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index ee076f68ea..29d7a4a6b0 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -28,6 +28,7 @@
#include "llinspectobject.h"
// Viewer
+#include "llfloatersidepanelcontainer.h"
#include "llinspect.h"
#include "llmediaentry.h"
#include "llnotificationsutil.h" // *TODO: Eliminate, add LLNotificationsUtil wrapper
@@ -640,7 +641,7 @@ void LLInspectObject::onClickMoreInfo()
{
LLSD key;
key["task"] = "task";
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("my_inventory", key);
closeFloater();
}
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 0af013fde5..acec02b507 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -47,6 +47,7 @@
#include "llappviewer.h"
//#include "llfirstuse.h"
#include "llfloaterinventory.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "llfolderview.h"
#include "llgesturemgr.h"
@@ -459,22 +460,28 @@ BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id)
void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id)
{
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", item_uuid).with("object", object_id));
+ LLFloaterSidePanelContainer::showPanel("my_inventory", LLSD().with("id", item_uuid).with("object", object_id));
}
void show_item_profile(const LLUUID& item_uuid)
{
LLUUID linked_uuid = gInventory.getLinkedItemID(item_uuid);
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", linked_uuid));
+ LLFloaterSidePanelContainer::showPanel("my_inventory", LLSD().with("id", linked_uuid));
}
void show_item_original(const LLUUID& item_uuid)
{
+ LLFloater* floater_my_inventory = LLFloaterReg::getInstance("my_inventory");
+ if (!floater_my_inventory)
+ {
+ llwarns << "Could not find My Inventory floater" << llendl;
+ return;
+ }
+
//sidetray inventory panel
- LLSidepanelInventory *sidepanel_inventory =
- dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
- bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");
+ bool reset_inventory_filter = !floater_my_inventory->isInVisibleChain();
LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
if (!active_panel)
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 173e5c6ae6..c4f810fc93 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -35,6 +35,7 @@
#include "llavataractions.h"
#include "llfloaterinventory.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llimfloater.h"
#include "llimview.h"
@@ -1071,10 +1072,9 @@ void LLInventoryPanel::dumpSelectionInformation(void* user_data)
BOOL is_inventorysp_active()
{
- if (!LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")) return FALSE;
- LLSidepanelInventory *inventorySP = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- if (!inventorySP) return FALSE;
- return inventorySP->isMainInventoryPanelActive();
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (!sidepanel_inventory || !sidepanel_inventory->isInVisibleChain()) return FALSE;
+ return sidepanel_inventory->isMainInventoryPanelActive();
}
// static
@@ -1084,34 +1084,24 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
LLInventoryPanel* res = NULL;
LLFloater* active_inv_floaterp = NULL;
- // A. If the inventory side panel is open, use that preferably.
- if (is_inventorysp_active())
+ LLFloater* floater_my_inventory = LLFloaterReg::getInstance("my_inventory");
+ if (!floater_my_inventory)
{
- LLSidepanelInventory *inventorySP = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- if (inventorySP)
- {
- return inventorySP->getActivePanel();
- }
+ llwarns << "Could not find My Inventory floater" << llendl;
+ return FALSE;
}
- // or if it is in floater undocked from sidetray get it and remember z order of floater to later compare it
- // with other inventory floaters order.
- else if (!LLSideTray::getInstance()->isTabAttached("sidebar_inventory"))
+
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+
+ // A. If the inventory side panel floater is open, use that preferably.
+ if (is_inventorysp_active())
{
- LLSidepanelInventory *inventorySP =
- dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
- LLFloater* inv_floater = LLFloaterReg::findInstance("side_bar_tab", LLSD("sidebar_inventory"));
- if (inventorySP && inv_floater)
- {
- res = inventorySP->getActivePanel();
- z_min = gFloaterView->getZOrder(inv_floater);
- active_inv_floaterp = inv_floater;
- }
- else
- {
- llwarns << "Inventory tab is detached from sidetray, but either panel or floater were not found!" << llendl;
- }
+ // Get the floater's z order to compare it to other inventory floaters' order later.
+ res = sidepanel_inventory->getActivePanel();
+ z_min = gFloaterView->getZOrder(floater_my_inventory);
+ active_inv_floaterp = floater_my_inventory;
}
-
+
// B. Iterate through the inventory floaters and return whichever is on top.
LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
@@ -1141,14 +1131,9 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
// C. If no panels are open and we don't want to force open a panel, then just abort out.
if (!auto_open) return NULL;
- // D. Open the inventory side panel and use that.
- LLSD key;
- LLSidepanelInventory *sidepanel_inventory =
- dynamic_cast(LLSideTray::getInstance()->showPanel("sidepanel_inventory", key));
- if (sidepanel_inventory)
- {
- return sidepanel_inventory->getActivePanel();
- }
+ // D. Open the inventory side panel floater and use that.
+ floater_my_inventory->openFloater();
+ return sidepanel_inventory->getActivePanel();
return NULL;
}
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 858f5cf575..c1341af2ef 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -38,6 +38,7 @@
#include "llinventorymodelbackgroundfetch.h"
#include "llinventorypanel.h"
#include "llfiltereditor.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterreg.h"
#include "llmenubutton.h"
#include "lloutfitobserver.h"
@@ -579,8 +580,13 @@ void LLPanelMainInventory::updateItemcountText()
void LLPanelMainInventory::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel("sidepanel_inventory");
-
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (!sidepanel_inventory)
+ {
+ llwarns << "Could not find Inventory Panel in My Inventory floater" << llendl;
+ return;
+ }
+
sidepanel_inventory->clearSelections(false, true, true);
}
@@ -1164,7 +1170,7 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
if (command_name == "share")
{
- LLSidepanelInventory* parent = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory* parent = LLFloaterSidePanelContainer::getPanel("my_inventory");
return parent ? parent->canShare() : FALSE;
}
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index 2cb91f771f..a412eabc0a 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -32,6 +32,7 @@
#include "llappviewer.h"
#include "llbutton.h"
#include "llinventorypanel.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llsidepanelinventory.h"
#include "llviewercontrol.h"
@@ -67,7 +68,7 @@ BOOL LLPanelMarketplaceInbox::postBuild()
void LLPanelMarketplaceInbox::onSelectionChange()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
sidepanel_inventory->updateVerbs();
}
@@ -112,9 +113,11 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
void LLPanelMarketplaceInbox::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel("sidepanel_inventory");
-
- sidepanel_inventory->clearSelections(true, false, true);
+ LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->clearSelections(true, false, true);
+ }
gSavedPerAccountSettings.setString("LastInventoryInboxActivity", LLDate::now().asString());
}
@@ -185,9 +188,10 @@ std::string LLPanelMarketplaceInbox::getBadgeString() const
{
std::string item_count_str("");
+ LLPanel *inventory_panel = LLFloaterSidePanelContainer::getPanel("my_inventory");
+
// If the inbox is visible, and the side panel is collapsed or expanded and not the inventory panel
- if (getParent()->getVisible() &&
- (LLSideTray::getInstance()->getCollapsed() || !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")))
+ if (getParent()->getVisible() && inventory_panel && !inventory_panel->isInVisibleChain())
{
U32 item_count = getFreshItemCount();
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index 839369bffe..f0a4b9898d 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -33,6 +33,7 @@
#include "llbutton.h"
#include "llcoros.h"
#include "lleventcoro.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventorypanel.h"
#include "llloadingindicator.h"
#include "llnotificationsutil.h"
@@ -89,16 +90,20 @@ void LLPanelMarketplaceOutbox::handleLoginComplete()
void LLPanelMarketplaceOutbox::onFocusReceived()
{
- LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel("sidepanel_inventory");
-
- sidepanel_inventory->clearSelections(true, true, false);
+ LLSidepanelInventory * sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->clearSelections(true, true, false);
+ }
}
void LLPanelMarketplaceOutbox::onSelectionChange()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->updateVerbs();
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->updateVerbs();
+ }
}
LLInventoryPanel * LLPanelMarketplaceOutbox::setupInventoryPanel()
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 9814e5b81a..e223de5469 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -34,6 +34,7 @@
#include "llbutton.h"
#include "lldate.h"
#include "llfirstuse.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfoldertype.h"
#include "llhttpclient.h"
#include "llinventorybridge.h"
@@ -172,16 +173,20 @@ LLSidepanelInventory::~LLSidepanelInventory()
void handleInventoryDisplayInboxChanged()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+ }
}
void handleInventoryDisplayOutboxChanged()
{
- LLSidepanelInventory* sidepanel_inventory = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
- sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+ LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel("my_inventory");
+ if (sidepanel_inventory)
+ {
+ sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+ }
}
BOOL LLSidepanelInventory::postBuild()
@@ -283,6 +288,9 @@ BOOL LLSidepanelInventory::postBuild()
gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged));
+ // Update the verbs buttons state.
+ updateVerbs();
+
return TRUE;
}
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b30ef11978..bca166e390 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -223,6 +223,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("moveview", "floater_moveview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("mute_object_by_name", "floater_mute_object.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
+ LLFloaterReg::add("my_inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("my_profile", "floater_my_profile.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index ad65a8846c..d798f1900f 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -35,6 +35,7 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llviewerfoldertype.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llviewercontrol.h"
#include "llconsole.h"
@@ -220,7 +221,7 @@ public:
// support secondlife:///app/inventory/show
if (params[0].asString() == "show")
{
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD());
+ LLFloaterSidePanelContainer::showPanel("my_inventory", LLSD());
return true;
}
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 63d6e0ac30..a71900167c 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2634,7 +2634,7 @@ void handle_object_inspect()
{
LLSD key;
key["task"] = "task";
- LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("my_inventory", key);
}
/*
@@ -5661,18 +5661,18 @@ class LLShowSidetrayPanel : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- std::string panel_name = userdata.asString();
+ std::string floater_name = userdata.asString();
- LLPanel* panel = LLSideTray::getInstance()->getPanel(panel_name);
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel(floater_name);
if (panel)
{
if (panel->isInVisibleChain())
{
- LLSideTray::getInstance()->hidePanel(panel_name);
+ LLFloaterReg::getInstance(floater_name)->closeFloater();
}
else
{
- LLSideTray::getInstance()->showPanel(panel_name);
+ LLFloaterReg::getInstance(floater_name)->openFloater();
}
}
return true;
@@ -5683,9 +5683,9 @@ class LLSidetrayPanelVisible : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
- std::string panel_name = userdata.asString();
+ std::string floater_name = userdata.asString();
// Toggle the panel
- if (LLSideTray::getInstance()->isPanelActive(panel_name))
+ if (LLFloaterReg::getInstance(floater_name)->isInVisibleChain())
{
return true;
}
diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
new file mode 100644
index 0000000000..fd03a5324e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
@@ -0,0 +1,20 @@
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 36ebe73753..2e9a66de5b 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -67,10 +67,10 @@
visible="true">
+ parameter="my_inventory" />
+ parameter="my_inventory" />
+ parameter="people" />
Date: Tue, 27 Sep 2011 22:06:56 +0300
Subject: EXP-1226 FIXED (Create and register a floater for Appearance side
tab)
- Added xml for a new floater Appearance and registred it in the floaterreg
- Removed side tray dependencies
- Added static helper method: LLFloaterSidePanelContainer::getPanel
---
indra/newview/llagentwearables.cpp | 3 ++-
indra/newview/llappearancemgr.cpp | 9 +++++----
indra/newview/llavataractions.cpp | 3 ++-
indra/newview/llcofwearables.cpp | 5 +++--
indra/newview/llfloatersidepanelcontainer.cpp | 18 ++++++++++++++++--
indra/newview/llfloatersidepanelcontainer.h | 5 +++++
indra/newview/llinventorybridge.cpp | 2 +-
indra/newview/lloutfitslist.cpp | 3 ++-
indra/newview/llpaneloutfitsinventory.cpp | 8 ++++----
indra/newview/llpanelwearing.cpp | 3 ++-
indra/newview/llsidepanelappearance.cpp | 3 ++-
indra/newview/llviewerfloaterreg.cpp | 1 +
indra/newview/llviewerinventory.cpp | 3 ++-
indra/newview/llviewermenu.cpp | 10 +++++-----
indra/newview/llwearable.cpp | 7 ++++---
.../skins/default/xui/en/floater_my_appearance.xml | 20 ++++++++++++++++++++
16 files changed, 76 insertions(+), 27 deletions(-)
create mode 100644 indra/newview/skins/default/xui/en/floater_my_appearance.xml
(limited to 'indra/newview')
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index b9125ec8d3..404cd8e5b6 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -33,6 +33,7 @@
#include "llagentwearablesfetch.h"
#include "llappearancemgr.h"
#include "llcallbacklist.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
@@ -2015,7 +2016,7 @@ void LLAgentWearables::editWearable(const LLUUID& item_id)
}
const BOOL disable_camera_switch = LLWearableType::getDisableCameraSwitch(wearable->getType());
- LLPanel* panel = LLSideTray::getInstance()->getPanel("sidepanel_appearance");
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel("appearance");
LLSidepanelAppearance::editWearable(wearable, panel, disable_camera_switch);
}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 3cb9b77010..c638f881a5 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -34,6 +34,7 @@
#include "llattachmentsmgr.h"
#include "llcommandhandler.h"
#include "lleventtimer.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgesturemgr.h"
#include "llinventorybridge.h"
#include "llinventoryfunctions.h"
@@ -116,7 +117,7 @@ public:
return true;
}
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
return true;
}
};
@@ -1505,7 +1506,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)
{
LLSidepanelAppearance* panel_appearance =
- dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance"));
if (panel_appearance)
{
panel_appearance->refreshCurrentOutfitName(name);
@@ -1943,7 +1944,7 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit editor should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);
@@ -2468,7 +2469,7 @@ public:
LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
}
LLOutfitsList *outfits_list =
- dynamic_cast(LLSideTray::getInstance()->getPanel("outfitslist_tab"));
+ dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
if (outfits_list)
{
outfits_list->setSelectedOutfitByUUID(mFolderID);
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4cdfcea64e..db5bbf7167 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -47,6 +47,7 @@
#include "llfloatergroups.h"
#include "llfloaterreg.h"
#include "llfloaterpay.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterwebcontent.h"
#include "llfloaterworldmap.h"
#include "llfolderview.h"
@@ -462,7 +463,7 @@ namespace action_give_inventory
*/
static LLInventoryPanel* get_outfit_editor_inventory_panel()
{
- LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+ LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
if (NULL == panel_outfit_edit) return NULL;
LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild("folder_view");
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 254c0adef1..80e0cca780 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -33,6 +33,7 @@
#include "llagentdata.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventory.h"
#include "llinventoryfunctions.h"
#include "lllistcontextmenu.h"
@@ -165,7 +166,7 @@ protected:
// absent instance. Explicit relations between components avoids situations
// when we tries to construct instance with unsatisfied implicit input conditions.
LLPanelOutfitEdit * panel_outfit_edit =
- dynamic_cast (LLSideTray::getInstance()->getPanel(
+ dynamic_cast (LLFloaterSidePanelContainer::getPanel("appearance",
"panel_outfit_edit"));
if (panel_outfit_edit != NULL)
{
@@ -237,7 +238,7 @@ protected:
// *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
// LLSideTray::getInstance()->getPanel() is rather slow variant
- LLPanelOutfitEdit* panel_oe = dynamic_cast(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+ LLPanelOutfitEdit* panel_oe = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index cff46e80eb..ab874e4b9f 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -33,6 +33,9 @@
#include "llsidetraypanelcontainer.h"
#include "lltransientfloatermgr.h"
+//static
+const std::string LLFloaterSidePanelContainer::sMainPanelName("main_panel");
+
LLFloaterSidePanelContainer::LLFloaterSidePanelContainer(const LLSD& key, const Params& params)
: LLFloater(key, params)
{
@@ -48,7 +51,7 @@ LLFloaterSidePanelContainer::~LLFloaterSidePanelContainer()
void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
{
- getChild("main_panel")->onOpen(key);
+ getChild(sMainPanelName)->onOpen(key);
}
LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
@@ -82,6 +85,17 @@ void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, con
LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
if (floaterp)
{
- floaterp->openChildPanel("main_panel", panel_name);
+ floaterp->openChildPanel(sMainPanelName, panel_name);
}
}
+
+LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
+ if (floaterp)
+ {
+ return floaterp->findChild(panel_name, true);
+ }
+
+ return NULL;
+}
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 7b4e7643ae..5c05f26f45 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -42,6 +42,9 @@
*/
class LLFloaterSidePanelContainer : public LLFloater
{
+private:
+ static const std::string sMainPanelName;
+
public:
LLFloaterSidePanelContainer(const LLSD& key, const Params& params = getDefaultParams());
~LLFloaterSidePanelContainer();
@@ -51,6 +54,8 @@ public:
LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
static void showPanel(const std::string& floater_name, const LLSD& panel_name);
+
+ static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
};
#endif // LL_LLFLOATERSIDEPANELCONTAINER_H
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 0b3d6d8030..b6041c7f31 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4781,7 +4781,7 @@ void remove_inventory_category_from_avatar( LLInventoryCategory* category )
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit editor should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 10887aa53a..c2739867b1 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -35,6 +35,7 @@
#include "llaccordionctrltab.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "lllistcontextmenu.h"
@@ -327,7 +328,7 @@ protected:
static void editOutfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
static void renameOutfit(const LLUUID& outfit_cat_id)
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index a90f864ae2..3ac0d6616b 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -31,6 +31,7 @@
#include "llnotificationsutil.h"
#include "lltabcontainer.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llagentwearables.h"
@@ -222,7 +223,7 @@ void LLPanelOutfitsInventory::onSave()
//static
LLPanelOutfitsInventory* LLPanelOutfitsInventory::findInstance()
{
- return dynamic_cast(LLSideTray::getInstance()->getPanel("panel_outfits_inventory"));
+ return dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfits_inventory"));
}
//////////////////////////////////////////////////////////////////////////////////
@@ -319,8 +320,7 @@ void LLPanelOutfitsInventory::onWearablesLoading()
// static
LLSidepanelAppearance* LLPanelOutfitsInventory::getAppearanceSP()
{
- static LLSidepanelAppearance* panel_appearance =
- dynamic_cast
- (LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance* panel_appearance =
+ dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance"));
return panel_appearance;
}
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index f19b54c1d4..87e9bb7b28 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -31,6 +31,7 @@
#include "lltoggleablemenu.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llinventoryfunctions.h"
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
@@ -44,7 +45,7 @@
// Context menu and Gear menu helper.
static void edit_outfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
//////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 28ec11d1c7..a356013830 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -32,6 +32,7 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfolderview.h"
#include "llinventorypanel.h"
#include "llfiltereditor.h"
@@ -456,7 +457,7 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
//static
void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch)
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance");
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
LLSidepanelAppearance *panel = dynamic_cast(data);
if (panel)
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b28373c6d5..665e0a2bd6 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -161,6 +161,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterAboutUtil::registerFloater();
LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
+ LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index ad65a8846c..6b5b47d0db 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -34,6 +34,7 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llagentwearables.h"
+#include "llfloatersidepanelcontainer.h"
#include "llviewerfoldertype.h"
#include "llfolderview.h"
#include "llviewercontrol.h"
@@ -976,7 +977,7 @@ void ModifiedCOFCallback::fire(const LLUUID& inv_item)
if( gAgentCamera.cameraCustomizeAvatar() )
{
// If we're in appearance editing mode, the current tab may need to be refreshed
- LLSidepanelAppearance *panel = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance"));
if (panel)
{
panel->showDefaultSubpart();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 63d6e0ac30..1dd5b05818 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -3758,7 +3758,7 @@ void handle_reset_view()
if (gAgentCamera.cameraCustomizeAvatar())
{
// switching to outfit selector should automagically save any currently edited wearable
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
}
gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
@@ -5576,22 +5576,22 @@ void handle_viewer_disable_message_log(void*)
void handle_customize_avatar()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
}
void handle_edit_outfit()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
void handle_edit_shape()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_shape"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_shape"));
}
void handle_edit_physics()
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_physics"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_physics"));
}
void handle_report_abuse()
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d1c0990f90..276e8f462d 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -30,6 +30,7 @@
#include "llagentcamera.h"
#include "llagentwearables.h"
#include "lldictionary.h"
+#include "llfloatersidepanelcontainer.h"
#include "lllocaltextureobject.h"
#include "llnotificationsutil.h"
#include "llviewertexturelist.h"
@@ -697,7 +698,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake
if(gAgentCamera.cameraCustomizeAvatar())
{
- LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+ LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
}
gAgentAvatarp->updateVisualParams();
@@ -967,7 +968,7 @@ void LLWearable::revertValues()
syncImages(mSavedTEMap, mTEMap);
- LLSidepanelAppearance *panel = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance"));
if( panel )
{
panel->updateScrollingPanelList();
@@ -1008,7 +1009,7 @@ void LLWearable::saveValues()
syncImages(mTEMap, mSavedTEMap);
- LLSidepanelAppearance *panel = dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+ LLSidepanelAppearance *panel = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance"));
if( panel )
{
panel->updateScrollingPanelList();
diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
new file mode 100644
index 0000000000..8f97887b3f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
--
cgit v1.3
From d0b5a521f21ab8002fb5d9a4d11cee6c2385dbf3 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Tue, 27 Sep 2011 14:26:53 -0500
Subject: SH-2244 Make emissive attribute match actual number of components
coming in
---
indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl | 4 ++--
.../newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl | 4 ++--
indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
index 50e92c191b..7b108e4562 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
@@ -29,7 +29,7 @@ uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
ATTRIBUTE float texture_index;
-ATTRIBUTE float emissive;
+ATTRIBUTE vec4 emissive;
ATTRIBUTE vec2 texcoord0;
void calcAtmospherics(vec3 inPositionEye);
@@ -57,7 +57,7 @@ void main()
calcAtmospherics(pos.xyz);
- vertex_color = vec4(0,0,0,emissive);
+ vertex_color = emissive;
fog_depth = pos.z;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
index bf4c45f18f..8c38d5df2a 100644
--- a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
@@ -28,7 +28,7 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float emissive;
+ATTRIBUTE vec4 emissive;
ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
@@ -50,7 +50,7 @@ void main()
calcAtmospherics(pos.xyz);
- vertex_color = vec4(0,0,0,emissive);
+ vertex_color = emissive;
gl_Position = projection_matrix*vec4(pos, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
index 77b0806bfc..35feacb7b1 100644
--- a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
@@ -29,7 +29,7 @@ uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
ATTRIBUTE float texture_index;
-ATTRIBUTE float emissive;
+ATTRIBUTE vec4 emissive;
ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
@@ -50,7 +50,7 @@ void main()
vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
calcAtmospherics(pos.xyz);
- vertex_color = vec4(0,0,0,emissive);
+ vertex_color = emissive;
fog_depth = pos.z;
}
--
cgit v1.3
From b6feeea2b550b981dbb04558902020e8cae16f7b Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Tue, 27 Sep 2011 12:40:06 -0700
Subject: * Updated toybox to center bottom button and add delimeter
---
indra/newview/skins/default/xui/en/floater_toybox.xml | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index 60a39b0bff..092eddaa53 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -46,6 +46,7 @@
-
+ top="85" />
+
--
cgit v1.3
From 8fd2d69fdf47e0f586c6010c589411e251967038 Mon Sep 17 00:00:00 2001
From: Paul ProductEngine
Date: Tue, 27 Sep 2011 22:51:43 +0300
Subject: EXP-1224 FIXED (Create and register a floater for People side tab)
- Added a floater for People side tab.
- Replaced calls to LLSideTray with LLFloaterSidePanelContainer.
---
indra/newview/llbottomtray.cpp | 3 +-
indra/newview/llchathistory.cpp | 3 +-
indra/newview/llfloaterpreference.cpp | 3 +-
indra/newview/llfloatersidepanelcontainer.cpp | 25 +++++++++++-
indra/newview/llfloatersidepanelcontainer.h | 26 ++++++++++++-
indra/newview/llgroupactions.cpp | 15 ++++----
indra/newview/llnearbychat.cpp | 3 +-
indra/newview/llpanelblockedlist.cpp | 3 +-
indra/newview/llpanelgroup.cpp | 5 ++-
indra/newview/llpanelpeople.cpp | 13 +++++++
indra/newview/llpanelpicks.cpp | 3 +-
indra/newview/llviewerfloaterreg.cpp | 1 +
.../skins/default/xui/en/floater_people.xml | 45 ++++++++++++++++++++++
.../xui/en/menu_people_friends_view_sort.xml | 2 +-
.../xui/en/menu_people_nearby_view_sort.xml | 2 +-
.../xui/en/menu_people_recent_view_sort.xml | 2 +-
16 files changed, 133 insertions(+), 21 deletions(-)
create mode 100644 indra/newview/skins/default/xui/en/floater_people.xml
(limited to 'indra/newview')
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 79e6c7b66b..e6448d38ee 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -31,6 +31,7 @@
// library includes
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llflyoutbutton.h"
#include "lllayoutstack.h"
#include "llnotifications.h"
@@ -856,7 +857,7 @@ void LLBottomTray::draw()
}
getChild("show_profile_btn")->setToggleState(LLAvatarActions::profileVisible(gAgent.getID()));
- LLPanel* panel = LLSideTray::getInstance()->getPanel("panel_people");
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel("people", "panel_people");
if (panel && panel->isInVisibleChain())
{
getChild("show_people_button")->setToggleState(true);
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index c0c9ea1451..d6773b8b29 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -42,6 +42,7 @@
#include "llavataractions.h"
#include "lltrans.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmutelist.h"
#include "llstylemap.h"
#include "llslurl.h"
@@ -144,7 +145,7 @@ public:
{
LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT));
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
}
}
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d65928e385..d8b6b2e966 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -50,6 +50,7 @@
#include "llfloaterreg.h"
#include "llfloaterabout.h"
#include "llfloaterhardwaresettings.h"
+#include "llfloatersidepanelcontainer.h"
#include "llimfloater.h"
#include "llkeyboard.h"
#include "llmodaldialog.h"
@@ -1499,7 +1500,7 @@ void LLFloaterPreference::onClickBlockList()
// don't create side tray on demand
if (LLSideTray::instanceCreated())
{
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray");
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
}
}
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index cf66fd1792..d77232a888 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -77,11 +77,32 @@ LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_na
return panel;
}
-void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& panel_name)
+LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
+
+ if (floaterp)
+ {
+ return floaterp->findChild(panel_name, true);
+ }
+
+ return NULL;
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& key)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
+ if (floaterp)
+ {
+ floaterp->openChildPanel("main_panel", key);
+ }
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key)
{
LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance(floater_name);
if (floaterp)
{
- floaterp->openChildPanel("main_panel", panel_name);
+ floaterp->openChildPanel(panel_name, key);
}
}
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index 7b4e7643ae..a5ea1a23fb 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -42,6 +42,9 @@
*/
class LLFloaterSidePanelContainer : public LLFloater
{
+private:
+ static const std::string sMainPanelName;
+
public:
LLFloaterSidePanelContainer(const LLSD& key, const Params& params = getDefaultParams());
~LLFloaterSidePanelContainer();
@@ -50,7 +53,28 @@ public:
LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
- static void showPanel(const std::string& floater_name, const LLSD& panel_name);
+ static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
+
+ static void showPanel(const std::string& floater_name, const LLSD& key);
+
+ static void showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key);
+
+ /**
+ * Gets the panel of given type T (doesn't show it or do anything else with it).
+ *
+ * @param panel_name a string specifying a child panel to get.
+ * @returns a pointer to the panel of given type T.
+ */
+ template
+ static T* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName)
+ {
+ T* panel = dynamic_cast(getPanel(floater_name, panel_name));
+ if (!panel)
+ {
+ llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
+ }
+ return panel;
+ }
};
#endif // LL_LLFLOATERSIDEPANELCONTAINER_H
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 97fa551441..cbbd66d868 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -34,6 +34,7 @@
#include "llagent.h"
#include "llcommandhandler.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgroupmgr.h"
#include "llimview.h" // for gIMMgr
#include "llnotificationsutil.h"
@@ -83,7 +84,7 @@ public:
{
LLSD params;
params["people_panel_tab_name"] = "groups_panel";
- LLSideTray::getInstance()->showPanel("panel_people", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", params);
return true;
}
return false;
@@ -243,7 +244,7 @@ static bool isGroupUIVisible()
{
static LLPanel* panel = 0;
if(!panel)
- panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+ panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
if(!panel)
return false;
return panel->isInVisibleChain();
@@ -265,7 +266,7 @@ void LLGroupActions::show(const LLUUID& group_id)
params["group_id"] = group_id;
params["open_tab_name"] = "panel_group_info_sidetray";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
void LLGroupActions::refresh_notices()
@@ -278,7 +279,7 @@ void LLGroupActions::refresh_notices()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh_notices";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -292,7 +293,7 @@ void LLGroupActions::refresh(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -303,7 +304,7 @@ void LLGroupActions::createGroup()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "create";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -317,7 +318,7 @@ void LLGroupActions::closeGroup(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "close";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 03ebc344f1..44c29fe05e 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -33,6 +33,7 @@
//#include "llchatitemscontainerctrl.h"
#include "lliconctrl.h"
#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "llresizebar.h"
#include "llresizehandle.h"
@@ -203,7 +204,7 @@ void LLNearbyChat::onNearbySpeakers()
{
LLSD param;
param["people_panel_tab_name"] = "nearby_panel";
- LLSideTray::getInstance()->showPanel("panel_people",param);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param);
}
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 81e199d85b..856dabb6b7 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -37,6 +37,7 @@
// project include
#include "llfloateravatarpicker.h"
+#include "llfloatersidepanelcontainer.h"
#include "llsidetray.h"
#include "llsidetraypanelcontainer.h"
@@ -99,7 +100,7 @@ void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
{
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
}
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 76b85d5bec..70dcf61d7d 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -29,6 +29,7 @@
// Library includes
#include "llbutton.h"
+#include "llfloatersidepanelcontainer.h"
#include "lltabcontainer.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
@@ -597,7 +598,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
//static
void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
if(!panel)
return;
panel->setGroupID(group_id);
@@ -612,7 +613,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
const std::string& inventory_name,
LLOfferInfo* inventory_offer)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
if(!panel)
return;
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e3a7b749ea..8d63ced53a 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -29,6 +29,7 @@
// libs
#include "llavatarname.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmenubutton.h"
#include "llmenugl.h"
#include "llnotificationsutil.h"
@@ -1283,6 +1284,10 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
mAllFriendList->showPermissions(show_permissions);
mOnlineFriendList->showPermissions(show_permissions);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
void LLPanelPeople::onGroupsViewSortMenuItemClicked(const LLSD& userdata)
@@ -1315,6 +1320,10 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata)
{
setSortOrder(mNearbyList, E_SORT_BY_DISTANCE);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata)
@@ -1348,6 +1357,10 @@ void LLPanelPeople::onRecentViewSortMenuItemClicked(const LLSD& userdata)
{
mRecentList->toggleIcons();
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata)
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index ddce83c616..12217a7db4 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -35,6 +35,7 @@
#include "lldispatcher.h"
#include "llflatlistview.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llnotificationsutil.h"
#include "lltexturectrl.h"
@@ -270,7 +271,7 @@ public:
params["classified_name"] = c_info->name;
params["classified_desc"] = c_info->description;
params["from_search"] = true;
- LLSideTray::getInstance()->showPanel("panel_profile_view", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_profile_view", params);
}
else if (mRequestVerb == "edit")
{
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b28373c6d5..10aa58f266 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -231,6 +231,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterPayUtil::registerFloater();
+ LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("postcard", "floater_postcard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
new file mode 100644
index 0000000000..6ccf81c846
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
index 29eeb93ac1..b452f96e7a 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
@@ -42,6 +42,6 @@
-
+
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
index 65bd2793b6..614dd693c5 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
@@ -52,6 +52,6 @@
-
+
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
index 0634e3bd3b..485a5a658c 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
@@ -34,6 +34,6 @@
-
+
--
cgit v1.3
From 8a5c983640ac23f6a588d78c433d2a36ddf4fa70 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Tue, 27 Sep 2011 14:55:00 -0500
Subject: SH-2505 Fix for some objects appearing as blobs of busted geometry on
vertex buffer update.
---
indra/newview/pipeline.cpp | 10 ++++++++++
1 file changed, 10 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 8c1bb0f628..2bbb2edc1a 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -2752,6 +2752,11 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
{
markVisible(*i, camera);
}
+
+ if (!sDelayVBUpdate)
+ { //rebuild mesh as soon as we know it's visible
+ group->rebuildMesh();
+ }
}
}
@@ -2802,6 +2807,11 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
{
group->setVisible();
stateSort(group, camera);
+
+ if (!sDelayVBUpdate)
+ { //rebuild mesh as soon as we know it's visible
+ group->rebuildMesh();
+ }
}
}
--
cgit v1.3
From 554b14dedac5a51927bad57b475d8f5a571c1add Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Tue, 27 Sep 2011 15:56:15 -0500
Subject: Remove some unused shaders
---
.../shaders/class2/deferred/edgeMSF.glsl | 94 ------
.../shaders/class2/deferred/multiSpotLightMSF.glsl | 265 ----------------
.../shaders/class2/deferred/softenLightMSF.glsl | 339 ---------------------
.../shaders/class2/deferred/spotLightMSF.glsl | 266 ----------------
.../shaders/class2/deferred/sunLightMSF.glsl | 222 --------------
.../shaders/class2/deferred/sunLightSSAOMSF.glsl | 260 ----------------
6 files changed, 1446 deletions(-)
delete mode 100644 indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
deleted file mode 100644
index b9c65b168c..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * @file edgeF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-
-VARYING vec2 vary_fragcoord;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-float getDepth(ivec2 pos_screen, int sample)
-{
- float z = texelFetch(depthMap, pos_screen, sample).r;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-void main()
-{
- float e = 0;
-
- ivec2 itc = ivec2(vary_fragcoord.xy);
-
- for (int i = 0; i < samples; i++)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
- float depth = getDepth(itc, i);
-
- vec2 tc = vary_fragcoord.xy;
-
- int sc = 1;
-
- vec2 de;
- de.x = (depth-getDepth(itc+ivec2(sc, sc),i)) + (depth-getDepth(itc+ivec2(-sc, -sc), i));
- de.y = (depth-getDepth(itc+ivec2(-sc, sc),i)) + (depth-getDepth(itc+ivec2(sc, -sc), i));
- de /= depth;
- de *= de;
- de = step(depth_cutoff, de);
-
- vec2 ne;
- vec3 nexnorm = texelFetch(normalMap, itc+ivec2(-sc,-sc), i).rgb;
- nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm
- ne.x = dot(nexnorm, norm);
- vec3 neynorm = texelFetch(normalMap, itc+ivec2(sc,sc), i).rgb;
- neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm
- ne.y = dot(neynorm, norm);
-
- ne = 1.0-ne;
-
- ne = step(norm_cutoff, ne);
-
- e += dot(de,de)+dot(ne,ne);
- }
-
- e /= samples;
-
- gl_FragColor.a = e;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
deleted file mode 100644
index 4037dca91a..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
+++ /dev/null
@@ -1,265 +0,0 @@
-/**
- * @file multiSpotLightF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod; //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-VARYING vec4 vary_light;
-
-VARYING vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- int wght = 0;
-
- vec3 fcol = vec3(0,0,0);
-
- vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
-
- ivec2 itc = ivec2(frag.xy);
-
- float shadow = 1.0;
-
- if (proj_shadow_idx >= 0)
- {
- vec4 shd = texture2DRect(lightMap, frag);
- float sh[2];
- sh[0] = shd.b;
- sh[1] = shd.a;
- shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
- }
-
- for (int i = 0; i < samples; i++)
- {
- vec3 pos = getPosition(itc, i).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- norm = normalize(norm);
- float l_dist = -dot(lv, proj_n);
-
- vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
- if (proj_tc.z >= 0.0)
- {
- proj_tc.xyz /= proj_tc.w;
-
- float fa = vertex_color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten > 0.0)
- {
- lv = proj_origin-pos.xyz;
- lv = normalize(lv);
- float da = dot(norm, lv);
-
- vec3 col = vec3(0,0,0);
-
- vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- if (proj_tc.z > 0.0 &&
- proj_tc.x < 1.0 &&
- proj_tc.y < 1.0 &&
- proj_tc.x > 0.0 &&
- proj_tc.y > 0.0)
- {
- float lit = 0.0;
- float amb_da = proj_ambiance;
-
- if (da > 0.0)
- {
- float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
- float lod = diff * proj_lod;
-
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-
- vec3 lcol = vertex_color.rgb * plcol.rgb * plcol.a;
-
- lit = da * dist_atten * noise;
-
- col = lcol*lit*diff_tex*shadow;
- amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
- }
-
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
- amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
-
- amb_da = min(amb_da, 1.0-lit);
-
- col += amb_da*vertex_color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
- }
-
-
- vec4 spec = texelFetch(specularRect, itc, i);
- if (spec.a > 0.0)
- {
- vec3 ref = reflect(normalize(pos), norm);
-
- //project from point pos in direction ref to plane proj_p, proj_n
- vec3 pdelta = proj_p-pos;
- float ds = dot(ref, proj_n);
-
- if (ds < 0.0)
- {
- vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
- if (stc.z > 0.0)
- {
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
- if (stc.x < 1.0 &&
- stc.y < 1.0 &&
- stc.x > 0.0 &&
- stc.y > 0.0)
- {
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*vertex_color.rgb*scol.a*spec.rgb*shadow;
- }
- }
- }
- }
-
- fcol += col;
- wght++;
- }
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/samples;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
deleted file mode 100644
index 62a86a3f09..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
+++ /dev/null
@@ -1,339 +0,0 @@
-/**
- * @file softenLightMSF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2DMS depthMap;
-uniform sampler2D noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D lightFunc;
-uniform vec3 gi_quad;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-VARYING vec4 vary_light;
-VARYING vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
- vec2 sc = pos_screen.xy*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
- return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
- return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
- return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
- return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
- vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
- vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
- vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
- vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
- vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
- vec3 P = inPositionEye;
- setPositionEye(P);
-
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
- vec3 tmpLightnorm = lightnorm.xyz;
-
- vec3 Pn = normalize(P);
- float Plen = length(P);
-
- vec4 temp1 = vec4(0);
- vec3 temp2 = vec3(0);
- vec4 blue_weight;
- vec4 haze_weight;
- vec4 sunlight = sunlight_color;
- vec4 light_atten;
-
- //sunlight attenuation effect (hue and brightness) due to atmosphere
- //this is used later for sunlight modulation at various altitudes
- light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
- //I had thought blue_density and haze_density should have equal weighting,
- //but attenuation due to haze_density tends to seem too strong
-
- temp1 = blue_density + vec4(haze_density.r);
- blue_weight = blue_density / temp1;
- haze_weight = vec4(haze_density.r) / temp1;
-
- //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
- temp2.y = max(0.0, tmpLightnorm.y);
- temp2.y = 1. / temp2.y;
- sunlight *= exp( - light_atten * temp2.y);
-
- // main atmospheric scattering line integral
- temp2.z = Plen * density_multiplier.x;
-
- // Transparency (-> temp1)
- // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
- // compiler gets confused.
- temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
- //final atmosphere attenuation factor
- setAtmosAttenuation(temp1.rgb);
-
- //compute haze glow
- //(can use temp2.x as temp because we haven't used it yet)
- temp2.x = dot(Pn, tmpLightnorm.xyz);
- temp2.x = 1. - temp2.x;
- //temp2.x is 0 at the sun and increases away from sun
- temp2.x = max(temp2.x, .03); //was glow.y
- //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
- temp2.x *= glow.x;
- //higher glow.x gives dimmer glow (because next step is 1 / "angle")
- temp2.x = pow(temp2.x, glow.z);
- //glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
- //add "minimum anti-solar illumination"
- temp2.x += .25;
-
- //increase ambient when there are more clouds
- vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
-
- /* decrease value and saturation (that in HSV, not HSL) for occluded areas
- * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
- * // The following line of code performs the equivalent of:
- * float ambAlpha = tmpAmbient.a;
- * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
- * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
- * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
- */
- tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
- //haze color
- setAdditiveColor(
- vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
- + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
- + tmpAmbient)));
-
- //brightness of surface both sunlight and ambient
- setSunlitColor(vec3(sunlight * .5));
- setAmblitColor(vec3(tmpAmbient * .25));
- setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor();
- return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
- light *= getAtmosAttenuation().r;
- light += getAdditiveColor() * 2.0;
- return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
- return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
- return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
- return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
- return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
- return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
- //soft clip effect:
- light = 1. - clamp(light, vec3(0.), vec3(1.));
- light = 1. - pow(light, gamma.xxx);
-
- return light;
-}
-
-void main()
-{
- vec2 tc = vary_fragcoord.xy;
- ivec2 itc = ivec2(tc);
-
- vec4 fcol = vec4(0,0,0,0);
-
- vec2 scol_ambocc = texture2DRect(lightMap, tc).rg;
- float ambocc = scol_ambocc.g;
-
- for (int i = 0; i < samples; ++i)
- {
- float depth = texelFetch(depthMap, itc.xy, i).r;
- vec3 pos = getPosition_d(tc, depth).xyz;
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-
- vec4 diffuse = texelFetch(diffuseRect, itc, i);
- vec3 col;
- float bloom = 0.0;
- if (diffuse.a < 0.9)
- {
- vec4 spec = texelFetch(specularRect, itc, i);
-
- float amb = 0;
-
- float scol = max(scol_ambocc.r, diffuse.a);
- amb += ambocc;
-
- calcAtmospherics(pos.xyz, ambocc);
-
- col = atmosAmbient(vec3(0));
- col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
-
- col *= diffuse.rgb;
-
- if (spec.a > 0.0) // specular reflection
- {
- // the old infinite-sky shiny reflection
- //
- vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
- float sa = dot(refnormpersp, vary_light.xyz);
- vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*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);
- col += spec_contrib;
- }
-
- col = atmosLighting(col);
- col = scaleSoftClip(col);
-
- col = mix(col, diffuse.rgb, diffuse.a);
- }
- else
- {
- col = diffuse.rgb;
- }
-
- fcol += vec4(col, bloom);
- }
-
- gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
deleted file mode 100644
index af3487fd91..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
+++ /dev/null
@@ -1,266 +0,0 @@
-/**
- * @file multiSpotLightF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod; //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-VARYING vec4 vary_light;
-
-VARYING vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-
- float det = min(lod/(proj_lod*0.5), 1.0);
-
- float d = min(dist.x, dist.y);
-
- float edge = 0.25*det;
-
- ret *= clamp(d/edge, 0.0, 1.0);
-
- return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
- vec4 ret = texture2DLod(projectionMap, tc, lod);
-
- vec2 dist = tc-vec2(0.5);
-
- float d = dot(dist,dist);
-
- ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-
- return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-void main()
-{
- vec4 frag = vary_fragcoord;
- frag.xyz /= frag.w;
- frag.xyz = frag.xyz*0.5+0.5;
- frag.xy *= screen_res;
- ivec2 itc = ivec2(frag.xy);
-
- vec3 fcol = vec3(0,0,0);
- int wght = 0;
-
- float shadow = 1.0;
-
- if (proj_shadow_idx >= 0)
- {
- vec4 shd = texture2DRect(lightMap, frag.xy);
- float sh[2];
- sh[0] = shd.b;
- sh[1] = shd.a;
- shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
- }
-
- for (int i = 0; i < samples; i++)
- {
- vec3 pos = getPosition(itc, i).xyz;
- vec3 lv = vary_light.xyz-pos.xyz;
- float dist2 = dot(lv,lv);
- dist2 /= vary_light.w;
- if (dist2 <= 1.0)
- {
- vec3 norm = texelFetch(normalMap, itc, i).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- norm = normalize(norm);
- float l_dist = -dot(lv, proj_n);
-
- vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
- if (proj_tc.z >= 0.0)
- {
- proj_tc.xyz /= proj_tc.w;
-
- float fa = vertex_color.a+1.0;
- float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
- if (dist_atten > 0.0)
- {
- lv = proj_origin-pos.xyz;
- lv = normalize(lv);
- float da = dot(norm, lv);
-
- vec3 col = vec3(0,0,0);
-
- vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-
- float noise = texture2D(noiseMap, frag.xy/128.0).b;
- if (proj_tc.z > 0.0 &&
- proj_tc.x < 1.0 &&
- proj_tc.y < 1.0 &&
- proj_tc.x > 0.0 &&
- proj_tc.y > 0.0)
- {
- float lit = 0.0;
- float amb_da = proj_ambiance;
-
- if (da > 0.0)
- {
- float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
- float lod = diff * proj_lod;
-
- vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-
- vec3 lcol = vertex_color.rgb * plcol.rgb * plcol.a;
-
- lit = da * dist_atten * noise;
-
- col = lcol*lit*diff_tex*shadow;
- amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
- }
-
- //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
- vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-
- amb_da += (da*da*0.5+0.5)*proj_ambiance;
-
- amb_da *= dist_atten * noise;
-
- amb_da = min(amb_da, 1.0-lit);
-
- col += amb_da*vertex_color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
- }
-
-
- vec4 spec = texelFetch(specularRect, itc, i);
- if (spec.a > 0.0)
- {
- vec3 ref = reflect(normalize(pos), norm);
-
- //project from point pos in direction ref to plane proj_p, proj_n
- vec3 pdelta = proj_p-pos;
- float ds = dot(ref, proj_n);
-
- if (ds < 0.0)
- {
- vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-
- vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
- if (stc.z > 0.0)
- {
- stc.xy /= stc.w;
-
- float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-
- stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-
- if (stc.x < 1.0 &&
- stc.y < 1.0 &&
- stc.x > 0.0 &&
- stc.y > 0.0)
- {
- vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
- col += dist_atten*scol.rgb*vertex_color.rgb*scol.a*spec.rgb*shadow;
- }
- }
- }
- }
-
- fcol += col;
- wght++;
- }
- }
- }
- }
-
- if (wght <= 0)
- {
- discard;
- }
-
- gl_FragColor.rgb = fcol/wght;
- gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
deleted file mode 100644
index 11b3faa4c9..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
+++ /dev/null
@@ -1,222 +0,0 @@
-/**
- * @file sunLightMSF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-//class 2, shadows, no SSAO
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-VARYING vec2 vary_fragcoord;
-VARYING vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-uniform vec2 proj_shadow_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-uniform float spot_shadow_bias;
-uniform float spot_shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen.xy, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
-
- float cs = shadow2DRect(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += spot_shadow_bias*scl;
-
- float cs = shadow2D(shadowMap, stc.xyz);
- float shadow = cs;
-
- vec2 off = 1.5/proj_shadow_res;
-
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)), cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)), cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)), cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)), cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
- ivec2 itc = ivec2(pos_screen);
-
- //try doing an unproject here
-
- vec4 fcol = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; i++)
- {
- vec4 pos = getPosition(itc, i);
-
- vec4 nmap4 = texelFetch(normalMap, itc, i);
- nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
- float displace = nmap4.w;
- vec3 norm = nmap4.xyz;
-
- /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL
- {
- gl_FragColor = vec4(0.0); // doesn't matter
- return;
- }*/
-
- float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
- vec3 shadow_pos = pos.xyz + displace*norm;
- vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
-
- vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
-
- if (spos.z > -shadow_clip.w)
- {
- if (dp_directional_light == 0.0)
- {
- // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
- shadow = 0.0;
- }
- else
- {
- vec4 lpos;
-
- if (spos.z < -shadow_clip.z)
- {
- lpos = shadow_matrix[3]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap3, lpos, 0.25);
- shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
- }
- else if (spos.z < -shadow_clip.y)
- {
- lpos = shadow_matrix[2]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap2, lpos, 0.5);
- }
- else if (spos.z < -shadow_clip.x)
- {
- lpos = shadow_matrix[1]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap1, lpos, 0.75);
- }
- else
- {
- lpos = shadow_matrix[0]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap0, lpos, 1.0);
- }
-
- // take the most-shadowed value out of these two:
- // * the blurred sun shadow in the light (shadow) map
- // * an unblurred dot product between the sun and this norm
- // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
- shadow = min(shadow, dp_directional_light);
-
- //lpos.xy /= lpos.w*32.0;
- //if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1)
- //{
- // shadow = 0.0;
- //}
-
- }
- }
- else
- {
- // more distant than the shadow map covers
- shadow = 1.0;
- }
-
- fcol[0] += shadow;
- fcol[1] += 1.0;
-
- spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0);
-
- //spotlight shadow 1
- vec4 lpos = shadow_matrix[4]*spos;
- fcol[2] += pcfShadow(shadowMap4, lpos, 0.8);
-
- //spotlight shadow 2
- lpos = shadow_matrix[5]*spos;
- fcol[3] += pcfShadow(shadowMap5, lpos, 0.8);
- }
-
- gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
deleted file mode 100644
index c571db9df2..0000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * @file sunLightSSAOF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-//class 2 -- shadows and SSAO
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-uniform sampler2D noiseMap;
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-VARYING vec2 vary_fragcoord;
-VARYING vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-uniform vec2 proj_shadow_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-uniform float spot_shadow_bias;
-uniform float spot_shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
- float depth = texelFetch(depthMap, pos_screen, sample).r;
- vec2 sc = vec2(pos_screen.xy)*2.0;
- sc /= screen_res;
- sc -= vec2(1.0,1.0);
- vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
- vec4 pos = inv_proj * ndc;
- pos /= pos.w;
- pos.w = 1.0;
- return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample)
-{
- float ret = 1.0;
-
- vec2 kern[8];
- // exponentially (^2) distant occlusion samples spread around origin
- kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
- kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
- kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
- kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
- kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
- kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
- kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
- kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
- vec2 pos_screen = vary_fragcoord.xy;
- vec3 pos_world = pos.xyz;
- vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-
- float angle_hidden = 0.0;
- int points = 0;
-
- float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-
- // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
- for (int i = 0; i < 8; i++)
- {
- ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect));
- vec3 samppos_world = getPosition(samppos_screen, sample).xyz;
-
- vec3 diff = pos_world - samppos_world;
- float dist2 = dot(diff, diff);
-
- // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
- // --> solid angle shrinking by the square of distance
- //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
- //(k should vary inversely with # of samples, but this is taken care of later)
-
- angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-
- // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"
- points = points + int(diff.z > -1.0);
- }
-
- angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-
- ret = (1.0 - (float(points != 0) * angle_hidden));
-
- return min(ret, 1.0);
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += shadow_bias*scl;
-
- float cs = shadow2DRect(shadowMap, stc.xyz).x;
- float shadow = cs;
-
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
- shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
- stc.xyz /= stc.w;
- stc.z += spot_shadow_bias*scl;
-
- float cs = shadow2D(shadowMap, stc.xyz);
- float shadow = cs;
-
- vec2 off = 1.5/proj_shadow_res;
-
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)), cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)), cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)), cs);
- shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)), cs);
-
-
- return shadow/5.0;
-
- //return shadow;
-}
-
-void main()
-{
- vec2 pos_screen = vary_fragcoord.xy;
- ivec2 itc = ivec2(pos_screen);
- vec4 fcol = vec4(0,0,0,0);
-
- for (int i = 0; i < samples; i++)
- {
- vec4 pos = getPosition(itc, i);
-
- vec4 nmap4 = texelFetch(normalMap, itc, i);
- nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
- float displace = nmap4.w;
- vec3 norm = nmap4.xyz;
-
- float shadow = 1.0;
- float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
- vec3 shadow_pos = pos.xyz + displace*norm;
- vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
-
- vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
-
- if (spos.z > -shadow_clip.w)
- {
- if (dp_directional_light == 0.0)
- {
- // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
- shadow = 0.0;
- }
- else
- {
- vec4 lpos;
-
- if (spos.z < -shadow_clip.z)
- {
- lpos = shadow_matrix[3]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap3, lpos, 0.25);
- shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
- }
- else if (spos.z < -shadow_clip.y)
- {
- lpos = shadow_matrix[2]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap2, lpos, 0.5);
- }
- else if (spos.z < -shadow_clip.x)
- {
- lpos = shadow_matrix[1]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap1, lpos, 0.75);
- }
- else
- {
- lpos = shadow_matrix[0]*spos;
- lpos.xy *= shadow_res;
- shadow = pcfShadow(shadowMap0, lpos, 1.0);
- }
-
- // take the most-shadowed value out of these two:
- // * the blurred sun shadow in the light (shadow) map
- // * an unblurred dot product between the sun and this norm
- // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
- shadow = min(shadow, dp_directional_light);
-
- }
- }
- else
- {
- // more distant than the shadow map covers
- shadow = 1.0;
- }
-
-
- fcol[0] += shadow;
- fcol[1] += calcAmbientOcclusion(pos, norm, i);
-
- spos.xyz = shadow_pos+offset*spot_shadow_offset;
-
- //spotlight shadow 1
- vec4 lpos = shadow_matrix[4]*spos;
- fcol[2] += pcfShadow(shadowMap4, lpos, 0.8);
-
- //spotlight shadow 2
- lpos = shadow_matrix[5]*spos;
- fcol[3] += pcfShadow(shadowMap5, lpos, 0.8);
- }
-
- gl_FragColor = fcol / samples;
-}
--
cgit v1.3
From 0e4f226b56cb2dea1e8d5e9f1267a16c302bb5a9 Mon Sep 17 00:00:00 2001
From: Merov Linden
Date: Tue, 27 Sep 2011 14:58:20 -0700
Subject: EXP-1211 : Read toolbar default settings from toolbars.xml, no saving
of settings done yet.
---
indra/llui/lltoolbar.cpp | 13 +--
indra/llui/lltoolbarview.cpp | 101 ++++++++++++++++++++-
indra/llui/lltoolbarview.h | 32 ++++++-
indra/newview/CMakeLists.txt | 1 +
indra/newview/app_settings/toolbars.xml | 23 +++++
.../skins/default/xui/en/panel_toolbar_view.xml | 9 --
6 files changed, 156 insertions(+), 23 deletions(-)
create mode 100644 indra/newview/app_settings/toolbars.xml
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 2fb9f249d4..f8effb5bb6 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -187,12 +187,6 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
- BOOST_FOREACH (const LLCommandId::Params& command_id, p.commands)
- {
- mButtonCommands.push_back(command_id);
- }
- createButtons();
-
mNeedsLayout = true;
}
@@ -202,8 +196,11 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)
bool add_command = (command != NULL);
- mButtonCommands.push_back(commandId);
- createButtons();
+ if (add_command)
+ {
+ mButtonCommands.push_back(commandId);
+ createButtons();
+ }
return add_command;
}
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 6ae10fbf1d..139a26a251 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -29,13 +29,108 @@
#include "lltoolbarview.h"
+#include "lldir.h"
+#include "llxmlnode.h"
#include "lltoolbar.h"
#include "llbutton.h"
+#include
+
LLToolBarView* gToolBarView = NULL;
static LLDefaultChildRegistry::Register r("toolbar_view");
+LLToolBarView::Toolbar::Toolbar()
+: commands("command")
+{}
+
+LLToolBarView::ToolbarSet::ToolbarSet()
+: left_toolbar("left_toolbar"),
+ right_toolbar("right_toolbar"),
+ bottom_toolbar("bottom_toolbar")
+{}
+
+bool LLToolBarView::load()
+{
+ LLToolBarView::ToolbarSet toolbar_set;
+
+ // Load the default toolbars.xml file
+ // *TODO : pick up the user's toolbar setting if existing
+ std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+
+ LLXMLNodePtr root;
+ if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
+ {
+ llerrs << "Unable to load toolbars from file: " << toolbar_file << llendl;
+ return false;
+ }
+ if(!root->hasName("toolbars"))
+ {
+ llwarns << toolbar_file << " is not a valid toolbars definition file" << llendl;
+ return false;
+ }
+
+ // Parse the toolbar settings
+ LLXUIParser parser;
+ parser.readXUI(root, toolbar_set, toolbar_file);
+ if (!toolbar_set.validateBlock())
+ {
+ llerrs << "Unable to validate toolbars from file: " << toolbar_file << llendl;
+ return false;
+ }
+
+ // Add commands to each toolbar
+ // *TODO: factorize that code : tricky with Blocks though, simple lexical approach fails
+ LLCommandManager& mgr = LLCommandManager::instance();
+
+ if (toolbar_set.left_toolbar.isProvided() && mToolbarLeft)
+ {
+ BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.left_toolbar.commands)
+ {
+ LLCommandId* commandId = new LLCommandId(command);
+ if (mgr.getCommand(*commandId))
+ {
+ mToolbarLeft->addCommand(*commandId);
+ }
+ else
+ {
+ llwarns << "Toolbars creation : the command " << commandId->name() << " cannot be found in the command manager" << llendl;
+ }
+ }
+ }
+ if (toolbar_set.right_toolbar.isProvided() && mToolbarRight)
+ {
+ BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.right_toolbar.commands)
+ {
+ LLCommandId* commandId = new LLCommandId(command);
+ if (mgr.getCommand(*commandId))
+ {
+ mToolbarRight->addCommand(*commandId);
+ }
+ else
+ {
+ llwarns << "Toolbars creation : the command " << commandId->name() << " cannot be found in the command manager" << llendl;
+ }
+ }
+ }
+ if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom)
+ {
+ BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.bottom_toolbar.commands)
+ {
+ LLCommandId* commandId = new LLCommandId(command);
+ if (mgr.getCommand(*commandId))
+ {
+ mToolbarBottom->addCommand(*commandId);
+ }
+ else
+ {
+ llwarns << "Toolbars creation : the command " << commandId->name() << " cannot be found in the command manager" << llendl;
+ }
+ }
+ }
+ return true;
+}
+
LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
: LLUICtrl(p),
mToolbarLeft(NULL),
@@ -59,6 +154,10 @@ BOOL LLToolBarView::postBuild()
mToolbarLeft = getChild("toolbar_left");
mToolbarRight = getChild("toolbar_right");
mToolbarBottom = getChild("toolbar_bottom");
+
+ // Load the toolbars from the settings
+ load();
+
return TRUE;
}
@@ -86,7 +185,7 @@ void LLToolBarView::draw()
static S32 old_width = 0;
static S32 old_height = 0;
- LLPanel* sizer_left = getChild("sizer_left");
+// LLPanel* sizer_left = getChild("sizer_left");
LLRect bottom_rect, left_rect, right_rect;
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index 2e7885f391..0f16b89ecc 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -39,18 +39,36 @@ class LLUICtrlFactory;
class LLToolBarView : public LLUICtrl
{
public:
+ // Xui structure of the toolbar panel
struct Params : public LLInitParam::Block {};
+
+ // Note: valid children for LLToolBarView are stored in this registry
+ typedef LLDefaultChildRegistry child_registry_t;
- virtual ~LLToolBarView();
- /*virtual*/ BOOL postBuild();
+ // Xml structure of the toolbars.xml setting
+ // Those live in a toolbars.xml found in app_settings (for the default) and in
+ // the user folder for the user specific (saved) settings
+ struct Toolbar : public LLInitParam::Block
+ {
+ Multiple commands;
+ Toolbar();
+ };
+ struct ToolbarSet : public LLInitParam::Block
+ {
+ Optional left_toolbar,
+ right_toolbar,
+ bottom_toolbar;
+ ToolbarSet();
+ };
+ // Derived methods
+ virtual ~LLToolBarView();
+ virtual BOOL postBuild();
virtual void draw();
+ // Toolbar view interface with the rest of the world
bool hasCommand(const LLCommandId& commandId) const;
- // valid children for LLToolBarView are stored in this registry
- typedef LLDefaultChildRegistry child_registry_t;
-
protected:
friend class LLUICtrlFactory;
LLToolBarView(const Params&);
@@ -58,6 +76,10 @@ protected:
void initFromParams(const Params&);
private:
+ // Loads the toolbars from the existing user or default settings
+ bool load(); // return false if load fails
+
+ // Pointers to the toolbars handled by the toolbar view
LLToolBar* mToolbarLeft;
LLToolBar* mToolbarRight;
LLToolBar* mToolbarBottom;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 597a1dd603..38d6ff0f58 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1423,6 +1423,7 @@ set(viewer_APPSETTINGS_FILES
app_settings/settings_files.xml
app_settings/settings_per_account.xml
app_settings/std_bump.ini
+ app_settings/toolbars.xml
app_settings/trees.xml
app_settings/ultra_graphics.xml
app_settings/viewerart.xml
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
new file mode 100644
index 0000000000..55327ea919
--- /dev/null
+++ b/indra/newview/app_settings/toolbars.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index 23ea516b86..fa7632920b 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -47,9 +47,6 @@
top="0"
side="left"
button_display_mode="icons_only">
-
-
-
-
-
-
@@ -96,9 +90,6 @@
follows="left|right|bottom"
button_display_mode="icons_with_text"
visible="true">
-
-
-
--
cgit v1.3
From 0207d7e9e4e5b509b5905256a56ac2138b35cac3 Mon Sep 17 00:00:00 2001
From: Leyla Farazha
Date: Tue, 27 Sep 2011 15:41:06 -0700
Subject: EXP-1247 Nearby chat as part of chat floater
---
indra/llui/llresizehandle.cpp | 12 +++++
indra/llui/llresizehandle.h | 5 ++
indra/newview/llchatbar.cpp | 2 +-
indra/newview/llimview.cpp | 4 +-
indra/newview/llnearbychat.cpp | 53 ++++++----------------
indra/newview/llnearbychat.h | 11 ++---
indra/newview/llnearbychatbar.cpp | 38 +++++++++++-----
indra/newview/llnearbychatbar.h | 4 +-
indra/newview/llnearbychathandler.cpp | 11 +++--
indra/newview/llnotificationhandlerutil.cpp | 2 +-
indra/newview/llnotificationtiphandler.cpp | 3 +-
indra/newview/llviewerfloaterreg.cpp | 1 -
indra/newview/llviewermessage.cpp | 4 +-
.../skins/default/xui/en/floater_chat_bar.xml | 23 +++++++---
14 files changed, 96 insertions(+), 77 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index c3a51c36c9..942e84eeb6 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -55,6 +55,8 @@ LLResizeHandle::LLResizeHandle(const LLResizeHandle::Params& p)
mImage( NULL ),
mMinWidth( p.min_width ),
mMinHeight( p.min_height ),
+ mMaxWidth(S32_MAX),
+ mMaxHeight(S32_MAX),
mCorner( p.corner )
{
if( RIGHT_BOTTOM == mCorner)
@@ -177,6 +179,11 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
new_width = mMinWidth;
delta_x = x_multiple * (mMinWidth - orig_rect.getWidth());
}
+ else if (new_width > mMaxWidth)
+ {
+ new_width = mMaxWidth;
+ delta_x = x_multiple * (mMaxWidth - orig_rect.getWidth());
+ }
S32 new_height = orig_rect.getHeight() + y_multiple * delta_y;
if( new_height < mMinHeight )
@@ -184,6 +191,11 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
new_height = mMinHeight;
delta_y = y_multiple * (mMinHeight - orig_rect.getHeight());
}
+ else if (new_height > mMaxHeight)
+ {
+ new_height = mMaxHeight;
+ delta_y = y_multiple * (mMaxHeight - orig_rect.getHeight());
+ }
switch( mCorner )
{
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
index 531eb1db61..5cfe3fb63c 100644
--- a/indra/llui/llresizehandle.h
+++ b/indra/llui/llresizehandle.h
@@ -56,6 +56,9 @@ public:
void setResizeLimits( S32 min_width, S32 min_height ) { mMinWidth = min_width; mMinHeight = min_height; }
+ void setMaxWidth(S32 width) { mMaxWidth = width;}
+ void setMaxHeight(S32 height) { mMaxHeight = height;}
+
private:
BOOL pointInHandle( S32 x, S32 y );
@@ -66,7 +69,9 @@ private:
LLCoordGL mLastMouseDir;
LLPointer mImage;
S32 mMinWidth;
+ S32 mMaxWidth;
S32 mMinHeight;
+ S32 mMaxHeight;
const ECorner mCorner;
};
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index cf0374075a..fb3abb132b 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -95,7 +95,7 @@ LLChatBar::LLChatBar()
mGestureCombo(NULL),
mObserver(NULL)
{
- setIsChrome(TRUE);
+ //setIsChrome(TRUE);
}
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 4de6976534..4602533736 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2449,8 +2449,10 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
LLChat chat(message);
chat.mSourceType = CHAT_SOURCE_SYSTEM;
+
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ LLNearbyChat* nearby_chat = chat_bar->findChild("nearby_chat");
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
if(nearby_chat)
{
nearby_chat->addMessage(chat);
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 8d57ae3a32..07e94f957a 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -57,11 +57,13 @@
static const S32 RESIZE_BAR_THICKNESS = 3;
-LLNearbyChat::LLNearbyChat(const LLSD& key)
- : LLFloater(key)
+
+static LLRegisterPanelClassWrapper t_panel_nearby_chat("panel_nearby_chat");
+
+LLNearbyChat::LLNearbyChat()
+ : LLPanel()
,mChatHistory(NULL)
{
-
}
LLNearbyChat::~LLNearbyChat()
@@ -86,29 +88,12 @@ BOOL LLNearbyChat::postBuild()
mChatHistory = getChild("chat_history");
- if(!LLFloater::postBuild())
+ if(!LLPanel::postBuild())
return false;
-
- if (mDragHandle)
- mDragHandle->setTitleVisible(TRUE);
-
+
return true;
}
-
-void LLNearbyChat::applySavedVariables()
-{
- if (mRectControl.size() > 1)
- {
- const LLRect& rect = LLFloater::getControlGroup()->getRect(mRectControl);
- if(!rect.isEmpty() && rect.isValid())
- {
- reshape(rect.getWidth(), rect.getHeight());
- setRect(rect);
- }
- }
-}
-
std::string appendTime()
{
time_t utc_time;
@@ -204,18 +189,9 @@ void LLNearbyChat::setVisible(BOOL visible)
}
}
- LLFloater::setVisible(visible);
+ LLPanel::setVisible(visible);
}
-void LLNearbyChat::onOpen(const LLSD& key )
-{
- LLFloater::onOpen(key);
-}
-
-void LLNearbyChat::setRect (const LLRect &rect)
-{
- LLFloater::setRect(rect);
-}
void LLNearbyChat::getAllowedRect(LLRect& rect)
{
@@ -238,9 +214,9 @@ void LLNearbyChat::updateChatHistoryStyle()
//static
void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
- if(nearby_chat)
- nearby_chat->updateChatHistoryStyle();
+ //LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
+ //if(nearby_chat)
+ // nearby_chat->updateChatHistoryStyle();
}
bool isWordsName(const std::string& name)
@@ -314,7 +290,8 @@ void LLNearbyChat::loadHistory()
//static
LLNearbyChat* LLNearbyChat::getInstance()
{
- return LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+ return chat_bar->findChild("nearby_chat");
}
////////////////////////////////////////////////////////////////////////////////
@@ -342,7 +319,7 @@ BOOL LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
if(mChatHistory)
mChatHistory->setFocus(TRUE);
- return LLFloater::handleMouseDown(x, y, mask);
+ return LLPanel::handleMouseDown(x, y, mask);
}
void LLNearbyChat::draw()
@@ -355,5 +332,5 @@ void LLNearbyChat::draw()
setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE);
}
- LLFloater::draw();
+ LLPanel::draw();
}
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 834a31bbf0..5ef584c8ff 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -34,10 +34,10 @@
class LLResizeBar;
class LLChatHistory;
-class LLNearbyChat: public LLFloater
+class LLNearbyChat: public LLPanel
{
public:
- LLNearbyChat(const LLSD& key);
+ LLNearbyChat();
~LLNearbyChat();
BOOL postBuild ();
@@ -54,12 +54,8 @@ public:
/*virtual*/ void onFocusLost();
/*virtual*/ void onFocusReceived();
- /*virtual*/ void onOpen (const LLSD& key);
-
/*virtual*/ void setVisible(BOOL visible);
-
- virtual void setRect (const LLRect &rect);
-
+
virtual void updateChatHistoryStyle();
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
@@ -69,7 +65,6 @@ public:
static LLNearbyChat* getInstance();
private:
- virtual void applySavedVariables();
void getAllowedRect (LLRect& rect);
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 185acb1414..258aa9a8bf 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -49,6 +49,8 @@
#include "llrootview.h"
#include "llviewerchat.h"
+#include "llresizehandle.h"
+
S32 LLNearbyChatBar::sLastSpecialChatChannel = 0;
// legacy callback glue
@@ -414,8 +416,7 @@ LLCtrlListInterface* LLGestureComboList::getListInterface()
LLNearbyChatBar::LLNearbyChatBar(const LLSD& key)
: LLFloater(key),
mChatBox(NULL)
-{
- mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
+{ mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
}
//virtual
@@ -437,6 +438,10 @@ BOOL LLNearbyChatBar::postBuild()
mChatBox->setEnableLineHistory(TRUE);
mChatBox->setFont(LLViewerChat::getChatFont());
+
+ LLUICtrl* show_btn = getChild("show_nearby_chat");
+ show_btn->setCommitCallback(boost::bind(&LLNearbyChatBar::onToggleNearbyChatPanel, this));
+
mOutputMonitor = getChild("chat_zone_indicator");
mOutputMonitor->setVisible(FALSE);
@@ -678,6 +683,25 @@ void LLNearbyChatBar::sendChat( EChatType type )
}
}
+
+void LLNearbyChatBar::onToggleNearbyChatPanel()
+{
+ LLView* nearby_chat = getChildView("nearby_chat");
+
+ if (nearby_chat->getVisible())
+ {
+ nearby_chat->setVisible(FALSE);
+ reshape(getRect().getWidth(), 60);
+ mResizeHandle[0]->setMaxHeight(60);
+ }
+ else
+ {
+ nearby_chat->setVisible(TRUE);
+ reshape(getRect().getWidth(), 360);
+ mResizeHandle[0]->setMaxHeight(S32_MAX);
+ }
+}
+
void LLNearbyChatBar::onChatBoxCommit()
{
if (mChatBox->getText().length() > 0)
@@ -781,6 +805,7 @@ void LLNearbyChatBar::startChat(const char* line)
return;
cb->setVisible(TRUE);
+ cb->setFocus(TRUE);
cb->mChatBox->setFocus(TRUE);
if (line)
@@ -812,15 +837,6 @@ void LLNearbyChatBar::stopChat()
gAgent.stopTyping();
}
-void LLNearbyChatBar::onClose(bool app_quitting)
-{
- LLFloater* nearby_chat = LLFloaterReg::findInstance("nearby_chat", LLSD());
- if (nearby_chat)
- {
- nearby_chat->closeFloater(app_quitting);
- }
-}
-
// If input of the form "/20foo" or "/20 foo", returns "foo" and channel 20.
// Otherwise returns input and channel 0.
LLWString LLNearbyChatBar::stripChannelNumber(const LLWString &mesg, S32* channel)
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index f4a8605e18..1d28a21ef3 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -108,8 +108,6 @@ public:
virtual void draw();
- virtual void onClose(bool app_quitting);
-
std::string getCurrentChat();
virtual BOOL handleKeyHere( KEY key, MASK mask );
@@ -129,6 +127,8 @@ protected:
void onChatBoxCommit();
void onChatFontChange(LLFontGL* fontp);
+ void onToggleNearbyChatPanel();
+
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
EChatType processChatTypeTriggers(EChatType type, std::string &str);
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 957b6d5f94..dcf444b048 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -41,6 +41,7 @@
#include "llfloaterreg.h"//for LLFloaterReg::getTypedInstance
#include "llviewerwindow.h"//for screen channel position
+#include "llnearbychatbar.h"
//add LLNearbyChatHandler to LLNotificationsUI namespace
using namespace LLNotificationsUI;
@@ -473,8 +474,9 @@ LLNearbyChatHandler::~LLNearbyChatHandler()
void LLNearbyChatHandler::initChannel()
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
- LLView* chat_box = LLBottomTray::getInstance()->getChildView("chat_box");
+ LLNearbyChatBar* chat_bar = LLFloaterReg::getTypedInstance("chat_bar", LLSD());
+ LLView* chat_box = chat_bar->getChatBox();
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
S32 channel_right_bound = nearby_chat->getRect().mRight;
mChannel->init(chat_box->getRect().mLeft, channel_right_bound);
}
@@ -502,7 +504,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, // WARNING - not
tmp_chat.mText = tmp_chat.mText.substr(3);
}
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
+ LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+
+ LLNearbyChat* nearby_chat = chat_bar->findChild("nearby_chat");
+
{
//sometimes its usefull to have no name at all...
//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index de90023f3b..1b767e80d4 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -385,7 +385,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
// static
void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)
{
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
{
LLChat chat_msg(notification->getMessage());
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 02b217fc94..2a08a29842 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -92,8 +92,7 @@ bool LLTipHandler::processNotification(const LLSD& notify)
LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);
// don't show toast if Nearby Chat is opened
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<
- LLNearbyChat>("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat->getVisible())
{
return false;
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b44e7283da..2ebf41299a 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -180,7 +180,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
- LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 6435904fee..961c931c02 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2190,7 +2190,7 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m
// Treat like a system message and put in chat history.
chat.mText = av_name.getCompleteName() + ": " + message;
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
{
nearby_chat->addMessage(chat);
@@ -2752,7 +2752,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Note: lie to Nearby Chat, pretending that this is NOT an IM, because
// IMs from obejcts don't open IM sessions.
- LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance("nearby_chat", LLSD());
+ LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(SYSTEM_FROM != name && nearby_chat)
{
chat.mOwnerID = from_id;
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
index d0059b281e..9d61c94eb1 100644
--- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -3,16 +3,27 @@
height="60"
layout="topleft"
legacy_header_height="20"
+ single_instance="true"
title="Nearby chat"
+ save_rect="true"
can_close="true"
can_minimize="true"
help_topic="chat_bar"
- save_rect="true"
min_height="60"
min_width="150"
can_resize="true"
name="chat_bar"
width="380">
+
+
-
+
--
cgit v1.3
From c7f5aebbb71228b705059be248e82e83ee0f9475 Mon Sep 17 00:00:00 2001
From: Leyla Farazha
Date: Tue, 27 Sep 2011 15:41:41 -0700
Subject: Nearby chat panel
---
.../skins/default/xui/en/panel_nearby_chat.xml | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 indra/newview/skins/default/xui/en/panel_nearby_chat.xml
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
new file mode 100644
index 0000000000..f766236b2e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
--
cgit v1.3
From bce16356c9e1fb76bd92a3530375e4c6c7a5430a Mon Sep 17 00:00:00 2001
From: Richard Linden
Date: Tue, 27 Sep 2011 17:47:52 -0700
Subject: fixed wobble when toggling inbox/outbox
---
indra/newview/skins/default/xui/en/sidepanel_inventory.xml | 2 ++
1 file changed, 2 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 7a176ff367..2b5e3143a4 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -67,6 +67,8 @@
top="0"
orientation="vertical"
name="inbox_outbox_layout_stack"
+ open_time_constant="0.02"
+ close_time_constant="0.02"
height="235"
width="330">
Date: Tue, 27 Sep 2011 19:06:02 -0700
Subject: EXP-1258 WIP toggle buttons between icons and icons+text modes fixed
button layout for icon+text layout stack now uses floating point precision to
avoid clamping panels to 0
---
indra/llui/llbutton.cpp | 2 +
indra/llui/lllayoutstack.cpp | 252 +++++++--------------
indra/llui/lllayoutstack.h | 18 +-
indra/llui/lltoolbar.cpp | 40 ++--
.../skins/default/xui/en/floater_test_toolbar.xml | 4 +
5 files changed, 123 insertions(+), 193 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 02ac928dfb..e1bea086b2 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -819,6 +819,7 @@ void LLButton::draw()
{
case LLFontGL::LEFT:
text_left += overlay_width + mImgOverlayLabelSpace;
+ text_width -= overlay_width + mImgOverlayLabelSpace;
mImageOverlay->draw(
mLeftHPad,
center_y - (overlay_height / 2),
@@ -836,6 +837,7 @@ void LLButton::draw()
break;
case LLFontGL::RIGHT:
text_right -= overlay_width + mImgOverlayLabelSpace;
+ text_width -= overlay_width + mImgOverlayLabelSpace;
mImageOverlay->draw(
getRect().getWidth() - mRightHPad - overlay_width,
center_y - (overlay_height / 2),
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 0d1f608e61..89b3f671a4 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -55,11 +55,12 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)
mMaxDim(p.max_dim),
mAutoResize(p.auto_resize),
mUserResize(p.user_resize),
- mFitContent(p.fit_content),
mCollapsed(FALSE),
mCollapseAmt(0.f),
mVisibleAmt(1.f), // default to fully visible
- mResizeBar(NULL)
+ mResizeBar(NULL),
+ mFractionalSize(0.f),
+ mOrientation(LLLayoutStack::HORIZONTAL)
{
// Set the expanded min dim if it is provided, otherwise it gets the p.min_dim value
if (p.expanded_min_dim.isProvided())
@@ -89,9 +90,22 @@ LLLayoutPanel::~LLLayoutPanel()
mResizeBar = NULL;
}
-F32 LLLayoutPanel::getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation)
+void LLLayoutPanel::reshape(S32 width, S32 height, BOOL called_from_parent)
{
- if (orientation == LLLayoutStack::HORIZONTAL)
+ if (mOrientation == LLLayoutStack::HORIZONTAL)
+ {
+ mFractionalSize += width - llround(mFractionalSize);
+ }
+ else
+ {
+ mFractionalSize += height - llround(mFractionalSize);
+ }
+ LLPanel::reshape(width, height, called_from_parent);
+}
+
+F32 LLLayoutPanel::getCollapseFactor()
+{
+ if (mOrientation == LLLayoutStack::HORIZONTAL)
{
F32 collapse_amt =
clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)getRelevantMinDim() / (F32)llmax(1, getRect().getWidth()));
@@ -105,14 +119,6 @@ F32 LLLayoutPanel::getCollapseFactor(LLLayoutStack::ELayoutOrientation orientati
}
}
-void LLLayoutPanel::fitToContent()
-{
- if (mFitContent)
- {
- setShape(calcBoundingRect());
- }
-}
-
//
// LLLayoutStack
//
@@ -158,11 +164,11 @@ void LLLayoutStack::draw()
// scale clipping rectangle by visible amount
if (mOrientation == HORIZONTAL)
{
- clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor(mOrientation));
+ clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor());
}
else
{
- clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor(mOrientation));
+ clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor());
}
LLPanel* panelp = (*panel_it);
@@ -202,36 +208,15 @@ bool LLLayoutStack::addChild(LLView* child, S32 tab_group)
LLLayoutPanel* panelp = dynamic_cast(child);
if (panelp)
{
+ panelp->mFractionalSize = (mOrientation == HORIZONTAL)
+ ? panelp->getRect().getWidth()
+ : panelp->getRect().getHeight();
+ panelp->setOrientation(mOrientation);
mPanels.push_back(panelp);
}
return LLView::addChild(child, tab_group);
}
-
-S32 LLLayoutStack::getDefaultHeight(S32 cur_height)
-{
- // if we are spanning our children (crude upward propagation of size)
- // then don't enforce our size on our children
- if (mOrientation == HORIZONTAL)
- {
- cur_height = llmax(mMinHeight, getRect().getHeight());
- }
-
- return cur_height;
-}
-
-S32 LLLayoutStack::getDefaultWidth(S32 cur_width)
-{
- // if we are spanning our children (crude upward propagation of size)
- // then don't enforce our size on our children
- if (mOrientation == VERTICAL)
- {
- cur_width = llmax(mMinWidth, getRect().getWidth());
- }
-
- return cur_width;
-}
-
void LLLayoutStack::movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front)
{
LLLayoutPanel* embedded_panel_to_move = findEmbeddedPanel(panel_to_move);
@@ -326,14 +311,15 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
createResizeBars();
// calculate current extents
- S32 total_width = 0;
- S32 total_height = 0;
+ F32 total_size = 0.f;
+ //
+ // animate visibility
+ //
e_panel_list_t::iterator panel_it;
for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
{
LLLayoutPanel* panelp = (*panel_it);
- panelp->fitToContent();
if (panelp->getVisible())
{
if (mAnimate)
@@ -371,181 +357,110 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
}
}
- if (panelp->mCollapsed)
- {
- panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, 1.f, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
- }
- else
- {
- panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, 0.f, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
- }
+ F32 collapse_state = panelp->mCollapsed ? 1.f : 0.f;
+ panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, collapse_state, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
- if (mOrientation == HORIZONTAL)
+ total_size += panelp->mFractionalSize * panelp->getCollapseFactor();
+ // want n-1 panel gaps for n panels
+ if (panel_it != mPanels.begin())
{
- // enforce minimize size constraint by default
- if (panelp->getRect().getWidth() < panelp->getRelevantMinDim())
- {
- panelp->reshape(panelp->getRelevantMinDim(), panelp->getRect().getHeight());
- }
- total_width += llround(panelp->getRect().getWidth() * panelp->getCollapseFactor(mOrientation));
- // want n-1 panel gaps for n panels
- if (panel_it != mPanels.begin())
- {
- total_width += mPanelSpacing;
- }
- }
- else //VERTICAL
- {
- // enforce minimize size constraint by default
- if (panelp->getRect().getHeight() < panelp->getRelevantMinDim())
- {
- panelp->reshape(panelp->getRect().getWidth(), panelp->getRelevantMinDim());
- }
- total_height += llround(panelp->getRect().getHeight() * panelp->getCollapseFactor(mOrientation));
- if (panel_it != mPanels.begin())
- {
- total_height += mPanelSpacing;
- }
+ total_size += mPanelSpacing;
}
}
S32 num_resizable_panels = 0;
- S32 shrink_headroom_available = 0;
- S32 shrink_headroom_total = 0;
+ F32 shrink_headroom_available = 0.f;
+ F32 shrink_headroom_total = 0.f;
for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
{
+ LLLayoutPanel* panelp = (*panel_it);
+
// panels that are not fully visible do not count towards shrink headroom
- if ((*panel_it)->getCollapseFactor(mOrientation) < 1.f)
+ if (panelp->getCollapseFactor() < 1.f)
{
continue;
}
- S32 relevant_dimension = (mOrientation == HORIZONTAL) ? (*panel_it)->getRect().getWidth() : (*panel_it)->getRect().getHeight();
- S32 relevant_min = (*panel_it)->getRelevantMinDim();
+ F32 cur_size = panelp->mFractionalSize;
+ F32 min_size = (F32)panelp->getRelevantMinDim();
// if currently resizing a panel or the panel is flagged as not automatically resizing
// only track total available headroom, but don't use it for automatic resize logic
- if ((*panel_it)->mResizeBar->hasMouseCapture()
- || (!(*panel_it)->mAutoResize
+ if (panelp->mResizeBar->hasMouseCapture()
+ || (!panelp->mAutoResize
&& !force_resize))
{
- shrink_headroom_total += relevant_dimension - relevant_min;
+ shrink_headroom_total += cur_size - min_size;
}
else
{
num_resizable_panels++;
- shrink_headroom_available += relevant_dimension - relevant_min;
- shrink_headroom_total += relevant_dimension - relevant_min;
+ shrink_headroom_available += cur_size - min_size;
+ shrink_headroom_total += cur_size - min_size;
}
}
// calculate how many pixels need to be distributed among layout panels
// positive means panels need to grow, negative means shrink
- S32 pixels_to_distribute;
- if (mOrientation == HORIZONTAL)
- {
- pixels_to_distribute = getRect().getWidth() - total_width;
- }
- else //VERTICAL
- {
- pixels_to_distribute = getRect().getHeight() - total_height;
- }
+ F32 pixels_to_distribute = (mOrientation == HORIZONTAL)
+ ? getRect().getWidth() - total_size
+ : getRect().getHeight() - total_size;
// now we distribute the pixels...
- S32 cur_x = 0;
- S32 cur_y = getRect().getHeight();
+ F32 cur_x = 0.f;
+ F32 cur_y = (F32)getRect().getHeight();
for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
{
LLLayoutPanel* panelp = (*panel_it);
- S32 cur_width = panelp->getRect().getWidth();
- S32 cur_height = panelp->getRect().getHeight();
- S32 new_width = cur_width;
- S32 new_height = cur_height;
- S32 relevant_min = panelp->getRelevantMinDim();
-
- if (mOrientation == HORIZONTAL)
- {
- new_width = llmax(relevant_min, new_width);
- }
- else
- {
- new_height = llmax(relevant_min, new_height);
- }
- S32 delta_size = 0;
+ F32 min_size = panelp->getRelevantMinDim();
+ F32 delta_size = 0.f;
// if panel can automatically resize (not animating, and resize flag set)...
- if (panelp->getCollapseFactor(mOrientation) == 1.f
+ if (panelp->getCollapseFactor() == 1.f
&& (force_resize || panelp->mAutoResize)
&& !panelp->mResizeBar->hasMouseCapture())
{
- if (mOrientation == HORIZONTAL)
+ if (pixels_to_distribute < 0.f)
{
- // if we're shrinking
- if (pixels_to_distribute < 0)
- {
- // shrink proportionally to amount over minimum
- // so we can do this in one pass
- delta_size = (shrink_headroom_available > 0)
- ? llround((F32)pixels_to_distribute * ((F32)(cur_width - relevant_min) / (F32)shrink_headroom_available))
- : 0;
- shrink_headroom_available -= (cur_width - relevant_min);
- }
- else
- {
- // grow all elements equally
- delta_size = llround((F32)pixels_to_distribute / (F32)num_resizable_panels);
- num_resizable_panels--;
- }
- pixels_to_distribute -= delta_size;
- new_width = llmax(relevant_min, cur_width + delta_size);
+ // shrink proportionally to amount over minimum
+ // so we can do this in one pass
+ delta_size = (shrink_headroom_available > 0.f)
+ ? pixels_to_distribute * ((F32)(panelp->mFractionalSize - min_size) / shrink_headroom_available)
+ : 0.f;
+ shrink_headroom_available -= (panelp->mFractionalSize - min_size);
}
else
{
- new_width = getDefaultWidth(new_width);
- }
-
- if (mOrientation == VERTICAL)
- {
- if (pixels_to_distribute < 0)
- {
- // shrink proportionally to amount over minimum
- // so we can do this in one pass
- delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - relevant_min) / (F32)shrink_headroom_available)) : 0;
- shrink_headroom_available -= (cur_height - relevant_min);
- }
- else
- {
- delta_size = llround((F32)pixels_to_distribute / (F32)num_resizable_panels);
- num_resizable_panels--;
- }
- pixels_to_distribute -= delta_size;
- new_height = llmax(relevant_min, cur_height + delta_size);
- }
- else
- {
- new_height = getDefaultHeight(new_height);
- }
- }
- else
- {
- if (mOrientation == HORIZONTAL)
- {
- new_height = getDefaultHeight(new_height);
- }
- else // VERTICAL
- {
- new_width = getDefaultWidth(new_width);
+ // grow all elements equally
+ delta_size = pixels_to_distribute / (F32)num_resizable_panels;
+ num_resizable_panels--;
}
+
+ panelp->mFractionalSize = llmax(min_size, panelp->mFractionalSize + delta_size);
+ pixels_to_distribute -= delta_size;
}
// adjust running headroom count based on new sizes
shrink_headroom_total += delta_size;
LLRect panel_rect;
- panel_rect.setLeftTopAndSize(cur_x, cur_y, new_width, new_height);
+ if (mOrientation == HORIZONTAL)
+ {
+ panel_rect.setLeftTopAndSize(llround(cur_x),
+ llround(cur_y),
+ llround(panelp->mFractionalSize),
+ getRect().getHeight());
+ }
+ else
+ {
+ panel_rect.setLeftTopAndSize(llround(cur_x),
+ llround(cur_y),
+ getRect().getWidth(),
+ llround(panelp->mFractionalSize));
+ }
panelp->setShape(panel_rect);
LLRect resize_bar_rect = panel_rect;
@@ -561,13 +476,14 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
}
(*panel_it)->mResizeBar->setRect(resize_bar_rect);
+ F32 size = ((*panel_it)->mFractionalSize * (*panel_it)->getCollapseFactor()) + (F32)mPanelSpacing;
if (mOrientation == HORIZONTAL)
{
- cur_x += llround(new_width * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing;
+ cur_x += size;
}
else //VERTICAL
{
- cur_y -= llround(new_height * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing;
+ cur_y -= size;
}
}
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index 2ed32a2fa9..5d79505fc3 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -126,8 +126,6 @@ protected:
private:
void createResizeBars();
void calcMinExtents();
- S32 getDefaultHeight(S32 cur_height);
- S32 getDefaultWidth(S32 cur_width);
const ELayoutOrientation mOrientation;
@@ -161,16 +159,14 @@ public:
min_dim,
max_dim;
Optional user_resize,
- auto_resize,
- fit_content;
+ auto_resize;
Params()
: expanded_min_dim("expanded_min_dim", 0),
min_dim("min_dim", 0),
max_dim("max_dim", 0),
user_resize("user_resize", true),
- auto_resize("auto_resize", true),
- fit_content("fit_content", false)
+ auto_resize("auto_resize", true)
{
addSynonym(min_dim, "min_width");
addSynonym(min_dim, "min_height");
@@ -183,6 +179,8 @@ public:
void initFromParams(const Params& p);
+ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
S32 getMinDim() const { return mMinDim; }
void setMinDim(S32 value) { mMinDim = value; if (!mExpandedMinDimSpecified) mExpandedMinDim = value; }
@@ -204,11 +202,12 @@ public:
return min_dim;
}
+ void setOrientation(LLLayoutStack::ELayoutOrientation orientation) { mOrientation = orientation; }
+
protected:
LLLayoutPanel(const Params& p);
- F32 getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation);
- void fitToContent();
+ F32 getCollapseFactor();
bool mExpandedMinDimSpecified;
S32 mExpandedMinDim;
@@ -218,9 +217,10 @@ protected:
bool mAutoResize;
bool mUserResize;
bool mCollapsed;
- bool mFitContent;
F32 mVisibleAmt;
F32 mCollapseAmt;
+ F32 mFractionalSize;
+ LLLayoutStack::ELayoutOrientation mOrientation;
class LLResizeBar* mResizeBar;
};
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 677d50a0c7..57a9151649 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -126,14 +126,13 @@ void LLToolBar::createContextMenu()
{
// Setup bindings specific to this instance for the context menu options
- LLUICtrl::CommitCallbackRegistry::Registrar& commit_reg = LLUICtrl::CommitCallbackRegistry::defaultRegistrar();
+ LLUICtrl::CommitCallbackRegistry::ScopedRegistrar commit_reg;
commit_reg.add("Toolbars.EnableSetting", boost::bind(&LLToolBar::onSettingEnable, this, _2));
- LLUICtrl::EnableCallbackRegistry::Registrar& enable_reg = LLUICtrl::EnableCallbackRegistry::defaultRegistrar();
+ LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_reg;
enable_reg.add("Toolbars.CheckSetting", boost::bind(&LLToolBar::isSettingChecked, this, _2));
// Create the context menu
-
LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
if (menu)
@@ -146,10 +145,6 @@ void LLToolBar::createContextMenu()
{
llwarns << "Unable to load toolbars context menu." << llendl;
}
-
- // Remove this instance's bindings
- commit_reg.remove("Toolbars.EnableSetting");
- enable_reg.remove("Toolbars.CheckSetting");
}
}
@@ -184,7 +179,6 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
center_panel_p.rect = getLocalRect();
center_panel_p.auto_resize = false;
center_panel_p.user_resize = false;
- center_panel_p.fit_content = true;
LLLayoutPanel* center_panel = LLUICtrlFactory::create(center_panel_p);
mCenteringStack->addChild(center_panel);
@@ -196,6 +190,11 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
mCenteringStack->addChild(LLUICtrlFactory::create(border_panel_p));
+ BOOST_FOREACH(LLCommandId::Params params, p.commands)
+ {
+ addCommand(params);
+ }
+
mNeedsLayout = true;
}
@@ -207,8 +206,8 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)
if (add_command)
{
- mButtonCommands.push_back(commandId);
- createButtons();
+ mButtonCommands.push_back(commandId);
+ createButtons();
}
return add_command;
@@ -220,9 +219,9 @@ bool LLToolBar::hasCommand(const LLCommandId& commandId) const
if (commandId != LLCommandId::null)
{
- for (std::list::const_iterator cmd = mButtonCommands.begin(); cmd != mButtonCommands.end(); ++cmd)
+ BOOST_FOREACH(LLCommandId cmd, mButtonCommands)
{
- if ((*cmd) == commandId)
+ if (cmd == commandId)
{
has_command = true;
break;
@@ -410,11 +409,11 @@ void LLToolBar::updateLayoutAsNeeded()
cur_start = row_pad_start;
cur_row += max_row_girth + mPadBetween;
max_row_girth = 0;
- }
+ }
- LLRect button_rect;
- if (orientation == LLLayoutStack::HORIZONTAL)
- {
+ LLRect button_rect;
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
}
else // VERTICAL
@@ -460,6 +459,9 @@ void LLToolBar::updateLayoutAsNeeded()
mButtonPanel->reshape(total_girth, max_row_length);
}
+ // make parent fit button panel
+ mButtonPanel->getParent()->setShape(mButtonPanel->getLocalRect());
+
// re-center toolbar buttons
mCenteringStack->updateLayout();
@@ -470,7 +472,13 @@ void LLToolBar::updateLayoutAsNeeded()
void LLToolBar::draw()
{
+ if (mButtons.empty()) return;
updateLayoutAsNeeded();
+ // rect may have shifted during layout
+ LLUI::popMatrix();
+ LLUI::pushMatrix();
+ LLUI::translate((F32)getRect().mLeft, (F32)getRect().mBottom, 0.f);
+
LLUICtrl::draw();
}
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
index fbfbe51a69..067c1fed82 100644
--- a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -8,6 +8,7 @@
translate="false"
width="500">
Date: Wed, 28 Sep 2011 00:41:10 -0500
Subject: SH-2507 Shave some unused/redundant varying state and make the max
texture index debug setting rebuild shaders to use no flow control when set
to 1 or lower
---
indra/llrender/llglslshader.cpp | 8 +--
indra/llrender/llglslshader.h | 2 +-
indra/llrender/llshadermgr.cpp | 56 ++++++++++++---
indra/newview/app_settings/settings.xml | 2 +-
.../shaders/class1/avatar/avatarV.glsl | 4 +-
.../shaders/class1/deferred/alphaSkinnedV.glsl | 4 +-
.../shaders/class1/deferred/alphaV.glsl | 10 +--
.../shaders/class1/deferred/avatarAlphaV.glsl | 4 +-
.../shaders/class1/deferred/diffuseNoColorV.glsl | 2 +-
.../shaders/class1/deferred/diffuseV.glsl | 7 +-
.../shaders/class1/deferred/emissiveV.glsl | 10 +--
.../shaders/class1/deferred/fullbrightV.glsl | 10 +--
.../shaders/class1/environment/waterFogF.glsl | 2 +-
.../shaders/class1/objects/emissiveSkinnedV.glsl | 4 +-
.../shaders/class1/objects/emissiveV.glsl | 10 +--
.../shaders/class1/objects/fullbrightNoColorV.glsl | 4 +-
.../class1/objects/fullbrightShinySkinnedV.glsl | 4 +-
.../shaders/class1/objects/fullbrightShinyV.glsl | 4 +-
.../shaders/class1/objects/fullbrightSkinnedV.glsl | 4 +-
.../shaders/class1/objects/fullbrightV.glsl | 4 +-
.../shaders/class1/objects/indexedTextureV.glsl | 34 +++++++++
.../shaders/class1/objects/nonindexedTextureV.glsl | 30 ++++++++
.../shaders/class1/objects/previewV.glsl | 4 +-
.../shaders/class1/objects/shinyV.glsl | 4 +-
.../shaders/class1/objects/simpleNoColorV.glsl | 4 +-
.../shaders/class1/objects/simpleSkinnedV.glsl | 4 +-
.../shaders/class1/objects/simpleV.glsl | 4 +-
.../app_settings/shaders/class1/objects/treeV.glsl | 4 +-
.../class1/windlight/atmosphericsVarsF.glsl | 5 +-
.../class1/windlight/atmosphericsVarsV.glsl | 7 +-
.../class1/windlight/atmosphericsVarsWaterF.glsl | 33 +++++++++
.../class1/windlight/atmosphericsVarsWaterV.glsl | 39 +++++++++++
.../shaders/class2/avatar/eyeballV.glsl | 4 +-
.../shaders/class2/deferred/alphaSkinnedV.glsl | 4 +-
.../shaders/class2/deferred/alphaV.glsl | 10 +--
.../shaders/class2/deferred/avatarAlphaV.glsl | 4 +-
.../shaders/class2/objects/fullbrightShinyV.glsl | 10 ++-
.../shaders/class2/objects/fullbrightV.glsl | 10 +--
.../shaders/class2/objects/shinyV.glsl | 11 +--
.../shaders/class2/objects/simpleNonIndexedV.glsl | 4 +-
.../shaders/class2/objects/simpleV.glsl | 10 +--
.../class2/windlight/atmosphericsVarsF.glsl | 16 ++---
.../class2/windlight/atmosphericsVarsV.glsl | 36 +++++-----
.../class2/windlight/atmosphericsVarsWaterF.glsl | 51 ++++++++++++++
.../class2/windlight/atmosphericsVarsWaterV.glsl | 81 ++++++++++++++++++++++
indra/newview/featuretable.txt | 1 +
indra/newview/featuretable_xp.txt | 1 +
indra/newview/llviewercontrol.cpp | 2 +-
indra/newview/llviewershadermgr.cpp | 23 +++---
49 files changed, 443 insertions(+), 162 deletions(-)
create mode 100644 indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
create mode 100644 indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
create mode 100644 indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
(limited to 'indra/newview')
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 674d6dcf7e..3b6cc084b1 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -51,6 +51,7 @@ using std::string;
GLhandleARB LLGLSLShader::sCurBoundShader = 0;
LLGLSLShader* LLGLSLShader::sCurBoundShaderPtr = NULL;
+S32 LLGLSLShader::sIndexedTextureChannels = NULL;
bool LLGLSLShader::sNoFixedFunction = false;
//UI shader -- declared here so llui_libtest will link properly
@@ -125,13 +126,6 @@ BOOL LLGLSLShader::createShader(vector * attributes,
// Create program
mProgramObject = glCreateProgramObjectARB();
-#if !LL_DARWIN
- if (gGLManager.mGLVersion < 3.1f)
- { //force indexed texture channels to 1 if GL version is old (performance improvement for drivers with poor branching shader model support)
- mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
- }
-#endif // !LL_DARWIN
-
//compile new source
vector< pair >::iterator fileIter = mShaderFiles.begin();
for ( ; fileIter != mShaderFiles.end(); fileIter++ )
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 04dc594d87..beef57796d 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -69,7 +69,7 @@ public:
static GLhandleARB sCurBoundShader;
static LLGLSLShader* sCurBoundShaderPtr;
-
+ static S32 sIndexedTextureChannels;
static bool sNoFixedFunction;
void unload();
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 7dde24a437..16180c6831 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -81,7 +81,14 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
// NOTE order of shader object attaching is VERY IMPORTANT!!!
if (features->calculatesAtmospherics)
{
- if (!shader->attachObject("windlight/atmosphericsVarsV.glsl"))
+ if (features->hasWaterFog)
+ {
+ if (!shader->attachObject("windlight/atmosphericsVarsWaterV.glsl"))
+ {
+ return FALSE;
+ }
+ }
+ else if (!shader->attachObject("windlight/atmosphericsVarsV.glsl"))
{
return FALSE;
}
@@ -161,7 +168,14 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
if(features->calculatesAtmospherics)
{
- if (!shader->attachObject("windlight/atmosphericsVarsF.glsl"))
+ if (features->hasWaterFog)
+ {
+ if (!shader->attachObject("windlight/atmosphericsVarsWaterF.glsl"))
+ {
+ return FALSE;
+ }
+ }
+ else if (!shader->attachObject("windlight/atmosphericsVarsF.glsl"))
{
return FALSE;
}
@@ -241,7 +255,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
return FALSE;
}
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
@@ -280,7 +294,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
return FALSE;
}
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
}
@@ -304,7 +318,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
{
return FALSE;
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
else if (features->hasWaterFog)
@@ -336,7 +350,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
{
return FALSE;
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
@@ -355,7 +369,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
{
return FALSE;
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
@@ -395,7 +409,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
return FALSE;
}
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
}
@@ -419,7 +433,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
{
return FALSE;
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
@@ -438,10 +452,26 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
{
return FALSE;
}
- shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+ shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
}
}
}
+
+ if (features->mIndexedTextureChannels <= 1)
+ {
+ if (!shader->attachObject("objects/nonindexedTextureV.glsl"))
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (!shader->attachObject("objects/indexedTextureV.glsl"))
+ {
+ return FALSE;
+ }
+ }
+
return TRUE;
}
@@ -631,7 +661,11 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
text[count++] = strdup(decl.c_str());
}
- text[count++] = strdup("VARYING float vary_texture_index;\n");
+ if (texture_index_channels > 1)
+ {
+ text[count++] = strdup("VARYING float vary_texture_index;\n");
+ }
+
text[count++] = strdup("vec4 diffuseLookup(vec2 texcoord)\n");
text[count++] = strdup("{\n");
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index ddc4f4ddd2..727851b4da 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7796,7 +7796,7 @@
Type
U32
Value
- 6
+ 32
RenderDebugTextureBind
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
index cf939e2df8..2901e18db8 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
@@ -31,7 +31,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
mat4 getSkinnedTransform();
@@ -59,8 +59,6 @@ void main()
gl_Position = projection_matrix * pos;
- fog_depth = length(pos.xyz);
-
calcAtmospherics(pos.xyz);
vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0,0,0,0));
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
index 15781bc92d..b09441f7eb 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
@@ -49,7 +49,7 @@ VARYING vec3 vary_fragcoord;
VARYING vec3 vary_pointlight_col;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
uniform float near_clip;
@@ -135,7 +135,7 @@ void main()
vertex_color = col;
- fog_depth = pos.z;
+
vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index 74ee082bed..93b1a114db 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -29,7 +29,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -50,10 +50,10 @@ VARYING vec3 vary_fragcoord;
VARYING vec3 vary_position;
VARYING vec3 vary_light;
VARYING vec3 vary_pointlight_col;
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
uniform float near_clip;
uniform float shadow_offset;
@@ -98,7 +98,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
- vary_texture_index = texture_index;
+ passTextureIndex();
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
@@ -138,7 +138,7 @@ void main()
vertex_color = col;
- fog_depth = pos.z;
+
pos = modelview_projection_matrix * vert;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
index 12e88ca5dd..acbc3f7e15 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
@@ -48,7 +48,7 @@ VARYING vec3 vary_fragcoord;
VARYING vec3 vary_pointlight_col;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
uniform float near_clip;
@@ -137,7 +137,7 @@ void main()
vertex_color = col;
- fog_depth = pos.z;
+
vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
index 7ed41cbcb9..9461e3e32e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
@@ -32,7 +32,7 @@ ATTRIBUTE vec3 normal;
ATTRIBUTE vec2 texcoord0;
VARYING vec3 vary_normal;
-VARYING float vary_texture_index;
+
VARYING vec2 vary_texcoord0;
void main()
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
index 908f3abcd0..76d29b1df7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
@@ -28,23 +28,24 @@ uniform mat4 texture_matrix0;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec2 texcoord0;
VARYING vec3 vary_normal;
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
+void passTextureIndex();
+
void main()
{
//transform vertex
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_texture_index = texture_index;
+ passTextureIndex();
vary_normal = normalize(normal_matrix * normal);
vertex_color = diffuse_color;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
index 7b108e4562..115b04797f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
@@ -28,7 +28,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec4 emissive;
ATTRIBUTE vec2 texcoord0;
@@ -39,17 +39,17 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
vec4 pos = (modelview_matrix * vert);
- vary_texture_index = texture_index;
+ passTextureIndex();
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
@@ -59,5 +59,5 @@ void main()
vertex_color = emissive;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
index ab638991f7..2e6982d101 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
@@ -29,7 +29,7 @@ uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -40,17 +40,17 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light);
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
vec4 pos = (modelview_matrix * vert);
- vary_texture_index = texture_index;
+ passTextureIndex();
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
@@ -60,5 +60,5 @@ void main()
vertex_color = diffuse_color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
index 57b3a6d001..45bd5c8b42 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
@@ -24,7 +24,7 @@
*/
-VARYING float fog_depth;
+
uniform vec4 waterFogColor;
uniform float waterFogEnd;
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
index 8c38d5df2a..8494ffba52 100644
--- a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
@@ -33,7 +33,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void calcAtmospherics(vec3 inPositionEye);
mat4 getObjectSkinnedTransform();
@@ -54,5 +54,5 @@ void main()
gl_Position = projection_matrix*vec4(pos, 1.0);
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
index 35feacb7b1..e984deb0c8 100644
--- a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
@@ -28,7 +28,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec4 emissive;
ATTRIBUTE vec2 texcoord0;
@@ -37,13 +37,13 @@ VARYING vec2 vary_texcoord0;
void calcAtmospherics(vec3 inPositionEye);
-VARYING float vary_texture_index;
-VARYING float fog_depth;
+
+
void main()
{
//transform vertex
- vary_texture_index = texture_index;
+ passTextureIndex();
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
@@ -52,5 +52,5 @@ void main()
vertex_color = emissive;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
index f73760bfd4..5d6f14230c 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
@@ -33,7 +33,7 @@ ATTRIBUTE vec3 normal;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void calcAtmospherics(vec3 inPositionEye);
@@ -49,5 +49,5 @@ void main()
vertex_color = vec4(1,1,1,1);
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
index 69cd858b4d..79b552ee1a 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
@@ -35,7 +35,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
VARYING vec3 vary_texcoord1;
-VARYING float fog_depth;
+
void calcAtmospherics(vec3 inPositionEye);
mat4 getObjectSkinnedTransform();
@@ -63,5 +63,5 @@ void main()
gl_Position = projection_matrix*vec4(pos, 1.0);
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
index a8e640018d..8d1bbf350d 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
@@ -37,7 +37,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
VARYING vec3 vary_texcoord1;
-VARYING float fog_depth;
+
void calcAtmospherics(vec3 inPositionEye);
@@ -59,5 +59,5 @@ void main()
vertex_color = diffuse_color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
index 4de24fd46b..eff75435a9 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
@@ -35,7 +35,7 @@ mat4 getObjectSkinnedTransform();
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void main()
{
@@ -53,5 +53,5 @@ void main()
gl_Position = projection_matrix*vec4(pos, 1.0);
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
index 7286e5e2f4..8b20c2a860 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
@@ -33,7 +33,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void calcAtmospherics(vec3 inPositionEye);
@@ -50,5 +50,5 @@ void main()
vertex_color = diffuse_color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
new file mode 100644
index 0000000000..a95c9e0ab9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
@@ -0,0 +1,34 @@
+/**
+ * @file indexedTextureV.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$
+ */
+
+ATTRIBUTE float texture_index;
+
+VARYING float vary_texture_index;
+
+void passTextureIndex()
+{
+ vary_texture_index = texture_index;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
new file mode 100644
index 0000000000..2839171044
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
@@ -0,0 +1,30 @@
+/**
+ * @file nonindexedTextureV.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$
+ */
+
+void passTextureIndex()
+{
+
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
index 282686a9b0..5dcfa87066 100644
--- a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
@@ -34,7 +34,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -53,5 +53,5 @@ void main()
vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
vertex_color = color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
index 86a78b190c..4ca53a8f30 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
@@ -35,7 +35,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec3 vary_texcoord0;
-VARYING float fog_depth;
+
void calcAtmospherics(vec3 inPositionEye);
@@ -57,6 +57,6 @@ void main()
vary_texcoord0 = (texture_matrix0*vec4(ref,1.0)).xyz;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
index 45a493e4f2..706627e175 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
@@ -34,7 +34,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -53,5 +53,5 @@ void main()
vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
vertex_color = color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
index aea0e25e60..1c6e53b187 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
@@ -33,7 +33,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -61,5 +61,5 @@ void main()
gl_Position = projection_matrix*vec4(pos, 1.0);
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
index 4b6b219751..df9111f941 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
@@ -35,7 +35,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -53,6 +53,4 @@ void main()
vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
vertex_color = color;
-
- fog_depth = pos.z;
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
index 250d99a9c7..fa01a27ec0 100644
--- a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
@@ -37,7 +37,7 @@ void calcAtmospherics(vec3 inPositionEye);
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void main()
{
@@ -56,5 +56,5 @@ void main()
vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
vertex_color = color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
index 2e41360150..8bdae328bd 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
@@ -24,10 +24,7 @@
*/
-
-VARYING vec3 vary_PositionEye;
-
vec3 getPositionEye()
{
- return vary_PositionEye;
+ return vec3(0,0,0);
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
index 42f8646f2d..8ec9ae617c 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
@@ -25,15 +25,12 @@
-VARYING vec3 vary_PositionEye;
-
-
vec3 getPositionEye()
{
- return vary_PositionEye;
+ return vec3(0,0,0);
}
void setPositionEye(vec3 v)
{
- vary_PositionEye = v;
+
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
new file mode 100644
index 0000000000..636d4af006
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
@@ -0,0 +1,33 @@
+/**
+ * @file atmosphericVarsWaterF.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$
+ */
+
+
+VARYING vec3 vary_PositionEye;
+
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
new file mode 100644
index 0000000000..ef34c5c853
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
@@ -0,0 +1,39 @@
+/**
+ * @file atmosphericVarsWaterV.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$
+ */
+
+
+VARYING vec3 vary_PositionEye;
+VARYING float fog_depth;
+
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
+void setPositionEye(vec3 v)
+{
+ vary_PositionEye = v;
+ fog_depth = v.z;
+}
diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
index 04d3e2aa1f..5af9f5c902 100644
--- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
+++ b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
@@ -35,7 +35,7 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -56,7 +56,7 @@ void main()
vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular, vec4(0.0));
vertex_color = color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
index ad353eb624..5a3955ef00 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
@@ -50,7 +50,7 @@ VARYING vec3 vary_pointlight_col;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
uniform float near_clip;
uniform float shadow_offset;
@@ -140,7 +140,7 @@ void main()
vertex_color = col;
- fog_depth = pos.z;
+
pos.xyz = (modelview_projection_matrix * vec4(position.xyz, 1.0)).xyz;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 6a3777c7c8..9540ddd2e8 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -29,7 +29,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -49,10 +49,10 @@ VARYING vec3 vary_directional;
VARYING vec3 vary_fragcoord;
VARYING vec3 vary_position;
VARYING vec3 vary_pointlight_col;
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
uniform float near_clip;
uniform float shadow_offset;
@@ -97,7 +97,7 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
- vary_texture_index = texture_index;
+ passTextureIndex();
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
@@ -136,7 +136,7 @@ void main()
vertex_color = col;
- fog_depth = pos.z;
+
pos = modelview_projection_matrix * vert;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
index 091a865160..63c7a6b13d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
@@ -48,7 +48,7 @@ VARYING vec3 vary_fragcoord;
VARYING vec3 vary_pointlight_col;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
uniform float near_clip;
uniform float shadow_offset;
@@ -139,7 +139,7 @@ void main()
vertex_color = col;
- fog_depth = pos.z;
+
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
}
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
index 580ef2694f..34bd8d445a 100644
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
@@ -34,10 +34,10 @@ void calcAtmospherics(vec3 inPositionEye);
uniform vec4 origin;
-VARYING float vary_texture_index;
+
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
@@ -45,13 +45,13 @@ ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
VARYING vec3 vary_texcoord1;
-VARYING float fog_depth;
+
void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = texture_index;
+ passTextureIndex();
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
@@ -64,6 +64,4 @@ void main()
calcAtmospherics(pos.xyz);
vertex_color = diffuse_color;
-
- fog_depth = pos.z;
}
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
index 09dbd0b6cd..fc20d3270e 100644
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
@@ -28,7 +28,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
@@ -36,16 +36,16 @@ ATTRIBUTE vec4 diffuse_color;
void calcAtmospherics(vec3 inPositionEye);
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = texture_index;
+ passTextureIndex();
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
@@ -54,5 +54,5 @@ void main()
vertex_color = diffuse_color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
index 86c592ea57..fdb3453cc5 100644
--- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
@@ -30,7 +30,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
@@ -43,16 +43,13 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
-VARYING float vary_texture_index;
-VARYING float fog_depth;
-
uniform vec4 origin;
void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = texture_index;
+ passTextureIndex();
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
@@ -64,7 +61,5 @@ void main()
calcAtmospherics(pos.xyz);
- vertex_color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.0));
-
- fog_depth = pos.z;
+ vertex_color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.0));
}
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl
index 6799e43b9a..cb80697d15 100644
--- a/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl
@@ -35,7 +35,7 @@ ATTRIBUTE vec4 diffuse_color;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -57,5 +57,5 @@ void main()
vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
vertex_color = color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
index 8e8f0664b0..37a20383e2 100644
--- a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
+++ b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
@@ -29,7 +29,7 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
-ATTRIBUTE float texture_index;
+void passTextureIndex();
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
@@ -37,16 +37,16 @@ ATTRIBUTE vec4 diffuse_color;
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
-VARYING float vary_texture_index;
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-VARYING float fog_depth;
+
void main()
{
//transform vertex
vec4 vert = vec4(position.xyz,1.0);
- vary_texture_index = texture_index;
+ passTextureIndex();
vec4 pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
@@ -60,5 +60,5 @@ void main()
vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
vertex_color = color;
- fog_depth = pos.z;
+
}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
index 08814b49d8..e8e56e12c1 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
@@ -24,25 +24,17 @@
*/
-
-VARYING vec3 vary_PositionEye;
-
VARYING vec3 vary_SunlitColor;
-VARYING vec3 vary_AmblitColor;
VARYING vec3 vary_AdditiveColor;
-VARYING vec3 vary_AtmosAttenuation;
+VARYING float vary_AtmosAttenuation;
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
vec3 getSunlitColor()
{
- return vary_SunlitColor;
+ return vec3(0,0,0);
}
vec3 getAmblitColor()
{
- return vary_AmblitColor;
+ return vec3(0,0,0);
}
vec3 getAdditiveColor()
{
@@ -50,5 +42,5 @@ vec3 getAdditiveColor()
}
vec3 getAtmosAttenuation()
{
- return vary_AtmosAttenuation;
+ return vec3(vary_AtmosAttenuation);
}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
index 514f009add..01605e5b25 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
@@ -24,49 +24,50 @@
*/
-
-VARYING vec3 vary_PositionEye;
-
-VARYING vec3 vary_SunlitColor;
-VARYING vec3 vary_AmblitColor;
VARYING vec3 vary_AdditiveColor;
-VARYING vec3 vary_AtmosAttenuation;
+VARYING float vary_AtmosAttenuation;
+
+vec3 atmos_attenuation;
+vec3 sunlit_color;
+vec3 amblit_color;
+vec3 position_eye;
-vec3 getPositionEye()
-{
- return vary_PositionEye;
-}
vec3 getSunlitColor()
{
- return vary_SunlitColor;
+ return sunlit_color;
}
vec3 getAmblitColor()
{
- return vary_AmblitColor;
+ return amblit_color;
}
+
vec3 getAdditiveColor()
{
return vary_AdditiveColor;
}
vec3 getAtmosAttenuation()
{
- return vary_AtmosAttenuation;
+ return atmos_attenuation;
}
+vec3 getPositionEye()
+{
+ return position_eye;
+}
void setPositionEye(vec3 v)
{
- vary_PositionEye = v;
+ position_eye = v;
}
void setSunlitColor(vec3 v)
{
- vary_SunlitColor = v;
+ sunlit_color = v;
}
void setAmblitColor(vec3 v)
{
- vary_AmblitColor = v;
+ amblit_color = v;
}
void setAdditiveColor(vec3 v)
@@ -76,5 +77,6 @@ void setAdditiveColor(vec3 v)
void setAtmosAttenuation(vec3 v)
{
- vary_AtmosAttenuation = v;
+ atmos_attenuation = v;
+ vary_AtmosAttenuation = v.r;
}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
new file mode 100644
index 0000000000..23046f990d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
@@ -0,0 +1,51 @@
+/**
+ * @file atmosphericVarsWaterF.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$
+ */
+
+VARYING vec3 vary_PositionEye;
+VARYING vec3 vary_SunlitColor;
+VARYING vec3 vary_AdditiveColor;
+VARYING float vary_AtmosAttenuation;
+
+vec3 getSunlitColor()
+{
+ return vec3(0,0,0);
+}
+vec3 getAmblitColor()
+{
+ return vec3(0,0,0);
+}
+vec3 getAdditiveColor()
+{
+ return vary_AdditiveColor;
+}
+vec3 getAtmosAttenuation()
+{
+ return vec3(vary_AtmosAttenuation);
+}
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
new file mode 100644
index 0000000000..279c4dd981
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
@@ -0,0 +1,81 @@
+/**
+ * @file atmosphericVarsWaterV.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$
+ */
+
+VARYING vec3 vary_PositionEye;
+VARYING vec3 vary_AdditiveColor;
+VARYING float vary_AtmosAttenuation;
+
+vec3 atmos_attenuation;
+vec3 sunlit_color;
+vec3 amblit_color;
+
+vec3 getSunlitColor()
+{
+ return sunlit_color;
+}
+vec3 getAmblitColor()
+{
+ return amblit_color;
+}
+
+vec3 getAdditiveColor()
+{
+ return vary_AdditiveColor;
+}
+vec3 getAtmosAttenuation()
+{
+ return atmos_attenuation;
+}
+
+vec3 getPositionEye()
+{
+ return vary_PositionEye;
+}
+
+void setPositionEye(vec3 v)
+{
+ vary_PositionEye = v;
+}
+
+void setSunlitColor(vec3 v)
+{
+ sunlit_color = v;
+}
+
+void setAmblitColor(vec3 v)
+{
+ amblit_color = v;
+}
+
+void setAdditiveColor(vec3 v)
+{
+ vary_AdditiveColor = v;
+}
+
+void setAtmosAttenuation(vec3 v)
+{
+ atmos_attenuation = v;
+ vary_AtmosAttenuation = v.r;
+}
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index e12c2f7853..ca66ae989c 100755
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -292,6 +292,7 @@ RenderVBOEnable 1 0
list OpenGLPre30
RenderDeferred 0 0
+RenderMaxTextureIndex 1 1
list Intel
RenderAnisotropic 1 0
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
index a0245f5369..e855b2c569 100644
--- a/indra/newview/featuretable_xp.txt
+++ b/indra/newview/featuretable_xp.txt
@@ -290,6 +290,7 @@ RenderVBOEnable 1 0
list OpenGLPre30
RenderDeferred 0 0
+RenderMaxTextureIndex 1 1
list Intel
RenderAnisotropic 1 0
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index f521d93e03..563a63287e 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -594,7 +594,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("OctreeMaxNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2));
gSavedSettings.getControl("OctreeAlphaDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
gSavedSettings.getControl("OctreeAttachmentSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
- gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+ gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderUseTriStrips")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderAnimateTrees")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 17cce3069e..94b7451f0e 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -444,6 +444,9 @@ void LLViewerShaderMgr::setShaders()
return;
}
+ LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")), 1);
+
+
if (LLRender::sGLCoreProfile)
{
if (!gSavedSettings.getBOOL("VertexShaderEnable"))
@@ -826,8 +829,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
// (in order of shader function call depth for reference purposes, deepest level first)
vector< pair > shaders;
- shaders.reserve(10);
shaders.push_back( make_pair( "windlight/atmosphericsVarsV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
+ shaders.push_back( make_pair( "windlight/atmosphericsVarsWaterV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "windlight/atmosphericsHelpersV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "lighting/lightFuncV.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) );
shaders.push_back( make_pair( "lighting/sumLightsV.glsl", sum_lights_class ) );
@@ -838,6 +841,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
shaders.push_back( make_pair( "windlight/atmosphericsV.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
shaders.push_back( make_pair( "avatar/avatarSkinV.glsl", 1 ) );
shaders.push_back( make_pair( "avatar/objectSkinV.glsl", 1 ) );
+ shaders.push_back( make_pair( "objects/indexedTextureV.glsl", 1 ) );
+ shaders.push_back( make_pair( "objects/nonindexedTextureV.glsl", 1 ) );
// We no longer have to bind the shaders to global glhandles, they are automatically added to a map now.
for (U32 i = 0; i < shaders.size(); i++)
@@ -853,8 +858,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
// (in order of shader function call depth for reference purposes, deepest level first)
shaders.clear();
- shaders.reserve(13);
- S32 ch = gGLManager.mNumTextureImageUnits-1;
+ S32 ch = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
if (gGLManager.mGLVersion < 3.1f)
{ //force to 1 texture index channel for old drivers
@@ -863,6 +867,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
std::vector index_channels;
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
+ index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsWaterF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/gammaF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT]) );
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/transportF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
@@ -1186,7 +1191,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredDiffuseProgram.mShaderFiles.clear();
gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredDiffuseProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredDiffuseProgram.createShader(NULL, NULL);
}
@@ -1197,7 +1202,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredDiffuseAlphaMaskProgram.mShaderFiles.clear();
gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredDiffuseAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredDiffuseAlphaMaskProgram.createShader(NULL, NULL);
}
@@ -1394,11 +1399,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredAlphaProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels
if (mVertexShaderLevel[SHADER_DEFERRED] < 1)
{
- gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
}
else
{ //shave off some texture units for shadow maps
- gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits - 6;
+ gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels - 6, 1);
}
gDeferredAlphaProgram.mShaderFiles.clear();
@@ -1428,7 +1433,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredFullbrightProgram.mFeatures.calculatesAtmospherics = true;
gDeferredFullbrightProgram.mFeatures.hasGamma = true;
gDeferredFullbrightProgram.mFeatures.hasTransport = true;
- gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredFullbrightProgram.mShaderFiles.clear();
gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -1442,7 +1447,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredEmissiveProgram.mFeatures.calculatesAtmospherics = true;
gDeferredEmissiveProgram.mFeatures.hasGamma = true;
gDeferredEmissiveProgram.mFeatures.hasTransport = true;
- gDeferredEmissiveProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+ gDeferredEmissiveProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
gDeferredEmissiveProgram.mShaderFiles.clear();
gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveF.glsl", GL_FRAGMENT_SHADER_ARB));
--
cgit v1.3
From 6dfcb11000f349e24dbd1a9b78efa2ca4f799379 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Wed, 28 Sep 2011 01:37:54 -0500
Subject: SH-2453 Fix for horizontal line when max altitude set to 0
---
indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl | 4 ----
.../app_settings/shaders/class1/objects/nonindexedTextureV.glsl | 1 +
indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl | 4 ----
3 files changed, 1 insertion(+), 8 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 255796aa27..60952ea38e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -148,10 +148,6 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
vec3 P = inPositionEye;
setPositionEye(P);
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
vec3 tmpLightnorm = lightnorm.xyz;
vec3 Pn = normalize(P);
diff --git a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
index 2839171044..80ea286ac0 100644
--- a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
@@ -28,3 +28,4 @@ void passTextureIndex()
}
+
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 4543e83d0a..eb367d4ad6 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -148,10 +148,6 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
vec3 P = inPositionEye;
setPositionEye(P);
- //(TERRAIN) limit altitude
- if (P.y > max_y.x) P *= (max_y.x / P.y);
- if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
vec3 tmpLightnorm = lightnorm.xyz;
vec3 Pn = normalize(P);
--
cgit v1.3
From 4328b30180bd057412de2085c1d758f5e6906d70 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Wed, 28 Sep 2011 01:50:28 -0500
Subject: SH-2450 Potential fix for crash on login with 460M et al
---
indra/newview/llviewershadermgr.cpp | 5 +++++
1 file changed, 5 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 94b7451f0e..6af9e464df 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -32,6 +32,7 @@
#include "llfile.h"
#include "llviewerwindow.h"
+#include "llwindow.h"
#include "llviewercontrol.h"
#include "pipeline.h"
#include "llworld.h"
@@ -491,6 +492,9 @@ void LLViewerShaderMgr::setShaders()
if (gViewerWindow)
{
gViewerWindow->setCursor(UI_CURSOR_WAIT);
+ //VICIOUS HACK -- some drivers will time out if we don't redraw the window within 2 seconds, and this operation can take awhile
+ //minimizing tells the driver we won't be updating the window for a bit
+ gViewerWindow->getWindow()->minimize();
}
// Lighting
@@ -684,6 +688,7 @@ void LLViewerShaderMgr::setShaders()
if (gViewerWindow)
{
gViewerWindow->setCursor(UI_CURSOR_ARROW);
+ gViewerWindow->getWindow()->restore();
}
gPipeline.createGLBuffers();
--
cgit v1.3
From 69ac0d0aee6e0dc1075a7d18e17e8335cd29e05f Mon Sep 17 00:00:00 2001
From: prep
Date: Wed, 28 Sep 2011 14:52:27 -0400
Subject: Fix for sh-2500
---
indra/newview/llfloatermodelpreview.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 77e9b4eeb8..527a868db2 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -3309,7 +3309,7 @@ void LLModelPreview::rebuildUploadData()
F32 max_scale = 0.f;
//reorder materials to match mBaseModel
- for (U32 i = 0; i < LLModel::NUM_LODS; i++)
+ for (U32 i = 0; i < LLModel::NUM_LODS-1; i++)
{
if (mBaseModel.size() == mModel[i].size())
{
@@ -5085,7 +5085,7 @@ BOOL LLModelPreview::render()
}
//make sure material lists all match
- for (U32 i = 0; i < LLModel::NUM_LODS; i++)
+ for (U32 i = 0; i < LLModel::NUM_LODS-1; i++)
{
if (mBaseModel.size() == mModel[i].size())
{
--
cgit v1.3
From f657f5a428e47fc9963cc4eb943062216443673f Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Wed, 28 Sep 2011 15:54:02 -0500
Subject: SH-2276 Remove some log spam to alleviate stalls on login.
---
indra/llmessage/llassetstorage.cpp | 30 +++++++++++++++---------------
indra/llui/llnotifications.cpp | 2 +-
indra/newview/llviewerassetstorage.cpp | 8 ++++----
3 files changed, 20 insertions(+), 20 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp
index 31cdb1219b..9b86daebe5 100644
--- a/indra/llmessage/llassetstorage.cpp
+++ b/indra/llmessage/llassetstorage.cpp
@@ -149,8 +149,8 @@ void LLAssetInfo::setFromNameValue( const LLNameValue& nv )
setName( buf );
buf.assign( str, pos2, std::string::npos );
setDescription( buf );
- llinfos << "uuid: " << mUuid << llendl;
- llinfos << "creator: " << mCreatorID << llendl;
+ LL_DEBUGS("AssetStorage") << "uuid: " << mUuid << llendl;
+ LL_DEBUGS("AssetStorage") << "creator: " << mCreatorID << llendl;
}
///----------------------------------------------------------------------------
@@ -434,9 +434,9 @@ bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAsse
// IW - uuid is passed by value to avoid side effects, please don't re-add &
void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LLGetAssetCallback callback, void *user_data, BOOL is_priority)
{
- lldebugs << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl;
+ LL_DEBUGS("AssetStorage") << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl;
- llinfos << "ASSET_TRACE requesting " << uuid << " type " << LLAssetType::lookup(type) << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_TRACE requesting " << uuid << " type " << LLAssetType::lookup(type) << llendl;
if (user_data)
{
@@ -446,7 +446,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
if (mShutDown)
{
- llinfos << "ASSET_TRACE cancelled " << uuid << " type " << LLAssetType::lookup(type) << " shutting down" << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_TRACE cancelled " << uuid << " type " << LLAssetType::lookup(type) << " shutting down" << llendl;
if (callback)
{
@@ -468,7 +468,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
// Try static VFS first.
if (findInStaticVFSAndInvokeCallback(uuid,type,callback,user_data))
{
- llinfos << "ASSET_TRACE asset " << uuid << " found in static VFS" << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in static VFS" << llendl;
return;
}
@@ -486,7 +486,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
}
- llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;
}
else
{
@@ -520,7 +520,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
}
if (duplicate)
{
- llinfos << "Adding additional non-duplicate request for asset " << uuid
+ LL_DEBUGS("AssetStorage") << "Adding additional non-duplicate request for asset " << uuid
<< "." << LLAssetType::lookup(type) << llendl;
}
@@ -584,9 +584,9 @@ void LLAssetStorage::downloadCompleteCallback(
LLAssetType::EType file_type,
void* user_data, LLExtStat ext_status)
{
- llinfos << "ASSET_TRACE asset " << file_id << " downloadCompleteCallback" << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << file_id << " downloadCompleteCallback" << llendl;
- lldebugs << "LLAssetStorage::downloadCompleteCallback() for " << file_id
+ LL_DEBUGS("AssetStorage") << "LLAssetStorage::downloadCompleteCallback() for " << file_id
<< "," << LLAssetType::lookup(file_type) << llendl;
LLAssetRequest* req = (LLAssetRequest*)user_data;
if(!req)
@@ -731,7 +731,7 @@ void LLAssetStorage::getEstateAsset(const LLHost &object_sim, const LLUUID &agen
tpvf.setAsset(asset_id, atype);
tpvf.setCallback(downloadEstateAssetCompleteCallback, req);
- llinfos << "Starting transfer for " << asset_id << llendl;
+ LL_DEBUGS("AssetStorage") << "Starting transfer for " << asset_id << llendl;
LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(source_host, LLTCT_ASSET);
ttcp->requestTransfer(spe, tpvf, 100.f + (is_priority ? 1.f : 0.f));
}
@@ -871,7 +871,7 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age
tpvf.setAsset(asset_id, atype);
tpvf.setCallback(downloadInvItemCompleteCallback, req);
- llinfos << "Starting transfer for inventory asset "
+ LL_DEBUGS("AssetStorage") << "Starting transfer for inventory asset "
<< item_id << " owned by " << owner_id << "," << task_id
<< llendl;
LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(source_host, LLTCT_ASSET);
@@ -1211,7 +1211,7 @@ bool LLAssetStorage::deletePendingRequest(LLAssetStorage::ERequestType rt,
request_list_t* requests = getRequestList(rt);
if (deletePendingRequestImpl(requests, asset_type, asset_id))
{
- llinfos << "Asset " << getRequestName(rt) << " request for "
+ LL_DEBUGS("AssetStorage") << "Asset " << getRequestName(rt) << " request for "
<< asset_id << "." << LLAssetType::lookup(asset_type)
<< " removed from pending queue." << llendl;
return true;
@@ -1307,7 +1307,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo
user_data == ((LLLegacyAssetRequest *)tmp->mUserData)->mUserData)
{
// this is a duplicate from the same subsystem - throw it away
- llinfos << "Discarding duplicate request for UUID " << uuid << llendl;
+ LL_DEBUGS("AssetStorage") << "Discarding duplicate request for UUID " << uuid << llendl;
return;
}
}
@@ -1490,7 +1490,7 @@ void LLAssetStorage::reportMetric( const LLUUID& asset_id, const LLAssetType::ET
{
if( !metric_recipient )
{
- llinfos << "Couldn't store LLAssetStoreage::reportMetric - no metrics_recipient" << llendl;
+ LL_DEBUGS("AssetStorage") << "Couldn't store LLAssetStoreage::reportMetric - no metrics_recipient" << llendl;
return;
}
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index ffe5908a9d..3fa13d7bb0 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1640,7 +1640,7 @@ LLNotificationPtr LLNotifications::find(LLUUID uuid)
LLNotificationSet::iterator it=mItems.find(target);
if (it == mItems.end())
{
- llwarns << "Tried to dereference uuid '" << uuid << "' as a notification key but didn't find it." << llendl;
+ LL_DEBUGS("Notifications") << "Tried to dereference uuid '" << uuid << "' as a notification key but didn't find it." << llendl;
return LLNotificationPtr((LLNotification*)NULL);
}
else
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
index 36c8b42a52..d042f62830 100644
--- a/indra/newview/llviewerassetstorage.cpp
+++ b/indra/newview/llviewerassetstorage.cpp
@@ -116,7 +116,7 @@ void LLViewerAssetStorage::storeAssetData(
F64 timeout)
{
LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
- llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
+ LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
<< " ASSET_ID: " << asset_id << llendl;
if (mUpstreamHost.isOk())
@@ -248,9 +248,9 @@ void LLViewerAssetStorage::storeAssetData(
}
LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
- llinfos << "LLViewerAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl;
+ LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl;
- llinfos << "ASSET_ID: " << asset_id << llendl;
+ LL_DEBUGS("AssetStorage") << "ASSET_ID: " << asset_id << llendl;
S32 size = 0;
LLFILE* fp = LLFile::fopen(filename, "rb");
@@ -369,7 +369,7 @@ void LLViewerAssetStorage::_queueDataRequest(
tpvf.setAsset(uuid, atype);
tpvf.setCallback(downloadCompleteCallback, req);
- llinfos << "Starting transfer for " << uuid << llendl;
+ LL_DEBUGS("AssetStorage") << "Starting transfer for " << uuid << llendl;
LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(mUpstreamHost, LLTCT_ASSET);
ttcp->requestTransfer(spa, tpvf, 100.f + (is_priority ? 1.f : 0.f));
--
cgit v1.3
From 4dd533a5871fd5bbb0ea084679da9f0a856d41c5 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Wed, 28 Sep 2011 16:22:20 -0500
Subject: SH-2276 Update window often during login to avoid windows TDR events
---
indra/newview/llstartup.cpp | 132 ++++++++++++++++++++++++++++++++++++++------
1 file changed, 116 insertions(+), 16 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 11a4c96f14..8876d6fa16 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -733,8 +733,11 @@ bool idle_startup()
// this startup phase more than once.
if (gLoginMenuBarView == NULL)
{
- initialize_edit_menu();
+ display_startup();
+ initialize_edit_menu();
+ display_startup();
init_menus();
+ display_startup();
}
if (show_connect_box)
@@ -743,23 +746,28 @@ bool idle_startup()
// NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't
// show the login view until login_show() is called below.
if (gUserCredential.isNull())
- {
+ {
+ display_startup();
gUserCredential = gLoginHandler.initializeLoginInfo();
+ display_startup();
}
if (gHeadlessClient)
{
LL_WARNS("AppInit") << "Waiting at connection box in headless client. Did you mean to add autologin params?" << LL_ENDL;
}
// Make sure the process dialog doesn't hide things
+ display_startup();
gViewerWindow->setShowProgress(FALSE);
-
+ display_startup();
// Show the login dialog
login_show();
+ display_startup();
// connect dialog is already shown, so fill in the names
if (gUserCredential.notNull())
{
LLPanelLogin::setFields( gUserCredential, gRememberPassword);
}
+ display_startup();
LLPanelLogin::giveFocus();
LLStartUp::setStartupState( STATE_LOGIN_WAIT ); // Wait for user input
@@ -770,14 +778,19 @@ bool idle_startup()
LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
}
+ display_startup();
gViewerWindow->setNormalControlsVisible( FALSE );
+ display_startup();
gLoginMenuBarView->setVisible( TRUE );
+ display_startup();
gLoginMenuBarView->setEnabled( TRUE );
+ display_startup();
show_debug_menus();
+ display_startup();
// Hide the splash screen
LLSplashScreen::hide();
-
+ display_startup();
// Push our window frontmost
gViewerWindow->getWindow()->show();
display_startup();
@@ -786,7 +799,10 @@ bool idle_startup()
// first made visible.
#ifdef _WIN32
MSG msg;
- while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) );
+ while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) )
+ {
+ display_startup();
+ }
#endif
timeout.reset();
return FALSE;
@@ -801,7 +817,7 @@ bool idle_startup()
// Don't do anything. Wait for the login view to call the login_callback,
// which will push us to the next state.
-
+ display_startup();
// Sleep so we don't spin the CPU
ms_sleep(1);
return FALSE;
@@ -1169,37 +1185,51 @@ bool idle_startup()
// Finish agent initialization. (Requires gSavedSettings, builds camera)
gAgent.init();
+ display_startup();
gAgentCamera.init();
+ display_startup();
set_underclothes_menu_options();
+ display_startup();
// Since we connected, save off the settings so the user doesn't have to
// type the name/password again if we crash.
gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE);
LLUIColorTable::instance().saveUserSettings();
+ display_startup();
+
//
// Initialize classes w/graphics stuff.
//
gTextureList.doPrefetchImages();
+ display_startup();
+
LLSurface::initClasses();
+ display_startup();
+
LLFace::initClass();
+ display_startup();
LLDrawable::initClass();
+ display_startup();
// init the shader managers
LLPostProcess::initClass();
+ display_startup();
LLViewerObject::initVOClasses();
+ display_startup();
// Initialize all our tools. Must be done after saved settings loaded.
// NOTE: This also is where gToolMgr used to be instantiated before being turned into a singleton.
LLToolMgr::getInstance()->initTools();
+ display_startup();
// Pre-load floaters, like the world map, that are slow to spawn
// due to XML complexity.
gViewerWindow->initWorldUI();
-
+
display_startup();
// This is where we used to initialize gWorldp. Original comment said:
@@ -1207,24 +1237,26 @@ bool idle_startup()
// User might have overridden far clip
LLWorld::getInstance()->setLandFarClip(gAgentCamera.mDrawDistance);
-
+ display_startup();
// Before we create the first region, we need to set the agent's mOriginGlobal
// This is necessary because creating objects before this is set will result in a
// bad mPositionAgent cache.
gAgent.initOriginGlobal(from_region_handle(gFirstSimHandle));
+ display_startup();
LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim);
+ display_startup();
LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle);
LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
regionp->setSeedCapability(gFirstSimSeedCap);
LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL;
-
+ display_startup();
// Set agent's initial region to be the one we just created.
gAgent.setRegion(regionp);
-
+ display_startup();
// Set agent's initial position, which will be read by LLVOAvatar when the avatar
// object is created. I think this must be done after setting the region. JC
gAgent.setPositionAgent(agent_start_position_region);
@@ -1244,6 +1276,7 @@ bool idle_startup()
{
LLStartUp::multimediaInit();
LLStartUp::setStartupState( STATE_FONT_INIT );
+ display_startup();
return FALSE;
}
@@ -1252,6 +1285,7 @@ bool idle_startup()
{
LLStartUp::fontInit();
LLStartUp::setStartupState( STATE_SEED_GRANTED_WAIT );
+ display_startup();
return FALSE;
}
@@ -1279,6 +1313,7 @@ bool idle_startup()
set_startup_status(0.4f, LLTrans::getString("LoginRequestSeedCapGrant"), gAgent.mMOTD);
}
}
+ display_startup();
return FALSE;
}
@@ -1289,7 +1324,9 @@ bool idle_startup()
//---------------------------------------------------------------------
if (STATE_SEED_CAP_GRANTED == LLStartUp::getStartupState())
{
+ display_startup();
update_texture_fetch();
+ display_startup();
if ( gViewerWindow != NULL)
{ // This isn't the first logon attempt, so show the UI
@@ -1297,12 +1334,15 @@ bool idle_startup()
}
gLoginMenuBarView->setVisible( FALSE );
gLoginMenuBarView->setEnabled( FALSE );
+ display_startup();
// direct logging to the debug console's line buffer
LLError::logToFixedBuffer(gDebugView->mDebugConsolep);
+ display_startup();
// set initial visibility of debug console
gDebugView->mDebugConsolep->setVisible(gSavedSettings.getBOOL("ShowDebugConsole"));
+ display_startup();
//
// Set message handlers
@@ -1311,22 +1351,28 @@ bool idle_startup()
// register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted
register_viewer_callbacks(gMessageSystem);
+ display_startup();
// Debugging info parameters
gMessageSystem->setMaxMessageTime( 0.5f ); // Spam if decoding all msgs takes more than 500 ms
+ display_startup();
#ifndef LL_RELEASE_FOR_DOWNLOAD
gMessageSystem->setTimeDecodes( TRUE ); // Time the decode of each msg
gMessageSystem->setTimeDecodesSpamThreshold( 0.05f ); // Spam if a single msg takes over 50ms to decode
#endif
+ display_startup();
gXferManager->registerCallbacks(gMessageSystem);
+ display_startup();
LLStartUp::initNameCache();
+ display_startup();
// update the voice settings *after* gCacheName initialization
// so that we can construct voice UI that relies on the name cache
LLVoiceClient::getInstance()->updateSettings();
+ display_startup();
//gCacheName is required for nearby chat history loading
//so I just moved nearby history loading a few states further
@@ -1335,12 +1381,14 @@ bool idle_startup()
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat) nearby_chat->loadHistory();
}
+ display_startup();
// *Note: this is where gWorldMap used to be initialized.
// register null callbacks for audio until the audio system is initialized
gMessageSystem->setHandlerFuncFast(_PREHASH_SoundTrigger, null_message_callback, NULL);
gMessageSystem->setHandlerFuncFast(_PREHASH_AttachedSound, null_message_callback, NULL);
+ display_startup();
//reset statistics
LLViewerStats::getInstance()->resetStats();
@@ -1370,6 +1418,7 @@ bool idle_startup()
LLViewerCamera::getInstance()->setAspect(gViewerWindow->getWorldViewAspectRatio());
// Initialize FOV
LLViewerCamera::getInstance()->setDefaultFOV(gSavedSettings.getF32("CameraAngle"));
+ display_startup();
// Move agent to starting location. The position handed to us by
// the space server is in global coordinates, but the agent frame
@@ -1380,6 +1429,7 @@ bool idle_startup()
gAgent.resetAxes(gAgentStartLookAt);
gAgentCamera.stopCameraAnimation();
gAgentCamera.resetCamera();
+ display_startup();
// Initialize global class data needed for surfaces (i.e. textures)
LL_DEBUGS("AppInit") << "Initializing sky..." << LL_ENDL;
@@ -1392,6 +1442,8 @@ bool idle_startup()
LLGLState::checkStates();
LLGLState::checkTextureChannels();
+ display_startup();
+
LL_DEBUGS("AppInit") << "Decoding images..." << LL_ENDL;
// For all images pre-loaded into viewer cache, decode them.
// Need to do this AFTER we init the sky
@@ -1405,6 +1457,8 @@ bool idle_startup()
}
LLStartUp::setStartupState( STATE_WORLD_WAIT );
+ display_startup();
+
// JC - Do this as late as possible to increase likelihood Purify
// will run.
LLMessageSystem* msg = gMessageSystem;
@@ -1432,6 +1486,7 @@ bool idle_startup()
NULL);
timeout.reset();
+ display_startup();
return FALSE;
}
@@ -1450,8 +1505,10 @@ bool idle_startup()
LLMessageSystem* msg = gMessageSystem;
while (msg->checkAllMessages(gFrameCount, gServicePump))
{
+ display_startup();
}
msg->processAcks();
+ display_startup();
return FALSE;
}
@@ -1462,6 +1519,7 @@ bool idle_startup()
{
LL_DEBUGS("AppInit") << "Connecting to region..." << LL_ENDL;
set_startup_status(0.60f, LLTrans::getString("LoginConnectingToRegion"), gAgent.mMOTD);
+ display_startup();
// register with the message system so it knows we're
// expecting this message
LLMessageSystem* msg = gMessageSystem;
@@ -1477,6 +1535,7 @@ bool idle_startup()
msg->newMessageFast(_PREHASH_EconomyDataRequest);
gAgent.sendReliableMessage();
}
+ display_startup();
// Create login effect
// But not on first login, because you can't see your avatar then
@@ -1491,6 +1550,7 @@ bool idle_startup()
LLStartUp::setStartupState( STATE_AGENT_WAIT ); // Go to STATE_AGENT_WAIT
timeout.reset();
+ display_startup();
return FALSE;
}
@@ -1515,14 +1575,17 @@ bool idle_startup()
LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got "
<< msg->getMessageName() << LL_ENDL;
}
+ display_startup();
}
msg->processAcks();
+ display_startup();
+
if (gAgentMovementCompleted)
{
LLStartUp::setStartupState( STATE_INVENTORY_SEND );
}
-
+ display_startup();
return FALSE;
}
@@ -1531,9 +1594,10 @@ bool idle_startup()
//---------------------------------------------------------------------
if (STATE_INVENTORY_SEND == LLStartUp::getStartupState())
{
+ display_startup();
// Inform simulator of our language preference
LLAgentLanguage::update();
-
+ display_startup();
// unpack thin inventory
LLSD response = LLLoginInstance::getInstance()->getResponse();
//bool dump_buffer = false;
@@ -1548,6 +1612,7 @@ bool idle_startup()
gInventory.setLibraryRootFolderID(id.asUUID());
}
}
+ display_startup();
LLSD inv_lib_owner = response["inventory-lib-owner"];
if(inv_lib_owner.isDefined())
@@ -1559,6 +1624,7 @@ bool idle_startup()
gInventory.setLibraryOwnerID( LLUUID(id.asUUID()));
}
}
+ display_startup();
LLSD inv_skel_lib = response["inventory-skel-lib"];
if(inv_skel_lib.isDefined() && gInventory.getLibraryOwnerID().notNull())
@@ -1568,6 +1634,7 @@ bool idle_startup()
LL_WARNS("AppInit") << "Problem loading inventory-skel-lib" << LL_ENDL;
}
}
+ display_startup();
LLSD inv_skeleton = response["inventory-skeleton"];
if(inv_skeleton.isDefined())
@@ -1577,6 +1644,7 @@ bool idle_startup()
LL_WARNS("AppInit") << "Problem loading inventory-skel-targets" << LL_ENDL;
}
}
+ display_startup();
LLSD inv_basic = response["inventory-basic"];
if(inv_basic.isDefined())
@@ -1614,6 +1682,7 @@ bool idle_startup()
list[agent_id] = new LLRelationship(given_rights, has_rights, false);
}
LLAvatarTracker::instance().addBuddyList(list);
+ display_startup();
}
bool show_hud = false;
@@ -1641,6 +1710,8 @@ bool idle_startup()
//}
}
}
+ display_startup();
+
// Either we want to show tutorial because this is the first login
// to a Linden Help Island or the user quit with the tutorial
// visible. JC
@@ -1648,22 +1719,26 @@ bool idle_startup()
{
LLFloaterReg::showInstance("hud", LLSD(), FALSE);
}
+ display_startup();
LLSD event_notifications = response["event_notifications"];
if(event_notifications.isDefined())
{
gEventNotifier.load(event_notifications);
}
+ display_startup();
LLSD classified_categories = response["classified_categories"];
if(classified_categories.isDefined())
{
LLClassifiedInfo::loadCategories(classified_categories);
}
+ display_startup();
// This method MUST be called before gInventory.findCategoryUUIDForType because of
// gInventory.mIsAgentInvUsable is set to true in the gInventory.buildParentChildMap.
gInventory.buildParentChildMap();
+ display_startup();
//all categories loaded. lets create "My Favorites" category
gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
@@ -1677,24 +1752,26 @@ bool idle_startup()
LLAvatarTracker::instance().registerCallbacks(msg);
llinfos << " Landmark" << llendl;
LLLandmark::registerCallbacks(msg);
+ display_startup();
// request mute list
llinfos << "Requesting Mute List" << llendl;
LLMuteList::getInstance()->requestFromServer(gAgent.getID());
-
+ display_startup();
// Get L$ and ownership credit information
llinfos << "Requesting Money Balance" << llendl;
LLStatusBar::sendMoneyBalanceRequest();
-
+ display_startup();
// request all group information
llinfos << "Requesting Agent Data" << llendl;
gAgent.sendAgentDataUpdateRequest();
-
+ display_startup();
// Create the inventory views
llinfos << "Creating Inventory Views" << llendl;
LLFloaterReg::getInstance("inventory");
-
+ display_startup();
LLStartUp::setStartupState( STATE_MISC );
+ display_startup();
return FALSE;
}
@@ -1743,17 +1820,23 @@ bool idle_startup()
gSavedSettings.setBOOL("ShowStartLocation", TRUE);
}
+ display_startup();
+
if (gSavedSettings.getBOOL("HelpFloaterOpen"))
{
// show default topic
LLViewerHelp::instance().showTopic("");
}
+ display_startup();
+
// We're successfully logged in.
gSavedSettings.setBOOL("FirstLoginThisInstall", FALSE);
LLFloaterReg::showInitialVisibleInstances();
+ display_startup();
+
// based on the comments, we've successfully logged in so we can delete the 'forced'
// URL that the updater set in settings.ini (in a mostly paranoid fashion)
std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
@@ -1767,8 +1850,10 @@ bool idle_startup()
LLUIColorTable::instance().saveUserSettings();
};
+ display_startup();
// JC: Initializing audio requests many sounds for download.
init_audio();
+ display_startup();
// JC: Initialize "active" gestures. This may also trigger
// many gesture downloads, if this is the user's first
@@ -1806,6 +1891,7 @@ bool idle_startup()
LLGestureMgr::instance().startFetch();
}
gDisplaySwapBuffers = TRUE;
+ display_startup();
LLMessageSystem* msg = gMessageSystem;
msg->setHandlerFuncFast(_PREHASH_SoundTrigger, process_sound_trigger);
@@ -1880,8 +1966,10 @@ bool idle_startup()
}
}
+ display_startup();
//DEV-17797. get null folder. Any items found here moved to Lost and Found
LLInventoryModelBackgroundFetch::instance().findLostItems();
+ display_startup();
LLStartUp::setStartupState( STATE_PRECACHE );
timeout.reset();
@@ -1890,6 +1978,7 @@ bool idle_startup()
if (STATE_PRECACHE == LLStartUp::getStartupState())
{
+ display_startup();
F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY;
// We now have an inventory skeleton, so if this is a user's first
@@ -1906,6 +1995,8 @@ bool idle_startup()
LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
}
+ display_startup();
+
// wait precache-delay and for agent's avatar or a lot longer.
if(((timeout_frac > 1.f) && isAgentAvatarValid())
|| (timeout_frac > 3.f))
@@ -1947,6 +2038,8 @@ bool idle_startup()
return TRUE;
}
+ display_startup();
+
if (wearables_time > MAX_WEARABLES_TIME)
{
LLNotificationsUtil::add("ClothingLoading");
@@ -1978,16 +2071,20 @@ bool idle_startup()
}
}
+ display_startup();
update_texture_fetch();
+ display_startup();
set_startup_status(0.9f + 0.1f * wearables_time / MAX_WEARABLES_TIME,
LLTrans::getString("LoginDownloadingClothing").c_str(),
gAgent.mMOTD.c_str());
+ display_startup();
return TRUE;
}
if (STATE_CLEANUP == LLStartUp::getStartupState())
{
set_startup_status(1.0, "", "");
+ display_startup();
// Let the map know about the inventory.
LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance();
@@ -2003,6 +2100,7 @@ bool idle_startup()
//gViewerWindow->revealIntroPanel();
gViewerWindow->setStartupComplete();
gViewerWindow->setProgressCancelButtonVisible(FALSE);
+ display_startup();
// We're not away from keyboard, even though login might have taken
// a while. JC
@@ -2038,6 +2136,7 @@ bool idle_startup()
// LLUserAuth::getInstance()->reset();
LLStartUp::setStartupState( STATE_STARTED );
+ display_startup();
// Unmute audio if desired and setup volumes.
// Unmute audio if desired and setup volumes.
@@ -2062,6 +2161,7 @@ bool idle_startup()
LLAgentPicksInfo::getInstance()->requestNumberOfPicks();
LLIMFloater::initIMFloater();
+ display_startup();
return TRUE;
}
--
cgit v1.3
From e43f4dc31b40e588805e06f4c503e0387687a08e Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Wed, 28 Sep 2011 16:51:12 -0500
Subject: SH-2276 Add some info around a possible deadlock culprit.
---
indra/newview/llvowlsky.cpp | 5 +++++
1 file changed, 5 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index c26aefb28f..14fd0a1eb1 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -349,6 +349,9 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
mStripsVerts.resize(strips_segments, NULL);
+ LLTimer timer;
+ timer.start();
+
for (U32 i = 0; i < strips_segments ;++i)
{
LLVertexBuffer * segment = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
@@ -390,6 +393,8 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
// and unlock the buffer
segment->flush();
}
+
+ llinfos << "completed in " << llformat("%.2f", timer.getElapsedTimeF32()) << "seconds" << llendl;
}
#else
mStripsVerts = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
--
cgit v1.3
From d447f1908bc2da9067d1f4d34825618a4d176602 Mon Sep 17 00:00:00 2001
From: Leyla Farazha
Date: Wed, 28 Sep 2011 15:27:34 -0700
Subject: EXP-1262 Hitting single letters reserved for shortcuts inworld opens
chat but not associated shortcuts (like Mouselook and Fly) EXP-1266
Communicate > Nearby Chat menu item does not bring up chat floater
---
indra/newview/app_settings/settings.xml | 2 +-
indra/newview/skins/default/xui/en/menu_viewer.xml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9a06423422..148b80e817 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1493,7 +1493,7 @@
Type
S32
Value
- 1
+ 0
ChatBubbleOpacity
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 2e93243b0f..923430d6fd 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -227,10 +227,10 @@
use_mac_ctrl="true">
+ parameter="chat_bar" />
+ parameter="chat_bar" />
Date: Wed, 28 Sep 2011 15:27:53 -0700
Subject: removing old xml nearby chat
---
.../skins/default/xui/en/floater_nearby_chat.xml | 50 ----------------------
1 file changed, 50 deletions(-)
delete mode 100644 indra/newview/skins/default/xui/en/floater_nearby_chat.xml
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index ab966dbb0e..0000000000
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
--
cgit v1.3
From 503c8ab78980515e02e8e7cb411061cc0429062e Mon Sep 17 00:00:00 2001
From: eli
Date: Wed, 28 Sep 2011 15:51:08 -0700
Subject: VWR-27039 FIX FR linguistic
---
.../newview/skins/default/xui/fr/panel_preferences_chat.xml | 2 +-
.../skins/default/xui/fr/panel_preferences_graphics1.xml | 6 +++---
.../skins/default/xui/fr/panel_preferences_privacy.xml | 4 ++--
indra/newview/skins/default/xui/fr/strings.xml | 12 ++++++------
4 files changed, 12 insertions(+), 12 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index e9e6e6350f..1644eefbee 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 5bf2ef72f5..a738b2d43f 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -51,7 +51,7 @@
-
+
Faible
@@ -102,8 +102,8 @@
Rendu du terrain :
-
-
+
+
-->
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
index 202ec779f5..3123a4c6fe 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
@@ -3,9 +3,9 @@
se connecter pour changer
-
+
- (Endroits, images, web, historique des recherches)
+ (endroits, images, web, historique des recherches)
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 7d349f27a6..3a0553461a 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -2510,7 +2510,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Effet max.
- Vibration
+ Élasticité
Amplification
@@ -2522,7 +2522,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Effet max.
- Vibration
+ Élasticité
Amplification
@@ -2534,7 +2534,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Effet max.
- Vibration
+ Élasticité
Amplification
@@ -2558,7 +2558,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Effet max.
- Vibration
+ Élasticité
Amplification
@@ -2582,7 +2582,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Effet max.
- Vibration
+ Élasticité
Amplification
@@ -2594,7 +2594,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
Effet max.
- Vibration
+ Élasticité
Amplification
--
cgit v1.3
From 21543fdf26e8104d00bd683bdff5185d6dd620ef Mon Sep 17 00:00:00 2001
From: Merov Linden
Date: Wed, 28 Sep 2011 16:23:04 -0700
Subject: EXP-1257 : Implemented loading of toolbar settings per user account.
Also factorize a bit and clean up the related saveToolbars code.
---
indra/llui/lltoolbarview.cpp | 56 ++++++++++++++++------------------------
indra/llui/lltoolbarview.h | 6 +++--
indra/newview/llviewerwindow.cpp | 4 ++-
3 files changed, 29 insertions(+), 37 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index aee7ffa517..140a26ddd5 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -76,9 +76,6 @@ BOOL LLToolBarView::postBuild()
mToolbarRight = getChild("toolbar_right");
mToolbarBottom = getChild("toolbar_bottom");
- // Load the toolbars from the settings
- loadToolbars();
-
return TRUE;
}
@@ -120,8 +117,12 @@ bool LLToolBarView::loadToolbars()
LLToolBarView::ToolbarSet toolbar_set;
// Load the default toolbars.xml file
- // *TODO : pick up the user's toolbar setting if existing
- std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+ if (!gDirUtilp->fileExists(toolbar_file))
+ {
+ llwarns << "User toolbars def not found -> use default" << llendl;
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
LLXMLNodePtr root;
if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
@@ -173,43 +174,17 @@ void LLToolBarView::saveToolbars() const
{
// Build the parameter tree from the toolbar data
LLToolBarView::ToolbarSet toolbar_set;
-
- // *TODO : factorize that code a bit...
if (mToolbarLeft)
{
- command_id_list_t& command_list = mToolbarLeft->getCommandsList();
- for (command_id_list_t::const_iterator it = command_list.begin();
- it != command_list.end();
- ++it)
- {
- LLCommandId::Params command;
- command.name = it->name();
- toolbar_set.left_toolbar.commands.add(command);
- }
+ addToToolset(mToolbarLeft->getCommandsList(),toolbar_set.left_toolbar);
}
if (mToolbarRight)
{
- command_id_list_t& command_list = mToolbarRight->getCommandsList();
- for (command_id_list_t::const_iterator it = command_list.begin();
- it != command_list.end();
- ++it)
- {
- LLCommandId::Params command;
- command.name = it->name();
- toolbar_set.right_toolbar.commands.add(command);
- }
+ addToToolset(mToolbarRight->getCommandsList(),toolbar_set.right_toolbar);
}
if (mToolbarBottom)
{
- command_id_list_t& command_list = mToolbarBottom->getCommandsList();
- for (command_id_list_t::const_iterator it = command_list.begin();
- it != command_list.end();
- ++it)
- {
- LLCommandId::Params command;
- command.name = it->name();
- toolbar_set.bottom_toolbar.commands.add(command);
- }
+ addToToolset(mToolbarBottom->getCommandsList(),toolbar_set.bottom_toolbar);
}
// Serialize the parameter tree
@@ -231,6 +206,19 @@ void LLToolBarView::saveToolbars() const
}
}
+// Enumerate the commands in command_list and add them as Params to the toolbar
+void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const
+{
+ for (command_id_list_t::const_iterator it = command_list.begin();
+ it != command_list.end();
+ ++it)
+ {
+ LLCommandId::Params command;
+ command.name = it->name();
+ toolbar.commands.add(command);
+ }
+}
+
void LLToolBarView::draw()
{
static bool debug_print = true;
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index 646a1fd636..b19841997b 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -67,7 +67,10 @@ public:
virtual void draw();
// Toolbar view interface with the rest of the world
+ // Checks if the commandId is being used somewhere in one of the toolbars
bool hasCommand(const LLCommandId& commandId) const;
+ // Loads the toolbars from the existing user or default settings
+ bool loadToolbars(); // return false if load fails
protected:
friend class LLUICtrlFactory;
@@ -76,10 +79,9 @@ protected:
void initFromParams(const Params&);
private:
- // Loads the toolbars from the existing user or default settings
- bool loadToolbars(); // return false if load fails
void saveToolbars() const;
bool addCommand(const LLCommandId& commandId, LLToolBar* toolbar);
+ void addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const;
// Pointers to the toolbars handled by the toolbar view
LLToolBar* mToolbarLeft;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 7c930b80c2..6c9ee17a76 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1950,9 +1950,11 @@ void LLViewerWindow::initWorldUI()
buttons_panel->setFollowsAll();
buttons_panel_container->addChild(buttons_panel);
- // Make the toolbars visible
+ // Load and make the toolbars visible
+ // Note: we need to load the toolbars only *after* the user is logged in and IW
if (gToolBarView)
{
+ gToolBarView->loadToolbars();
gToolBarView->setVisible(TRUE);
}
}
--
cgit v1.3
From fdf042bdb9aeefa209694e04d4012a3a1f911a52 Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Wed, 28 Sep 2011 16:54:34 -0700
Subject: EXP-1205 PROGRESS -- As a User, I want a toybox which will contain
all buttons that I can d&d into the toolbars EXP-1233 FIX -- Populate the
toybox floater window with all FUI toolbar buttons indicated as such in the
"commands.xml" definition. EXP-1267 FIX -- Enable/disable buttons in the
toybox
* Hooked up button callbacks to the toolbar buttons
* Fixed toybox button enable/disable to function properly and live update as
buttons change states.
* Removed the toybox toolbar background image
Reviewed by Leyla
---
indra/llui/llcommandmanager.cpp | 4 +--
indra/llui/llcommandmanager.h | 6 ++--
indra/llui/lltoolbar.cpp | 10 +++++-
indra/llui/lluictrl.cpp | 10 ++++++
indra/llui/lluictrl.h | 3 ++
indra/newview/app_settings/commands.xml | 42 +++++++++++-----------
indra/newview/llfloatertoybox.cpp | 19 +++++++---
.../skins/default/xui/en/floater_toybox.xml | 4 ++-
8 files changed, 65 insertions(+), 33 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
index 783990780b..b1147134c2 100644
--- a/indra/llui/llcommandmanager.cpp
+++ b/indra/llui/llcommandmanager.cpp
@@ -53,7 +53,7 @@ LLCommand::Params::Params()
, icon("icon")
, label_ref("label_ref")
, name("name")
- , param("param")
+ , parameter("parameter")
, tooltip_ref("tooltip_ref")
{
}
@@ -64,7 +64,7 @@ LLCommand::LLCommand(const LLCommand::Params& p)
, mIcon(p.icon)
, mIdentifier(p.name)
, mLabelRef(p.label_ref)
- , mParam(p.param)
+ , mParameter(p.parameter)
, mTooltipRef(p.tooltip_ref)
{
}
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
index 4781f77177..6481a05689 100644
--- a/indra/llui/llcommandmanager.h
+++ b/indra/llui/llcommandmanager.h
@@ -93,7 +93,7 @@ public:
Mandatory icon;
Mandatory label_ref;
Mandatory name;
- Optional param;
+ Optional parameter;
Mandatory tooltip_ref;
Params();
@@ -106,7 +106,7 @@ public:
const std::string& icon() const { return mIcon; }
const LLCommandId& id() const { return mIdentifier; }
const std::string& labelRef() const { return mLabelRef; }
- const std::string& param() const { return mParam; }
+ const LLSD& parameter() const { return mParameter; }
const std::string& tooltipRef() const { return mTooltipRef; }
private:
@@ -116,7 +116,7 @@ private:
std::string mFunction;
std::string mIcon;
std::string mLabelRef;
- std::string mParam;
+ LLSD mParameter;
std::string mTooltipRef;
};
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index c5219b11e8..45567d5859 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -500,7 +500,6 @@ void LLToolBar::createButtons()
{
createButton(command_id);
}
-
}
void LLToolBar::createButton(const LLCommandId& id)
@@ -509,12 +508,21 @@ void LLToolBar::createButton(const LLCommandId& id)
if (!commandp) return;
LLToolBarButton::Params button_p;
+ button_p.name = id.name();
button_p.label = LLTrans::getString(commandp->labelRef());
button_p.tool_tip = button_p.label();
button_p.image_overlay = LLUI::getUIImage(commandp->icon());
button_p.overwriteFrom(mButtonParams[mButtonType]);
LLToolBarButton* button = LLUICtrlFactory::create(button_p);
+ if (!mReadOnly)
+ {
+ LLUICtrl::CommitCallbackParam cbParam;
+ cbParam.function_name = commandp->functionName();
+ cbParam.parameter = commandp->parameter();
+ button->setCommitCallback(cbParam);
+ }
+
mButtons.push_back(button);
mButtonPanel->addChild(button);
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index d58df5801b..5e8bf498c0 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -992,6 +992,16 @@ void LLUICtrl::setTransparencyType(ETypeTransparency type)
mTransparencyType = type;
}
+boost::signals2::connection LLUICtrl::setCommitCallback(const CommitCallbackParam& cb)
+{
+ return setCommitCallback(initCommitCallback(cb));
+}
+
+boost::signals2::connection LLUICtrl::setValidateCallback(const EnableCallbackParam& cb)
+{
+ return setValidateCallback(initEnableCallback(cb));
+}
+
boost::signals2::connection LLUICtrl::setCommitCallback( const commit_signal_t::slot_type& cb )
{
if (!mCommitSignal) mCommitSignal = new commit_signal_t();
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 09bed9b958..fc56e5fc35 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -235,6 +235,9 @@ public:
// topic then put in help_topic_out
bool findHelpTopic(std::string& help_topic_out);
+ boost::signals2::connection setCommitCallback(const CommitCallbackParam& cb);
+ boost::signals2::connection setValidateCallback(const EnableCallbackParam& cb);
+
boost::signals2::connection setCommitCallback( const commit_signal_t::slot_type& cb );
boost::signals2::connection setValidateCallback( const enable_signal_t::slot_type& cb );
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 4a33b24075..5fbd9248c1 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -6,7 +6,7 @@
label_ref="Command_Avatar_Label"
tooltip_ref="Command_Avatar_Tooltip"
function="Floater.ToolbarToggle"
- param="avatar"
+ parameter="avatar"
/>
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
index beb928ea36..c3fa322f85 100644
--- a/indra/newview/llfloatertoybox.cpp
+++ b/indra/newview/llfloatertoybox.cpp
@@ -67,9 +67,6 @@ BOOL LLFloaterToybox::postBuild()
if (command->availableInToybox())
{
mToolBar->addCommand(command->id());
-
- llassert(gToolBarView != NULL);
- mToolBar->enableCommand(command->id(), !gToolBarView->hasCommand(command->id()));
}
}
@@ -93,17 +90,29 @@ void LLFloaterToybox::onClose(bool app_quitting)
void LLFloaterToybox::draw()
{
+ llassert(gToolBarView != NULL);
+
+ LLCommandManager& cmdMgr = LLCommandManager::instance();
+
+ for (U32 i = 0; i < cmdMgr.commandCount(); i++)
+ {
+ LLCommand * command = cmdMgr.getCommand(i);
+
+ if (command->availableInToybox())
+ {
+ mToolBar->enableCommand(command->id(), !gToolBarView->hasCommand(command->id()));
+ }
+ }
+
LLFloater::draw();
}
void LLFloaterToybox::onFocusReceived()
{
-
}
void LLFloaterToybox::onBtnRestoreDefaults()
{
-
}
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index 092eddaa53..feb19571b2 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -59,7 +59,9 @@
read_only="true"
right="-20"
side="top"
- top="85" />
+ top="85">
+
+
Date: Wed, 28 Sep 2011 16:59:46 -0700
Subject: Removing time offset hack for 'new' tag
---
indra/newview/llpanelmarketplaceinboxinventory.cpp | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index faba6dc0cf..2e4bf55d51 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -196,15 +196,12 @@ void LLInboxFolderViewFolder::computeFreshness()
if (last_expansion_utc > 0)
{
- const U32 time_offset_for_pdt = 7 * 60 * 60;
- const U32 last_expansion = last_expansion_utc - time_offset_for_pdt;
-
- mFresh = (mCreationDate > last_expansion);
+ mFresh = (mCreationDate > last_expansion_utc);
#if DEBUGGING_FRESHNESS
if (mFresh)
{
- llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion << llendl;
+ llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion_utc << llendl;
}
#endif
}
--
cgit v1.3
From f6a8a2c5460c8f61b37154de01cd2f9575ef87de Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine
Date: Thu, 29 Sep 2011 15:35:02 +0300
Subject: STORM-1612 WIP Implemented new click-to-walk/teleport preferences
design.
---
indra/newview/app_settings/settings.xml | 11 --
indra/newview/llfloaterpreference.cpp | 103 ++--------------
indra/newview/llfloaterpreference.h | 16 +--
indra/newview/lltoolpie.cpp | 127 +++-----------------
indra/newview/lltoolpie.h | 7 --
.../default/xui/en/panel_preferences_move.xml | 132 ++++++++-------------
6 files changed, 77 insertions(+), 319 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5ffbbc6163..be4ec93946 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -13566,17 +13566,6 @@
Value
1
- ClickToTeleport
-
- Comment
- Click in world to teleport to location
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
ShowOfferedInventory
Comment
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 5dd1cc3b97..9630d7b29f 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -348,10 +348,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
sSkin = gSavedSettings.getString("SkinCurrent");
- mCommitCallbackRegistrar.add("Pref.CommitClickToWalkCheckbox", boost::bind(&LLFloaterPreference::onWalkCheckboxCommit, this));
- mCommitCallbackRegistrar.add("Pref.CommitClickToTeleportCheckbox", boost::bind(&LLFloaterPreference::onTeleportCheckboxCommit, this));
- mCommitCallbackRegistrar.add("Pref.CommitWalkTriggerRadio", boost::bind(&LLFloaterPreference::onWalkTriggerRadioCommit, this));
- mCommitCallbackRegistrar.add("Pref.CommitTeleportTriggerRadio", boost::bind(&LLFloaterPreference::onTeleportTriggerRadioCommit, this));
+ mCommitCallbackRegistrar.add("Pref.ClickActionChange", boost::bind(&LLFloaterPreference::onClickActionChange, this));
gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
gSavedSettings.getControl("NameTagShowFriends")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
@@ -1512,111 +1509,29 @@ void LLFloaterPreference::onClickProxySettings()
LLFloaterReg::showInstance("prefs_proxy");
}
-void LLFloaterPreference::onWalkCheckboxCommit()
-{
- LLCheckBoxCtrl* walk_trigger_cb = getChild("walk_to_chkbox");
- LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
- const bool checked = walk_trigger_cb->getValue().asBoolean();
-
- mClickActionDirty = true;
- walk_trigger_radio->setEnabled(checked);
- if (checked)
- {
- fixWalkRadioValue(); // don't allow two actions on click or double click
- }
-}
-
-void LLFloaterPreference::onTeleportCheckboxCommit()
-{
- LLCheckBoxCtrl* teleport_trigger_cb = getChild("teleport_to_chkbox");
- LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
- const bool checked = teleport_trigger_cb->getValue().asBoolean();
-
- mClickActionDirty = true;
- teleport_trigger_radio->setEnabled(checked);
- if (checked)
- {
- fixTeleportRadioValue(); // don't allow two actions on click or double click
- }
-}
-
-void LLFloaterPreference::onWalkTriggerRadioCommit()
-{
- mClickActionDirty = true;
- fixTeleportRadioValue();
-}
-
-void LLFloaterPreference::onTeleportTriggerRadioCommit()
+void LLFloaterPreference::onClickActionChange()
{
mClickActionDirty = true;
- fixWalkRadioValue();
-}
-
-void LLFloaterPreference::fixWalkRadioValue()
-{
- LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
- LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
-
- walk_trigger_radio->setSelectedIndex(!teleport_trigger_radio->getSelectedIndex());
-}
-
-
-void LLFloaterPreference::fixTeleportRadioValue()
-{
- LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
- LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
-
- teleport_trigger_radio->setSelectedIndex(!walk_trigger_radio->getSelectedIndex());
}
void LLFloaterPreference::updateClickActionSettings()
{
- const bool walk_trigger_enabled = getChild("walk_to_chkbox")->getValue().asBoolean();
- const bool teleport_trigger_enabled = getChild("teleport_to_chkbox")->getValue().asBoolean();
-
- const bool walk_on_dbl_click = (bool) getChild("walk_trigger_radio")->getSelectedIndex();
- const bool teleport_on_dbl_click = (bool) getChild("teleport_trigger_radio")->getSelectedIndex();
+ const int single_clk_action = getChild("single_click_action_combo")->getValue().asInteger();
+ const int double_clk_action = getChild("double_click_action_combo")->getValue().asInteger();
- gSavedSettings.setBOOL("ClickToWalk", walk_trigger_enabled && !walk_on_dbl_click);
- gSavedSettings.setBOOL("ClickToTeleport", teleport_trigger_enabled && !teleport_on_dbl_click);
- gSavedSettings.setBOOL("DoubleClickAutoPilot", walk_trigger_enabled && walk_on_dbl_click);
- gSavedSettings.setBOOL("DoubleClickTeleport", teleport_trigger_enabled && teleport_on_dbl_click);
+ gSavedSettings.setBOOL("ClickToWalk", single_clk_action == 1);
+ gSavedSettings.setBOOL("DoubleClickAutoPilot", double_clk_action == 1);
+ gSavedSettings.setBOOL("DoubleClickTeleport", double_clk_action == 2);
}
void LLFloaterPreference::updateClickActionControls()
{
- LLCheckBoxCtrl* walk_trigger_cb = getChild("walk_to_chkbox");
- LLCheckBoxCtrl* teleport_trigger_cb = getChild("teleport_to_chkbox");
-
- LLRadioGroup* walk_trigger_radio = getChild("walk_trigger_radio");
- LLRadioGroup* teleport_trigger_radio = getChild("teleport_trigger_radio");
-
const bool click_to_walk = gSavedSettings.getBOOL("ClickToWalk");
- const bool click_to_teleport = gSavedSettings.getBOOL("ClickToTeleport");
const bool dbl_click_to_walk = gSavedSettings.getBOOL("DoubleClickAutoPilot");
const bool dbl_click_to_teleport = gSavedSettings.getBOOL("DoubleClickTeleport");
- const bool walk_trigger_enabled = click_to_walk || dbl_click_to_walk;
- const bool teleport_trigger_enabled = click_to_teleport || dbl_click_to_teleport;
-
- walk_trigger_cb->setValue(walk_trigger_enabled);
- teleport_trigger_cb->setValue(teleport_trigger_enabled);
-
- walk_trigger_radio->setEnabled(walk_trigger_enabled);
- walk_trigger_radio->setSelectedIndex(dbl_click_to_walk);
-
- teleport_trigger_radio->setEnabled(teleport_trigger_enabled);
- teleport_trigger_radio->setSelectedIndex(dbl_click_to_teleport);
-
- // Make sure it doesn't look like there is more than one action per trigger.
- if (teleport_trigger_enabled)
- {
- fixWalkRadioValue();
- }
- else
- {
- fixTeleportRadioValue();
- }
+ getChild("single_click_action_combo")->setValue((int)click_to_walk);
+ getChild("double_click_action_combo")->setValue(dbl_click_to_teleport ? 2 : (int)dbl_click_to_walk);
}
void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param)
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index b7263f0ac3..5c74e9f60c 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -105,18 +105,8 @@ protected:
// callback for when client turns on shaders
void onVertexShaderEnable();
- // callback for clicking the "Walk to Click Point" checkbox
- void onWalkCheckboxCommit();
- // callback for clicking the "Teleport to Click Point" checkbox
- void onTeleportCheckboxCommit();
- // callback for selecting trigger for "Walk to Click Point"
- void onWalkTriggerRadioCommit();
- // callback for selecting trigger for "Teleport to Click Point"
- void onTeleportTriggerRadioCommit();
- // make sure the radio buttons have mutually exclusive values
- void fixWalkRadioValue();
- // make sure the radio buttons have mutually exclusive values
- void fixTeleportRadioValue();
+ // callback for commit in the "Single click on land" and "Double click on land" comboboxes.
+ void onClickActionChange();
// updates click/double-click action settings depending on controls values
void updateClickActionSettings();
// updates click/double-click action controls depending on values from settings.xml
@@ -173,8 +163,6 @@ public:
static void refreshSkin(void* data);
private:
static std::string sSkin;
- // set true if state of double-click action checkbox or radio-group was changed by user
- // (reset back to false on apply or cancel)
bool mClickActionDirty; ///< Set to true when the click/double-click options get changed by user.
bool mGotPersonalInfo;
bool mOriginalIMViaEmail;
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index a05fc9536e..b0d9bd5d70 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -35,7 +35,6 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llavatarnamecache.h"
-#include "lleventtimer.h"
#include "llfocusmgr.h"
#include "llfirstuse.h"
#include "llfloaterland.h"
@@ -77,42 +76,6 @@ static void handle_click_action_play();
static void handle_click_action_open_media(LLPointer objectp);
static ECursorType cursor_from_parcel_media(U8 click_action);
-/**
- * Schedule teleport to the specified location when user clicks in world.
- *
- * Deferring teleport is needed for double-click-to-walk to work.
- * If double click in the world view occurs, teleport gets canceled.
- */
-class LLClickToTeleportTimer : public LLEventTimer
-{
- LOG_CLASS(LLClickToTeleportTimer);
-public:
- LLClickToTeleportTimer(const LLVector3d& pos);
- ~LLClickToTeleportTimer();
- /*virtual*/ BOOL tick();
-
-private:
- LLVector3d mTeleportPos;
-};
-
-LLClickToTeleportTimer::LLClickToTeleportTimer(const LLVector3d& pos)
-: LLEventTimer(0.33f) // should be greater than double click interval
-, mTeleportPos(pos)
-{
-};
-
-LLClickToTeleportTimer::~LLClickToTeleportTimer()
-{
- LLToolPie::instance().mClickToTeleportTimer = NULL;
-}
-
-BOOL LLClickToTeleportTimer::tick()
-{
- lldebugs << "Teleporting to " << mTeleportPos << llendl;
- gAgent.teleportViaLocationLookAt(mTeleportPos);
- return TRUE; // destroy the timer
-}
-
LLToolPie::LLToolPie()
: LLTool(std::string("Pie")),
mMouseButtonDown( false ),
@@ -120,8 +83,6 @@ LLToolPie::LLToolPie()
mMouseSteerX(-1),
mMouseSteerY(-1),
mBlockClickToWalk(false),
- mBlockClickToTeleport(false),
- mClickToTeleportTimer(NULL),
mClickAction(0),
mClickActionBuyEnabled( gSavedSettings.getBOOL("ClickActionBuyEnabled") ),
mClickActionPayEnabled( gSavedSettings.getBOOL("ClickActionPayEnabled") )
@@ -687,64 +648,35 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
mMouseButtonDown = false;
if (click_action == CLICK_ACTION_NONE // not doing 1-click action
+ && gSavedSettings.getBOOL("ClickToWalk") // click to walk enabled
&& !gAgent.getFlying() // don't auto-navigate while flying until that works
&& gAgentAvatarp
&& !gAgentAvatarp->isSitting()
+ && !mBlockClickToWalk // another behavior hasn't cancelled click to walk
&& !mPick.mPosGlobal.isExactlyZero() // valid coordinates for pick
&& (mPick.mPickType == LLPickInfo::PICK_LAND // we clicked on land
|| mPick.mObjectID.notNull())) // or on an object
{
- if (gSavedSettings.getBOOL("ClickToWalk")
- && !mBlockClickToWalk) // another behavior hasn't cancelled click to walk
- {
- // handle special cases of steering picks
- LLViewerObject* avatar_object = mPick.getObject();
-
- // get pointer to avatar
- while (avatar_object && !avatar_object->isAvatar())
- {
- avatar_object = (LLViewerObject*)avatar_object->getParent();
- }
-
- if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
- {
- const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
- // pretend we picked some point a bit in front of avatar
- mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
- }
- gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
- walkToClickedLocation();
- LLFirstUse::notMoving(false);
+ // handle special cases of steering picks
+ LLViewerObject* avatar_object = mPick.getObject();
- return TRUE;
- }
- else if (gSavedSettings.getBOOL("ClickToTeleport") && !mBlockClickToTeleport)
+ // get pointer to avatar
+ while (avatar_object && !avatar_object->isAvatar())
{
- LLViewerObject* objp = mPick.getObject();
- LLViewerObject* parentp = objp ? objp->getRootEdit() : NULL;
-
- bool is_in_world = mPick.mObjectID.notNull() && objp && !objp->isHUDAttachment();
- bool is_land = mPick.mPickType == LLPickInfo::PICK_LAND;
- bool has_touch_handler = (objp && objp->flagHandleTouch()) || (parentp && parentp->flagHandleTouch());
- bool has_click_action = final_click_action(objp);
-
- if (is_land || (is_in_world && !has_touch_handler && !has_click_action))
- {
- LLVector3d pos = mPick.mPosGlobal;
- pos.mdV[VZ] += gAgentAvatarp->getPelvisToFoot();
+ avatar_object = (LLViewerObject*)avatar_object->getParent();
+ }
- if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
- {
- // defer for more than the double click interval.
- scheduleTeleport(pos);
- }
- else
- {
- gAgent.teleportViaLocationLookAt(pos);
- }
- return TRUE;
- }
+ if (avatar_object && ((LLVOAvatar*)avatar_object)->isSelf())
+ {
+ const F64 SELF_CLICK_WALK_DISTANCE = 3.0;
+ // pretend we picked some point a bit in front of avatar
+ mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
}
+ gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
+ walkToClickedLocation();
+ LLFirstUse::notMoving(false);
+
+ return TRUE;
}
gViewerWindow->setCursor(UI_CURSOR_ARROW);
if (hasMouseCapture())
@@ -756,7 +688,6 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
gAgentCamera.setLookAt(LOOKAT_TARGET_CONVERSATION, obj); // maybe look at object/person clicked on
mBlockClickToWalk = false;
- mBlockClickToTeleport = false;
return LLTool::handleMouseUp(x, y, mask);
}
@@ -777,13 +708,8 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
llinfos << "LLToolPie handleDoubleClick (becoming mouseDown)" << llendl;
}
- cancelScheduledTeleport();
-
if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
{
- // Avoid teleporting for the second time when user releases mouse button after double click.
- mBlockClickToTeleport = true;
-
if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
(mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
{
@@ -1443,23 +1369,6 @@ bool LLToolPie::inCameraSteerMode()
return mMouseButtonDown && mMouseOutsideSlop && gSavedSettings.getBOOL("ClickToWalk");
}
-void LLToolPie::scheduleTeleport(const LLVector3d& pos)
-{
- // cancel previously scheduled teleport (if any)
- cancelScheduledTeleport();
-
- // and schedule new one
- mClickToTeleportTimer = new LLClickToTeleportTimer(pos);
-}
-
-void LLToolPie::cancelScheduledTeleport()
-{
- if (mClickToTeleportTimer)
- {
- delete mClickToTeleportTimer;
- }
-}
-
// true if x,y outside small box around start_x,start_y
BOOL LLToolPie::outsideSlop(S32 x, S32 y, S32 start_x, S32 start_y)
{
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index 7e84170549..68fe8bc4a5 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -32,7 +32,6 @@
#include "llviewerwindow.h" // for LLPickInfo
#include "llhudeffectblob.h" // for LLPointer, apparently
-class LLClickToTeleportTimer;
class LLViewerObject;
class LLObjectSelection;
@@ -98,12 +97,8 @@ private:
void startCameraSteering();
void stopCameraSteering();
bool inCameraSteerMode();
- void scheduleTeleport(const LLVector3d& pos);
- void cancelScheduledTeleport();
private:
- friend class LLClickToTeleportTimer;
-
bool mMouseButtonDown;
bool mMouseOutsideSlop; // for this drag, has mouse moved outside slop region
S32 mMouseDownX;
@@ -114,8 +109,6 @@ private:
LLPointer mMouseSteerGrabPoint;
bool mClockwise;
bool mBlockClickToWalk;
- bool mBlockClickToTeleport;
- LLClickToTeleportTimer* mClickToTeleportTimer;
LLUUID mMediaMouseCaptureID;
LLPickInfo mPick;
LLPickInfo mHoverPick;
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index 5a70acddeb..cb547d7c6b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -201,100 +201,64 @@
length="1"
height="10"
layout="topleft"
- left="259"
- name="single_click_lbl"
- width="100"
- top_pad="10">
- Single-Click
+ left="86"
+ name="single_click_action_lbl"
+ width="150"
+ top_pad="20">
+ Single click on land:
+
+
+
+
+
- Double-Click
+ left="86"
+ name="double_click_action_lbl"
+ width="150"
+ top_pad="12">
+ Double click on land:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
Date: Thu, 29 Sep 2011 12:57:13 -0500
Subject: Pull Nyx's thread local data initialization fix
---
indra/newview/llappviewer.cpp | 3 +++
1 file changed, 3 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 2320d4a0d0..eb5ebbf1e9 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -773,6 +773,9 @@ bool LLAppViewer::init()
LLViewerAssetStatsFF::init();
}
+ // init main thread's local data pool before initializing the threads - Nyx
+ LLThreadLocalData::init();
+
initThreads();
LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ;
--
cgit v1.3
From 1e9a4924317b8c0c2c8418c8531c9fd1b141b605 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 13:10:38 -0500
Subject: SH-2276 disable private memory pool management
---
indra/llrender/llvertexbuffer.cpp | 4 ++--
indra/newview/app_settings/settings.xml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 5756ccdcd5..71596d41d3 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -560,8 +560,8 @@ void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping)
sDisableVBOMapping = sEnableVBOs && no_vbo_mapping ;
if(!sPrivatePoolp)
- { //disable private pool for now -- lots of memory allocations failing for vertex buffers erroneously
- //sPrivatePoolp = LLPrivateMemoryPoolManager::getInstance()->newPool(LLPrivateMemoryPool::STATIC) ;
+ {
+ sPrivatePoolp = LLPrivateMemoryPoolManager::getInstance()->newPool(LLPrivateMemoryPool::STATIC) ;
}
}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 727851b4da..890eb0f0ce 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5655,7 +5655,7 @@
Type
Boolean
Value
- 1
+ 0
MemProfiling
--
cgit v1.3
From 9d3fc5d930bd1dae07771350080e5140c0113891 Mon Sep 17 00:00:00 2001
From: Paul ProductEngine
Date: Thu, 29 Sep 2011 21:43:07 +0300
Subject: EXP-1209 FIXED Sidetray removed.
- Removed all sidetray dependencies and the sidetray itself.
- Also removed LLFloaterSidetrayTab and LLSidetrayListener as unused.
---
indra/newview/CMakeLists.txt | 6 -
indra/newview/app_settings/settings.xml | 11 -
indra/newview/llagentwearables.cpp | 1 -
indra/newview/llappearancemgr.cpp | 4 +-
indra/newview/llappviewer.cpp | 7 -
indra/newview/llavataractions.cpp | 1 -
indra/newview/llbottomtray.cpp | 1 -
indra/newview/llchathistory.cpp | 2 -
indra/newview/llcofwearables.cpp | 8 -
indra/newview/llfavoritesbar.cpp | 1 -
indra/newview/llfloaterpreference.cpp | 7 +-
indra/newview/llfloatersidetraytab.cpp | 52 -
indra/newview/llfloatersidetraytab.h | 49 -
indra/newview/llgroupactions.cpp | 1 -
indra/newview/llimfloater.cpp | 38 -
indra/newview/llimfloater.h | 4 -
indra/newview/llinspectobject.cpp | 1 -
indra/newview/llinventorybridge.cpp | 1 -
indra/newview/llinventoryfunctions.cpp | 1 -
indra/newview/llinventorypanel.cpp | 1 -
indra/newview/lllocationinputctrl.cpp | 1 -
indra/newview/llnavigationbar.cpp | 1 -
indra/newview/llnearbychat.cpp | 1 -
indra/newview/lloutfitslist.cpp | 1 -
indra/newview/llpanelblockedlist.cpp | 1 -
indra/newview/llpanelgroup.cpp | 1 -
indra/newview/llpanelimcontrolpanel.cpp | 1 -
indra/newview/llpanellandmarks.cpp | 1 -
indra/newview/llpanelmaininventory.cpp | 1 -
indra/newview/llpanelmarketplaceinbox.cpp | 8 -
indra/newview/llpanelmarketplaceinbox.h | 4 +-
indra/newview/llpanelmarketplaceoutbox.cpp | 1 -
indra/newview/llpanelme.cpp | 14 -
indra/newview/llpanelobjectinventory.cpp | 1 -
indra/newview/llpaneloutfitsinventory.cpp | 1 -
indra/newview/llpanelpeople.cpp | 3 +-
indra/newview/llpanelplaces.cpp | 1 -
indra/newview/llpanelteleporthistory.cpp | 1 -
indra/newview/llpaneltopinfobar.cpp | 1 -
indra/newview/llpaneltopinfobar.h | 2 +-
indra/newview/llpanelwearing.cpp | 1 -
indra/newview/llscreenchannel.cpp | 41 +-
indra/newview/llscreenchannel.h | 1 -
indra/newview/llsidepanelappearance.cpp | 2 -
indra/newview/llsidepanelinventory.cpp | 5 +-
indra/newview/llsidepanelinventory.h | 2 +-
indra/newview/llsidetray.cpp | 1489 --------------------
indra/newview/llsidetray.h | 260 ----
indra/newview/llsidetraylistener.cpp | 179 ---
indra/newview/llsidetraylistener.h | 53 -
indra/newview/llstartup.cpp | 1 -
indra/newview/llurldispatcher.cpp | 1 -
indra/newview/llviewerfloaterreg.cpp | 2 -
indra/newview/llviewerinventory.cpp | 1 -
indra/newview/llviewermenu.cpp | 45 +-
indra/newview/llviewermessage.cpp | 5 +-
indra/newview/llviewertexteditor.cpp | 1 -
indra/newview/llviewerwindow.cpp | 27 -
indra/newview/llviewerwindow.h | 2 -
indra/newview/llwearable.cpp | 1 -
indra/newview/llworldview.cpp | 61 -
indra/newview/skins/default/xui/en/main_view.xml | 19 -
indra/newview/skins/default/xui/en/menu_login.xml | 8 -
.../default/xui/en/panel_preferences_move.xml | 10 -
64 files changed, 29 insertions(+), 2431 deletions(-)
delete mode 100644 indra/newview/llfloatersidetraytab.cpp
delete mode 100644 indra/newview/llfloatersidetraytab.h
delete mode 100644 indra/newview/llsidetray.cpp
delete mode 100644 indra/newview/llsidetray.h
delete mode 100644 indra/newview/llsidetraylistener.cpp
delete mode 100644 indra/newview/llsidetraylistener.h
delete mode 100644 indra/newview/llworldview.cpp
(limited to 'indra/newview')
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 59e1ca10e6..c488d51ba5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -229,7 +229,6 @@ set(viewer_SOURCE_FILES
llfloatersellland.cpp
llfloatersettingsdebug.cpp
llfloatersidepanelcontainer.cpp
- llfloatersidetraytab.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloatertelehub.cpp
@@ -442,8 +441,6 @@ set(viewer_SOURCE_FILES
llsidepanelinventorysubpanel.cpp
llsidepaneliteminfo.cpp
llsidepaneltaskinfo.cpp
- llsidetray.cpp
- llsidetraylistener.cpp
llsidetraypanelcontainer.cpp
llsky.cpp
llslurl.cpp
@@ -794,7 +791,6 @@ set(viewer_HEADER_FILES
llfloatersellland.h
llfloatersettingsdebug.h
llfloatersidepanelcontainer.h
- llfloatersidetraytab.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloatertelehub.h
@@ -1002,8 +998,6 @@ set(viewer_HEADER_FILES
llsidepanelinventorysubpanel.h
llsidepaneliteminfo.h
llsidepaneltaskinfo.h
- llsidetray.h
- llsidetraylistener.h
llsidetraypanelcontainer.h
llsky.h
llslurl.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 148b80e817..3d3185600b 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9921,17 +9921,6 @@
Value
0
- SidebarCameraMovement
-
- Comment
- Reflects world rect changing while changing sidebar visibility.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
GroupListShowIcons
Comment
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 404cd8e5b6..ccbf6bf932 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -43,7 +43,6 @@
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltooldraganddrop.h"
#include "llviewerregion.h"
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index c638f881a5..e5369dc2b8 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -44,7 +44,6 @@
#include "lloutfitslist.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerobjectlist.h"
#include "llvoavatar.h"
#include "llvoavatarself.h"
@@ -2466,7 +2465,8 @@ public:
// add may be processed after login process is finished
if (mShowPanel)
{
- LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
+
}
LLOutfitsList *outfits_list =
dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 43c8750b02..7b75bbf430 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -81,7 +81,6 @@
#include "llviewermenufile.h"
#include "llvoicechannel.h"
#include "llvoavatarself.h"
-#include "llsidetray.h"
#include "llurlmatch.h"
#include "lltextutil.h"
#include "lllogininstance.h"
@@ -3499,8 +3498,6 @@ void LLAppViewer::requestQuit()
gFloaterView->closeAllChildren(true);
}
- LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
-
send_stats();
gLogoutTimer.reset();
@@ -4559,10 +4556,6 @@ void LLAppViewer::idleShutdown()
return;
}
- if (LLSideTray::getInstance()->notifyChildren(LLSD().with("request","wait_quit")))
- {
- return;
- }
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index fb7517a98b..b14c02a5d6 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -61,7 +61,6 @@
#include "llpaneloutfitedit.h"
#include "llpanelprofile.h"
#include "llrecentpeople.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewercontrol.h"
#include "llviewerobjectlist.h"
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 19061c55ca..98712f1334 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -48,7 +48,6 @@
#include "llimfloater.h" // for LLIMFloater
#include "llnearbychatbar.h"
#include "llnearbychatbarlistener.h"
-#include "llsidetray.h"
#include "llspeakbutton.h"
#include "llsplitbutton.h"
#include "llsyswellwindow.h"
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index d6773b8b29..7a444edd43 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -59,8 +59,6 @@
#include "llviewercontrol.h"
-#include "llsidetray.h"//for blocked objects panel
-
static LLDefaultChildRegistry::Register r("chat_history");
const static std::string NEW_LINE(rawstr_to_utf8("\n"));
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 80e0cca780..54598f90c8 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -41,7 +41,6 @@
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llpaneloutfitedit.h"
-#include "llsidetray.h"
#include "lltrans.h"
static LLRegisterPanelClassWrapper t_cof_wearables("cof_wearables");
@@ -160,11 +159,6 @@ public:
protected:
static void replaceWearable(const LLUUID& item_id)
{
- // *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
- // LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
- // without casting. Getter methods provides possibility to check and construct
- // absent instance. Explicit relations between components avoids situations
- // when we tries to construct instance with unsatisfied implicit input conditions.
LLPanelOutfitEdit * panel_outfit_edit =
dynamic_cast (LLFloaterSidePanelContainer::getPanel("appearance",
"panel_outfit_edit"));
@@ -236,8 +230,6 @@ protected:
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
LLUUID selected_id = mUUIDs.back();
- // *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
- // LLSideTray::getInstance()->getPanel() is rather slow variant
LLPanelOutfitEdit* panel_oe = dynamic_cast(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 1eabf32b9f..6dcfa95a0e 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -45,7 +45,6 @@
#include "llfloaterworldmap.h"
#include "lllandmarkactions.h"
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
#include "llviewermenu.h"
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d8b6b2e966..47c86ae549 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -67,7 +67,6 @@
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "llsliderctrl.h"
-#include "llsidetray.h"
#include "lltabcontainer.h"
#include "lltrans.h"
#include "llviewercontrol.h"
@@ -1497,11 +1496,7 @@ void LLFloaterPreference::onChangeMaturity()
// but the UI for this will still be enabled
void LLFloaterPreference::onClickBlockList()
{
- // don't create side tray on demand
- if (LLSideTray::instanceCreated())
- {
- LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
- }
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
}
void LLFloaterPreference::onDoubleClickCheckBox(LLUICtrl* ctrl)
diff --git a/indra/newview/llfloatersidetraytab.cpp b/indra/newview/llfloatersidetraytab.cpp
deleted file mode 100644
index 9f15e62d84..0000000000
--- a/indra/newview/llfloatersidetraytab.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llfloatersidetraytab.cpp
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatersidetraytab.h"
-
-// newview includes
-#include "lltransientfloatermgr.h"
-#include "llsidetray.h"
-
-LLFloaterSideTrayTab::LLFloaterSideTrayTab(const LLSD& key, const Params& params)
-: LLFloater(key, params)
-{
- // Prevent transient floaters (e.g. IM windows) from hiding
- // when this floater is clicked.
- LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
-{
- LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-void LLFloaterSideTrayTab::onClose(bool app_quitting)
-{
- // The floater is already being closed, so don't toggle it once more (that may crash viewer).
- LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
-}
diff --git a/indra/newview/llfloatersidetraytab.h b/indra/newview/llfloatersidetraytab.h
deleted file mode 100644
index 89f2444a0e..0000000000
--- a/indra/newview/llfloatersidetraytab.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file llfloatersidetraytab.h
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#ifndef LL_LLFLOATERSIDETRAYTAB_H
-#define LL_LLFLOATERSIDETRAYTAB_H
-
-#include "llfloater.h"
-
-/**
- * When a side tray tab gets detached, it's wrapped in an instance of this class.
- *
- * This class helps to make sure that clicking a detached side tray tab doesn't
- * make transient floaters (e.g. IM windows) hide, so that it's possible to
- * drag an inventory item from detached My Inventory window to a docked IM window,
- * i.e. share the item (see VWR-22891).
- */
-class LLFloaterSideTrayTab : public LLFloater
-{
-public:
- LLFloaterSideTrayTab(const LLSD& key, const Params& params = getDefaultParams());
- ~LLFloaterSideTrayTab();
-
- void onClose(bool app_quitting);
-};
-
-#endif // LL_LLFLOATERSIDETRAYTAB_H
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index cbbd66d868..623ebb76f2 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -38,7 +38,6 @@
#include "llgroupmgr.h"
#include "llimview.h" // for gIMMgr
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "llstatusbar.h" // can_afford_transaction()
#include "llimfloater.h"
#include "groupchatlistener.h"
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 50a9c56518..14d85246e9 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -55,15 +55,9 @@
#include "llinventorymodel.h"
#include "llrootview.h"
#include "llspeakers.h"
-#include "llsidetray.h"
#include "llviewerchat.h"
-static const S32 RECT_PADDING_NOT_INIT = -1;
-static const S32 RECT_PADDING_NEED_RECALC = -2;
-
-S32 LLIMFloater::sAllowedRectRightPadding = RECT_PADDING_NOT_INIT;
-
LLIMFloater::LLIMFloater(const LLUUID& session_id)
: LLTransientDockableFloater(NULL, true, session_id),
mControlPanel(NULL),
@@ -472,41 +466,9 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
return floater;
}
-//static
-bool LLIMFloater::resetAllowedRectPadding()
-{
- //reset allowed rect right padding if "SidebarCameraMovement" option
- //or sidebar state changed
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC ;
- return true;
-}
-
void LLIMFloater::getAllowedRect(LLRect& rect)
{
- if (sAllowedRectRightPadding == RECT_PADDING_NOT_INIT) //wasn't initialized
- {
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLIMFloater::resetAllowedRectPadding));
-
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLIMFloater::resetAllowedRectPadding));
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC;
- }
-
rect = gViewerWindow->getWorldViewRectScaled();
- if (sAllowedRectRightPadding == RECT_PADDING_NEED_RECALC) //recalc allowed rect right padding
- {
- LLPanel* side_bar_tabs =
- gViewerWindow->getRootView()->getChild (
- "side_bar_tabs");
- sAllowedRectRightPadding = side_bar_tabs->getRect().getWidth();
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
-
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- sAllowedRectRightPadding += LLSideTray::getInstance()->getVisibleWidth();
- }
- }
- rect.mRight -= sAllowedRectRightPadding;
}
void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 5158f6c1f7..8a3020ea10 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -156,10 +156,6 @@ private:
static void closeHiddenIMToasts();
- static bool resetAllowedRectPadding();
- //need to keep this static for performance issues
- static S32 sAllowedRectRightPadding;
-
static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);
LLPanelChatControlPanel* mControlPanel;
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index 29d7a4a6b0..026c8a0923 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -46,7 +46,6 @@
#include "llmenubutton.h"
#include "llresmgr.h" // getMonetaryString
#include "llsafehandle.h"
-#include "llsidetray.h"
#include "lltextbox.h" // for description truncation
#include "lltoggleablemenu.h"
#include "lltrans.h"
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index b6041c7f31..2066cbc6b2 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -60,7 +60,6 @@
#include "llpreviewtexture.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewerassettype.h"
#include "llviewerfoldertype.h"
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index acec02b507..21a026bcf7 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -71,7 +71,6 @@
#include "llscrollbar.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llsidepanelinventory.h"
#include "lltabcontainer.h"
#include "lltooldraganddrop.h"
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 27db28367c..b0f9cb28e6 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -43,7 +43,6 @@
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "llviewerattachmenu.h"
#include "llviewerfoldertype.h"
#include "llvoavatarself.h"
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index f519ad759e..025181ead5 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -49,7 +49,6 @@
#include "lllandmarkactions.h"
#include "lllandmarklist.h"
#include "llteleporthistory.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h" // getHealth()
#include "lltrans.h"
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 4c0823874c..fc264db5af 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -45,7 +45,6 @@
#include "llpaneltopinfobar.h"
#include "llteleporthistory.h"
#include "llsearchcombobox.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llurlregistry.h"
#include "llurldispatcher.h"
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index a16ea0e7d3..9eaa64a124 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -32,7 +32,6 @@
#include "llrootview.h"
//#include "llchatitemscontainerctrl.h"
#include "lliconctrl.h"
-#include "llsidetray.h"
#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "llresizebar.h"
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index c2739867b1..1dc4d796ab 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -42,7 +42,6 @@
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "lltransutil.h"
#include "llviewermenu.h"
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 856dabb6b7..5c85ec438c 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -38,7 +38,6 @@
// project include
#include "llfloateravatarpicker.h"
#include "llfloatersidepanelcontainer.h"
-#include "llsidetray.h"
#include "llsidetraypanelcontainer.h"
static LLRegisterPanelClassWrapper t_panel_blocked_list("panel_block_list_sidetray");
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 70dcf61d7d..ae217958f0 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -50,7 +50,6 @@
#include "llpanelgroupnotices.h"
#include "llpanelgroupgeneral.h"
-#include "llsidetray.h"
#include "llaccordionctrltab.h"
#include "llaccordionctrl.h"
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index e370f2f622..0295ad151f 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -40,7 +40,6 @@
#include "llparticipantlist.h"
#include "llimview.h"
#include "llvoicechannel.h"
-#include "llsidetray.h"
#include "llspeakers.h"
#include "lltrans.h"
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 1b9eb4813b..a65631b8d8 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -52,7 +52,6 @@
#include "llmenubutton.h"
#include "llplacesinventorybridge.h"
#include "llplacesinventorypanel.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewermenu.h"
#include "llviewerregion.h"
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index c1341af2ef..6562b259c3 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -52,7 +52,6 @@
#include "llviewermenu.h"
#include "llviewertexturelist.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
const std::string FILTERS_FILENAME("filters.xml");
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index a336472fc0..d1aea51a09 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -59,8 +59,6 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()
// virtual
BOOL LLPanelMarketplaceInbox::postBuild()
{
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLPanelMarketplaceInbox::handleLoginComplete, this));
-
LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceInbox::onFocusReceived, this));
return TRUE;
@@ -74,12 +72,6 @@ void LLPanelMarketplaceInbox::onSelectionChange()
}
-void LLPanelMarketplaceInbox::handleLoginComplete()
-{
- // Set us up as the class to drive the badge value for the sidebar_inventory button
- LLSideTray::getInstance()->setTabButtonBadgeDriver("sidebar_inventory", this);
-}
-
LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
{
LLView * inbox_inventory_placeholder = getChild("inbox_inventory_placeholder");
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
index 705a095cf0..3531518e51 100644
--- a/indra/newview/llpanelmarketplaceinbox.h
+++ b/indra/newview/llpanelmarketplaceinbox.h
@@ -28,11 +28,10 @@
#define LL_LLPANELMARKETPLACEINBOX_H
#include "llpanel.h"
-#include "llsidetray.h"
class LLInventoryPanel;
-class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver
+class LLPanelMarketplaceInbox : public LLPanel
{
public:
@@ -61,7 +60,6 @@ public:
std::string getBadgeString() const;
private:
- void handleLoginComplete();
void onSelectionChange();
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index c0de5deb0a..d4f9654e6e 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -40,7 +40,6 @@
#include "llpanelmarketplaceinbox.h"
#include "llsdutil.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "lltimer.h"
#include "llviewernetwork.h"
#include "llagent.h"
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 4d86fa15df..0b687009bf 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -72,20 +72,6 @@ BOOL LLPanelMe::postBuild()
void LLPanelMe::onOpen(const LLSD& key)
{
LLPanelProfile::onOpen(key);
-
- // Removed this action as per SOCIAL-431 The first time a new resident opens the profile tab
- // in the sidebar, they see the old profile editing panel
- //
- //// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
- //bool opened = gSavedSettings.getBOOL("MePanelOpened");
- //// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
- //// is the last time onOpen() is called
- //if( !opened && !LLSideTray::getInstance()->getCollapsed() )
- //{
- // buildEditPanel();
- // openPanel(mEditPanel, getAvatarId());
- // gSavedSettings.setBOOL("MePanelOpened", true);
- //}
}
void LLPanelMe::buildEditPanel()
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 44364b5831..98ea680504 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -57,7 +57,6 @@
#include "llpreviewtexture.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltooldraganddrop.h"
#include "lltrans.h"
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 3ac0d6616b..f90236f6f2 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -41,7 +41,6 @@
#include "llpanelwearing.h"
#include "llsaveoutfitcombobtn.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerfoldertype.h"
static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 86e481d953..80c431f481 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -57,7 +57,6 @@
#include "llinventoryobserver.h"
#include "llnetmap.h"
#include "llpanelpeoplemenus.h"
-#include "llsidetray.h"
#include "llsidetraypanelcontainer.h"
#include "llrecentpeople.h"
#include "llviewercontrol.h" // for gSavedSettings
@@ -1452,7 +1451,7 @@ bool LLPanelPeople::notifyChildren(const LLSD& info)
container->onOpen(LLSD().with(LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME, getName()));
}
else
- LLSideTray::getInstance()->collapseSideBar();
+ LLFloaterReg::hideFloaterInstance("people");
return true; // this notification is only supposed to be handled by task panels
}
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 0129ac753a..7f8f9b29af 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -65,7 +65,6 @@
#include "llpanelplaceprofile.h"
#include "llpanelteleporthistory.h"
#include "llremoteparcelrequest.h"
-#include "llsidetray.h"
#include "llteleporthistorystorage.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 52dd70f005..79171dbcb9 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -31,7 +31,6 @@
#include "llfloaterworldmap.h"
#include "llpanelteleporthistory.h"
-#include "llsidetray.h"
#include "llworldmap.h"
#include "llteleporthistorystorage.h"
#include "lltextutil.h"
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index b6e32dba78..5ed23d2f42 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -36,7 +36,6 @@
#include "lllocationinputctrl.h"
#include "llnotificationsutil.h"
#include "llparcel.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h"
#include "lltrans.h"
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 583e91d15e..e934b522be 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -148,7 +148,7 @@ private:
void setParcelInfoText(const std::string& new_text);
/**
- * Implementation of LLDestroyClass
+ * Implementation of LLDestroyClass
*/
static void destroyClass()
{
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index 87e9bb7b28..e2801c09bd 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -36,7 +36,6 @@
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llmenubutton.h"
-#include "llsidetray.h"
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llsdserialize.h"
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e3bc67a414..a3b0574bca 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -41,7 +41,6 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
-#include "llsidetray.h"
#include
@@ -83,25 +82,8 @@ bool LLScreenChannelBase::isHovering()
return mHoveredToast->isHovered();
}
-void LLScreenChannelBase::resetPositionAndSize()
-{
- LLRect rc = gViewerWindow->getWorldViewRectScaled();
- updatePositionAndSize(rc, rc);
-}
-
void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
S32 top_delta = old_world_rect.mTop - new_world_rect.mTop;
LLRect this_rect = getRect();
@@ -111,10 +93,10 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
case CA_LEFT :
break;
case CA_CENTRE :
- this_rect.setCenterAndSize( (new_world_rect.getWidth() - world_rect_padding) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
+ this_rect.setCenterAndSize( (new_world_rect.getWidth()) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
break;
case CA_RIGHT :
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
@@ -126,12 +108,6 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
{
- if(LLSideTray::instanceCreated())
- {
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this));
- }
-
// top and bottom set by updateBottom()
setRect(LLRect(channel_left, 0, channel_right, 0));
updateBottom();
@@ -203,17 +179,6 @@ std::list LLScreenChannel::findToasts(const Matcher& matcher)
//--------------------------------------------------------------------------
void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
LLRect this_rect = getRect();
switch(mChannelAlignment)
@@ -226,7 +191,7 @@ void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_wo
return;
case CA_RIGHT :
this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index d207d13981..8f11c82673 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -59,7 +59,6 @@ public:
// Channel's outfit-functions
// update channel's size and position in the World View
virtual void updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
- void resetPositionAndSize();
// initialization of channel's shape and position
virtual void init(S32 channel_left, S32 channel_right);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index a356013830..853656905c 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -42,7 +42,6 @@
#include "lloutfitobserver.h"
#include "llpaneleditwearable.h"
#include "llpaneloutfitsinventory.h"
-#include "llsidetray.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
@@ -164,7 +163,6 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
else
{
// Switch to the requested panel.
- // *TODO: replace this crap with LLSideTrayPanelContainer
std::string type = key["type"].asString();
if (type == "my_outfits")
{
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 0226896f54..f9dc70ccc0 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -282,19 +282,20 @@ BOOL LLSidepanelInventory::postBuild()
enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
// Trigger callback for after login so we can setup to track inbox and outbox changes after initial inventory load
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::handleLoginComplete, this));
+ LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::updateInboxOutbox, this));
}
gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged));
+ updateInboxOutbox();
// Update the verbs buttons state.
updateVerbs();
return TRUE;
}
-void LLSidepanelInventory::handleLoginComplete()
+void LLSidepanelInventory::updateInboxOutbox()
{
//
// Track inbox and outbox folder changes
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index b7d11f7f9b..4e34926a4b 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -47,7 +47,7 @@ public:
virtual ~LLSidepanelInventory();
private:
- void handleLoginComplete();
+ void updateInboxOutbox();
public:
void observeInboxOutboxCreation();
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
deleted file mode 100644
index 55d6378ad8..0000000000
--- a/indra/newview/llsidetray.cpp
+++ /dev/null
@@ -1,1489 +0,0 @@
-/**
- * @file llsidetray.cpp
- * @brief SideBar implementation
- *
- * $LicenseInfo:firstyear=2009&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lltextbox.h"
-
-#include "llagentcamera.h"
-#include "llappviewer.h"
-#include "llbadge.h"
-#include "llbottomtray.h"
-#include "llfloaterreg.h"
-#include "llfirstuse.h"
-#include "llhints.h"
-#include "llsidetray.h"
-#include "llviewerwindow.h"
-#include "llaccordionctrl.h"
-#include "llfocusmgr.h"
-#include "llrootview.h"
-#include "llnavigationbar.h"
-#include "llpanelmarketplaceinbox.h"
-
-#include "llaccordionctrltab.h"
-
-#include "llfloater.h" //for gFloaterView
-#include "lliconctrl.h"//for OpenClose tab icon
-#include "llsidetraypanelcontainer.h"
-#include "llscreenchannel.h"
-#include "llchannelmanager.h"
-#include "llwindow.h"//for SetCursor
-#include "lltransientfloatermgr.h"
-
-#include "llsidepanelappearance.h"
-
-#include "llsidetraylistener.h"
-
-//#include "llscrollcontainer.h"
-
-using namespace std;
-using namespace LLNotificationsUI;
-
-class LLSideTrayButton;
-
-static LLRootViewRegistry::Register t1("side_tray");
-static LLDefaultChildRegistry::Register t2("sidetray_tab");
-
-static const S32 BOTTOM_BAR_PAD = 5;
-
-static const std::string COLLAPSED_NAME = "<<";
-static const std::string EXPANDED_NAME = ">>";
-
-static const std::string TAB_PANEL_CAPTION_NAME = "sidetray_tab_panel";
-static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title";
-
-LLSideTray* LLSideTray::sInstance = 0;
-
-static LLSideTrayListener sSideTrayListener(LLSideTray::getInstance);
-
-// static
-LLSideTray* LLSideTray::getInstance()
-{
- if (!sInstance)
- {
- sInstance = LLUICtrlFactory::createFromFile("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance());
- sInstance->setXMLFilename("panel_side_tray.xml");
- }
-
- return sInstance;
-}
-
-// static
-bool LLSideTray::instanceCreated ()
-{
- return sInstance!=0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayTab
-// Represents a single tab in the side tray, only used by LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayTab: public LLPanel
-{
- LOG_CLASS(LLSideTrayTab);
- friend class LLUICtrlFactory;
- friend class LLSideTray;
-public:
-
- struct Params
- : public LLInitParam::Block
- {
- // image name
- Optional image;
- Optional image_selected;
- Optional tab_title;
- Optional description;
- Optional badge;
-
- Params()
- : image("image"),
- image_selected("image_selected"),
- tab_title("tab_title","no title"),
- description("description","no description"),
- badge("badge")
- {};
- };
-protected:
- LLSideTrayTab(const Params& params);
-
- void dock(LLFloater* floater_tab);
- void undock(LLFloater* floater_tab);
-
- LLSideTray* getSideTray();
-
-public:
- virtual ~LLSideTrayTab();
-
- /*virtual*/ BOOL postBuild ();
- /*virtual*/ bool addChild (LLView* view, S32 tab_group);
-
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static LLSideTrayTab* createInstance ();
-
- const std::string& getDescription () const { return mDescription;}
-
- void onOpen (const LLSD& key);
-
- void toggleTabDocked(bool toggle_floater = true);
- void setDocked(bool dock);
- bool isDocked() const;
-
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
-
- LLPanel* getPanel();
-
- LLButton* createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback);
-
-private:
- std::string mTabTitle;
- std::string mImage;
- std::string mImageSelected;
- std::string mDescription;
-
- LLView* mMainPanel;
-
- bool mHasBadge;
- LLBadge::Params mBadgeParams;
- LLSideTrayButton* mSideTrayButton;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayButton
-// Side Tray tab button with "tear off" handling.
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayButton : public LLButton
-{
-public:
- /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask)
- {
- // Route future Mouse messages here preemptively. (Release on mouse up.)
- // No handler needed for focus lost since this class has no state that depends on it.
- gFocusMgr.setMouseCapture(this);
-
- localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY);
-
- // Note: don't pass on to children
- return TRUE;
- }
-
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask)
- {
- // We only handle the click if the click both started and ended within us
- if( !hasMouseCapture() ) return FALSE;
-
- S32 screen_x;
- S32 screen_y;
- localPointToScreen(x, y, &screen_x, &screen_y);
-
- S32 delta_x = screen_x - mDragLastScreenX;
- S32 delta_y = screen_y - mDragLastScreenY;
-
- LLSideTray* side_tray = LLSideTray::getInstance();
-
- // Check if the tab we are dragging is docked.
- if (!side_tray->isTabAttached(mTabName)) return FALSE;
-
- // Same value is hardcoded in LLDragHandle::handleHover().
- const S32 undock_threshold = 12;
-
- // Detach a tab if it has been pulled further than undock_threshold.
- if (delta_x <= -undock_threshold || delta_x >= undock_threshold ||
- delta_y <= -undock_threshold || delta_y >= undock_threshold)
- {
- LLSideTrayTab* tab = side_tray->getTab(mTabName);
- if (!tab) return FALSE;
-
- tab->setDocked(false);
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName());
- if (!floater_tab) return FALSE;
-
- LLRect original_rect = floater_tab->getRect();
- S32 header_snap_y = floater_tab->getHeaderHeight() / 2;
- S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2;
- S32 snap_y = screen_y - original_rect.mTop + header_snap_y;
-
- // Move the floater to appear "under" the mouse pointer.
- floater_tab->setRect(original_rect.translate(snap_x, snap_y));
-
- // Snap the mouse pointer to the center of the floater header
- // and call 'mouse down' event handler to begin dragging.
- floater_tab->handleMouseDown(original_rect.getWidth() / 2,
- original_rect.getHeight() - header_snap_y,
- mask);
-
- return TRUE;
- }
-
- return FALSE;
- }
-
- void setBadgeDriver(LLSideTrayTabBadgeDriver* driver)
- {
- mBadgeDriver = driver;
- }
-
- void setVisible(BOOL visible)
- {
- setBadgeVisibility(visible);
-
- LLButton::setVisible(visible);
- }
-
-protected:
- LLSideTrayButton(const LLButton::Params& p)
- : LLButton(p)
- , mDragLastScreenX(0)
- , mDragLastScreenY(0)
- , mBadgeDriver(NULL)
- {
- // Find out the tab name to use in handleHover().
- size_t pos = getName().find("_button");
- llassert(pos != std::string::npos);
- mTabName = getName().substr(0, pos);
- }
-
- friend class LLUICtrlFactory;
-
- void draw()
- {
- if (mBadgeDriver)
- {
- setBadgeLabel(mBadgeDriver->getBadgeString());
- }
-
- LLButton::draw();
- }
-
-private:
- S32 mDragLastScreenX;
- S32 mDragLastScreenY;
-
- std::string mTabName;
- LLSideTrayTabBadgeDriver* mBadgeDriver;
-};
-
-
-////////////////////////////////////////////////////
-// LLSideTrayTab implementation
-////////////////////////////////////////////////////
-
-LLSideTrayTab::LLSideTrayTab(const Params& p)
-: LLPanel(),
- mTabTitle(p.tab_title),
- mImage(p.image),
- mImageSelected(p.image_selected),
- mDescription(p.description),
- mMainPanel(NULL),
- mBadgeParams(p.badge),
- mSideTrayButton(NULL)
-{
- mHasBadge = p.badge.isProvided();
-}
-
-LLSideTrayTab::~LLSideTrayTab()
-{
-}
-
-bool LLSideTrayTab::addChild(LLView* view, S32 tab_group)
-{
- if(mMainPanel == 0 && TAB_PANEL_CAPTION_NAME != view->getName())//skip our caption panel
- mMainPanel = view;
- return LLPanel::addChild(view,tab_group);
- //return res;
-}
-
-//virtual
-BOOL LLSideTrayTab::postBuild()
-{
- LLPanel* title_panel = LLUICtrlFactory::getInstance()->createFromFile("panel_side_tray_tab_caption.xml",this, child_registry_t::instance());
- string name = title_panel->getName();
- LLPanel::addChild(title_panel);
-
- title_panel->getChild(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle);
-
- getChild("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, false));
- getChild("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, true));
-
- return LLPanel::postBuild();
-}
-
-static const S32 splitter_margin = 1;
-
-void LLSideTrayTab::reshape (S32 width, S32 height, BOOL called_from_parent )
-{
- LLPanel::reshape(width, height, called_from_parent);
- LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true);
- if (!title_panel)
- {
- // not fully constructed yet
- return;
- }
-
- S32 title_height = title_panel->getRect().getHeight();
- title_panel->setOrigin( 0, height - title_height );
- title_panel->reshape(width,title_height);
-
- LLRect sRect;
- sRect.setLeftTopAndSize( splitter_margin, height - title_height - splitter_margin,
- width - 2*splitter_margin, height - title_height - 2*splitter_margin);
- mMainPanel->setShape(sRect);
-}
-
-void LLSideTrayTab::onOpen (const LLSD& key)
-{
- LLPanel *panel = getPanel();
- if(panel)
- panel->onOpen(key);
-}
-
-// Attempts to get the existing side tray instance.
-// Needed to avoid recursive calls of LLSideTray::getInstance().
-LLSideTray* LLSideTrayTab::getSideTray()
-{
- // First, check if the side tray is our parent (i.e. we're attached).
- LLSideTray* side_tray = dynamic_cast(getParent());
- if (!side_tray)
- {
- // Detached? Ok, check if the instance exists at all/
- if (LLSideTray::instanceCreated())
- {
- side_tray = LLSideTray::getInstance();
- }
- else
- {
- llerrs << "No safe way to get the side tray instance" << llendl;
- }
- }
-
- return side_tray;
-}
-
-void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
-{
- // *FIX: Calling this method twice per frame would crash the viewer.
-
- std::string tab_name = getName();
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return;
-
- bool docking = !isDocked();
-
- if (mSideTrayButton)
- {
- mSideTrayButton->setVisible(docking);
- }
-
- // Hide the "Tear Off" button when a tab gets undocked
- // and show "Dock" button instead.
- getChild("undock")->setVisible(docking);
- getChild("dock")->setVisible(!docking);
-
- if (docking)
- {
- dock(floater_tab);
- }
- else
- {
- undock(floater_tab);
- }
-
- // Open/close the floater *after* we reparent the tab panel,
- // so that it doesn't receive redundant visibility change notifications.
- if (toggle_floater)
- {
- LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
- }
-}
-
-// Same as toggleTabDocked() apart from making sure that we do exactly what we want.
-void LLSideTrayTab::setDocked(bool dock)
-{
- if (isDocked() == dock)
- {
- llwarns << "Tab " << getName() << " is already " << (dock ? "docked" : "undocked") << llendl;
- return;
- }
-
- toggleTabDocked();
-}
-
-bool LLSideTrayTab::isDocked() const
-{
- return dynamic_cast(getParent()) != NULL;
-}
-
-BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
-{
- // Let children handle the event
- LLUICtrl::handleScrollWheel(x, y, clicks);
-
- // and then eat it to prevent in-world scrolling (STORM-351).
- return TRUE;
-}
-
-void LLSideTrayTab::dock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Before docking the tab, reset its (and its children's) transparency to default (STORM-688).
- floater_tab->updateTransparency(TT_DEFAULT);
-
- if (!side_tray->addTab(this))
- {
- llwarns << "Failed to add tab " << getName() << " to side tray" << llendl;
- return;
- }
-
- setRect(side_tray->getLocalRect());
- reshape(getRect().getWidth(), getRect().getHeight());
-
- // Select the re-docked tab.
- side_tray->selectTabByName(getName());
-
- if (side_tray->getCollapsed())
- {
- side_tray->expandSideBar(false);
- }
-}
-
-static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized)
-{
- if (!panel) return;
- bool visible = !minimized.asBoolean();
- LLSD visibility;
- visibility["visible"] = visible;
- // Do not reset accordion state on minimize (STORM-375)
- visibility["reset_accordion"] = false;
- panel->updateToVisibility(visibility);
-}
-
-void LLSideTrayTab::undock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Remember whether the tab have been active before detaching
- // because removeTab() will change active tab.
- bool was_active = side_tray->getActiveTab() == this;
-
- // Remove the tab from Side Tray's tabs list.
- // We have to do it despite removing the tab from Side Tray's child view tree
- // by addChild(). Otherwise the tab could be accessed by the pointer in LLSideTray::mTabs.
- if (!side_tray->removeTab(this))
- {
- llwarns << "Failed to remove tab " << getName() << " from side tray" << llendl;
- return;
- }
-
- // If we're undocking while side tray is collapsed we need to explicitly show the panel.
- if (!getVisible())
- {
- setVisible(true);
- }
-
- floater_tab->addChild(this);
- floater_tab->setTitle(mTabTitle);
- floater_tab->setName(getName());
-
- // Resize handles get obscured by added panel so move them to front.
- floater_tab->moveResizeHandlesToFront();
-
- // Reshape the floater if needed.
- LLRect floater_rect;
- if (floater_tab->hasSavedRect())
- {
- // We've got saved rect for the floater, hence no need to reshape it.
- floater_rect = floater_tab->getLocalRect();
- }
- else
- {
- // Detaching for the first time. Reshape the floater.
- floater_rect = side_tray->getLocalRect();
-
- // Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar.
- floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD;
- floater_rect.makeValid();
- floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight());
- }
-
- // Reshape the panel.
- {
- LLRect panel_rect = floater_tab->getLocalRect();
- panel_rect.mTop -= floater_tab->getHeaderHeight();
- panel_rect.makeValid();
- setRect(panel_rect);
- reshape(panel_rect.getWidth(), panel_rect.getHeight());
- }
-
- // Set FOLLOWS_ALL flag for the tab to follow floater dimensions upon resizing.
- setFollowsAll();
-
- // Camera view may need to be changed for appearance panel(STORM-301) on minimize of floater,
- // so setting callback here.
- if (getName() == "sidebar_appearance")
- {
- LLSidepanelAppearance* panel_appearance = dynamic_cast(getPanel());
- if(panel_appearance)
- {
- floater_tab->setMinimizeCallback(boost::bind(&on_minimize, panel_appearance, _2));
- }
- }
-
- if (!side_tray->getCollapsed())
- {
- side_tray->collapseSideBar();
- }
-
- if (!was_active)
- {
- // When a tab other then current active tab is detached from Side Tray
- // onOpen() should be called as tab visibility is changed.
- onOpen(LLSD());
- }
-}
-
-LLPanel* LLSideTrayTab::getPanel()
-{
- LLPanel* panel = dynamic_cast(mMainPanel);
- return panel;
-}
-
-LLSideTrayTab* LLSideTrayTab::createInstance ()
-{
- LLSideTrayTab::Params tab_params;
- tab_params.tab_title("openclose");
-
- LLSideTrayTab* tab = LLUICtrlFactory::create(tab_params);
- return tab;
-}
-
-// Now that we know the definition of LLSideTrayTab, we can implement
-// tab_cast.
-template <>
-LLPanel* tab_cast(LLSideTrayTab* tab) { return tab; }
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-LLSideTray::Params::Params()
-: collapsed("collapsed",false),
- tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Off.png")),
- tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Selected.png")),
- default_button_width("tab_btn_width",32),
- default_button_height("tab_btn_height",32),
- default_button_margin("tab_btn_margin",0)
-{}
-
-//virtual
-LLSideTray::LLSideTray(const Params& params)
- : LLPanel(params)
- ,mActiveTab(0)
- ,mCollapsed(false)
- ,mCollapseButton(0)
-{
- mCollapsed=params.collapsed;
-
- LLUICtrl::CommitCallbackRegistry::Registrar& commit = LLUICtrl::CommitCallbackRegistry::currentRegistrar();
-
- // register handler function to process data from the xml.
- // panel_name should be specified via "parameter" attribute.
- commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
- commit.add("SideTray.Toggle", boost::bind(&LLSideTray::onToggleCollapse, this));
- commit.add("SideTray.Collapse", boost::bind(&LLSideTray::collapseSideBar, this));
- LLTransientFloaterMgr::getInstance()->addControlView(this);
- LLView* side_bar_tabs = gViewerWindow->getRootView()->getChildView("side_bar_tabs");
- if (side_bar_tabs != NULL)
- {
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
- }
-
- LLPanel::Params p;
- p.name = "buttons_panel";
- p.mouse_opaque = false;
- mButtonsPanel = LLUICtrlFactory::create(p);
-}
-
-
-BOOL LLSideTray::postBuild()
-{
- createButtons();
-
- arrange();
- selectTabByName("sidebar_home");
-
- if(mCollapsed)
- collapseSideBar();
-
- setMouseOpaque(false);
-
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
-
- // Remember original tabs order, so that we can restore it if user detaches and then re-attaches a tab.
- for (child_vector_const_iter_t it = mTabs.begin(); it != mTabs.end(); ++it)
- {
- std::string tab_name = (*it)->getName();
- mOriginalTabOrder.push_back(tab_name);
- }
-
- //EXT-8045
- //connect all already created channels to reflect sidetray collapse/expand
- std::vector& channels = LLChannelManager::getInstance()->getChannelList();
- for(std::vector::iterator it = channels.begin();it!=channels.end();++it)
- {
- if ((*it).channel)
- {
- setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel));
- }
- }
-
- return true;
-}
-
-void LLSideTray::setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver)
-{
- mTabButtonBadgeDrivers[tabName] = driver;
-}
-
-void LLSideTray::handleLoginComplete()
-{
- //reset tab to "home" tab if it was changesd during login process
- selectTabByName("sidebar_home");
-
- for (badge_map_t::iterator it = mTabButtonBadgeDrivers.begin(); it != mTabButtonBadgeDrivers.end(); ++it)
- {
- LLButton* button = mTabButtons[it->first];
- LLSideTrayButton* side_button = dynamic_cast(button);
-
- if (side_button)
- {
- side_button->setBadgeDriver(it->second);
- }
- else
- {
- llwarns << "Unable to find button " << it->first << " to set the badge driver. " << llendl;
- }
- }
-
- detachTabs();
-}
-
-LLSideTrayTab* LLSideTray::getTab(const std::string& name)
-{
- return findChild(name,false);
-}
-
-bool LLSideTray::isTabAttached(const std::string& name)
-{
- LLSideTrayTab* tab = getTab(name);
- llassert(tab);
- if (!tab) return false;
-
- return std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end();
-}
-
-bool LLSideTray::hasTabs()
-{
- // The open/close tab doesn't count.
- return mTabs.size() > 1;
-}
-
-void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
-{
- if(tab == NULL)
- return;
- std::string name = tab->getName();
- std::map::iterator it = mTabButtons.find(name);
- if(it != mTabButtons.end())
- {
- LLButton* btn = it->second;
- bool new_state = !btn->getToggleState();
- btn->setToggleState(new_state);
- // Only highlight the tab if side tray is expanded (STORM-157).
- btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
- }
-}
-
-LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params)
-{
- LLView* view = tab->findChildView(panel_name, true);
- if (!view) return NULL;
-
- std::string tab_name = tab->getName();
-
- bool tab_attached = isTabAttached(tab_name);
-
- if (tab_attached && LLUI::sSettingGroups["config"]->getBOOL("OpenSidePanelsInFloaters"))
- {
- tab->setDocked(false);
- tab_attached = false;
- }
-
- // Select tab and expand Side Tray only when a tab is attached.
- if (tab_attached)
- {
- selectTabByName(tab_name);
- if (mCollapsed)
- expandSideBar();
- }
- else
- {
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return NULL;
-
- floater_tab->openFloater(tab_name);
- }
-
- LLSideTrayPanelContainer* container = dynamic_cast(view->getParent());
- if (container)
- {
- LLSD new_params = params;
- new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
- container->onOpen(new_params);
-
- return container->getCurrentPanel();
- }
-
- LLPanel* panel = dynamic_cast(view);
- if (panel)
- {
- panel->onOpen(params);
- }
-
- return panel;
-}
-
-bool LLSideTray::selectTabByIndex(size_t index)
-{
- if(index>=mTabs.size())
- return false;
-
- LLSideTrayTab* sidebar_tab = mTabs[index];
- return selectTabByName(sidebar_tab->getName());
-}
-
-bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible)
-{
- LLSideTrayTab* tab_to_keep_visible = NULL;
- LLSideTrayTab* new_tab = getTab(name);
- if (!new_tab) return false;
-
- // Bail out if already selected.
- if (new_tab == mActiveTab)
- return false;
-
- //deselect old tab
- if (mActiveTab)
- {
- // Keep previously active tab visible if requested.
- if (keep_prev_visible) tab_to_keep_visible = mActiveTab;
- toggleTabButton(mActiveTab);
- }
-
- //select new tab
- mActiveTab = new_tab;
-
- if (mActiveTab)
- {
- toggleTabButton(mActiveTab);
- LLSD key;//empty
- mActiveTab->onOpen(key);
- }
-
- //arrange();
-
- //hide all tabs - show active tab
- child_vector_const_iter_t child_it;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- bool vis = sidebar_tab == mActiveTab;
-
- // Force keeping the tab visible if requested.
- vis |= sidebar_tab == tab_to_keep_visible;
-
- // When the last tab gets detached, for a short moment the "Toggle Sidebar" pseudo-tab
- // is shown. So, to avoid the flicker we make sure it never gets visible.
- vis &= (*child_it)->getName() != "sidebar_openclose";
-
- sidebar_tab->setVisible(vis);
- }
- return true;
-}
-
-bool LLSideTray::addChild(LLView* view, S32 tab_group)
-{
- LLSideTrayTab* tab_panel = dynamic_cast(view);
-
- if (tab_panel)
- {
- mTabs.push_back(tab_panel);
- }
-
- return LLUICtrl::addChild(view, tab_group);
-}
-
-bool LLSideTray::removeTab(LLSideTrayTab* tab)
-{
- if (!tab) return false;
- std::string tab_name = tab->getName();
-
- // Look up the tab in the list of known tabs.
- child_vector_iter_t tab_it = std::find(mTabs.begin(), mTabs.end(), tab);
- if (tab_it == mTabs.end())
- {
- llwarns << "Cannot find tab named " << tab_name << llendl;
- return false;
- }
-
- // Find the button corresponding to the tab.
- button_map_t::iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Cannot find button for tab named " << tab_name << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Deselect the tab.
- if (mActiveTab == tab)
- {
- // Select the next tab (or first one, if we're removing the last tab),
- // skipping the fake open/close tab (STORM-155).
- child_vector_iter_t next_tab_it = tab_it;
- do
- {
- next_tab_it = (next_tab_it < (mTabs.end() - 1)) ? next_tab_it + 1 : mTabs.begin();
- }
- while ((*next_tab_it)->getName() == "sidebar_openclose");
-
- selectTabByName((*next_tab_it)->getName(), true); // Don't hide the tab being removed.
- }
-
- // Remove the tab.
- removeChild(tab);
- mTabs.erase(tab_it);
-
- // Add the tab to detached tabs list.
- mDetachedTabs.push_back(tab);
-
- // Remove the button from the buttons panel so that it isn't drawn anymore.
- mButtonsPanel->removeChild(btn);
-
- // Re-arrange remaining tabs.
- arrange();
-
- return true;
-}
-
-bool LLSideTray::addTab(LLSideTrayTab* tab)
-{
- if (tab == NULL) return false;
-
- std::string tab_name = tab->getName();
-
- // Make sure the tab isn't already in the list.
- if (std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end())
- {
- llwarns << "Attempt to re-add existing tab " << tab_name << llendl;
- return false;
- }
-
- // Look up the corresponding button.
- button_map_t::const_iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Tab " << tab_name << " has no associated button" << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Insert the tab at its original position.
- LLUICtrl::addChild(tab);
- {
- tab_order_vector_const_iter_t new_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), tab_name);
- llassert(new_tab_orig_pos != mOriginalTabOrder.end());
- child_vector_iter_t insert_pos = mTabs.end();
-
- for (child_vector_iter_t tab_it = mTabs.begin(); tab_it != mTabs.end(); ++tab_it)
- {
- tab_order_vector_const_iter_t cur_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), (*tab_it)->getName());
- llassert(cur_tab_orig_pos != mOriginalTabOrder.end());
-
- if (new_tab_orig_pos < cur_tab_orig_pos)
- {
- insert_pos = tab_it;
- break;
- }
- }
-
- mTabs.insert(insert_pos, tab);
- }
-
- // Add the button to the buttons panel so that it's drawn again.
- mButtonsPanel->addChildInBack(btn);
-
- // Arrange tabs after inserting a new one.
- arrange();
-
- // Remove the tab from the list of detached tabs.
- child_vector_iter_t tab_it = std::find(mDetachedTabs.begin(), mDetachedTabs.end(), tab);
- if (tab_it != mDetachedTabs.end())
- {
- mDetachedTabs.erase(tab_it);
- }
-
- return true;
-}
-
-LLButton* LLSideTrayTab::createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback)
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams());
-
- LLRect rect;
- rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height);
-
- LLButton::Params bparams;
-
- // Append "_button" to the side tray tab name
- std::string button_name = getName() + "_button";
- bparams.name(button_name);
- bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);
- bparams.rect (rect);
- bparams.tab_stop(false);
- bparams.image_unselected(sidetray_params.tab_btn_image_normal);
- bparams.image_selected(sidetray_params.tab_btn_image_selected);
- bparams.image_disabled(sidetray_params.tab_btn_image_normal);
- bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);
-
- if (mHasBadge)
- {
- bparams.badge = mBadgeParams;
- }
-
- LLButton* button;
- if (allowTearOff)
- {
- mSideTrayButton = LLUICtrlFactory::create(bparams);
-
- button = mSideTrayButton;
- }
- else
- {
- // "Open/Close" button shouldn't allow "tear off"
- // hence it is created as LLButton instance.
- button = LLUICtrlFactory::create(bparams);
- }
-
- button->setClickedCallback(callback);
-
- button->setToolTip(mTabTitle);
-
- if(mImage.length())
- {
- button->setImageOverlay(mImage);
- }
-
- return button;
-}
-
-void LLSideTray::createButtons()
-{
- //create buttons for tabs
- child_vector_const_iter_t child_it = mTabs.begin();
- for ( ; child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- std::string name = sidebar_tab->getName();
-
- // The "OpenClose" button will open/close the whole panel
- if (name == "sidebar_openclose")
- {
- mCollapseButton = sidebar_tab->createButton(false, boost::bind(&LLSideTray::onToggleCollapse, this));
-
- mButtonsPanel->addChildInBack(mCollapseButton);
-
- LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle());
- }
- else
- {
- LLButton* button = sidebar_tab->createButton(true, boost::bind(&LLSideTray::onTabButtonClick, this, name));
-
- mButtonsPanel->addChildInBack(button);
-
- mTabButtons[name] = button;
- }
- }
-
- LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle());
-}
-
-void LLSideTray::processTriState ()
-{
- if(mCollapsed)
- expandSideBar();
- else
- {
-#if 0 // *TODO: EXT-2092
-
- // Tell the active task panel to switch to its default view
- // or collapse side tray if already on the default view.
- LLSD info;
- info["task-panel-action"] = "handle-tri-state";
- mActiveTab->notifyChildren(info);
-#else
- collapseSideBar();
-#endif
- }
-}
-
-void LLSideTray::onTabButtonClick(string name)
-{
- LLSideTrayTab* tab = getTab(name);
- if (!tab) return;
-
- if(tab == mActiveTab)
- {
- processTriState ();
- return;
- }
- selectTabByName (name);
- if(mCollapsed)
- expandSideBar();
-}
-
-void LLSideTray::onToggleCollapse()
-{
- LLFirstUse::notUsingSidePanel(false);
- if(mCollapsed)
- {
- expandSideBar();
- //selectTabByName("sidebar_openclose");
- }
- else
- collapseSideBar();
-}
-
-
-void LLSideTray::reflectCollapseChange()
-{
- updateSidetrayVisibility();
-
- setFocus(!mCollapsed);
-
- gFloaterView->refresh();
-}
-
-void LLSideTray::arrange()
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams());
-
- updateSidetrayVisibility();
-
- LLRect ctrl_rect;
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight() - sidetray_params.default_button_width,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- mCollapseButton->setRect(ctrl_rect);
-
- //arrange tab buttons
- //arrange tab buttons
- child_vector_const_iter_t child_it;
- int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight()-offset,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end())
- continue;
-
- LLButton* btn = mTabButtons[sidebar_tab->getName()];
-
- btn->setRect(ctrl_rect);
- offset+=sidetray_params.default_button_height;
- offset+=sidetray_params.default_button_margin;
-
- btn->setVisible(ctrl_rect.mBottom > 0);
- }
-
- //arrange tabs
- for ( child_vector_t::iterator child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
- sidebar_tab->setShape(getLocalRect());
- }
-
- // The tab buttons should be shown only if there is at least one non-detached tab.
- // Also hide them in mouse-look mode.
- mButtonsPanel->setVisible(hasTabs() && !gAgentCamera.cameraMouselook());
-}
-
-// Detach those tabs that were detached when the viewer exited last time.
-void LLSideTray::detachTabs()
-{
- // copy mTabs because LLSideTray::toggleTabDocked() modifies it.
- child_vector_t tabs = mTabs;
-
- for (child_vector_const_iter_t it = tabs.begin(); it != tabs.end(); ++it)
- {
- LLSideTrayTab* tab = *it;
-
- std::string floater_ctrl_name = LLFloater::getControlName("side_bar_tab", LLSD(tab->getName()));
- std::string vis_ctrl_name = LLFloaterReg::getVisibilityControlName(floater_ctrl_name);
- if (!LLFloater::getControlGroup()->controlExists(vis_ctrl_name)) continue;
-
- bool is_visible = LLFloater::getControlGroup()->getBOOL(vis_ctrl_name);
- if (!is_visible) continue;
-
- llassert(isTabAttached(tab->getName()));
- tab->setDocked(false);
- }
-}
-
-void LLSideTray::collapseSideBar()
-{
- mCollapsed = true;
- // Reset all overlay images, because there is no "selected" tab when the
- // whole side tray is hidden.
- child_vector_const_iter_t it = mTabs.begin();
- for ( ; it != mTabs.end(); ++it )
- {
- LLSideTrayTab* tab = *it;
- std::string name = tab->getName();
- std::map::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( tab->mImage );
- }
- }
-
- // OpenClose tab doesn't put its button in mTabButtons
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImage );
- }
- //mActiveTab->setVisible(FALSE);
- reflectCollapseChange();
- setFocus( FALSE );
-}
-
-void LLSideTray::expandSideBar(bool open_active)
-{
- mCollapsed = false;
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImageSelected );
- }
-
- if (open_active)
- {
- mActiveTab->onOpen(LLSD());
- }
-
- reflectCollapseChange();
-
-
- std::string name = mActiveTab->getName();
- std::map::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( mActiveTab->mImageSelected );
- }
-}
-
-void LLSideTray::highlightFocused()
-{
- /* uncomment in case something change
- if(!mActiveTab)
- return;
- BOOL dependent_has_focus = gFocusMgr.childHasKeyboardFocus(this);
- setBackgroundOpaque( dependent_has_focus );
- mActiveTab->setBackgroundOpaque( dependent_has_focus );
- */
-}
-
-//virtual
-BOOL LLSideTray::handleMouseDown (S32 x, S32 y, MASK mask)
-{
- BOOL ret = LLPanel::handleMouseDown(x,y,mask);
- if(ret)
- setFocus(true);
- return ret;
-}
-
-void LLSideTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
- if(!mActiveTab)
- return;
-
- arrange();
-}
-
-// This is just LLView::findChildView specialized to restrict the search to LLPanels.
-// Optimization for EXT-4068 to avoid searching down to the individual item level
-// when inventories are large.
-LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse)
-{
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast(*child_it);
- if (!child_panel)
- continue;
- if (child_panel->getName() == name)
- return child_panel;
- }
- if (recurse)
- {
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast(*child_it);
- if (!child_panel)
- continue;
- LLPanel *found_panel = findChildPanel(child_panel,name,recurse);
- if (found_panel)
- {
- return found_panel;
- }
- }
- }
- return NULL;
-}
-
-/**
- * Activate tab with "panel_name" panel
- * if no such tab - return false, otherwise true.
- * TODO* In some cases a pointer to a panel of
- * a specific class may be needed so this method
- * would need to use templates.
- */
-LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& params)
-{
- LLPanel* new_panel = NULL;
-
- // Look up the tab in the list of detached tabs.
- child_vector_const_iter_t child_it;
- for ( child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- // Look up the tab in the list of attached tabs.
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- return new_panel;
-}
-
-bool LLSideTray::hidePanel(const std::string& panel_name)
-{
- bool panelHidden = false;
-
- LLPanel* panelp = getPanel(panel_name);
-
- if (panelp)
- {
- LLView* parentp = panelp->getParent();
-
- // Collapse the side bar if the panel or the panel's parent is an attached tab
- if (isTabAttached(panel_name) || (parentp && isTabAttached(parentp->getName())))
- {
- collapseSideBar();
- panelHidden = true;
- }
- else
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", panel_name);
-
- if (!panelHidden)
- {
- // Look up the panel in the list of detached tabs.
- for (child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *detached_panel = dynamic_cast(*child_it);
-
- if (detached_panel)
- {
- // Hide this detached panel if it is a parent of our panel
- if (findChildPanel(detached_panel, panel_name, true) != NULL)
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", detached_panel->getName());
- break;
- }
- }
- }
- }
- }
- }
-
- return panelHidden;
-}
-
-void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params)
-{
- if(!sub_panel)
- return;
-
- // If a panel is visible and attached to Side Tray (has LLSideTray among its ancestors)
- // it should be toggled off by collapsing Side Tray.
- if (sub_panel->isInVisibleChain() && sub_panel->hasAncestor(this))
- {
- LLSideTray::getInstance()->collapseSideBar();
- }
- else
- {
- LLSideTray::getInstance()->showPanel(panel_name, params);
- }
-}
-
-LLPanel* LLSideTray::getPanel(const std::string& panel_name)
-{
- // Look up the panel in the list of detached tabs.
- for ( child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
-
- // Look up the panel in the list of attached tabs.
- for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
- return NULL;
-}
-
-LLPanel* LLSideTray::getActivePanel()
-{
- if (mActiveTab && !mCollapsed)
- {
- return mActiveTab->getPanel();
- }
- return NULL;
-}
-
-bool LLSideTray::isPanelActive(const std::string& panel_name)
-{
- LLPanel *panel = getActivePanel();
- if (!panel) return false;
- return (panel->getName() == panel_name);
-}
-
-void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
-{
- // Lookup tab by name.
- LLSideTrayTab* tab = getTab(tab_name);
- if (!tab)
- { // not a docked tab, look through detached tabs
- for(child_vector_iter_t tab_it = mDetachedTabs.begin(), tab_end_it = mDetachedTabs.end();
- tab_it != tab_end_it;
- ++tab_it)
- {
- if ((*tab_it)->getName() == tab_name)
- {
- tab = *tab_it;
- break;
- }
- }
-
- }
-
- llassert(tab != NULL);
-
- // Toggle its dock state.
- if (tab && tab->isDocked() != dock)
- {
- tab->toggleTabDocked(toggle_floater);
- }
-}
-
-
-void LLSideTray::updateSidetrayVisibility()
-{
- // set visibility of parent container based on collapsed state
- LLView* parent = getParent();
- if (parent)
- {
- bool old_visibility = parent->getVisible();
- bool new_visibility = !mCollapsed && !gAgentCamera.cameraMouselook();
-
- if (old_visibility != new_visibility)
- {
- parent->setVisible(new_visibility);
-
- // Signal change of visible width.
- //llinfos << "Visible: " << new_visibility << llendl;
- mVisibleWidthChangeSignal(this, new_visibility);
- }
- }
-}
-
-S32 LLSideTray::getVisibleWidth()
-{
- return (isInVisibleChain() && !mCollapsed) ? getRect().getWidth() : 0;
-}
-
-void LLSideTray::setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb)
-{
- mVisibleWidthChangeSignal.connect(cb);
-}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
deleted file mode 100644
index 17158329dc..0000000000
--- a/indra/newview/llsidetray.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * @file LLSideTray.h
- * @brief SideBar header file
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#ifndef LL_LLSIDETRAY_H_
-#define LL_LLSIDETRAY_H_
-
-#include "llpanel.h"
-#include "string"
-
-class LLAccordionCtrl;
-class LLSideTrayTab;
-
-// Define an interface for side tab button badge values
-class LLSideTrayTabBadgeDriver
-{
-public:
- virtual std::string getBadgeString() const = 0;
-};
-
-// Deal with LLSideTrayTab being opaque. Generic do-nothing cast...
-template
-T tab_cast(LLSideTrayTab* tab) { return tab; }
-// specialized for implementation in presence of LLSideTrayTab definition
-template <>
-LLPanel* tab_cast(LLSideTrayTab* tab);
-
-// added inheritance from LLDestroyClass to enable Side Tray perform necessary actions
-// while disconnecting viewer in LLAppViewer::disconnectViewer().
-// LLDestroyClassList::instance().fireCallbacks() calls destroyClass method. See EXT-245.
-class LLSideTray : public LLPanel, private LLDestroyClass
-{
- friend class LLUICtrlFactory;
- friend class LLDestroyClass;
- friend class LLSideTrayTab;
- friend class LLSideTrayButton;
-public:
-
- LOG_CLASS(LLSideTray);
-
- struct Params
- : public LLInitParam::Block
- {
- // initial state
- Optional collapsed;
- Optional tab_btn_image_normal,
- tab_btn_image_selected;
-
- Optional default_button_width,
- default_button_height,
- default_button_margin;
-
- Params();
- };
-
- static LLSideTray* getInstance ();
- static bool instanceCreated ();
-protected:
- LLSideTray(const Params& params);
- typedef std::vector child_vector_t;
- typedef child_vector_t::iterator child_vector_iter_t;
- typedef child_vector_t::const_iterator child_vector_const_iter_t;
- typedef child_vector_t::reverse_iterator child_vector_reverse_iter_t;
- typedef child_vector_t::const_reverse_iterator child_vector_const_reverse_iter_t;
- typedef std::vector tab_order_vector_t;
- typedef tab_order_vector_t::const_iterator tab_order_vector_const_iter_t;
-
-public:
-
- // interface functions
-
- /**
- * Select tab with specific name and set it active
- *
- * @param name Tab to switch to.
- * @param keep_prev_visible Whether to keep the previously selected tab visible.
- */
- bool selectTabByName (const std::string& name, bool keep_prev_visible = false);
-
- /**
- * Select tab with specific index and set it active
- */
- bool selectTabByIndex(size_t index);
-
- /**
- * Activate tab with "panel_name" panel
- * if no such tab - return NULL, otherwise a pointer to the panel
- * Pass params as array, or they may be overwritten(example - params["name"]="nearby")
- */
- LLPanel* showPanel (const std::string& panel_name, const LLSD& params = LLSD());
-
- bool hidePanel (const std::string& panel_name);
-
- /**
- * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel.
- * If "sub_panel" is not visible Side Tray is opened to display it,
- * otherwise Side Tray is collapsed.
- * params are passed to "panel_name" panel onOpen().
- */
- void togglePanel (LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params = LLSD());
-
- /*
- * get the panel (don't show it or do anything else with it)
- */
- LLPanel* getPanel (const std::string& panel_name);
- LLPanel* getActivePanel ();
- bool isPanelActive (const std::string& panel_name);
-
- void setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
-
- /*
- * get the panel of given type T (don't show it or do anything else with it)
- */
- template
- T* getPanel(const std::string& panel_name)
- {
- T* panel = dynamic_cast(getPanel(panel_name));
- if (!panel)
- {
- llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
- return NULL;
- }
- return panel;
- }
-
- /*
- * collapse SideBar, hiding visible tab and moving tab buttons
- * to the right corner of the screen
- */
- void collapseSideBar ();
-
- /*
- * expand SideBar
- *
- * @param open_active Whether to call onOpen() for the active tab.
- */
- void expandSideBar(bool open_active = true);
-
-
- /**
- *hightlight if focused. manly copypaste from highlightFocusedFloater
- */
- void highlightFocused();
-
- void setVisible(BOOL visible)
- {
- if (getParent()) getParent()->setVisible(visible);
- }
-
- LLPanel* getButtonsPanel() { return mButtonsPanel; }
-
- bool getCollapsed() { return mCollapsed; }
-
- void setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver);
-
-public:
- virtual ~LLSideTray(){};
-
- virtual BOOL postBuild();
-
- BOOL handleMouseDown (S32 x, S32 y, MASK mask);
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
-
- /**
- * @return side tray width if it's visible and expanded, 0 otherwise.
- *
- * Not that width of the tab buttons is not included.
- *
- * @see setVisibleWidthChangeCallback()
- */
- S32 getVisibleWidth();
-
- void setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb);
-
- void updateSidetrayVisibility();
-
- void handleLoginComplete();
-
- bool isTabAttached (const std::string& name);
-
-protected:
- bool addChild (LLView* view, S32 tab_group);
- bool removeTab (LLSideTrayTab* tab); // Used to detach tabs temporarily
- bool addTab (LLSideTrayTab* tab); // Used to re-attach tabs
- bool hasTabs ();
-
- const LLSideTrayTab* getActiveTab() const { return mActiveTab; }
- LLSideTrayTab* getTab(const std::string& name);
-
- void createButtons ();
-
- void arrange ();
- void detachTabs ();
- void reflectCollapseChange();
- void processTriState ();
-
- void toggleTabButton (LLSideTrayTab* tab);
-
- LLPanel* openChildPanel (LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params);
-
- void onTabButtonClick(std::string name);
- void onToggleCollapse();
-
-private:
- // Implementation of LLDestroyClass
- static void destroyClass()
- {
- // Disable SideTray to avoid crashes. EXT-245
- if (LLSideTray::instanceCreated())
- LLSideTray::getInstance()->setEnabled(FALSE);
- }
-
-private:
- // Since we provide no public way to query mTabs and mDetachedTabs, give
- // LLSideTrayListener friend access.
- friend class LLSideTrayListener;
- LLPanel* mButtonsPanel;
- typedef std::map button_map_t;
- button_map_t mTabButtons;
- typedef std::map badge_map_t;
- badge_map_t mTabButtonBadgeDrivers;
- child_vector_t mTabs;
- child_vector_t mDetachedTabs;
- tab_order_vector_t mOriginalTabOrder;
- LLSideTrayTab* mActiveTab;
-
- commit_signal_t mVisibleWidthChangeSignal;
-
- LLButton* mCollapseButton;
- bool mCollapsed;
-
- static LLSideTray* sInstance;
-};
-
-#endif
-
diff --git a/indra/newview/llsidetraylistener.cpp b/indra/newview/llsidetraylistener.cpp
deleted file mode 100644
index cd6fa28948..0000000000
--- a/indra/newview/llsidetraylistener.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @file llsidetraylistener.cpp
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief Implementation for llsidetraylistener.
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-// Precompiled header
-#include "llviewerprecompiledheaders.h"
-// associated header
-#include "llsidetraylistener.h"
-// STL headers
-// std headers
-// external library headers
-// other Linden headers
-#include "llsidetray.h"
-#include "llsdutil.h"
-
-LLSideTrayListener::LLSideTrayListener(const Getter& getter):
- LLEventAPI("LLSideTray",
- "Operations on side tray (e.g. query state, query tabs)"),
- mGetter(getter)
-{
- add("getCollapsed", "Send on [\"reply\"] an [\"open\"] Boolean",
- &LLSideTrayListener::getCollapsed, LLSDMap("reply", LLSD()));
- add("getTabs",
- "Send on [\"reply\"] a map of tab names and info about them",
- &LLSideTrayListener::getTabs, LLSDMap("reply", LLSD()));
- add("getPanels",
- "Send on [\"reply\"] data about panels available with SideTray.ShowPanel",
- &LLSideTrayListener::getPanels, LLSDMap("reply", LLSD()));
-}
-
-void LLSideTrayListener::getCollapsed(const LLSD& event) const
-{
- sendReply(LLSDMap("open", ! mGetter()->getCollapsed()), event);
-}
-
-void LLSideTrayListener::getTabs(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- LLSD::Integer ord(0);
- for (LLSideTray::child_list_const_iter_t chi(tray->beginChild()), chend(tray->endChild());
- chi != chend; ++chi, ++ord)
- {
- LLView* child = *chi;
- // How much info is important? Toss in as much as seems reasonable for
- // each tab. But to me, at least for the moment, the most important
- // item is the tab name.
- LLSD info;
- // I like the idea of returning a map keyed by tab name. But as
- // compared to an array of maps, that loses sequence information.
- // Address that by indicating the original order in each map entry.
- info["ord"] = ord;
- info["visible"] = bool(child->getVisible());
- info["enabled"] = bool(child->getEnabled());
- info["available"] = child->isAvailable();
- reply[child->getName()] = info;
- }
-
- sendReply(reply, event);
-}
-
-static LLSD getTabInfo(LLPanel* tab)
-{
- LLSD panels;
- for (LLPanel::tree_iterator_t ti(tab->beginTreeDFS()), tend(tab->endTreeDFS());
- ti != tend; ++ti)
- {
- // *ti is actually an LLView*, which had better not be NULL
- LLView* view(*ti);
- if (! view)
- {
- LL_ERRS("LLSideTrayListener") << "LLSideTrayTab '" << tab->getName()
- << "' has a NULL child LLView*" << LL_ENDL;
- }
-
- // The logic we use to decide what "panel" names to return is heavily
- // based on LLSideTray::showPanel(): the function that actually
- // implements the "SideTray.ShowPanel" operation. showPanel(), in
- // turn, depends on LLSideTray::openChildPanel(): when
- // openChildPanel() returns non-NULL, showPanel() stops searching
- // attached and detached LLSideTrayTab tabs.
-
- // For each LLSideTrayTab, openChildPanel() first calls
- // findChildView(panel_name, true). In other words, panel_name need
- // not be a direct LLSideTrayTab child, it's sought recursively.
- // That's why we use (begin|end)TreeDFS() in this loop.
-
- // But this tree_iterator_t loop will actually traverse every widget
- // in every panel. Returning all those names will not help our caller:
- // passing most such names to openChildPanel() would not do what we
- // want. Even though the code suggests that passing ANY valid
- // side-panel widget name to openChildPanel() will open the tab
- // containing that widget, results could get confusing since followup
- // (onOpen()) logic wouldn't be invoked, and showPanel() wouldn't stop
- // searching because openChildPanel() would return NULL.
-
- // We must filter these LLView items, using logic that (sigh!) mirrors
- // openChildPanel()'s own.
-
- // openChildPanel() returns a non-NULL LLPanel* when either:
- // - the LLView is a direct child of an LLSideTrayPanelContainer
- // - the LLView is itself an LLPanel.
- // But as LLSideTrayPanelContainer can directly contain LLView items
- // that are NOT themselves LLPanels (e.g. "sidebar_me" contains an
- // LLButton called "Jump Right Arrow"), we'd better focus only on
- // LLSideTrayPanelContainer children that are themselves LLPanel
- // items. Which means that the second test completely subsumes the
- // first.
- LLPanel* panel(dynamic_cast(view));
- if (panel)
- {
- // Maybe it's overkill to construct an LLSD::Map for each panel, but
- // the possibility remains that we might want to deliver more info
- // about each panel than just its name.
- panels.append(LLSDMap("name", panel->getName()));
- }
- }
-
- return LLSDMap("panels", panels);
-}
-
-void LLSideTrayListener::getPanels(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- // Iterate through the attached tabs.
- LLSD::Integer ord(0);
- for (LLSideTray::child_vector_t::const_iterator
- ati(tray->mTabs.begin()), atend(tray->mTabs.end());
- ati != atend; ++ati)
- {
- // We don't have access to LLSideTrayTab: the class definition is
- // hidden in llsidetray.cpp. But as LLSideTrayTab isa LLPanel, use the
- // LLPanel API. Unfortunately, without the LLSideTrayTab definition,
- // the compiler doesn't even know this LLSideTrayTab* is an LLPanel*.
- // Persuade it.
- LLPanel* tab(tab_cast(*ati));
- reply[tab->getName()] = getTabInfo(tab).with("attached", true).with("ord", ord);
- }
-
- // Now iterate over the detached tabs. These can also be opened via
- // SideTray.ShowPanel.
- ord = 0;
- for (LLSideTray::child_vector_t::const_iterator
- dti(tray->mDetachedTabs.begin()), dtend(tray->mDetachedTabs.end());
- dti != dtend; ++dti)
- {
- LLPanel* tab(tab_cast(*dti));
- reply[tab->getName()] = getTabInfo(tab).with("attached", false).with("ord", ord);
- }
-
- sendReply(reply, event);
-}
diff --git a/indra/newview/llsidetraylistener.h b/indra/newview/llsidetraylistener.h
deleted file mode 100644
index 51e2137762..0000000000
--- a/indra/newview/llsidetraylistener.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file llsidetraylistener.h
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#if ! defined(LL_LLSIDETRAYLISTENER_H)
-#define LL_LLSIDETRAYLISTENER_H
-
-#include "lleventapi.h"
-#include
-
-class LLSideTray;
-class LLSD;
-
-class LLSideTrayListener: public LLEventAPI
-{
- typedef boost::function Getter;
-
-public:
- LLSideTrayListener(const Getter& getter);
-
-private:
- void getCollapsed(const LLSD& event) const;
- void getTabs(const LLSD& event) const;
- void getPanels(const LLSD& event) const;
-
- Getter mGetter;
-};
-
-#endif /* ! defined(LL_LLSIDETRAYLISTENER_H) */
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 749acea6c1..4511a4806a 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -131,7 +131,6 @@
#include "llsecondlifeurls.h"
#include "llselectmgr.h"
#include "llsky.h"
-#include "llsidetray.h"
#include "llstatview.h"
#include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance
#include "llsurface.h"
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index 477718d118..f6d7ceeec3 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -36,7 +36,6 @@
#include "llfloaterworldmap.h"
#include "llpanellogin.h"
#include "llregionhandle.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstartup.h" // gStartupState
#include "llweb.h"
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 0b3b8e23a5..174a4d6409 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -95,7 +95,6 @@
#include "llfloatersellland.h"
#include "llfloatersettingsdebug.h"
#include "llfloatersidepanelcontainer.h"
-#include "llfloatersidetraytab.h"
#include "llfloatersnapshot.h"
#include "llfloatersounddevices.h"
#include "llfloatertelehub.h"
@@ -276,7 +275,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("script_limits", "floater_script_limits.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
- LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build);
LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build);
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 50fb5a00e4..f8ef81b9f4 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -45,7 +45,6 @@
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llgesturemgr.h"
-#include "llsidetray.h"
#include "llinventorybridge.h"
#include "llinventorypanel.h"
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 5e781e0e4c..fbfde711a9 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -83,7 +83,6 @@
#include "llrootview.h"
#include "llsceneview.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltextureview.h"
#include "lltoolcomp.h"
@@ -3348,15 +3347,6 @@ bool enable_sitdown_self()
return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying();
}
-// Used from the login screen to aid in UI work on side tray
-void handle_show_side_tray()
-{
- LLSideTray* side_tray = LLSideTray::getInstance();
- LLView* root = gViewerWindow->getRootView();
- // automatically removes and re-adds if there already
- root->addChild(side_tray);
-}
-
// Toggle one of "People" panel tabs in side tray.
class LLTogglePanelPeopleTab : public view_listener_t
{
@@ -3367,21 +3357,11 @@ class LLTogglePanelPeopleTab : public view_listener_t
LLSD param;
param["people_panel_tab_name"] = panel_name;
- static LLPanel* friends_panel = NULL;
- static LLPanel* groups_panel = NULL;
- static LLPanel* nearby_panel = NULL;
-
- if (panel_name == "friends_panel")
- {
- return togglePeoplePanel(friends_panel, panel_name, param);
- }
- else if (panel_name == "groups_panel")
- {
- return togglePeoplePanel(groups_panel, panel_name, param);
- }
- else if (panel_name == "nearby_panel")
+ if ( panel_name == "friends_panel"
+ || panel_name == "groups_panel"
+ || panel_name == "nearby_panel")
{
- return togglePeoplePanel(nearby_panel, panel_name, param);
+ return togglePeoplePanel(panel_name, param);
}
else
{
@@ -3389,16 +3369,20 @@ class LLTogglePanelPeopleTab : public view_listener_t
}
}
- static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param)
+ static bool togglePeoplePanel(const std::string& panel_name, const LLSD& param)
{
+ LLPanel *panel = LLFloaterSidePanelContainer::getPanel("people", panel_name);
if(!panel)
+ return false;
+
+ if (panel->isInVisibleChain())
{
- panel = LLSideTray::getInstance()->getPanel(panel_name);
- if(!panel)
- return false;
+ LLFloaterReg::hideInstance("people");
+ }
+ else
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param) ;
}
-
- LLSideTray::getInstance()->togglePanel(panel, "panel_people", param);
return true;
}
@@ -8067,7 +8051,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
view_listener_t::addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
view_listener_t::addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
- commit.add("Advanced.ShowSideTray", boost::bind(&handle_show_side_tray));
// Advanced > XUI
commit.add("Advanced.ReloadColorSettings", boost::bind(&LLUIColorTable::loadFromSettings, LLUIColorTable::getInstance()));
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 5665a68add..1c07d36e7e 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -74,7 +74,6 @@
#include "llrecentpeople.h"
#include "llscriptfloater.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstartup.h"
#include "llsky.h"
#include "llslurl.h"
@@ -6800,7 +6799,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
LLPanelLandCovenant::updateEstateOwnerName(owner_name);
LLFloaterBuyLand::updateEstateOwnerName(owner_name);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel("places", "panel_place_profile");
if (panel)
{
panel->updateEstateName(estate_name);
@@ -6934,7 +6933,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
LLPanelLandCovenant::updateCovenantText(covenant_text);
LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel("places", "panel_place_profile");
if (panel)
{
panel->updateCovenantText(covenant_text);
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index b308e952ad..0a9fae68a6 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -51,7 +51,6 @@
#include "llpreviewtexture.h"
#include "llscrollbar.h"
#include "llscrollcontainer.h"
-#include "llsidetray.h"
#include "lltooldraganddrop.h"
#include "lltooltip.h"
#include "lltrans.h"
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 6c9ee17a76..149f9893d7 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -133,7 +133,6 @@
#include "llpreviewtexture.h"
#include "llprogressview.h"
#include "llresmgr.h"
-#include "llsidetray.h"
#include "llselectmgr.h"
#include "llrootview.h"
#include "llrendersphere.h"
@@ -1773,7 +1772,6 @@ void LLViewerWindow::initBase()
// placeholder widget that controls where "world" is rendered
mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle();
- mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle();
mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle();
mPopupView = main_view->getChild("popup_holder");
mHintHolder = main_view->getChild("hint_holder")->getHandle();
@@ -1934,22 +1932,6 @@ void LLViewerWindow::initWorldUI()
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
- // put sidetray in container
- LLPanel* side_tray_container = getRootView()->getChild("side_tray_container");
- LLSideTray* sidetrayp = LLSideTray::getInstance();
- sidetrayp->setShape(side_tray_container->getLocalRect());
- // don't follow right edge to avoid spurious resizes, since we are using a fixed width layout
- sidetrayp->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_BOTTOM);
- side_tray_container->addChild(sidetrayp);
- side_tray_container->setVisible(FALSE);
-
- // put sidetray buttons in their own panel
- LLPanel* buttons_panel = sidetrayp->getButtonsPanel();
- LLPanel* buttons_panel_container = getRootView()->getChild("side_bar_tabs");
- buttons_panel->setShape(buttons_panel_container->getLocalRect());
- buttons_panel->setFollowsAll();
- buttons_panel_container->addChild(buttons_panel);
-
// Load and make the toolbars visible
// Note: we need to load the toolbars only *after* the user is logged in and IW
if (gToolBarView)
@@ -3310,9 +3292,6 @@ void LLViewerWindow::updateKeyboardFocus()
// make sure floater visible order is in sync with tab order
gFloaterView->syncFloaterTabOrder();
}
-
- if(LLSideTray::instanceCreated())//just getInstance will create sidetray. we don't want this
- LLSideTray::getInstance()->highlightFocused();
}
static LLFastTimer::DeclareTimer FTM_UPDATE_WORLD_VIEW("Update World View");
@@ -3336,12 +3315,6 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
new_world_rect.mTop = llround((F32)new_world_rect.mTop * mDisplayScale.mV[VY]);
}
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- // use right edge of window, ignoring sidebar
- new_world_rect.mRight = mWindowRectRaw.mRight;
- }
-
if (mWorldViewRectRaw != new_world_rect)
{
mWorldViewRectRaw = new_world_rect;
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 47e0fdeab1..872eb12753 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -282,7 +282,6 @@ public:
void updateKeyboardFocus();
void updateWorldViewRect(bool use_full_window=false);
- LLView* getNonSideTrayView() { return mNonSideTrayView.get(); }
LLView* getFloaterViewHolder() { return mFloaterViewHolder.get(); }
LLView* getToolBarHolder() { return mToolBarHolder.get(); }
LLView* getHintHolder() { return mHintHolder.get(); }
@@ -445,7 +444,6 @@ protected:
std::string mInitAlert; // Window / GL initialization requires an alert
LLHandle mWorldViewPlaceholder; // widget that spans the portion of screen dedicated to rendering the 3d world
- LLHandle mNonSideTrayView; // parent of world view + bottom bar, etc...everything but the side tray
LLHandle mFloaterViewHolder; // container for floater_view
LLHandle mToolBarHolder; // container for toolbars
LLHandle mHintHolder; // container for hints
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index 276e8f462d..d8aa0b7d5c 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -37,7 +37,6 @@
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltexglobalcolor.h"
#include "lltrans.h"
diff --git a/indra/newview/llworldview.cpp b/indra/newview/llworldview.cpp
deleted file mode 100644
index f5dc2a5290..0000000000
--- a/indra/newview/llworldview.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file llworldview.cpp
- * @brief LLWorldView class implementation
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, 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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llworldview.h"
-
-#include "llviewercontrol.h"
-#include "llsidetray.h"
-/////////////////////////////////////////////////////
-// LLFloaterView
-
-static LLDefaultChildRegistry::Register r("world_view");
-
-LLWorldView::LLWorldView(const Params& p)
-: LLUICtrl (p)
-{
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLWorldView::toggleSidebarCameraMovement, this, _2));
-}
-
-void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- //if (FALSE == gSavedSettings.getBOOL("SidebarCameraMovement") )
- //{
- // LLView* main_view = LLUI::getRootView()->findChild("main_view");
- // if(main_view)
- // {
- // width = main_view->getRect().getWidth();
- // }
- //}
-
- LLUICtrl::reshape(width, height, called_from_parent);
-}
-void LLWorldView::toggleSidebarCameraMovement(const LLSD::Boolean& new_visibility)
-{
- reshape(getParent()->getRect().getWidth(),getRect().getHeight());
-}
-
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 6ece01b2ba..d8f593715f 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -90,14 +90,6 @@
top="0"
visible="false"
width="1024"/>
-
-
-
-
-
Date: Thu, 29 Sep 2011 16:25:47 -0500
Subject: SH-2276 enable verbose GL debugging to try and get some more info in
crash reports
---
indra/newview/app_settings/settings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 890eb0f0ce..11ac2b695e 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7763,7 +7763,7 @@
Type
Boolean
Value
- 0
+ 1
RenderDebugNormalScale
--
cgit v1.3
From b07e7c7198fbc78ca852b3ba48d516ec2901da21 Mon Sep 17 00:00:00 2001
From: Merov Linden
Date: Thu, 29 Sep 2011 15:01:15 -0700
Subject: EXP-1211, EXP-1257 : Save and load the button type along with the
toolbars, add a force default load option, enforce consistency between menus
and toolbars
---
indra/llui/lltoolbar.cpp | 27 +++++++++----
indra/llui/lltoolbar.h | 8 +++-
indra/llui/lltoolbarview.cpp | 45 ++++++++++++++++++++--
indra/llui/lltoolbarview.h | 6 ++-
indra/newview/app_settings/toolbars.xml | 6 ++-
.../newview/skins/default/xui/en/menu_toolbars.xml | 6 +--
6 files changed, 79 insertions(+), 19 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 45567d5859..75c7d91f8a 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -213,6 +213,14 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)
return add_command;
}
+void LLToolBar::clearCommandsList()
+{
+ // Clears the commands list
+ mButtonCommands.clear();
+ // This will clear the buttons
+ createButtons();
+}
+
bool LLToolBar::hasCommand(const LLCommandId& commandId) const
{
bool has_command = false;
@@ -278,7 +286,7 @@ BOOL LLToolBar::isSettingChecked(const LLSD& userdata)
const std::string setting_name = userdata.asString();
- if (setting_name == "icons_and_labels")
+ if (setting_name == "icons_with_text")
{
retval = (mButtonType == BTNTYPE_ICONS_WITH_TEXT);
}
@@ -296,18 +304,23 @@ void LLToolBar::onSettingEnable(const LLSD& userdata)
const std::string setting_name = userdata.asString();
- const ButtonType current_button_type = mButtonType;
-
- if (setting_name == "icons_and_labels")
+ if (setting_name == "icons_with_text")
{
- mButtonType = BTNTYPE_ICONS_WITH_TEXT;
+ setButtonType(BTNTYPE_ICONS_WITH_TEXT);
}
else if (setting_name == "icons_only")
{
- mButtonType = BTNTYPE_ICONS_ONLY;
+ setButtonType(BTNTYPE_ICONS_ONLY);
}
+}
- if(current_button_type != mButtonType)
+void LLToolBar::setButtonType(LLToolBarEnums::ButtonType button_type)
+{
+ bool regenerate_buttons = (mButtonType != button_type);
+
+ mButtonType = button_type;
+
+ if (regenerate_buttons)
{
createButtons();
}
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 8e484c7e13..03b1756988 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -123,7 +123,6 @@ public:
bool addCommand(const LLCommandId& commandId);
bool hasCommand(const LLCommandId& commandId) const;
bool enableCommand(const LLCommandId& commandId, bool enabled);
- command_id_list_t& getCommandsList() { return mButtonCommands; }
protected:
friend class LLUICtrlFactory;
@@ -132,6 +131,13 @@ protected:
void initFromParams(const Params&);
+public:
+ // Methods used in loading and saving toolbar settings
+ void setButtonType(LLToolBarEnums::ButtonType button_type);
+ LLToolBarEnums::ButtonType getButtonType() { return mButtonType; }
+ command_id_list_t& getCommandsList() { return mButtonCommands; }
+ void clearCommandsList();
+
private:
void createContextMenu();
void updateLayoutAsNeeded();
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index f60598edcb..1c6cf3230b 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -41,7 +41,8 @@ LLToolBarView* gToolBarView = NULL;
static LLDefaultChildRegistry::Register r("toolbar_view");
LLToolBarView::Toolbar::Toolbar()
-: commands("command")
+: button_display_mode("button_display_mode"),
+ commands("command")
{}
LLToolBarView::ToolbarSet::ToolbarSet()
@@ -112,13 +113,17 @@ bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar)
return true;
}
-bool LLToolBarView::loadToolbars()
+bool LLToolBarView::loadToolbars(bool force_default)
{
LLToolBarView::ToolbarSet toolbar_set;
- // Load the default toolbars.xml file
+ // Load the toolbars.xml file
std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
- if (!gDirUtilp->fileExists(toolbar_file))
+ if (force_default)
+ {
+ toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+ }
+ else if (!gDirUtilp->fileExists(toolbar_file))
{
llwarns << "User toolbars def not found -> use default" << llendl;
toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
@@ -145,9 +150,28 @@ bool LLToolBarView::loadToolbars()
return false;
}
+ // Clear the toolbars now before adding the loaded commands and settings
+ if (mToolbarLeft)
+ {
+ mToolbarLeft->clearCommandsList();
+ }
+ if (mToolbarRight)
+ {
+ mToolbarRight->clearCommandsList();
+ }
+ if (mToolbarBottom)
+ {
+ mToolbarBottom->clearCommandsList();
+ }
+
// Add commands to each toolbar
if (toolbar_set.left_toolbar.isProvided() && mToolbarLeft)
{
+ if (toolbar_set.left_toolbar.button_display_mode.isProvided())
+ {
+ U32 button_type = toolbar_set.left_toolbar.button_display_mode;
+ mToolbarLeft->setButtonType((LLToolBarEnums::ButtonType)(button_type));
+ }
BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.left_toolbar.commands)
{
addCommand(LLCommandId(command),mToolbarLeft);
@@ -155,6 +179,11 @@ bool LLToolBarView::loadToolbars()
}
if (toolbar_set.right_toolbar.isProvided() && mToolbarRight)
{
+ if (toolbar_set.right_toolbar.button_display_mode.isProvided())
+ {
+ U32 button_type = toolbar_set.right_toolbar.button_display_mode;
+ mToolbarRight->setButtonType((LLToolBarEnums::ButtonType)(button_type));
+ }
BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.right_toolbar.commands)
{
addCommand(LLCommandId(command),mToolbarRight);
@@ -162,6 +191,11 @@ bool LLToolBarView::loadToolbars()
}
if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom)
{
+ if (toolbar_set.bottom_toolbar.button_display_mode.isProvided())
+ {
+ U32 button_type = toolbar_set.bottom_toolbar.button_display_mode;
+ mToolbarBottom->setButtonType((LLToolBarEnums::ButtonType)(button_type));
+ }
BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.bottom_toolbar.commands)
{
addCommand(LLCommandId(command),mToolbarBottom);
@@ -176,14 +210,17 @@ void LLToolBarView::saveToolbars() const
LLToolBarView::ToolbarSet toolbar_set;
if (mToolbarLeft)
{
+ toolbar_set.left_toolbar.button_display_mode = (int)(mToolbarLeft->getButtonType());
addToToolset(mToolbarLeft->getCommandsList(),toolbar_set.left_toolbar);
}
if (mToolbarRight)
{
+ toolbar_set.right_toolbar.button_display_mode = (int)(mToolbarRight->getButtonType());
addToToolset(mToolbarRight->getCommandsList(),toolbar_set.right_toolbar);
}
if (mToolbarBottom)
{
+ toolbar_set.bottom_toolbar.button_display_mode = (int)(mToolbarBottom->getButtonType());
addToToolset(mToolbarBottom->getCommandsList(),toolbar_set.bottom_toolbar);
}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index b19841997b..efe6920db8 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -50,7 +50,8 @@ public:
// the user folder for the user specific (saved) settings
struct Toolbar : public LLInitParam::Block
{
- Multiple commands;
+ Mandatory button_display_mode;
+ Multiple commands;
Toolbar();
};
struct ToolbarSet : public LLInitParam::Block
@@ -70,7 +71,8 @@ public:
// Checks if the commandId is being used somewhere in one of the toolbars
bool hasCommand(const LLCommandId& commandId) const;
// Loads the toolbars from the existing user or default settings
- bool loadToolbars(); // return false if load fails
+ bool loadToolbars(bool force_default = false); // return false if load fails
+ bool loadDefaultToolbars() { return loadToolbars(true); }
protected:
friend class LLUICtrlFactory;
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
index 55327ea919..19dec78c63 100644
--- a/indra/newview/app_settings/toolbars.xml
+++ b/indra/newview/app_settings/toolbars.xml
@@ -1,6 +1,7 @@
-
+
@@ -10,7 +11,8 @@
-
+
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
index de13fec670..59912b5503 100644
--- a/indra/newview/skins/default/xui/en/menu_toolbars.xml
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -12,11 +12,11 @@
+ name="icons_with_text">
+ parameter="icons_with_text" />
+ parameter="icons_with_text" />
Date: Thu, 29 Sep 2011 15:25:24 -0700
Subject: * Updated toybox so it will always display buttons in alphabetical
order based on the localized button labels.
---
indra/newview/llfloatertoybox.cpp | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
index c3fa322f85..d7f114043d 100644
--- a/indra/newview/llfloatertoybox.cpp
+++ b/indra/newview/llfloatertoybox.cpp
@@ -33,6 +33,7 @@
#include "llpanel.h"
#include "lltoolbar.h"
#include "lltoolbarview.h"
+#include "lltrans.h"
LLFloaterToybox::LLFloaterToybox(const LLSD& key)
@@ -47,6 +48,14 @@ LLFloaterToybox::~LLFloaterToybox()
{
}
+bool compare_localized_command_labels(LLCommand * cmd1, LLCommand * cmd2)
+{
+ std::string lab1 = LLTrans::getString(cmd1->labelRef());
+ std::string lab2 = LLTrans::getString(cmd2->labelRef());
+
+ return (lab1 < lab2);
+}
+
BOOL LLFloaterToybox::postBuild()
{
center();
@@ -54,11 +63,13 @@ BOOL LLFloaterToybox::postBuild()
mBtnRestoreDefaults = getChild("btn_restore_defaults");
mToolBar = getChild("toybox_toolbar");
+ LLCommandManager& cmdMgr = LLCommandManager::instance();
+
//
- // Create Buttons
+ // Sort commands by localized labels so they will appear alphabetized in all languages
//
- LLCommandManager& cmdMgr = LLCommandManager::instance();
+ std::list alphabetized_commands;
for (U32 i = 0; i < cmdMgr.commandCount(); i++)
{
@@ -66,10 +77,21 @@ BOOL LLFloaterToybox::postBuild()
if (command->availableInToybox())
{
- mToolBar->addCommand(command->id());
+ alphabetized_commands.push_back(command);
}
}
+ alphabetized_commands.sort(compare_localized_command_labels);
+
+ //
+ // Create Buttons
+ //
+
+ for (std::list::iterator it = alphabetized_commands.begin(); it != alphabetized_commands.end(); ++it)
+ {
+ mToolBar->addCommand((*it)->id());
+ }
+
return TRUE;
}
--
cgit v1.3
From 66e21e0330b2f66b986a1ed76873af9752dcf2e1 Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Thu, 29 Sep 2011 17:03:36 -0700
Subject: * Added latest set of FUI buttons and labels according to the wiki
* Hooked up commands to their respective floaters
---
indra/newview/app_settings/commands.xml | 118 ++++++++++++----------
indra/newview/skins/default/textures/textures.xml | 44 ++++----
indra/newview/skins/default/xui/en/strings.xml | 78 +++++++-------
3 files changed, 132 insertions(+), 108 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 5fbd9248c1..224c1b4b48 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -1,12 +1,28 @@
+
+
+
-
+
-
-
-
-
-
-
+
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index be68c2873e..57ce7fe57a 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -125,27 +125,29 @@ with the same filename but different name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index feea555fdc..158e1c711d 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -16,16 +16,16 @@
Detecting hardware...
Loading [APP_NAME]...
Clearing cache...
- Initializing Texture Cache...
+ Initializing texture cache...
Initializing VFS...
- Graphics Initialization Failed. Please Update Your Graphics Driver!
+ Graphics initialization failed. Please update your graphics driver!
Restoring...
- Changing Resolution...
+ Changing resolution...
- Fullbright (Legacy)
+ Fullbright (legacy)
Logging in. [APP_NAME] may appear frozen. Please wait.
@@ -38,8 +38,8 @@
Initializing multimedia...
Loading fonts...
Verifying cache files (can take 60-90 seconds)...
- Processing Response...
- Initializing World...
+ Processing response...
+ Initializing world...
Decoding images...
Initializing QuickTime...
QuickTime not found - unable to initialize.
@@ -56,7 +56,7 @@
Too many certificates were in the servers Certificate chain. Please contact your Grid administrator.
The certificate signature returned by the Grid server could not be verified. Please contact your Grid administrator.
- Network Error: Could not establish connection, please check your network connection.
+ Network error: Could not establish connection, please check your network connection.
Login failed.
Quit
http://join.secondlife.com/
@@ -3652,47 +3652,53 @@ Try enclosing path to the editor with double quotes.
Hiding Particles
+
+ About land
+ Appearance
Avatar
- Change the appearance of your avatar
Build
- Building, reshaping terrain
Chat
- Chat with people nearby
Compass
-
+ Destinations
Gestures
-
- How To
-
- Landmarks
-
+ How to
+ Inventory
Map
-
- Mini Map
-
+ Marketplace
+ Mini-map
Move
-
- My Land
- Information about the land you're visiting
- My Stuff
- View and use your belongings
People
-
Places
- Destination guide
+ Preferences
+ Profile
Search
- Find...
- Settings
- Preferences
- Shop
-
Snapshot
- Take a picture
Speak
- Speak with people nearby using your microphone
- Upload
-
View
- Changing your view of the world
+ Nearby voice
+
+ Information about the land you're visiting
+ Change your avatar
+ Choose a complete avatar
+ Building objects and reshaping them
+ Chat with people nearby using text
+ Compass
+ Destinations of interest
+ Gestures for your avatar
+ How to do common tasks
+ View and use your belongings
+ Map of the world
+ Go shopping
+ Show nearby people
+ Moving your avatar
+ Friends, groups, and nearby people
+ Places you've saved
+ Preferences
+ Edit or view your profile
+ Find places, events, people
+ Take a picture
+ Speak with people nearby using your microphone
+ Changing camera angle
+ People nearby with voice capability
--
cgit v1.3
From 7238714634e72dacc4b09c1c4ee98b16fb0c91fe Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 19:32:56 -0500
Subject: SH-2507 Potential fix for basic shaders causing objects to disappear
with some drivers (prune shader tree of unused shaders while we're at it)
---
indra/llrender/llrender.cpp | 4 +-
indra/newview/app_settings/settings.xml | 13 +-
.../shaders/class1/environment/terrainF.glsl | 46 ++++---
.../shaders/class1/environment/terrainV.glsl | 41 +++---
.../shaders/class1/environment/terrainWaterF.glsl | 47 ++++---
.../shaders/class1/environment/underWaterF.glsl | 73 ++++++++---
.../shaders/class1/environment/waterF.glsl | 80 +++++++-----
.../shaders/class1/environment/waterFogF.glsl | 50 ++++++--
.../shaders/class1/lighting/lightF.glsl | 12 +-
.../shaders/class1/lighting/lightFullbrightF.glsl | 17 ++-
.../class1/lighting/lightFullbrightShinyF.glsl | 26 +++-
.../lighting/lightFullbrightShinyWaterF.glsl | 27 +++-
.../class1/lighting/lightFullbrightWaterF.glsl | 14 ++-
.../shaders/class1/lighting/lightShinyF.glsl | 19 ++-
.../shaders/class1/lighting/lightShinyWaterF.glsl | 18 ++-
.../shaders/class1/lighting/lightSpecularV.glsl | 23 +---
.../shaders/class1/lighting/lightV.glsl | 19 +--
.../shaders/class1/lighting/lightWaterF.glsl | 16 ++-
.../shaders/class1/objects/fullbrightShinyV.glsl | 22 ++--
.../shaders/class1/objects/fullbrightV.glsl | 20 +--
.../shaders/class1/objects/shinyV.glsl | 33 ++---
.../shaders/class1/objects/simpleV.glsl | 24 ++--
.../class1/windlight/atmosphericsHelpersV.glsl | 6 +-
.../app_settings/shaders/class2/effects/blurF.glsl | 27 ----
.../app_settings/shaders/class2/effects/blurV.glsl | 27 ----
.../shaders/class2/effects/colorFilterF.glsl | 53 --------
.../shaders/class2/effects/drawQuadV.glsl | 39 ------
.../shaders/class2/effects/extractF.glsl | 44 -------
.../shaders/class2/effects/nightVisionF.glsl | 67 ----------
.../shaders/class2/effects/simpleF.glsl | 38 ------
.../shaders/class2/environment/terrainF.glsl | 64 ----------
.../shaders/class2/environment/terrainV.glsl | 88 -------------
.../shaders/class2/environment/terrainWaterF.glsl | 65 ----------
.../shaders/class2/environment/underWaterF.glsl | 110 ----------------
.../shaders/class2/environment/waterF.glsl | 139 ---------------------
.../shaders/class2/environment/waterFogF.glsl | 74 -----------
.../shaders/class2/lighting/lightAlphaMaskF.glsl | 54 --------
.../class2/lighting/lightAlphaMaskNonIndexedF.glsl | 57 ---------
.../shaders/class2/lighting/lightF.glsl | 46 -------
.../class2/lighting/lightFullbrightAlphaMaskF.glsl | 54 --------
.../shaders/class2/lighting/lightFullbrightF.glsl | 46 -------
.../lightFullbrightNonIndexedAlphaMaskF.glsl | 56 ---------
.../lighting/lightFullbrightNonIndexedF.glsl | 48 -------
.../class2/lighting/lightFullbrightShinyF.glsl | 55 --------
.../lighting/lightFullbrightShinyNonIndexedF.glsl | 56 ---------
.../lighting/lightFullbrightShinyWaterF.glsl | 53 --------
.../lightFullbrightShinyWaterNonIndexedF.glsl | 54 --------
.../lighting/lightFullbrightWaterAlphaMaskF.glsl | 54 --------
.../class2/lighting/lightFullbrightWaterF.glsl | 46 -------
.../lightFullbrightWaterNonIndexedAlphaMaskF.glsl | 54 --------
.../lighting/lightFullbrightWaterNonIndexedF.glsl | 46 -------
.../shaders/class2/lighting/lightNonIndexedF.glsl | 48 -------
.../shaders/class2/lighting/lightShinyF.glsl | 54 --------
.../class2/lighting/lightShinyNonIndexedF.glsl | 55 --------
.../shaders/class2/lighting/lightShinyWaterF.glsl | 51 --------
.../lighting/lightShinyWaterNonIndexedF.glsl | 52 --------
.../shaders/class2/lighting/lightSpecularV.glsl | 36 ------
.../shaders/class2/lighting/lightV.glsl | 36 ------
.../class2/lighting/lightWaterAlphaMaskF.glsl | 52 --------
.../lighting/lightWaterAlphaMaskNonIndexedF.glsl | 56 ---------
.../shaders/class2/lighting/lightWaterF.glsl | 44 -------
.../class2/lighting/lightWaterNonIndexedF.glsl | 46 -------
.../shaders/class2/objects/fullbrightShinyV.glsl | 67 ----------
.../shaders/class2/objects/fullbrightV.glsl | 58 ---------
.../shaders/class2/objects/shinyV.glsl | 65 ----------
.../shaders/class2/objects/simpleNonIndexedV.glsl | 61 ---------
.../shaders/class2/objects/simpleV.glsl | 64 ----------
indra/newview/llviewercontrol.cpp | 1 -
indra/newview/llviewershadermgr.cpp | 51 +-------
69 files changed, 424 insertions(+), 2737 deletions(-)
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/blurF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/blurV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/extractF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/environment/waterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl
delete mode 100644 indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
(limited to 'indra/newview')
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 8ba164fcc9..bbdd0a7a60 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -1,4 +1,4 @@
-/**
+ /**
* @file llrender.cpp
* @brief LLRender implementation
*
@@ -1132,6 +1132,8 @@ void LLRender::syncLightState()
shader->uniform3fv("light_attenuation", 8, attenuation[0].mV);
shader->uniform3fv("light_diffuse", 8, diffuse[0].mV);
shader->uniform4fv("light_ambient", 1, mAmbientLightColor.mV);
+ //HACK -- duplicate sunlight color for compatibility with drivers that can't deal with multiple shader objects referencing the same uniform
+ shader->uniform4fv("sunlight_color", 1, diffuse[0].mV);
}
}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 11ac2b695e..cd5218c56d 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -3148,17 +3148,6 @@
Value
1
- EnableRippleWater
-
- Comment
- Whether to use ripple water shader or not
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
EnableTextureAtlas
Comment
@@ -9296,7 +9285,7 @@
Type
Boolean
Value
- 0
+ 1
RenderVBOMappingDisable
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
index f0837dd4ca..18f6d91804 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file terrainF.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -27,22 +27,38 @@
out vec4 gl_FragColor;
#endif
-uniform sampler2D detail0;
-uniform sampler2D detail1;
-uniform sampler2D alphaRamp;
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
-VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
-VARYING vec2 vary_texcoord3;
+uniform sampler2D detail_0;
+uniform sampler2D detail_1;
+uniform sampler2D detail_2;
+uniform sampler2D detail_3;
+uniform sampler2D alpha_ramp;
-void main()
+vec3 atmosLighting(vec3 light);
+
+vec3 scaleSoftClip(vec3 color);
+
+void main()
{
- float a = texture2D(alphaRamp, vary_texcoord1.xy).a;
- vec3 color = mix(texture2D(detail1, vary_texcoord2.xy).rgb,
- texture2D(detail0, vary_texcoord0.xy).rgb,
- a);
+ /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
+
+ /// TODO Confirm tex coords and bind them appropriately in vert shader.
+ vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+ vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+ vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+ vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
- gl_FragColor.rgb = color;
- gl_FragColor.a = texture2D(alphaRamp, vary_texcoord3.xy).a;
+ float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+ float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+ float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
+ vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
+
+ /// Add WL Components
+ outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+
+ gl_FragColor = vec4(scaleSoftClip(outColor.rgb), 1.0);
}
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
index d4a62db684..f183b885d1 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file terrainV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -25,9 +25,6 @@
uniform mat3 normal_matrix;
uniform mat4 texture_matrix0;
-uniform mat4 texture_matrix1;
-uniform mat4 texture_matrix2;
-uniform mat4 texture_matrix3;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
@@ -39,14 +36,12 @@ ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec2 texcoord1;
-ATTRIBUTE vec2 texcoord2;
-ATTRIBUTE vec2 texcoord3;
VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
-VARYING vec2 vary_texcoord3;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+
+void calcAtmospherics(vec3 inPositionEye);
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
@@ -68,16 +63,26 @@ void main()
{
//transform vertex
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
-
- vec4 pos = modelview_matrix * vec4(position, 1.0);
+
+ vec4 pos = modelview_matrix * vec4(position.xyz, 1.0);
vec3 norm = normalize(normal_matrix * normal);
-
- vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), diffuse_color);
+
+ calcAtmospherics(pos.xyz);
+
+ /// Potentially better without it for water.
+ pos /= pos.w;
+
+ vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0));
vertex_color = color;
+
+ // Transform and pass tex coords
+ vary_texcoord0.xy = texgen_object(vec4(position.xyz, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
- vary_texcoord0 = texgen_object(vec4(position.xyz, 1.0),vec4(texcoord0,0,1),texture_matrix0,object_plane_s,object_plane_t).xy;
- vary_texcoord1 = (texture_matrix1*vec4(texcoord1,0,1)).xy;
- vary_texcoord2 = texgen_object(vec4(position.xyz, 1.0),vec4(texcoord2,0,1),texture_matrix2,object_plane_s,object_plane_t).xy;
- vary_texcoord3 = (texture_matrix3*vec4(texcoord3,0,1)).xy;
+ vec4 t = vec4(texcoord1,0,1);
+
+ vary_texcoord0.zw = t.xy;
+ vary_texcoord1.xy = t.xy-vec2(2.0, 0.0);
+ vary_texcoord1.zw = t.xy-vec2(1.0, 0.0);
}
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
index b84f29423f..e5c7ced52c 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file terrainWaterF.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -27,24 +27,39 @@
out vec4 gl_FragColor;
#endif
-// this class1 shader is just a copy of terrainF
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
-uniform sampler2D detail0;
-uniform sampler2D detail1;
-uniform sampler2D alphaRamp;
+uniform sampler2D detail_0;
+uniform sampler2D detail_1;
+uniform sampler2D detail_2;
+uniform sampler2D detail_3;
+uniform sampler2D alpha_ramp;
-VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
-VARYING vec2 vary_texcoord3;
+vec3 atmosLighting(vec3 light);
-void main()
+vec4 applyWaterFog(vec4 color);
+
+void main()
{
- float a = texture2D(alphaRamp, vary_texcoord1.xy).a;
- vec3 color = mix(texture2D(detail1, vary_texcoord2.xy).rgb,
- texture2D(detail0, vary_texcoord0.xy).rgb,
- a);
+ /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
+
+ /// TODO Confirm tex coords and bind them appropriately in vert shader.
+ vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+ vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+ vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+ vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
- gl_FragColor.rgb = color;
- gl_FragColor.a = texture2D(alphaRamp, vary_texcoord3.xy).a;
+ float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+ float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+ float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
+ vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
+
+ /// Add WL Components
+ outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+
+ outColor = applyWaterFog(outColor);
+ gl_FragColor = outColor;
}
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
index 2e138d35bf..1fdb90f792 100644
--- a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
@@ -30,31 +30,75 @@ out vec4 gl_FragColor;
uniform sampler2D diffuseMap;
uniform sampler2D bumpMap;
uniform sampler2D screenTex;
+uniform sampler2D refTex;
+uniform sampler2D screenDepth;
+uniform vec4 fogCol;
+uniform vec3 lightDir;
+uniform vec3 specular;
+uniform float lightExp;
+uniform vec2 fbScale;
uniform float refScale;
+uniform float znear;
+uniform float zfar;
+uniform float kd;
+uniform vec4 waterPlane;
+uniform vec3 eyeVec;
uniform vec4 waterFogColor;
+uniform float waterFogDensity;
+uniform float waterFogKS;
+uniform vec2 screenRes;
//bigWave is (refCoord.w, view.w);
VARYING vec4 refCoord;
VARYING vec4 littleWave;
VARYING vec4 view;
-void main()
+vec4 applyWaterFog(vec4 color, vec3 viewVec)
{
- vec4 color;
+ //normalize view vector
+ vec3 view = normalize(viewVec);
+ float es = -view.z;
+
+ //find intersection point with water plane and eye vector
- //get bigwave normal
- vec3 wavef = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0;
-
- //get detail normals
- vec3 dcol = texture2D(bumpMap, littleWave.xy).rgb*0.75;
- dcol += texture2D(bumpMap, littleWave.zw).rgb*1.25;
-
- //interpolate between big waves and little waves (big waves in deep water)
- wavef = (wavef+dcol)*0.5;
+ //get eye depth
+ float e0 = max(-waterPlane.w, 0.0);
+
+ //get object depth
+ float depth = length(viewVec);
+
+ //get "thickness" of water
+ float l = max(depth, 0.1);
+
+ float kd = waterFogDensity;
+ float ks = waterFogKS;
+ vec4 kc = waterFogColor;
+
+ float F = 0.98;
+
+ float t1 = -kd * pow(F, ks * e0);
+ float t2 = kd + ks * es;
+ float t3 = pow(F, t2*l) - 1.0;
+
+ float L = min(t1/t2*t3, 1.0);
+
+ float D = pow(0.98, l*kd);
+ //return vec4(1.0, 0.0, 1.0, 1.0);
+ return color * D + kc * L;
+ //depth /= 10.0;
+ //return vec4(depth,depth,depth,0.0);
+}
- //crunch normal to range [-1,1]
- wavef -= vec3(1,1,1);
+void main()
+{
+ vec4 color;
+
+ //get detail normals
+ vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
+ vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
+ vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
+ vec3 wavef = normalize(wave1+wave2+wave3);
//figure out distortion vector (ripply)
vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
@@ -62,6 +106,5 @@ void main()
vec4 fb = texture2D(screenTex, distort);
- gl_FragColor.rgb = mix(waterFogColor.rgb, fb.rgb, waterFogColor.a * 0.001 + 0.999);
- gl_FragColor.a = fb.a;
+ gl_FragColor = applyWaterFog(fb,view.xyz);
}
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
index 1512074dda..444c896d38 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
@@ -29,16 +29,13 @@ out vec4 gl_FragColor;
vec3 scaleSoftClip(vec3 inColor);
vec3 atmosTransport(vec3 inColor);
-vec3 applyWaterFog(vec4 inColor);
-uniform sampler2D diffuseMap;
uniform sampler2D bumpMap;
uniform sampler2D screenTex;
uniform sampler2D refTex;
uniform float sunAngle;
uniform float sunAngle2;
-uniform float scaledAngle;
uniform vec3 lightDir;
uniform vec3 specular;
uniform float lightExp;
@@ -49,7 +46,7 @@ uniform vec3 normScale;
uniform float fresnelScale;
uniform float fresnelOffset;
uniform float blurMultiplier;
-uniform vec4 fogCol;
+
//bigWave is (refCoord.w, view.w);
VARYING vec4 refCoord;
@@ -58,58 +55,83 @@ VARYING vec4 view;
void main()
{
- vec3 viewVec = view.xyz;
vec4 color;
- float dist = length(viewVec.xy);
+ float dist = length(view.xy);
//normalize view vector
- viewVec = normalize(viewVec);
+ vec3 viewVec = normalize(view.xyz);
//get wave normals
- vec3 wavef = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0;
-
- //get detail normals
- vec3 dcol = texture2D(bumpMap, littleWave.xy).rgb*0.75;
- dcol += texture2D(bumpMap, littleWave.zw).rgb*1.25;
-
- //interpolate between big waves and little waves (big waves in deep water)
- wavef = (wavef + dcol) * 0.5;
-
- //crunch normal to range [-1,1]
- wavef -= vec3(1,1,1);
- wavef = normalize(wavef);
-
+ vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
+ vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
+ vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
//get base fresnel components
- float df = dot(viewVec,wavef) * fresnelScale + fresnelOffset;
+ vec3 df = vec3(
+ dot(viewVec, wave1),
+ dot(viewVec, (wave2 + wave3) * 0.5),
+ dot(viewVec, wave3)
+ ) * fresnelScale + fresnelOffset;
+ df *= df;
vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
float dist2 = dist;
dist = max(dist, 5.0);
+ float dmod = sqrt(dist);
+
+ vec2 dmod_scale = vec2(dmod*dmod, dmod);
+
//get reflected color
- vec2 refdistort = wavef.xy*dot(normScale, vec3(0.333));
- vec2 refvec = distort+refdistort/dist;
- vec4 refcol = texture2D(refTex, refvec);
+ vec2 refdistort1 = wave1.xy*normScale.x;
+ vec2 refvec1 = distort+refdistort1/dmod_scale;
+ vec4 refcol1 = texture2D(refTex, refvec1);
+
+ vec2 refdistort2 = wave2.xy*normScale.y;
+ vec2 refvec2 = distort+refdistort2/dmod_scale;
+ vec4 refcol2 = texture2D(refTex, refvec2);
+
+ vec2 refdistort3 = wave3.xy*normScale.z;
+ vec2 refvec3 = distort+refdistort3/dmod_scale;
+ vec4 refcol3 = texture2D(refTex, refvec3);
+
+ vec4 refcol = refcol1 + refcol2 + refcol3;
+ float df1 = df.x + df.y + df.z;
+ refcol *= df1 * 0.333;
+
+ vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
+
+ wavef.z *= max(-viewVec.z, 0.1);
+ wavef = normalize(wavef);
+
+ float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
+
+ vec2 refdistort4 = wavef.xy*0.125;
+ refdistort4.y -= abs(refdistort4.y);
+ vec2 refvec4 = distort+refdistort4/dmod;
+ float dweight = min(dist2*blurMultiplier, 1.0);
+ vec4 baseCol = texture2D(refTex, refvec4);
+ refcol = mix(baseCol*df2, refcol, dweight);
//get specular component
float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
-
+
//harden specular
- spec = pow(spec, lightExp);
+ spec = pow(spec, 128.0);
//figure out distortion vector (ripply)
- vec2 distort2 = distort+wavef.xy*refScale/max(dist*df, 1.0);
+ vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
vec4 fb = texture2D(screenTex, distort2);
//mix with reflection
- color.rgb = mix(mix(fogCol.rgb, fb.rgb, fogCol.a), refcol.rgb, df);
+ // Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
+ color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
color.rgb += spec * specular;
- //color.rgb = applyWaterFog(color);//atmosTransport(color.rgb);
+ color.rgb = atmosTransport(color.rgb);
color.rgb = scaleSoftClip(color.rgb);
color.a = spec * sunAngle2;
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
index 45bd5c8b42..4bdfce9260 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
@@ -25,20 +25,50 @@
-
+uniform vec4 lightnorm;
+uniform vec4 waterPlane;
uniform vec4 waterFogColor;
-uniform float waterFogEnd;
+uniform float waterFogDensity;
+uniform float waterFogKS;
+
+vec3 getPositionEye();
vec4 applyWaterFog(vec4 color)
{
- // GL_EXP2 Fog
- //float fog = exp(-gl_Fog.density * gl_Fog.density * fog_depth * fog_depth);
- // GL_EXP Fog
- // float fog = exp(-gl_Fog.density * fog_depth);
- // GL_LINEAR Fog
- float fog = (waterFogEnd - fog_depth) * gl_Fog.scale;
- fog = clamp(fog, 0.0, 1.0);
- color.rgb = mix(waterFogColor.rgb, color.rgb, fog);
+ //normalize view vector
+ vec3 view = normalize(getPositionEye());
+ float es = -(dot(view, waterPlane.xyz));
+
+ //find intersection point with water plane and eye vector
+
+ //get eye depth
+ float e0 = max(-waterPlane.w, 0.0);
+
+ vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);
+
+ //get object depth
+ float depth = length(getPositionEye() - int_v);
+
+ //get "thickness" of water
+ float l = max(depth, 0.1);
+
+ float kd = waterFogDensity;
+ float ks = waterFogKS;
+ vec4 kc = waterFogColor;
+
+ float F = 0.98;
+
+ float t1 = -kd * pow(F, ks * e0);
+ float t2 = kd + ks * es;
+ float t3 = pow(F, t2*l) - 1.0;
+
+ float L = min(t1/t2*t3, 1.0);
+
+ float D = pow(0.98, l*kd);
+
+ color.rgb = color.rgb * D + kc.rgb * L;
+ color.a = kc.a + color.a;
+
return color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
index 8274a655db..735f5b3813 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
@@ -22,7 +22,7 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
@@ -30,11 +30,17 @@ out vec4 gl_FragColor;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-uniform sampler2D diffuseMap;
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
void default_lighting()
{
- vec4 color = vertex_color * texture2D(diffuseMap, vary_texcoord0.xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
index ec7ec9ae7d..c3edc0bd70 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
@@ -22,18 +22,25 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
-
-uniform sampler2D diffuseMap;
-
+VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
void fullbright_lighting()
{
- gl_FragColor = texture2D(diffuseMap, vary_texcoord0.xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
index d47d1724a7..c981e9eba2 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
@@ -22,18 +22,34 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-VARYING vec2 vary_texcoord0;
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
-void fullbright_shiny_lighting()
+void fullbright_shiny_lighting()
{
- gl_FragColor = texture2D(diffuseMap, vary_texcoord0.xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = color;
}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
index bd67e2659e..c10cde98e0 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
@@ -21,18 +21,33 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-
+
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
-#endif
+#endif
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-VARYING vec2 vary_texcoord0;
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+vec4 applyWaterFog(vec4 color);
-void fullbright_shiny_lighting_water()
+void fullbright_shiny_lighting_water()
{
- gl_FragColor = texture2D(diffuseMap, vary_texcoord0.xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = applyWaterFog(color);
}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
index 0cf5152661..2547f9e750 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
@@ -27,12 +27,20 @@
out vec4 gl_FragColor;
#endif
-uniform sampler2D diffuseMap;
-
+VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
+vec4 diffuseLookup(vec2 texcoord);
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
void fullbright_lighting_water()
{
- gl_FragColor = texture2D(diffuseMap, vary_texcoord0.xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
index 761bda487d..e9c27dbefd 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
@@ -29,13 +29,26 @@ out vec4 gl_FragColor;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-void shiny_lighting()
+vec3 scaleSoftClip(vec3 light);
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting()
{
- vec4 color = vertex_color * texture2D(diffuseMap, vary_texcoord0.xy);
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
gl_FragColor = color;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
index 6761d35316..68c727d62c 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
@@ -29,13 +29,23 @@ out vec4 gl_FragColor;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
-uniform sampler2D diffuseMap;
uniform samplerCube environmentMap;
-void shiny_lighting_water()
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting_water()
{
- vec4 color = vertex_color * texture2D(diffuseMap, vary_texcoord0.xy);
- gl_FragColor = color;
+ vec4 color = diffuseLookup(vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+ gl_FragColor = applyWaterFog(color);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
index 265d548ce9..24bf9b3cee 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
@@ -1,5 +1,5 @@
/**
- * @file lightV.glsl
+ * @file lightSpecularV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
* Second Life Viewer Source Code
@@ -24,26 +24,13 @@
*/
-uniform vec4 light_position[8];
-uniform vec3 light_diffuse[8];
-uniform vec4 light_ambient;
-float calcDirectionalLight(vec3 n, vec3 l);
+// All lights, no specular highlights
+
+vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
-// Same as non-specular lighting in lightV.glsl
vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
{
- specularColor.rgb = vec3(0.0, 0.0, 0.0);
- vec4 col;
- col.a = color.a;
-
- col.rgb = baseCol.rgb + light_ambient.rgb;
-
- col.rgb += light_diffuse[0].rgb*calcDirectionalLight(norm, light_position[0].xyz);
- col.rgb += light_diffuse[1].rgb*calcDirectionalLight(norm, light_position[1].xyz);
-
- col.rgb = min(col.rgb*color.rgb, 1.0);
-
- return col;
+ return sumLightsSpecular(pos, norm, color, specularColor, baseCol);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
index b886f97743..8045809b82 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
@@ -24,24 +24,13 @@
*/
-uniform vec4 light_position[8];
-uniform vec3 light_diffuse[8];
-uniform vec4 light_ambient;
-float calcDirectionalLight(vec3 n, vec3 l);
+// All lights, no specular highlights
+
+vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight);
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
{
- vec4 col;
- col.a = color.a;
-
- col.rgb = baseLight.rgb+light_ambient.rgb;
-
- col.rgb += light_diffuse[0].rgb*calcDirectionalLight(norm, light_position[0].xyz);
- col.rgb += light_diffuse[1].rgb*calcDirectionalLight(norm, light_position[1].xyz);
-
- col.rgb = min(col.rgb*color.rgb, 1.0);
-
- return col;
+ return sumLights(pos, norm, color, baseLight);
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
index 2908d77443..e9537d1e9d 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
@@ -25,16 +25,20 @@
#ifdef DEFINE_GL_FRAGCOLOR
out vec4 gl_FragColor;
-#endif
-
+#endif
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-uniform sampler2D diffuseMap;
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
-void default_lighting_water()
+void default_lighting_water()
{
- vec4 color = vertex_color * texture2D(diffuseMap, vary_texcoord0.xy);
- gl_FragColor = color;
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
index 8d1bbf350d..34bd8d445a 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
@@ -29,9 +29,17 @@ uniform mat4 texture_matrix1;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
+
+void calcAtmospherics(vec3 inPositionEye);
+
+uniform vec4 origin;
+
+
+
ATTRIBUTE vec3 position;
-ATTRIBUTE vec4 diffuse_color;
+void passTextureIndex();
ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
@@ -39,14 +47,13 @@ VARYING vec2 vary_texcoord0;
VARYING vec3 vary_texcoord1;
-void calcAtmospherics(vec3 inPositionEye);
-
-uniform vec4 origin;
-
void main()
{
//transform vertex
- gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
vec3 norm = normalize(normal_matrix * normal);
vec3 ref = reflect(pos.xyz, -norm);
@@ -54,10 +61,7 @@ void main()
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
- vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
calcAtmospherics(pos.xyz);
vertex_color = diffuse_color;
-
-
}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
index 8b20c2a860..fc20d3270e 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
@@ -26,26 +26,30 @@
uniform mat4 texture_matrix0;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
-
+
ATTRIBUTE vec3 position;
-ATTRIBUTE vec4 diffuse_color;
+void passTextureIndex();
ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+
+
+void calcAtmospherics(vec3 inPositionEye);
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-void calcAtmospherics(vec3 inPositionEye);
-
void main()
{
//transform vertex
- vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
- gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
-
-
calcAtmospherics(pos.xyz);
vertex_color = diffuse_color;
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
index 4ca53a8f30..fdb3453cc5 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
@@ -1,4 +1,4 @@
-/**
+/**
* @file shinyV.glsl
*
* $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -25,17 +25,21 @@
uniform mat3 normal_matrix;
uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
-ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
-VARYING vec3 vary_texcoord0;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye);
@@ -44,19 +48,18 @@ uniform vec4 origin;
void main()
{
//transform vertex
- vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
- gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
-
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+
vec3 norm = normalize(normal_matrix * normal);
+ vec3 ref = reflect(pos.xyz, -norm);
+
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+ vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
calcAtmospherics(pos.xyz);
-
- vertex_color = diffuse_color;
-
- vec3 ref = reflect(pos.xyz, -norm);
-
- vary_texcoord0 = (texture_matrix0*vec4(ref,1.0)).xyz;
-
-
-}
+ vertex_color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.0));
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
index df9111f941..37a20383e2 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
@@ -29,28 +29,36 @@ uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
ATTRIBUTE vec3 normal;
ATTRIBUTE vec4 diffuse_color;
-ATTRIBUTE vec2 texcoord0;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-void calcAtmospherics(vec3 inPositionEye);
-
void main()
{
//transform vertex
- vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
- gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
- vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
-
+ vec4 vert = vec4(position.xyz,1.0);
+ passTextureIndex();
+ vec4 pos = (modelview_matrix * vert);
+ gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+
+
+
vec3 norm = normalize(normal_matrix * normal);
calcAtmospherics(pos.xyz);
vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
vertex_color = color;
+
+
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
index ed0249330e..89b6a52909 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
@@ -23,7 +23,7 @@
* $/LicenseInfo$
*/
-uniform vec3 light_diffuse[8];
+uniform vec4 sunlight_color;
uniform vec4 light_ambient;
vec3 atmosAmbient(vec3 light)
@@ -33,12 +33,12 @@ vec3 atmosAmbient(vec3 light)
vec3 atmosAffectDirectionalLight(float lightIntensity)
{
- return light_diffuse[0].rgb * lightIntensity;
+ return sunlight_color.rgb * lightIntensity;
}
vec3 atmosGetDiffuseSunlightColor()
{
- return light_diffuse[0].rgb;
+ return sunlight_color.rgb;
}
vec3 scaleDownLight(vec3 light)
diff --git a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl b/indra/newview/app_settings/shaders/class2/effects/blurF.glsl
deleted file mode 100644
index 01fe4a4e14..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * @file blurf.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$
- */
-
-//NOT USED!!!
-
diff --git a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl b/indra/newview/app_settings/shaders/class2/effects/blurV.glsl
deleted file mode 100644
index b92e9b3f03..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * @file blurV.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$
- */
-
- // NOT USED!!
-
diff --git a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
deleted file mode 100644
index f42497d8be..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file colorFilterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DRect RenderTexture;
-uniform float brightness;
-uniform float contrast;
-uniform vec3 contrastBase;
-uniform float saturation;
-uniform vec3 lumWeights;
-
-const float gamma = 2.0;
-
-void main(void)
-{
- vec3 color = vec3(texture2DRect(RenderTexture, vary_texcoord0.st));
-
- /// Modulate brightness
- color *= brightness;
-
- /// Modulate contrast
- color = mix(contrastBase, color, contrast);
-
- /// Modulate saturation
- color = mix(vec3(dot(color, lumWeights)), color, saturation);
-
- gl_FragColor = vec4(color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl b/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
deleted file mode 100644
index f03a6076c0..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file drawQuadV.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$
- */
-
-uniform mat4 modelview_projection_matrix;
-
-ATTRIBUTE vec3 position;
-ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec2 texcoord1;
-
-
-void main(void)
-{
- //transform vertex
- gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
- vary_texcoord0 = texcoord0;
- vary_texcoord1 = texcoord1;
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
deleted file mode 100644
index ebf4f28a74..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @file extractF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DRect RenderTexture;
-uniform float extractLow;
-uniform float extractHigh;
-uniform vec3 lumWeights;
-
-void main(void)
-{
- /// Get scene color
- vec3 color = vec3(texture2DRect(RenderTexture, vary_texcoord0.st));
-
- /// Extract luminance and scale up by night vision brightness
- float lum = smoothstep(extractLow, extractHigh, dot(color, lumWeights));
-
- gl_FragColor = vec4(vec3(lum), 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
deleted file mode 100644
index 2bfcfad081..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * @file nightVisionF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DRect RenderTexture;
-uniform sampler2D NoiseTexture;
-uniform float brightMult;
-uniform float noiseStrength;
-
-VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-
-float luminance(vec3 color)
-{
- /// CALCULATING LUMINANCE (Using NTSC lum weights)
- /// http://en.wikipedia.org/wiki/Luma_%28video%29
- return dot(color, vec3(0.299, 0.587, 0.114));
-}
-
-void main(void)
-{
- /// Get scene color
- vec3 color = vec3(texture2DRect(RenderTexture, vary_texcoord0.st));
-
- /// Extract luminance and scale up by night vision brightness
- float lum = luminance(color) * brightMult;
-
- /// Convert into night vision color space
- /// Newer NVG colors (crisper and more saturated)
- vec3 outColor = (lum * vec3(0.91, 1.21, 0.9)) + vec3(-0.07, 0.1, -0.12);
-
- /// Add noise
- float noiseValue = texture2D(NoiseTexture, vary_texcoord1.st).r;
- noiseValue = (noiseValue - 0.5) * noiseStrength;
-
- /// Older NVG colors (more muted)
- // vec3 outColor = (lum * vec3(0.82, 0.75, 0.83)) + vec3(0.05, 0.32, -0.11);
-
- outColor += noiseValue;
-
- gl_FragColor = vec4(outColor, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
deleted file mode 100644
index 932bd87152..0000000000
--- a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * @file simpleF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DRect RenderTexture;
-
-VARYING vec2 vary_texcoord0;
-
-void main(void)
-{
- vec3 color = vec3(texture2DRect(RenderTexture, vary_texcoord0.st));
- gl_FragColor = vec4(1.0 - color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
deleted file mode 100644
index 18f6d91804..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file terrainF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec4 vary_texcoord0;
-VARYING vec4 vary_texcoord1;
-
-uniform sampler2D detail_0;
-uniform sampler2D detail_1;
-uniform sampler2D detail_2;
-uniform sampler2D detail_3;
-uniform sampler2D alpha_ramp;
-
-vec3 atmosLighting(vec3 light);
-
-vec3 scaleSoftClip(vec3 color);
-
-void main()
-{
- /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
-
- /// TODO Confirm tex coords and bind them appropriately in vert shader.
- vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
- vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
- vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
- vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
-
- float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
- float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
- float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
- vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
-
- /// Add WL Components
- outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
-
- gl_FragColor = vec4(scaleSoftClip(outColor.rgb), 1.0);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
deleted file mode 100644
index f183b885d1..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * @file terrainV.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$
- */
-
-uniform mat3 normal_matrix;
-uniform mat4 texture_matrix0;
-uniform mat4 modelview_matrix;
-uniform mat4 modelview_projection_matrix;
-
-uniform vec4 object_plane_t;
-uniform vec4 object_plane_s;
-
-ATTRIBUTE vec3 position;
-ATTRIBUTE vec3 normal;
-ATTRIBUTE vec4 diffuse_color;
-ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec2 texcoord1;
-
-VARYING vec4 vertex_color;
-VARYING vec4 vary_texcoord0;
-VARYING vec4 vary_texcoord1;
-
-void calcAtmospherics(vec3 inPositionEye);
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-
-vec4 texgen_object(vec4 vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
-{
- vec4 tcoord;
-
- tcoord.x = dot(vpos, tp0);
- tcoord.y = dot(vpos, tp1);
- tcoord.z = tc.z;
- tcoord.w = tc.w;
-
- tcoord = mat * tcoord;
-
- return tcoord;
-}
-
-void main()
-{
- //transform vertex
- gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
-
- vec4 pos = modelview_matrix * vec4(position.xyz, 1.0);
- vec3 norm = normalize(normal_matrix * normal);
-
- calcAtmospherics(pos.xyz);
-
- /// Potentially better without it for water.
- pos /= pos.w;
-
- vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0));
-
- vertex_color = color;
-
- // Transform and pass tex coords
- vary_texcoord0.xy = texgen_object(vec4(position.xyz, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
-
- vec4 t = vec4(texcoord1,0,1);
-
- vary_texcoord0.zw = t.xy;
- vary_texcoord1.xy = t.xy-vec2(2.0, 0.0);
- vary_texcoord1.zw = t.xy-vec2(1.0, 0.0);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
deleted file mode 100644
index e5c7ced52c..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @file terrainWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec4 vary_texcoord0;
-VARYING vec4 vary_texcoord1;
-
-uniform sampler2D detail_0;
-uniform sampler2D detail_1;
-uniform sampler2D detail_2;
-uniform sampler2D detail_3;
-uniform sampler2D alpha_ramp;
-
-vec3 atmosLighting(vec3 light);
-
-vec4 applyWaterFog(vec4 color);
-
-void main()
-{
- /// Note: This should duplicate the blending functionality currently used for the terrain rendering.
-
- /// TODO Confirm tex coords and bind them appropriately in vert shader.
- vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
- vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
- vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
- vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
-
- float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
- float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
- float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
- vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
-
- /// Add WL Components
- outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
-
- outColor = applyWaterFog(outColor);
- gl_FragColor = outColor;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
deleted file mode 100644
index 1fdb90f792..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * @file underWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2D diffuseMap;
-uniform sampler2D bumpMap;
-uniform sampler2D screenTex;
-uniform sampler2D refTex;
-uniform sampler2D screenDepth;
-
-uniform vec4 fogCol;
-uniform vec3 lightDir;
-uniform vec3 specular;
-uniform float lightExp;
-uniform vec2 fbScale;
-uniform float refScale;
-uniform float znear;
-uniform float zfar;
-uniform float kd;
-uniform vec4 waterPlane;
-uniform vec3 eyeVec;
-uniform vec4 waterFogColor;
-uniform float waterFogDensity;
-uniform float waterFogKS;
-uniform vec2 screenRes;
-
-//bigWave is (refCoord.w, view.w);
-VARYING vec4 refCoord;
-VARYING vec4 littleWave;
-VARYING vec4 view;
-
-vec4 applyWaterFog(vec4 color, vec3 viewVec)
-{
- //normalize view vector
- vec3 view = normalize(viewVec);
- float es = -view.z;
-
- //find intersection point with water plane and eye vector
-
- //get eye depth
- float e0 = max(-waterPlane.w, 0.0);
-
- //get object depth
- float depth = length(viewVec);
-
- //get "thickness" of water
- float l = max(depth, 0.1);
-
- float kd = waterFogDensity;
- float ks = waterFogKS;
- vec4 kc = waterFogColor;
-
- float F = 0.98;
-
- float t1 = -kd * pow(F, ks * e0);
- float t2 = kd + ks * es;
- float t3 = pow(F, t2*l) - 1.0;
-
- float L = min(t1/t2*t3, 1.0);
-
- float D = pow(0.98, l*kd);
- //return vec4(1.0, 0.0, 1.0, 1.0);
- return color * D + kc * L;
- //depth /= 10.0;
- //return vec4(depth,depth,depth,0.0);
-}
-
-void main()
-{
- vec4 color;
-
- //get detail normals
- vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
- vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
- vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
- vec3 wavef = normalize(wave1+wave2+wave3);
-
- //figure out distortion vector (ripply)
- vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
- distort = distort+wavef.xy*refScale;
-
- vec4 fb = texture2D(screenTex, distort);
-
- gl_FragColor = applyWaterFog(fb,view.xyz);
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
deleted file mode 100644
index 444c896d38..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * @file waterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-vec3 scaleSoftClip(vec3 inColor);
-vec3 atmosTransport(vec3 inColor);
-
-uniform sampler2D bumpMap;
-uniform sampler2D screenTex;
-uniform sampler2D refTex;
-
-uniform float sunAngle;
-uniform float sunAngle2;
-uniform vec3 lightDir;
-uniform vec3 specular;
-uniform float lightExp;
-uniform float refScale;
-uniform float kd;
-uniform vec2 screenRes;
-uniform vec3 normScale;
-uniform float fresnelScale;
-uniform float fresnelOffset;
-uniform float blurMultiplier;
-
-
-//bigWave is (refCoord.w, view.w);
-VARYING vec4 refCoord;
-VARYING vec4 littleWave;
-VARYING vec4 view;
-
-void main()
-{
- vec4 color;
-
- float dist = length(view.xy);
-
- //normalize view vector
- vec3 viewVec = normalize(view.xyz);
-
- //get wave normals
- vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
- vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
- vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
- //get base fresnel components
-
- vec3 df = vec3(
- dot(viewVec, wave1),
- dot(viewVec, (wave2 + wave3) * 0.5),
- dot(viewVec, wave3)
- ) * fresnelScale + fresnelOffset;
- df *= df;
-
- vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
-
- float dist2 = dist;
- dist = max(dist, 5.0);
-
- float dmod = sqrt(dist);
-
- vec2 dmod_scale = vec2(dmod*dmod, dmod);
-
- //get reflected color
- vec2 refdistort1 = wave1.xy*normScale.x;
- vec2 refvec1 = distort+refdistort1/dmod_scale;
- vec4 refcol1 = texture2D(refTex, refvec1);
-
- vec2 refdistort2 = wave2.xy*normScale.y;
- vec2 refvec2 = distort+refdistort2/dmod_scale;
- vec4 refcol2 = texture2D(refTex, refvec2);
-
- vec2 refdistort3 = wave3.xy*normScale.z;
- vec2 refvec3 = distort+refdistort3/dmod_scale;
- vec4 refcol3 = texture2D(refTex, refvec3);
-
- vec4 refcol = refcol1 + refcol2 + refcol3;
- float df1 = df.x + df.y + df.z;
- refcol *= df1 * 0.333;
-
- vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
-
- wavef.z *= max(-viewVec.z, 0.1);
- wavef = normalize(wavef);
-
- float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
-
- vec2 refdistort4 = wavef.xy*0.125;
- refdistort4.y -= abs(refdistort4.y);
- vec2 refvec4 = distort+refdistort4/dmod;
- float dweight = min(dist2*blurMultiplier, 1.0);
- vec4 baseCol = texture2D(refTex, refvec4);
- refcol = mix(baseCol*df2, refcol, dweight);
-
- //get specular component
- float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
-
- //harden specular
- spec = pow(spec, 128.0);
-
- //figure out distortion vector (ripply)
- vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
-
- vec4 fb = texture2D(screenTex, distort2);
-
- //mix with reflection
- // Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
- color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
- color.rgb += spec * specular;
-
- color.rgb = atmosTransport(color.rgb);
- color.rgb = scaleSoftClip(color.rgb);
- color.a = spec * sunAngle2;
-
- gl_FragColor = color;
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
deleted file mode 100644
index 4bdfce9260..0000000000
--- a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @file waterFogF.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$
- */
-
-
-
-uniform vec4 lightnorm;
-uniform vec4 waterPlane;
-uniform vec4 waterFogColor;
-uniform float waterFogDensity;
-uniform float waterFogKS;
-
-vec3 getPositionEye();
-
-vec4 applyWaterFog(vec4 color)
-{
- //normalize view vector
- vec3 view = normalize(getPositionEye());
- float es = -(dot(view, waterPlane.xyz));
-
- //find intersection point with water plane and eye vector
-
- //get eye depth
- float e0 = max(-waterPlane.w, 0.0);
-
- vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);
-
- //get object depth
- float depth = length(getPositionEye() - int_v);
-
- //get "thickness" of water
- float l = max(depth, 0.1);
-
- float kd = waterFogDensity;
- float ks = waterFogKS;
- vec4 kc = waterFogColor;
-
- float F = 0.98;
-
- float t1 = -kd * pow(F, ks * e0);
- float t2 = kd + ks * es;
- float t3 = pow(F, t2*l) - 1.0;
-
- float L = min(t1/t2*t3, 1.0);
-
- float D = pow(0.98, l*kd);
-
- color.rgb = color.rgb * D + kc.rgb * L;
- color.a = kc.a + color.a;
-
- return color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
deleted file mode 100644
index 6815f7aa85..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file lightAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void default_lighting()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
deleted file mode 100644
index 2640668d7d..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * @file lightAlphaMaskNonIndexedF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void default_lighting()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
deleted file mode 100644
index 735f5b3813..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file lightF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
deleted file mode 100644
index 92113d9afa..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file lightFullbrightAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void fullbright_lighting()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
deleted file mode 100644
index c3edc0bd70..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file lightFullbrightF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_lighting()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
deleted file mode 100644
index d1ad3da009..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file lightFullbrightNonIndexedAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-uniform sampler2D diffuseMap;
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void fullbright_lighting()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
deleted file mode 100644
index 4e1e664e6b..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file lightFullbrightF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-uniform sampler2D diffuseMap;
-
-void fullbright_lighting()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
deleted file mode 100644
index c981e9eba2..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file lightFullbrightShinyF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_shiny_lighting()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- color.a = max(color.a, vertex_color.a);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
deleted file mode 100644
index a4893f0359..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file lightFullbrightShinyF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_shiny_lighting()
-{
- vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
-
- color.rgb = fullbrightScaleSoftClip(color.rgb);
-
- color.a = max(color.a, vertex_color.a);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
deleted file mode 100644
index c10cde98e0..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file lightFullbrightShinyWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_shiny_lighting_water()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
- color.rgb = fullbrightScaleSoftClip(color.rgb);
- color.a = max(color.a, vertex_color.a);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
deleted file mode 100644
index e9b26087f4..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file lightFullbrightShinyWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_shiny_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = fullbrightShinyAtmosTransport(color.rgb);
- color.rgb = fullbrightScaleSoftClip(color.rgb);
- color.a = max(color.a, vertex_color.a);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
deleted file mode 100644
index 32a1c71099..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file lightFullbrightWaterAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec4 diffuseLookup(vec2 texcoord);
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void fullbright_lighting_water()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
deleted file mode 100644
index 2547f9e750..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file lightFullbrightWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-vec4 diffuseLookup(vec2 texcoord);
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
deleted file mode 100644
index 1b5aa61441..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file lightFullbrightWaterNonIndexedAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void fullbright_lighting_water()
-{
- vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
deleted file mode 100644
index aa3ef8cdd9..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file lightFullbrightWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-uniform sampler2D diffuseMap;
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
- vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
-
- color.rgb = fullbrightAtmosTransport(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
deleted file mode 100644
index 9f1a358b53..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @file lightF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
deleted file mode 100644
index e9c27dbefd..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file lightShinyF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-
-vec3 scaleSoftClip(vec3 light);
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
- color.a = max(color.a, vertex_color.a);
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
deleted file mode 100644
index 595ad74365..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file lightShinyF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-uniform sampler2D diffuseMap;
-
-vec3 scaleSoftClip(vec3 light);
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = atmosLighting(color.rgb);
-
- color.rgb = scaleSoftClip(color.rgb);
- color.a = max(color.a, vertex_color.a);
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
deleted file mode 100644
index 68c727d62c..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file lightShinyWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform samplerCube environmentMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting_water()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = atmosLighting(color.rgb);
- color.a = max(color.a, vertex_color.a);
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
deleted file mode 100644
index f32b9e1958..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file lightShinyWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-uniform sampler2D diffuseMap;
-uniform samplerCube environmentMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
- color.rgb *= vertex_color.rgb;
-
- vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
- color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
-
- color.rgb = atmosLighting(color.rgb);
- color.a = max(color.a, vertex_color.a);
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
deleted file mode 100644
index 24bf9b3cee..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @file lightSpecularV.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$
- */
-
-
-
-// All lights, no specular highlights
-
-vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
-
-vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
-{
- return sumLightsSpecular(pos, norm, color, specularColor, baseCol);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
deleted file mode 100644
index 8045809b82..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @file lightV.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$
- */
-
-
-
-// All lights, no specular highlights
-
-vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight);
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
-{
- return sumLights(pos, norm, color, baseLight);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
deleted file mode 100644
index 60289cf7f7..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file lightWaterAlphaMaskF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void default_lighting_water()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
deleted file mode 100644
index d0038ae89b..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file lightWaterAlphaMaskNonIndexedF.glsl
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform float minimum_alpha;
-uniform float maximum_alpha;
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-void default_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
-
- if (color.a < minimum_alpha || color.a > maximum_alpha)
- {
- discard;
- }
-
- color.rgb = atmosLighting(color.rgb);
-
- color = applyWaterFog(color);
-
- gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
deleted file mode 100644
index e9537d1e9d..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @file lightWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
- vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
-
- color.rgb = atmosLighting(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
deleted file mode 100644
index 8b0c25b705..0000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file lightWaterF.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$
- */
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-uniform sampler2D diffuseMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
- vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
-
- color.rgb = atmosLighting(color.rgb);
-
- gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
deleted file mode 100644
index 34bd8d445a..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * @file fullbrightShinyV.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$
- */
-
-uniform mat3 normal_matrix;
-uniform mat4 texture_matrix0;
-uniform mat4 texture_matrix1;
-uniform mat4 modelview_matrix;
-uniform mat4 modelview_projection_matrix;
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-uniform vec4 origin;
-
-
-
-ATTRIBUTE vec3 position;
-void passTextureIndex();
-ATTRIBUTE vec3 normal;
-ATTRIBUTE vec4 diffuse_color;
-ATTRIBUTE vec2 texcoord0;
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(position.xyz,1.0);
- passTextureIndex();
- vec4 pos = (modelview_matrix * vert);
- gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
-
- vec3 norm = normalize(normal_matrix * normal);
- vec3 ref = reflect(pos.xyz, -norm);
-
- vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
-
- calcAtmospherics(pos.xyz);
-
- vertex_color = diffuse_color;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
deleted file mode 100644
index fc20d3270e..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * @file fullbrightV.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$
- */
-
-uniform mat4 texture_matrix0;
-uniform mat4 modelview_matrix;
-uniform mat4 modelview_projection_matrix;
-
-ATTRIBUTE vec3 position;
-void passTextureIndex();
-ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec3 normal;
-ATTRIBUTE vec4 diffuse_color;
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(position.xyz,1.0);
- passTextureIndex();
- vec4 pos = (modelview_matrix * vert);
- gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
- vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
-
- calcAtmospherics(pos.xyz);
-
- vertex_color = diffuse_color;
-
-
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
deleted file mode 100644
index fdb3453cc5..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @file shinyV.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$
- */
-
-uniform mat3 normal_matrix;
-uniform mat4 texture_matrix0;
-uniform mat4 texture_matrix1;
-uniform mat4 modelview_matrix;
-uniform mat4 modelview_projection_matrix;
-
-ATTRIBUTE vec3 position;
-void passTextureIndex();
-ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec3 normal;
-ATTRIBUTE vec4 diffuse_color;
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-VARYING vec3 vary_texcoord1;
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-
-void calcAtmospherics(vec3 inPositionEye);
-
-uniform vec4 origin;
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(position.xyz,1.0);
- passTextureIndex();
- vec4 pos = (modelview_matrix * vert);
- gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
-
- vec3 norm = normalize(normal_matrix * normal);
- vec3 ref = reflect(pos.xyz, -norm);
-
- vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
- vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
-
- calcAtmospherics(pos.xyz);
-
- vertex_color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.0));
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl
deleted file mode 100644
index cb80697d15..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/simpleNonIndexedV.glsl
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file simpleNonIndexedV.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$
- */
-
-uniform mat3 normal_matrix;
-uniform mat4 texture_matrix0;
-uniform mat4 modelview_matrix;
-uniform mat4 modelview_projection_matrix;
-
-ATTRIBUTE vec3 position;
-ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec3 normal;
-ATTRIBUTE vec4 diffuse_color;
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-void calcAtmospherics(vec3 inPositionEye);
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(position.xyz,1.0);
-
- gl_Position = modelview_projection_matrix*vert;
- vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
-
- vec4 pos = (modelview_matrix * vert);
-
- vec3 norm = normalize(normal_matrix * normal);
-
- calcAtmospherics(pos.xyz);
-
- vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
- vertex_color = color;
-
-
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
deleted file mode 100644
index 37a20383e2..0000000000
--- a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file simpleV.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$
- */
-
-uniform mat3 normal_matrix;
-uniform mat4 texture_matrix0;
-uniform mat4 modelview_matrix;
-uniform mat4 modelview_projection_matrix;
-
-ATTRIBUTE vec3 position;
-void passTextureIndex();
-ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec3 normal;
-ATTRIBUTE vec4 diffuse_color;
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-void calcAtmospherics(vec3 inPositionEye);
-
-
-VARYING vec4 vertex_color;
-VARYING vec2 vary_texcoord0;
-
-
-void main()
-{
- //transform vertex
- vec4 vert = vec4(position.xyz,1.0);
- passTextureIndex();
- vec4 pos = (modelview_matrix * vert);
- gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
- vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
-
-
-
- vec3 norm = normalize(normal_matrix * normal);
-
- calcAtmospherics(pos.xyz);
-
- vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
- vertex_color = color;
-
-
-}
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 563a63287e..9fb804a74f 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -608,7 +608,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
- gSavedSettings.getControl("EnableRippleWater")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderGlowResolutionPow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderAvatarCloth")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 6af9e464df..8e59a7c32d 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -561,11 +561,7 @@ void LLViewerShaderMgr::setShaders()
wl_class = 1;
}
- if(!gSavedSettings.getBOOL("EnableRippleWater"))
- {
- water_class = 0;
- }
-
+
// Trigger a full rebuild of the fallback skybox / cubemap if we've toggled windlight shaders
if (mVertexShaderLevel[SHADER_WINDLIGHT] != wl_class && gSky.mVOSkyp.notNull())
{
@@ -1087,51 +1083,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
}
}
-#if 0
- // disabling loading of postprocess shaders until we fix
- // ATI sampler2DRect compatibility.
-
- //load Color Filter Shader
- if (success)
- {
- vector shaderUniforms;
- shaderUniforms.reserve(7);
- shaderUniforms.push_back("RenderTexture");
- shaderUniforms.push_back("gamma");
- shaderUniforms.push_back("brightness");
- shaderUniforms.push_back("contrast");
- shaderUniforms.push_back("contrastBase");
- shaderUniforms.push_back("saturation");
- shaderUniforms.push_back("lumWeights");
-
- gPostColorFilterProgram.mName = "Color Filter Shader (Post)";
- gPostColorFilterProgram.mShaderFiles.clear();
- gPostColorFilterProgram.mShaderFiles.push_back(make_pair("effects/colorFilterF.glsl", GL_FRAGMENT_SHADER_ARB));
- gPostColorFilterProgram.mShaderFiles.push_back(make_pair("effects/drawQuadV.glsl", GL_VERTEX_SHADER_ARB));
- gPostColorFilterProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
- success = gPostColorFilterProgram.createShader(NULL, &shaderUniforms);
- }
-
- //load Night Vision Shader
- if (success)
- {
- vector shaderUniforms;
- shaderUniforms.reserve(5);
- shaderUniforms.push_back("RenderTexture");
- shaderUniforms.push_back("NoiseTexture");
- shaderUniforms.push_back("brightMult");
- shaderUniforms.push_back("noiseStrength");
- shaderUniforms.push_back("lumWeights");
-
- gPostNightVisionProgram.mName = "Night Vision Shader (Post)";
- gPostNightVisionProgram.mShaderFiles.clear();
- gPostNightVisionProgram.mShaderFiles.push_back(make_pair("effects/nightVisionF.glsl", GL_FRAGMENT_SHADER_ARB));
- gPostNightVisionProgram.mShaderFiles.push_back(make_pair("effects/drawQuadV.glsl", GL_VERTEX_SHADER_ARB));
- gPostNightVisionProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
- success = gPostNightVisionProgram.createShader(NULL, &shaderUniforms);
- }
- #endif
-
return success;
}
--
cgit v1.3
From 8882d93de40cf3f7771e5ad1bfc6aefd47bd469d Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 19:34:27 -0500
Subject: SH-2507 Potential fix for basic shaders causing objects to disappear
with some drivers (prune shader tree of unused shaders while we're at it)
---
.../shaders/class1/lighting/lightAlphaMaskF.glsl | 54 +++++++++++++++++++
.../class1/lighting/lightAlphaMaskNonIndexedF.glsl | 57 ++++++++++++++++++++
.../class1/lighting/lightFullbrightAlphaMaskF.glsl | 54 +++++++++++++++++++
.../lightFullbrightNonIndexedAlphaMaskF.glsl | 56 ++++++++++++++++++++
.../lighting/lightFullbrightNonIndexedF.glsl | 48 +++++++++++++++++
.../lighting/lightFullbrightShinyNonIndexedF.glsl | 56 ++++++++++++++++++++
.../lightFullbrightShinyWaterNonIndexedF.glsl | 54 +++++++++++++++++++
.../lighting/lightFullbrightWaterAlphaMaskF.glsl | 54 +++++++++++++++++++
.../lightFullbrightWaterNonIndexedAlphaMaskF.glsl | 54 +++++++++++++++++++
.../lighting/lightFullbrightWaterNonIndexedF.glsl | 46 ++++++++++++++++
.../shaders/class1/lighting/lightNonIndexedF.glsl | 48 +++++++++++++++++
.../class1/lighting/lightShinyNonIndexedF.glsl | 55 +++++++++++++++++++
.../lighting/lightShinyWaterNonIndexedF.glsl | 52 ++++++++++++++++++
.../class1/lighting/lightWaterAlphaMaskF.glsl | 52 ++++++++++++++++++
.../lighting/lightWaterAlphaMaskNonIndexedF.glsl | 56 ++++++++++++++++++++
.../class1/lighting/lightWaterNonIndexedF.glsl | 46 ++++++++++++++++
.../shaders/class1/objects/indexedTextureF.glsl | 33 ++++++++++++
.../shaders/class1/objects/simpleNonIndexedV.glsl | 61 ++++++++++++++++++++++
18 files changed, 936 insertions(+)
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
create mode 100644 indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
new file mode 100644
index 0000000000..6815f7aa85
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
@@ -0,0 +1,54 @@
+/**
+ * @file lightAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
new file mode 100644
index 0000000000..2640668d7d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
@@ -0,0 +1,57 @@
+/**
+ * @file lightAlphaMaskNonIndexedF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
new file mode 100644
index 0000000000..92113d9afa
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
@@ -0,0 +1,54 @@
+/**
+ * @file lightFullbrightAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
new file mode 100644
index 0000000000..d1ad3da009
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file lightFullbrightNonIndexedAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+uniform sampler2D diffuseMap;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
new file mode 100644
index 0000000000..4e1e664e6b
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
@@ -0,0 +1,48 @@
+/**
+ * @file lightFullbrightF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+uniform sampler2D diffuseMap;
+
+void fullbright_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
new file mode 100644
index 0000000000..a4893f0359
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file lightFullbrightShinyF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform samplerCube environmentMap;
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+void fullbright_shiny_lighting()
+{
+ vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..e9b26087f4
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
@@ -0,0 +1,54 @@
+/**
+ * @file lightFullbrightShinyWaterF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform samplerCube environmentMap;
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void fullbright_shiny_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+ color.rgb = fullbrightScaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
new file mode 100644
index 0000000000..32a1c71099
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
@@ -0,0 +1,54 @@
+/**
+ * @file lightFullbrightWaterAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+vec4 diffuseLookup(vec2 texcoord);
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting_water()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
new file mode 100644
index 0000000000..1b5aa61441
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
@@ -0,0 +1,54 @@
+/**
+ * @file lightFullbrightWaterNonIndexedAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void fullbright_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..aa3ef8cdd9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
@@ -0,0 +1,46 @@
+/**
+ * @file lightFullbrightWaterF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform sampler2D diffuseMap;
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void fullbright_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = fullbrightAtmosTransport(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
new file mode 100644
index 0000000000..9f1a358b53
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
@@ -0,0 +1,48 @@
+/**
+ * @file lightF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+void default_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
new file mode 100644
index 0000000000..595ad74365
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
@@ -0,0 +1,55 @@
+/**
+ * @file lightShinyF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform samplerCube environmentMap;
+uniform sampler2D diffuseMap;
+
+vec3 scaleSoftClip(vec3 light);
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color.rgb = scaleSoftClip(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..f32b9e1958
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
@@ -0,0 +1,52 @@
+/**
+ * @file lightShinyWaterF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+uniform sampler2D diffuseMap;
+uniform samplerCube environmentMap;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+ color.rgb *= vertex_color.rgb;
+
+ vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;
+ color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+ color.rgb = atmosLighting(color.rgb);
+ color.a = max(color.a, vertex_color.a);
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
new file mode 100644
index 0000000000..60289cf7f7
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
@@ -0,0 +1,52 @@
+/**
+ * @file lightWaterAlphaMaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting_water()
+{
+ vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
new file mode 100644
index 0000000000..d0038ae89b
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file lightWaterAlphaMaskNonIndexedF.glsl
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+uniform float maximum_alpha;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void default_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ if (color.a < minimum_alpha || color.a > maximum_alpha)
+ {
+ discard;
+ }
+
+ color.rgb = atmosLighting(color.rgb);
+
+ color = applyWaterFog(color);
+
+ gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
new file mode 100644
index 0000000000..8b0c25b705
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
@@ -0,0 +1,46 @@
+/**
+ * @file lightWaterF.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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform sampler2D diffuseMap;
+
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void default_lighting_water()
+{
+ vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
+
+ color.rgb = atmosLighting(color.rgb);
+
+ gl_FragColor = applyWaterFog(color);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
new file mode 100644
index 0000000000..254c1d4fc2
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
@@ -0,0 +1,33 @@
+/**
+ * @file fullbrightF.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$
+ */
+
+
+
+
+void main()
+{
+ fullbright_lighting();
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
new file mode 100644
index 0000000000..cb80697d15
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
@@ -0,0 +1,61 @@
+/**
+ * @file simpleNonIndexedV.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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+ //transform vertex
+ vec4 vert = vec4(position.xyz,1.0);
+
+ gl_Position = modelview_projection_matrix*vert;
+ vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+
+ vec4 pos = (modelview_matrix * vert);
+
+ vec3 norm = normalize(normal_matrix * normal);
+
+ calcAtmospherics(pos.xyz);
+
+ vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+ vertex_color = color;
+
+
+}
--
cgit v1.3
From 97a86da85e2a83441f17208091b4b3b9ce6f6337 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 19:42:34 -0500
Subject: SH-2416 Make automatic alpha mask detection on by default
---
indra/newview/app_settings/settings.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index cd5218c56d..1b781ec3d4 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8605,7 +8605,7 @@
Type
Boolean
Value
- 0
+ 1
RenderAutoMaskAlphaDeferred
--
cgit v1.3
From 754ce2be40ed53e8f925c21879305c9749adeb0d Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 20:20:56 -0500
Subject: SH-2477 Integrate Tofu's FXAA edge threshold tweaks
---
doc/contributions.txt | 1 +
indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl | 4 ++--
.../app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl | 4 ++--
3 files changed, 5 insertions(+), 4 deletions(-)
(limited to 'indra/newview')
diff --git a/doc/contributions.txt b/doc/contributions.txt
index bcdc5a63d2..01dd7a0735 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1097,6 +1097,7 @@ Tofu Buzzard
CTS-411
STORM-546
VWR-24509
+ SH-2477
Tony Kembia
Torben Trautman
TouchaHoney Perhaps
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index fb574359ac..7588073a9c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -2217,8 +2217,8 @@ void main()
rcp_frame_opt, //fxaaConsoleRcpFrameOpt2
rcp_frame_opt2, //fxaaConsole360RcpFrameOpt2
0.75, //fxaaQualitySubpix
- 0.166, //fxaaQualityEdgeThreshold
- 0.0833, //fxaaQualityEdgeThresholdMin
+ 0.07, //fxaaQualityEdgeThreshold
+ 0.03, //fxaaQualityEdgeThresholdMin
8.0, //fxaaConsoleEdgeSharpness
0.125, //fxaaConsoleEdgeThreshold
0.05, //fxaaConsoleEdgeThresholdMin
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index 066dfba5d9..1f1057d8f7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -2102,8 +2102,8 @@ void main()
rcp_frame_opt, //fxaaConsoleRcpFrameOpt2
rcp_frame_opt2, //fxaaConsole360RcpFrameOpt2
0.75, //fxaaQualitySubpix
- 0.166, //fxaaQualityEdgeThreshold
- 0.0833, //fxaaQualityEdgeThresholdMin
+ 0.07, //fxaaQualityEdgeThreshold
+ 0.03, //fxaaQualityEdgeThresholdMin
8.0, //fxaaConsoleEdgeSharpness
0.125, //fxaaConsoleEdgeThreshold
0.05, //fxaaConsoleEdgeThresholdMin
--
cgit v1.3
From eadb745c593900ce50d3e081b365a073f21cb421 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 23:03:20 -0500
Subject: SH-2465 Move FXAA to its own pass independent of DoF (also removes
the need to reload shaders when toggling FSAA on and off)
---
.../shaders/class1/deferred/postDeferredF.glsl | 2099 +-------------------
.../class1/deferred/postDeferredNoDoFF.glsl | 2085 +------------------
indra/newview/llviewercontrol.cpp | 16 -
indra/newview/llviewershadermgr.cpp | 55 +-
indra/newview/llviewershadermgr.h | 1 +
indra/newview/pipeline.cpp | 57 +-
6 files changed, 67 insertions(+), 4246 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index 7588073a9c..985f44fb6c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -29,2067 +29,11 @@
out vec4 gl_FragColor;
#endif
-#define FXAA_PC 1
-//#define FXAA_GLSL_130 1
-#define FXAA_QUALITY__PRESET 12
-
-/*============================================================================
-
-
- NVIDIA FXAA 3.11 by TIMOTHY LOTTES
-
-
-------------------------------------------------------------------------------
-COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
-------------------------------------------------------------------------------
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
-*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
-OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
-CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
-LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
-OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
-THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-------------------------------------------------------------------------------
- INTEGRATION CHECKLIST
-------------------------------------------------------------------------------
-(1.)
-In the shader source, setup defines for the desired configuration.
-When providing multiple shaders (for different presets),
-simply setup the defines differently in multiple files.
-Example,
-
- #define FXAA_PC 1
- #define FXAA_HLSL_5 1
- #define FXAA_QUALITY__PRESET 12
-
-Or,
-
- #define FXAA_360 1
-
-Or,
-
- #define FXAA_PS3 1
-
-Etc.
-
-(2.)
-Then include this file,
-
- #include "Fxaa3_11.h"
-
-(3.)
-Then call the FXAA pixel shader from within your desired shader.
-Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
-As for FXAA 3.11 all inputs for all shaders are the same
-to enable easy porting between platforms.
-
- return FxaaPixelShader(...);
-
-(4.)
-Insure pass prior to FXAA outputs RGBL (see next section).
-Or use,
-
- #define FXAA_GREEN_AS_LUMA 1
-
-(5.)
-Setup engine to provide the following constants
-which are used in the FxaaPixelShader() inputs,
-
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-
-Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
-
-(6.)
-Have FXAA vertex shader run as a full screen triangle,
-and output "pos" and "fxaaConsolePosPos"
-such that inputs in the pixel shader provide,
-
- // {xy} = center of pixel
- FxaaFloat2 pos,
-
- // {xy__} = upper left of pixel
- // {__zw} = lower right of pixel
- FxaaFloat4 fxaaConsolePosPos,
-
-(7.)
-Insure the texture sampler(s) used by FXAA are set to bilinear filtering.
-
-
-------------------------------------------------------------------------------
- INTEGRATION - RGBL AND COLORSPACE
-------------------------------------------------------------------------------
-FXAA3 requires RGBL as input unless the following is set,
-
- #define FXAA_GREEN_AS_LUMA 1
-
-In which case the engine uses green in place of luma,
-and requires RGB input is in a non-linear colorspace.
-
-RGB should be LDR (low dynamic range).
-Specifically do FXAA after tonemapping.
-
-RGB data as returned by a texture fetch can be non-linear,
-or linear when FXAA_GREEN_AS_LUMA is not set.
-Note an "sRGB format" texture counts as linear,
-because the result of a texture fetch is linear data.
-Regular "RGBA8" textures in the sRGB colorspace are non-linear.
-
-If FXAA_GREEN_AS_LUMA is not set,
-luma must be stored in the alpha channel prior to running FXAA.
-This luma should be in a perceptual space (could be gamma 2.0).
-Example pass before FXAA where output is gamma 2.0 encoded,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- color.rgb = sqrt(color.rgb); // gamma 2.0 color output
- return color;
-
-To use FXAA,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- color.rgb = sqrt(color.rgb); // gamma 2.0 color output
- color.a = dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114)); // compute luma
- return color;
-
-Another example where output is linear encoded,
-say for instance writing to an sRGB formated render target,
-where the render target does the conversion back to sRGB after blending,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- return color;
-
-To use FXAA,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- color.a = sqrt(dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114))); // compute luma
- return color;
-
-Getting luma correct is required for the algorithm to work correctly.
-
-
-------------------------------------------------------------------------------
- BEING LINEARLY CORRECT?
-------------------------------------------------------------------------------
-Applying FXAA to a framebuffer with linear RGB color will look worse.
-This is very counter intuitive, but happends to be true in this case.
-The reason is because dithering artifacts will be more visiable
-in a linear colorspace.
-
-
-------------------------------------------------------------------------------
- COMPLEX INTEGRATION
-------------------------------------------------------------------------------
-Q. What if the engine is blending into RGB before wanting to run FXAA?
-
-A. In the last opaque pass prior to FXAA,
- have the pass write out luma into alpha.
- Then blend into RGB only.
- FXAA should be able to run ok
- assuming the blending pass did not any add aliasing.
- This should be the common case for particles and common blending passes.
-
-A. Or use FXAA_GREEN_AS_LUMA.
-
-============================================================================*/
-
-/*============================================================================
-
- INTEGRATION KNOBS
-
-============================================================================*/
-//
-// FXAA_PS3 and FXAA_360 choose the console algorithm (FXAA3 CONSOLE).
-// FXAA_360_OPT is a prototype for the new optimized 360 version.
-//
-// 1 = Use API.
-// 0 = Don't use API.
-//
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_PS3
- #define FXAA_PS3 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_360
- #define FXAA_360 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_360_OPT
- #define FXAA_360_OPT 0
-#endif
-/*==========================================================================*/
-#ifndef FXAA_PC
- //
- // FXAA Quality
- // The high quality PC algorithm.
- //
- #define FXAA_PC 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_PC_CONSOLE
- //
- // The console algorithm for PC is included
- // for developers targeting really low spec machines.
- // Likely better to just run FXAA_PC, and use a really low preset.
- //
- #define FXAA_PC_CONSOLE 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_GLSL_120
- #define FXAA_GLSL_120 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_GLSL_130
- #define FXAA_GLSL_130 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_HLSL_3
- #define FXAA_HLSL_3 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_HLSL_4
- #define FXAA_HLSL_4 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_HLSL_5
- #define FXAA_HLSL_5 0
-#endif
-/*==========================================================================*/
-#ifndef FXAA_GREEN_AS_LUMA
- //
- // For those using non-linear color,
- // and either not able to get luma in alpha, or not wanting to,
- // this enables FXAA to run using green as a proxy for luma.
- // So with this enabled, no need to pack luma in alpha.
- //
- // This will turn off AA on anything which lacks some amount of green.
- // Pure red and blue or combination of only R and B, will get no AA.
- //
- // Might want to lower the settings for both,
- // fxaaConsoleEdgeThresholdMin
- // fxaaQualityEdgeThresholdMin
- // In order to insure AA does not get turned off on colors
- // which contain a minor amount of green.
- //
- // 1 = On.
- // 0 = Off.
- //
- #define FXAA_GREEN_AS_LUMA 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_EARLY_EXIT
- //
- // Controls algorithm's early exit path.
- // On PS3 turning this ON adds 2 cycles to the shader.
- // On 360 turning this OFF adds 10ths of a millisecond to the shader.
- // Turning this off on console will result in a more blurry image.
- // So this defaults to on.
- //
- // 1 = On.
- // 0 = Off.
- //
- #define FXAA_EARLY_EXIT 1
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_DISCARD
- //
- // Only valid for PC OpenGL currently.
- // Probably will not work when FXAA_GREEN_AS_LUMA = 1.
- //
- // 1 = Use discard on pixels which don't need AA.
- // For APIs which enable concurrent TEX+ROP from same surface.
- // 0 = Return unchanged color on pixels which don't need AA.
- //
- #define FXAA_DISCARD 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_FAST_PIXEL_OFFSET
- //
- // Used for GLSL 120 only.
- //
- // 1 = GL API supports fast pixel offsets
- // 0 = do not use fast pixel offsets
- //
- #ifdef GL_EXT_gpu_shader4
- #define FXAA_FAST_PIXEL_OFFSET 1
- #endif
- #ifdef GL_NV_gpu_shader5
- #define FXAA_FAST_PIXEL_OFFSET 1
- #endif
- #ifdef GL_ARB_gpu_shader5
- #define FXAA_FAST_PIXEL_OFFSET 1
- #endif
- #ifndef FXAA_FAST_PIXEL_OFFSET
- #define FXAA_FAST_PIXEL_OFFSET 0
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_GATHER4_ALPHA
- //
- // 1 = API supports gather4 on alpha channel.
- // 0 = API does not support gather4 on alpha channel.
- //
- #if (FXAA_HLSL_5 == 1)
- #define FXAA_GATHER4_ALPHA 1
- #endif
- #ifdef GL_ARB_gpu_shader5
- #define FXAA_GATHER4_ALPHA 1
- #endif
- #ifdef GL_NV_gpu_shader5
- #define FXAA_GATHER4_ALPHA 1
- #endif
- #ifndef FXAA_GATHER4_ALPHA
- #define FXAA_GATHER4_ALPHA 0
- #endif
-#endif
-
-/*============================================================================
- FXAA CONSOLE PS3 - TUNING KNOBS
-============================================================================*/
-#ifndef FXAA_CONSOLE__PS3_EDGE_SHARPNESS
- //
- // Consoles the sharpness of edges on PS3 only.
- // Non-PS3 tuning is done with shader input.
- //
- // Due to the PS3 being ALU bound,
- // there are only two safe values here: 4 and 8.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- //
- // 8.0 is sharper
- // 4.0 is softer
- // 2.0 is really soft (good for vector graphics inputs)
- //
- #if 1
- #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 8.0
- #endif
- #if 0
- #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 4.0
- #endif
- #if 0
- #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 2.0
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_CONSOLE__PS3_EDGE_THRESHOLD
- //
- // Only effects PS3.
- // Non-PS3 tuning is done with shader input.
- //
- // The minimum amount of local contrast required to apply algorithm.
- // The console setting has a different mapping than the quality setting.
- //
- // This only applies when FXAA_EARLY_EXIT is 1.
- //
- // Due to the PS3 being ALU bound,
- // there are only two safe values here: 0.25 and 0.125.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- //
- // 0.125 leaves less aliasing, but is softer
- // 0.25 leaves more aliasing, and is sharper
- //
- #if 1
- #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.125
- #else
- #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.25
- #endif
-#endif
-
-/*============================================================================
- FXAA QUALITY - TUNING KNOBS
-------------------------------------------------------------------------------
-NOTE the other tuning knobs are now in the shader function inputs!
-============================================================================*/
-#ifndef FXAA_QUALITY__PRESET
- //
- // Choose the quality preset.
- // This needs to be compiled into the shader as it effects code.
- // Best option to include multiple presets is to
- // in each shader define the preset, then include this file.
- //
- // OPTIONS
- // -----------------------------------------------------------------------
- // 10 to 15 - default medium dither (10=fastest, 15=highest quality)
- // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
- // 39 - no dither, very expensive
- //
- // NOTES
- // -----------------------------------------------------------------------
- // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
- // 13 = about same speed as FXAA 3.9 and better than 12
- // 23 = closest to FXAA 3.9 visually and performance wise
- // _ = the lowest digit is directly related to performance
- // _ = the highest digit is directly related to style
- //
- #define FXAA_QUALITY__PRESET 12
-#endif
-
-
-/*============================================================================
-
- FXAA QUALITY - PRESETS
-
-============================================================================*/
-
-/*============================================================================
- FXAA QUALITY - MEDIUM DITHER PRESETS
-============================================================================*/
-#if (FXAA_QUALITY__PRESET == 10)
- #define FXAA_QUALITY__PS 3
- #define FXAA_QUALITY__P0 1.5
- #define FXAA_QUALITY__P1 3.0
- #define FXAA_QUALITY__P2 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 11)
- #define FXAA_QUALITY__PS 4
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 3.0
- #define FXAA_QUALITY__P3 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 12)
- #define FXAA_QUALITY__PS 5
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 4.0
- #define FXAA_QUALITY__P4 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 13)
- #define FXAA_QUALITY__PS 6
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 4.0
- #define FXAA_QUALITY__P5 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 14)
- #define FXAA_QUALITY__PS 7
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 4.0
- #define FXAA_QUALITY__P6 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 15)
- #define FXAA_QUALITY__PS 8
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 4.0
- #define FXAA_QUALITY__P7 12.0
-#endif
-
-/*============================================================================
- FXAA QUALITY - LOW DITHER PRESETS
-============================================================================*/
-#if (FXAA_QUALITY__PRESET == 20)
- #define FXAA_QUALITY__PS 3
- #define FXAA_QUALITY__P0 1.5
- #define FXAA_QUALITY__P1 2.0
- #define FXAA_QUALITY__P2 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 21)
- #define FXAA_QUALITY__PS 4
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 22)
- #define FXAA_QUALITY__PS 5
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 23)
- #define FXAA_QUALITY__PS 6
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 24)
- #define FXAA_QUALITY__PS 7
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 3.0
- #define FXAA_QUALITY__P6 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 25)
- #define FXAA_QUALITY__PS 8
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 4.0
- #define FXAA_QUALITY__P7 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 26)
- #define FXAA_QUALITY__PS 9
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 4.0
- #define FXAA_QUALITY__P8 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 27)
- #define FXAA_QUALITY__PS 10
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 4.0
- #define FXAA_QUALITY__P9 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 28)
- #define FXAA_QUALITY__PS 11
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 2.0
- #define FXAA_QUALITY__P9 4.0
- #define FXAA_QUALITY__P10 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 29)
- #define FXAA_QUALITY__PS 12
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 2.0
- #define FXAA_QUALITY__P9 2.0
- #define FXAA_QUALITY__P10 4.0
- #define FXAA_QUALITY__P11 8.0
-#endif
-
-/*============================================================================
- FXAA QUALITY - EXTREME QUALITY
-============================================================================*/
-#if (FXAA_QUALITY__PRESET == 39)
- #define FXAA_QUALITY__PS 12
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.0
- #define FXAA_QUALITY__P2 1.0
- #define FXAA_QUALITY__P3 1.0
- #define FXAA_QUALITY__P4 1.0
- #define FXAA_QUALITY__P5 1.5
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 2.0
- #define FXAA_QUALITY__P9 2.0
- #define FXAA_QUALITY__P10 4.0
- #define FXAA_QUALITY__P11 8.0
-#endif
-
-
-
-/*============================================================================
-
- API PORTING
-
-============================================================================*/
-#if (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)
- #define FxaaBool bool
- #define FxaaDiscard discard
- #define FxaaFloat float
- #define FxaaFloat2 vec2
- #define FxaaFloat3 vec3
- #define FxaaFloat4 vec4
- #define FxaaHalf float
- #define FxaaHalf2 vec2
- #define FxaaHalf3 vec3
- #define FxaaHalf4 vec4
- #define FxaaInt2 ivec2
- #define FxaaSat(x) clamp(x, 0.0, 1.0)
- #define FxaaTex sampler2D
-#else
- #define FxaaBool bool
- #define FxaaDiscard clip(-1)
- #define FxaaFloat float
- #define FxaaFloat2 float2
- #define FxaaFloat3 float3
- #define FxaaFloat4 float4
- #define FxaaHalf half
- #define FxaaHalf2 half2
- #define FxaaHalf3 half3
- #define FxaaHalf4 half4
- #define FxaaSat(x) saturate(x)
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_GLSL_120 == 1)
- // Requires,
- // #version 120
- // And at least,
- // #extension GL_EXT_gpu_shader4 : enable
- // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)
- #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
- #if (FXAA_FAST_PIXEL_OFFSET == 1)
- #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
- #else
- #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
- #endif
- #if (FXAA_GATHER4_ALPHA == 1)
- // use #extension GL_ARB_gpu_shader5 : enable
- #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
- #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
- #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
- #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_GLSL_130 == 1)
- // Requires "#version 130" or better
- #define FxaaTexTop(t, p) textureLod(t, p, 0.0)
- #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
- #if (FXAA_GATHER4_ALPHA == 1)
- // use #extension GL_ARB_gpu_shader5 : enable
- #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
- #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
- #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
- #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_HLSL_3 == 1) || (FXAA_360 == 1) || (FXAA_PS3 == 1)
- #define FxaaInt2 float2
- #define FxaaTex sampler2D
- #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))
- #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_HLSL_4 == 1)
- #define FxaaInt2 int2
- struct FxaaTex { SamplerState smpl; Texture2D tex; };
- #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
- #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_HLSL_5 == 1)
- #define FxaaInt2 int2
- struct FxaaTex { SamplerState smpl; Texture2D tex; };
- #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
- #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
- #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)
- #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)
- #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)
- #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)
-#endif
-
-
-/*============================================================================
- GREEN AS LUMA OPTION SUPPORT FUNCTION
-============================================================================*/
-#if (FXAA_GREEN_AS_LUMA == 0)
- FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }
-#else
- FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
-#endif
-
-
-
-
-/*============================================================================
-
- FXAA3 QUALITY - PC
-
-============================================================================*/
-#if (FXAA_PC == 1)
-/*--------------------------------------------------------------------------*/
-FxaaFloat4 FxaaPixelShader(
- //
- // Use noperspective interpolation here (turn off perspective interpolation).
- // {xy} = center of pixel
- FxaaFloat2 pos,
- //
- // Used only for FXAA Console, and not used on the 360 version.
- // Use noperspective interpolation here (turn off perspective interpolation).
- // {xy__} = upper left of pixel
- // {__zw} = lower right of pixel
- FxaaFloat4 fxaaConsolePosPos,
- //
- // Input color texture.
- // {rgb_} = color in linear or perceptual color space
- // if (FXAA_GREEN_AS_LUMA == 0)
- // {___a} = luma in perceptual color space (not linear)
- FxaaTex tex,
- //
- // Only used on the optimized 360 version of FXAA Console.
- // For everything but 360, just use the same input here as for "tex".
- // For 360, same texture, just alias with a 2nd sampler.
- // This sampler needs to have an exponent bias of -1.
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- //
- // Only used on the optimized 360 version of FXAA Console.
- // For everything but 360, just use the same input here as for "tex".
- // For 360, same texture, just alias with a 3nd sampler.
- // This sampler needs to have an exponent bias of -2.
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- //
- // Only used on FXAA Quality.
- // This must be from a constant/uniform.
- // {x_} = 1.0/screenWidthInPixels
- // {_y} = 1.0/screenHeightInPixels
- FxaaFloat2 fxaaQualityRcpFrame,
- //
- // Only used on FXAA Console.
- // This must be from a constant/uniform.
- // This effects sub-pixel AA quality and inversely sharpness.
- // Where N ranges between,
- // N = 0.50 (default)
- // N = 0.33 (sharper)
- // {x___} = -N/screenWidthInPixels
- // {_y__} = -N/screenHeightInPixels
- // {__z_} = N/screenWidthInPixels
- // {___w} = N/screenHeightInPixels
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- //
- // Only used on FXAA Console.
- // Not used on 360, but used on PS3 and PC.
- // This must be from a constant/uniform.
- // {x___} = -2.0/screenWidthInPixels
- // {_y__} = -2.0/screenHeightInPixels
- // {__z_} = 2.0/screenWidthInPixels
- // {___w} = 2.0/screenHeightInPixels
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- //
- // Only used on FXAA Console.
- // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.
- // This must be from a constant/uniform.
- // {x___} = 8.0/screenWidthInPixels
- // {_y__} = 8.0/screenHeightInPixels
- // {__z_} = -4.0/screenWidthInPixels
- // {___w} = -4.0/screenHeightInPixels
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- //
- // Only used on FXAA Quality.
- // This used to be the FXAA_QUALITY__SUBPIX define.
- // It is here now to allow easier tuning.
- // Choose the amount of sub-pixel aliasing removal.
- // This can effect sharpness.
- // 1.00 - upper limit (softer)
- // 0.75 - default amount of filtering
- // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)
- // 0.25 - almost off
- // 0.00 - completely off
- FxaaFloat fxaaQualitySubpix,
- //
- // Only used on FXAA Quality.
- // This used to be the FXAA_QUALITY__EDGE_THRESHOLD define.
- // It is here now to allow easier tuning.
- // The minimum amount of local contrast required to apply algorithm.
- // 0.333 - too little (faster)
- // 0.250 - low quality
- // 0.166 - default
- // 0.125 - high quality
- // 0.063 - overkill (slower)
- FxaaFloat fxaaQualityEdgeThreshold,
- //
- // Only used on FXAA Quality.
- // This used to be the FXAA_QUALITY__EDGE_THRESHOLD_MIN define.
- // It is here now to allow easier tuning.
- // Trims the algorithm from processing darks.
- // 0.0833 - upper limit (default, the start of visible unfiltered edges)
- // 0.0625 - high quality (faster)
- // 0.0312 - visible limit (slower)
- // Special notes when using FXAA_GREEN_AS_LUMA,
- // Likely want to set this to zero.
- // As colors that are mostly not-green
- // will appear very dark in the green channel!
- // Tune by looking at mostly non-green content,
- // then start at zero and increase until aliasing is a problem.
- FxaaFloat fxaaQualityEdgeThresholdMin,
- //
- // Only used on FXAA Console.
- // This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
- // It is here now to allow easier tuning.
- // This does not effect PS3, as this needs to be compiled in.
- // Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
- // Due to the PS3 being ALU bound,
- // there are only three safe values here: 2 and 4 and 8.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- // For all other platforms can be a non-power of two.
- // 8.0 is sharper (default!!!)
- // 4.0 is softer
- // 2.0 is really soft (good only for vector graphics inputs)
- FxaaFloat fxaaConsoleEdgeSharpness,
- //
- // Only used on FXAA Console.
- // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
- // It is here now to allow easier tuning.
- // This does not effect PS3, as this needs to be compiled in.
- // Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
- // Due to the PS3 being ALU bound,
- // there are only two safe values here: 1/4 and 1/8.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- // The console setting has a different mapping than the quality setting.
- // Other platforms can use other values.
- // 0.125 leaves less aliasing, but is softer (default!!!)
- // 0.25 leaves more aliasing, and is sharper
- FxaaFloat fxaaConsoleEdgeThreshold,
- //
- // Only used on FXAA Console.
- // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
- // It is here now to allow easier tuning.
- // Trims the algorithm from processing darks.
- // The console setting has a different mapping than the quality setting.
- // This only applies when FXAA_EARLY_EXIT is 1.
- // This does not apply to PS3,
- // PS3 was simplified to avoid more shader instructions.
- // 0.06 - faster but more aliasing in darks
- // 0.05 - default
- // 0.04 - slower and less aliasing in darks
- // Special notes when using FXAA_GREEN_AS_LUMA,
- // Likely want to set this to zero.
- // As colors that are mostly not-green
- // will appear very dark in the green channel!
- // Tune by looking at mostly non-green content,
- // then start at zero and increase until aliasing is a problem.
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- //
- // Extra constants for 360 FXAA Console only.
- // Use zeros or anything else for other platforms.
- // These must be in physical constant registers and NOT immedates.
- // Immedates will result in compiler un-optimizing.
- // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 posM;
- posM.x = pos.x;
- posM.y = pos.y;
- #if (FXAA_GATHER4_ALPHA == 1)
- #if (FXAA_DISCARD == 0)
- FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
- #if (FXAA_GREEN_AS_LUMA == 0)
- #define lumaM rgbyM.w
- #else
- #define lumaM rgbyM.y
- #endif
- #endif
- #if (FXAA_GREEN_AS_LUMA == 0)
- FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);
- FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));
- #else
- FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);
- FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
- #endif
- #if (FXAA_DISCARD == 1)
- #define lumaM luma4A.w
- #endif
- #define lumaE luma4A.z
- #define lumaS luma4A.x
- #define lumaSE luma4A.y
- #define lumaNW luma4B.w
- #define lumaN luma4B.z
- #define lumaW luma4B.x
- #else
- FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
- #if (FXAA_GREEN_AS_LUMA == 0)
- #define lumaM rgbyM.w
- #else
- #define lumaM rgbyM.y
- #endif
- FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
- #endif
-/*--------------------------------------------------------------------------*/
- FxaaFloat maxSM = max(lumaS, lumaM);
- FxaaFloat minSM = min(lumaS, lumaM);
- FxaaFloat maxESM = max(lumaE, maxSM);
- FxaaFloat minESM = min(lumaE, minSM);
- FxaaFloat maxWN = max(lumaN, lumaW);
- FxaaFloat minWN = min(lumaN, lumaW);
- FxaaFloat rangeMax = max(maxWN, maxESM);
- FxaaFloat rangeMin = min(minWN, minESM);
- FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
- FxaaFloat range = rangeMax - rangeMin;
- FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
- FxaaBool earlyExit = range < rangeMaxClamped;
-/*--------------------------------------------------------------------------*/
- if(earlyExit)
- #if (FXAA_DISCARD == 1)
- FxaaDiscard;
- #else
- return rgbyM;
- #endif
-/*--------------------------------------------------------------------------*/
- #if (FXAA_GATHER4_ALPHA == 0)
- FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
- #else
- FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
- #endif
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNS = lumaN + lumaS;
- FxaaFloat lumaWE = lumaW + lumaE;
- FxaaFloat subpixRcpRange = 1.0/range;
- FxaaFloat subpixNSWE = lumaNS + lumaWE;
- FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
- FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNESE = lumaNE + lumaSE;
- FxaaFloat lumaNWNE = lumaNW + lumaNE;
- FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
- FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNWSW = lumaNW + lumaSW;
- FxaaFloat lumaSWSE = lumaSW + lumaSE;
- FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
- FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
- FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
- FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
- FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
- FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
-/*--------------------------------------------------------------------------*/
- FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
- FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
- FxaaBool horzSpan = edgeHorz >= edgeVert;
- FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
-/*--------------------------------------------------------------------------*/
- if(!horzSpan) lumaN = lumaW;
- if(!horzSpan) lumaS = lumaE;
- if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
- FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
-/*--------------------------------------------------------------------------*/
- FxaaFloat gradientN = lumaN - lumaM;
- FxaaFloat gradientS = lumaS - lumaM;
- FxaaFloat lumaNN = lumaN + lumaM;
- FxaaFloat lumaSS = lumaS + lumaM;
- FxaaBool pairN = abs(gradientN) >= abs(gradientS);
- FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
- if(pairN) lengthSign = -lengthSign;
- FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 posB;
- posB.x = posM.x;
- posB.y = posM.y;
- FxaaFloat2 offNP;
- offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
- offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
- if(!horzSpan) posB.x += lengthSign * 0.5;
- if( horzSpan) posB.y += lengthSign * 0.5;
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 posN;
- posN.x = posB.x - offNP.x * FXAA_QUALITY__P0;
- posN.y = posB.y - offNP.y * FXAA_QUALITY__P0;
- FxaaFloat2 posP;
- posP.x = posB.x + offNP.x * FXAA_QUALITY__P0;
- posP.y = posB.y + offNP.y * FXAA_QUALITY__P0;
- FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
- FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
- FxaaFloat subpixE = subpixC * subpixC;
- FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
-/*--------------------------------------------------------------------------*/
- if(!pairN) lumaNN = lumaSS;
- FxaaFloat gradientScaled = gradient * 1.0/4.0;
- FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
- FxaaFloat subpixF = subpixD * subpixE;
- FxaaBool lumaMLTZero = lumaMM < 0.0;
-/*--------------------------------------------------------------------------*/
- lumaEndN -= lumaNN * 0.5;
- lumaEndP -= lumaNN * 0.5;
- FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
- FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P1;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P1;
- FxaaBool doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P1;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P1;
-/*--------------------------------------------------------------------------*/
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P2;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P2;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P2;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P2;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 3)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P3;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P3;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P3;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P3;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 4)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P4;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P4;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P4;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P4;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 5)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P5;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P5;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P5;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P5;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 6)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P6;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P6;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P6;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P6;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 7)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P7;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P7;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P7;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P7;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 8)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P8;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P8;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P8;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P8;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 9)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P9;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P9;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P9;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P9;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 10)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P10;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P10;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P10;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P10;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 11)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P11;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P11;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P11;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P11;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 12)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P12;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P12;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P12;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P12;
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
-/*--------------------------------------------------------------------------*/
- FxaaFloat dstN = posM.x - posN.x;
- FxaaFloat dstP = posP.x - posM.x;
- if(!horzSpan) dstN = posM.y - posN.y;
- if(!horzSpan) dstP = posP.y - posM.y;
-/*--------------------------------------------------------------------------*/
- FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
- FxaaFloat spanLength = (dstP + dstN);
- FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
- FxaaFloat spanLengthRcp = 1.0/spanLength;
-/*--------------------------------------------------------------------------*/
- FxaaBool directionN = dstN < dstP;
- FxaaFloat dst = min(dstN, dstP);
- FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
- FxaaFloat subpixG = subpixF * subpixF;
- FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
- FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
-/*--------------------------------------------------------------------------*/
- FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
- FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
- if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
- if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
- #if (FXAA_DISCARD == 1)
- return FxaaTexTop(tex, posM);
- #else
- return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
- #endif
-}
-/*==========================================================================*/
-#endif
-
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - PC VERSION
-
-------------------------------------------------------------------------------
-Instead of using this on PC, I'd suggest just using FXAA Quality with
- #define FXAA_QUALITY__PRESET 10
-Or
- #define FXAA_QUALITY__PRESET 20
-Either are higher qualilty and almost as fast as this on modern PC GPUs.
-============================================================================*/
-#if (FXAA_PC_CONSOLE == 1)
-/*--------------------------------------------------------------------------*/
-FxaaFloat4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
- FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
- FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
- FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
-/*--------------------------------------------------------------------------*/
- FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
- #if (FXAA_GREEN_AS_LUMA == 0)
- FxaaFloat lumaM = rgbyM.w;
- #else
- FxaaFloat lumaM = rgbyM.y;
- #endif
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
- lumaNe += 1.0/384.0;
- FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
- FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
- FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMinM = min(lumaMin, lumaM);
- FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
- FxaaFloat lumaMaxM = max(lumaMax, lumaM);
- FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
- FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
- FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
- if(lumaMaxSubMinM < lumaMaxScaledClamped) return rgbyM;
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 dir;
- dir.x = dirSwMinusNe + dirSeMinusNw;
- dir.y = dirSwMinusNe - dirSeMinusNw;
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 dir1 = normalize(dir.xy);
- FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
- FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
- FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
-/*--------------------------------------------------------------------------*/
- FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2 * fxaaConsoleRcpFrameOpt2.zw);
- FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2 * fxaaConsoleRcpFrameOpt2.zw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
- FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
-/*--------------------------------------------------------------------------*/
- #if (FXAA_GREEN_AS_LUMA == 0)
- FxaaBool twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);
- #else
- FxaaBool twoTap = (rgbyB.y < lumaMin) || (rgbyB.y > lumaMax);
- #endif
- if(twoTap) rgbyB.xyz = rgbyA.xyz * 0.5;
- return rgbyB; }
-/*==========================================================================*/
-#endif
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - 360 PIXEL SHADER
-
-------------------------------------------------------------------------------
-This optimized version thanks to suggestions from Andy Luedke.
-Should be fully tex bound in all cases.
-As of the FXAA 3.11 release, I have still not tested this code,
-however I fixed a bug which was in both FXAA 3.9 and FXAA 3.10.
-And note this is replacing the old unoptimized version.
-If it does not work, please let me know so I can fix it.
-============================================================================*/
-#if (FXAA_360 == 1)
-/*--------------------------------------------------------------------------*/
-[reduceTempRegUsage(4)]
-float4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
- float4 lumaNwNeSwSe;
- #if (FXAA_GREEN_AS_LUMA == 0)
- asm {
- tfetch2D lumaNwNeSwSe.w___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe._w__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.__w_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.___w, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
- };
- #else
- asm {
- tfetch2D lumaNwNeSwSe.y___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe._y__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.__y_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.___y, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
- };
- #endif
-/*--------------------------------------------------------------------------*/
- lumaNwNeSwSe.y += 1.0/384.0;
- float2 lumaMinTemp = min(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
- float2 lumaMaxTemp = max(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
- float lumaMin = min(lumaMinTemp.x, lumaMinTemp.y);
- float lumaMax = max(lumaMaxTemp.x, lumaMaxTemp.y);
-/*--------------------------------------------------------------------------*/
- float4 rgbyM = tex2Dlod(tex, float4(pos.xy, 0.0, 0.0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- float lumaMinM = min(lumaMin, rgbyM.w);
- float lumaMaxM = max(lumaMax, rgbyM.w);
- #else
- float lumaMinM = min(lumaMin, rgbyM.y);
- float lumaMaxM = max(lumaMax, rgbyM.y);
- #endif
- if((lumaMaxM - lumaMinM) < max(fxaaConsoleEdgeThresholdMin, lumaMax * fxaaConsoleEdgeThreshold)) return rgbyM;
-/*--------------------------------------------------------------------------*/
- float2 dir;
- dir.x = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.yyxx);
- dir.y = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.xyxy);
- dir = normalize(dir);
-/*--------------------------------------------------------------------------*/
- float4 dir1 = dir.xyxy * fxaaConsoleRcpFrameOpt.xyzw;
-/*--------------------------------------------------------------------------*/
- float4 dir2;
- float dirAbsMinTimesC = min(abs(dir.x), abs(dir.y)) * fxaaConsoleEdgeSharpness;
- dir2 = saturate(fxaaConsole360ConstDir.zzww * dir.xyxy / dirAbsMinTimesC + 0.5);
- dir2 = dir2 * fxaaConsole360RcpFrameOpt2.xyxy + fxaaConsole360RcpFrameOpt2.zwzw;
-/*--------------------------------------------------------------------------*/
- float4 rgbyN1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.xy, 0.0, 0.0));
- float4 rgbyP1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.zw, 0.0, 0.0));
- float4 rgbyN2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.xy, 0.0, 0.0));
- float4 rgbyP2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.zw, 0.0, 0.0));
-/*--------------------------------------------------------------------------*/
- float4 rgbyA = rgbyN1 + rgbyP1;
- float4 rgbyB = rgbyN2 + rgbyP2 * 0.5 + rgbyA;
-/*--------------------------------------------------------------------------*/
- float4 rgbyR = ((rgbyB.w - lumaMax) > 0.0) ? rgbyA : rgbyB;
- rgbyR = ((rgbyB.w - lumaMin) > 0.0) ? rgbyR : rgbyA;
- return rgbyR; }
-/*==========================================================================*/
-#endif
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (NO EARLY EXIT)
-
-==============================================================================
-The code below does not exactly match the assembly.
-I have a feeling that 12 cycles is possible, but was not able to get there.
-Might have to increase register count to get full performance.
-Note this shader does not use perspective interpolation.
-
-Use the following cgc options,
-
- --fenable-bx2 --fastmath --fastprecision --nofloatbindings
-
-------------------------------------------------------------------------------
- NVSHADERPERF OUTPUT
-------------------------------------------------------------------------------
-For reference and to aid in debug, output of NVShaderPerf should match this,
-
-Shader to schedule:
- 0: texpkb h0.w(TRUE), v5.zyxx, #0
- 2: addh h2.z(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
- 4: texpkb h0.w(TRUE), v5.xwxx, #0
- 6: addh h0.z(TRUE), -h2, h0.w
- 7: texpkb h1.w(TRUE), v5, #0
- 9: addh h0.x(TRUE), h0.z, -h1.w
- 10: addh h3.w(TRUE), h0.z, h1
- 11: texpkb h2.w(TRUE), v5.zwzz, #0
- 13: addh h0.z(TRUE), h3.w, -h2.w
- 14: addh h0.x(TRUE), h2.w, h0
- 15: nrmh h1.xz(TRUE), h0_n
- 16: minh_m8 h0.x(TRUE), |h1|, |h1.z|
- 17: maxh h4.w(TRUE), h0, h1
- 18: divx h2.xy(TRUE), h1_n.xzzw, h0_n
- 19: movr r1.zw(TRUE), v4.xxxy
- 20: madr r2.xz(TRUE), -h1, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zzww, r1.zzww
- 22: minh h5.w(TRUE), h0, h1
- 23: texpkb h0(TRUE), r2.xzxx, #0
- 25: madr r0.zw(TRUE), h1.xzxz, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w), r1
- 27: maxh h4.x(TRUE), h2.z, h2.w
- 28: texpkb h1(TRUE), r0.zwzz, #0
- 30: addh_d2 h1(TRUE), h0, h1
- 31: madr r0.xy(TRUE), -h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 33: texpkb h0(TRUE), r0, #0
- 35: minh h4.z(TRUE), h2, h2.w
- 36: fenct TRUE
- 37: madr r1.xy(TRUE), h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 39: texpkb h2(TRUE), r1, #0
- 41: addh_d2 h0(TRUE), h0, h2
- 42: maxh h2.w(TRUE), h4, h4.x
- 43: minh h2.x(TRUE), h5.w, h4.z
- 44: addh_d2 h0(TRUE), h0, h1
- 45: slth h2.x(TRUE), h0.w, h2
- 46: sgth h2.w(TRUE), h0, h2
- 47: movh h0(TRUE), h0
- 48: addx.c0 rc(TRUE), h2, h2.w
- 49: movh h0(c0.NE.x), h1
-
-IPU0 ------ Simplified schedule: --------
-Pass | Unit | uOp | PC: Op
------+--------+------+-------------------------
- 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | SCB1 | add | 2: ADDh h2.z, h0.--w-, const.--x-;
- | | |
- 2 | SCT0/1 | mov | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | TEX | txl | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | SCB1 | add | 6: ADDh h0.z,-h2, h0.--w-;
- | | |
- 3 | SCT0/1 | mov | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
- | TEX | txl | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
- | SCB0 | add | 9: ADDh h0.x, h0.z---,-h1.w---;
- | SCB1 | add | 10: ADDh h3.w, h0.---z, h1;
- | | |
- 4 | SCT0/1 | mov | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | TEX | txl | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | SCB0 | add | 14: ADDh h0.x, h2.w---, h0;
- | SCB1 | add | 13: ADDh h0.z, h3.--w-,-h2.--w-;
- | | |
- 5 | SCT1 | mov | 15: NRMh h1.xz, h0;
- | SRB | nrm | 15: NRMh h1.xz, h0;
- | SCB0 | min | 16: MINh*8 h0.x, |h1|, |h1.z---|;
- | SCB1 | max | 17: MAXh h4.w, h0, h1;
- | | |
- 6 | SCT0 | div | 18: DIVx h2.xy, h1.xz--, h0;
- | SCT1 | mov | 19: MOVr r1.zw, g[TEX0].--xy;
- | SCB0 | mad | 20: MADr r2.xz,-h1, const.z-w-, r1.z-w-;
- | SCB1 | min | 22: MINh h5.w, h0, h1;
- | | |
- 7 | SCT0/1 | mov | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
- | TEX | txl | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
- | SCB0 | max | 27: MAXh h4.x, h2.z---, h2.w---;
- | SCB1 | mad | 25: MADr r0.zw, h1.--xz, const, r1;
- | | |
- 8 | SCT0/1 | mov | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
- | TEX | txl | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
- | SCB0/1 | add | 30: ADDh/2 h1, h0, h1;
- | | |
- 9 | SCT0 | mad | 31: MADr r0.xy,-h2, const.xy--, r1.zw--;
- | SCT1 | mov | 33: TXLr h0, r0, const.zzzz, TEX0;
- | TEX | txl | 33: TXLr h0, r0, const.zzzz, TEX0;
- | SCB1 | min | 35: MINh h4.z, h2, h2.--w-;
- | | |
- 10 | SCT0 | mad | 37: MADr r1.xy, h2, const.xy--, r1.zw--;
- | SCT1 | mov | 39: TXLr h2, r1, const.zzzz, TEX0;
- | TEX | txl | 39: TXLr h2, r1, const.zzzz, TEX0;
- | SCB0/1 | add | 41: ADDh/2 h0, h0, h2;
- | | |
- 11 | SCT0 | min | 43: MINh h2.x, h5.w---, h4.z---;
- | SCT1 | max | 42: MAXh h2.w, h4, h4.---x;
- | SCB0/1 | add | 44: ADDh/2 h0, h0, h1;
- | | |
- 12 | SCT0 | set | 45: SLTh h2.x, h0.w---, h2;
- | SCT1 | set | 46: SGTh h2.w, h0, h2;
- | SCB0/1 | mul | 47: MOVh h0, h0;
- | | |
- 13 | SCT0 | mad | 48: ADDxc0_s rc, h2, h2.w---;
- | SCB0/1 | mul | 49: MOVh h0(NE0.xxxx), h1;
-
-Pass SCT TEX SCB
- 1: 0% 100% 25%
- 2: 0% 100% 25%
- 3: 0% 100% 50%
- 4: 0% 100% 50%
- 5: 0% 0% 50%
- 6: 100% 0% 75%
- 7: 0% 100% 75%
- 8: 0% 100% 100%
- 9: 0% 100% 25%
- 10: 0% 100% 100%
- 11: 50% 0% 100%
- 12: 50% 0% 100%
- 13: 25% 0% 100%
-
-MEAN: 17% 61% 67%
-
-Pass SCT0 SCT1 TEX SCB0 SCB1
- 1: 0% 0% 100% 0% 100%
- 2: 0% 0% 100% 0% 100%
- 3: 0% 0% 100% 100% 100%
- 4: 0% 0% 100% 100% 100%
- 5: 0% 0% 0% 100% 100%
- 6: 100% 100% 0% 100% 100%
- 7: 0% 0% 100% 100% 100%
- 8: 0% 0% 100% 100% 100%
- 9: 0% 0% 100% 0% 100%
- 10: 0% 0% 100% 100% 100%
- 11: 100% 100% 0% 100% 100%
- 12: 100% 100% 0% 100% 100%
- 13: 100% 0% 0% 100% 100%
-
-MEAN: 30% 23% 61% 76% 100%
-Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
-Results 13 cycles, 3 r regs, 923,076,923 pixels/s
-============================================================================*/
-#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 0)
-/*--------------------------------------------------------------------------*/
-#pragma regcount 7
-#pragma disablepc all
-#pragma option O3
-#pragma option OutColorPrec=fp16
-#pragma texformat default RGBA8
-/*==========================================================================*/
-half4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
-// (1)
- half4 dir;
- half4 lumaNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- lumaNe.w += half(1.0/512.0);
- dir.x = -lumaNe.w;
- dir.z = -lumaNe.w;
- #else
- lumaNe.y += half(1.0/512.0);
- dir.x = -lumaNe.y;
- dir.z = -lumaNe.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (2)
- half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x += lumaSw.w;
- dir.z += lumaSw.w;
- #else
- dir.x += lumaSw.y;
- dir.z += lumaSw.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (3)
- half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x -= lumaNw.w;
- dir.z += lumaNw.w;
- #else
- dir.x -= lumaNw.y;
- dir.z += lumaNw.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (4)
- half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x += lumaSe.w;
- dir.z -= lumaSe.w;
- #else
- dir.x += lumaSe.y;
- dir.z -= lumaSe.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (5)
- half4 dir1_pos;
- dir1_pos.xy = normalize(dir.xyz).xz;
- half dirAbsMinTimesC = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
-/*--------------------------------------------------------------------------*/
-// (6)
- half4 dir2_pos;
- dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimesC, half(-2.0), half(2.0));
- dir1_pos.zw = pos.xy;
- dir2_pos.zw = pos.xy;
- half4 temp1N;
- temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
-/*--------------------------------------------------------------------------*/
-// (7)
- temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
- half4 rgby1;
- rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
-/*--------------------------------------------------------------------------*/
-// (8)
- rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
- rgby1 = (temp1N + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (9)
- half4 temp2N;
- temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
-/*--------------------------------------------------------------------------*/
-// (10)
- half4 rgby2;
- rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
- rgby2 = (temp2N + rgby2) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (11)
- // compilier moves these scalar ops up to other cycles
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMin = min(min(lumaNw.w, lumaSw.w), min(lumaNe.w, lumaSe.w));
- half lumaMax = max(max(lumaNw.w, lumaSw.w), max(lumaNe.w, lumaSe.w));
- #else
- half lumaMin = min(min(lumaNw.y, lumaSw.y), min(lumaNe.y, lumaSe.y));
- half lumaMax = max(max(lumaNw.y, lumaSw.y), max(lumaNe.y, lumaSe.y));
- #endif
- rgby2 = (rgby2 + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (12)
- #if (FXAA_GREEN_AS_LUMA == 0)
- bool twoTapLt = rgby2.w < lumaMin;
- bool twoTapGt = rgby2.w > lumaMax;
- #else
- bool twoTapLt = rgby2.y < lumaMin;
- bool twoTapGt = rgby2.y > lumaMax;
- #endif
-/*--------------------------------------------------------------------------*/
-// (13)
- if(twoTapLt || twoTapGt) rgby2 = rgby1;
-/*--------------------------------------------------------------------------*/
- return rgby2; }
-/*==========================================================================*/
-#endif
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (WITH EARLY EXIT)
-
-==============================================================================
-The code mostly matches the assembly.
-I have a feeling that 14 cycles is possible, but was not able to get there.
-Might have to increase register count to get full performance.
-Note this shader does not use perspective interpolation.
-
-Use the following cgc options,
-
- --fenable-bx2 --fastmath --fastprecision --nofloatbindings
-
-Use of FXAA_GREEN_AS_LUMA currently adds a cycle (16 clks).
-Will look at fixing this for FXAA 3.12.
-------------------------------------------------------------------------------
- NVSHADERPERF OUTPUT
-------------------------------------------------------------------------------
-For reference and to aid in debug, output of NVShaderPerf should match this,
-
-Shader to schedule:
- 0: texpkb h0.w(TRUE), v5.zyxx, #0
- 2: addh h2.y(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
- 4: texpkb h1.w(TRUE), v5.xwxx, #0
- 6: addh h0.x(TRUE), h1.w, -h2.y
- 7: texpkb h2.w(TRUE), v5.zwzz, #0
- 9: minh h4.w(TRUE), h2.y, h2
- 10: maxh h5.x(TRUE), h2.y, h2.w
- 11: texpkb h0.w(TRUE), v5, #0
- 13: addh h3.w(TRUE), -h0, h0.x
- 14: addh h0.x(TRUE), h0.w, h0
- 15: addh h0.z(TRUE), -h2.w, h0.x
- 16: addh h0.x(TRUE), h2.w, h3.w
- 17: minh h5.y(TRUE), h0.w, h1.w
- 18: nrmh h2.xz(TRUE), h0_n
- 19: minh_m8 h2.w(TRUE), |h2.x|, |h2.z|
- 20: divx h4.xy(TRUE), h2_n.xzzw, h2_n.w
- 21: movr r1.zw(TRUE), v4.xxxy
- 22: maxh h2.w(TRUE), h0, h1
- 23: fenct TRUE
- 24: madr r0.xy(TRUE), -h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
- 26: texpkb h0(TRUE), r0, #0
- 28: maxh h5.x(TRUE), h2.w, h5
- 29: minh h5.w(TRUE), h5.y, h4
- 30: madr r1.xy(TRUE), h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
- 32: texpkb h2(TRUE), r1, #0
- 34: addh_d2 h2(TRUE), h0, h2
- 35: texpkb h1(TRUE), v4, #0
- 37: maxh h5.y(TRUE), h5.x, h1.w
- 38: minh h4.w(TRUE), h1, h5
- 39: madr r0.xy(TRUE), -h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 41: texpkb h0(TRUE), r0, #0
- 43: addh_m8 h5.z(TRUE), h5.y, -h4.w
- 44: madr r2.xy(TRUE), h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 46: texpkb h3(TRUE), r2, #0
- 48: addh_d2 h0(TRUE), h0, h3
- 49: addh_d2 h3(TRUE), h0, h2
- 50: movh h0(TRUE), h3
- 51: slth h3.x(TRUE), h3.w, h5.w
- 52: sgth h3.w(TRUE), h3, h5.x
- 53: addx.c0 rc(TRUE), h3.x, h3
- 54: slth.c0 rc(TRUE), h5.z, h5
- 55: movh h0(c0.NE.w), h2
- 56: movh h0(c0.NE.x), h1
-
-IPU0 ------ Simplified schedule: --------
-Pass | Unit | uOp | PC: Op
------+--------+------+-------------------------
- 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | SCB0 | add | 2: ADDh h2.y, h0.-w--, const.-x--;
- | | |
- 2 | SCT0/1 | mov | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | TEX | txl | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | SCB0 | add | 6: ADDh h0.x, h1.w---,-h2.y---;
- | | |
- 3 | SCT0/1 | mov | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | TEX | txl | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | SCB0 | max | 10: MAXh h5.x, h2.y---, h2.w---;
- | SCB1 | min | 9: MINh h4.w, h2.---y, h2;
- | | |
- 4 | SCT0/1 | mov | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
- | TEX | txl | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
- | SCB0 | add | 14: ADDh h0.x, h0.w---, h0;
- | SCB1 | add | 13: ADDh h3.w,-h0, h0.---x;
- | | |
- 5 | SCT0 | mad | 16: ADDh h0.x, h2.w---, h3.w---;
- | SCT1 | mad | 15: ADDh h0.z,-h2.--w-, h0.--x-;
- | SCB0 | min | 17: MINh h5.y, h0.-w--, h1.-w--;
- | | |
- 6 | SCT1 | mov | 18: NRMh h2.xz, h0;
- | SRB | nrm | 18: NRMh h2.xz, h0;
- | SCB1 | min | 19: MINh*8 h2.w, |h2.---x|, |h2.---z|;
- | | |
- 7 | SCT0 | div | 20: DIVx h4.xy, h2.xz--, h2.ww--;
- | SCT1 | mov | 21: MOVr r1.zw, g[TEX0].--xy;
- | SCB1 | max | 22: MAXh h2.w, h0, h1;
- | | |
- 8 | SCT0 | mad | 24: MADr r0.xy,-h2.xz--, const.zw--, r1.zw--;
- | SCT1 | mov | 26: TXLr h0, r0, const.xxxx, TEX0;
- | TEX | txl | 26: TXLr h0, r0, const.xxxx, TEX0;
- | SCB0 | max | 28: MAXh h5.x, h2.w---, h5;
- | SCB1 | min | 29: MINh h5.w, h5.---y, h4;
- | | |
- 9 | SCT0 | mad | 30: MADr r1.xy, h2.xz--, const.zw--, r1.zw--;
- | SCT1 | mov | 32: TXLr h2, r1, const.xxxx, TEX0;
- | TEX | txl | 32: TXLr h2, r1, const.xxxx, TEX0;
- | SCB0/1 | add | 34: ADDh/2 h2, h0, h2;
- | | |
- 10 | SCT0/1 | mov | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
- | TEX | txl | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
- | SCB0 | max | 37: MAXh h5.y, h5.-x--, h1.-w--;
- | SCB1 | min | 38: MINh h4.w, h1, h5;
- | | |
- 11 | SCT0 | mad | 39: MADr r0.xy,-h4, const.xy--, r1.zw--;
- | SCT1 | mov | 41: TXLr h0, r0, const.zzzz, TEX0;
- | TEX | txl | 41: TXLr h0, r0, const.zzzz, TEX0;
- | SCB0 | mad | 44: MADr r2.xy, h4, const.xy--, r1.zw--;
- | SCB1 | add | 43: ADDh*8 h5.z, h5.--y-,-h4.--w-;
- | | |
- 12 | SCT0/1 | mov | 46: TXLr h3, r2, const.xxxx, TEX0;
- | TEX | txl | 46: TXLr h3, r2, const.xxxx, TEX0;
- | SCB0/1 | add | 48: ADDh/2 h0, h0, h3;
- | | |
- 13 | SCT0/1 | mad | 49: ADDh/2 h3, h0, h2;
- | SCB0/1 | mul | 50: MOVh h0, h3;
- | | |
- 14 | SCT0 | set | 51: SLTh h3.x, h3.w---, h5.w---;
- | SCT1 | set | 52: SGTh h3.w, h3, h5.---x;
- | SCB0 | set | 54: SLThc0 rc, h5.z---, h5;
- | SCB1 | add | 53: ADDxc0_s rc, h3.---x, h3;
- | | |
- 15 | SCT0/1 | mul | 55: MOVh h0(NE0.wwww), h2;
- | SCB0/1 | mul | 56: MOVh h0(NE0.xxxx), h1;
-
-Pass SCT TEX SCB
- 1: 0% 100% 25%
- 2: 0% 100% 25%
- 3: 0% 100% 50%
- 4: 0% 100% 50%
- 5: 50% 0% 25%
- 6: 0% 0% 25%
- 7: 100% 0% 25%
- 8: 0% 100% 50%
- 9: 0% 100% 100%
- 10: 0% 100% 50%
- 11: 0% 100% 75%
- 12: 0% 100% 100%
- 13: 100% 0% 100%
- 14: 50% 0% 50%
- 15: 100% 0% 100%
-
-MEAN: 26% 60% 56%
-
-Pass SCT0 SCT1 TEX SCB0 SCB1
- 1: 0% 0% 100% 100% 0%
- 2: 0% 0% 100% 100% 0%
- 3: 0% 0% 100% 100% 100%
- 4: 0% 0% 100% 100% 100%
- 5: 100% 100% 0% 100% 0%
- 6: 0% 0% 0% 0% 100%
- 7: 100% 100% 0% 0% 100%
- 8: 0% 0% 100% 100% 100%
- 9: 0% 0% 100% 100% 100%
- 10: 0% 0% 100% 100% 100%
- 11: 0% 0% 100% 100% 100%
- 12: 0% 0% 100% 100% 100%
- 13: 100% 100% 0% 100% 100%
- 14: 100% 100% 0% 100% 100%
- 15: 100% 100% 0% 100% 100%
-
-MEAN: 33% 33% 60% 86% 80%
-Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
-Results 15 cycles, 3 r regs, 800,000,000 pixels/s
-============================================================================*/
-#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 1)
-/*--------------------------------------------------------------------------*/
-#pragma regcount 7
-#pragma disablepc all
-#pragma option O2
-#pragma option OutColorPrec=fp16
-#pragma texformat default RGBA8
-/*==========================================================================*/
-half4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
-// (1)
- half4 rgbyNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaNe = rgbyNe.w + half(1.0/512.0);
- #else
- half lumaNe = rgbyNe.y + half(1.0/512.0);
- #endif
-/*--------------------------------------------------------------------------*/
-// (2)
- half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaSwNegNe = lumaSw.w - lumaNe;
- #else
- half lumaSwNegNe = lumaSw.y - lumaNe;
- #endif
-/*--------------------------------------------------------------------------*/
-// (3)
- half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMaxNwSw = max(lumaNw.w, lumaSw.w);
- half lumaMinNwSw = min(lumaNw.w, lumaSw.w);
- #else
- half lumaMaxNwSw = max(lumaNw.y, lumaSw.y);
- half lumaMinNwSw = min(lumaNw.y, lumaSw.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (4)
- half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half dirZ = lumaNw.w + lumaSwNegNe;
- half dirX = -lumaNw.w + lumaSwNegNe;
- #else
- half dirZ = lumaNw.y + lumaSwNegNe;
- half dirX = -lumaNw.y + lumaSwNegNe;
- #endif
-/*--------------------------------------------------------------------------*/
-// (5)
- half3 dir;
- dir.y = 0.0;
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x = lumaSe.w + dirX;
- dir.z = -lumaSe.w + dirZ;
- half lumaMinNeSe = min(lumaNe, lumaSe.w);
- #else
- dir.x = lumaSe.y + dirX;
- dir.z = -lumaSe.y + dirZ;
- half lumaMinNeSe = min(lumaNe, lumaSe.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (6)
- half4 dir1_pos;
- dir1_pos.xy = normalize(dir).xz;
- half dirAbsMinTimes8 = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
-/*--------------------------------------------------------------------------*/
-// (7)
- half4 dir2_pos;
- dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimes8, half(-2.0), half(2.0));
- dir1_pos.zw = pos.xy;
- dir2_pos.zw = pos.xy;
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMaxNeSe = max(lumaNe, lumaSe.w);
- #else
- half lumaMaxNeSe = max(lumaNe, lumaSe.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (8)
- half4 temp1N;
- temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
- temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
- half lumaMax = max(lumaMaxNwSw, lumaMaxNeSe);
- half lumaMin = min(lumaMinNwSw, lumaMinNeSe);
-/*--------------------------------------------------------------------------*/
-// (9)
- half4 rgby1;
- rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
- rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
- rgby1 = (temp1N + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (10)
- half4 rgbyM = h4tex2Dlod(tex, half4(pos.xy, 0.0, 0.0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMaxM = max(lumaMax, rgbyM.w);
- half lumaMinM = min(lumaMin, rgbyM.w);
- #else
- half lumaMaxM = max(lumaMax, rgbyM.y);
- half lumaMinM = min(lumaMin, rgbyM.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (11)
- half4 temp2N;
- temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
- half4 rgby2;
- rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- half lumaRangeM = (lumaMaxM - lumaMinM) / FXAA_CONSOLE__PS3_EDGE_THRESHOLD;
-/*--------------------------------------------------------------------------*/
-// (12)
- rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
- rgby2 = (temp2N + rgby2) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (13)
- rgby2 = (rgby2 + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (14)
- #if (FXAA_GREEN_AS_LUMA == 0)
- bool twoTapLt = rgby2.w < lumaMin;
- bool twoTapGt = rgby2.w > lumaMax;
- #else
- bool twoTapLt = rgby2.y < lumaMin;
- bool twoTapGt = rgby2.y > lumaMax;
- #endif
- bool earlyExit = lumaRangeM < lumaMax;
- bool twoTap = twoTapLt || twoTapGt;
-/*--------------------------------------------------------------------------*/
-// (15)
- if(twoTap) rgby2 = rgby1;
- if(earlyExit) rgby2 = rgbyM;
-/*--------------------------------------------------------------------------*/
- return rgby2; }
-/*==========================================================================*/
-#endif
-
-uniform sampler2D diffuseMap;
+uniform sampler2DRect diffuseRect;
+uniform sampler2DRect edgeMap;
uniform sampler2DRect depthMap;
uniform sampler2DRect normalMap;
-
-uniform vec2 tc_scale;
-uniform vec2 rcp_screen_res;
-uniform vec4 rcp_frame_opt;
-uniform vec4 rcp_frame_opt2;
-uniform vec2 screen_res;
+uniform sampler2D bloomMap;
uniform float depth_cutoff;
uniform float norm_cutoff;
@@ -2099,10 +43,9 @@ uniform float tan_pixel_angle;
uniform float magnification;
uniform mat4 inv_proj;
+uniform vec2 screen_res;
VARYING vec2 vary_fragcoord;
-VARYING vec2 vary_tc;
-
float getDepth(vec2 pos_screen)
{
@@ -2135,8 +78,8 @@ void dofSampleNear(inout vec4 diff, inout float w, float cur_sc, vec2 tc)
float sc = calc_cof(d);
float wg = 0.25;
-
- vec4 s = texture2D(diffuseMap, tc*tc_scale/screen_res);
+
+ vec4 s = texture2DRect(diffuseRect, tc);
// de-weight dull areas to make highlights 'pop'
wg += s.r+s.g+s.b;
@@ -2156,7 +99,7 @@ void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ve
{
float wg = 0.25;
- vec4 s = texture2D(diffuseMap, tc*tc_scale/screen_res);
+ vec4 s = texture2DRect(diffuseRect, tc);
// de-weight dull areas to make highlights 'pop'
wg += s.r+s.g+s.b;
@@ -2166,6 +109,7 @@ void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ve
}
}
+
void main()
{
vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
@@ -2175,7 +119,7 @@ void main()
float depth = getDepth(tc);
- vec4 diff = texture2D(diffuseMap, vary_fragcoord.xy*tc_scale/screen_res);
+ vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
{
float w = 1.0;
@@ -2189,7 +133,6 @@ void main()
// sample quite uniformly spaced points within a circle, for a circular 'bokeh'
//if (depth < focal_distance)
- if (sc > 0.5)
{
while (sc > 0.5)
{
@@ -2205,30 +148,10 @@ void main()
sc -= 1.0;
}
}
- else
- {
- diff = FxaaPixelShader(vary_tc, //pos
- vec4(vary_fragcoord.xy, 0, 0), //fxaaConsolePosPos
- diffuseMap, //tex
- diffuseMap,
- diffuseMap,
- rcp_screen_res, //fxaaQualityRcpFrame
- vec4(0,0,0,0), //fxaaConsoleRcpFrameOpt
- rcp_frame_opt, //fxaaConsoleRcpFrameOpt2
- rcp_frame_opt2, //fxaaConsole360RcpFrameOpt2
- 0.75, //fxaaQualitySubpix
- 0.07, //fxaaQualityEdgeThreshold
- 0.03, //fxaaQualityEdgeThresholdMin
- 8.0, //fxaaConsoleEdgeSharpness
- 0.125, //fxaaConsoleEdgeThreshold
- 0.05, //fxaaConsoleEdgeThresholdMin
- vec4(0,0,0,0)); //fxaaConsole360ConstDir
-
-
- }
diff /= w;
}
- gl_FragColor = diff;
+ vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
+ gl_FragColor = diff + bloom;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index 1f1057d8f7..c275434777 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -29,2090 +29,17 @@
out vec4 gl_FragColor;
#endif
-#define FXAA_PC 1
-//#define FXAA_GLSL_130 1
-#define FXAA_QUALITY__PRESET 12
+uniform sampler2DRect diffuseRect;
+uniform sampler2D bloomMap;
-/*============================================================================
-
-
- NVIDIA FXAA 3.11 by TIMOTHY LOTTES
-
-
-------------------------------------------------------------------------------
-COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
-------------------------------------------------------------------------------
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
-*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
-OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
-CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
-LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
-OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
-THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-------------------------------------------------------------------------------
- INTEGRATION CHECKLIST
-------------------------------------------------------------------------------
-(1.)
-In the shader source, setup defines for the desired configuration.
-When providing multiple shaders (for different presets),
-simply setup the defines differently in multiple files.
-Example,
-
- #define FXAA_PC 1
- #define FXAA_HLSL_5 1
- #define FXAA_QUALITY__PRESET 12
-
-Or,
-
- #define FXAA_360 1
-
-Or,
-
- #define FXAA_PS3 1
-
-Etc.
-
-(2.)
-Then include this file,
-
- #include "Fxaa3_11.h"
-
-(3.)
-Then call the FXAA pixel shader from within your desired shader.
-Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
-As for FXAA 3.11 all inputs for all shaders are the same
-to enable easy porting between platforms.
-
- return FxaaPixelShader(...);
-
-(4.)
-Insure pass prior to FXAA outputs RGBL (see next section).
-Or use,
-
- #define FXAA_GREEN_AS_LUMA 1
-
-(5.)
-Setup engine to provide the following constants
-which are used in the FxaaPixelShader() inputs,
-
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-
-Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
-
-(6.)
-Have FXAA vertex shader run as a full screen triangle,
-and output "pos" and "fxaaConsolePosPos"
-such that inputs in the pixel shader provide,
-
- // {xy} = center of pixel
- FxaaFloat2 pos,
-
- // {xy__} = upper left of pixel
- // {__zw} = lower right of pixel
- FxaaFloat4 fxaaConsolePosPos,
-
-(7.)
-Insure the texture sampler(s) used by FXAA are set to bilinear filtering.
-
-
-------------------------------------------------------------------------------
- INTEGRATION - RGBL AND COLORSPACE
-------------------------------------------------------------------------------
-FXAA3 requires RGBL as input unless the following is set,
-
- #define FXAA_GREEN_AS_LUMA 1
-
-In which case the engine uses green in place of luma,
-and requires RGB input is in a non-linear colorspace.
-
-RGB should be LDR (low dynamic range).
-Specifically do FXAA after tonemapping.
-
-RGB data as returned by a texture fetch can be non-linear,
-or linear when FXAA_GREEN_AS_LUMA is not set.
-Note an "sRGB format" texture counts as linear,
-because the result of a texture fetch is linear data.
-Regular "RGBA8" textures in the sRGB colorspace are non-linear.
-
-If FXAA_GREEN_AS_LUMA is not set,
-luma must be stored in the alpha channel prior to running FXAA.
-This luma should be in a perceptual space (could be gamma 2.0).
-Example pass before FXAA where output is gamma 2.0 encoded,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- color.rgb = sqrt(color.rgb); // gamma 2.0 color output
- return color;
-
-To use FXAA,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- color.rgb = sqrt(color.rgb); // gamma 2.0 color output
- color.a = dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114)); // compute luma
- return color;
-
-Another example where output is linear encoded,
-say for instance writing to an sRGB formated render target,
-where the render target does the conversion back to sRGB after blending,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- return color;
-
-To use FXAA,
-
- color.rgb = ToneMap(color.rgb); // linear color output
- color.a = sqrt(dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114))); // compute luma
- return color;
-
-Getting luma correct is required for the algorithm to work correctly.
-
-
-------------------------------------------------------------------------------
- BEING LINEARLY CORRECT?
-------------------------------------------------------------------------------
-Applying FXAA to a framebuffer with linear RGB color will look worse.
-This is very counter intuitive, but happends to be true in this case.
-The reason is because dithering artifacts will be more visiable
-in a linear colorspace.
-
-
-------------------------------------------------------------------------------
- COMPLEX INTEGRATION
-------------------------------------------------------------------------------
-Q. What if the engine is blending into RGB before wanting to run FXAA?
-
-A. In the last opaque pass prior to FXAA,
- have the pass write out luma into alpha.
- Then blend into RGB only.
- FXAA should be able to run ok
- assuming the blending pass did not any add aliasing.
- This should be the common case for particles and common blending passes.
-
-A. Or use FXAA_GREEN_AS_LUMA.
-
-============================================================================*/
-
-/*============================================================================
-
- INTEGRATION KNOBS
-
-============================================================================*/
-//
-// FXAA_PS3 and FXAA_360 choose the console algorithm (FXAA3 CONSOLE).
-// FXAA_360_OPT is a prototype for the new optimized 360 version.
-//
-// 1 = Use API.
-// 0 = Don't use API.
-//
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_PS3
- #define FXAA_PS3 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_360
- #define FXAA_360 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_360_OPT
- #define FXAA_360_OPT 0
-#endif
-/*==========================================================================*/
-#ifndef FXAA_PC
- //
- // FXAA Quality
- // The high quality PC algorithm.
- //
- #define FXAA_PC 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_PC_CONSOLE
- //
- // The console algorithm for PC is included
- // for developers targeting really low spec machines.
- // Likely better to just run FXAA_PC, and use a really low preset.
- //
- #define FXAA_PC_CONSOLE 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_GLSL_120
- #define FXAA_GLSL_120 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_GLSL_130
- #define FXAA_GLSL_130 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_HLSL_3
- #define FXAA_HLSL_3 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_HLSL_4
- #define FXAA_HLSL_4 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_HLSL_5
- #define FXAA_HLSL_5 0
-#endif
-/*==========================================================================*/
-#ifndef FXAA_GREEN_AS_LUMA
- //
- // For those using non-linear color,
- // and either not able to get luma in alpha, or not wanting to,
- // this enables FXAA to run using green as a proxy for luma.
- // So with this enabled, no need to pack luma in alpha.
- //
- // This will turn off AA on anything which lacks some amount of green.
- // Pure red and blue or combination of only R and B, will get no AA.
- //
- // Might want to lower the settings for both,
- // fxaaConsoleEdgeThresholdMin
- // fxaaQualityEdgeThresholdMin
- // In order to insure AA does not get turned off on colors
- // which contain a minor amount of green.
- //
- // 1 = On.
- // 0 = Off.
- //
- #define FXAA_GREEN_AS_LUMA 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_EARLY_EXIT
- //
- // Controls algorithm's early exit path.
- // On PS3 turning this ON adds 2 cycles to the shader.
- // On 360 turning this OFF adds 10ths of a millisecond to the shader.
- // Turning this off on console will result in a more blurry image.
- // So this defaults to on.
- //
- // 1 = On.
- // 0 = Off.
- //
- #define FXAA_EARLY_EXIT 1
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_DISCARD
- //
- // Only valid for PC OpenGL currently.
- // Probably will not work when FXAA_GREEN_AS_LUMA = 1.
- //
- // 1 = Use discard on pixels which don't need AA.
- // For APIs which enable concurrent TEX+ROP from same surface.
- // 0 = Return unchanged color on pixels which don't need AA.
- //
- #define FXAA_DISCARD 0
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_FAST_PIXEL_OFFSET
- //
- // Used for GLSL 120 only.
- //
- // 1 = GL API supports fast pixel offsets
- // 0 = do not use fast pixel offsets
- //
- #ifdef GL_EXT_gpu_shader4
- #define FXAA_FAST_PIXEL_OFFSET 1
- #endif
- #ifdef GL_NV_gpu_shader5
- #define FXAA_FAST_PIXEL_OFFSET 1
- #endif
- #ifdef GL_ARB_gpu_shader5
- #define FXAA_FAST_PIXEL_OFFSET 1
- #endif
- #ifndef FXAA_FAST_PIXEL_OFFSET
- #define FXAA_FAST_PIXEL_OFFSET 0
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_GATHER4_ALPHA
- //
- // 1 = API supports gather4 on alpha channel.
- // 0 = API does not support gather4 on alpha channel.
- //
- #if (FXAA_HLSL_5 == 1)
- #define FXAA_GATHER4_ALPHA 1
- #endif
- #ifdef GL_ARB_gpu_shader5
- #define FXAA_GATHER4_ALPHA 1
- #endif
- #ifdef GL_NV_gpu_shader5
- #define FXAA_GATHER4_ALPHA 1
- #endif
- #ifndef FXAA_GATHER4_ALPHA
- #define FXAA_GATHER4_ALPHA 0
- #endif
-#endif
-
-/*============================================================================
- FXAA CONSOLE PS3 - TUNING KNOBS
-============================================================================*/
-#ifndef FXAA_CONSOLE__PS3_EDGE_SHARPNESS
- //
- // Consoles the sharpness of edges on PS3 only.
- // Non-PS3 tuning is done with shader input.
- //
- // Due to the PS3 being ALU bound,
- // there are only two safe values here: 4 and 8.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- //
- // 8.0 is sharper
- // 4.0 is softer
- // 2.0 is really soft (good for vector graphics inputs)
- //
- #if 1
- #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 8.0
- #endif
- #if 0
- #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 4.0
- #endif
- #if 0
- #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 2.0
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#ifndef FXAA_CONSOLE__PS3_EDGE_THRESHOLD
- //
- // Only effects PS3.
- // Non-PS3 tuning is done with shader input.
- //
- // The minimum amount of local contrast required to apply algorithm.
- // The console setting has a different mapping than the quality setting.
- //
- // This only applies when FXAA_EARLY_EXIT is 1.
- //
- // Due to the PS3 being ALU bound,
- // there are only two safe values here: 0.25 and 0.125.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- //
- // 0.125 leaves less aliasing, but is softer
- // 0.25 leaves more aliasing, and is sharper
- //
- #if 1
- #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.125
- #else
- #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.25
- #endif
-#endif
-
-/*============================================================================
- FXAA QUALITY - TUNING KNOBS
-------------------------------------------------------------------------------
-NOTE the other tuning knobs are now in the shader function inputs!
-============================================================================*/
-#ifndef FXAA_QUALITY__PRESET
- //
- // Choose the quality preset.
- // This needs to be compiled into the shader as it effects code.
- // Best option to include multiple presets is to
- // in each shader define the preset, then include this file.
- //
- // OPTIONS
- // -----------------------------------------------------------------------
- // 10 to 15 - default medium dither (10=fastest, 15=highest quality)
- // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
- // 39 - no dither, very expensive
- //
- // NOTES
- // -----------------------------------------------------------------------
- // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
- // 13 = about same speed as FXAA 3.9 and better than 12
- // 23 = closest to FXAA 3.9 visually and performance wise
- // _ = the lowest digit is directly related to performance
- // _ = the highest digit is directly related to style
- //
- #define FXAA_QUALITY__PRESET 12
-#endif
-
-
-/*============================================================================
-
- FXAA QUALITY - PRESETS
-
-============================================================================*/
-
-/*============================================================================
- FXAA QUALITY - MEDIUM DITHER PRESETS
-============================================================================*/
-#if (FXAA_QUALITY__PRESET == 10)
- #define FXAA_QUALITY__PS 3
- #define FXAA_QUALITY__P0 1.5
- #define FXAA_QUALITY__P1 3.0
- #define FXAA_QUALITY__P2 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 11)
- #define FXAA_QUALITY__PS 4
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 3.0
- #define FXAA_QUALITY__P3 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 12)
- #define FXAA_QUALITY__PS 5
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 4.0
- #define FXAA_QUALITY__P4 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 13)
- #define FXAA_QUALITY__PS 6
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 4.0
- #define FXAA_QUALITY__P5 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 14)
- #define FXAA_QUALITY__PS 7
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 4.0
- #define FXAA_QUALITY__P6 12.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 15)
- #define FXAA_QUALITY__PS 8
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 4.0
- #define FXAA_QUALITY__P7 12.0
-#endif
-
-/*============================================================================
- FXAA QUALITY - LOW DITHER PRESETS
-============================================================================*/
-#if (FXAA_QUALITY__PRESET == 20)
- #define FXAA_QUALITY__PS 3
- #define FXAA_QUALITY__P0 1.5
- #define FXAA_QUALITY__P1 2.0
- #define FXAA_QUALITY__P2 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 21)
- #define FXAA_QUALITY__PS 4
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 22)
- #define FXAA_QUALITY__PS 5
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 23)
- #define FXAA_QUALITY__PS 6
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 24)
- #define FXAA_QUALITY__PS 7
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 3.0
- #define FXAA_QUALITY__P6 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 25)
- #define FXAA_QUALITY__PS 8
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 4.0
- #define FXAA_QUALITY__P7 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 26)
- #define FXAA_QUALITY__PS 9
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 4.0
- #define FXAA_QUALITY__P8 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 27)
- #define FXAA_QUALITY__PS 10
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 4.0
- #define FXAA_QUALITY__P9 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 28)
- #define FXAA_QUALITY__PS 11
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 2.0
- #define FXAA_QUALITY__P9 4.0
- #define FXAA_QUALITY__P10 8.0
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_QUALITY__PRESET == 29)
- #define FXAA_QUALITY__PS 12
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.5
- #define FXAA_QUALITY__P2 2.0
- #define FXAA_QUALITY__P3 2.0
- #define FXAA_QUALITY__P4 2.0
- #define FXAA_QUALITY__P5 2.0
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 2.0
- #define FXAA_QUALITY__P9 2.0
- #define FXAA_QUALITY__P10 4.0
- #define FXAA_QUALITY__P11 8.0
-#endif
-
-/*============================================================================
- FXAA QUALITY - EXTREME QUALITY
-============================================================================*/
-#if (FXAA_QUALITY__PRESET == 39)
- #define FXAA_QUALITY__PS 12
- #define FXAA_QUALITY__P0 1.0
- #define FXAA_QUALITY__P1 1.0
- #define FXAA_QUALITY__P2 1.0
- #define FXAA_QUALITY__P3 1.0
- #define FXAA_QUALITY__P4 1.0
- #define FXAA_QUALITY__P5 1.5
- #define FXAA_QUALITY__P6 2.0
- #define FXAA_QUALITY__P7 2.0
- #define FXAA_QUALITY__P8 2.0
- #define FXAA_QUALITY__P9 2.0
- #define FXAA_QUALITY__P10 4.0
- #define FXAA_QUALITY__P11 8.0
-#endif
-
-
-
-/*============================================================================
-
- API PORTING
-
-============================================================================*/
-#if (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)
- #define FxaaBool bool
- #define FxaaDiscard discard
- #define FxaaFloat float
- #define FxaaFloat2 vec2
- #define FxaaFloat3 vec3
- #define FxaaFloat4 vec4
- #define FxaaHalf float
- #define FxaaHalf2 vec2
- #define FxaaHalf3 vec3
- #define FxaaHalf4 vec4
- #define FxaaInt2 ivec2
- #define FxaaSat(x) clamp(x, 0.0, 1.0)
- #define FxaaTex sampler2D
-#else
- #define FxaaBool bool
- #define FxaaDiscard clip(-1)
- #define FxaaFloat float
- #define FxaaFloat2 float2
- #define FxaaFloat3 float3
- #define FxaaFloat4 float4
- #define FxaaHalf half
- #define FxaaHalf2 half2
- #define FxaaHalf3 half3
- #define FxaaHalf4 half4
- #define FxaaSat(x) saturate(x)
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_GLSL_120 == 1)
- // Requires,
- // #version 120
- // And at least,
- // #extension GL_EXT_gpu_shader4 : enable
- // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)
- #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
- #if (FXAA_FAST_PIXEL_OFFSET == 1)
- #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
- #else
- #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
- #endif
- #if (FXAA_GATHER4_ALPHA == 1)
- // use #extension GL_ARB_gpu_shader5 : enable
- #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
- #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
- #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
- #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_GLSL_130 == 1)
- // Requires "#version 130" or better
- #define FxaaTexTop(t, p) textureLod(t, p, 0.0)
- #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
- #if (FXAA_GATHER4_ALPHA == 1)
- // use #extension GL_ARB_gpu_shader5 : enable
- #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
- #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
- #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
- #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
- #endif
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_HLSL_3 == 1) || (FXAA_360 == 1) || (FXAA_PS3 == 1)
- #define FxaaInt2 float2
- #define FxaaTex sampler2D
- #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))
- #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_HLSL_4 == 1)
- #define FxaaInt2 int2
- struct FxaaTex { SamplerState smpl; Texture2D tex; };
- #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
- #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
-#endif
-/*--------------------------------------------------------------------------*/
-#if (FXAA_HLSL_5 == 1)
- #define FxaaInt2 int2
- struct FxaaTex { SamplerState smpl; Texture2D tex; };
- #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
- #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
- #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)
- #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)
- #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)
- #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)
-#endif
-
-
-/*============================================================================
- GREEN AS LUMA OPTION SUPPORT FUNCTION
-============================================================================*/
-#if (FXAA_GREEN_AS_LUMA == 0)
- FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }
-#else
- FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
-#endif
-
-
-
-
-/*============================================================================
-
- FXAA3 QUALITY - PC
-
-============================================================================*/
-#if (FXAA_PC == 1)
-/*--------------------------------------------------------------------------*/
-FxaaFloat4 FxaaPixelShader(
- //
- // Use noperspective interpolation here (turn off perspective interpolation).
- // {xy} = center of pixel
- FxaaFloat2 pos,
- //
- // Used only for FXAA Console, and not used on the 360 version.
- // Use noperspective interpolation here (turn off perspective interpolation).
- // {xy__} = upper left of pixel
- // {__zw} = lower right of pixel
- FxaaFloat4 fxaaConsolePosPos,
- //
- // Input color texture.
- // {rgb_} = color in linear or perceptual color space
- // if (FXAA_GREEN_AS_LUMA == 0)
- // {___a} = luma in perceptual color space (not linear)
- FxaaTex tex,
- //
- // Only used on the optimized 360 version of FXAA Console.
- // For everything but 360, just use the same input here as for "tex".
- // For 360, same texture, just alias with a 2nd sampler.
- // This sampler needs to have an exponent bias of -1.
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- //
- // Only used on the optimized 360 version of FXAA Console.
- // For everything but 360, just use the same input here as for "tex".
- // For 360, same texture, just alias with a 3nd sampler.
- // This sampler needs to have an exponent bias of -2.
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- //
- // Only used on FXAA Quality.
- // This must be from a constant/uniform.
- // {x_} = 1.0/screenWidthInPixels
- // {_y} = 1.0/screenHeightInPixels
- FxaaFloat2 fxaaQualityRcpFrame,
- //
- // Only used on FXAA Console.
- // This must be from a constant/uniform.
- // This effects sub-pixel AA quality and inversely sharpness.
- // Where N ranges between,
- // N = 0.50 (default)
- // N = 0.33 (sharper)
- // {x___} = -N/screenWidthInPixels
- // {_y__} = -N/screenHeightInPixels
- // {__z_} = N/screenWidthInPixels
- // {___w} = N/screenHeightInPixels
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- //
- // Only used on FXAA Console.
- // Not used on 360, but used on PS3 and PC.
- // This must be from a constant/uniform.
- // {x___} = -2.0/screenWidthInPixels
- // {_y__} = -2.0/screenHeightInPixels
- // {__z_} = 2.0/screenWidthInPixels
- // {___w} = 2.0/screenHeightInPixels
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- //
- // Only used on FXAA Console.
- // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.
- // This must be from a constant/uniform.
- // {x___} = 8.0/screenWidthInPixels
- // {_y__} = 8.0/screenHeightInPixels
- // {__z_} = -4.0/screenWidthInPixels
- // {___w} = -4.0/screenHeightInPixels
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- //
- // Only used on FXAA Quality.
- // This used to be the FXAA_QUALITY__SUBPIX define.
- // It is here now to allow easier tuning.
- // Choose the amount of sub-pixel aliasing removal.
- // This can effect sharpness.
- // 1.00 - upper limit (softer)
- // 0.75 - default amount of filtering
- // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)
- // 0.25 - almost off
- // 0.00 - completely off
- FxaaFloat fxaaQualitySubpix,
- //
- // Only used on FXAA Quality.
- // This used to be the FXAA_QUALITY__EDGE_THRESHOLD define.
- // It is here now to allow easier tuning.
- // The minimum amount of local contrast required to apply algorithm.
- // 0.333 - too little (faster)
- // 0.250 - low quality
- // 0.166 - default
- // 0.125 - high quality
- // 0.063 - overkill (slower)
- FxaaFloat fxaaQualityEdgeThreshold,
- //
- // Only used on FXAA Quality.
- // This used to be the FXAA_QUALITY__EDGE_THRESHOLD_MIN define.
- // It is here now to allow easier tuning.
- // Trims the algorithm from processing darks.
- // 0.0833 - upper limit (default, the start of visible unfiltered edges)
- // 0.0625 - high quality (faster)
- // 0.0312 - visible limit (slower)
- // Special notes when using FXAA_GREEN_AS_LUMA,
- // Likely want to set this to zero.
- // As colors that are mostly not-green
- // will appear very dark in the green channel!
- // Tune by looking at mostly non-green content,
- // then start at zero and increase until aliasing is a problem.
- FxaaFloat fxaaQualityEdgeThresholdMin,
- //
- // Only used on FXAA Console.
- // This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
- // It is here now to allow easier tuning.
- // This does not effect PS3, as this needs to be compiled in.
- // Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
- // Due to the PS3 being ALU bound,
- // there are only three safe values here: 2 and 4 and 8.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- // For all other platforms can be a non-power of two.
- // 8.0 is sharper (default!!!)
- // 4.0 is softer
- // 2.0 is really soft (good only for vector graphics inputs)
- FxaaFloat fxaaConsoleEdgeSharpness,
- //
- // Only used on FXAA Console.
- // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
- // It is here now to allow easier tuning.
- // This does not effect PS3, as this needs to be compiled in.
- // Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
- // Due to the PS3 being ALU bound,
- // there are only two safe values here: 1/4 and 1/8.
- // These options use the shaders ability to a free *|/ by 2|4|8.
- // The console setting has a different mapping than the quality setting.
- // Other platforms can use other values.
- // 0.125 leaves less aliasing, but is softer (default!!!)
- // 0.25 leaves more aliasing, and is sharper
- FxaaFloat fxaaConsoleEdgeThreshold,
- //
- // Only used on FXAA Console.
- // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
- // It is here now to allow easier tuning.
- // Trims the algorithm from processing darks.
- // The console setting has a different mapping than the quality setting.
- // This only applies when FXAA_EARLY_EXIT is 1.
- // This does not apply to PS3,
- // PS3 was simplified to avoid more shader instructions.
- // 0.06 - faster but more aliasing in darks
- // 0.05 - default
- // 0.04 - slower and less aliasing in darks
- // Special notes when using FXAA_GREEN_AS_LUMA,
- // Likely want to set this to zero.
- // As colors that are mostly not-green
- // will appear very dark in the green channel!
- // Tune by looking at mostly non-green content,
- // then start at zero and increase until aliasing is a problem.
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- //
- // Extra constants for 360 FXAA Console only.
- // Use zeros or anything else for other platforms.
- // These must be in physical constant registers and NOT immedates.
- // Immedates will result in compiler un-optimizing.
- // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 posM;
- posM.x = pos.x;
- posM.y = pos.y;
- #if (FXAA_GATHER4_ALPHA == 1)
- #if (FXAA_DISCARD == 0)
- FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
- #if (FXAA_GREEN_AS_LUMA == 0)
- #define lumaM rgbyM.w
- #else
- #define lumaM rgbyM.y
- #endif
- #endif
- #if (FXAA_GREEN_AS_LUMA == 0)
- FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);
- FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));
- #else
- FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);
- FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
- #endif
- #if (FXAA_DISCARD == 1)
- #define lumaM luma4A.w
- #endif
- #define lumaE luma4A.z
- #define lumaS luma4A.x
- #define lumaSE luma4A.y
- #define lumaNW luma4B.w
- #define lumaN luma4B.z
- #define lumaW luma4B.x
- #else
- FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
- #if (FXAA_GREEN_AS_LUMA == 0)
- #define lumaM rgbyM.w
- #else
- #define lumaM rgbyM.y
- #endif
- FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
- #endif
-/*--------------------------------------------------------------------------*/
- FxaaFloat maxSM = max(lumaS, lumaM);
- FxaaFloat minSM = min(lumaS, lumaM);
- FxaaFloat maxESM = max(lumaE, maxSM);
- FxaaFloat minESM = min(lumaE, minSM);
- FxaaFloat maxWN = max(lumaN, lumaW);
- FxaaFloat minWN = min(lumaN, lumaW);
- FxaaFloat rangeMax = max(maxWN, maxESM);
- FxaaFloat rangeMin = min(minWN, minESM);
- FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
- FxaaFloat range = rangeMax - rangeMin;
- FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
- FxaaBool earlyExit = range < rangeMaxClamped;
-/*--------------------------------------------------------------------------*/
- if(earlyExit)
- #if (FXAA_DISCARD == 1)
- FxaaDiscard;
- #else
- return rgbyM;
- #endif
-/*--------------------------------------------------------------------------*/
- #if (FXAA_GATHER4_ALPHA == 0)
- FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
- #else
- FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));
- FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
- #endif
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNS = lumaN + lumaS;
- FxaaFloat lumaWE = lumaW + lumaE;
- FxaaFloat subpixRcpRange = 1.0/range;
- FxaaFloat subpixNSWE = lumaNS + lumaWE;
- FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
- FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNESE = lumaNE + lumaSE;
- FxaaFloat lumaNWNE = lumaNW + lumaNE;
- FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
- FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNWSW = lumaNW + lumaSW;
- FxaaFloat lumaSWSE = lumaSW + lumaSE;
- FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
- FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
- FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
- FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
- FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
- FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
-/*--------------------------------------------------------------------------*/
- FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
- FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
- FxaaBool horzSpan = edgeHorz >= edgeVert;
- FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
-/*--------------------------------------------------------------------------*/
- if(!horzSpan) lumaN = lumaW;
- if(!horzSpan) lumaS = lumaE;
- if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
- FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
-/*--------------------------------------------------------------------------*/
- FxaaFloat gradientN = lumaN - lumaM;
- FxaaFloat gradientS = lumaS - lumaM;
- FxaaFloat lumaNN = lumaN + lumaM;
- FxaaFloat lumaSS = lumaS + lumaM;
- FxaaBool pairN = abs(gradientN) >= abs(gradientS);
- FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
- if(pairN) lengthSign = -lengthSign;
- FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 posB;
- posB.x = posM.x;
- posB.y = posM.y;
- FxaaFloat2 offNP;
- offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
- offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
- if(!horzSpan) posB.x += lengthSign * 0.5;
- if( horzSpan) posB.y += lengthSign * 0.5;
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 posN;
- posN.x = posB.x - offNP.x * FXAA_QUALITY__P0;
- posN.y = posB.y - offNP.y * FXAA_QUALITY__P0;
- FxaaFloat2 posP;
- posP.x = posB.x + offNP.x * FXAA_QUALITY__P0;
- posP.y = posB.y + offNP.y * FXAA_QUALITY__P0;
- FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
- FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
- FxaaFloat subpixE = subpixC * subpixC;
- FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
-/*--------------------------------------------------------------------------*/
- if(!pairN) lumaNN = lumaSS;
- FxaaFloat gradientScaled = gradient * 1.0/4.0;
- FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
- FxaaFloat subpixF = subpixD * subpixE;
- FxaaBool lumaMLTZero = lumaMM < 0.0;
-/*--------------------------------------------------------------------------*/
- lumaEndN -= lumaNN * 0.5;
- lumaEndP -= lumaNN * 0.5;
- FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
- FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P1;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P1;
- FxaaBool doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P1;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P1;
-/*--------------------------------------------------------------------------*/
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P2;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P2;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P2;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P2;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 3)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P3;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P3;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P3;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P3;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 4)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P4;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P4;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P4;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P4;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 5)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P5;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P5;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P5;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P5;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 6)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P6;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P6;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P6;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P6;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 7)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P7;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P7;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P7;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P7;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 8)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P8;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P8;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P8;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P8;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 9)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P9;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P9;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P9;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P9;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 10)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P10;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P10;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P10;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P10;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 11)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P11;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P11;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P11;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P11;
-/*--------------------------------------------------------------------------*/
- #if (FXAA_QUALITY__PS > 12)
- if(doneNP) {
- if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
- if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
- if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
- if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
- doneN = abs(lumaEndN) >= gradientScaled;
- doneP = abs(lumaEndP) >= gradientScaled;
- if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P12;
- if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P12;
- doneNP = (!doneN) || (!doneP);
- if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P12;
- if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P12;
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
- #endif
-/*--------------------------------------------------------------------------*/
- }
-/*--------------------------------------------------------------------------*/
- FxaaFloat dstN = posM.x - posN.x;
- FxaaFloat dstP = posP.x - posM.x;
- if(!horzSpan) dstN = posM.y - posN.y;
- if(!horzSpan) dstP = posP.y - posM.y;
-/*--------------------------------------------------------------------------*/
- FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
- FxaaFloat spanLength = (dstP + dstN);
- FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
- FxaaFloat spanLengthRcp = 1.0/spanLength;
-/*--------------------------------------------------------------------------*/
- FxaaBool directionN = dstN < dstP;
- FxaaFloat dst = min(dstN, dstP);
- FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
- FxaaFloat subpixG = subpixF * subpixF;
- FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
- FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
-/*--------------------------------------------------------------------------*/
- FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
- FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
- if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
- if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
- #if (FXAA_DISCARD == 1)
- return FxaaTexTop(tex, posM);
- #else
- return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
- #endif
-}
-/*==========================================================================*/
-#endif
-
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - PC VERSION
-
-------------------------------------------------------------------------------
-Instead of using this on PC, I'd suggest just using FXAA Quality with
- #define FXAA_QUALITY__PRESET 10
-Or
- #define FXAA_QUALITY__PRESET 20
-Either are higher qualilty and almost as fast as this on modern PC GPUs.
-============================================================================*/
-#if (FXAA_PC_CONSOLE == 1)
-/*--------------------------------------------------------------------------*/
-FxaaFloat4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
- FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
- FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
- FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
-/*--------------------------------------------------------------------------*/
- FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
- #if (FXAA_GREEN_AS_LUMA == 0)
- FxaaFloat lumaM = rgbyM.w;
- #else
- FxaaFloat lumaM = rgbyM.y;
- #endif
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
- lumaNe += 1.0/384.0;
- FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
- FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
- FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
-/*--------------------------------------------------------------------------*/
- FxaaFloat lumaMinM = min(lumaMin, lumaM);
- FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
- FxaaFloat lumaMaxM = max(lumaMax, lumaM);
- FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
- FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
- FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
- if(lumaMaxSubMinM < lumaMaxScaledClamped) return rgbyM;
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 dir;
- dir.x = dirSwMinusNe + dirSeMinusNw;
- dir.y = dirSwMinusNe - dirSeMinusNw;
-/*--------------------------------------------------------------------------*/
- FxaaFloat2 dir1 = normalize(dir.xy);
- FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
- FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
- FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
-/*--------------------------------------------------------------------------*/
- FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2 * fxaaConsoleRcpFrameOpt2.zw);
- FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2 * fxaaConsoleRcpFrameOpt2.zw);
-/*--------------------------------------------------------------------------*/
- FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
- FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
-/*--------------------------------------------------------------------------*/
- #if (FXAA_GREEN_AS_LUMA == 0)
- FxaaBool twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);
- #else
- FxaaBool twoTap = (rgbyB.y < lumaMin) || (rgbyB.y > lumaMax);
- #endif
- if(twoTap) rgbyB.xyz = rgbyA.xyz * 0.5;
- return rgbyB; }
-/*==========================================================================*/
-#endif
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - 360 PIXEL SHADER
-
-------------------------------------------------------------------------------
-This optimized version thanks to suggestions from Andy Luedke.
-Should be fully tex bound in all cases.
-As of the FXAA 3.11 release, I have still not tested this code,
-however I fixed a bug which was in both FXAA 3.9 and FXAA 3.10.
-And note this is replacing the old unoptimized version.
-If it does not work, please let me know so I can fix it.
-============================================================================*/
-#if (FXAA_360 == 1)
-/*--------------------------------------------------------------------------*/
-[reduceTempRegUsage(4)]
-float4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
- float4 lumaNwNeSwSe;
- #if (FXAA_GREEN_AS_LUMA == 0)
- asm {
- tfetch2D lumaNwNeSwSe.w___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe._w__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.__w_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.___w, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
- };
- #else
- asm {
- tfetch2D lumaNwNeSwSe.y___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe._y__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.__y_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
- tfetch2D lumaNwNeSwSe.___y, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
- };
- #endif
-/*--------------------------------------------------------------------------*/
- lumaNwNeSwSe.y += 1.0/384.0;
- float2 lumaMinTemp = min(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
- float2 lumaMaxTemp = max(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
- float lumaMin = min(lumaMinTemp.x, lumaMinTemp.y);
- float lumaMax = max(lumaMaxTemp.x, lumaMaxTemp.y);
-/*--------------------------------------------------------------------------*/
- float4 rgbyM = tex2Dlod(tex, float4(pos.xy, 0.0, 0.0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- float lumaMinM = min(lumaMin, rgbyM.w);
- float lumaMaxM = max(lumaMax, rgbyM.w);
- #else
- float lumaMinM = min(lumaMin, rgbyM.y);
- float lumaMaxM = max(lumaMax, rgbyM.y);
- #endif
- if((lumaMaxM - lumaMinM) < max(fxaaConsoleEdgeThresholdMin, lumaMax * fxaaConsoleEdgeThreshold)) return rgbyM;
-/*--------------------------------------------------------------------------*/
- float2 dir;
- dir.x = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.yyxx);
- dir.y = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.xyxy);
- dir = normalize(dir);
-/*--------------------------------------------------------------------------*/
- float4 dir1 = dir.xyxy * fxaaConsoleRcpFrameOpt.xyzw;
-/*--------------------------------------------------------------------------*/
- float4 dir2;
- float dirAbsMinTimesC = min(abs(dir.x), abs(dir.y)) * fxaaConsoleEdgeSharpness;
- dir2 = saturate(fxaaConsole360ConstDir.zzww * dir.xyxy / dirAbsMinTimesC + 0.5);
- dir2 = dir2 * fxaaConsole360RcpFrameOpt2.xyxy + fxaaConsole360RcpFrameOpt2.zwzw;
-/*--------------------------------------------------------------------------*/
- float4 rgbyN1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.xy, 0.0, 0.0));
- float4 rgbyP1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.zw, 0.0, 0.0));
- float4 rgbyN2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.xy, 0.0, 0.0));
- float4 rgbyP2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.zw, 0.0, 0.0));
-/*--------------------------------------------------------------------------*/
- float4 rgbyA = rgbyN1 + rgbyP1;
- float4 rgbyB = rgbyN2 + rgbyP2 * 0.5 + rgbyA;
-/*--------------------------------------------------------------------------*/
- float4 rgbyR = ((rgbyB.w - lumaMax) > 0.0) ? rgbyA : rgbyB;
- rgbyR = ((rgbyB.w - lumaMin) > 0.0) ? rgbyR : rgbyA;
- return rgbyR; }
-/*==========================================================================*/
-#endif
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (NO EARLY EXIT)
-
-==============================================================================
-The code below does not exactly match the assembly.
-I have a feeling that 12 cycles is possible, but was not able to get there.
-Might have to increase register count to get full performance.
-Note this shader does not use perspective interpolation.
-
-Use the following cgc options,
-
- --fenable-bx2 --fastmath --fastprecision --nofloatbindings
-
-------------------------------------------------------------------------------
- NVSHADERPERF OUTPUT
-------------------------------------------------------------------------------
-For reference and to aid in debug, output of NVShaderPerf should match this,
-
-Shader to schedule:
- 0: texpkb h0.w(TRUE), v5.zyxx, #0
- 2: addh h2.z(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
- 4: texpkb h0.w(TRUE), v5.xwxx, #0
- 6: addh h0.z(TRUE), -h2, h0.w
- 7: texpkb h1.w(TRUE), v5, #0
- 9: addh h0.x(TRUE), h0.z, -h1.w
- 10: addh h3.w(TRUE), h0.z, h1
- 11: texpkb h2.w(TRUE), v5.zwzz, #0
- 13: addh h0.z(TRUE), h3.w, -h2.w
- 14: addh h0.x(TRUE), h2.w, h0
- 15: nrmh h1.xz(TRUE), h0_n
- 16: minh_m8 h0.x(TRUE), |h1|, |h1.z|
- 17: maxh h4.w(TRUE), h0, h1
- 18: divx h2.xy(TRUE), h1_n.xzzw, h0_n
- 19: movr r1.zw(TRUE), v4.xxxy
- 20: madr r2.xz(TRUE), -h1, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zzww, r1.zzww
- 22: minh h5.w(TRUE), h0, h1
- 23: texpkb h0(TRUE), r2.xzxx, #0
- 25: madr r0.zw(TRUE), h1.xzxz, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w), r1
- 27: maxh h4.x(TRUE), h2.z, h2.w
- 28: texpkb h1(TRUE), r0.zwzz, #0
- 30: addh_d2 h1(TRUE), h0, h1
- 31: madr r0.xy(TRUE), -h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 33: texpkb h0(TRUE), r0, #0
- 35: minh h4.z(TRUE), h2, h2.w
- 36: fenct TRUE
- 37: madr r1.xy(TRUE), h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 39: texpkb h2(TRUE), r1, #0
- 41: addh_d2 h0(TRUE), h0, h2
- 42: maxh h2.w(TRUE), h4, h4.x
- 43: minh h2.x(TRUE), h5.w, h4.z
- 44: addh_d2 h0(TRUE), h0, h1
- 45: slth h2.x(TRUE), h0.w, h2
- 46: sgth h2.w(TRUE), h0, h2
- 47: movh h0(TRUE), h0
- 48: addx.c0 rc(TRUE), h2, h2.w
- 49: movh h0(c0.NE.x), h1
-
-IPU0 ------ Simplified schedule: --------
-Pass | Unit | uOp | PC: Op
------+--------+------+-------------------------
- 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | SCB1 | add | 2: ADDh h2.z, h0.--w-, const.--x-;
- | | |
- 2 | SCT0/1 | mov | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | TEX | txl | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | SCB1 | add | 6: ADDh h0.z,-h2, h0.--w-;
- | | |
- 3 | SCT0/1 | mov | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
- | TEX | txl | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
- | SCB0 | add | 9: ADDh h0.x, h0.z---,-h1.w---;
- | SCB1 | add | 10: ADDh h3.w, h0.---z, h1;
- | | |
- 4 | SCT0/1 | mov | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | TEX | txl | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | SCB0 | add | 14: ADDh h0.x, h2.w---, h0;
- | SCB1 | add | 13: ADDh h0.z, h3.--w-,-h2.--w-;
- | | |
- 5 | SCT1 | mov | 15: NRMh h1.xz, h0;
- | SRB | nrm | 15: NRMh h1.xz, h0;
- | SCB0 | min | 16: MINh*8 h0.x, |h1|, |h1.z---|;
- | SCB1 | max | 17: MAXh h4.w, h0, h1;
- | | |
- 6 | SCT0 | div | 18: DIVx h2.xy, h1.xz--, h0;
- | SCT1 | mov | 19: MOVr r1.zw, g[TEX0].--xy;
- | SCB0 | mad | 20: MADr r2.xz,-h1, const.z-w-, r1.z-w-;
- | SCB1 | min | 22: MINh h5.w, h0, h1;
- | | |
- 7 | SCT0/1 | mov | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
- | TEX | txl | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
- | SCB0 | max | 27: MAXh h4.x, h2.z---, h2.w---;
- | SCB1 | mad | 25: MADr r0.zw, h1.--xz, const, r1;
- | | |
- 8 | SCT0/1 | mov | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
- | TEX | txl | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
- | SCB0/1 | add | 30: ADDh/2 h1, h0, h1;
- | | |
- 9 | SCT0 | mad | 31: MADr r0.xy,-h2, const.xy--, r1.zw--;
- | SCT1 | mov | 33: TXLr h0, r0, const.zzzz, TEX0;
- | TEX | txl | 33: TXLr h0, r0, const.zzzz, TEX0;
- | SCB1 | min | 35: MINh h4.z, h2, h2.--w-;
- | | |
- 10 | SCT0 | mad | 37: MADr r1.xy, h2, const.xy--, r1.zw--;
- | SCT1 | mov | 39: TXLr h2, r1, const.zzzz, TEX0;
- | TEX | txl | 39: TXLr h2, r1, const.zzzz, TEX0;
- | SCB0/1 | add | 41: ADDh/2 h0, h0, h2;
- | | |
- 11 | SCT0 | min | 43: MINh h2.x, h5.w---, h4.z---;
- | SCT1 | max | 42: MAXh h2.w, h4, h4.---x;
- | SCB0/1 | add | 44: ADDh/2 h0, h0, h1;
- | | |
- 12 | SCT0 | set | 45: SLTh h2.x, h0.w---, h2;
- | SCT1 | set | 46: SGTh h2.w, h0, h2;
- | SCB0/1 | mul | 47: MOVh h0, h0;
- | | |
- 13 | SCT0 | mad | 48: ADDxc0_s rc, h2, h2.w---;
- | SCB0/1 | mul | 49: MOVh h0(NE0.xxxx), h1;
-
-Pass SCT TEX SCB
- 1: 0% 100% 25%
- 2: 0% 100% 25%
- 3: 0% 100% 50%
- 4: 0% 100% 50%
- 5: 0% 0% 50%
- 6: 100% 0% 75%
- 7: 0% 100% 75%
- 8: 0% 100% 100%
- 9: 0% 100% 25%
- 10: 0% 100% 100%
- 11: 50% 0% 100%
- 12: 50% 0% 100%
- 13: 25% 0% 100%
-
-MEAN: 17% 61% 67%
-
-Pass SCT0 SCT1 TEX SCB0 SCB1
- 1: 0% 0% 100% 0% 100%
- 2: 0% 0% 100% 0% 100%
- 3: 0% 0% 100% 100% 100%
- 4: 0% 0% 100% 100% 100%
- 5: 0% 0% 0% 100% 100%
- 6: 100% 100% 0% 100% 100%
- 7: 0% 0% 100% 100% 100%
- 8: 0% 0% 100% 100% 100%
- 9: 0% 0% 100% 0% 100%
- 10: 0% 0% 100% 100% 100%
- 11: 100% 100% 0% 100% 100%
- 12: 100% 100% 0% 100% 100%
- 13: 100% 0% 0% 100% 100%
-
-MEAN: 30% 23% 61% 76% 100%
-Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
-Results 13 cycles, 3 r regs, 923,076,923 pixels/s
-============================================================================*/
-#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 0)
-/*--------------------------------------------------------------------------*/
-#pragma regcount 7
-#pragma disablepc all
-#pragma option O3
-#pragma option OutColorPrec=fp16
-#pragma texformat default RGBA8
-/*==========================================================================*/
-half4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
-// (1)
- half4 dir;
- half4 lumaNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- lumaNe.w += half(1.0/512.0);
- dir.x = -lumaNe.w;
- dir.z = -lumaNe.w;
- #else
- lumaNe.y += half(1.0/512.0);
- dir.x = -lumaNe.y;
- dir.z = -lumaNe.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (2)
- half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x += lumaSw.w;
- dir.z += lumaSw.w;
- #else
- dir.x += lumaSw.y;
- dir.z += lumaSw.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (3)
- half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x -= lumaNw.w;
- dir.z += lumaNw.w;
- #else
- dir.x -= lumaNw.y;
- dir.z += lumaNw.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (4)
- half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x += lumaSe.w;
- dir.z -= lumaSe.w;
- #else
- dir.x += lumaSe.y;
- dir.z -= lumaSe.y;
- #endif
-/*--------------------------------------------------------------------------*/
-// (5)
- half4 dir1_pos;
- dir1_pos.xy = normalize(dir.xyz).xz;
- half dirAbsMinTimesC = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
-/*--------------------------------------------------------------------------*/
-// (6)
- half4 dir2_pos;
- dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimesC, half(-2.0), half(2.0));
- dir1_pos.zw = pos.xy;
- dir2_pos.zw = pos.xy;
- half4 temp1N;
- temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
-/*--------------------------------------------------------------------------*/
-// (7)
- temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
- half4 rgby1;
- rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
-/*--------------------------------------------------------------------------*/
-// (8)
- rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
- rgby1 = (temp1N + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (9)
- half4 temp2N;
- temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
-/*--------------------------------------------------------------------------*/
-// (10)
- half4 rgby2;
- rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
- rgby2 = (temp2N + rgby2) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (11)
- // compilier moves these scalar ops up to other cycles
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMin = min(min(lumaNw.w, lumaSw.w), min(lumaNe.w, lumaSe.w));
- half lumaMax = max(max(lumaNw.w, lumaSw.w), max(lumaNe.w, lumaSe.w));
- #else
- half lumaMin = min(min(lumaNw.y, lumaSw.y), min(lumaNe.y, lumaSe.y));
- half lumaMax = max(max(lumaNw.y, lumaSw.y), max(lumaNe.y, lumaSe.y));
- #endif
- rgby2 = (rgby2 + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (12)
- #if (FXAA_GREEN_AS_LUMA == 0)
- bool twoTapLt = rgby2.w < lumaMin;
- bool twoTapGt = rgby2.w > lumaMax;
- #else
- bool twoTapLt = rgby2.y < lumaMin;
- bool twoTapGt = rgby2.y > lumaMax;
- #endif
-/*--------------------------------------------------------------------------*/
-// (13)
- if(twoTapLt || twoTapGt) rgby2 = rgby1;
-/*--------------------------------------------------------------------------*/
- return rgby2; }
-/*==========================================================================*/
-#endif
-
-
-
-/*============================================================================
-
- FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (WITH EARLY EXIT)
-
-==============================================================================
-The code mostly matches the assembly.
-I have a feeling that 14 cycles is possible, but was not able to get there.
-Might have to increase register count to get full performance.
-Note this shader does not use perspective interpolation.
-
-Use the following cgc options,
-
- --fenable-bx2 --fastmath --fastprecision --nofloatbindings
-
-Use of FXAA_GREEN_AS_LUMA currently adds a cycle (16 clks).
-Will look at fixing this for FXAA 3.12.
-------------------------------------------------------------------------------
- NVSHADERPERF OUTPUT
-------------------------------------------------------------------------------
-For reference and to aid in debug, output of NVShaderPerf should match this,
-
-Shader to schedule:
- 0: texpkb h0.w(TRUE), v5.zyxx, #0
- 2: addh h2.y(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
- 4: texpkb h1.w(TRUE), v5.xwxx, #0
- 6: addh h0.x(TRUE), h1.w, -h2.y
- 7: texpkb h2.w(TRUE), v5.zwzz, #0
- 9: minh h4.w(TRUE), h2.y, h2
- 10: maxh h5.x(TRUE), h2.y, h2.w
- 11: texpkb h0.w(TRUE), v5, #0
- 13: addh h3.w(TRUE), -h0, h0.x
- 14: addh h0.x(TRUE), h0.w, h0
- 15: addh h0.z(TRUE), -h2.w, h0.x
- 16: addh h0.x(TRUE), h2.w, h3.w
- 17: minh h5.y(TRUE), h0.w, h1.w
- 18: nrmh h2.xz(TRUE), h0_n
- 19: minh_m8 h2.w(TRUE), |h2.x|, |h2.z|
- 20: divx h4.xy(TRUE), h2_n.xzzw, h2_n.w
- 21: movr r1.zw(TRUE), v4.xxxy
- 22: maxh h2.w(TRUE), h0, h1
- 23: fenct TRUE
- 24: madr r0.xy(TRUE), -h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
- 26: texpkb h0(TRUE), r0, #0
- 28: maxh h5.x(TRUE), h2.w, h5
- 29: minh h5.w(TRUE), h5.y, h4
- 30: madr r1.xy(TRUE), h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
- 32: texpkb h2(TRUE), r1, #0
- 34: addh_d2 h2(TRUE), h0, h2
- 35: texpkb h1(TRUE), v4, #0
- 37: maxh h5.y(TRUE), h5.x, h1.w
- 38: minh h4.w(TRUE), h1, h5
- 39: madr r0.xy(TRUE), -h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 41: texpkb h0(TRUE), r0, #0
- 43: addh_m8 h5.z(TRUE), h5.y, -h4.w
- 44: madr r2.xy(TRUE), h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
- 46: texpkb h3(TRUE), r2, #0
- 48: addh_d2 h0(TRUE), h0, h3
- 49: addh_d2 h3(TRUE), h0, h2
- 50: movh h0(TRUE), h3
- 51: slth h3.x(TRUE), h3.w, h5.w
- 52: sgth h3.w(TRUE), h3, h5.x
- 53: addx.c0 rc(TRUE), h3.x, h3
- 54: slth.c0 rc(TRUE), h5.z, h5
- 55: movh h0(c0.NE.w), h2
- 56: movh h0(c0.NE.x), h1
-
-IPU0 ------ Simplified schedule: --------
-Pass | Unit | uOp | PC: Op
------+--------+------+-------------------------
- 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
- | SCB0 | add | 2: ADDh h2.y, h0.-w--, const.-x--;
- | | |
- 2 | SCT0/1 | mov | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | TEX | txl | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
- | SCB0 | add | 6: ADDh h0.x, h1.w---,-h2.y---;
- | | |
- 3 | SCT0/1 | mov | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | TEX | txl | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
- | SCB0 | max | 10: MAXh h5.x, h2.y---, h2.w---;
- | SCB1 | min | 9: MINh h4.w, h2.---y, h2;
- | | |
- 4 | SCT0/1 | mov | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
- | TEX | txl | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
- | SCB0 | add | 14: ADDh h0.x, h0.w---, h0;
- | SCB1 | add | 13: ADDh h3.w,-h0, h0.---x;
- | | |
- 5 | SCT0 | mad | 16: ADDh h0.x, h2.w---, h3.w---;
- | SCT1 | mad | 15: ADDh h0.z,-h2.--w-, h0.--x-;
- | SCB0 | min | 17: MINh h5.y, h0.-w--, h1.-w--;
- | | |
- 6 | SCT1 | mov | 18: NRMh h2.xz, h0;
- | SRB | nrm | 18: NRMh h2.xz, h0;
- | SCB1 | min | 19: MINh*8 h2.w, |h2.---x|, |h2.---z|;
- | | |
- 7 | SCT0 | div | 20: DIVx h4.xy, h2.xz--, h2.ww--;
- | SCT1 | mov | 21: MOVr r1.zw, g[TEX0].--xy;
- | SCB1 | max | 22: MAXh h2.w, h0, h1;
- | | |
- 8 | SCT0 | mad | 24: MADr r0.xy,-h2.xz--, const.zw--, r1.zw--;
- | SCT1 | mov | 26: TXLr h0, r0, const.xxxx, TEX0;
- | TEX | txl | 26: TXLr h0, r0, const.xxxx, TEX0;
- | SCB0 | max | 28: MAXh h5.x, h2.w---, h5;
- | SCB1 | min | 29: MINh h5.w, h5.---y, h4;
- | | |
- 9 | SCT0 | mad | 30: MADr r1.xy, h2.xz--, const.zw--, r1.zw--;
- | SCT1 | mov | 32: TXLr h2, r1, const.xxxx, TEX0;
- | TEX | txl | 32: TXLr h2, r1, const.xxxx, TEX0;
- | SCB0/1 | add | 34: ADDh/2 h2, h0, h2;
- | | |
- 10 | SCT0/1 | mov | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
- | TEX | txl | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
- | SCB0 | max | 37: MAXh h5.y, h5.-x--, h1.-w--;
- | SCB1 | min | 38: MINh h4.w, h1, h5;
- | | |
- 11 | SCT0 | mad | 39: MADr r0.xy,-h4, const.xy--, r1.zw--;
- | SCT1 | mov | 41: TXLr h0, r0, const.zzzz, TEX0;
- | TEX | txl | 41: TXLr h0, r0, const.zzzz, TEX0;
- | SCB0 | mad | 44: MADr r2.xy, h4, const.xy--, r1.zw--;
- | SCB1 | add | 43: ADDh*8 h5.z, h5.--y-,-h4.--w-;
- | | |
- 12 | SCT0/1 | mov | 46: TXLr h3, r2, const.xxxx, TEX0;
- | TEX | txl | 46: TXLr h3, r2, const.xxxx, TEX0;
- | SCB0/1 | add | 48: ADDh/2 h0, h0, h3;
- | | |
- 13 | SCT0/1 | mad | 49: ADDh/2 h3, h0, h2;
- | SCB0/1 | mul | 50: MOVh h0, h3;
- | | |
- 14 | SCT0 | set | 51: SLTh h3.x, h3.w---, h5.w---;
- | SCT1 | set | 52: SGTh h3.w, h3, h5.---x;
- | SCB0 | set | 54: SLThc0 rc, h5.z---, h5;
- | SCB1 | add | 53: ADDxc0_s rc, h3.---x, h3;
- | | |
- 15 | SCT0/1 | mul | 55: MOVh h0(NE0.wwww), h2;
- | SCB0/1 | mul | 56: MOVh h0(NE0.xxxx), h1;
-
-Pass SCT TEX SCB
- 1: 0% 100% 25%
- 2: 0% 100% 25%
- 3: 0% 100% 50%
- 4: 0% 100% 50%
- 5: 50% 0% 25%
- 6: 0% 0% 25%
- 7: 100% 0% 25%
- 8: 0% 100% 50%
- 9: 0% 100% 100%
- 10: 0% 100% 50%
- 11: 0% 100% 75%
- 12: 0% 100% 100%
- 13: 100% 0% 100%
- 14: 50% 0% 50%
- 15: 100% 0% 100%
-
-MEAN: 26% 60% 56%
-
-Pass SCT0 SCT1 TEX SCB0 SCB1
- 1: 0% 0% 100% 100% 0%
- 2: 0% 0% 100% 100% 0%
- 3: 0% 0% 100% 100% 100%
- 4: 0% 0% 100% 100% 100%
- 5: 100% 100% 0% 100% 0%
- 6: 0% 0% 0% 0% 100%
- 7: 100% 100% 0% 0% 100%
- 8: 0% 0% 100% 100% 100%
- 9: 0% 0% 100% 100% 100%
- 10: 0% 0% 100% 100% 100%
- 11: 0% 0% 100% 100% 100%
- 12: 0% 0% 100% 100% 100%
- 13: 100% 100% 0% 100% 100%
- 14: 100% 100% 0% 100% 100%
- 15: 100% 100% 0% 100% 100%
-
-MEAN: 33% 33% 60% 86% 80%
-Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
-Results 15 cycles, 3 r regs, 800,000,000 pixels/s
-============================================================================*/
-#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 1)
-/*--------------------------------------------------------------------------*/
-#pragma regcount 7
-#pragma disablepc all
-#pragma option O2
-#pragma option OutColorPrec=fp16
-#pragma texformat default RGBA8
-/*==========================================================================*/
-half4 FxaaPixelShader(
- // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
- FxaaFloat2 pos,
- FxaaFloat4 fxaaConsolePosPos,
- FxaaTex tex,
- FxaaTex fxaaConsole360TexExpBiasNegOne,
- FxaaTex fxaaConsole360TexExpBiasNegTwo,
- FxaaFloat2 fxaaQualityRcpFrame,
- FxaaFloat4 fxaaConsoleRcpFrameOpt,
- FxaaFloat4 fxaaConsoleRcpFrameOpt2,
- FxaaFloat4 fxaaConsole360RcpFrameOpt2,
- FxaaFloat fxaaQualitySubpix,
- FxaaFloat fxaaQualityEdgeThreshold,
- FxaaFloat fxaaQualityEdgeThresholdMin,
- FxaaFloat fxaaConsoleEdgeSharpness,
- FxaaFloat fxaaConsoleEdgeThreshold,
- FxaaFloat fxaaConsoleEdgeThresholdMin,
- FxaaFloat4 fxaaConsole360ConstDir
-) {
-/*--------------------------------------------------------------------------*/
-// (1)
- half4 rgbyNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaNe = rgbyNe.w + half(1.0/512.0);
- #else
- half lumaNe = rgbyNe.y + half(1.0/512.0);
- #endif
-/*--------------------------------------------------------------------------*/
-// (2)
- half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaSwNegNe = lumaSw.w - lumaNe;
- #else
- half lumaSwNegNe = lumaSw.y - lumaNe;
- #endif
-/*--------------------------------------------------------------------------*/
-// (3)
- half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMaxNwSw = max(lumaNw.w, lumaSw.w);
- half lumaMinNwSw = min(lumaNw.w, lumaSw.w);
- #else
- half lumaMaxNwSw = max(lumaNw.y, lumaSw.y);
- half lumaMinNwSw = min(lumaNw.y, lumaSw.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (4)
- half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half dirZ = lumaNw.w + lumaSwNegNe;
- half dirX = -lumaNw.w + lumaSwNegNe;
- #else
- half dirZ = lumaNw.y + lumaSwNegNe;
- half dirX = -lumaNw.y + lumaSwNegNe;
- #endif
-/*--------------------------------------------------------------------------*/
-// (5)
- half3 dir;
- dir.y = 0.0;
- #if (FXAA_GREEN_AS_LUMA == 0)
- dir.x = lumaSe.w + dirX;
- dir.z = -lumaSe.w + dirZ;
- half lumaMinNeSe = min(lumaNe, lumaSe.w);
- #else
- dir.x = lumaSe.y + dirX;
- dir.z = -lumaSe.y + dirZ;
- half lumaMinNeSe = min(lumaNe, lumaSe.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (6)
- half4 dir1_pos;
- dir1_pos.xy = normalize(dir).xz;
- half dirAbsMinTimes8 = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
-/*--------------------------------------------------------------------------*/
-// (7)
- half4 dir2_pos;
- dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimes8, half(-2.0), half(2.0));
- dir1_pos.zw = pos.xy;
- dir2_pos.zw = pos.xy;
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMaxNeSe = max(lumaNe, lumaSe.w);
- #else
- half lumaMaxNeSe = max(lumaNe, lumaSe.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (8)
- half4 temp1N;
- temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
- temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
- half lumaMax = max(lumaMaxNwSw, lumaMaxNeSe);
- half lumaMin = min(lumaMinNwSw, lumaMinNeSe);
-/*--------------------------------------------------------------------------*/
-// (9)
- half4 rgby1;
- rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
- rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
- rgby1 = (temp1N + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (10)
- half4 rgbyM = h4tex2Dlod(tex, half4(pos.xy, 0.0, 0.0));
- #if (FXAA_GREEN_AS_LUMA == 0)
- half lumaMaxM = max(lumaMax, rgbyM.w);
- half lumaMinM = min(lumaMin, rgbyM.w);
- #else
- half lumaMaxM = max(lumaMax, rgbyM.y);
- half lumaMinM = min(lumaMin, rgbyM.y);
- #endif
-/*--------------------------------------------------------------------------*/
-// (11)
- half4 temp2N;
- temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
- half4 rgby2;
- rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
- half lumaRangeM = (lumaMaxM - lumaMinM) / FXAA_CONSOLE__PS3_EDGE_THRESHOLD;
-/*--------------------------------------------------------------------------*/
-// (12)
- rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
- rgby2 = (temp2N + rgby2) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (13)
- rgby2 = (rgby2 + rgby1) * 0.5;
-/*--------------------------------------------------------------------------*/
-// (14)
- #if (FXAA_GREEN_AS_LUMA == 0)
- bool twoTapLt = rgby2.w < lumaMin;
- bool twoTapGt = rgby2.w > lumaMax;
- #else
- bool twoTapLt = rgby2.y < lumaMin;
- bool twoTapGt = rgby2.y > lumaMax;
- #endif
- bool earlyExit = lumaRangeM < lumaMax;
- bool twoTap = twoTapLt || twoTapGt;
-/*--------------------------------------------------------------------------*/
-// (15)
- if(twoTap) rgby2 = rgby1;
- if(earlyExit) rgby2 = rgbyM;
-/*--------------------------------------------------------------------------*/
- return rgby2; }
-/*==========================================================================*/
-#endif
-
-uniform sampler2D diffuseMap;
-
-uniform vec2 rcp_screen_res;
-uniform vec4 rcp_frame_opt;
-uniform vec4 rcp_frame_opt2;
uniform vec2 screen_res;
VARYING vec2 vary_fragcoord;
-VARYING vec2 vary_tc;
void main()
{
- vec4 diff = FxaaPixelShader(vary_tc, //pos
- vec4(vary_fragcoord.xy, 0, 0), //fxaaConsolePosPos
- diffuseMap, //tex
- diffuseMap,
- diffuseMap,
- rcp_screen_res, //fxaaQualityRcpFrame
- vec4(0,0,0,0), //fxaaConsoleRcpFrameOpt
- rcp_frame_opt, //fxaaConsoleRcpFrameOpt2
- rcp_frame_opt2, //fxaaConsole360RcpFrameOpt2
- 0.75, //fxaaQualitySubpix
- 0.07, //fxaaQualityEdgeThreshold
- 0.03, //fxaaQualityEdgeThresholdMin
- 8.0, //fxaaConsoleEdgeSharpness
- 0.125, //fxaaConsoleEdgeThreshold
- 0.05, //fxaaConsoleEdgeThresholdMin
- vec4(0,0,0,0)); //fxaaConsole360ConstDir
-
-
-
- //diff = texture2D(diffuseMap, vary_tc);
-
- gl_FragColor = diff;
+ vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
+ vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
+ gl_FragColor = diff + bloom;
}
+
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 9fb804a74f..d22e5f0af2 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -187,21 +187,6 @@ static bool handleReleaseGLBufferChanged(const LLSD& newvalue)
return true;
}
-static bool handleFSAASamplesChanged(const LLSD& newvalue)
-{
- if (gPipeline.isInit())
- {
- gPipeline.releaseGLBuffers();
- gPipeline.createGLBuffers();
-
- if (LLPipeline::sRenderDeferred)
- {
- LLViewerShaderMgr::instance()->setShaders();
- }
- }
- return true;
-}
-
static bool handleAnisotropicChanged(const LLSD& newvalue)
{
LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean();
@@ -603,7 +588,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
- gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleFSAASamplesChanged, _2));
gSavedSettings.getControl("RenderAnisotropic")->getSignal()->connect(boost::bind(&handleAnisotropicChanged, _2));
gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 8e59a7c32d..48d4471bdf 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -187,6 +187,7 @@ LLGLSLShader gDeferredGIProgram;
LLGLSLShader gDeferredGIFinalProgram;
LLGLSLShader gDeferredPostGIProgram;
LLGLSLShader gDeferredPostProgram;
+LLGLSLShader gFXAAProgram;
LLGLSLShader gDeferredPostNoDoFProgram;
LLGLSLShader gDeferredWLSkyProgram;
LLGLSLShader gDeferredWLCloudProgram;
@@ -275,6 +276,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
mShaderList.push_back(&gDeferredPostGIProgram);
mShaderList.push_back(&gDeferredEdgeProgram);
mShaderList.push_back(&gDeferredPostProgram);
+ mShaderList.push_back(&gFXAAProgram);
mShaderList.push_back(&gDeferredGIProgram);
mShaderList.push_back(&gDeferredGIFinalProgram);
mShaderList.push_back(&gDeferredWaterProgram);
@@ -463,7 +465,6 @@ void LLViewerShaderMgr::setShaders()
//setup preprocessor definitions
- LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")));
LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
reentrance = true;
@@ -1032,9 +1033,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
{
BOOL success = TRUE;
- U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
- bool multisample = samples > 1 && LLPipeline::sRenderDeferred && gGLManager.mHasTextureMultisample;
-
if (mVertexShaderLevel[SHADER_EFFECT] == 0)
{
gGlowProgram.unload();
@@ -1060,21 +1058,10 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
if (success)
{
- std::string fragment;
-
- if (multisample)
- {
- fragment = "effects/glowExtractMSF.glsl";
- }
- else
- {
- fragment = "effects/glowExtractF.glsl";
- }
-
gGlowExtractProgram.mName = "Glow Extract Shader (Post)";
gGlowExtractProgram.mShaderFiles.clear();
gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractV.glsl", GL_VERTEX_SHADER_ARB));
- gGlowExtractProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractF.glsl", GL_FRAGMENT_SHADER_ARB));
gGlowExtractProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
success = gGlowExtractProgram.createShader(NULL, &mGlowExtractUniforms);
if (!success)
@@ -1124,6 +1111,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostGIProgram.unload();
gDeferredEdgeProgram.unload();
gDeferredPostProgram.unload();
+ gFXAAProgram.unload();
gLuminanceGatherProgram.unload();
gDeferredGIProgram.unload();
gDeferredGIFinalProgram.unload();
@@ -1138,9 +1126,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
BOOL success = TRUE;
- U32 samples = gSavedSettings.getU32("RenderFSAASamples");
- bool multisample = samples > 1;
-
if (success)
{
gDeferredDiffuseProgram.mName = "Deferred Diffuse Shader";
@@ -1524,40 +1509,30 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
- std::string fragment;
- if (multisample)
- {
- fragment = "deferred/postDeferredF.glsl";
- }
- else
- {
- fragment = "deferred/postDeferredNoFXAAF.glsl";
- }
+ gFXAAProgram.mName = "FXAA Shader";
+ gFXAAProgram.mShaderFiles.clear();
+ gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+ gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/fxaaF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gFXAAProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+ success = gFXAAProgram.createShader(NULL, NULL);
+ }
+ if (success)
+ {
gDeferredPostProgram.mName = "Deferred Post Shader";
gDeferredPostProgram.mShaderFiles.clear();
gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredPostProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredPostProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredPostProgram.createShader(NULL, NULL);
}
if (success)
{
- std::string fragment;
- if (multisample)
- {
- fragment = "deferred/postDeferredNoDoFF.glsl";
- }
- else
- {
- fragment = "deferred/postDeferredNoDoFNoFXAAF.glsl";
- }
-
gDeferredPostNoDoFProgram.mName = "Deferred Post Shader";
gDeferredPostNoDoFProgram.mShaderFiles.clear();
gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+ gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDOFF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredPostNoDoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredPostNoDoFProgram.createShader(NULL, NULL);
}
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index 9988d1d4f7..aeb8553fa1 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -392,6 +392,7 @@ extern LLGLSLShader gDeferredShadowProgram;
extern LLGLSLShader gDeferredShadowAlphaMaskProgram;
extern LLGLSLShader gDeferredPostGIProgram;
extern LLGLSLShader gDeferredPostProgram;
+extern LLGLSLShader gFXAAProgram;
extern LLGLSLShader gDeferredPostNoDoFProgram;
extern LLGLSLShader gDeferredAvatarShadowProgram;
extern LLGLSLShader gDeferredAttachmentShadowProgram;
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 2bbb2edc1a..db9675650a 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -6358,8 +6358,39 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGL.vertex2f(3,-1);
gGL.end();
+ gGL.flush();
+
gGlowCombineFXAAProgram.unbind();
mFXAABuffer.flush();
+
+ mScreen.bindTarget();
+ LLGLSLShader* shader = &gFXAAProgram;
+ shader->bind();
+
+ S32 channel = shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP, mFXAABuffer.getUsage());
+ if (channel > -1)
+ {
+ mFXAABuffer.bindTexture(0, channel);
+ gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
+ }
+
+
+ F32 scale_x = (F32) width/mFXAABuffer.getWidth();
+ F32 scale_y = (F32) height/mFXAABuffer.getHeight();
+ shader->uniform2f("tc_scale", scale_x, scale_y);
+ shader->uniform2f("rcp_screen_res", 1.f/width*scale_x, 1.f/height*scale_y);
+ shader->uniform4f("rcp_frame_opt", -0.5f/width*scale_x, -0.5f/height*scale_y, 0.5f/width*scale_x, 0.5f/height*scale_y);
+ shader->uniform4f("rcp_frame_opt2", -2.f/width*scale_x, -2.f/height*scale_y, 2.f/width*scale_x, 2.f/height*scale_y);
+
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.vertex2f(-1,-1);
+ gGL.vertex2f(-1,3);
+ gGL.vertex2f(3,-1);
+ gGL.end();
+
+ gGL.flush();
+ mScreen.flush();
+ shader->unbind();
}
gViewerWindow->setup3DViewport();
@@ -6382,13 +6413,6 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
S32 width = mScreen.getWidth();
S32 height = mScreen.getHeight();
- F32 scale_x = (F32) width/mFXAABuffer.getWidth();
- F32 scale_y = (F32) height/mFXAABuffer.getHeight();
- shader->uniform2f("tc_scale", scale_x, scale_y);
- shader->uniform2f("rcp_screen_res", 1.f/width*scale_x, 1.f/height*scale_y);
- shader->uniform4f("rcp_frame_opt", -0.5f/width*scale_x, -0.5f/height*scale_y, 0.5f/width*scale_x, 0.5f/height*scale_y);
- shader->uniform4f("rcp_frame_opt2", -2.f/width*scale_x, -2.f/height*scale_y, 2.f/width*scale_x, 2.f/height*scale_y);
-
if (dof_enabled)
{
//depth of field focal plane calculations
@@ -6501,24 +6525,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
shader->uniform1f("magnification", magnification);
}
- if (multisample)
- {
- S32 channel = shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP, mFXAABuffer.getUsage());
- if (channel > -1)
- {
- mFXAABuffer.bindTexture(0, channel);
- gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
- }
- }
- else
+ S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+ if (channel > -1)
{
- S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
- if (channel > -1)
- {
- mScreen.bindTexture(0, channel);
- }
+ mScreen.bindTexture(0, channel);
}
-
gGL.begin(LLRender::TRIANGLE_STRIP);
gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
--
cgit v1.3
From 22d52ab5833850c88a3b143123aef2142b836c70 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Thu, 29 Sep 2011 23:04:10 -0500
Subject: SH-2465 Move FXAA to its own pass independent of DoF (also removes
the need to reload shaders when toggling FSAA on and off)
---
.../shaders/class1/deferred/fxaaF.glsl | 2118 ++++++++++++++++++++
.../class1/deferred/postDeferredNoDoFNoFXAAF.glsl | 45 -
.../class1/deferred/postDeferredNoFXAAF.glsl | 157 --
.../shaders/class1/effects/glowExtractMSF.glsl | 60 -
4 files changed, 2118 insertions(+), 262 deletions(-)
create mode 100644 indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl
delete mode 100644 indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
new file mode 100644
index 0000000000..5af9406452
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
@@ -0,0 +1,2118 @@
+/**
+ * @file fxaaF.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$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+#define FXAA_PC 1
+//#define FXAA_GLSL_130 1
+#define FXAA_QUALITY__PRESET 12
+
+/*============================================================================
+
+
+ NVIDIA FXAA 3.11 by TIMOTHY LOTTES
+
+
+------------------------------------------------------------------------------
+COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
+------------------------------------------------------------------------------
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
+*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
+OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
+CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
+LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
+OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
+THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+------------------------------------------------------------------------------
+ INTEGRATION CHECKLIST
+------------------------------------------------------------------------------
+(1.)
+In the shader source, setup defines for the desired configuration.
+When providing multiple shaders (for different presets),
+simply setup the defines differently in multiple files.
+Example,
+
+ #define FXAA_PC 1
+ #define FXAA_HLSL_5 1
+ #define FXAA_QUALITY__PRESET 12
+
+Or,
+
+ #define FXAA_360 1
+
+Or,
+
+ #define FXAA_PS3 1
+
+Etc.
+
+(2.)
+Then include this file,
+
+ #include "Fxaa3_11.h"
+
+(3.)
+Then call the FXAA pixel shader from within your desired shader.
+Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
+As for FXAA 3.11 all inputs for all shaders are the same
+to enable easy porting between platforms.
+
+ return FxaaPixelShader(...);
+
+(4.)
+Insure pass prior to FXAA outputs RGBL (see next section).
+Or use,
+
+ #define FXAA_GREEN_AS_LUMA 1
+
+(5.)
+Setup engine to provide the following constants
+which are used in the FxaaPixelShader() inputs,
+
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+
+Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
+
+(6.)
+Have FXAA vertex shader run as a full screen triangle,
+and output "pos" and "fxaaConsolePosPos"
+such that inputs in the pixel shader provide,
+
+ // {xy} = center of pixel
+ FxaaFloat2 pos,
+
+ // {xy__} = upper left of pixel
+ // {__zw} = lower right of pixel
+ FxaaFloat4 fxaaConsolePosPos,
+
+(7.)
+Insure the texture sampler(s) used by FXAA are set to bilinear filtering.
+
+
+------------------------------------------------------------------------------
+ INTEGRATION - RGBL AND COLORSPACE
+------------------------------------------------------------------------------
+FXAA3 requires RGBL as input unless the following is set,
+
+ #define FXAA_GREEN_AS_LUMA 1
+
+In which case the engine uses green in place of luma,
+and requires RGB input is in a non-linear colorspace.
+
+RGB should be LDR (low dynamic range).
+Specifically do FXAA after tonemapping.
+
+RGB data as returned by a texture fetch can be non-linear,
+or linear when FXAA_GREEN_AS_LUMA is not set.
+Note an "sRGB format" texture counts as linear,
+because the result of a texture fetch is linear data.
+Regular "RGBA8" textures in the sRGB colorspace are non-linear.
+
+If FXAA_GREEN_AS_LUMA is not set,
+luma must be stored in the alpha channel prior to running FXAA.
+This luma should be in a perceptual space (could be gamma 2.0).
+Example pass before FXAA where output is gamma 2.0 encoded,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ color.rgb = sqrt(color.rgb); // gamma 2.0 color output
+ return color;
+
+To use FXAA,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ color.rgb = sqrt(color.rgb); // gamma 2.0 color output
+ color.a = dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114)); // compute luma
+ return color;
+
+Another example where output is linear encoded,
+say for instance writing to an sRGB formated render target,
+where the render target does the conversion back to sRGB after blending,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ return color;
+
+To use FXAA,
+
+ color.rgb = ToneMap(color.rgb); // linear color output
+ color.a = sqrt(dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114))); // compute luma
+ return color;
+
+Getting luma correct is required for the algorithm to work correctly.
+
+
+------------------------------------------------------------------------------
+ BEING LINEARLY CORRECT?
+------------------------------------------------------------------------------
+Applying FXAA to a framebuffer with linear RGB color will look worse.
+This is very counter intuitive, but happends to be true in this case.
+The reason is because dithering artifacts will be more visiable
+in a linear colorspace.
+
+
+------------------------------------------------------------------------------
+ COMPLEX INTEGRATION
+------------------------------------------------------------------------------
+Q. What if the engine is blending into RGB before wanting to run FXAA?
+
+A. In the last opaque pass prior to FXAA,
+ have the pass write out luma into alpha.
+ Then blend into RGB only.
+ FXAA should be able to run ok
+ assuming the blending pass did not any add aliasing.
+ This should be the common case for particles and common blending passes.
+
+A. Or use FXAA_GREEN_AS_LUMA.
+
+============================================================================*/
+
+/*============================================================================
+
+ INTEGRATION KNOBS
+
+============================================================================*/
+//
+// FXAA_PS3 and FXAA_360 choose the console algorithm (FXAA3 CONSOLE).
+// FXAA_360_OPT is a prototype for the new optimized 360 version.
+//
+// 1 = Use API.
+// 0 = Don't use API.
+//
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_PS3
+ #define FXAA_PS3 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_360
+ #define FXAA_360 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_360_OPT
+ #define FXAA_360_OPT 0
+#endif
+/*==========================================================================*/
+#ifndef FXAA_PC
+ //
+ // FXAA Quality
+ // The high quality PC algorithm.
+ //
+ #define FXAA_PC 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_PC_CONSOLE
+ //
+ // The console algorithm for PC is included
+ // for developers targeting really low spec machines.
+ // Likely better to just run FXAA_PC, and use a really low preset.
+ //
+ #define FXAA_PC_CONSOLE 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GLSL_120
+ #define FXAA_GLSL_120 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GLSL_130
+ #define FXAA_GLSL_130 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_3
+ #define FXAA_HLSL_3 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_4
+ #define FXAA_HLSL_4 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_5
+ #define FXAA_HLSL_5 0
+#endif
+/*==========================================================================*/
+#ifndef FXAA_GREEN_AS_LUMA
+ //
+ // For those using non-linear color,
+ // and either not able to get luma in alpha, or not wanting to,
+ // this enables FXAA to run using green as a proxy for luma.
+ // So with this enabled, no need to pack luma in alpha.
+ //
+ // This will turn off AA on anything which lacks some amount of green.
+ // Pure red and blue or combination of only R and B, will get no AA.
+ //
+ // Might want to lower the settings for both,
+ // fxaaConsoleEdgeThresholdMin
+ // fxaaQualityEdgeThresholdMin
+ // In order to insure AA does not get turned off on colors
+ // which contain a minor amount of green.
+ //
+ // 1 = On.
+ // 0 = Off.
+ //
+ #define FXAA_GREEN_AS_LUMA 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_EARLY_EXIT
+ //
+ // Controls algorithm's early exit path.
+ // On PS3 turning this ON adds 2 cycles to the shader.
+ // On 360 turning this OFF adds 10ths of a millisecond to the shader.
+ // Turning this off on console will result in a more blurry image.
+ // So this defaults to on.
+ //
+ // 1 = On.
+ // 0 = Off.
+ //
+ #define FXAA_EARLY_EXIT 1
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_DISCARD
+ //
+ // Only valid for PC OpenGL currently.
+ // Probably will not work when FXAA_GREEN_AS_LUMA = 1.
+ //
+ // 1 = Use discard on pixels which don't need AA.
+ // For APIs which enable concurrent TEX+ROP from same surface.
+ // 0 = Return unchanged color on pixels which don't need AA.
+ //
+ #define FXAA_DISCARD 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_FAST_PIXEL_OFFSET
+ //
+ // Used for GLSL 120 only.
+ //
+ // 1 = GL API supports fast pixel offsets
+ // 0 = do not use fast pixel offsets
+ //
+ #ifdef GL_EXT_gpu_shader4
+ #define FXAA_FAST_PIXEL_OFFSET 1
+ #endif
+ #ifdef GL_NV_gpu_shader5
+ #define FXAA_FAST_PIXEL_OFFSET 1
+ #endif
+ #ifdef GL_ARB_gpu_shader5
+ #define FXAA_FAST_PIXEL_OFFSET 1
+ #endif
+ #ifndef FXAA_FAST_PIXEL_OFFSET
+ #define FXAA_FAST_PIXEL_OFFSET 0
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GATHER4_ALPHA
+ //
+ // 1 = API supports gather4 on alpha channel.
+ // 0 = API does not support gather4 on alpha channel.
+ //
+ #if (FXAA_HLSL_5 == 1)
+ #define FXAA_GATHER4_ALPHA 1
+ #endif
+ #ifdef GL_ARB_gpu_shader5
+ #define FXAA_GATHER4_ALPHA 1
+ #endif
+ #ifdef GL_NV_gpu_shader5
+ #define FXAA_GATHER4_ALPHA 1
+ #endif
+ #ifndef FXAA_GATHER4_ALPHA
+ #define FXAA_GATHER4_ALPHA 0
+ #endif
+#endif
+
+/*============================================================================
+ FXAA CONSOLE PS3 - TUNING KNOBS
+============================================================================*/
+#ifndef FXAA_CONSOLE__PS3_EDGE_SHARPNESS
+ //
+ // Consoles the sharpness of edges on PS3 only.
+ // Non-PS3 tuning is done with shader input.
+ //
+ // Due to the PS3 being ALU bound,
+ // there are only two safe values here: 4 and 8.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ //
+ // 8.0 is sharper
+ // 4.0 is softer
+ // 2.0 is really soft (good for vector graphics inputs)
+ //
+ #if 1
+ #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 8.0
+ #endif
+ #if 0
+ #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 4.0
+ #endif
+ #if 0
+ #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 2.0
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_CONSOLE__PS3_EDGE_THRESHOLD
+ //
+ // Only effects PS3.
+ // Non-PS3 tuning is done with shader input.
+ //
+ // The minimum amount of local contrast required to apply algorithm.
+ // The console setting has a different mapping than the quality setting.
+ //
+ // This only applies when FXAA_EARLY_EXIT is 1.
+ //
+ // Due to the PS3 being ALU bound,
+ // there are only two safe values here: 0.25 and 0.125.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ //
+ // 0.125 leaves less aliasing, but is softer
+ // 0.25 leaves more aliasing, and is sharper
+ //
+ #if 1
+ #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.125
+ #else
+ #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.25
+ #endif
+#endif
+
+/*============================================================================
+ FXAA QUALITY - TUNING KNOBS
+------------------------------------------------------------------------------
+NOTE the other tuning knobs are now in the shader function inputs!
+============================================================================*/
+#ifndef FXAA_QUALITY__PRESET
+ //
+ // Choose the quality preset.
+ // This needs to be compiled into the shader as it effects code.
+ // Best option to include multiple presets is to
+ // in each shader define the preset, then include this file.
+ //
+ // OPTIONS
+ // -----------------------------------------------------------------------
+ // 10 to 15 - default medium dither (10=fastest, 15=highest quality)
+ // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
+ // 39 - no dither, very expensive
+ //
+ // NOTES
+ // -----------------------------------------------------------------------
+ // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
+ // 13 = about same speed as FXAA 3.9 and better than 12
+ // 23 = closest to FXAA 3.9 visually and performance wise
+ // _ = the lowest digit is directly related to performance
+ // _ = the highest digit is directly related to style
+ //
+ #define FXAA_QUALITY__PRESET 12
+#endif
+
+
+/*============================================================================
+
+ FXAA QUALITY - PRESETS
+
+============================================================================*/
+
+/*============================================================================
+ FXAA QUALITY - MEDIUM DITHER PRESETS
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 10)
+ #define FXAA_QUALITY__PS 3
+ #define FXAA_QUALITY__P0 1.5
+ #define FXAA_QUALITY__P1 3.0
+ #define FXAA_QUALITY__P2 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 11)
+ #define FXAA_QUALITY__PS 4
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 3.0
+ #define FXAA_QUALITY__P3 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 12)
+ #define FXAA_QUALITY__PS 5
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 4.0
+ #define FXAA_QUALITY__P4 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 13)
+ #define FXAA_QUALITY__PS 6
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 4.0
+ #define FXAA_QUALITY__P5 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 14)
+ #define FXAA_QUALITY__PS 7
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 4.0
+ #define FXAA_QUALITY__P6 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 15)
+ #define FXAA_QUALITY__PS 8
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 4.0
+ #define FXAA_QUALITY__P7 12.0
+#endif
+
+/*============================================================================
+ FXAA QUALITY - LOW DITHER PRESETS
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 20)
+ #define FXAA_QUALITY__PS 3
+ #define FXAA_QUALITY__P0 1.5
+ #define FXAA_QUALITY__P1 2.0
+ #define FXAA_QUALITY__P2 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 21)
+ #define FXAA_QUALITY__PS 4
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 22)
+ #define FXAA_QUALITY__PS 5
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 23)
+ #define FXAA_QUALITY__PS 6
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 24)
+ #define FXAA_QUALITY__PS 7
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 3.0
+ #define FXAA_QUALITY__P6 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 25)
+ #define FXAA_QUALITY__PS 8
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 4.0
+ #define FXAA_QUALITY__P7 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 26)
+ #define FXAA_QUALITY__PS 9
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 4.0
+ #define FXAA_QUALITY__P8 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 27)
+ #define FXAA_QUALITY__PS 10
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 4.0
+ #define FXAA_QUALITY__P9 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 28)
+ #define FXAA_QUALITY__PS 11
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 2.0
+ #define FXAA_QUALITY__P9 4.0
+ #define FXAA_QUALITY__P10 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 29)
+ #define FXAA_QUALITY__PS 12
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.5
+ #define FXAA_QUALITY__P2 2.0
+ #define FXAA_QUALITY__P3 2.0
+ #define FXAA_QUALITY__P4 2.0
+ #define FXAA_QUALITY__P5 2.0
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 2.0
+ #define FXAA_QUALITY__P9 2.0
+ #define FXAA_QUALITY__P10 4.0
+ #define FXAA_QUALITY__P11 8.0
+#endif
+
+/*============================================================================
+ FXAA QUALITY - EXTREME QUALITY
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 39)
+ #define FXAA_QUALITY__PS 12
+ #define FXAA_QUALITY__P0 1.0
+ #define FXAA_QUALITY__P1 1.0
+ #define FXAA_QUALITY__P2 1.0
+ #define FXAA_QUALITY__P3 1.0
+ #define FXAA_QUALITY__P4 1.0
+ #define FXAA_QUALITY__P5 1.5
+ #define FXAA_QUALITY__P6 2.0
+ #define FXAA_QUALITY__P7 2.0
+ #define FXAA_QUALITY__P8 2.0
+ #define FXAA_QUALITY__P9 2.0
+ #define FXAA_QUALITY__P10 4.0
+ #define FXAA_QUALITY__P11 8.0
+#endif
+
+
+
+/*============================================================================
+
+ API PORTING
+
+============================================================================*/
+#if (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)
+ #define FxaaBool bool
+ #define FxaaDiscard discard
+ #define FxaaFloat float
+ #define FxaaFloat2 vec2
+ #define FxaaFloat3 vec3
+ #define FxaaFloat4 vec4
+ #define FxaaHalf float
+ #define FxaaHalf2 vec2
+ #define FxaaHalf3 vec3
+ #define FxaaHalf4 vec4
+ #define FxaaInt2 ivec2
+ #define FxaaSat(x) clamp(x, 0.0, 1.0)
+ #define FxaaTex sampler2D
+#else
+ #define FxaaBool bool
+ #define FxaaDiscard clip(-1)
+ #define FxaaFloat float
+ #define FxaaFloat2 float2
+ #define FxaaFloat3 float3
+ #define FxaaFloat4 float4
+ #define FxaaHalf half
+ #define FxaaHalf2 half2
+ #define FxaaHalf3 half3
+ #define FxaaHalf4 half4
+ #define FxaaSat(x) saturate(x)
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_GLSL_120 == 1)
+ // Requires,
+ // #version 120
+ // And at least,
+ // #extension GL_EXT_gpu_shader4 : enable
+ // (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)
+ #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
+ #if (FXAA_FAST_PIXEL_OFFSET == 1)
+ #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
+ #else
+ #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
+ #endif
+ #if (FXAA_GATHER4_ALPHA == 1)
+ // use #extension GL_ARB_gpu_shader5 : enable
+ #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
+ #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
+ #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
+ #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_GLSL_130 == 1)
+ // Requires "#version 130" or better
+ #define FxaaTexTop(t, p) textureLod(t, p, 0.0)
+ #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
+ #if (FXAA_GATHER4_ALPHA == 1)
+ // use #extension GL_ARB_gpu_shader5 : enable
+ #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
+ #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
+ #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
+ #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
+ #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_3 == 1) || (FXAA_360 == 1) || (FXAA_PS3 == 1)
+ #define FxaaInt2 float2
+ #define FxaaTex sampler2D
+ #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))
+ #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_4 == 1)
+ #define FxaaInt2 int2
+ struct FxaaTex { SamplerState smpl; Texture2D tex; };
+ #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
+ #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_5 == 1)
+ #define FxaaInt2 int2
+ struct FxaaTex { SamplerState smpl; Texture2D tex; };
+ #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
+ #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
+ #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)
+ #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)
+ #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)
+ #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)
+#endif
+
+
+/*============================================================================
+ GREEN AS LUMA OPTION SUPPORT FUNCTION
+============================================================================*/
+#if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }
+#else
+ FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
+#endif
+
+
+
+
+/*============================================================================
+
+ FXAA3 QUALITY - PC
+
+============================================================================*/
+#if (FXAA_PC == 1)
+/*--------------------------------------------------------------------------*/
+FxaaFloat4 FxaaPixelShader(
+ //
+ // Use noperspective interpolation here (turn off perspective interpolation).
+ // {xy} = center of pixel
+ FxaaFloat2 pos,
+ //
+ // Used only for FXAA Console, and not used on the 360 version.
+ // Use noperspective interpolation here (turn off perspective interpolation).
+ // {xy__} = upper left of pixel
+ // {__zw} = lower right of pixel
+ FxaaFloat4 fxaaConsolePosPos,
+ //
+ // Input color texture.
+ // {rgb_} = color in linear or perceptual color space
+ // if (FXAA_GREEN_AS_LUMA == 0)
+ // {___a} = luma in perceptual color space (not linear)
+ FxaaTex tex,
+ //
+ // Only used on the optimized 360 version of FXAA Console.
+ // For everything but 360, just use the same input here as for "tex".
+ // For 360, same texture, just alias with a 2nd sampler.
+ // This sampler needs to have an exponent bias of -1.
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ //
+ // Only used on the optimized 360 version of FXAA Console.
+ // For everything but 360, just use the same input here as for "tex".
+ // For 360, same texture, just alias with a 3nd sampler.
+ // This sampler needs to have an exponent bias of -2.
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ //
+ // Only used on FXAA Quality.
+ // This must be from a constant/uniform.
+ // {x_} = 1.0/screenWidthInPixels
+ // {_y} = 1.0/screenHeightInPixels
+ FxaaFloat2 fxaaQualityRcpFrame,
+ //
+ // Only used on FXAA Console.
+ // This must be from a constant/uniform.
+ // This effects sub-pixel AA quality and inversely sharpness.
+ // Where N ranges between,
+ // N = 0.50 (default)
+ // N = 0.33 (sharper)
+ // {x___} = -N/screenWidthInPixels
+ // {_y__} = -N/screenHeightInPixels
+ // {__z_} = N/screenWidthInPixels
+ // {___w} = N/screenHeightInPixels
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ //
+ // Only used on FXAA Console.
+ // Not used on 360, but used on PS3 and PC.
+ // This must be from a constant/uniform.
+ // {x___} = -2.0/screenWidthInPixels
+ // {_y__} = -2.0/screenHeightInPixels
+ // {__z_} = 2.0/screenWidthInPixels
+ // {___w} = 2.0/screenHeightInPixels
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ //
+ // Only used on FXAA Console.
+ // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.
+ // This must be from a constant/uniform.
+ // {x___} = 8.0/screenWidthInPixels
+ // {_y__} = 8.0/screenHeightInPixels
+ // {__z_} = -4.0/screenWidthInPixels
+ // {___w} = -4.0/screenHeightInPixels
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ //
+ // Only used on FXAA Quality.
+ // This used to be the FXAA_QUALITY__SUBPIX define.
+ // It is here now to allow easier tuning.
+ // Choose the amount of sub-pixel aliasing removal.
+ // This can effect sharpness.
+ // 1.00 - upper limit (softer)
+ // 0.75 - default amount of filtering
+ // 0.50 - lower limit (sharper, less sub-pixel aliasing removal)
+ // 0.25 - almost off
+ // 0.00 - completely off
+ FxaaFloat fxaaQualitySubpix,
+ //
+ // Only used on FXAA Quality.
+ // This used to be the FXAA_QUALITY__EDGE_THRESHOLD define.
+ // It is here now to allow easier tuning.
+ // The minimum amount of local contrast required to apply algorithm.
+ // 0.333 - too little (faster)
+ // 0.250 - low quality
+ // 0.166 - default
+ // 0.125 - high quality
+ // 0.063 - overkill (slower)
+ FxaaFloat fxaaQualityEdgeThreshold,
+ //
+ // Only used on FXAA Quality.
+ // This used to be the FXAA_QUALITY__EDGE_THRESHOLD_MIN define.
+ // It is here now to allow easier tuning.
+ // Trims the algorithm from processing darks.
+ // 0.0833 - upper limit (default, the start of visible unfiltered edges)
+ // 0.0625 - high quality (faster)
+ // 0.0312 - visible limit (slower)
+ // Special notes when using FXAA_GREEN_AS_LUMA,
+ // Likely want to set this to zero.
+ // As colors that are mostly not-green
+ // will appear very dark in the green channel!
+ // Tune by looking at mostly non-green content,
+ // then start at zero and increase until aliasing is a problem.
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ //
+ // Only used on FXAA Console.
+ // This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
+ // It is here now to allow easier tuning.
+ // This does not effect PS3, as this needs to be compiled in.
+ // Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
+ // Due to the PS3 being ALU bound,
+ // there are only three safe values here: 2 and 4 and 8.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ // For all other platforms can be a non-power of two.
+ // 8.0 is sharper (default!!!)
+ // 4.0 is softer
+ // 2.0 is really soft (good only for vector graphics inputs)
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ //
+ // Only used on FXAA Console.
+ // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
+ // It is here now to allow easier tuning.
+ // This does not effect PS3, as this needs to be compiled in.
+ // Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
+ // Due to the PS3 being ALU bound,
+ // there are only two safe values here: 1/4 and 1/8.
+ // These options use the shaders ability to a free *|/ by 2|4|8.
+ // The console setting has a different mapping than the quality setting.
+ // Other platforms can use other values.
+ // 0.125 leaves less aliasing, but is softer (default!!!)
+ // 0.25 leaves more aliasing, and is sharper
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ //
+ // Only used on FXAA Console.
+ // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
+ // It is here now to allow easier tuning.
+ // Trims the algorithm from processing darks.
+ // The console setting has a different mapping than the quality setting.
+ // This only applies when FXAA_EARLY_EXIT is 1.
+ // This does not apply to PS3,
+ // PS3 was simplified to avoid more shader instructions.
+ // 0.06 - faster but more aliasing in darks
+ // 0.05 - default
+ // 0.04 - slower and less aliasing in darks
+ // Special notes when using FXAA_GREEN_AS_LUMA,
+ // Likely want to set this to zero.
+ // As colors that are mostly not-green
+ // will appear very dark in the green channel!
+ // Tune by looking at mostly non-green content,
+ // then start at zero and increase until aliasing is a problem.
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ //
+ // Extra constants for 360 FXAA Console only.
+ // Use zeros or anything else for other platforms.
+ // These must be in physical constant registers and NOT immedates.
+ // Immedates will result in compiler un-optimizing.
+ // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 posM;
+ posM.x = pos.x;
+ posM.y = pos.y;
+ #if (FXAA_GATHER4_ALPHA == 1)
+ #if (FXAA_DISCARD == 0)
+ FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ #define lumaM rgbyM.w
+ #else
+ #define lumaM rgbyM.y
+ #endif
+ #endif
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);
+ FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));
+ #else
+ FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);
+ FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
+ #endif
+ #if (FXAA_DISCARD == 1)
+ #define lumaM luma4A.w
+ #endif
+ #define lumaE luma4A.z
+ #define lumaS luma4A.x
+ #define lumaSE luma4A.y
+ #define lumaNW luma4B.w
+ #define lumaN luma4B.z
+ #define lumaW luma4B.x
+ #else
+ FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ #define lumaM rgbyM.w
+ #else
+ #define lumaM rgbyM.y
+ #endif
+ FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
+ #endif
+/*--------------------------------------------------------------------------*/
+ FxaaFloat maxSM = max(lumaS, lumaM);
+ FxaaFloat minSM = min(lumaS, lumaM);
+ FxaaFloat maxESM = max(lumaE, maxSM);
+ FxaaFloat minESM = min(lumaE, minSM);
+ FxaaFloat maxWN = max(lumaN, lumaW);
+ FxaaFloat minWN = min(lumaN, lumaW);
+ FxaaFloat rangeMax = max(maxWN, maxESM);
+ FxaaFloat rangeMin = min(minWN, minESM);
+ FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
+ FxaaFloat range = rangeMax - rangeMin;
+ FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
+ FxaaBool earlyExit = range < rangeMaxClamped;
+/*--------------------------------------------------------------------------*/
+ if(earlyExit)
+ #if (FXAA_DISCARD == 1)
+ FxaaDiscard;
+ #else
+ return rgbyM;
+ #endif
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_GATHER4_ALPHA == 0)
+ FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
+ #else
+ FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));
+ FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
+ #endif
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNS = lumaN + lumaS;
+ FxaaFloat lumaWE = lumaW + lumaE;
+ FxaaFloat subpixRcpRange = 1.0/range;
+ FxaaFloat subpixNSWE = lumaNS + lumaWE;
+ FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
+ FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNESE = lumaNE + lumaSE;
+ FxaaFloat lumaNWNE = lumaNW + lumaNE;
+ FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
+ FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNWSW = lumaNW + lumaSW;
+ FxaaFloat lumaSWSE = lumaSW + lumaSE;
+ FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
+ FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
+ FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
+ FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
+ FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
+ FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
+ FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
+ FxaaBool horzSpan = edgeHorz >= edgeVert;
+ FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
+/*--------------------------------------------------------------------------*/
+ if(!horzSpan) lumaN = lumaW;
+ if(!horzSpan) lumaS = lumaE;
+ if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
+ FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat gradientN = lumaN - lumaM;
+ FxaaFloat gradientS = lumaS - lumaM;
+ FxaaFloat lumaNN = lumaN + lumaM;
+ FxaaFloat lumaSS = lumaS + lumaM;
+ FxaaBool pairN = abs(gradientN) >= abs(gradientS);
+ FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
+ if(pairN) lengthSign = -lengthSign;
+ FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 posB;
+ posB.x = posM.x;
+ posB.y = posM.y;
+ FxaaFloat2 offNP;
+ offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
+ offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
+ if(!horzSpan) posB.x += lengthSign * 0.5;
+ if( horzSpan) posB.y += lengthSign * 0.5;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 posN;
+ posN.x = posB.x - offNP.x * FXAA_QUALITY__P0;
+ posN.y = posB.y - offNP.y * FXAA_QUALITY__P0;
+ FxaaFloat2 posP;
+ posP.x = posB.x + offNP.x * FXAA_QUALITY__P0;
+ posP.y = posB.y + offNP.y * FXAA_QUALITY__P0;
+ FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
+ FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
+ FxaaFloat subpixE = subpixC * subpixC;
+ FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
+/*--------------------------------------------------------------------------*/
+ if(!pairN) lumaNN = lumaSS;
+ FxaaFloat gradientScaled = gradient * 1.0/4.0;
+ FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
+ FxaaFloat subpixF = subpixD * subpixE;
+ FxaaBool lumaMLTZero = lumaMM < 0.0;
+/*--------------------------------------------------------------------------*/
+ lumaEndN -= lumaNN * 0.5;
+ lumaEndP -= lumaNN * 0.5;
+ FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
+ FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P1;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P1;
+ FxaaBool doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P1;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P1;
+/*--------------------------------------------------------------------------*/
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P2;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P2;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P2;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P2;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 3)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P3;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P3;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P3;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P3;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 4)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P4;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P4;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P4;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P4;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 5)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P5;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P5;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P5;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P5;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 6)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P6;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P6;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P6;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P6;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 7)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P7;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P7;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P7;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P7;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 8)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P8;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P8;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P8;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P8;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 9)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P9;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P9;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P9;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P9;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 10)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P10;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P10;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P10;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P10;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 11)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P11;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P11;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P11;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P11;
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_QUALITY__PS > 12)
+ if(doneNP) {
+ if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+ if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+ if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+ if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+ doneN = abs(lumaEndN) >= gradientScaled;
+ doneP = abs(lumaEndP) >= gradientScaled;
+ if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P12;
+ if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P12;
+ doneNP = (!doneN) || (!doneP);
+ if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P12;
+ if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P12;
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+ #endif
+/*--------------------------------------------------------------------------*/
+ }
+/*--------------------------------------------------------------------------*/
+ FxaaFloat dstN = posM.x - posN.x;
+ FxaaFloat dstP = posP.x - posM.x;
+ if(!horzSpan) dstN = posM.y - posN.y;
+ if(!horzSpan) dstP = posP.y - posM.y;
+/*--------------------------------------------------------------------------*/
+ FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
+ FxaaFloat spanLength = (dstP + dstN);
+ FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
+ FxaaFloat spanLengthRcp = 1.0/spanLength;
+/*--------------------------------------------------------------------------*/
+ FxaaBool directionN = dstN < dstP;
+ FxaaFloat dst = min(dstN, dstP);
+ FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
+ FxaaFloat subpixG = subpixF * subpixF;
+ FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
+ FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
+ FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
+ if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
+ if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
+ #if (FXAA_DISCARD == 1)
+ return FxaaTexTop(tex, posM);
+ #else
+ return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
+ #endif
+}
+/*==========================================================================*/
+#endif
+
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - PC VERSION
+
+------------------------------------------------------------------------------
+Instead of using this on PC, I'd suggest just using FXAA Quality with
+ #define FXAA_QUALITY__PRESET 10
+Or
+ #define FXAA_QUALITY__PRESET 20
+Either are higher qualilty and almost as fast as this on modern PC GPUs.
+============================================================================*/
+#if (FXAA_PC_CONSOLE == 1)
+/*--------------------------------------------------------------------------*/
+FxaaFloat4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
+ FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
+ FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
+ FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
+/*--------------------------------------------------------------------------*/
+ FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaFloat lumaM = rgbyM.w;
+ #else
+ FxaaFloat lumaM = rgbyM.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
+ lumaNe += 1.0/384.0;
+ FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
+ FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
+ FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat lumaMinM = min(lumaMin, lumaM);
+ FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
+ FxaaFloat lumaMaxM = max(lumaMax, lumaM);
+ FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
+ FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
+ FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
+ if(lumaMaxSubMinM < lumaMaxScaledClamped) return rgbyM;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 dir;
+ dir.x = dirSwMinusNe + dirSeMinusNw;
+ dir.y = dirSwMinusNe - dirSeMinusNw;
+/*--------------------------------------------------------------------------*/
+ FxaaFloat2 dir1 = normalize(dir.xy);
+ FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
+ FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
+ FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2 * fxaaConsoleRcpFrameOpt2.zw);
+ FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2 * fxaaConsoleRcpFrameOpt2.zw);
+/*--------------------------------------------------------------------------*/
+ FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
+ FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
+/*--------------------------------------------------------------------------*/
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ FxaaBool twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);
+ #else
+ FxaaBool twoTap = (rgbyB.y < lumaMin) || (rgbyB.y > lumaMax);
+ #endif
+ if(twoTap) rgbyB.xyz = rgbyA.xyz * 0.5;
+ return rgbyB; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - 360 PIXEL SHADER
+
+------------------------------------------------------------------------------
+This optimized version thanks to suggestions from Andy Luedke.
+Should be fully tex bound in all cases.
+As of the FXAA 3.11 release, I have still not tested this code,
+however I fixed a bug which was in both FXAA 3.9 and FXAA 3.10.
+And note this is replacing the old unoptimized version.
+If it does not work, please let me know so I can fix it.
+============================================================================*/
+#if (FXAA_360 == 1)
+/*--------------------------------------------------------------------------*/
+[reduceTempRegUsage(4)]
+float4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+ float4 lumaNwNeSwSe;
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ asm {
+ tfetch2D lumaNwNeSwSe.w___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe._w__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.__w_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.___w, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
+ };
+ #else
+ asm {
+ tfetch2D lumaNwNeSwSe.y___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe._y__, tex, pos.xy, OffsetX = 0.5, OffsetY = -0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.__y_, tex, pos.xy, OffsetX = -0.5, OffsetY = 0.5, UseComputedLOD=false
+ tfetch2D lumaNwNeSwSe.___y, tex, pos.xy, OffsetX = 0.5, OffsetY = 0.5, UseComputedLOD=false
+ };
+ #endif
+/*--------------------------------------------------------------------------*/
+ lumaNwNeSwSe.y += 1.0/384.0;
+ float2 lumaMinTemp = min(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
+ float2 lumaMaxTemp = max(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
+ float lumaMin = min(lumaMinTemp.x, lumaMinTemp.y);
+ float lumaMax = max(lumaMaxTemp.x, lumaMaxTemp.y);
+/*--------------------------------------------------------------------------*/
+ float4 rgbyM = tex2Dlod(tex, float4(pos.xy, 0.0, 0.0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ float lumaMinM = min(lumaMin, rgbyM.w);
+ float lumaMaxM = max(lumaMax, rgbyM.w);
+ #else
+ float lumaMinM = min(lumaMin, rgbyM.y);
+ float lumaMaxM = max(lumaMax, rgbyM.y);
+ #endif
+ if((lumaMaxM - lumaMinM) < max(fxaaConsoleEdgeThresholdMin, lumaMax * fxaaConsoleEdgeThreshold)) return rgbyM;
+/*--------------------------------------------------------------------------*/
+ float2 dir;
+ dir.x = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.yyxx);
+ dir.y = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.xyxy);
+ dir = normalize(dir);
+/*--------------------------------------------------------------------------*/
+ float4 dir1 = dir.xyxy * fxaaConsoleRcpFrameOpt.xyzw;
+/*--------------------------------------------------------------------------*/
+ float4 dir2;
+ float dirAbsMinTimesC = min(abs(dir.x), abs(dir.y)) * fxaaConsoleEdgeSharpness;
+ dir2 = saturate(fxaaConsole360ConstDir.zzww * dir.xyxy / dirAbsMinTimesC + 0.5);
+ dir2 = dir2 * fxaaConsole360RcpFrameOpt2.xyxy + fxaaConsole360RcpFrameOpt2.zwzw;
+/*--------------------------------------------------------------------------*/
+ float4 rgbyN1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.xy, 0.0, 0.0));
+ float4 rgbyP1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.zw, 0.0, 0.0));
+ float4 rgbyN2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.xy, 0.0, 0.0));
+ float4 rgbyP2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.zw, 0.0, 0.0));
+/*--------------------------------------------------------------------------*/
+ float4 rgbyA = rgbyN1 + rgbyP1;
+ float4 rgbyB = rgbyN2 + rgbyP2 * 0.5 + rgbyA;
+/*--------------------------------------------------------------------------*/
+ float4 rgbyR = ((rgbyB.w - lumaMax) > 0.0) ? rgbyA : rgbyB;
+ rgbyR = ((rgbyB.w - lumaMin) > 0.0) ? rgbyR : rgbyA;
+ return rgbyR; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (NO EARLY EXIT)
+
+==============================================================================
+The code below does not exactly match the assembly.
+I have a feeling that 12 cycles is possible, but was not able to get there.
+Might have to increase register count to get full performance.
+Note this shader does not use perspective interpolation.
+
+Use the following cgc options,
+
+ --fenable-bx2 --fastmath --fastprecision --nofloatbindings
+
+------------------------------------------------------------------------------
+ NVSHADERPERF OUTPUT
+------------------------------------------------------------------------------
+For reference and to aid in debug, output of NVShaderPerf should match this,
+
+Shader to schedule:
+ 0: texpkb h0.w(TRUE), v5.zyxx, #0
+ 2: addh h2.z(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
+ 4: texpkb h0.w(TRUE), v5.xwxx, #0
+ 6: addh h0.z(TRUE), -h2, h0.w
+ 7: texpkb h1.w(TRUE), v5, #0
+ 9: addh h0.x(TRUE), h0.z, -h1.w
+ 10: addh h3.w(TRUE), h0.z, h1
+ 11: texpkb h2.w(TRUE), v5.zwzz, #0
+ 13: addh h0.z(TRUE), h3.w, -h2.w
+ 14: addh h0.x(TRUE), h2.w, h0
+ 15: nrmh h1.xz(TRUE), h0_n
+ 16: minh_m8 h0.x(TRUE), |h1|, |h1.z|
+ 17: maxh h4.w(TRUE), h0, h1
+ 18: divx h2.xy(TRUE), h1_n.xzzw, h0_n
+ 19: movr r1.zw(TRUE), v4.xxxy
+ 20: madr r2.xz(TRUE), -h1, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zzww, r1.zzww
+ 22: minh h5.w(TRUE), h0, h1
+ 23: texpkb h0(TRUE), r2.xzxx, #0
+ 25: madr r0.zw(TRUE), h1.xzxz, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w), r1
+ 27: maxh h4.x(TRUE), h2.z, h2.w
+ 28: texpkb h1(TRUE), r0.zwzz, #0
+ 30: addh_d2 h1(TRUE), h0, h1
+ 31: madr r0.xy(TRUE), -h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 33: texpkb h0(TRUE), r0, #0
+ 35: minh h4.z(TRUE), h2, h2.w
+ 36: fenct TRUE
+ 37: madr r1.xy(TRUE), h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 39: texpkb h2(TRUE), r1, #0
+ 41: addh_d2 h0(TRUE), h0, h2
+ 42: maxh h2.w(TRUE), h4, h4.x
+ 43: minh h2.x(TRUE), h5.w, h4.z
+ 44: addh_d2 h0(TRUE), h0, h1
+ 45: slth h2.x(TRUE), h0.w, h2
+ 46: sgth h2.w(TRUE), h0, h2
+ 47: movh h0(TRUE), h0
+ 48: addx.c0 rc(TRUE), h2, h2.w
+ 49: movh h0(c0.NE.x), h1
+
+IPU0 ------ Simplified schedule: --------
+Pass | Unit | uOp | PC: Op
+-----+--------+------+-------------------------
+ 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | SCB1 | add | 2: ADDh h2.z, h0.--w-, const.--x-;
+ | | |
+ 2 | SCT0/1 | mov | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | TEX | txl | 4: TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | SCB1 | add | 6: ADDh h0.z,-h2, h0.--w-;
+ | | |
+ 3 | SCT0/1 | mov | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
+ | TEX | txl | 7: TXLr h1.w, g[TEX1], const.xxxx, TEX0;
+ | SCB0 | add | 9: ADDh h0.x, h0.z---,-h1.w---;
+ | SCB1 | add | 10: ADDh h3.w, h0.---z, h1;
+ | | |
+ 4 | SCT0/1 | mov | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | TEX | txl | 11: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | SCB0 | add | 14: ADDh h0.x, h2.w---, h0;
+ | SCB1 | add | 13: ADDh h0.z, h3.--w-,-h2.--w-;
+ | | |
+ 5 | SCT1 | mov | 15: NRMh h1.xz, h0;
+ | SRB | nrm | 15: NRMh h1.xz, h0;
+ | SCB0 | min | 16: MINh*8 h0.x, |h1|, |h1.z---|;
+ | SCB1 | max | 17: MAXh h4.w, h0, h1;
+ | | |
+ 6 | SCT0 | div | 18: DIVx h2.xy, h1.xz--, h0;
+ | SCT1 | mov | 19: MOVr r1.zw, g[TEX0].--xy;
+ | SCB0 | mad | 20: MADr r2.xz,-h1, const.z-w-, r1.z-w-;
+ | SCB1 | min | 22: MINh h5.w, h0, h1;
+ | | |
+ 7 | SCT0/1 | mov | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
+ | TEX | txl | 23: TXLr h0, r2.xzxx, const.xxxx, TEX0;
+ | SCB0 | max | 27: MAXh h4.x, h2.z---, h2.w---;
+ | SCB1 | mad | 25: MADr r0.zw, h1.--xz, const, r1;
+ | | |
+ 8 | SCT0/1 | mov | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
+ | TEX | txl | 28: TXLr h1, r0.zwzz, const.xxxx, TEX0;
+ | SCB0/1 | add | 30: ADDh/2 h1, h0, h1;
+ | | |
+ 9 | SCT0 | mad | 31: MADr r0.xy,-h2, const.xy--, r1.zw--;
+ | SCT1 | mov | 33: TXLr h0, r0, const.zzzz, TEX0;
+ | TEX | txl | 33: TXLr h0, r0, const.zzzz, TEX0;
+ | SCB1 | min | 35: MINh h4.z, h2, h2.--w-;
+ | | |
+ 10 | SCT0 | mad | 37: MADr r1.xy, h2, const.xy--, r1.zw--;
+ | SCT1 | mov | 39: TXLr h2, r1, const.zzzz, TEX0;
+ | TEX | txl | 39: TXLr h2, r1, const.zzzz, TEX0;
+ | SCB0/1 | add | 41: ADDh/2 h0, h0, h2;
+ | | |
+ 11 | SCT0 | min | 43: MINh h2.x, h5.w---, h4.z---;
+ | SCT1 | max | 42: MAXh h2.w, h4, h4.---x;
+ | SCB0/1 | add | 44: ADDh/2 h0, h0, h1;
+ | | |
+ 12 | SCT0 | set | 45: SLTh h2.x, h0.w---, h2;
+ | SCT1 | set | 46: SGTh h2.w, h0, h2;
+ | SCB0/1 | mul | 47: MOVh h0, h0;
+ | | |
+ 13 | SCT0 | mad | 48: ADDxc0_s rc, h2, h2.w---;
+ | SCB0/1 | mul | 49: MOVh h0(NE0.xxxx), h1;
+
+Pass SCT TEX SCB
+ 1: 0% 100% 25%
+ 2: 0% 100% 25%
+ 3: 0% 100% 50%
+ 4: 0% 100% 50%
+ 5: 0% 0% 50%
+ 6: 100% 0% 75%
+ 7: 0% 100% 75%
+ 8: 0% 100% 100%
+ 9: 0% 100% 25%
+ 10: 0% 100% 100%
+ 11: 50% 0% 100%
+ 12: 50% 0% 100%
+ 13: 25% 0% 100%
+
+MEAN: 17% 61% 67%
+
+Pass SCT0 SCT1 TEX SCB0 SCB1
+ 1: 0% 0% 100% 0% 100%
+ 2: 0% 0% 100% 0% 100%
+ 3: 0% 0% 100% 100% 100%
+ 4: 0% 0% 100% 100% 100%
+ 5: 0% 0% 0% 100% 100%
+ 6: 100% 100% 0% 100% 100%
+ 7: 0% 0% 100% 100% 100%
+ 8: 0% 0% 100% 100% 100%
+ 9: 0% 0% 100% 0% 100%
+ 10: 0% 0% 100% 100% 100%
+ 11: 100% 100% 0% 100% 100%
+ 12: 100% 100% 0% 100% 100%
+ 13: 100% 0% 0% 100% 100%
+
+MEAN: 30% 23% 61% 76% 100%
+Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
+Results 13 cycles, 3 r regs, 923,076,923 pixels/s
+============================================================================*/
+#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 0)
+/*--------------------------------------------------------------------------*/
+#pragma regcount 7
+#pragma disablepc all
+#pragma option O3
+#pragma option OutColorPrec=fp16
+#pragma texformat default RGBA8
+/*==========================================================================*/
+half4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+// (1)
+ half4 dir;
+ half4 lumaNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ lumaNe.w += half(1.0/512.0);
+ dir.x = -lumaNe.w;
+ dir.z = -lumaNe.w;
+ #else
+ lumaNe.y += half(1.0/512.0);
+ dir.x = -lumaNe.y;
+ dir.z = -lumaNe.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (2)
+ half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x += lumaSw.w;
+ dir.z += lumaSw.w;
+ #else
+ dir.x += lumaSw.y;
+ dir.z += lumaSw.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (3)
+ half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x -= lumaNw.w;
+ dir.z += lumaNw.w;
+ #else
+ dir.x -= lumaNw.y;
+ dir.z += lumaNw.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (4)
+ half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x += lumaSe.w;
+ dir.z -= lumaSe.w;
+ #else
+ dir.x += lumaSe.y;
+ dir.z -= lumaSe.y;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (5)
+ half4 dir1_pos;
+ dir1_pos.xy = normalize(dir.xyz).xz;
+ half dirAbsMinTimesC = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
+/*--------------------------------------------------------------------------*/
+// (6)
+ half4 dir2_pos;
+ dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimesC, half(-2.0), half(2.0));
+ dir1_pos.zw = pos.xy;
+ dir2_pos.zw = pos.xy;
+ half4 temp1N;
+ temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+/*--------------------------------------------------------------------------*/
+// (7)
+ temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
+ half4 rgby1;
+ rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+/*--------------------------------------------------------------------------*/
+// (8)
+ rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
+ rgby1 = (temp1N + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (9)
+ half4 temp2N;
+ temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
+/*--------------------------------------------------------------------------*/
+// (10)
+ half4 rgby2;
+ rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
+ rgby2 = (temp2N + rgby2) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (11)
+ // compilier moves these scalar ops up to other cycles
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMin = min(min(lumaNw.w, lumaSw.w), min(lumaNe.w, lumaSe.w));
+ half lumaMax = max(max(lumaNw.w, lumaSw.w), max(lumaNe.w, lumaSe.w));
+ #else
+ half lumaMin = min(min(lumaNw.y, lumaSw.y), min(lumaNe.y, lumaSe.y));
+ half lumaMax = max(max(lumaNw.y, lumaSw.y), max(lumaNe.y, lumaSe.y));
+ #endif
+ rgby2 = (rgby2 + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (12)
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ bool twoTapLt = rgby2.w < lumaMin;
+ bool twoTapGt = rgby2.w > lumaMax;
+ #else
+ bool twoTapLt = rgby2.y < lumaMin;
+ bool twoTapGt = rgby2.y > lumaMax;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (13)
+ if(twoTapLt || twoTapGt) rgby2 = rgby1;
+/*--------------------------------------------------------------------------*/
+ return rgby2; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+ FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (WITH EARLY EXIT)
+
+==============================================================================
+The code mostly matches the assembly.
+I have a feeling that 14 cycles is possible, but was not able to get there.
+Might have to increase register count to get full performance.
+Note this shader does not use perspective interpolation.
+
+Use the following cgc options,
+
+ --fenable-bx2 --fastmath --fastprecision --nofloatbindings
+
+Use of FXAA_GREEN_AS_LUMA currently adds a cycle (16 clks).
+Will look at fixing this for FXAA 3.12.
+------------------------------------------------------------------------------
+ NVSHADERPERF OUTPUT
+------------------------------------------------------------------------------
+For reference and to aid in debug, output of NVShaderPerf should match this,
+
+Shader to schedule:
+ 0: texpkb h0.w(TRUE), v5.zyxx, #0
+ 2: addh h2.y(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
+ 4: texpkb h1.w(TRUE), v5.xwxx, #0
+ 6: addh h0.x(TRUE), h1.w, -h2.y
+ 7: texpkb h2.w(TRUE), v5.zwzz, #0
+ 9: minh h4.w(TRUE), h2.y, h2
+ 10: maxh h5.x(TRUE), h2.y, h2.w
+ 11: texpkb h0.w(TRUE), v5, #0
+ 13: addh h3.w(TRUE), -h0, h0.x
+ 14: addh h0.x(TRUE), h0.w, h0
+ 15: addh h0.z(TRUE), -h2.w, h0.x
+ 16: addh h0.x(TRUE), h2.w, h3.w
+ 17: minh h5.y(TRUE), h0.w, h1.w
+ 18: nrmh h2.xz(TRUE), h0_n
+ 19: minh_m8 h2.w(TRUE), |h2.x|, |h2.z|
+ 20: divx h4.xy(TRUE), h2_n.xzzw, h2_n.w
+ 21: movr r1.zw(TRUE), v4.xxxy
+ 22: maxh h2.w(TRUE), h0, h1
+ 23: fenct TRUE
+ 24: madr r0.xy(TRUE), -h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
+ 26: texpkb h0(TRUE), r0, #0
+ 28: maxh h5.x(TRUE), h2.w, h5
+ 29: minh h5.w(TRUE), h5.y, h4
+ 30: madr r1.xy(TRUE), h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
+ 32: texpkb h2(TRUE), r1, #0
+ 34: addh_d2 h2(TRUE), h0, h2
+ 35: texpkb h1(TRUE), v4, #0
+ 37: maxh h5.y(TRUE), h5.x, h1.w
+ 38: minh h4.w(TRUE), h1, h5
+ 39: madr r0.xy(TRUE), -h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 41: texpkb h0(TRUE), r0, #0
+ 43: addh_m8 h5.z(TRUE), h5.y, -h4.w
+ 44: madr r2.xy(TRUE), h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 46: texpkb h3(TRUE), r2, #0
+ 48: addh_d2 h0(TRUE), h0, h3
+ 49: addh_d2 h3(TRUE), h0, h2
+ 50: movh h0(TRUE), h3
+ 51: slth h3.x(TRUE), h3.w, h5.w
+ 52: sgth h3.w(TRUE), h3, h5.x
+ 53: addx.c0 rc(TRUE), h3.x, h3
+ 54: slth.c0 rc(TRUE), h5.z, h5
+ 55: movh h0(c0.NE.w), h2
+ 56: movh h0(c0.NE.x), h1
+
+IPU0 ------ Simplified schedule: --------
+Pass | Unit | uOp | PC: Op
+-----+--------+------+-------------------------
+ 1 | SCT0/1 | mov | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | TEX | txl | 0: TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+ | SCB0 | add | 2: ADDh h2.y, h0.-w--, const.-x--;
+ | | |
+ 2 | SCT0/1 | mov | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | TEX | txl | 4: TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
+ | SCB0 | add | 6: ADDh h0.x, h1.w---,-h2.y---;
+ | | |
+ 3 | SCT0/1 | mov | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | TEX | txl | 7: TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+ | SCB0 | max | 10: MAXh h5.x, h2.y---, h2.w---;
+ | SCB1 | min | 9: MINh h4.w, h2.---y, h2;
+ | | |
+ 4 | SCT0/1 | mov | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
+ | TEX | txl | 11: TXLr h0.w, g[TEX1], const.xxxx, TEX0;
+ | SCB0 | add | 14: ADDh h0.x, h0.w---, h0;
+ | SCB1 | add | 13: ADDh h3.w,-h0, h0.---x;
+ | | |
+ 5 | SCT0 | mad | 16: ADDh h0.x, h2.w---, h3.w---;
+ | SCT1 | mad | 15: ADDh h0.z,-h2.--w-, h0.--x-;
+ | SCB0 | min | 17: MINh h5.y, h0.-w--, h1.-w--;
+ | | |
+ 6 | SCT1 | mov | 18: NRMh h2.xz, h0;
+ | SRB | nrm | 18: NRMh h2.xz, h0;
+ | SCB1 | min | 19: MINh*8 h2.w, |h2.---x|, |h2.---z|;
+ | | |
+ 7 | SCT0 | div | 20: DIVx h4.xy, h2.xz--, h2.ww--;
+ | SCT1 | mov | 21: MOVr r1.zw, g[TEX0].--xy;
+ | SCB1 | max | 22: MAXh h2.w, h0, h1;
+ | | |
+ 8 | SCT0 | mad | 24: MADr r0.xy,-h2.xz--, const.zw--, r1.zw--;
+ | SCT1 | mov | 26: TXLr h0, r0, const.xxxx, TEX0;
+ | TEX | txl | 26: TXLr h0, r0, const.xxxx, TEX0;
+ | SCB0 | max | 28: MAXh h5.x, h2.w---, h5;
+ | SCB1 | min | 29: MINh h5.w, h5.---y, h4;
+ | | |
+ 9 | SCT0 | mad | 30: MADr r1.xy, h2.xz--, const.zw--, r1.zw--;
+ | SCT1 | mov | 32: TXLr h2, r1, const.xxxx, TEX0;
+ | TEX | txl | 32: TXLr h2, r1, const.xxxx, TEX0;
+ | SCB0/1 | add | 34: ADDh/2 h2, h0, h2;
+ | | |
+ 10 | SCT0/1 | mov | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
+ | TEX | txl | 35: TXLr h1, g[TEX0], const.xxxx, TEX0;
+ | SCB0 | max | 37: MAXh h5.y, h5.-x--, h1.-w--;
+ | SCB1 | min | 38: MINh h4.w, h1, h5;
+ | | |
+ 11 | SCT0 | mad | 39: MADr r0.xy,-h4, const.xy--, r1.zw--;
+ | SCT1 | mov | 41: TXLr h0, r0, const.zzzz, TEX0;
+ | TEX | txl | 41: TXLr h0, r0, const.zzzz, TEX0;
+ | SCB0 | mad | 44: MADr r2.xy, h4, const.xy--, r1.zw--;
+ | SCB1 | add | 43: ADDh*8 h5.z, h5.--y-,-h4.--w-;
+ | | |
+ 12 | SCT0/1 | mov | 46: TXLr h3, r2, const.xxxx, TEX0;
+ | TEX | txl | 46: TXLr h3, r2, const.xxxx, TEX0;
+ | SCB0/1 | add | 48: ADDh/2 h0, h0, h3;
+ | | |
+ 13 | SCT0/1 | mad | 49: ADDh/2 h3, h0, h2;
+ | SCB0/1 | mul | 50: MOVh h0, h3;
+ | | |
+ 14 | SCT0 | set | 51: SLTh h3.x, h3.w---, h5.w---;
+ | SCT1 | set | 52: SGTh h3.w, h3, h5.---x;
+ | SCB0 | set | 54: SLThc0 rc, h5.z---, h5;
+ | SCB1 | add | 53: ADDxc0_s rc, h3.---x, h3;
+ | | |
+ 15 | SCT0/1 | mul | 55: MOVh h0(NE0.wwww), h2;
+ | SCB0/1 | mul | 56: MOVh h0(NE0.xxxx), h1;
+
+Pass SCT TEX SCB
+ 1: 0% 100% 25%
+ 2: 0% 100% 25%
+ 3: 0% 100% 50%
+ 4: 0% 100% 50%
+ 5: 50% 0% 25%
+ 6: 0% 0% 25%
+ 7: 100% 0% 25%
+ 8: 0% 100% 50%
+ 9: 0% 100% 100%
+ 10: 0% 100% 50%
+ 11: 0% 100% 75%
+ 12: 0% 100% 100%
+ 13: 100% 0% 100%
+ 14: 50% 0% 50%
+ 15: 100% 0% 100%
+
+MEAN: 26% 60% 56%
+
+Pass SCT0 SCT1 TEX SCB0 SCB1
+ 1: 0% 0% 100% 100% 0%
+ 2: 0% 0% 100% 100% 0%
+ 3: 0% 0% 100% 100% 100%
+ 4: 0% 0% 100% 100% 100%
+ 5: 100% 100% 0% 100% 0%
+ 6: 0% 0% 0% 0% 100%
+ 7: 100% 100% 0% 0% 100%
+ 8: 0% 0% 100% 100% 100%
+ 9: 0% 0% 100% 100% 100%
+ 10: 0% 0% 100% 100% 100%
+ 11: 0% 0% 100% 100% 100%
+ 12: 0% 0% 100% 100% 100%
+ 13: 100% 100% 0% 100% 100%
+ 14: 100% 100% 0% 100% 100%
+ 15: 100% 100% 0% 100% 100%
+
+MEAN: 33% 33% 60% 86% 80%
+Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
+Results 15 cycles, 3 r regs, 800,000,000 pixels/s
+============================================================================*/
+#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 1)
+/*--------------------------------------------------------------------------*/
+#pragma regcount 7
+#pragma disablepc all
+#pragma option O2
+#pragma option OutColorPrec=fp16
+#pragma texformat default RGBA8
+/*==========================================================================*/
+half4 FxaaPixelShader(
+ // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+ FxaaFloat2 pos,
+ FxaaFloat4 fxaaConsolePosPos,
+ FxaaTex tex,
+ FxaaTex fxaaConsole360TexExpBiasNegOne,
+ FxaaTex fxaaConsole360TexExpBiasNegTwo,
+ FxaaFloat2 fxaaQualityRcpFrame,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt,
+ FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+ FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+ FxaaFloat fxaaQualitySubpix,
+ FxaaFloat fxaaQualityEdgeThreshold,
+ FxaaFloat fxaaQualityEdgeThresholdMin,
+ FxaaFloat fxaaConsoleEdgeSharpness,
+ FxaaFloat fxaaConsoleEdgeThreshold,
+ FxaaFloat fxaaConsoleEdgeThresholdMin,
+ FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+// (1)
+ half4 rgbyNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaNe = rgbyNe.w + half(1.0/512.0);
+ #else
+ half lumaNe = rgbyNe.y + half(1.0/512.0);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (2)
+ half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaSwNegNe = lumaSw.w - lumaNe;
+ #else
+ half lumaSwNegNe = lumaSw.y - lumaNe;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (3)
+ half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMaxNwSw = max(lumaNw.w, lumaSw.w);
+ half lumaMinNwSw = min(lumaNw.w, lumaSw.w);
+ #else
+ half lumaMaxNwSw = max(lumaNw.y, lumaSw.y);
+ half lumaMinNwSw = min(lumaNw.y, lumaSw.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (4)
+ half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half dirZ = lumaNw.w + lumaSwNegNe;
+ half dirX = -lumaNw.w + lumaSwNegNe;
+ #else
+ half dirZ = lumaNw.y + lumaSwNegNe;
+ half dirX = -lumaNw.y + lumaSwNegNe;
+ #endif
+/*--------------------------------------------------------------------------*/
+// (5)
+ half3 dir;
+ dir.y = 0.0;
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ dir.x = lumaSe.w + dirX;
+ dir.z = -lumaSe.w + dirZ;
+ half lumaMinNeSe = min(lumaNe, lumaSe.w);
+ #else
+ dir.x = lumaSe.y + dirX;
+ dir.z = -lumaSe.y + dirZ;
+ half lumaMinNeSe = min(lumaNe, lumaSe.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (6)
+ half4 dir1_pos;
+ dir1_pos.xy = normalize(dir).xz;
+ half dirAbsMinTimes8 = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
+/*--------------------------------------------------------------------------*/
+// (7)
+ half4 dir2_pos;
+ dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimes8, half(-2.0), half(2.0));
+ dir1_pos.zw = pos.xy;
+ dir2_pos.zw = pos.xy;
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMaxNeSe = max(lumaNe, lumaSe.w);
+ #else
+ half lumaMaxNeSe = max(lumaNe, lumaSe.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (8)
+ half4 temp1N;
+ temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+ temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
+ half lumaMax = max(lumaMaxNwSw, lumaMaxNeSe);
+ half lumaMin = min(lumaMinNwSw, lumaMinNeSe);
+/*--------------------------------------------------------------------------*/
+// (9)
+ half4 rgby1;
+ rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+ rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
+ rgby1 = (temp1N + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (10)
+ half4 rgbyM = h4tex2Dlod(tex, half4(pos.xy, 0.0, 0.0));
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ half lumaMaxM = max(lumaMax, rgbyM.w);
+ half lumaMinM = min(lumaMin, rgbyM.w);
+ #else
+ half lumaMaxM = max(lumaMax, rgbyM.y);
+ half lumaMinM = min(lumaMin, rgbyM.y);
+ #endif
+/*--------------------------------------------------------------------------*/
+// (11)
+ half4 temp2N;
+ temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
+ half4 rgby2;
+ rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+ half lumaRangeM = (lumaMaxM - lumaMinM) / FXAA_CONSOLE__PS3_EDGE_THRESHOLD;
+/*--------------------------------------------------------------------------*/
+// (12)
+ rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
+ rgby2 = (temp2N + rgby2) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (13)
+ rgby2 = (rgby2 + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (14)
+ #if (FXAA_GREEN_AS_LUMA == 0)
+ bool twoTapLt = rgby2.w < lumaMin;
+ bool twoTapGt = rgby2.w > lumaMax;
+ #else
+ bool twoTapLt = rgby2.y < lumaMin;
+ bool twoTapGt = rgby2.y > lumaMax;
+ #endif
+ bool earlyExit = lumaRangeM < lumaMax;
+ bool twoTap = twoTapLt || twoTapGt;
+/*--------------------------------------------------------------------------*/
+// (15)
+ if(twoTap) rgby2 = rgby1;
+ if(earlyExit) rgby2 = rgbyM;
+/*--------------------------------------------------------------------------*/
+ return rgby2; }
+/*==========================================================================*/
+#endif
+
+uniform sampler2D diffuseMap;
+
+uniform vec2 rcp_screen_res;
+uniform vec4 rcp_frame_opt;
+uniform vec4 rcp_frame_opt2;
+uniform vec2 screen_res;
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_tc;
+
+void main()
+{
+ vec4 diff = FxaaPixelShader(vary_tc, //pos
+ vec4(vary_fragcoord.xy, 0, 0), //fxaaConsolePosPos
+ diffuseMap, //tex
+ diffuseMap,
+ diffuseMap,
+ rcp_screen_res, //fxaaQualityRcpFrame
+ vec4(0,0,0,0), //fxaaConsoleRcpFrameOpt
+ rcp_frame_opt, //fxaaConsoleRcpFrameOpt2
+ rcp_frame_opt2, //fxaaConsole360RcpFrameOpt2
+ 0.75, //fxaaQualitySubpix
+ 0.07, //fxaaQualityEdgeThreshold
+ 0.03, //fxaaQualityEdgeThresholdMin
+ 8.0, //fxaaConsoleEdgeSharpness
+ 0.125, //fxaaConsoleEdgeThreshold
+ 0.05, //fxaaConsoleEdgeThresholdMin
+ vec4(0,0,0,0)); //fxaaConsole360ConstDir
+
+
+
+ //diff = texture2D(diffuseMap, vary_tc);
+
+ gl_FragColor = diff;
+
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl
deleted file mode 100644
index c275434777..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFNoFXAAF.glsl
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @file postDeferredNoDoFF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2D bloomMap;
-
-uniform vec2 screen_res;
-VARYING vec2 vary_fragcoord;
-
-void main()
-{
- vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
-
- vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
- gl_FragColor = diff + bloom;
-}
-
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl
deleted file mode 100644
index 985f44fb6c..0000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoFXAAF.glsl
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * @file postDeferredF.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$
- */
-
-#extension GL_ARB_texture_rectangle : enable
-
-#ifdef DEFINE_GL_FRAGCOLOR
-out vec4 gl_FragColor;
-#endif
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect edgeMap;
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2D bloomMap;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-uniform float focal_distance;
-uniform float blur_constant;
-uniform float tan_pixel_angle;
-uniform float magnification;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-VARYING vec2 vary_fragcoord;
-
-float getDepth(vec2 pos_screen)
-{
- float z = texture2DRect(depthMap, pos_screen.xy).r;
- z = z*2.0-1.0;
- vec4 ndc = vec4(0.0, 0.0, z, 1.0);
- vec4 p = inv_proj*ndc;
- return p.z/p.w;
-}
-
-float calc_cof(float depth)
-{
- float sc = abs(depth-focal_distance)/-depth*blur_constant;
-
- sc /= magnification;
-
- // tan_pixel_angle = pixel_length/-depth;
- float pixel_length = tan_pixel_angle*-focal_distance;
-
- sc = sc/pixel_length;
- sc *= 1.414;
-
- return sc;
-}
-
-void dofSampleNear(inout vec4 diff, inout float w, float cur_sc, vec2 tc)
-{
- float d = getDepth(tc);
-
- float sc = calc_cof(d);
-
- float wg = 0.25;
-
- vec4 s = texture2DRect(diffuseRect, tc);
- // de-weight dull areas to make highlights 'pop'
- wg += s.r+s.g+s.b;
-
- diff += wg*s;
-
- w += wg;
-}
-
-void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, vec2 tc)
-{
- float d = getDepth(tc);
-
- float sc = calc_cof(d);
-
- if (sc > min_sc //sampled pixel is more "out of focus" than current sample radius
- || d < cur_depth) //sampled pixel is further away than current pixel
- {
- float wg = 0.25;
-
- vec4 s = texture2DRect(diffuseRect, tc);
- // de-weight dull areas to make highlights 'pop'
- wg += s.r+s.g+s.b;
-
- diff += wg*s;
-
- w += wg;
- }
-}
-
-
-void main()
-{
- vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
- norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-
- vec2 tc = vary_fragcoord.xy;
-
- float depth = getDepth(tc);
-
- vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
-
- {
- float w = 1.0;
-
- float sc = calc_cof(depth);
- sc = min(abs(sc), 10.0);
-
- float fd = depth*0.5f;
-
- float PI = 3.14159265358979323846264;
-
- // sample quite uniformly spaced points within a circle, for a circular 'bokeh'
- //if (depth < focal_distance)
- {
- while (sc > 0.5)
- {
- int its = int(max(1.0,(sc*3.7)));
- for (int i=0; i
Date: Thu, 29 Sep 2011 23:28:51 -0500
Subject: SH-2370 Fix for alpha masked objects not getting highlighted when
highlight transparent enabled.
---
indra/newview/lldrawpoolalpha.cpp | 4 ++++
1 file changed, 4 insertions(+)
(limited to 'indra/newview')
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index a5032d007f..230c4e2638 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -333,6 +333,10 @@ void LLDrawPoolAlpha::render(S32 pass)
gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sSmokeImagep, TRUE) ;
renderAlphaHighlight(LLVertexBuffer::MAP_VERTEX |
LLVertexBuffer::MAP_TEXCOORD0);
+
+ pushBatches(LLRenderPass::PASS_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
+ pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
+
if(shaders)
{
gHighlightProgram.unbind();
--
cgit v1.3
From 3f96ec1bc9098986f1ed811120ab3793a29ae235 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Fri, 30 Sep 2011 00:05:42 -0500
Subject: SH-2244 Fix for performance warning on AMD cards
---
indra/newview/llspatialpartition.cpp | 4 ++--
indra/newview/pipeline.cpp | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 61d061520f..8e22a9be2c 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -214,7 +214,7 @@ typedef enum
//contact Runitai Linden for a copy of the SL object used to write this table
//basically, you give the table a bitmask of the look-at vector to a node and it
//gives you a triangle fan index array
-static U8 sOcclusionIndices[] =
+static U16 sOcclusionIndices[] =
{
//000
b111, b110, b010, b011, b001, b101, b100, b110,
@@ -251,7 +251,7 @@ U8* get_box_fan_indices_ptr(LLCamera* camera, const LLVector4a& center)
S32 cypher = center.greaterThan(origin).getGatheredBits() & 0x7;
- return sOcclusionIndices+cypher*8;
+ return (U8*) (sOcclusionIndices+cypher*8);
}
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index db9675650a..3fa281368c 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7532,7 +7532,7 @@ void LLPipeline::renderDeferredLighting()
gGL.syncMatrices();
mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
- GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
+ GL_UNSIGNED_SHORT, get_box_fan_indices_ptr(camera, center));
stop_glerror();
}
}
@@ -7605,7 +7605,7 @@ void LLPipeline::renderDeferredLighting()
gGL.syncMatrices();
mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
- GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
+ GL_UNSIGNED_SHORT, get_box_fan_indices_ptr(camera, center));
}
gDeferredSpotLightProgram.disableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
unbindDeferredShader(gDeferredSpotLightProgram);
--
cgit v1.3
From d698086da46b430f409e5e26e193061e770f187d Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Fri, 30 Sep 2011 01:10:26 -0500
Subject: Fix for linux build
---
indra/newview/pipeline.cpp | 3 ---
1 file changed, 3 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index db9675650a..7718a16532 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -6410,9 +6410,6 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
LLGLDisable blend(GL_BLEND);
bindDeferredShader(*shader);
- S32 width = mScreen.getWidth();
- S32 height = mScreen.getHeight();
-
if (dof_enabled)
{
//depth of field focal plane calculations
--
cgit v1.3
From 8fa45941b6ce99c462f19628a17d4db2396286b9 Mon Sep 17 00:00:00 2001
From: leyla_linden
Date: Fri, 30 Sep 2011 10:00:49 -0700
Subject: EXP-1264 Chat log shows as blank if closing viewer with chat log open
and then opening chat floater on next login EXP-1271 Remove UI hints
---
indra/llui/llfloater.h | 2 +-
indra/newview/app_settings/settings.xml | 2 +-
indra/newview/llnearbychatbar.cpp | 17 ++++++++++++++---
indra/newview/llnearbychatbar.h | 4 ++++
4 files changed, 20 insertions(+), 5 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 58c2d34253..fba59e82e1 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -293,7 +293,7 @@ public:
protected:
virtual void applySavedVariables();
- void applyRectControl();
+ virtual void applyRectControl();
void applyDockState();
void storeRectControl();
void storeVisibilityControl();
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 148b80e817..1abea6c883 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -3190,7 +3190,7 @@
Type
Boolean
Value
- 1
+ 0
EnableVoiceChat
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 258aa9a8bf..dbe30e1847 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -451,6 +451,16 @@ BOOL LLNearbyChatBar::postBuild()
return TRUE;
}
+void LLNearbyChatBar::applyRectControl()
+{
+ LLFloater::applyRectControl();
+ if (getRect().getHeight() > getMinHeight())
+ {
+ getChildView("nearby_chat")->setVisible(true);
+ mExpandedHeight = getRect().getHeight();
+ }
+}
+
void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
{
// Update things with the new font whohoo
@@ -690,14 +700,15 @@ void LLNearbyChatBar::onToggleNearbyChatPanel()
if (nearby_chat->getVisible())
{
+ mExpandedHeight = getRect().getHeight();
nearby_chat->setVisible(FALSE);
- reshape(getRect().getWidth(), 60);
- mResizeHandle[0]->setMaxHeight(60);
+ reshape(getRect().getWidth(), getMinHeight());
+ mResizeHandle[0]->setMaxHeight(getMinHeight());
}
else
{
nearby_chat->setVisible(TRUE);
- reshape(getRect().getWidth(), 360);
+ reshape(getRect().getWidth(), mExpandedHeight);
mResizeHandle[0]->setMaxHeight(S32_MAX);
}
}
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index 1d28a21ef3..0415f12a0d 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -127,6 +127,8 @@ protected:
void onChatBoxCommit();
void onChatFontChange(LLFontGL* fontp);
+ /* virtual */ void applyRectControl();
+
void onToggleNearbyChatPanel();
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
@@ -140,6 +142,8 @@ protected:
LLLineEditor* mChatBox;
LLOutputMonitorCtrl* mOutputMonitor;
LLLocalSpeakerMgr* mSpeakerMgr;
+
+ S32 mExpandedHeight;
};
#endif
--
cgit v1.3
From ce81ecd0b2d7b0e6b79a9de8a9c54c5b0364430b Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Fri, 30 Sep 2011 12:51:48 -0500
Subject: SH-2240 Fix for typo preventing deferred rendering from working on
linux/osx
---
indra/newview/llviewershadermgr.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 48d4471bdf..d3f5ebcf1c 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -1532,7 +1532,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostNoDoFProgram.mName = "Deferred Post Shader";
gDeferredPostNoDoFProgram.mShaderFiles.clear();
gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDOFF.glsl", GL_FRAGMENT_SHADER_ARB));
+ gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDoFF.glsl", GL_FRAGMENT_SHADER_ARB));
gDeferredPostNoDoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
success = gDeferredPostNoDoFProgram.createShader(NULL, NULL);
}
--
cgit v1.3
From 93e3d9e2ec0cc06cbc378ffcf23e66ed569db5f3 Mon Sep 17 00:00:00 2001
From: prep linden
Date: Fri, 30 Sep 2011 15:40:27 -0400
Subject: Fix for sh-2483
---
indra/newview/llfloatermodelpreview.cpp | 6 ++++++
indra/newview/llfloatermodelpreview.h | 3 ++-
indra/newview/skins/default/xui/en/floater_model_preview.xml | 1 +
3 files changed, 9 insertions(+), 1 deletion(-)
(limited to 'indra/newview')
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 527a868db2..213127046d 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -749,6 +749,11 @@ void LLFloaterModelPreview::draw()
if (!mModelPreview->mLoading)
{
+ if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_MATERIALS )
+ {
+ childSetTextArg("status", "[STATUS]", getString("status_material_mismatch"));
+ }
+ else
if ( mModelPreview->getLoadState() > LLModelLoader::ERROR_PARSING )
{
childSetTextArg("status", "[STATUS]", getString(LLModel::getStatusString(mModelPreview->getLoadState() - LLModelLoader::ERROR_PARSING)));
@@ -3321,6 +3326,7 @@ void LLModelPreview::rebuildUploadData()
if ( !mModel[i][j]->matchMaterialOrder(mBaseModel[j], refFaceCnt, modelFaceCnt ) )
{
+ setLoadState( LLModelLoader::ERROR_MATERIALS );
mFMP->childDisable( "calculate_btn" );
}
}
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 47de99ce25..64324854a5 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -70,7 +70,8 @@ public:
GENERATING_VERTEX_BUFFERS,
GENERATING_LOD,
DONE,
- ERROR_PARSING //basically loading failed
+ ERROR_PARSING, //basically loading failed
+ ERROR_MATERIALS,
} eLoadState;
U32 mState;
diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml
index 6c60b3e0e9..5e0d66b9b9 100755
--- a/indra/newview/skins/default/xui/en/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml
@@ -6,6 +6,7 @@
Error: Dae parsing issue - see log for details.
+ Error: Material of model is not a subset of reference model.
Loading...
Generating Meshes...
Error: Vertex number is more than 65534, aborted!
--
cgit v1.3
From 71362ea705f60eb4fdc38cc7a0f3535cb1028800 Mon Sep 17 00:00:00 2001
From: eli
Date: Fri, 30 Sep 2011 13:18:49 -0700
Subject: sync with viewer-development
---
.../newview/skins/default/xui/en/floater_about.xml | 6 +-
.../default/xui/en/panel_preferences_move.xml | 162 ++++++++++++++-------
.../skins/default/xui/en/sidepanel_task_info.xml | 2 +-
indra/newview/skins/default/xui/en/strings.xml | 2 +-
4 files changed, 114 insertions(+), 58 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 3dd394bac1..2580c06344 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -23,7 +23,7 @@ Built with [COMPILER] version [COMPILER_VERSION]
name="AboutPosition">
You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at <nolink>[HOSTNAME]</nolink> ([HOSTIP])
[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_place_profile.xml b/indra/newview/skins/default/xui/zh/panel_place_profile.xml
index d7bcb0d027..1772b65434 100644
--- a/indra/newview/skins/default/xui/zh/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/zh/panel_place_profile.xml
@@ -66,7 +66,7 @@
-
+
@@ -102,11 +102,11 @@
-
+
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
index ee8cd9794a..874fb6b218 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
@@ -47,14 +47,14 @@
m
-
+
ç¶²é¢ç´°ç¯€ï¼š
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
index 57e3540b3d..ce176b1e3c 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
index bd6d465572..07fdfd87e3 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
@@ -8,7 +8,7 @@
(ä½ç½®ã€åœ–åƒã€ç¶²é ã€æœå°‹çš„æ·å²ç´€éŒ„)
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
index 8d0e2a6355..df1a1b73a1 100644
--- a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
@@ -37,28 +37,28 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_profile_view.xml b/indra/newview/skins/default/xui/zh/panel_profile_view.xml
index 12fe776e45..2684287692 100644
--- a/indra/newview/skins/default/xui/zh/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/zh/panel_profile_view.xml
@@ -1,14 +1,14 @@
- Online
+ 上線
- Offline
+ 離線
-
+
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml
index 38fde494aa..a441b8898d 100644
--- a/indra/newview/skins/default/xui/zh/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml
@@ -24,7 +24,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
index 0622cb4e73..7cae8fe8cf 100644
--- a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
@@ -6,14 +6,14 @@
未知
-
-
-
-
-
+
+
+
+
+
-
-
+
+
diff --git a/indra/newview/skins/default/xui/zh/panel_script_ed.xml b/indra/newview/skins/default/xui/zh/panel_script_ed.xml
index 1dc7c1e089..cc2b0fc673 100644
--- a/indra/newview/skins/default/xui/zh/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/zh/panel_script_ed.xml
@@ -4,7 +4,7 @@
載入ä¸...
- ä½ ä¸å¯Ÿçœ‹æˆ–編輯æ¤è…³æœ¬ï¼Œè‡ªå¾žå®ƒè¢«è¨å®šç‚º "no copy" å¾Œã€‚ä½ éœ€è¦å®Œæ•´æ¬Šé™åŽ»å¯Ÿçœ‹æˆ–ç·¨è¼¯æœ‰åŒ…å«è…³æœ¬åœ¨å…§çš„物件。
+ ä½ ä¸èƒ½å¯Ÿçœ‹æˆ–編輯æ¤è…³æœ¬ï¼Œè‡ªå¾žå®ƒè¢«è¨å®šç‚º "no copy" å¾Œã€‚ä½ éœ€è¦å®Œæ•´æ¬Šé™åŽ»å¯Ÿçœ‹æˆ–ç·¨è¼¯æœ‰åŒ…å«è…³æœ¬åœ¨å…§çš„物件。
公開物件ä¸èƒ½åŸ·è¡Œè…³æœ¬
diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray.xml b/indra/newview/skins/default/xui/zh/panel_side_tray.xml
index b706f1839a..e5c7deb7d6 100644
--- a/indra/newview/skins/default/xui/zh/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_side_tray.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml
index d5c3096b22..32bf0d22d8 100644
--- a/indra/newview/skins/default/xui/zh/role_actions.xml
+++ b/indra/newview/skins/default/xui/zh/role_actions.xml
@@ -18,7 +18,7 @@
-
+
@@ -54,7 +54,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
index 4cc16ed250..7abe95a402 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
@@ -1,5 +1,5 @@
-
+
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
index 5aad4568bd..3d46e52726 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
@@ -1,10 +1,10 @@
- Deed
+ 讓渡
- Deed
+ 讓渡
ä½ å¯ä»¥ä¿®æ”¹é€™å€‹ç‰©ä»¶
@@ -56,7 +56,7 @@
-
+
點擊以:
@@ -85,16 +85,16 @@
-
+
-
-
-
+
+
+
-
+
B:
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 0949e61fa1..6dbe44d32e 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -1042,10 +1042,10 @@
按下 ESC éµå›žå¾©åˆ°ä¸–界的視角
- Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].
+ 沒有發ç¾ä½ æƒ³è¦æ‰¾çš„嗎?試試 [secondlife:///app/search/all/[SEARCH_TERM] æœå°‹]。
- Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].
+ 沒有發ç¾ä½ æƒ³è¦æ‰¾çš„嗎?試試 [secondlife:///app/search/places/[SEARCH_TERM] æœå°‹]。
Drag a landmark here to add it to your favorites.
@@ -1190,25 +1190,25 @@
Buy for L$
- Stone
+ 石é
- Metal
+ 金屬
- Glass
+ 玻璃
- Wood
+ 木é
- Flesh
+ 肌肉
- Plastic
+ å¡‘è†
- Rubber
+ æ©¡è†
Light
@@ -1385,7 +1385,7 @@
Charter Member
- Linden Lab Employee
+ 林登實驗室員工
Payment Info Used
@@ -1433,7 +1433,7 @@
伺æœå™¨ä¸Šæœªç™¼ç¾è…³æœ¬ã€‚
- Problem downloading
+ å•題下載ä¸
Insufficient permissions to download a script.
@@ -1491,7 +1491,7 @@
(未知)
-
+
@@ -1507,7 +1507,7 @@
Total
- No group data found for group
+ 無群組資料發ç¾
parent estate
@@ -1540,13 +1540,13 @@
地段腳本記憶體
- Parcels Listed: [PARCELS]
+ 地段清單:[PARCELS]
- Memory used: [COUNT] kb out of [MAX] kb; [AVAILABLE] kb available
+ 計憶體用é‡ï¼šä½¿ç”¨ [MAX] kb ä¸çš„ [COUNT] kb ;剩餘 [AVAILABLE] kb å¯ç”¨
- Memory used: [COUNT] kb
+ 記憶體用é‡ï¼š[COUNT] kb
地段腳本 URLs
@@ -1573,7 +1573,7 @@
You do not have permission to examine this parcel
- Sitting On
+ å在
胸部
@@ -1759,7 +1759,7 @@
é 覽
- Properties
+ 屬性
An object named
@@ -1889,40 +1889,40 @@
PDT
- Forward
+ å‘å‰
- Left
+ å‘å·¦
- Right
+ å‘å³
- Back
+ å‘後
- North
+ 北
- South
+ å—
- West
+ 西
- East
+ æ±
- Up
+ å‘上
- Down
+ å‘下
任何類別
- Shopping
+ 採購
Land Rental
@@ -1958,28 +1958,28 @@
完全æˆäºº
- Arts & Culture
+ è—術與文化
- Business
+ 商æ¥
- Educational
+ 教育
- Gaming
+ éŠæˆ²
èšæœƒæ‰€
- Newcomer Friendly
+ 新手å‹å–„
- Parks & Nature
+ 公園與自然
- Residential
+ ä½å®…
Stage
@@ -2024,36 +2024,36 @@
---
- Multiple Media
+ 多媒體
- Play/Pause Media
+ æ’æ”¾ï¼æš«åœ 媒體
- An error was found parsing the command line.
-Please see: http://wiki.secondlife.com/wiki/Client_parameters
-Error:
+ è§£æžå‘½ä»¤åˆ—時發ç¾éŒ¯èª¤ã€‚
+è«‹åƒé–±ï¼š http://wiki.secondlife.com/wiki/Client_parameters
+錯誤:
- [APP_NAME] Command line usage:
+ [APP_NAME] 命令列用法:
- [APP_NAME] is unable to access a file that it needs.
+ [APP_NAME] 無法å˜å–它所需è¦çš„æª”案。
This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open.
If this message persists, restart your computer and try again.
If it continues to persist, you may need to completely uninstall [APP_NAME] and reinstall it.
- Fatal Error
+ 致命錯誤
[APP_NAME] requires a processor with AltiVec (G4 or later).
- [APP_NAME] is already running.
-Check your task bar for a minimized copy of the program.
-If this message persists, restart your computer.
+ [APP_NAME] 已經在執行ä¸ã€‚
+è«‹æª¢æŸ¥ä½ çš„å·¥ä½œåˆ—è£¡æ˜¯å¦æœ‰å…¶ä»–最å°åŒ–的相åŒç¨‹å¼ã€‚
+å¦‚æžœé€™å€‹è¨Šæ¯æŒçºŒå‡ºç¾ï¼Œè«‹é‡æ–°å•Ÿå‹•ä½ çš„é›»è…¦ã€‚
[APP_NAME] appears to have frozen or crashed on the previous run.
@@ -2082,8 +2082,8 @@ Please download the latest version from www.secondlife.com.
錯誤
- Unable to run fullscreen at [WIDTH] x [HEIGHT].
-Running in window.
+ 無法執行全螢幕於 [WIDTH] x [HEIGHT].
+執行於視窗ä¸ã€‚
Shutdown Error while destroying window (DestroyWindow() failed)
@@ -2111,7 +2111,7 @@ Also be sure your monitor is set to True Color (32-bit) in Control Panels > D
If you continue to receive this message, contact the [SUPPORT_SITE].
- Can't set pixel format
+ 無法è¨å®šåƒç´ æ ¼å¼
Can't create GL rendering context
@@ -2920,7 +2920,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
Middle Part
- More
+ 更多
More Blush
@@ -3559,7 +3559,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
購買這塊土地
- Voice not available here
+ æ¤åœ°ä¸¦ä¸å…許語音
ä¸å…許飛行
@@ -3568,13 +3568,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
ç¦æ¢æŽ¨æ’ž
- Building/dropping objects not allowed
+ å»ºé€ ï¼ä¸Ÿæ£„ 物件ä¸è¢«å…許
- Scripts not allowed
+ 腳本ä¸è¢«å…許
- Health
+ å¥åº·
完全æˆäººåœ°å€
@@ -3628,7 +3628,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
[NAME] æ£åœ¨è¼¸å…¥...
- (Unnamed)
+ (未命å)
(Moderated: Voices off by default)
@@ -3670,10 +3670,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
Connected, click Leave Call to hang up
- Left voice call
+ 離開語音通話
- Connecting...
+ è¯æŽ¥ä¸...
Ad-hoc Conference
@@ -3715,10 +3715,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
æ¤æœƒè©±ä¸å†å˜åœ¨
- You do not have that ability.
+ ä½ ä¸¦ä¸å…·æœ‰é€™å€‹èƒ½åŠ›ã€‚
- You do not have that ability.
+ ä½ ä¸¦ä¸å…·æœ‰é€™å€‹èƒ½åŠ›ã€‚
You are not a session moderator.
@@ -3903,7 +3903,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
內容
- Gesture
+ å§¿å‹¢
男性姿勢
@@ -4048,7 +4048,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
US$ [AMOUNT]
- Membership
+ æˆå“¡è³‡æ ¼
角色
@@ -4057,13 +4057,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
Group Identity
- Parcel Management
+ 地段管ç†
Parcel Identity
- Parcel Settings
+ 地段è¨å®š
Parcel Powers
@@ -4075,10 +4075,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
Parcel Content
- Object Management
+ 物件管ç†
- Accounting
+ 會計
通知
@@ -4087,16 +4087,16 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
èŠå¤©
- Delete selected items?
+ 刪除所é¸å–的物å“?
- Delete selected item?
+ 刪除所é¸å–的物å“?
沒有任何物å“åœ¨é€™å€‹è£æ‰®å…§
- Select an editor using the ExternalEditor setting.
+ 鏿“‡ä¸€å€‹ç·¨è¼¯å™¨ä½¿ç”¨ ExternalEditor è¨å®šã€‚
Cannot find the external editor you specified.
@@ -4107,7 +4107,7 @@ Try enclosing path to the editor with double quotes.
Error parsing the external editor command.
- External editor failed to run.
+ 執行外部編輯器失敗。
Esc
--
cgit v1.3
From ccd619013d851b5a63976205ea06002e92d7f468 Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Fri, 30 Sep 2011 13:37:03 -0700
Subject: Found and removed duplicate command icon definitions.
---
indra/newview/skins/default/textures/textures.xml | 68 ++++++++---------------
1 file changed, 23 insertions(+), 45 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 57ce7fe57a..4462fb792f 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -125,29 +125,29 @@ with the same filename but different name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -762,26 +762,4 @@ with the same filename but different name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--
cgit v1.3
From 784fed2ebb3efd8e4da132c291aaf16cdb931b98 Mon Sep 17 00:00:00 2001
From: Dave Parks
Date: Fri, 30 Sep 2011 16:15:33 -0500
Subject: SH-2465 Fix for redundant addition of bloom when FXAA enabled
---
indra/newview/pipeline.cpp | 246 ++++++++++++++++++++++++---------------------
1 file changed, 131 insertions(+), 115 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index c517c9f602..5f010624a8 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -6334,7 +6334,10 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
if (LLPipeline::sRenderDeferred)
{
- bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater();
+ bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater() &&
+ !LLToolMgr::getInstance()->inBuildMode() &&
+ gSavedSettings.getBOOL("RenderDepthOfField");
+
bool multisample = gSavedSettings.getU32("RenderFSAASamples") > 1;
if (multisample)
@@ -6363,7 +6366,10 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGlowCombineFXAAProgram.unbind();
mFXAABuffer.flush();
- mScreen.bindTarget();
+ if (dof_enabled)
+ { //if depth of field is not enabled, this is the final pass (draw to window)
+ mScreen.bindTarget();
+ }
LLGLSLShader* shader = &gFXAAProgram;
shader->bind();
@@ -6389,158 +6395,168 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
gGL.end();
gGL.flush();
- mScreen.flush();
+ if (dof_enabled)
+ {
+ mScreen.flush();
+ }
shader->unbind();
}
gViewerWindow->setup3DViewport();
- LLGLSLShader* shader = &gDeferredPostProgram;
- if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
+ if (dof_enabled || !multisample)
{
- shader = &gDeferredGIFinalProgram;
- dof_enabled = false;
- }
- else if (!dof_enabled || LLToolMgr::getInstance()->inBuildMode() || !gSavedSettings.getBOOL("RenderDepthOfField"))
- { //squish focal length when in build mode (or if DoF is disabled) so DoF doesn't make editing objects difficult
- shader = &gDeferredPostNoDoFProgram;
- dof_enabled = false;
- }
+ LLGLSLShader* shader = &gDeferredPostProgram;
+ if (!dof_enabled)
+ {
+ shader = &gDeferredPostNoDoFProgram;
+ }
- LLGLDisable blend(GL_BLEND);
- bindDeferredShader(*shader);
+ LLGLDisable blend(GL_BLEND);
+ bindDeferredShader(*shader);
- if (dof_enabled)
- {
- //depth of field focal plane calculations
+ if (dof_enabled)
+ {
+ //depth of field focal plane calculations
- static F32 current_distance = 16.f;
- static F32 start_distance = 16.f;
- static F32 transition_time = 1.f;
+ static F32 current_distance = 16.f;
+ static F32 start_distance = 16.f;
+ static F32 transition_time = 1.f;
- LLVector3 focus_point;
+ LLVector3 focus_point;
- LLViewerObject* obj = LLViewerMediaFocus::getInstance()->getFocusedObject();
- if (obj && obj->mDrawable && obj->isSelected())
- { //focus on selected media object
- S32 face_idx = LLViewerMediaFocus::getInstance()->getFocusedFace();
- if (obj && obj->mDrawable)
- {
- LLFace* face = obj->mDrawable->getFace(face_idx);
- if (face)
+ LLViewerObject* obj = LLViewerMediaFocus::getInstance()->getFocusedObject();
+ if (obj && obj->mDrawable && obj->isSelected())
+ { //focus on selected media object
+ S32 face_idx = LLViewerMediaFocus::getInstance()->getFocusedFace();
+ if (obj && obj->mDrawable)
{
- focus_point = face->getPositionAgent();
+ LLFace* face = obj->mDrawable->getFace(face_idx);
+ if (face)
+ {
+ focus_point = face->getPositionAgent();
+ }
}
}
- }
- if (focus_point.isExactlyZero())
- {
- if (LLViewerJoystick::getInstance()->getOverrideCamera())
- { //focus on point under cursor
- focus_point = gDebugRaycastIntersection;
- }
- else if (gAgentCamera.cameraMouselook())
- { //focus on point under mouselook crosshairs
- gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
- NULL,
- &focus_point);
- }
- else
+ if (focus_point.isExactlyZero())
{
- LLViewerObject* obj = gAgentCamera.getFocusObject();
- if (obj)
- { //focus on alt-zoom target
- focus_point = LLVector3(gAgentCamera.getFocusGlobal()-gAgent.getRegion()->getOriginGlobal());
+ if (LLViewerJoystick::getInstance()->getOverrideCamera())
+ { //focus on point under cursor
+ focus_point = gDebugRaycastIntersection;
+ }
+ else if (gAgentCamera.cameraMouselook())
+ { //focus on point under mouselook crosshairs
+ gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
+ NULL,
+ &focus_point);
}
else
- { //focus on your avatar
- focus_point = gAgent.getPositionAgent();
+ {
+ LLViewerObject* obj = gAgentCamera.getFocusObject();
+ if (obj)
+ { //focus on alt-zoom target
+ focus_point = LLVector3(gAgentCamera.getFocusGlobal()-gAgent.getRegion()->getOriginGlobal());
+ }
+ else
+ { //focus on your avatar
+ focus_point = gAgent.getPositionAgent();
+ }
}
}
- }
- LLVector3 eye = LLViewerCamera::getInstance()->getOrigin();
- F32 target_distance = 16.f;
- if (!focus_point.isExactlyZero())
- {
- target_distance = LLViewerCamera::getInstance()->getAtAxis() * (focus_point-eye);
- }
+ LLVector3 eye = LLViewerCamera::getInstance()->getOrigin();
+ F32 target_distance = 16.f;
+ if (!focus_point.isExactlyZero())
+ {
+ target_distance = LLViewerCamera::getInstance()->getAtAxis() * (focus_point-eye);
+ }
- if (transition_time >= 1.f &&
- fabsf(current_distance-target_distance)/current_distance > 0.01f)
- { //large shift happened, interpolate smoothly to new target distance
- transition_time = 0.f;
- start_distance = current_distance;
- }
- else if (transition_time < 1.f)
- { //currently in a transition, continue interpolating
- transition_time += 1.f/gSavedSettings.getF32("CameraFocusTransitionTime")*gFrameIntervalSeconds;
- transition_time = llmin(transition_time, 1.f);
+ if (transition_time >= 1.f &&
+ fabsf(current_distance-target_distance)/current_distance > 0.01f)
+ { //large shift happened, interpolate smoothly to new target distance
+ transition_time = 0.f;
+ start_distance = current_distance;
+ }
+ else if (transition_time < 1.f)
+ { //currently in a transition, continue interpolating
+ transition_time += 1.f/gSavedSettings.getF32("CameraFocusTransitionTime")*gFrameIntervalSeconds;
+ transition_time = llmin(transition_time, 1.f);
- F32 t = cosf(transition_time*F_PI+F_PI)*0.5f+0.5f;
- current_distance = start_distance + (target_distance-start_distance)*t;
- }
- else
- { //small or no change, just snap to target distance
- current_distance = target_distance;
- }
+ F32 t = cosf(transition_time*F_PI+F_PI)*0.5f+0.5f;
+ current_distance = start_distance + (target_distance-start_distance)*t;
+ }
+ else
+ { //small or no change, just snap to target distance
+ current_distance = target_distance;
+ }
- //convert to mm
- F32 subject_distance = current_distance*1000.f;
- F32 fnumber = gSavedSettings.getF32("CameraFNumber");
- F32 default_focal_length = gSavedSettings.getF32("CameraFocalLength");
+ //convert to mm
+ F32 subject_distance = current_distance*1000.f;
+ F32 fnumber = gSavedSettings.getF32("CameraFNumber");
+ F32 default_focal_length = gSavedSettings.getF32("CameraFocalLength");
- F32 fov = LLViewerCamera::getInstance()->getView();
+ F32 fov = LLViewerCamera::getInstance()->getView();
- const F32 default_fov = gSavedSettings.getF32("CameraFieldOfView") * F_PI/180.f;
- //const F32 default_aspect_ratio = gSavedSettings.getF32("CameraAspectRatio");
+ const F32 default_fov = gSavedSettings.getF32("CameraFieldOfView") * F_PI/180.f;
+ //const F32 default_aspect_ratio = gSavedSettings.getF32("CameraAspectRatio");
- //F32 aspect_ratio = (F32) mScreen.getWidth()/(F32)mScreen.getHeight();
+ //F32 aspect_ratio = (F32) mScreen.getWidth()/(F32)mScreen.getHeight();
- F32 dv = 2.f*default_focal_length * tanf(default_fov/2.f);
- //F32 dh = 2.f*default_focal_length * tanf(default_fov*default_aspect_ratio/2.f);
+ F32 dv = 2.f*default_focal_length * tanf(default_fov/2.f);
+ //F32 dh = 2.f*default_focal_length * tanf(default_fov*default_aspect_ratio/2.f);
- F32 focal_length = dv/(2*tanf(fov/2.f));
+ F32 focal_length = dv/(2*tanf(fov/2.f));
- //F32 tan_pixel_angle = tanf(LLDrawable::sCurPixelAngle);
+ //F32 tan_pixel_angle = tanf(LLDrawable::sCurPixelAngle);
- // from wikipedia -- c = |s2-s1|/s2 * f^2/(N(S1-f))
- // where N = fnumber
- // s2 = dot distance
- // s1 = subject distance
- // f = focal length
- //
+ // from wikipedia -- c = |s2-s1|/s2 * f^2/(N(S1-f))
+ // where N = fnumber
+ // s2 = dot distance
+ // s1 = subject distance
+ // f = focal length
+ //
- F32 blur_constant = focal_length*focal_length/(fnumber*(subject_distance-focal_length));
- blur_constant /= 1000.f; //convert to meters for shader
- F32 magnification = focal_length/(subject_distance-focal_length);
+ F32 blur_constant = focal_length*focal_length/(fnumber*(subject_distance-focal_length));
+ blur_constant /= 1000.f; //convert to meters for shader
+ F32 magnification = focal_length/(subject_distance-focal_length);
- shader->uniform1f("focal_distance", -subject_distance/1000.f);
- shader->uniform1f("blur_constant", blur_constant);
- shader->uniform1f("tan_pixel_angle", tanf(1.f/LLDrawable::sCurPixelAngle));
- shader->uniform1f("magnification", magnification);
- }
+ shader->uniform1f("focal_distance", -subject_distance/1000.f);
+ shader->uniform1f("blur_constant", blur_constant);
+ shader->uniform1f("tan_pixel_angle", tanf(1.f/LLDrawable::sCurPixelAngle));
+ shader->uniform1f("magnification", magnification);
+ }
+
+ S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+ if (channel > -1)
+ {
+ mScreen.bindTexture(0, channel);
+ }
+
+ if (multisample)
+ { //bloom has already been added, bind black
+ channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_BLOOM);
+ if (channel > -1)
+ {
+ gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sBlackImagep);
+ }
+ }
- S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
- if (channel > -1)
- {
- mScreen.bindTexture(0, channel);
- }
- gGL.begin(LLRender::TRIANGLE_STRIP);
- gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
- gGL.vertex2f(-1,-1);
+ gGL.begin(LLRender::TRIANGLE_STRIP);
+ gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+ gGL.vertex2f(-1,-1);
- gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
- gGL.vertex2f(-1,3);
+ gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+ gGL.vertex2f(-1,3);
- gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
- gGL.vertex2f(3,-1);
+ gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+ gGL.vertex2f(3,-1);
- gGL.end();
+ gGL.end();
- unbindDeferredShader(*shader);
+ unbindDeferredShader(*shader);
+ }
}
else
{
--
cgit v1.3
From cdc80b1dd34ef533d7500bf1ab89abf3c5d81bb3 Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Fri, 30 Sep 2011 15:25:02 -0700
Subject: EXP-1205 PROGRESS -- As a User, I want a toybox which will contain
all buttons that I can d&d into the toolbars EXP-1268 FIX -- The "Restore
Defaults" button should reset the left/right/bottom toolbars to their default
states
* LLToolBarView::loadDefaultToolbars now a static function
* Toybox button callback hooked up to properly restore defaults
Reviewed by Merov
---
indra/llui/lltoolbarview.cpp | 15 ++++++++++++++-
indra/llui/lltoolbarview.h | 3 ++-
indra/newview/llfloatertoybox.cpp | 2 ++
3 files changed, 18 insertions(+), 2 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 1c6cf3230b..12247519ad 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -114,7 +114,7 @@ bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar)
}
bool LLToolBarView::loadToolbars(bool force_default)
-{
+{
LLToolBarView::ToolbarSet toolbar_set;
// Load the toolbars.xml file
@@ -204,6 +204,19 @@ bool LLToolBarView::loadToolbars(bool force_default)
return true;
}
+//static
+bool LLToolBarView::loadDefaultToolbars()
+{
+ bool retval = false;
+
+ if (gToolBarView)
+ {
+ retval = gToolBarView->loadToolbars(true);
+ }
+
+ return retval;
+}
+
void LLToolBarView::saveToolbars() const
{
// Build the parameter tree from the toolbar data
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index efe6920db8..95c09ece73 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -72,7 +72,8 @@ public:
bool hasCommand(const LLCommandId& commandId) const;
// Loads the toolbars from the existing user or default settings
bool loadToolbars(bool force_default = false); // return false if load fails
- bool loadDefaultToolbars() { return loadToolbars(true); }
+
+ static bool loadDefaultToolbars();
protected:
friend class LLUICtrlFactory;
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
index d7f114043d..7a6afb4e33 100644
--- a/indra/newview/llfloatertoybox.cpp
+++ b/indra/newview/llfloatertoybox.cpp
@@ -61,6 +61,8 @@ BOOL LLFloaterToybox::postBuild()
center();
mBtnRestoreDefaults = getChild("btn_restore_defaults");
+ mBtnRestoreDefaults->setCommitCallback(boost::bind(&LLToolBarView::loadDefaultToolbars));
+
mToolBar = getChild("toybox_toolbar");
LLCommandManager& cmdMgr = LLCommandManager::instance();
--
cgit v1.3
From 462f6a00285a92701ecba7cf69d5236f337e0781 Mon Sep 17 00:00:00 2001
From: Leslie Linden
Date: Fri, 30 Sep 2011 15:25:41 -0700
Subject: * Updated howto and profile windows to point to different buttons.
Web content is still problematic for FUI floaters.
---
indra/newview/app_settings/commands.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 224c1b4b48..77bf7cace3 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -70,7 +70,7 @@
label_ref="Command_HowTo_Label"
tooltip_ref="Command_HowTo_Tooltip"
function="Floater.ToolbarToggle"
- parameter="floater_help_browser"
+ parameter="help_browser"
/>
Date: Fri, 30 Sep 2011 16:57:08 -0700
Subject: param block cleanup added Flag as value type moved Batch to
BatchBlock renamed Choice to ChoiceBlock made merging of parameters for
ValueParams consistent (fillFrom and overwriteFrom are inverses of each other
now) made iteration over Multiple type params easier initial schema param
blocks
---
indra/llui/lllineeditor.h | 2 +-
indra/llui/llloadingindicator.cpp | 7 +-
indra/llui/llloadingindicator.h | 4 +-
indra/llui/llnotifications.h | 4 +-
indra/llui/llnotificationtemplate.h | 4 +-
indra/llui/llnotificationvisibilityrule.h | 2 +-
indra/llui/llscrolllistcolumn.h | 4 +-
indra/llui/llsdparam.cpp | 6 +-
indra/llui/llsdparam.h | 4 +-
indra/llui/lltextbase.h | 2 +-
indra/llui/lltoolbar.cpp | 6 +-
indra/llui/lltoolbarview.h | 4 -
indra/llui/llui.cpp | 4 +-
indra/llui/llui.h | 2 +-
indra/llui/lluicolortable.h | 2 +-
indra/llui/lluictrl.h | 4 +-
indra/llui/lluictrlfactory.h | 6 +-
indra/llui/llview.h | 2 +-
indra/llxuixml/llinitparam.cpp | 2 +-
indra/llxuixml/llinitparam.h | 452 +++++++++------------
indra/llxuixml/llxuiparser.cpp | 140 ++++++-
indra/llxuixml/llxuiparser.h | 6 +-
indra/newview/llnamelistctrl.h | 2 +-
.../skins/default/xui/en/panel_toolbar_view.xml | 3 -
.../skins/default/xui/en/widgets/toolbar.xml | 1 +
25 files changed, 377 insertions(+), 298 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 583bde360a..2518dbe3c7 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -60,7 +60,7 @@ public:
typedef boost::function keystroke_callback_t;
- struct MaxLength : public LLInitParam::Choice
+ struct MaxLength : public LLInitParam::ChoiceBlock
{
Alternative bytes, chars;
diff --git a/indra/llui/llloadingindicator.cpp b/indra/llui/llloadingindicator.cpp
index c4eec1835c..6ac38f5ad4 100644
--- a/indra/llui/llloadingindicator.cpp
+++ b/indra/llui/llloadingindicator.cpp
@@ -34,6 +34,7 @@
// Project includes
#include "lluictrlfactory.h"
#include "lluiimage.h"
+#include "boost/foreach.hpp"
// registered in llui.cpp to avoid being left out by MS linker
//static LLDefaultChildRegistry::Register r("loading_indicator");
@@ -51,11 +52,9 @@ LLLoadingIndicator::LLLoadingIndicator(const Params& p)
void LLLoadingIndicator::initFromParams(const Params& p)
{
- for (LLInitParam::ParamIterator::const_iterator it = p.images().image.begin(), end_it = p.images().image.end();
- it != end_it;
- ++it)
+ BOOST_FOREACH(LLUIImage* image, p.images.image)
{
- mImages.push_back(it->getValue());
+ mImages.push_back(image);
}
// Start timer for switching images.
diff --git a/indra/llui/llloadingindicator.h b/indra/llui/llloadingindicator.h
index 7c44478848..c1f979c111 100644
--- a/indra/llui/llloadingindicator.h
+++ b/indra/llui/llloadingindicator.h
@@ -51,7 +51,7 @@ class LLLoadingIndicator
LOG_CLASS(LLLoadingIndicator);
public:
- struct Images : public LLInitParam::Block
+ struct Images : public LLInitParam::BatchBlock
{
Multiple image;
@@ -63,7 +63,7 @@ public:
struct Params : public LLInitParam::Block
{
Optional images_per_sec;
- Batch images;
+ Optional images;
Params()
: images_per_sec("images_per_sec", 1.0f),
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 0c4d4fc897..462d69be2e 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -201,7 +201,7 @@ public:
FormInput();
};
- struct FormElement : public LLInitParam::Choice
+ struct FormElement : public LLInitParam::ChoiceBlock
{
Alternative button;
Alternative input;
@@ -312,7 +312,7 @@ public:
Optional context;
Optional responder;
- struct Functor : public LLInitParam::Choice
+ struct Functor : public LLInitParam::ChoiceBlock
{
Alternative name;
Alternative function;
diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h
index ab777d37a5..fb50c9c123 100644
--- a/indra/llui/llnotificationtemplate.h
+++ b/indra/llui/llnotificationtemplate.h
@@ -91,7 +91,7 @@ struct LLNotificationTemplate
//
// as well as
// ...
- Flag dummy_val;
+ Optional dummy_val;
public:
Multiple contexts;
@@ -147,7 +147,7 @@ struct LLNotificationTemplate
{}
};
- struct FormRef : public LLInitParam::Choice
+ struct FormRef : public LLInitParam::ChoiceBlock
{
Alternative form;
Alternative form_template;
diff --git a/indra/llui/llnotificationvisibilityrule.h b/indra/llui/llnotificationvisibilityrule.h
index 78bdec2a8f..78788a275c 100644
--- a/indra/llui/llnotificationvisibilityrule.h
+++ b/indra/llui/llnotificationvisibilityrule.h
@@ -59,7 +59,7 @@ struct LLNotificationVisibilityRule
{}
};
- struct Rule : public LLInitParam::Choice
+ struct Rule : public LLInitParam::ChoiceBlock
{
Alternative show;
Alternative hide;
diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h
index 12baea8e0c..b4d4a6d05e 100644
--- a/indra/llui/llscrolllistcolumn.h
+++ b/indra/llui/llscrolllistcolumn.h
@@ -95,7 +95,7 @@ public:
Optional sort_direction;
Optional sort_ascending;
- struct Width : public LLInitParam::Choice
+ struct Width : public LLInitParam::ChoiceBlock
{
Alternative dynamic_width;
Alternative pixel_width;
@@ -112,7 +112,7 @@ public:
Optional width;
// either an image or label is used in column header
- struct Header : public LLInitParam::Choice
+ struct Header : public LLInitParam::ChoiceBlock
{
Alternative label;
Alternative image;
diff --git a/indra/llui/llsdparam.cpp b/indra/llui/llsdparam.cpp
index 04919e6991..4b69360e33 100644
--- a/indra/llui/llsdparam.cpp
+++ b/indra/llui/llsdparam.cpp
@@ -45,7 +45,7 @@ LLParamSDParser::LLParamSDParser()
if (sReadFuncs.empty())
{
- registerParserFuncs(readNoValue, &LLParamSDParser::writeNoValue);
+ registerParserFuncs(readFlag, &LLParamSDParser::writeFlag);
registerParserFuncs(readS32, &LLParamSDParser::writeTypedValue);
registerParserFuncs(readU32, &LLParamSDParser::writeU32Param);
registerParserFuncs(readF32, &LLParamSDParser::writeTypedValue);
@@ -72,7 +72,7 @@ bool LLParamSDParser::writeU32Param(LLParamSDParser::parser_t& parser, const voi
return true;
}
-bool LLParamSDParser::writeNoValue(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+bool LLParamSDParser::writeFlag(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
{
LLParamSDParser& sdparser = static_cast(parser);
if (!sdparser.mWriteRootSD) return false;
@@ -226,7 +226,7 @@ LLSD* LLParamSDParser::getSDWriteNode(const parser_t::name_stack_t& name_stack)
return sd_to_write;
}
-bool LLParamSDParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLParamSDParser::readFlag(Parser& parser, void* val_ptr)
{
LLParamSDParser& self = static_cast(parser);
return self.mCurReadSD == &NO_VALUE_MARKER;
diff --git a/indra/llui/llsdparam.h b/indra/llui/llsdparam.h
index f776c781b3..a371c28f68 100644
--- a/indra/llui/llsdparam.h
+++ b/indra/llui/llsdparam.h
@@ -63,9 +63,9 @@ private:
LLSD* getSDWriteNode(const parser_t::name_stack_t& name_stack);
static bool writeU32Param(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
- static bool writeNoValue(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
+ static bool writeFlag(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
- static bool readNoValue(Parser& parser, void* val_ptr);
+ static bool readFlag(Parser& parser, void* val_ptr);
static bool readS32(Parser& parser, void* val_ptr);
static bool readU32(Parser& parser, void* val_ptr);
static bool readF32(Parser& parser, void* val_ptr);
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 7d545a1ba6..384d9116fc 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -237,7 +237,7 @@ public:
friend class LLNormalTextSegment;
friend class LLUICtrlFactory;
- struct LineSpacingParams : public LLInitParam::Choice
+ struct LineSpacingParams : public LLInitParam::ChoiceBlock
{
Alternative multiple;
Alternative pixels;
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index caad896a06..d940bed905 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -185,7 +185,7 @@ void LLToolBar::initFromParams(const LLToolBar::Params& p)
LLPanel::Params button_panel_p(p.button_panel);
button_panel_p.rect = center_panel->getLocalRect();
- button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
+ button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
mButtonPanel = LLUICtrlFactory::create(button_panel_p);
center_panel->addChild(mButtonPanel);
@@ -558,8 +558,8 @@ BOOL LLToolBarButton::handleHover(S32 x, S32 y, MASK mask)
LLToolBar* bar = getParentByType();
if (view)
{
- view->startDrag(bar->createButton(mId));
- setVisible(FALSE);
+ //view->startDrag(bar->createButton(mId));
+ //setVisible(FALSE);
}
}
}
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index ea3422f04e..dd2bbf0e49 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -65,10 +65,6 @@ public:
virtual ~LLToolBarView();
virtual BOOL postBuild();
virtual void draw();
- virtual BOOL handleHover(S32 x, S32 y, MASK mask);
- virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- virtual void onMouseCaptureLost();
- void startDrag(LLToolBarButton*);
// Toolbar view interface with the rest of the world
// Checks if the commandId is being used somewhere in one of the toolbars
bool hasCommand(const LLCommandId& commandId) const;
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 4f129ccfba..76a12e649b 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -2107,7 +2107,7 @@ namespace LLInitParam
void ParamValue >::updateValueFromBlock()
{
- if (control.isProvided())
+ if (control.isProvided() && !control().empty())
{
updateValue(LLUIColorTable::instance().getColor(control));
}
@@ -2264,9 +2264,11 @@ namespace LLInitParam
// in this case, that is left+width and bottom+height
LLRect& value = getValue();
+ right.set(value.mRight, false);
left.set(value.mLeft, make_block_authoritative);
width.set(value.getWidth(), make_block_authoritative);
+ top.set(value.mTop, false);
bottom.set(value.mBottom, make_block_authoritative);
height.set(value.getHeight(), make_block_authoritative);
}
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 7801a01ace..3afb7c65a9 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -365,7 +365,7 @@ template LLRegisterWith LLInitClass::sRegister(
template LLRegisterWith LLDestroyClass::sRegister(&T::destroyClass);
// useful parameter blocks
-struct TimeIntervalParam : public LLInitParam::Choice
+struct TimeIntervalParam : public LLInitParam::ChoiceBlock
{
Alternative seconds;
Alternative frames;
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 76518789ec..6a7a681d57 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -44,7 +44,7 @@ LOG_CLASS(LLUIColorTable);
typedef std::map string_color_map_t;
public:
- struct ColorParams : LLInitParam::Choice
+ struct ColorParams : LLInitParam::ChoiceBlock
{
Alternative value;
Alternative reference;
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index fc56e5fc35..a8a4e3191d 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -76,14 +76,14 @@ public:
Optional function;
};
- struct EnableControls : public LLInitParam::Choice
+ struct EnableControls : public LLInitParam::ChoiceBlock
{
Alternative enabled;
Alternative disabled;
EnableControls();
};
- struct ControlVisibility : public LLInitParam::Choice
+ struct ControlVisibility : public LLInitParam::ChoiceBlock
{
Alternative visible;
Alternative invisible;
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 71c38237c1..d612ad5005 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -125,12 +125,12 @@ private:
// base case for recursion, there are NO base classes of LLInitParam::BaseBlock
template
- class ParamDefaults : public LLSingleton >
+ class ParamDefaults : public LLSingleton >
{
public:
- const LLInitParam::BaseBlockWithFlags& get() { return mBaseBlock; }
+ const LLInitParam::BaseBlock& get() { return mBaseBlock; }
private:
- LLInitParam::BaseBlockWithFlags mBaseBlock;
+ LLInitParam::BaseBlock mBaseBlock;
};
public:
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index f4e31b109a..a1c46f3bf3 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -98,7 +98,7 @@ private:
class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElement
{
public:
- struct Follows : public LLInitParam::Choice
+ struct Follows : public LLInitParam::ChoiceBlock
{
Alternative string;
Alternative flags;
diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index c024fd405e..99016205c8 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -365,7 +365,7 @@ namespace LLInitParam
// verify by calling readValue with NoParamValue type, an inherently unparseable type
if (!names_left)
{
- NoParamValue no_value;
+ Flag no_value;
return p.readValue(no_value);
}
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 69dcd474f7..9a6ded47ff 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -38,6 +38,9 @@
namespace LLInitParam
{
+ // used to indicate no matching value to a given name when parsing
+ struct Flag{};
+
template const T& defaultValue() { static T value; return value; }
template ::value >
@@ -65,6 +68,12 @@ namespace LLInitParam
static bool equals(const LLSD &a, const LLSD &b) { return false; }
};
+ template<>
+ struct ParamCompare
+ {
+ static bool equals(const Flag& a, const Flag& b) { return false; }
+ };
+
// helper functions and classes
typedef ptrdiff_t param_handle_t;
@@ -275,9 +284,6 @@ namespace LLInitParam
static S32 sNextParseGeneration;
};
- // used to indicate no matching value to a given name when parsing
- struct NoParamValue{};
-
class BaseBlock;
class Param
@@ -385,36 +391,36 @@ namespace LLInitParam
// "Multiple" constraint types, put here in root class to avoid ambiguity during use
struct AnyAmount
{
- static U32 minCount() { return 0; }
- static U32 maxCount() { return U32_MAX; }
+ enum { minCount = 0 };
+ enum { maxCount = U32_MAX };
};
template
struct AtLeast
{
- static U32 minCount() { return MIN_AMOUNT; }
- static U32 maxCount() { return U32_MAX; }
+ enum { minCount = MIN_AMOUNT };
+ enum { maxCount = U32_MAX };
};
template
struct AtMost
{
- static U32 minCount() { return 0; }
- static U32 maxCount() { return MAX_AMOUNT; }
+ enum { minCount = 0 };
+ enum { maxCount = MAX_AMOUNT };
};
template
struct Between
{
- static U32 minCount() { return MIN_AMOUNT; }
- static U32 maxCount() { return MAX_AMOUNT; }
+ enum { minCount = MIN_AMOUNT };
+ enum { maxCount = MAX_AMOUNT };
};
template
struct Exactly
{
- static U32 minCount() { return EXACT_COUNT; }
- static U32 maxCount() { return EXACT_COUNT; }
+ enum { minCount = EXACT_COUNT };
+ enum { maxCount = EXACT_COUNT };
};
// this typedef identifies derived classes as being blocks
@@ -477,9 +483,9 @@ namespace LLInitParam
void init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size);
- bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+ bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
{
- return mergeBlock(block_data, other, overwrite);
+ return mergeBlock(block_data, source, overwrite);
}
// take all provided params from other and apply to self
bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
@@ -497,92 +503,6 @@ namespace LLInitParam
const std::string& getParamName(const BlockDescriptor& block_data, const Param* paramp) const;
};
- class BaseBlockWithFlags : public BaseBlock
- {
- public:
- class FlagBase : public Param
- {
- public:
- typedef FlagBase self_t;
-
- FlagBase(const char* name, BaseBlock* enclosing_block) : Param(enclosing_block)
- {
- if (LL_UNLIKELY(enclosing_block->mostDerivedBlockDescriptor().mInitializationState == BlockDescriptor::INITIALIZING))
- {
- ParamDescriptorPtr param_descriptor = ParamDescriptorPtr(new ParamDescriptor(
- enclosing_block->getHandleFromParam(this),
- &mergeWith,
- &deserializeParam,
- &serializeParam,
- NULL,
- &inspectParam,
- 0, 1));
- BaseBlock::addParam(enclosing_block->mostDerivedBlockDescriptor(), param_descriptor, name);
- }
- }
-
- bool isProvided() const { return anyProvided(); }
-
- private:
- static bool mergeWith(Param& dst, const Param& src, bool overwrite)
- {
- const self_t& src_typed_param = static_cast(src);
- self_t& dst_typed_param = static_cast(dst);
-
- if (src_typed_param.isProvided()
- && (overwrite || !dst_typed_param.isProvided()))
- {
- dst.setProvided(true);
- return true;
- }
- return false;
- }
-
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
- {
- self_t& typed_param = static_cast(param);
-
- // no further names in stack, parse value now
- if (name_stack.first == name_stack.second)
- {
- typed_param.setProvided(true);
- typed_param.enclosingBlock().paramChanged(param, true);
- return true;
- }
-
- return false;
- }
-
- static void serializeParam(const Param& param, Parser& parser, Parser::name_stack_t& name_stack, const Param* diff_param)
- {
- const self_t& typed_param = static_cast(param);
- const self_t* typed_diff_param = static_cast(diff_param);
-
- if (!typed_param.isProvided()) return;
-
- if (!name_stack.empty())
- {
- name_stack.back().second = parser.newParseGeneration();
- }
-
- // then try to serialize value directly
- if (!typed_diff_param || !typed_diff_param->isProvided())
- {
- if (!parser.writeValue(NoParamValue(), name_stack))
- {
- return;
- }
- }
- }
-
- static void inspectParam(const Param& param, Parser& parser, Parser::name_stack_t& name_stack, S32 min_count, S32 max_count)
- {
- // tell parser about our actual type
- parser.inspectValue(name_stack, min_count, max_count, NULL);
- }
- };
- };
-
// these templates allow us to distinguish between template parameters
// that derive from BaseBlock and those that don't
template
@@ -604,7 +524,7 @@ namespace LLInitParam
typedef const T& value_assignment_t;
ParamValue(): mValue() {}
- ParamValue(const T& other) : mValue(other) {}
+ ParamValue(value_assignment_t other) : mValue(other) {}
void setValue(value_assignment_t val)
{
@@ -621,6 +541,17 @@ namespace LLInitParam
return mValue;
}
+ operator value_assignment_t() const
+ {
+ return mValue;
+ }
+
+ value_assignment_t operator()() const
+ {
+ return mValue;
+ }
+
+
private:
T mValue;
};
@@ -644,7 +575,7 @@ namespace LLInitParam
mValidated(false)
{}
- ParamValue(const T& other)
+ ParamValue(value_assignment_t other)
: T(other),
mKeyVersion(0),
mValidatedVersion(-1),
@@ -666,6 +597,16 @@ namespace LLInitParam
{
return *this;
}
+
+ operator value_assignment_t() const
+ {
+ return *this;
+ }
+
+ value_assignment_t operator()() const
+ {
+ return *this;
+ }
};
template >
@@ -801,11 +742,6 @@ namespace LLInitParam
Param::enclosingBlock().paramChanged(*this, flag_as_provided);
}
- // implicit conversion
- operator value_assignment_t() const { return param_value_t::getValue(); }
- // explicit conversion
- value_assignment_t operator()() const { return param_value_t::getValue(); }
-
protected:
static bool mergeWith(Param& dst, const Param& src, bool overwrite)
@@ -958,11 +894,6 @@ namespace LLInitParam
}
}
- // implicit conversion
- operator value_assignment_t() const { return param_value_t::getValue(); }
- // explicit conversion
- value_assignment_t operator()() const { return param_value_t::getValue(); }
-
protected:
static bool mergeWith(Param& dst, const Param& src, bool overwrite)
@@ -972,8 +903,7 @@ namespace LLInitParam
if (src_typed_param.anyProvided())
{
- bool param_provided = src_typed_param.isProvided() && (overwrite || !dst_typed_param.isProvided());
- if (dst_typed_param.mergeBlockParam(param_provided, param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
+ if (dst_typed_param.mergeBlockParam(src_typed_param.isProvided(), dst_typed_param.isProvided(), param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
{
dst_typed_param.clearValueName();
dst_typed_param.setProvided(true);
@@ -992,8 +922,8 @@ namespace LLInitParam
{
public:
typedef TypedParam self_t;
- typedef ParamValue param_value_t;
- typedef typename std::vector container_t;
+ typedef ParamValue param_value_t;
+ typedef typename std::vector container_t;
typedef const container_t& value_assignment_t;
typedef VALUE_TYPE value_t;
@@ -1118,6 +1048,8 @@ namespace LLInitParam
// implicit conversion
operator value_assignment_t() const { return mValues; }
+ // explicit conversion
+ value_assignment_t operator()() const { return mValues; }
typedef typename container_t::iterator iterator;
typedef typename container_t::const_iterator const_iterator;
@@ -1169,7 +1101,7 @@ namespace LLInitParam
public:
typedef TypedParam self_t;
typedef ParamValue param_value_t;
- typedef typename std::vector container_t;
+ typedef typename std::vector container_t;
typedef const container_t& value_assignment_t;
typedef VALUE_TYPE value_t;
typedef NAME_VALUE_LOOKUP name_value_lookup_t;
@@ -1308,6 +1240,8 @@ namespace LLInitParam
// implicit conversion
operator value_assignment_t() const { return mValues; }
+ // explicit conversion
+ value_assignment_t operator()() const { return mValues; }
typedef typename container_t::iterator iterator;
typedef typename container_t::const_iterator const_iterator;
@@ -1363,10 +1297,10 @@ namespace LLInitParam
};
template
- class Choice : public BaseBlock
+ class ChoiceBlock : public BaseBlock
{
- typedef Choice self_t;
- typedef Choice enclosing_block_t;
+ typedef ChoiceBlock self_t;
+ typedef ChoiceBlock enclosing_block_t;
LOG_CLASS(self_t);
public:
@@ -1382,11 +1316,13 @@ namespace LLInitParam
return mergeBlock(selfBlockDescriptor(), other, false);
}
- bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const self_t& other, bool overwrite)
+ bool mergeBlockParam(bool source_provided, bool dest_provided, BlockDescriptor& block_data, const self_t& source, bool overwrite)
{
- if (param_provided)
+ bool source_override = source_provided && (overwrite || !dest_provided);
+
+ if (source_override || source.mCurChoice == mCurChoice)
{
- return mergeBlock(block_data, other, overwrite);
+ return mergeBlock(block_data, source, overwrite);
}
return false;
}
@@ -1420,7 +1356,7 @@ namespace LLInitParam
virtual BlockDescriptor& mostDerivedBlockDescriptor() { return selfBlockDescriptor(); }
protected:
- Choice()
+ ChoiceBlock()
: mCurChoice(0)
{
BaseBlock::init(selfBlockDescriptor(), BaseBlock::selfBlockDescriptor(), sizeof(DERIVED_BLOCK));
@@ -1433,13 +1369,13 @@ namespace LLInitParam
class Alternative : public TypedParam
{
public:
- friend class Choice;
+ friend class ChoiceBlock;
typedef Alternative self_t;
typedef TypedParam >::value> super_t;
typedef typename super_t::value_assignment_t value_assignment_t;
- explicit Alternative(const char* name, value_assignment_t val = defaultValue())
+ explicit Alternative(const char* name = "", value_assignment_t val = defaultValue())
: super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),
mOriginalValue(val)
{
@@ -1454,10 +1390,19 @@ namespace LLInitParam
}
}
- Alternative& operator=(value_assignment_t val)
+ void choose()
+ {
+ static_cast(Param::enclosingBlock()).paramChanged(*this, true);
+ }
+
+ void chooseAs(value_assignment_t val)
+ {
+ super_t::set(val);
+ }
+
+ void operator=(value_assignment_t val)
{
super_t::set(val);
- return *this;
}
void operator()(typename super_t::value_assignment_t val)
@@ -1466,12 +1411,8 @@ namespace LLInitParam
}
operator value_assignment_t() const
- {
- if (static_cast(Param::enclosingBlock()).getCurrentChoice() == this)
- {
- return super_t::getValue();
- }
- return mOriginalValue;
+ {
+ return (*this)();
}
value_assignment_t operator()() const
@@ -1508,7 +1449,7 @@ namespace LLInitParam
}
};
- template
+ template
class Block
: public BASE_BLOCK
{
@@ -1604,13 +1545,6 @@ namespace LLInitParam
};
- class Flag : public BaseBlockWithFlags::FlagBase
- {
- public:
- Flag(const char* name) : FlagBase(name, DERIVED_BLOCK::selfBlockDescriptor().mCurrentBlockPtr)
- {}
- };
-
template >
class Multiple : public TypedParam
{
@@ -1623,7 +1557,7 @@ namespace LLInitParam
typedef typename super_t::const_iterator const_iterator;
explicit Multiple(const char* name = "")
- : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, container_t(), &validate, RANGE::minCount(), RANGE::maxCount())
+ : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, container_t(), &validate, RANGE::minCount, RANGE::maxCount)
{}
Multiple& operator=(value_assignment_t val)
@@ -1641,100 +1575,10 @@ namespace LLInitParam
static bool validate(const Param* paramp)
{
U32 num_valid = ((super_t*)paramp)->numValidElements();
- return RANGE::minCount() <= num_valid && num_valid <= RANGE::maxCount();
+ return RANGE::minCount <= num_valid && num_valid <= RANGE::maxCount;
}
};
- template >
- class Batch : private TypedParam
- {
- public:
- typedef ParamValue param_value_t;
- typedef TypedParam::value> super_t;
- typedef Batch self_t;
- typedef typename super_t::value_assignment_t value_assignment_t;
- typedef typename super_t::value_t value_t;
-
- struct BatchDefaultValue : public ParamDescriptor::UserData
- {
- BatchDefaultValue(const T& value)
- : mValue(value)
- {}
-
- T mValue;
- };
-
- explicit Batch(const char* name, value_assignment_t val)
- : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),
- mLastParseGeneration(-1)
- {
- BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor();
- if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))
- {
- ParamDescriptorPtr param_descriptorp = block_descriptor.mCurrentBlockPtr->findParamDescriptor(*this);
-
- if (param_descriptorp)
- {
- param_descriptorp->mDeserializeFunc = &deserializeParam;
- param_descriptorp->mUserData = new BatchDefaultValue(new param_value_t(val));
- }
- }
- }
-
- explicit Batch(const char* name = "")
- : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, defaultValue(), NULL, 0, 1),
- mLastParseGeneration(-1)
- {
- BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor();
- if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))
- {
- ParamDescriptorPtr param_descriptorp = block_descriptor.mCurrentBlockPtr->findParamDescriptor(*this);
-
- if (param_descriptorp)
- {
- param_descriptorp->mDeserializeFunc = &deserializeParam;
- }
- }
- }
-
- Batch& operator=(value_assignment_t val)
- {
- set(val);
- return *this;
- }
-
- DERIVED_BLOCK& operator()(value_assignment_t val)
- {
- super_t::set(val);
- return static_cast(Param::enclosingBlock());
- }
-
- using super_t::operator();
-
- private:
- static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
- {
- self_t& typed_param = static_cast(param);
-
- if (generation != typed_param.mLastParseGeneration)
- {
- ParamDescriptorPtr descriptor = typed_param.enclosingBlock().findParamDescriptor(param);
- if (descriptor && static_cast(descriptor->mUserData))
- {
- static_cast(typed_param) = (static_cast(descriptor->mUserData))->mValue;
- }
- else
- {
- static_cast(typed_param) = param_value_t(value_t());
- }
- typed_param.mLastParseGeneration = generation;
- }
- return super_t::deserializeParam(param, parser, name_stack, generation);
- }
-
- S32 mLastParseGeneration;
- };
-
class Deprecated : public Param
{
public:
@@ -1769,6 +1613,7 @@ namespace LLInitParam
}
};
+ // different semantics for documentation purposes, but functionally identical
typedef Deprecated Ignored;
protected:
@@ -1790,6 +1635,106 @@ namespace LLInitParam
};
+ template
+ class BatchBlock
+ : public Block
+ {
+ public:
+ typedef BatchBlock self_t;
+ typedef Block super_t;
+
+ BatchBlock()
+ : mLastParseGeneration(-1)
+ {}
+
+ bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation)
+ {
+ if (generation != mLastParseGeneration)
+ {
+ // reset block
+ *static_cast(this) = defaultBatchValue();
+ mLastParseGeneration = generation;
+ }
+ return super_t::deserializeBlock(p, name_stack, generation);
+ }
+
+ bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+ {
+ if (overwrite)
+ {
+ *static_cast(this) = defaultBatchValue();
+ mLastParseGeneration = -1;
+ // merge individual parameters into destination
+ return super_t::mergeBlock(super_t::selfBlockDescriptor(), src_typed_param, overwrite);
+ }
+ return false;
+ }
+ protected:
+ static const DERIVED_BLOCK& defaultBatchValue()
+ {
+ static DERIVED_BLOCK default_value;
+ return default_value;
+ }
+
+ S32 mLastParseGeneration;
+ };
+
+
+
+ template
+ class ParamValue ,
+ NAME_VALUE_LOOKUP,
+ true>
+ : public Param,
+ protected BatchBlock
+ {
+ typedef const BatchBlock& value_assignment_t;
+
+ ParamValue()
+ : T(),
+ mKeyVersion(0),
+ mValidatedVersion(-1),
+ mValidated(false)
+ {}
+
+ ParamValue(value_assignment_t other)
+ : T(other),
+ mKeyVersion(0),
+ mValidatedVersion(-1),
+ mValidated(false)
+ {
+ }
+
+ void setValue(value_assignment_t val)
+ {
+ *this = val;
+ mLastParseGeneration = -1;
+ }
+
+ value_assignment_t getValue() const
+ {
+ return *this;
+ }
+
+ BatchBlock& getValue()
+ {
+ return *this;
+ }
+
+ operator value_assignment_t() const
+ {
+ return *this;
+ }
+
+ value_assignment_t operator()() const
+ {
+ return *this;
+ }
+
+ };
+
template
class CustomParamValue
: public Block > >,
@@ -1955,6 +1900,16 @@ namespace LLInitParam
return mValue;
}
+ operator value_assignment_t() const
+ {
+ return getValue();
+ }
+
+ value_assignment_t operator()() const
+ {
+ return getValue();
+ }
+
S32 mKeyVersion;
protected:
@@ -1965,30 +1920,29 @@ namespace LLInitParam
mValue = value;
}
- bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+ bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
{
- if (param_provided)
- {
- return mergeBlock(block_data, other, overwrite);
- }
- return false;
- }
+ bool source_override = source_provided && (overwrite || !dst_provided);
- bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
- {
- const derived_t& src_typed_param = static_cast(other);
+ const derived_t& src_typed_param = static_cast(source);
- if (src_typed_param.mValueAge == VALUE_AUTHORITATIVE)
+ if (source_override && src_typed_param.mValueAge == VALUE_AUTHORITATIVE)
{
// copy value over
setValue(src_typed_param.getValue());
return true;
}
- else
+ // merge individual parameters into destination
+ if (mValueAge == VALUE_AUTHORITATIVE)
{
- // merge individual parameters into destination
- return block_t::mergeBlock(block_t::selfBlockDescriptor(), src_typed_param, overwrite);
+ static_cast(this)->updateBlockFromValue(dst_provided);
}
+ return mergeBlock(block_data, source, overwrite);
+ }
+
+ bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
+ {
+ return block_t::mergeBlock(block_data, source, overwrite);
}
mutable S32 mValidatedVersion;
diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp
index 4af077b22c..c60f656c2c 100644
--- a/indra/llxuixml/llxuiparser.cpp
+++ b/indra/llxuixml/llxuiparser.cpp
@@ -51,6 +51,136 @@ static LLInitParam::Parser::parser_read_func_map_t sXSDReadFuncs;
static LLInitParam::Parser::parser_write_func_map_t sXSDWriteFuncs;
static LLInitParam::Parser::parser_inspect_func_map_t sXSDInspectFuncs;
+struct MaxOccur : public LLInitParam::ChoiceBlock
+{
+ Alternative count;
+ Alternative unbounded;
+
+ MaxOccur()
+ : unbounded("", "unbounded")
+ {}
+};
+
+struct Occurs : public LLInitParam::Block
+{
+ Optional minOccurs;
+ Optional maxOccurs;
+
+ Occurs()
+ : minOccurs("minOccurs"),
+ maxOccurs("maxOccurs")
+ {
+ minOccurs = 0;
+ maxOccurs.unbounded.choose();
+ }
+};
+
+
+typedef enum
+{
+ USE_REQUIRED,
+ USE_OPTIONAL
+} EUse;
+
+namespace LLInitParam
+{
+ template<>
+ struct TypeValues : public TypeValuesHelper
+ {
+ static void declareValues()
+ {
+ declare("required", USE_REQUIRED);
+ declare("optional", USE_OPTIONAL);
+ }
+ };
+}
+
+struct Name : public LLInitParam::Block
+{
+ Mandatory name;
+
+ Name()
+ : name("name")
+ {}
+};
+
+struct Attribute : public LLInitParam::Block
+{
+ Mandatory name;
+ Mandatory type;
+ Mandatory use;
+
+ Attribute()
+ : name("name"),
+ type("type"),
+ use("use")
+ {
+ }
+};
+
+struct ComplexType : public LLInitParam::Block
+{
+ Multiple attribute;
+ //Multiple elements;
+ Optional mixed;
+
+ ComplexType()
+ : attribute("xs:attribute"),
+ //elements("xs:element"),
+ mixed("mixed")
+ {
+ mixed = true;
+ }
+};
+
+struct Element : public LLInitParam::Block
+{
+ Mandatory complexType;
+ Mandatory name;
+
+ Element()
+ : complexType("xs:complexType")
+ {}
+};
+
+struct Elements : public LLInitParam::Block
+{
+ Multiple elements;
+
+ Elements()
+ : elements("xs:element")
+ {}
+};
+
+struct Schema : public LLInitParam::Block
+{
+private:
+ Mandatory targetNamespace,
+ xmlns;
+
+public:
+ Optional attributeFormDefault,
+ elementFormDefault,
+ xs;
+
+ Optional elements;
+
+ void setNameSpace(const std::string& ns) {targetNamespace = ns; xmlns = ns;}
+
+ Schema()
+ : attributeFormDefault("attributeFormDefault"),
+ elementFormDefault("elementFormDefault"),
+ xs("xmlns:xs"),
+ targetNamespace("targetNamespace"),
+ xmlns("xmlns"),
+ elements("xs:choice")
+ {
+ attributeFormDefault = "unqualified";
+ elementFormDefault = "qualified";
+ xs = "http://www.w3.org/2001/XMLSchema";
+ }
+
+};
//
// LLXSDWriter
@@ -388,7 +518,7 @@ LLXUIParser::LLXUIParser()
{
if (sXUIReadFuncs.empty())
{
- registerParserFuncs(readNoValue, writeNoValue);
+ registerParserFuncs(readFlag, writeFlag);
registerParserFuncs(readBoolValue, writeBoolValue);
registerParserFuncs(readStringValue, writeStringValue);
registerParserFuncs(readU8Value, writeU8Value);
@@ -645,13 +775,13 @@ LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack)
return (out_node == mWriteRootNode ? LLXMLNodePtr(NULL) : out_node);
}
-bool LLXUIParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLXUIParser::readFlag(Parser& parser, void* val_ptr)
{
LLXUIParser& self = static_cast(parser);
return self.mCurReadNode == DUMMY_NODE;
}
-bool LLXUIParser::writeNoValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeFlag(Parser& parser, const void* val_ptr, const name_stack_t& stack)
{
// just create node
LLXUIParser& self = static_cast(parser);
@@ -1083,7 +1213,7 @@ LLSimpleXUIParser::LLSimpleXUIParser(LLSimpleXUIParser::element_start_callback_t
{
if (sSimpleXUIReadFuncs.empty())
{
- registerParserFuncs(readNoValue);
+ registerParserFuncs(readFlag);
registerParserFuncs(readBoolValue);
registerParserFuncs(readStringValue);
registerParserFuncs(readU8Value);
@@ -1376,7 +1506,7 @@ void LLSimpleXUIParser::parserError(const std::string& message)
#endif
}
-bool LLSimpleXUIParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLSimpleXUIParser::readFlag(Parser& parser, void* val_ptr)
{
LLSimpleXUIParser& self = static_cast(parser);
return self.mCurAttributeValueBegin == NO_VALUE_MARKER;
diff --git a/indra/llxuixml/llxuiparser.h b/indra/llxuixml/llxuiparser.h
index 0c38c4da93..42a79b4100 100644
--- a/indra/llxuixml/llxuiparser.h
+++ b/indra/llxuixml/llxuiparser.h
@@ -116,7 +116,7 @@ private:
bool readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block);
//reader helper functions
- static bool readNoValue(Parser& parser, void* val_ptr);
+ static bool readFlag(Parser& parser, void* val_ptr);
static bool readBoolValue(Parser& parser, void* val_ptr);
static bool readStringValue(Parser& parser, void* val_ptr);
static bool readU8Value(Parser& parser, void* val_ptr);
@@ -133,7 +133,7 @@ private:
static bool readSDValue(Parser& parser, void* val_ptr);
//writer helper functions
- static bool writeNoValue(Parser& parser, const void* val_ptr, const name_stack_t&);
+ static bool writeFlag(Parser& parser, const void* val_ptr, const name_stack_t&);
static bool writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t&);
static bool writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t&);
static bool writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t&);
@@ -197,7 +197,7 @@ public:
private:
//reader helper functions
- static bool readNoValue(Parser&, void* val_ptr);
+ static bool readFlag(Parser&, void* val_ptr);
static bool readBoolValue(Parser&, void* val_ptr);
static bool readStringValue(Parser&, void* val_ptr);
static bool readU8Value(Parser&, void* val_ptr);
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index d64fdbe6a5..ca9956dc53 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -61,7 +61,7 @@ public:
{}
};
- struct NameColumn : public LLInitParam::Choice
+ struct NameColumn : public LLInitParam::ChoiceBlock
{
Alternative column_index;
Alternative column_name;
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index fa7632920b..7bbacc0152 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -33,7 +33,6 @@
follows="all"
mouse_opaque="false">
Date: Fri, 30 Sep 2011 18:51:17 -0700
Subject: made toolbars conform to visual specs added ability to specify clip
rects in textures.xml
---
indra/llui/lltoolbar.cpp | 17 ++++-----
indra/llui/lltoolbar.h | 23 +++++++----
indra/newview/llviewertexturelist.cpp | 44 +++++++++++++++-------
indra/newview/llviewertexturelist.h | 7 +++-
indra/newview/skins/default/textures/textures.xml | 6 ++-
indra/newview/skins/default/xui/en/main_view.xml | 4 +-
.../skins/default/xui/en/panel_toolbar_view.xml | 3 ++
.../skins/default/xui/en/widgets/toolbar.xml | 28 +++++++++-----
8 files changed, 87 insertions(+), 45 deletions(-)
(limited to 'indra/newview')
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 2592fd1229..c62bbe4e71 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -82,9 +82,6 @@ LLToolBar::Params::Params()
button_icon_and_text("button_icon_and_text"),
read_only("read_only", false),
wrap("wrap", true),
- min_button_width("min_button_width", 0),
- max_button_width("max_button_width", S32_MAX),
- button_height("button_height"),
pad_left("pad_left"),
pad_top("pad_top"),
pad_right("pad_right"),
@@ -102,9 +99,6 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p)
mNeedsLayout(false),
mButtonPanel(NULL),
mCenteringStack(NULL),
- mMinButtonWidth(llmin(p.min_button_width(), p.max_button_width())),
- mMaxButtonWidth(llmax(p.max_button_width(), p.min_button_width())),
- mButtonHeight(p.button_height),
mPadLeft(p.pad_left),
mPadRight(p.pad_right),
mPadTop(p.pad_top),
@@ -325,7 +319,7 @@ void LLToolBar::resizeButtonsInRow(std::vector& buttons_in_row
{
if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
{
- button->reshape(llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth), max_row_girth);
+ button->reshape(llclamp(button->getRect().getWidth(), button->mMinWidth, button->mMaxWidth), max_row_girth);
}
else // VERTICAL
{
@@ -384,10 +378,10 @@ void LLToolBar::updateLayoutAsNeeded()
BOOST_FOREACH(LLToolBarButton* button, mButtons)
{
- button->reshape(mMinButtonWidth, mButtonHeight);
+ button->reshape(button->mMinWidth, button->mDesiredHeight);
button->autoResize();
- S32 button_clamped_width = llclamp(button->getRect().getWidth(), mMinButtonWidth, mMaxButtonWidth);
+ S32 button_clamped_width = llclamp(button->getRect().getWidth(), button->mMinWidth, button->mMaxWidth);
S32 button_length = (orientation == LLLayoutStack::HORIZONTAL)
? button_clamped_width
: button->getRect().getHeight();
@@ -402,7 +396,7 @@ void LLToolBar::updateLayoutAsNeeded()
{
if (orientation == LLLayoutStack::VERTICAL)
{ // row girth (width in this case) is clamped to allowable button widths
- max_row_girth = llclamp(max_row_girth, mMinButtonWidth, mMaxButtonWidth);
+ max_row_girth = llclamp(max_row_girth, button->mMinWidth, button->mMaxWidth);
}
// make buttons in current row all same girth
@@ -546,6 +540,9 @@ LLToolBarButton::LLToolBarButton(const Params& p)
: LLButton(p),
mMouseDownX(0),
mMouseDownY(0),
+ mMinWidth(p.min_button_width),
+ mMaxWidth(p.max_button_width),
+ mDesiredHeight(p.desired_height),
mId("")
{}
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 0bb95f4e9c..5d64630fa6 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -37,9 +37,20 @@
class LLToolBarButton : public LLButton
{
+ friend class LLToolBar;
public:
struct Params : public LLInitParam::Block
{
+ Optional min_button_width,
+ max_button_width,
+ desired_height;
+
+ Params()
+ : min_button_width("min_button_width", 0),
+ max_button_width("max_button_width", S32_MAX),
+ desired_height("desired_height", 20)
+ {}
+
};
LLToolBarButton(const Params& p);
@@ -51,6 +62,9 @@ private:
LLCommandId mId;
S32 mMouseDownX;
S32 mMouseDownY;
+ S32 mMinWidth;
+ S32 mMaxWidth;
+ S32 mDesiredHeight;
};
@@ -106,10 +120,6 @@ public:
Optional read_only,
wrap;
- Optional min_button_width,
- max_button_width,
- button_height;
-
Optional pad_left,
pad_top,
pad_right,
@@ -171,10 +181,7 @@ private:
bool mWrap;
bool mNeedsLayout;
- S32 mMinButtonWidth,
- mMaxButtonWidth,
- mButtonHeight,
- mPadLeft,
+ S32 mPadLeft,
mPadRight,
mPadTop,
mPadBottom,
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 30ef8b8a29..c64488251a 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1342,7 +1342,8 @@ LLUIImagePtr LLUIImageList::getUIImageByID(const LLUUID& image_id, S32 priority)
const BOOL use_mips = FALSE;
const LLRect scale_rect = LLRect::null;
- return loadUIImageByID(image_id, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+ const LLRect clip_rect = LLRect::null;
+ return loadUIImageByID(image_id, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
}
LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priority)
@@ -1356,32 +1357,33 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori
const BOOL use_mips = FALSE;
const LLRect scale_rect = LLRect::null;
- return loadUIImageByName(image_name, image_name, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+ const LLRect clip_rect = LLRect::null;
+ return loadUIImageByName(image_name, image_name, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
}
LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename,
- BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority )
+ BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority )
{
if (boost_priority == LLViewerTexture::BOOST_NONE)
{
boost_priority = LLViewerTexture::BOOST_UI;
}
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
- return loadUIImage(imagep, name, use_mips, scale_rect);
+ return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
}
LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
- BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority)
+ BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority)
{
if (boost_priority == LLViewerTexture::BOOST_NONE)
{
boost_priority = LLViewerTexture::BOOST_UI;
}
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
- return loadUIImage(imagep, id.asString(), use_mips, scale_rect);
+ return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
}
-LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
{
if (!imagep) return NULL;
@@ -1402,13 +1404,14 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
LLUIImageLoadData* datap = new LLUIImageLoadData;
datap->mImageName = name;
datap->mImageScaleRegion = scale_rect;
+ datap->mImageClipRegion = clip_rect;
imagep->setLoadedCallback(onUIImageLoaded, 0, FALSE, FALSE, datap, NULL);
}
return new_imagep;
}
-LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
{
// look for existing image
uuid_ui_image_map_t::iterator found_it = mUIImages.find(name);
@@ -1418,7 +1421,7 @@ LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::s
llerrs << "UI Image " << name << " already loaded." << llendl;
}
- return loadUIImageByName(name, filename, use_mips, scale_rect);
+ return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect);
}
//static
@@ -1432,6 +1435,7 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
LLUIImageLoadData* image_datap = (LLUIImageLoadData*)user_data;
std::string ui_image_name = image_datap->mImageName;
LLRect scale_rect = image_datap->mImageScaleRegion;
+ LLRect clip_rect = image_datap->mImageClipRegion;
if (final)
{
delete image_datap;
@@ -1448,9 +1452,21 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
// from power-of-2 gl image
if (success && imagep.notNull() && src_vi && (src_vi->getUrl().compare(0, 7, "file://")==0))
{
- F32 clip_x = (F32)src_vi->getOriginalWidth() / (F32)src_vi->getFullWidth();
- F32 clip_y = (F32)src_vi->getOriginalHeight() / (F32)src_vi->getFullHeight();
- imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+ F32 full_width = (F32)src_vi->getFullWidth();
+ F32 full_height = (F32)src_vi->getFullHeight();
+ F32 clip_x = (F32)src_vi->getOriginalWidth() / full_width;
+ F32 clip_y = (F32)src_vi->getOriginalHeight() / full_height;
+ if (clip_rect != LLRect::null)
+ {
+ imagep->setClipRegion(LLRectf(llclamp((F32)clip_rect.mLeft / full_width, 0.f, 1.f),
+ llclamp((F32)clip_rect.mTop / full_height, 0.f, 1.f),
+ llclamp((F32)clip_rect.mRight / full_width, 0.f, 1.f),
+ llclamp((F32)clip_rect.mBottom / full_height, 0.f, 1.f)));
+ }
+ else
+ {
+ imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+ }
if (scale_rect != LLRect::null)
{
imagep->setScaleRegion(
@@ -1471,6 +1487,7 @@ struct UIImageDeclaration : public LLInitParam::Block
Optional file_name;
Optional preload;
Optional