diff options
320 files changed, 6238 insertions, 1418 deletions
diff --git a/NORSPEC-207.patch b/NORSPEC-207.patch deleted file mode 100644 index a1c1447bda..0000000000 --- a/NORSPEC-207.patch +++ /dev/null @@ -1,164 +0,0 @@ -diff -r fe4bab01522e indra/llprimitive/llrendermaterialtable.cpp ---- a/indra/llprimitive/llrendermaterialtable.cpp Wed May 15 17:57:21 2013 +0000 -+++ b/indra/llprimitive/llrendermaterialtable.cpp Wed May 22 14:23:04 2013 -0700 -@@ -184,6 +184,44 @@ - } - } - -+// 'v' is an integer value for 100ths of radians (don't ask...) -+// -+void LLRenderMaterialEntry::LLRenderMaterial::setSpecularMapRotation(S32 v) const -+{ -+ // Store the fact that we're using the new rotation rep -+ // -+ m_flags |= kNewSpecularMapRotation; -+ -+ // Store 'sign bit' in our m_flags -+ // -+ m_flags &= ~kSpecularMapRotationNegative; -+ m_flags |= (specularMapRotation < 0) ? kSpecularMapRotationNegative : 0; -+ -+ specularRotation = abs(specularRotation); -+ specularRotation = llmin(specularRotation, MAX_MATERIAL_MAP_ROTATION); -+ -+ m_specularRotation = (U16)(abs(specularMapRotation)); -+} -+ -+// 'v' is an integer value for 100ths of radians (don't ask...) -+// -+void LLRenderMaterialEntry::LLRenderMaterial::setNormalMapRotation(S32 v) const -+{ -+ -+ // Store the fact that we're using the new rep for this material -+ // -+ m_flags |= kNewNormalMapRotation; -+ -+ // Store 'sign bit' in our m_flags -+ // -+ m_flags &= ~kNormalMapRotationNegative; -+ m_flags |= (normalMapRotation < 0) ? kNormalMapRotationNegative : 0; -+ -+ normalRotation = abs(normalRotation); -+ normalRotation = llmin(normalRotation, MAX_MATERIAL_MAP_ROTATION); -+ -+ m_normalRotation = (U16)(abs(normalMapRotation)); -+} - - void LLRenderMaterialEntry::LLRenderMaterial::asLLSD( LLSD& dest ) const - { -@@ -193,20 +231,45 @@ - dest["NormOffsetY"] = (S32)m_normalOffsetY; - dest["NormRepeatX"] = m_normalRepeatX; - dest["NormRepeatY"] = m_normalRepeatY; -- dest["NormRotation"] = (S32)m_normalRotation; -+ -+ S32 value = (S32)m_normalMapRotation; -+ -+ // If we don't have the flag for new rotations set, -+ // then we need to convert it now -+ if (!(m_flags & kNewNormalMapRotation)) -+ { -+ F32 old_radians = ((F32)m_normalMapRotation / 10000.0f) -+ S32 new_val = (S32)(old_radians * 100.0f); -+ setNormalMapRotation(new_Val); -+ } -+ -+ dest["NormRotation"] = (m_flags & kNormalMapRotationNegative) ? -(S32)m_normalRotation : (S32)m_normalRotation; - - dest["SpecOffsetX"] = (S32)m_specularOffsetX; - dest["SpecOffsetY"] = (S32)m_specularOffsetY; - dest["SpecRepeatX"] = m_specularRepeatX; - dest["SpecRepeatY"] = m_specularRepeatY; -- dest["SpecRotation"] = (S32)m_specularRotation; -+ -+ -+ value = (S32)m_specularRotation; -+ -+ // If we don't have the flag for new rotations set, -+ // then we need to convert it now -+ if (!(m_flags & kNewSpecularMapRotation)) -+ { -+ F32 old_radians = ((F32)m_specularMapRotation / 10000.0f) -+ S32 new_val = (S32)(old_radians * 100.0f); -+ setSpecularMapRotation(new_Val); -+ } -+ -+ dest["SpecRotation"] = (m_flags & kSpecularMapRotationNegative) ? -(S32)m_specularRotation : (S32)m_specularRotation; - - dest["SpecMap"] = m_specularMap; - dest["SpecColor"] = m_specularLightColor.getValue(); - dest["SpecExp"] = (S32)m_specularLightExponent; - dest["EnvIntensity"] = (S32)m_environmentIntensity; - dest["AlphaMaskCutoff"] = (S32)m_alphaMaskCutoff; -- dest["DiffuseAlphaMode"] = (S32)m_diffuseAlphaMode; -+ dest["DiffuseAlphaMode"] = (S32)(m_diffuseAlphaMode & 0xF); - - } - -@@ -217,7 +280,10 @@ - m_normalOffsetY = (U16)materialDefinition["NormOffsetY"].asInteger(); - m_normalRepeatX = materialDefinition["NormRepeatX"].asInteger(); - m_normalRepeatY = materialDefinition["NormRepeatY"].asInteger(); -- m_normalRotation = (U16)materialDefinition["NormRotation"].asInteger(); -+ -+ S32 normalRotation = materialDefinition["NormRotation"].asInteger(); -+ -+ setNormalMapRotation(normalRotation); - - m_specularMap = materialDefinition["SpecMap"].asUUID(); - -@@ -225,7 +291,10 @@ - m_specularOffsetY = (U16)materialDefinition["SpecOffsetY"].asInteger(); - m_specularRepeatX = materialDefinition["SpecRepeatX"].asInteger(); - m_specularRepeatY = materialDefinition["SpecRepeatY"].asInteger(); -- m_specularRotation = (U16)materialDefinition["SpecRotation"].asInteger(); -+ -+ S32 specularRotation = materialDefinition["SpecRotation"].asInteger(); -+ -+ setSpecularMapRotation(specularRotation); - - m_specularLightColor.setValue( materialDefinition["SpecColor"] ); - m_specularLightExponent = (U8)materialDefinition["SpecExp"].asInteger(); -diff -r fe4bab01522e indra/llprimitive/llrendermaterialtable.h ---- a/indra/llprimitive/llrendermaterialtable.h Wed May 15 17:57:21 2013 +0000 -+++ b/indra/llprimitive/llrendermaterialtable.h Wed May 22 14:23:04 2013 -0700 -@@ -89,11 +89,17 @@ - - void computeID(); - -+ - struct LLRenderMaterial - { - void asLLSD( LLSD& dest ) const; - void setFromLLSD( const LLSD& materialDefinition ); - -+ void setNormalMapRotation(S32 v); -+ void setSpecularMapRotation(S32 v); -+ -+ const S32 MAX_MATERIAL_MAP_ROTATION = 62800; -+ - // 36 bytes - LLUUID m_normalMap; - LLUUID m_specularMap; -@@ -119,7 +125,20 @@ - U8 m_specularLightExponent; - U8 m_environmentIntensity; - U8 m_alphaMaskCutoff; -- U8 m_diffuseAlphaMode; -+ U8 m_diffuseAlphaMode : 4; -+ U8 m_flags : 4; -+ }; -+ -+ // Flags stored in LLRenderMaterial::m_flags to differentiate 'old' rotation format -+ // which doesn't handle negative or large rotations correctly from new format. -+ // All ancient materials will have these flags unset as the values for diffuseAlphaMode -+ // from which the bits were stolen never used more than the bottom 2 bits. -+ // -+ enum RenderMaterialFlags { -+ kNewNormalMapRotation = 0x1, -+ kNewSpecularMapRotation = 0x2, -+ kNormalMapRotationNegative = 0x4, -+ kSpecularMapRotationNegative = 0x8 - }; - - friend struct eastl::hash<LLRenderMaterial>; diff --git a/autobuild.xml b/autobuild.xml index 056fa8e050..b1478a46b2 100755 --- a/autobuild.xml +++ b/autobuild.xml @@ -1612,9 +1612,9 @@ <key>archive</key> <map> <key>hash</key> - <string>38ea083fe1204ee106b4d44d9811af19</string> + <string>facee34b8bd57ad602157e65a5af1a49</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/249044/arch/Darwin/installer/openssl-1.0.0g-darwin-20120207.tar.bz2</string> + <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openssl-0.9.8q-darwin-20110211.tar.bz2</string> </map> <key>name</key> <string>darwin</string> @@ -1624,9 +1624,9 @@ <key>archive</key> <map> <key>hash</key> - <string>7dc5191a3d95074a6ed3bd53f57420e5</string> + <string>3d40be8566fa4b9df9a38e2a0f9ea467</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/249044/arch/Linux/installer/openssl-1.0.0g-linux-20120207.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/226882/arch/Linux/installer/openssl-1.0.0d-linux-20110418.tar.bz2</string> </map> <key>name</key> <string>linux</string> @@ -1636,9 +1636,9 @@ <key>archive</key> <map> <key>hash</key> - <string>ed6cbaf9860a03bc99ac301277f1452a</string> + <string>774c7f0a0312bee3054757a623e227bc</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/249044/arch/CYGWIN/installer/openssl-1.0.0g-windows-20120207.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/220986/arch/CYGWIN/installer/openssl-0.9.8q-windows-20110211.tar.bz2</string> </map> <key>name</key> <string>windows</string> @@ -2638,7 +2638,6 @@ <array> <string>/build</string> <string>"/cfg=Release|Win32"</string> - <string>"/CL_ADD=/m:1"</string> </array> </map> <key>configure</key> diff --git a/indra/llmath/llvector4a.inl b/indra/llmath/llvector4a.inl index 35a67204ec..69d3d01efe 100755 --- a/indra/llmath/llvector4a.inl +++ b/indra/llmath/llvector4a.inl @@ -409,6 +409,26 @@ inline void LLVector4a::normalize3fast() mQ = _mm_mul_ps( mQ, approxRsqrt ); } +inline void LLVector4a::normalize3fast_checked(LLVector4a* d) +{ + if (!isFinite3()) + { + *this = d ? *d : LLVector4a(0,1,0,1); + return; + } + + LLVector4a lenSqrd; lenSqrd.setAllDot3( *this, *this ); + + if (lenSqrd.getF32ptr()[0] <= FLT_EPSILON) + { + *this = d ? *d : LLVector4a(0,1,0,1); + return; + } + + const LLQuad approxRsqrt = _mm_rsqrt_ps(lenSqrd.mQ); + mQ = _mm_mul_ps( mQ, approxRsqrt ); +} + // Return true if this vector is normalized with respect to x,y,z up to tolerance inline LLBool32 LLVector4a::isNormalized3( F32 tolerance ) const { diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 0c329c69b2..de960e5d95 100755 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -94,8 +94,6 @@ const S32 SCULPT_MIN_AREA_DETAIL = 1; extern BOOL gDebugGL; -bool less_than_max_mag(const LLVector4a& vec); - BOOL check_same_clock_dir( const LLVector3& pt1, const LLVector3& pt2, const LLVector3& pt3, const LLVector3& norm) { LLVector3 test = (pt2-pt1)%(pt3-pt2); @@ -138,6 +136,82 @@ BOOL LLLineSegmentBoxIntersect(const F32* start, const F32* end, const F32* cent return true; } +// Finds tangent vec based on three vertices with texture coordinates. +// Fills in dummy values if the triangle has degenerate texture coordinates. +void calc_tangent_from_triangle( + LLVector4a& normal, + LLVector4a& tangent_out, + const LLVector4a& v1, + const LLVector2& w1, + const LLVector4a& v2, + const LLVector2& w2, + const LLVector4a& v3, + const LLVector2& w3) +{ + const F32* v1ptr = v1.getF32ptr(); + const F32* v2ptr = v2.getF32ptr(); + const F32* v3ptr = v3.getF32ptr(); + + float x1 = v2ptr[0] - v1ptr[0]; + float x2 = v3ptr[0] - v1ptr[0]; + float y1 = v2ptr[1] - v1ptr[1]; + float y2 = v3ptr[1] - v1ptr[1]; + float z1 = v2ptr[2] - v1ptr[2]; + float z2 = v3ptr[2] - v1ptr[2]; + + float s1 = w2.mV[0] - w1.mV[0]; + float s2 = w3.mV[0] - w1.mV[0]; + float t1 = w2.mV[1] - w1.mV[1]; + float t2 = w3.mV[1] - w1.mV[1]; + + F32 rd = s1*t2-s2*t1; + + float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero + + llassert(llfinite(r)); + llassert(!llisnan(r)); + + LLVector4a sdir( + (t2 * x1 - t1 * x2) * r, + (t2 * y1 - t1 * y2) * r, + (t2 * z1 - t1 * z2) * r); + + LLVector4a tdir( + (s1 * x2 - s2 * x1) * r, + (s1 * y2 - s2 * y1) * r, + (s1 * z2 - s2 * z1) * r); + + LLVector4a n = normal; + LLVector4a t = sdir; + + LLVector4a ncrosst; + ncrosst.setCross3(n,t); + + // Gram-Schmidt orthogonalize + n.mul(n.dot3(t).getF32()); + + LLVector4a tsubn; + tsubn.setSub(t,n); + + if (tsubn.dot3(tsubn).getF32() > F_APPROXIMATELY_ZERO) + { + tsubn.normalize3fast_checked(); + + // Calculate handedness + F32 handedness = ncrosst.dot3(tdir).getF32() < 0.f ? -1.f : 1.f; + + tsubn.getF32ptr()[3] = handedness; + + tangent_out = tsubn; + } + else + { + // degenerate, make up a value + // + tangent_out.set(0,0,1,1); + } + +} // intersect test between triangle vert0, vert1, vert2 and a ray from orig in direction dir. @@ -991,7 +1065,6 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai { mOpen = FALSE; mProfile.push_back(mProfile[0]); - llassert(mProfile[0].isFinite3()); mTotal++; } } @@ -1019,7 +1092,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai addFace(mTotal-2, 2,0.5,LL_FACE_PROFILE_END, TRUE); } } - + return TRUE; } @@ -1357,7 +1430,7 @@ void LLPath::genNGon(const LLPathParams& params, S32 sides, F32 startOff, F32 en qang.setQuat (ang,path_axis); LLMatrix3 tmp(twist*qang); pt->mRot.loadu(tmp); - + t+=step; } @@ -1383,7 +1456,7 @@ void LLPath::genNGon(const LLPathParams& params, S32 sides, F32 startOff, F32 en qang.setQuat (ang,path_axis); LLMatrix3 tmp(twist*qang); pt->mRot.loadu(tmp); - + mTotal = mPath.size(); } @@ -1987,7 +2060,7 @@ LLVolume::LLVolume(const LLVolumeParams ¶ms, const F32 detail, const BOOL ge mHullIndices = NULL; mNumHullPoints = 0; mNumHullIndices = 0; - + // set defaults if (mParams.getPathParams().getCurveType() == LL_PCODE_PATH_FLEXIBLE) { @@ -2733,7 +2806,7 @@ inline LLVector4a sculpt_rgb_to_vector(U8 r, U8 g, U8 b) value.set(r,g,b); value.mul(1.f/255.f); value.sub(sub); - + return value; } @@ -2836,7 +2909,7 @@ void LLVolume::sculptGeneratePlaceholder() F32 v = (F32)t/(sizeT-1); const F32 RADIUS = (F32) 0.3; - + F32* p = pt.getF32ptr(); p[0] = (F32)(sin(F_PI * v) * cos(2.0 * F_PI * u) * RADIUS); @@ -4541,7 +4614,7 @@ LLVolumeFace& LLVolumeFace::operator=(const LLVolumeFace& src) if (src.mNormals) { - LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) src.mNormals, vert_size); + LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) src.mNormals, vert_size); } if(src.mTexCoords) @@ -4751,13 +4824,27 @@ void LLVolumeFace::optimize(F32 angle_cutoff) } } + + if (angle_cutoff > 1.f && !mNormals) + { + ll_aligned_free_16(new_face.mNormals); + new_face.mNormals = NULL; + } + + if (!mTexCoords) + { + ll_aligned_free_16(new_face.mTexCoords); + new_face.mTexCoords = NULL; + } + // Only swap data if we've actually optimized the mesh // if (new_face.mNumVertices <= mNumVertices) { - llassert(new_face.mNumIndices == mNumIndices); + llassert(new_face.mNumIndices == mNumIndices); swapData(new_face); } + } class LLVCacheTriangleData; @@ -4827,29 +4914,29 @@ F64 find_vertex_score(LLVCacheVertexData& data) if (data.mActiveTriangles >= 0) { score = 0.0; - - S32 cache_idx = data.mCacheTag; - if (cache_idx < 0) - { - //not in cache + S32 cache_idx = data.mCacheTag; + + if (cache_idx < 0) + { + //not in cache + } + else + { + if (cache_idx < 3) + { //vertex was in the last triangle + score = FindVertexScore_LastTriScore; } else - { - if (cache_idx < 3) - { //vertex was in the last triangle - score = FindVertexScore_LastTriScore; - } - else - { //more points for being higher in the cache + { //more points for being higher in the cache score = 1.0-((cache_idx-3)*FindVertexScore_Scaler); score = pow(score, FindVertexScore_CacheDecayPower); - } } + } - //bonus points for having low valence + //bonus points for having low valence F64 valence_boost = pow((F64)data.mActiveTriangles, -FindVertexScore_ValenceBoostPower); - score += FindVertexScore_ValenceBoostScale * valence_boost; + score += FindVertexScore_ValenceBoostScale * valence_boost; } return score; @@ -5429,9 +5516,6 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build) mCenter->mul(0.5f); } - llassert(less_than_max_mag(mExtents[0])); - llassert(less_than_max_mag(mExtents[1])); - if (!partial_build) { resizeIndices(grid_size*grid_size*6); @@ -5572,9 +5656,9 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) ++src; ++pos; } - } - else - { + } + else + { min_uv.set((*p)[0]+0.5f, 0.5f - (*p)[1]); @@ -5589,9 +5673,9 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) llassert(src->isFinite3()); update_min_max(min,max,*src); update_min_max(min_uv, max_uv, *tc); - - *pos = *src; + *pos = *src; + llassert(pos->isFinite3()); ++p; @@ -5619,7 +5703,7 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) *tc++ = cuv; num_vertices++; } - + LL_CHECK_MEMORY if (partial_build) @@ -5760,7 +5844,7 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) const F32* p2V = p2.getF32ptr(); const F32* paV = pa.getF32ptr(); const F32* pbV = pb.getF32ptr(); - + // Use area of triangle to determine backfacing F32 area_1a2, area_1ba, area_21b, area_2ab; area_1a2 = (p1V[0]*paV[1] - paV[0]*p1V[1]) + @@ -5941,7 +6025,7 @@ void LLVolumeFace::resizeVertices(S32 num_verts) ll_aligned_free(mPositions); //DO NOT free mNormals and mTexCoords as they are part of mPositions buffer ll_aligned_free_16(mTangents); - + mTangents = NULL; if (num_verts) @@ -5993,15 +6077,15 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con mNormals = mPositions+new_verts; mTexCoords = (LLVector2*) (mNormals+new_verts); - //positions + //positions LLVector4a::memcpyNonAliased16((F32*) mPositions, (F32*) old_buf, old_vsize); - - //normals - LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) (old_buf+mNumVertices), old_vsize); - //tex coords + //normals + LLVector4a::memcpyNonAliased16((F32*) mNormals, (F32*) (old_buf+mNumVertices), old_vsize); + + //tex coords LLVector4a::memcpyNonAliased16((F32*) mTexCoords, (F32*) (old_buf+mNumVertices*2), old_tc_size); - + //just clear tangents ll_aligned_free_16(mTangents); mTangents = NULL; @@ -6265,7 +6349,6 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) i = mBeginS + s + max_s*t; } - llassert(less_than_max_mag(mesh[i])); mesh[i].store4a((F32*)(pos+cur_vertex)); tc[cur_vertex].set(ss,tt); @@ -6273,7 +6356,6 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) if (test && s > 0) { - llassert(less_than_max_mag(mesh[i])); mesh[i].store4a((F32*)(pos+cur_vertex)); tc[cur_vertex].set(ss,tt); cur_vertex++; @@ -6294,16 +6376,13 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) i = mBeginS + s + max_s*t; ss = profile[mBeginS + s][2] - begin_stex; - llassert(less_than_max_mag(mesh[i])); mesh[i].store4a((F32*)(pos+cur_vertex)); tc[cur_vertex].set(ss,tt); - + cur_vertex++; } - } - + } LL_CHECK_MEMORY - mCenter->clear(); @@ -6459,7 +6538,7 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) LLQuad& vector1 = *((LLQuad*) &v1); LLQuad& vector2 = *((LLQuad*) &v2); - + LLQuad& amQ = *((LLQuad*) &a); LLQuad& bmQ = *((LLQuad*) &b); @@ -6482,7 +6561,7 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) llassert(v1.isFinite3()); v1.store4a((F32*) output); - + output++; idx += 3; @@ -6500,20 +6579,20 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) LLVector4a* n0p = norm+idx[0]; LLVector4a* n1p = norm+idx[1]; LLVector4a* n2p = norm+idx[2]; - + idx += 3; LLVector4a n0,n1,n2; n0.load4a((F32*) n0p); n1.load4a((F32*) n1p); n2.load4a((F32*) n2p); - + n0.add(c); n1.add(c); n2.add(c); - + llassert(c.isFinite3()); - + //even out quad contributions switch (i%2+1) { @@ -6758,7 +6837,7 @@ void CalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVe tangent[a].set(0,0,1,1); } } - + ll_aligned_free_16(tan1); } diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index e236f98fe6..37f0bfcbb8 100755 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -218,8 +218,9 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa { // guard against model data specifiying out of range indices or tcs // + if (((i + tc_offset) > index_count) - || ((idx[i+pos_offset]*2+1) > tc_count)) + || ((idx[i+tc_offset]*2+1) > tc_count)) { return LLModel::BAD_ELEMENT; } @@ -451,7 +452,7 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& fac { // guard against model data specifiying out of range indices or tcs // - if (((i + pos_offset) > index_count) + if (((cur_idx + tc_offset) > index_count) || ((idx[cur_idx+tc_offset]*2+1) > tc_count)) { return LLModel::BAD_ELEMENT; @@ -471,7 +472,7 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& fac { // guard against model data specifiying out of range indices or norms // - if (((i + pos_offset) > index_count) + if (((cur_idx + norm_offset) > index_count) || ((idx[cur_idx+norm_offset]*3+2) > norm_count)) { return LLModel::BAD_ELEMENT; diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 00de61a8cc..acfb3c085a 100755 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -73,7 +73,6 @@ std::ofstream gFailLog; #define APIENTRY #endif - void APIENTRY gl_debug_callback(GLenum source, GLenum type, GLuint id, @@ -84,24 +83,24 @@ void APIENTRY gl_debug_callback(GLenum source, { if (gGLDebugLoggingEnabled) { - if (severity == GL_DEBUG_SEVERITY_HIGH_ARB) - { - llwarns << "----- GL ERROR --------" << llendl; - } - else - { - llwarns << "----- GL WARNING -------" << 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; - if (severity == GL_DEBUG_SEVERITY_HIGH_ARB) - { - llerrs << "Halting on GL Error" << llendl; - } + if (severity == GL_DEBUG_SEVERITY_HIGH_ARB) + { + llwarns << "----- GL ERROR --------" << llendl; + } + else + { + llwarns << "----- GL WARNING -------" << 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; + if (severity == GL_DEBUG_SEVERITY_HIGH_ARB) + { + llerrs << "Halting on GL Error" << llendl; + } +} } #endif @@ -653,7 +652,8 @@ bool LLGLManager::initGL() } #if LL_DARWIN else if ((mGLRenderer.find("9400M") != std::string::npos) - || (mGLRenderer.find("9600M") != std::string::npos)) + || (mGLRenderer.find("9600M") != std::string::npos) + || (mGLRenderer.find("9800M") != std::string::npos)) { mIsMobileGF = TRUE; } @@ -751,7 +751,7 @@ bool LLGLManager::initGL() #if LL_WINDOWS if (mHasDebugOutput && gDebugGL) { //setup debug output callback - glDebugMessageControlARB(GL_DONT_CARE, GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB, GL_DEBUG_SEVERITY_LOW_ARB, 0, NULL, GL_TRUE); + //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/llglslshader.cpp b/indra/llrender/llglslshader.cpp index dfb73de6f3..35620bb656 100755 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -375,6 +375,11 @@ BOOL LLGLSLShader::createShader(std::vector<LLStaticHashedString> * attributes, // Create program mProgramObject = glCreateProgramObjectARB(); +#if LL_DARWIN + // work-around missing mix(vec3,vec3,bvec3) + mDefines["OLD_SELECT"] = "1"; +#endif + //compile new source vector< pair<string,GLenum> >::iterator fileIter = mShaderFiles.begin(); for ( ; fileIter != mShaderFiles.end(); fileIter++ ) @@ -1190,7 +1195,7 @@ GLint LLGLSLShader::getAttribLocation(U32 attrib) void LLGLSLShader::uniform1i(const LLStaticHashedString& uniform, GLint v) { GLint location = getUniformLocation(uniform); - + if (location >= 0) { std::map<GLint, LLVector4>::iterator iter = mValue.find(location); @@ -1223,7 +1228,7 @@ void LLGLSLShader::uniform2i(const LLStaticHashedString& uniform, GLint i, GLint void LLGLSLShader::uniform1f(const LLStaticHashedString& uniform, GLfloat v) { GLint location = getUniformLocation(uniform); - + if (location >= 0) { std::map<GLint, LLVector4>::iterator iter = mValue.find(location); @@ -1239,7 +1244,7 @@ void LLGLSLShader::uniform1f(const LLStaticHashedString& uniform, GLfloat v) void LLGLSLShader::uniform2f(const LLStaticHashedString& uniform, GLfloat x, GLfloat y) { GLint location = getUniformLocation(uniform); - + if (location >= 0) { std::map<GLint, LLVector4>::iterator iter = mValue.find(location); @@ -1256,7 +1261,7 @@ void LLGLSLShader::uniform2f(const LLStaticHashedString& uniform, GLfloat x, GLf void LLGLSLShader::uniform3f(const LLStaticHashedString& uniform, GLfloat x, GLfloat y, GLfloat z) { GLint location = getUniformLocation(uniform); - + if (location >= 0) { std::map<GLint, LLVector4>::iterator iter = mValue.find(location); @@ -1288,7 +1293,7 @@ void LLGLSLShader::uniform1fv(const LLStaticHashedString& uniform, U32 count, co void LLGLSLShader::uniform2fv(const LLStaticHashedString& uniform, U32 count, const GLfloat* v) { GLint location = getUniformLocation(uniform); - + if (location >= 0) { std::map<GLint, LLVector4>::iterator iter = mValue.find(location); @@ -1304,7 +1309,7 @@ void LLGLSLShader::uniform2fv(const LLStaticHashedString& uniform, U32 count, co void LLGLSLShader::uniform3fv(const LLStaticHashedString& uniform, U32 count, const GLfloat* v) { GLint location = getUniformLocation(uniform); - + if (location >= 0) { std::map<GLint, LLVector4>::iterator iter = mValue.find(location); diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 3393d352de..aa94110f4d 100755 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -1872,33 +1872,33 @@ void LLRender::flush() //store mCount in a local variable to avoid re-entrance (drawArrays may call flush) U32 count = mCount; - if (mMode == LLRender::QUADS && !sGLCoreProfile) - { - if (mCount%4 != 0) + if (mMode == LLRender::QUADS && !sGLCoreProfile) { + if (mCount%4 != 0) + { count -= (mCount % 4); llwarns << "Incomplete quad requested." << llendl; + } } - } - - if (mMode == LLRender::TRIANGLES) - { - if (mCount%3 != 0) + + if (mMode == LLRender::TRIANGLES) { + if (mCount%3 != 0) + { count -= (mCount % 3); llwarns << "Incomplete triangle requested." << llendl; + } } - } - - if (mMode == LLRender::LINES) - { - if (mCount%2 != 0) + + if (mMode == LLRender::LINES) { + if (mCount%2 != 0) + { count -= (mCount % 2); llwarns << "Incomplete line requested." << llendl; } } - + mCount = 0; if (mBuffer->useVBOs() && !mBuffer->isLocked()) diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index 33a852bedf..d7f141bd92 100755 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -79,7 +79,7 @@ LLRenderTarget::~LLRenderTarget() release(); } -void LLRenderTarget::resize(U32 resx, U32 resy, U32 color_fmt) +void LLRenderTarget::resize(U32 resx, U32 resy) { //for accounting, get the number of pixels added/subtracted S32 pix_diff = (resx*resy)-(mResX*mResY); @@ -87,10 +87,12 @@ void LLRenderTarget::resize(U32 resx, U32 resy, U32 color_fmt) mResX = resx; mResY = resy; + llassert(mInternalFormat.size() == mTex.size()); + for (U32 i = 0; i < mTex.size(); ++i) { //resize color attachments gGL.getTexUnit(0)->bindManual(mUsage, mTex[i]); - LLImageGL::setManualImage(LLTexUnit::getInternalType(mUsage), 0, color_fmt, mResX, mResY, GL_RGBA, GL_UNSIGNED_BYTE, NULL, false); + LLImageGL::setManualImage(LLTexUnit::getInternalType(mUsage), 0, mInternalFormat[i], mResX, mResY, GL_RGBA, GL_UNSIGNED_BYTE, NULL, false); sBytesAllocated += pix_diff*4; } diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h index 740e25d40d..6dc84d978d 100755 --- a/indra/llrender/llrendertarget.h +++ b/indra/llrender/llrendertarget.h @@ -79,7 +79,7 @@ public: // CAUTION: if the GL runs out of memory attempting to resize, this render target will be undefined // DO NOT use for screen space buffers or for scratch space for an image that might be uploaded // DO use for render targets that resize often and aren't likely to ruin someone's day if they break - void resize(U32 resx, U32 resy, U32 color_fmt); + void resize(U32 resx, U32 resy); //add color buffer attachment //limit of 4 color attachments per render target diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index d1afd2ed28..d230574752 100755 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -1137,7 +1137,8 @@ void LLShaderMgr::initAttribsAndUniforms() mReservedUniforms.push_back("lightMap"); mReservedUniforms.push_back("bloomMap"); mReservedUniforms.push_back("projectionMap"); - + mReservedUniforms.push_back("norm_mat"); + mReservedUniforms.push_back("global_gamma"); mReservedUniforms.push_back("texture_gamma"); @@ -1183,7 +1184,7 @@ void LLShaderMgr::initAttribsAndUniforms() mReservedUniforms.push_back("alpha_ramp"); mReservedUniforms.push_back("origin"); - + mReservedUniforms.push_back("display_gamma"); llassert(mReservedUniforms.size() == END_RESERVED_UNIFORMS); std::set<std::string> dupe_check; diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h index ba781036eb..51c27fc8b6 100755 --- a/indra/llrender/llshadermgr.h +++ b/indra/llrender/llshadermgr.h @@ -167,7 +167,8 @@ public: DEFERRED_LIGHT, DEFERRED_BLOOM, DEFERRED_PROJECTION, - + DEFERRED_NORM_MATRIX, + GLOBAL_GAMMA, TEXTURE_GAMMA, @@ -213,9 +214,8 @@ public: TERRAIN_ALPHARAMP, SHINY_ORIGIN, - +DISPLAY_GAMMA, END_RESERVED_UNIFORMS - } eGLSLReservedUniforms; // singleton pattern implementation diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 83ea6fabbb..f168b3af14 100755 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -954,15 +954,15 @@ S32 LLVertexBuffer::determineUsage(S32 usage) { //only stream_draw and dynamic_draw are supported when using VBOs, dynamic draw is the default if (ret_usage != GL_DYNAMIC_COPY_ARB) { - if (sDisableVBOMapping) - { //always use stream draw if VBO mapping is disabled - ret_usage = GL_STREAM_DRAW_ARB; - } - else - { - ret_usage = GL_DYNAMIC_DRAW_ARB; - } + if (sDisableVBOMapping) + { //always use stream draw if VBO mapping is disabled + ret_usage = GL_STREAM_DRAW_ARB; } + else + { + ret_usage = GL_DYNAMIC_DRAW_ARB; + } + } } return ret_usage; @@ -1119,7 +1119,7 @@ void LLVertexBuffer::genBuffer(U32 size) { mMappedData = sDynamicCopyVBOPool.allocate(mGLBuffer, mSize); } - + sGLCount++; } @@ -1333,7 +1333,7 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create) //actually allocate space for the vertex buffer if using VBO mapping flush(); - if (gGLManager.mHasVertexArrayObject && useVBOs() && (sUseVAO)) + if (gGLManager.mHasVertexArrayObject && useVBOs() && (LLRender::sGLCoreProfile || sUseVAO)) { #if GL_ARB_vertex_array_object mGLArray = getVAOName(); @@ -1489,18 +1489,21 @@ bool LLVertexBuffer::useVBOs() const //---------------------------------------------------------------------------- -bool expand_region(LLVertexBuffer::MappedRegion& region, S32 start, S32 end) +bool expand_region(LLVertexBuffer::MappedRegion& region, S32 index, S32 count) { + S32 end = index+count; + S32 region_end = region.mIndex+region.mCount; + if (end < region.mIndex || - start > region.mEnd) + index > region_end) { //gap exists, do not merge return false; } - region.mEnd = llmax(end, region.mEnd); - region.mIndex = llmin(start, region.mIndex); - region.mCount = region.mEnd-region.mIndex; - + S32 new_end = llmax(end, region_end); + S32 new_index = llmin(index, region.mIndex); + region.mIndex = new_index; + region.mCount = new_end-new_index; return true; } @@ -1510,6 +1513,7 @@ static LLFastTimer::DeclareTimer FTM_VBO_MAP_BUFFER("VBO Map"); // Map for data access volatile U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_range) { + bindGLBuffer(true); if (mFinal) { llerrs << "LLVertexBuffer::mapVeretxBuffer() called on a finalized buffer." << llendl; @@ -1530,23 +1534,23 @@ volatile U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, boo bool mapped = false; //see if range is already mapped - S32 start_index = mOffsets[type]+index*sTypeSize[type]; - S32 end_index = start_index+count*sTypeSize[type]; - - for (std::vector<MappedRegion>::iterator iter = mMappedVertexRegions.begin(), end = mMappedVertexRegions.end(); iter != end; ++iter) + for (U32 i = 0; i < mMappedVertexRegions.size(); ++i) { - MappedRegion& region = *iter; - if (expand_region(region, index, end_index)) + MappedRegion& region = mMappedVertexRegions[i]; + if (region.mType == type) { - mapped = true; - break; + if (expand_region(region, index, count)) + { + mapped = true; + break; + } } } if (!mapped) { //not already mapped, map new region - MappedRegion region(mMappable && map_range ? -1 : start_index, end_index-start_index); + MappedRegion region(type, mMappable && map_range ? -1 : index, count); mMappedVertexRegions.push_back(region); } } @@ -1570,7 +1574,6 @@ volatile U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, boo { volatile U8* src = NULL; waitFence(); - bindGLBuffer(); if (gGLManager.mHasMapBufferRange) { if (map_range) @@ -1691,6 +1694,7 @@ static LLFastTimer::DeclareTimer FTM_VBO_MAP_INDEX("IBO Map"); volatile U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range) { + bindGLIndices(true); if (mFinal) { llerrs << "LLVertexBuffer::mapIndexBuffer() called on a finalized buffer." << llendl; @@ -1709,14 +1713,12 @@ volatile U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range count = mNumIndices-index; } - S32 end = index+count; - bool mapped = false; //see if range is already mapped for (U32 i = 0; i < mMappedIndexRegions.size(); ++i) { MappedRegion& region = mMappedIndexRegions[i]; - if (expand_region(region, index, end)) + if (expand_region(region, index, count)) { mapped = true; break; @@ -1726,7 +1728,7 @@ volatile U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range if (!mapped) { //not already mapped, map new region - MappedRegion region(mMappable && map_range ? -1 : index, count); + MappedRegion region(TYPE_INDEX, mMappable && map_range ? -1 : index, count); mMappedIndexRegions.push_back(region); } } @@ -1742,23 +1744,23 @@ volatile U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range 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(!mMappable) { map_range = false; } else { - bindGLIndices(); - if (gDebugGL && useVBOs()) - { - GLint elem = 0; - glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &elem); - - if (elem != mGLIndices) - { - llerrs << "Wrong index buffer bound!" << llendl; - } - } volatile U8* src = NULL; waitFence(); if (gGLManager.mHasMapBufferRange) @@ -1871,10 +1873,8 @@ void LLVertexBuffer::unmapBuffer() if (mMappedData && mVertexLocked) { - llassert(mUsage != GL_DYNAMIC_COPY_ARB); - LLFastTimer t(FTM_VBO_UNMAP); - bindGLBuffer(); + bindGLBuffer(true); updated_all = mIndexLocked; //both vertex and index buffers done updating if(!mMappable) @@ -1885,8 +1885,8 @@ void LLVertexBuffer::unmapBuffer() for (U32 i = 0; i < mMappedVertexRegions.size(); ++i) { const MappedRegion& region = mMappedVertexRegions[i]; - S32 offset = region.mIndex; - S32 length = region.mCount; + S32 offset = region.mIndex >= 0 ? mOffsets[region.mType]+sTypeSize[region.mType]*region.mIndex : 0; + S32 length = sTypeSize[region.mType]*region.mCount; glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, offset, length, (U8*) mMappedData+offset); stop_glerror(); } @@ -1910,8 +1910,8 @@ void LLVertexBuffer::unmapBuffer() for (U32 i = 0; i < mMappedVertexRegions.size(); ++i) { const MappedRegion& region = mMappedVertexRegions[i]; - S32 offset = region.mIndex; - S32 length = region.mCount; + S32 offset = region.mIndex >= 0 ? mOffsets[region.mType]+sTypeSize[region.mType]*region.mIndex : 0; + S32 length = sTypeSize[region.mType]*region.mCount; if (gGLManager.mHasMapBufferRange) { LLFastTimer t(FTM_VBO_FLUSH_RANGE); @@ -2131,6 +2131,7 @@ bool LLVertexBuffer::bindGLArray() if (mGLArray && sGLRenderArray != mGLArray) { { + LLFastTimer t(FTM_BIND_GL_ARRAY); #if GL_ARB_vertex_array_object glBindVertexArray(mGLArray); #endif @@ -2165,7 +2166,7 @@ bool LLVertexBuffer::bindGLBuffer(bool force_bind) sVBOActive = true; llassert(!mGLArray || sGLRenderArray == mGLArray); - + ret = true; } @@ -2245,7 +2246,38 @@ void LLVertexBuffer::setBuffer(U32 data_mask) if ((data_mask & required_mask) != required_mask) { - llwarns << "Shader consumption mismatches data provision." << llendl; + + U32 unsatisfied_mask = (required_mask & ~data_mask); + U32 i = 0; + + while (i < TYPE_MAX) + { + U32 unsatisfied_flag = unsatisfied_mask & (1 << i); + switch (unsatisfied_flag) + { + case MAP_VERTEX: llinfos << "Missing vert pos" << llendl; break; + case MAP_NORMAL: llinfos << "Missing normals" << llendl; break; + case MAP_TEXCOORD0: llinfos << "Missing TC 0" << llendl; break; + case MAP_TEXCOORD1: llinfos << "Missing TC 1" << llendl; break; + case MAP_TEXCOORD2: llinfos << "Missing TC 2" << llendl; break; + case MAP_TEXCOORD3: llinfos << "Missing TC 3" << llendl; break; + case MAP_COLOR: llinfos << "Missing vert color" << llendl; break; + case MAP_EMISSIVE: llinfos << "Missing emissive" << llendl; break; + case MAP_TANGENT: llinfos << "Missing tangent" << llendl; break; + case MAP_WEIGHT: llinfos << "Missing weight" << llendl; break; + case MAP_WEIGHT4: llinfos << "Missing weightx4" << llendl; break; + case MAP_CLOTHWEIGHT: llinfos << "Missing clothweight" << llendl; break; + case MAP_TEXTURE_INDEX: llinfos << "Missing tex index" << llendl; break; + default: llinfos << "Missing who effin knows: " << unsatisfied_flag << llendl; + } + } + + if (unsatisfied_mask & (1 << TYPE_INDEX)) + { + llinfos << "Missing indices" << llendl; + } + + llerrs << "Shader consumption mismatches data provision." << llendl; } } } @@ -2512,8 +2544,8 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) llglassertok(); } -LLVertexBuffer::MappedRegion::MappedRegion(S32 index, S32 count) -: mIndex(index), mCount(count) +LLVertexBuffer::MappedRegion::MappedRegion(S32 type, S32 index, S32 count) +: mType(type), mIndex(index), mCount(count) { mEnd = mIndex+mCount; } diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index b7597cf60e..de58207c23 100755 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -104,11 +104,12 @@ public: class MappedRegion { public: + S32 mType; S32 mIndex; S32 mCount; S32 mEnd; - MappedRegion(S32 index, S32 count); + MappedRegion(S32 type, S32 index, S32 count); }; LLVertexBuffer(const LLVertexBuffer& rhs) diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h index 929e7f9e37..a6824f3e90 100755 --- a/indra/llwindow/lldragdropwin32.h +++ b/indra/llwindow/lldragdropwin32.h @@ -57,7 +57,7 @@ class LLDragDropWin32 #include <windows.h> #include <ole2.h> -// imposter class that does nothing +// impostor class that does nothing class LLDragDropWin32 { public: diff --git a/indra/llwindow/llopenglview-objc.h b/indra/llwindow/llopenglview-objc.h index 41837b1eb4..1e0e47cd02 100644 --- a/indra/llwindow/llopenglview-objc.h +++ b/indra/llwindow/llopenglview-objc.h @@ -65,6 +65,7 @@ - (unsigned long) getVramSize; - (void) allowMarkedTextInput:(bool)allowed; +- (void) viewDidEndLiveResize; @end diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 5f34d03c35..7415c9d8dc 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -91,6 +91,13 @@ attributedStringInfo getSegments(NSAttributedString *str) @implementation LLOpenGLView +// Force a high quality update after live resizing +- (void) viewDidEndLiveResize +{ + NSSize size = [self frame].size; + callResize(size.width, size.height); +} + - (unsigned long)getVramSize { CGLRendererInfoObj info = 0; @@ -119,9 +126,8 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void)windowResized:(NSNotification *)notification; { - NSSize size = [self frame].size; - - callResize(size.width, size.height); + //NSSize size = [self frame].size; + //callResize(size.width, size.height); } - (void)dealloc diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 4f2c1d15f6..5b3413147c 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.6.6 +3.6.7 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index fcd4fb2a68..3c94caa5f2 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8853,6 +8853,18 @@ </array> </map> + <key>RenderSpecularPrecision</key> + <map> + <key>Comment</key> + <string>Force 32-bit floating point LUT</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>0</real> + </map> + <key>RenderSpecularResX</key> <map> <key>Comment</key> @@ -9143,6 +9155,17 @@ <key>Value</key> <real>1.0</real> </map> + <key>RenderDeferredDisplayGamma</key> + <map> + <key>Comment</key> + <string>Gamma ramp exponent for final correction before display gamma.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>2.2</real> + </map> <key>RenderGLCoreProfile</key> <map> <key>Comment</key> @@ -9746,10 +9769,11 @@ <key>Value</key> <integer>1</integer> </map> + <key>RenderAutoMuteByteLimit</key> <map> <key>Comment</key> - <string>Maximum bytes of attachments before an avatar is rendered as a simple imposter (0 for no limit).</string> + <string>Maximum bytes of attachments before an avatar is rendered as a simple impostor (0 for no limit).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -9757,10 +9781,10 @@ <key>Value</key> <integer>0</integer> </map> - <key>RenderAutoMuteRenderCostLimit</key> + <key>RenderAutoMuteRenderWeightLimit</key> <map> <key>Comment</key> - <string>Maximum render weight before an avatar is rendered as a simple imposter (0 to not use this limit).</string> + <string>Maximum render weight before an avatar is rendered as a simple impostor (0 to not use this limit).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -9771,7 +9795,7 @@ <key>RenderAutoMuteSurfaceAreaLimit</key> <map> <key>Comment</key> - <string>Maximum surface area of attachments before an avatar is rendered as a simple imposter (0 to not use this limit).</string> + <string>Maximum surface area of attachments before an avatar is rendered as a simple impostor (0 to not use this limit).</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -9779,16 +9803,16 @@ <key>Value</key> <integer>0</integer> </map> - <key>RenderAutoMuteThreshold</key> + <key>RenderAutoMuteFunctions</key> <map> <key>Comment</key> - <string>Threshold on the Avatar Detail slider where simple imposter mode is enabled. (less than 0 is always on, greather than 1 always off)</string> + <string>Developing feature to render some avatars using simple impostors or colored silhouettes. (Set to 7 for all functionality)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>F32</string> + <string>U32</string> <key>Value</key> - <real>0.25</real> + <real>0</real> </map> <key>RenderAutoMuteLogging</key> <map> @@ -9902,6 +9926,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>RenderWaterMaterials</key> + <map> + <key>Comment</key> + <string>Water planar reflections include materials rendering.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>0</integer> + </map> <key>RenderWaterMipNormal</key> <map> <key>Comment</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 4b428cb904..e5f7366b70 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -35,6 +35,26 @@ out vec4 frag_color; #define frag_color gl_FragColor #endif +uniform float display_gamma; +uniform vec4 gamma; +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform float haze_horizon; +uniform float haze_density; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float distance_multiplier; +uniform float max_y; +uniform vec4 glow; +uniform float scene_light_strength; +uniform mat3 env_mat; +uniform mat3 ssao_effect_mat; + +uniform vec3 sun_dir; + #if HAS_SHADOW uniform sampler2DShadow shadowMap0; uniform sampler2DShadow shadowMap1; @@ -53,15 +73,8 @@ uniform float shadow_bias; uniform sampler2D diffuseMap; #endif -vec3 atmosLighting(vec3 light); -vec3 scaleSoftClip(vec3 light); - -VARYING vec3 vary_ambient; -VARYING vec3 vary_directional; VARYING vec3 vary_fragcoord; VARYING vec3 vary_position; -VARYING vec3 vary_pointlight_col; -VARYING vec3 vary_pointlight_col_linear; VARYING vec2 vary_texcoord0; VARYING vec3 vary_norm; @@ -69,12 +82,73 @@ VARYING vec3 vary_norm; VARYING vec4 vertex_color; #endif +vec3 vary_PositionEye; +vec3 vary_SunlitColor; +vec3 vary_AmblitColor; +vec3 vary_AdditiveColor; +vec3 vary_AtmosAttenuation; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + uniform vec4 light_position[8]; uniform vec3 light_direction[8]; uniform vec3 light_attenuation[8]; uniform vec3 light_diffuse[8]; -uniform vec2 screen_res; +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + +vec2 encode_normal(vec3 n) +{ + float f = sqrt(8 * n.z + 8); + return n.xy / f + 0.5; +} + +vec3 decode_normal (vec2 enc) +{ + vec2 fenc = enc*4-2; + float f = dot(fenc,fenc); + float g = sqrt(1-f/4); + vec3 n; + n.xy = fenc*g; + n.z = 1-f/2; + return n; +} vec3 calcDirectionalLight(vec3 n, vec3 l) { @@ -83,7 +157,7 @@ vec3 calcDirectionalLight(vec3 n, vec3 l) return vec3(a,a,a); } -float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight) +vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight) { //get light vector vec3 lv = lp.xyz-v; @@ -91,19 +165,20 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - float da = 0.0; + float da = 1.0; - //if (d > 0.0 && la > 0.0 && fa > 0.0) + vec3 col = vec3(0); + + if (d > 0.0 && la > 0.0 && fa > 0.0) { //normalize light vector - lv /= d; + lv = normalize(lv); //distance attenuation - float dist = d*la; - da = clamp(1.0-(dist+fa-1.0)/fa, 0.0, 1.0); - da *= da; - da *= 2.0; - + float dist = d/la; + float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0); + dist_atten *= dist_atten; + dist_atten *= 2.0; // spotlight coefficient. float spot = max(dot(-ln, lv), is_pointlight); @@ -111,9 +186,15 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //angular attenuation da *= max(dot(n, lv), 0.0); + + float lit = max(da * dist_atten,0.0); + + col = light_col * lit * diffuse; + + // no spec for alpha shader... } - return da; + return max(col, vec3(0.0,0.0,0.0)); } #if HAS_SHADOW @@ -136,40 +217,254 @@ float pcfShadow(sampler2DShadow shadowMap, vec4 stc) } #endif +#ifdef WATER_FOG +uniform vec4 waterPlane; +uniform vec4 waterFogColor; +uniform float waterFogDensity; +uniform float waterFogKS; -void main() +vec4 applyWaterFogDeferred(vec3 pos, vec4 color) { -#ifdef USE_INDEXED_TEX - vec4 diff = diffuseLookup(vary_texcoord0.xy); -#else - vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy); -#endif + //normalize view vector + vec3 view = normalize(pos); + float es = -(dot(view, waterPlane.xyz)); -#ifdef USE_VERTEX_COLOR - float vertex_color_alpha = vertex_color.a; -#else - float vertex_color_alpha = 1.0; + //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(pos - 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; +} #endif - float alpha = vertex_color_alpha*diff.a; +vec3 getSunlitColor() +{ + return vary_SunlitColor; +} +vec3 getAmblitColor() +{ + return vary_AmblitColor; +} +vec3 getAdditiveColor() +{ + return vary_AdditiveColor; +} +vec3 getAtmosAttenuation() +{ + return vary_AtmosAttenuation; +} - vec4 gamma_diff = diff; +void setPositionEye(vec3 v) +{ + vary_PositionEye = v; +} - diff.rgb = pow(diff.rgb, vec3(2.2f, 2.2f, 2.2f)); +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); + + 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 + vec4(haze_density * 0.25)) * (density_multiplier * max_y); + //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); + blue_weight = blue_density / temp1; + haze_weight = vec4(haze_density) / 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; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z * distance_multiplier); + + //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 * 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) + tmpAmbient) + + (haze_horizon * haze_weight) * (sunlight*(1.-cloud_shadow) * 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 / vec3(scene_light_strength, scene_light_strength, scene_light_strength)); +} + +vec3 scaleUpLight(vec3 light) +{ + return (light * vec3(scene_light_strength, scene_light_strength, scene_light_strength)); +} + +vec3 atmosAmbient(vec3 light) +{ + return getAmblitColor() + (light * vec3(0.5f, 0.5f, 0.5f)); +} + +vec3 atmosAffectDirectionalLight(float lightIntensity) +{ + return getSunlitColor() * vec3(lightIntensity, lightIntensity, lightIntensity); +} + +vec3 scaleSoftClip(vec3 light) +{ + //soft clip effect: + vec3 zeroes = vec3(0.0f, 0.0f, 0.0f); + vec3 ones = vec3(1.0f, 1.0f, 1.0f); + + light = ones - clamp(light, zeroes, ones); + light = ones - pow(light, gamma.xxx); + + return light; +} + +vec3 fullbrightAtmosTransport(vec3 light) { + float brightness = dot(light.rgb, vec3(0.33333)); + + return mix(atmosTransport(light.rgb), light.rgb + getAdditiveColor().rgb, brightness * brightness); +} + +vec3 fullbrightScaleSoftClip(vec3 light) +{ + //soft clip effect: + return light; +} + +void main() +{ vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; frag *= screen_res; vec4 pos = vec4(vary_position, 1.0); + float shadow = 1.0; #if HAS_SHADOW - float shadow = 0.0; vec4 spos = pos; if (spos.z > -shadow_clip.w) { + shadow = 0.0; + vec4 lpos; vec4 near_split = shadow_clip*-0.75; @@ -230,30 +525,81 @@ void main() } #endif - vec3 normal = vary_norm; - - vec3 l = light_position[0].xyz; - vec3 dlight = calcDirectionalLight(normal, l); - dlight = dlight * vary_directional.rgb * vary_pointlight_col; +#ifdef USE_INDEXED_TEX + vec4 diff = diffuseLookup(vary_texcoord0.xy); +#else + vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy); +#endif -#if HAS_SHADOW - vec4 col = vec4(vary_ambient + dlight * shadow, vertex_color_alpha); +#ifdef FOR_IMPOSTOR + vec4 color; + color.rgb = diff.rgb; + +#ifdef USE_VERTEX_COLOR + float final_alpha = diff.a * vertex_color.a; + diff.rgb *= vertex_color.rgb; #else - vec4 col = vec4(vary_ambient + dlight, vertex_color_alpha); + float final_alpha = diff.a; #endif + + // Insure we don't pollute depth with invis pixels in impostor rendering + // + if (final_alpha < 0.01) + { + discard; + } +#else + +#ifdef USE_VERTEX_COLOR + float final_alpha = diff.a * vertex_color.a; + diff.rgb *= vertex_color.rgb; +#else + float final_alpha = diff.a; +#endif + + + vec4 gamma_diff = diff; + diff.rgb = srgb_to_linear(diff.rgb); + + vec3 norm = vary_norm; + + calcAtmospherics(pos.xyz, 1.0); + + vec2 abnormal = encode_normal(norm.xyz); + norm.xyz = decode_normal(abnormal.xy); + + float da = dot(norm.xyz, sun_dir.xyz); + + float final_da = da; + final_da = min(final_da, shadow); + final_da = max(final_da, 0.0f); + final_da = min(final_da, 1.0f); + final_da = pow(final_da, 1.0/1.3); + + vec4 color = vec4(0,0,0,0); - vec4 color = gamma_diff * col; + color.rgb = atmosAmbient(color.rgb); + color.a = final_alpha; + + float ambient = abs(da); + ambient *= 0.5; + ambient *= ambient; + ambient = (1.0-ambient); + + color.rgb *= ambient; + color.rgb += atmosAffectDirectionalLight(final_da); + color.rgb *= gamma_diff.rgb; + + //color.rgb = mix(diff.rgb, color.rgb, final_alpha); color.rgb = atmosLighting(color.rgb); - color.rgb = scaleSoftClip(color.rgb); - //convert to linear space - color.rgb = pow(color.rgb, vec3(2.2)); - col = vec4(0,0,0,0); + vec4 light = vec4(0,0,0,0); + color.rgb = srgb_to_linear(color.rgb); - #define LIGHT_LOOP(i) col.rgb += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, normal, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z); + #define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, diff.rgb, pos.xyz, norm, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z); LIGHT_LOOP(1) LIGHT_LOOP(2) @@ -263,10 +609,19 @@ void main() LIGHT_LOOP(6) LIGHT_LOOP(7) - color.rgb += diff.rgb * vary_pointlight_col_linear * col.rgb; + // keep it linear + // + color.rgb += light.rgb; - //convert to gamma space - color.rgb = pow(color.rgb, vec3(1.0/2.2)); + // straight to display gamma, we're post-deferred + // + color.rgb = linear_to_srgb(color.rgb); + +#ifdef WATER_FOG + color = applyWaterFogDeferred(pos.xyz, color); +#endif + +#endif frag_color = color; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index cc63baa422..b40785bbd7 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -55,33 +55,18 @@ mat4 getSkinnedTransform(); #endif #endif -vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); -void calcAtmospherics(vec3 inPositionEye); - -vec3 atmosAmbient(vec3 light); -vec3 atmosAffectDirectionalLight(float lightIntensity); -vec3 scaleDownLight(vec3 light); -vec3 scaleUpLight(vec3 light); - -VARYING vec3 vary_ambient; -VARYING vec3 vary_directional; VARYING vec3 vary_fragcoord; VARYING vec3 vary_position; -VARYING vec3 vary_pointlight_col; -VARYING vec3 vary_pointlight_col_linear; #ifdef USE_VERTEX_COLOR VARYING vec4 vertex_color; #endif VARYING vec2 vary_texcoord0; - VARYING vec3 vary_norm; uniform float near_clip; -uniform vec3 sun_dir; - void main() { vec4 pos; @@ -134,42 +119,8 @@ void main() vary_norm = norm; vary_position = pos.xyz; - calcAtmospherics(pos.xyz); - -#ifndef USE_VERTEX_COLOR - vec4 diffuse_color = vec4(1,1,1,1); -#endif - //vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.)); - vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a); - - vec3 diff = diffuse_color.rgb; - - - - vary_pointlight_col = diff; - vary_pointlight_col_linear = pow(diff, vec3(2.2)); - - - col.rgb = vec3(0,0,0); - - // Add windlight lights - col.rgb = atmosAmbient(col.rgb); - - float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0); - ambient *= 0.5; - ambient *= ambient; - ambient = (1.0-ambient); - - col.rgb *= ambient; - - vary_ambient = col.rgb*diff.rgb; - - vary_directional.rgb = atmosAffectDirectionalLight(1.0f); - - col.rgb = col.rgb*diff.rgb; - #ifdef USE_VERTEX_COLOR - vertex_color = col; + vertex_color = diffuse_color; #endif #ifdef HAS_SKIN diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl index 59d109b886..8525e13333 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl @@ -50,7 +50,7 @@ void main() { discard; } - + frag_data[0] = vec4(col.rgb, 0.0); frag_data[1] = vec4(0,0,0,0); vec3 nvn = normalize(vary_normal); diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index dc1dead656..f22b16965c 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -35,29 +35,143 @@ out vec4 frag_color; uniform sampler2D diffuseMap; #endif +VARYING vec3 vary_position; VARYING vec4 vertex_color; VARYING vec2 vary_texcoord0; -vec3 fullbrightAtmosTransport(vec3 light); -vec3 fullbrightScaleSoftClip(vec3 light); +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + +vec3 fullbrightAtmosTransportDeferred(vec3 light) +{ + return light; +} + +vec3 fullbrightScaleSoftClipDeferred(vec3 light) +{ + //soft clip effect: + return light; +} + +#ifdef HAS_ALPHA_MASK +uniform float minimum_alpha; +#endif + +#ifdef WATER_FOG +uniform vec4 waterPlane; +uniform vec4 waterFogColor; +uniform float waterFogDensity; +uniform float waterFogKS; + +vec4 applyWaterFogDeferred(vec3 pos, vec4 color) +{ + //normalize view vector + vec3 view = normalize(pos); + 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(pos - 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; +} +#endif void main() { #if HAS_DIFFUSE_LOOKUP - vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color; + vec4 color = diffuseLookup(vary_texcoord0.xy); #else - vec4 color = texture2D(diffuseMap, vary_texcoord0.xy)*vertex_color; + vec4 color = texture2D(diffuseMap, vary_texcoord0.xy); #endif - color.rgb = pow(color.rgb,vec3(2.2f,2.2f,2.2f)); - - color.rgb = fullbrightAtmosTransport(color.rgb); + float final_alpha = color.a * vertex_color.a; - color.rgb = fullbrightScaleSoftClip(color.rgb); +#ifdef HAS_ALPHA_MASK + if (color.a < minimum_alpha) + { + discard; + } +#endif + + color.rgb *= vertex_color.rgb; + color.rgb = srgb_to_linear(color.rgb); + color.rgb = fullbrightAtmosTransportDeferred(color.rgb); + color.rgb = fullbrightScaleSoftClipDeferred(color.rgb); + + color.rgb = linear_to_srgb(color.rgb); - color.rgb = pow(color.rgb, vec3(1.0/2.2)); +#ifdef WATER_FOG + vec3 pos = vary_position; + vec4 fogged = applyWaterFogDeferred(pos, vec4(color.rgb, final_alpha)); + color.rgb = fogged.rgb; + color.a = fogged.a; +#else + color.a = final_alpha; +#endif - frag_color = color; + frag_color.rgb = color.rgb; + frag_color.a = color.a; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl index 3f09a15375..8e899e3e0f 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl @@ -40,6 +40,9 @@ vec3 atmosAffectDirectionalLight(float lightIntensity); vec3 scaleDownLight(vec3 light); vec3 scaleUpLight(vec3 light); +#ifdef WATER_FOG +VARYING vec3 vary_position; +#endif VARYING vec4 vertex_color; VARYING vec2 vary_texcoord0; @@ -53,7 +56,11 @@ void main() passTextureIndex(); gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); - + +#ifdef WATER_FOG + vary_position = pos.xyz; +#endif + vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; calcAtmospherics(pos.xyz); diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl index bc0719cb82..f8fdde43f9 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl @@ -38,6 +38,42 @@ uniform sampler2D specularMap; VARYING vec2 vary_texcoord0; +vec3 decode_normal (vec2 enc) +{ + vec2 fenc = enc*4-2; + float f = dot(fenc,fenc); + float g = sqrt(1-f/4); + vec3 n; + n.xy = fenc*g; + n.z = 1-f/2; + return n; +} + +vec2 encode_normal(vec3 n) +{ + float f = sqrt(8 * n.z + 8); + return n.xy / f + 0.5; +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + void main() { vec4 col = texture2D(diffuseMap, vary_texcoord0.xy); @@ -47,7 +83,12 @@ void main() discard; } - frag_data[0] = vec4(col.rgb, col.a * 0.005); - frag_data[1] = texture2D(specularMap, vary_texcoord0.xy); - frag_data[2] = vec4(texture2D(normalMap, vary_texcoord0.xy).xyz, 0.0); + vec4 norm = texture2D(normalMap, vary_texcoord0.xy); + vec4 spec = texture2D(specularMap, vary_texcoord0.xy); + + col.rgb = linear_to_srgb(col.rgb); + + frag_data[0] = vec4(col.rgb, 0.0); + frag_data[1] = spec; + frag_data[2] = vec4(norm.xy,0,0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 27bb43110b..07d28ed4cd 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -29,6 +29,44 @@ #define DIFFUSE_ALPHA_MODE_EMISSIVE 3 uniform float emissive_brightness; +uniform float display_gamma; + +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) @@ -114,6 +152,52 @@ uniform vec3 light_direction[8]; uniform vec3 light_attenuation[8]; uniform vec3 light_diffuse[8]; +#ifdef WATER_FOG +uniform vec4 waterPlane; +uniform vec4 waterFogColor; +uniform float waterFogDensity; +uniform float waterFogKS; + +vec4 applyWaterFogDeferred(vec3 pos, vec4 color) +{ + //normalize view vector + vec3 view = normalize(pos); + 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(pos - 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; +} +#endif + vec3 calcDirectionalLight(vec3 n, vec3 l) { float a = max(dot(n,l),0.0); @@ -133,14 +217,14 @@ vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spe vec3 col = vec3(0,0,0); - //if (d > 0.0 && la > 0.0 && fa > 0.0) + if (d > 0.0 && la > 0.0 && fa > 0.0) { //normalize light vector - lv /= d; + lv = normalize(lv); //distance attenuation - float dist = d*la; - float dist_atten = clamp(1.0-(dist-1.0+fa)/fa, 0.0, 1.0); + float dist = d/la; + float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0); dist_atten *= dist_atten; dist_atten *= 2.0; @@ -199,10 +283,13 @@ vec4 getPosition_d(vec2 pos_screen, float depth) return pos; } +#ifndef WATER_FOG vec3 getPositionEye() { return vary_PositionEye; } +#endif + vec3 getSunlitColor() { return vary_SunlitColor; @@ -458,8 +545,8 @@ void main() #endif #if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND) - vec3 old_diffcol = diffcol.rgb; - diffcol.rgb = pow(diffcol.rgb, vec3(2.2)); + vec3 gamma_diff = diffcol.rgb; + diffcol.rgb = srgb_to_linear(diffcol.rgb); #endif #if HAS_SPECULAR_MAP @@ -485,6 +572,9 @@ void main() norm.xyz = tnorm; norm.xyz = normalize(norm.xyz); + vec2 abnormal = encode_normal(norm.xyz); + norm.xyz = decode_normal(abnormal.xy); + vec4 final_color = diffcol; #if (DIFFUSE_ALPHA_MODE != DIFFUSE_ALPHA_MODE_EMISSIVE) @@ -588,22 +678,26 @@ void main() vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); float da =dot(norm.xyz, sun_dir.xyz); + float final_da = da; final_da = min(final_da, shadow); - final_da = max(final_da, diffuse.a); + //final_da = max(final_da, diffuse.a); final_da = max(final_da, 0.0f); + final_da = min(final_da, 1.0f); + final_da = pow(final_da, 1.0/1.3); col.rgb = atmosAmbient(col); - float ambient = min(abs(dot(norm.xyz, sun_dir.xyz)), 1.0); + float ambient = min(abs(da), 1.0); ambient *= 0.5; ambient *= ambient; ambient = (1.0-ambient); col.rgb *= ambient; - col.rgb = col.rgb + atmosAffectDirectionalLight(pow(final_da, 1.0/1.3)); - col.rgb *= old_diffcol.rgb; + col.rgb = col.rgb + atmosAffectDirectionalLight(final_da); + + col.rgb *= gamma_diff.rgb; float glare = 0.0; @@ -626,7 +720,8 @@ void main() col += spec_contrib; } - col = mix(col.rgb, old_diffcol.rgb, diffuse.a); + + col = mix(col.rgb, diffcol.rgb, diffuse.a); if (envIntensity > 0.0) { @@ -644,16 +739,20 @@ void main() glare += cur_glare; } - col = mix(atmosLighting(col), fullbrightAtmosTransport(col), diffuse.a); - col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a); + //col = mix(atmosLighting(col), fullbrightAtmosTransport(col), diffuse.a); + //col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a); + + col = atmosLighting(col); + col = scaleSoftClip(col); //convert to linear space before adding local lights - col = pow(col, vec3(2.2)); + col = srgb_to_linear(col); - vec3 npos = normalize(-pos.xyz); + + vec3 light = vec3(0,0,0); - #define LIGHT_LOOP(i) col.rgb = col.rgb + calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare); + #define LIGHT_LOOP(i) light.rgb += calcPointLightOrSpotLight(light_diffuse[i].rgb, npos, diffuse.rgb, final_specular, pos.xyz, norm.xyz, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z, glare); LIGHT_LOOP(1) LIGHT_LOOP(2) @@ -663,13 +762,22 @@ void main() LIGHT_LOOP(6) LIGHT_LOOP(7) + col.rgb += light.rgb; + + glare = min(glare, 1.0); + float al = max(diffcol.a,glare)*vertex_color.a; //convert to gamma space for display on screen - col.rgb = pow(col.rgb, vec3(1.0/2.2)); + col.rgb = linear_to_srgb(col.rgb); + +#ifdef WATER_FOG + vec4 temp = applyWaterFogDeferred(pos, vec4(col.rgb, al)); + col.rgb = temp.rgb; + al = temp.a; +#endif frag_color.rgb = col.rgb; - glare = min(glare, 1.0); - frag_color.a = max(diffcol.a,glare)*vertex_color.a; + frag_color.a = al; #else frag_data[0] = final_color; @@ -677,3 +785,4 @@ void main() frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity. #endif } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl index b25032866b..393d1e69da 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl @@ -142,3 +142,4 @@ vary_normal = n; #endif #endif } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 5a08980fec..236567219b 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -36,6 +36,7 @@ uniform sampler2DRect diffuseRect; uniform sampler2DRect specularRect; uniform sampler2DRect normalMap; uniform samplerCube environmentMap; +uniform sampler2D noiseMap; uniform sampler2D lightFunc; @@ -98,6 +99,8 @@ void main() norm = normalize(norm); vec4 spec = texture2DRect(specularRect, frag.xy); vec3 diff = texture2DRect(diffuseRect, frag.xy).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; vec3 out_col = vec3(0,0,0); vec3 npos = normalize(-pos); @@ -105,47 +108,56 @@ void main() for (int i = 0; i < LIGHT_COUNT; ++i) { vec3 lv = light[i].xyz-pos; - float d = length(lv); - float dist = d * light[i].w; + float dist = length(lv); + dist /= light[i].w; if (dist <= 1.0) { - float da = dot(norm, lv); + float da = dot(norm, lv); if (da > 0.0) - { - lv /= d; - da = dot(norm, lv); + { + lv = normalize(lv); + da = dot(norm, lv); - float fa = light_col[i].a+1.0; - float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0); - dist_atten *= dist_atten; - dist_atten *= 2.0; + float fa = light_col[i].a+1.0; + float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0); + dist_atten *= dist_atten; + dist_atten *= 2.0; - float lit = da * dist_atten; + dist_atten *= noise; + + float lit = da * dist_atten; - vec3 col = light_col[i].rgb*lit*diff; + vec3 col = light_col[i].rgb*lit*diff; - if (spec.a > 0.0) - { - lit = min(da*6.0, 1.0) * dist_atten; - //vec3 ref = dot(pos+lv, norm); - vec3 h = normalize(lv+npos); - float nh = dot(norm, h); - float nv = dot(norm, npos); - float vh = dot(npos, h); - float sa = nh; - float fres = pow(1 - dot(h, npos), 5)*0.4+0.5; - - float gtdenom = 2 * nh; - float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); + //vec3 col = vec3(dist2, light_col[i].a, lit); + + if (spec.a > 0.0) + { + lit = min(da*6.0, 1.0) * dist_atten; + //vec3 ref = dot(pos+lv, norm); + vec3 h = normalize(lv+npos); + float nh = dot(norm, h); + float nv = dot(norm, npos); + float vh = dot(npos, h); + float sa = nh; + float fres = pow(1 - dot(h, npos), 5)*0.4+0.5; + + float gtdenom = 2 * nh; + float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh)); + if (nh > 0.0) + { float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da); - col += max(lit*scol*light_col[i].rgb*spec.rgb, vec3(0.0)); + col += lit*scol*light_col[i].rgb*spec.rgb; + //col += spec.rgb; } - - out_col += col; } + + out_col += col; } } + } + frag_color.rgb = out_col; frag_color.a = 0.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index 7b09823242..2e5a2c273e 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -84,16 +84,48 @@ vec3 decode_normal (vec2 enc) n.z = 1-f/2; return n; } +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} -vec4 correctWithGamma(vec4 col) +vec3 linear_to_srgb(vec3 cl) { - return vec4(pow(col.rgb, vec3(2.2)), col.a); + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + } + vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); - ret = correctWithGamma(ret); + ret.rgb = srgb_to_linear(ret.rgb); vec2 dist = tc-vec2(0.5); @@ -109,7 +141,7 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); - ret = correctWithGamma(ret); + ret.rgb = srgb_to_linear(ret.rgb); vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); @@ -127,7 +159,7 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); - ret = correctWithGamma(ret); + ret.rgb = srgb_to_linear(ret.rgb); vec2 dist = tc-vec2(0.5); diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index b331258952..73b9767a71 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -93,52 +93,64 @@ void main() vec3 pos = getPosition(frag.xy).xyz; vec3 lv = trans_center.xyz-pos; - float d = length(lv); + float dist = length(lv); + dist /= size; + if (dist > 1.0) + { + discard; + } - float dist = d*size; - - vec3 col = vec3(0.0); - if (dist <= 1.0) + vec3 norm = texture2DRect(normalMap, frag.xy).xyz; + norm = decode_normal(norm.xy); // unpack norm + float da = dot(norm, lv); + if (da < 0.0) { - vec3 norm = texture2DRect(normalMap, frag.xy).xyz; - norm = decode_normal(norm.xy); // unpack norm - - norm = normalize(norm); - lv = normalize(lv); - float da = max(dot(norm, lv), 0.0); + discard; + } + + norm = normalize(norm); + lv = normalize(lv); + da = dot(norm, lv); //float noise = texture2D(noiseMap, frag.xy/128.0).b; - col = texture2DRect(diffuseRect, frag.xy).rgb; - float fa = falloff+1.0; - float dist_atten = clamp(1.0-(dist-1.0+fa)/fa, 0.0, 1.0); - dist_atten *= dist_atten; - dist_atten *= 2.0; + vec3 col = texture2DRect(diffuseRect, frag.xy).rgb; + float fa = falloff+1.0; + float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0); + dist_atten *= dist_atten; + dist_atten *= 2.0; float lit = da * dist_atten; - col = color.rgb*lit*col; + col = color.rgb*lit*col; - vec4 spec = texture2DRect(specularRect, frag.xy); - if (spec.a > 0.0) + vec4 spec = texture2DRect(specularRect, frag.xy); + if (spec.a > 0.0) + { + lit = min(da*6.0, 1.0) * dist_atten; + + vec3 npos = -normalize(pos); + vec3 h = normalize(lv+npos); + float nh = dot(norm, h); + float nv = dot(norm, npos); + float vh = dot(npos, h); + float sa = nh; + float fres = pow(1 - dot(h, npos), 5) * 0.4+0.5; + float gtdenom = 2 * nh; + float gt = max(0,(min(gtdenom * nv / vh, gtdenom * da / vh))); + + if (nh > 0.0) { - lit = min(da*6.0, 1.0) * dist_atten; - - vec3 npos = -normalize(pos); - vec3 h = normalize(lv+npos); - float nh = dot(norm, h); - float nv = dot(norm, npos); - float vh = dot(npos, h); - float sa = nh; - float fres = pow(1 - dot(h, npos), 5) * 0.4+0.5; - float gtdenom = 2 * nh; - float gt = max(0,(min(gtdenom * nv / vh, gtdenom * da / vh))); - float scol = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da); - col += max(lit*scol*color.rgb*spec.rgb, vec3(0.0)); + col += lit*scol*color.rgb*spec.rgb; } } + if (dot(col, col) <= 0.0) + { + discard; + } + frag_color.rgb = col; frag_color.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl index 6f2cfae6d2..4e2f98aa29 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl @@ -36,11 +36,32 @@ uniform sampler2DRect diffuseRect; uniform vec2 screen_res; VARYING vec2 vary_fragcoord; -uniform float texture_gamma; +uniform float display_gamma; + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + void main() { vec4 diff = texture2DRect(diffuseRect, vary_fragcoord); - frag_color = pow(diff, vec4(texture_gamma, texture_gamma, texture_gamma, 1.0f)); + diff.rgb = linear_to_srgb(diff.rgb); + frag_color = diff; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 26b1041cd5..760d52a9ce 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -79,6 +79,43 @@ vec3 vary_AtmosAttenuation; uniform mat4 inv_proj; uniform vec2 screen_res; +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + + vec3 decode_normal (vec2 enc) { vec2 fenc = enc*4-2; @@ -154,6 +191,53 @@ void setAtmosAttenuation(vec3 v) vary_AtmosAttenuation = v; } + +#ifdef WATER_FOG +uniform vec4 waterPlane; +uniform vec4 waterFogColor; +uniform float waterFogDensity; +uniform float waterFogKS; + +vec4 applyWaterFogDeferred(vec3 pos, vec4 color) +{ + //normalize view vector + vec3 view = normalize(pos); + 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(pos - 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; +} +#endif + void calcAtmospherics(vec3 inPositionEye, float ambFactor) { vec3 P = inPositionEye; @@ -308,13 +392,16 @@ void main() float envIntensity = norm.z; norm.xyz = decode_normal(norm.xy); // unpack norm - float da = max(dot(norm.xyz, sun_dir.xyz), 0.0); - da = pow(da, 1.0/1.3); + float da = dot(norm.xyz, sun_dir.xyz); + + float final_da = max(0.0,da); + final_da = min(final_da, 1.0f); + final_da = pow(final_da, 1.0/1.3); vec4 diffuse = texture2DRect(diffuseRect, tc); //convert to gamma space - diffuse.rgb = pow(diffuse.rgb, vec3(1.0/2.2)); + diffuse.rgb = linear_to_srgb(diffuse.rgb); vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); vec3 col; @@ -330,7 +417,7 @@ void main() col.rgb *= ambient; - col += atmosAffectDirectionalLight(max(min(da, 1.0), 0.0)); + col += atmosAffectDirectionalLight(final_da); col *= diffuse.rgb; @@ -370,13 +457,19 @@ void main() col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a); } - col = pow(col, vec3(2.2)); + #ifdef WATER_FOG + vec4 fogged = applyWaterFogDeferred(pos,vec4(col, bloom)); + col = fogged.rgb; + bloom = fogged.a; + #endif + + col = srgb_to_linear(col); //col = vec3(1,0,1); //col.g = envIntensity; } - frag_color.rgb = col; - + frag_color.rgb = col.rgb; frag_color.a = bloom; } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index e9e6ba9935..8d8a6c9dde 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -85,9 +85,46 @@ vec3 decode_normal (vec2 enc) return n; } +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + vec4 correctWithGamma(vec4 col) { - return vec4(pow(col.rgb, vec3(2.2)), col.a); + return vec4(srgb_to_linear(col.rgb), col.a); } vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) diff --git a/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl b/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl new file mode 100644 index 0000000000..587f3d5a94 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/srgb.glsl @@ -0,0 +1,46 @@ +/** + * @file srgb.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$ + */ + +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + return mix(high_range, low_range, lte); + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + + bvec3 lt = lessThan(cl,vec3(0.0031308)); + return mix(high_range, low_range, lt); + +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/srgb_mac.glsl b/indra/newview/app_settings/shaders/class1/deferred/srgb_mac.glsl new file mode 100644 index 0000000000..6cc1e6e798 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/srgb_mac.glsl @@ -0,0 +1,54 @@ +/** + * @file srgb.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$ + */ + +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + + bvec3 lt = lessThan(cl,vec3(0.0031308)); + + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/underWaterF.glsl new file mode 100644 index 0000000000..78f841c733 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/underWaterF.glsl @@ -0,0 +1,157 @@ +/** + * @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 frag_data[3]; +#else +#define frag_data gl_FragData +#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; + +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + +vec2 encode_normal(vec3 n) +{ + float f = sqrt(8 * n.z + 8); + return n.xy / f + 0.5; +} + +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); + + frag_data[0] = vec4(linear_to_srgb(fb.rgb), 1.0); // diffuse + frag_data[1] = vec4(0.5,0.5,0.5, 0.95); // speccolor*spec, spec + frag_data[2] = vec4(encode_normal(wavef), 0.0, 0.0); // normalxyz, displace +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index 8de8ba1dd8..e7a3bb2001 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl @@ -53,11 +53,12 @@ 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; -uniform mat3 normal_matrix; +uniform mat4 norm_mat; //region space to screen space //bigWave is (refCoord.w, view.w); VARYING vec4 refCoord; @@ -65,6 +66,43 @@ VARYING vec4 littleWave; VARYING vec4 view; VARYING vec4 vary_position; +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + vec2 encode_normal(vec3 n) { float f = sqrt(8 * n.z + 8); @@ -119,7 +157,7 @@ void main() refcol *= df1 * 0.333; vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5; - //wavef.z *= max(-viewVec.z, 0.1); + wavef.z *= max(-viewVec.z, 0.1); wavef = normalize(wavef); float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset; @@ -129,13 +167,14 @@ void main() 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); + float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0); //harden specular - //spec = pow(spec, 128.0); + spec = pow(spec, 128.0); //figure out distortion vector (ripply) vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0); @@ -146,24 +185,17 @@ void main() // Note we actually want to use just df1, but multiplying by 0.999999 gets around an nvidia compiler bug color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999); - float shadow = 1.0; vec4 pos = vary_position; - //vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz; - vec4 spos = pos; - - //spec *= shadow; - //color.rgb += spec * specular; + color.rgb += spec * specular; color.rgb = atmosTransport(color.rgb); color.rgb = scaleSoftClip(color.rgb); - //color.a = spec * sunAngle2; + color.a = spec * sunAngle2; - //wavef.z *= 0.1f; - //wavef = normalize(wavef); - vec3 screenspacewavef = normal_matrix*wavef; + vec3 screenspacewavef = normalize((norm_mat*vec4(wavef, 1.0)).xyz); - frag_data[0] = vec4(color.rgb, 0.5); // diffuse - frag_data[1] = vec4(0.5,0.5,0.5, 0.95); // speccolor*spec, spec - frag_data[2] = vec4(encode_normal(screenspacewavef), 0.0, 0.0); // normalxyz, displace + frag_data[0] = vec4(color.rgb, color); // diffuse + frag_data[1] = vec4(0); // speccolor, spec + frag_data[2] = vec4(encode_normal(screenspacewavef.xyz*0.5+0.5), 0.05, 0);// normalxy, 0, 0 } diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl index ece34dcc4e..9734acf005 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl @@ -85,7 +85,7 @@ void main() pos.w = 1.0; pos = modelview_matrix*pos; - calcAtmospherics(view.xyz); + calcAtmospherics(pos.xyz); //pass wave parameters to pixel shader vec2 bigWave = (v.xy) * vec2(0.04,0.04) + d1 * time * 0.055; diff --git a/indra/newview/app_settings/shaders/class1/interface/downsampleDepthF.glsl b/indra/newview/app_settings/shaders/class1/interface/downsampleDepthF.glsl index 6523a06d22..f8efd7cb4a 100644 --- a/indra/newview/app_settings/shaders/class1/interface/downsampleDepthF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/downsampleDepthF.glsl @@ -31,8 +31,6 @@ out vec4 frag_color; uniform sampler2D depthMap; -uniform float delta; - VARYING vec2 tc0; VARYING vec2 tc1; VARYING vec2 tc2; diff --git a/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl b/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl index 0e5dc08183..942c5888e7 100644 --- a/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl @@ -33,8 +33,6 @@ out vec4 frag_color; uniform sampler2DRect depthMap; -uniform float delta; - VARYING vec2 tc0; VARYING vec2 tc1; VARYING vec2 tc2; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl index eaaa7b208d..cad5b9ff04 100755 --- a/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl @@ -41,13 +41,13 @@ void default_lighting() { vec4 color = diffuseLookup(vary_texcoord0.xy); + color *= vertex_color; + if (color.a < minimum_alpha) { discard; } - color.rgb *= vertex_color.rgb; - color.rgb = atmosLighting(color.rgb); color.rgb = scaleSoftClip(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 62ca3f1ff1..c20e00163c 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -69,6 +69,43 @@ uniform vec2 screen_res; uniform mat4 inv_proj; +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + vec2 encode_normal(vec3 n) { float f = sqrt(8 * n.z + 8); @@ -88,10 +125,9 @@ vec3 decode_normal (vec2 enc) vec4 correctWithGamma(vec4 col) { - return vec4(pow(col.rgb, vec3(2.2)), col.a); + return vec4(srgb_to_linear(col.rgb), col.a); } - vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) { vec4 ret = texture2DLod(projectionMap, tc, lod); @@ -298,14 +334,12 @@ void main() vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); + stc /= stc.w; if (stc.z > 0.0) { - stc.xy /= stc.w; + float fatten = clamp(envIntensity*envIntensity+envIntensity*0.25, 0.25, 1.0); - float fatten = clamp(envIntensity*envIntensity+envIntensity*0.5, 0.25, 1.0); - - //stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5); stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5); if (stc.x < 1.0 && @@ -313,7 +347,7 @@ void main() stc.x > 0.0 && stc.y > 0.0) { - col += color.rgb*texture2DLodSpecular(projectionMap, stc.xy, proj_lod-envIntensity*proj_lod).rgb*shadow*spec.rgb; + col += color.rgb*texture2DLodSpecular(projectionMap, stc.xy, proj_lod).rgb*shadow*spec.rgb; } } } diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 6e05091b57..1022c23f7b 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -78,6 +78,43 @@ vec3 vary_AtmosAttenuation; uniform mat4 inv_proj; uniform vec2 screen_res; +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + vec2 encode_normal(vec3 n) { float f = sqrt(8 * n.z + 8); @@ -246,6 +283,52 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) { setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1)); } +#ifdef WATER_FOG +uniform vec4 waterPlane; +uniform vec4 waterFogColor; +uniform float waterFogDensity; +uniform float waterFogKS; + +vec4 applyWaterFogDeferred(vec3 pos, vec4 color) +{ + //normalize view vector + vec3 view = normalize(pos); + 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(pos - 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; +} +#endif + vec3 atmosLighting(vec3 light) { light *= getAtmosAttenuation().r; @@ -326,7 +409,7 @@ void main() vec4 diffuse = texture2DRect(diffuseRect, tc); //convert to gamma space - diffuse.rgb = pow(diffuse.rgb, vec3(1.0/2.2)); + diffuse.rgb = linear_to_srgb(diffuse.rgb); vec3 col; float bloom = 0.0; @@ -392,7 +475,13 @@ void main() col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a); } - col = pow(col, vec3(2.2)); + #ifdef WATER_FOG + vec4 fogged = applyWaterFogDeferred(pos,vec4(col, bloom)); + col = fogged.rgb; + bloom = fogged.a; + #endif + + col = srgb_to_linear(col); //col = vec3(1,0,1); //col.g = envIntensity; diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 4bad439952..7689b72d20 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -86,9 +86,46 @@ vec3 decode_normal (vec2 enc) return n; } +vec3 srgb_to_linear(vec3 cs) +{ + vec3 low_range = cs / vec3(12.92); + vec3 high_range = pow((cs+vec3(0.055))/vec3(1.055), vec3(2.4)); + bvec3 lte = lessThanEqual(cs,vec3(0.04045)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lte.r ? low_range.r : high_range.r; + result.g = lte.g ? low_range.g : high_range.g; + result.b = lte.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lte); +#endif + +} + +vec3 linear_to_srgb(vec3 cl) +{ + cl = clamp(cl, vec3(0), vec3(1)); + vec3 low_range = cl * 12.92; + vec3 high_range = 1.055 * pow(cl, vec3(0.41666)) - 0.055; + bvec3 lt = lessThan(cl,vec3(0.0031308)); + +#ifdef OLD_SELECT + vec3 result; + result.r = lt.r ? low_range.r : high_range.r; + result.g = lt.g ? low_range.g : high_range.g; + result.b = lt.b ? low_range.b : high_range.b; + return result; +#else + return mix(high_range, low_range, lt); +#endif + +} + vec4 correctWithGamma(vec4 col) { - return vec4(pow(col.rgb, vec3(2.2)), col.a); + return vec4(srgb_to_linear(col.rgb), col.a); } vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) @@ -316,7 +353,7 @@ void main() } } } - + //not sure why, but this line prevents MATBUG-194 col = max(col, vec3(0.0)); diff --git a/indra/newview/llavatarrenderinfoaccountant.cpp b/indra/newview/llavatarrenderinfoaccountant.cpp index 89c1b2a186..e778e0c032 100644 --- a/indra/newview/llavatarrenderinfoaccountant.cpp +++ b/indra/newview/llavatarrenderinfoaccountant.cpp @@ -38,6 +38,7 @@ #include "llhttpclient.h" #include "lltimer.h" #include "llviewercontrol.h" +#include "llviewermenu.h" #include "llviewerobjectlist.h" #include "llviewerregion.h" #include "llvoavatar.h" @@ -92,7 +93,7 @@ public: { if (LLAvatarRenderInfoAccountant::logRenderInfo()) { - llinfos << "Result for avatar weights request for region " << regionp->getName() << ":" << llendl; + llinfos << "LRI: Result for avatar weights request for region " << regionp->getName() << ":" << llendl; } if (content.isMap()) @@ -115,7 +116,7 @@ public: if (LLAvatarRenderInfoAccountant::logRenderInfo()) { - llinfos << " Agent " << target_agent_id + llinfos << "LRI: Agent " << target_agent_id << ": " << agent_info_map << llendl; } @@ -186,7 +187,7 @@ public: { if (LLAvatarRenderInfoAccountant::logRenderInfo()) { - llinfos << "Result for avatar weights POST for region " << regionp->getName() + llinfos << "LRI: Result for avatar weights POST for region " << regionp->getName() << ": " << content << llendl; } @@ -224,7 +225,7 @@ void LLAvatarRenderInfoAccountant::sendRenderInfoToRegion(LLViewerRegion * regio { if (logRenderInfo()) { - llinfos << "Sending avatar render info to region " + llinfos << "LRI: Sending avatar render info to region " << regionp->getName() << " from " << url << llendl; @@ -253,7 +254,7 @@ void LLAvatarRenderInfoAccountant::sendRenderInfoToRegion(LLViewerRegion * regio if (logRenderInfo()) { - llinfos << "Sending avatar render info for " << avatar->getID() + llinfos << "LRI: Sending avatar render info for " << avatar->getID() << ": " << info << llendl; } } @@ -281,7 +282,7 @@ void LLAvatarRenderInfoAccountant::getRenderInfoFromRegion(LLViewerRegion * regi { if (logRenderInfo()) { - llinfos << "Requesting avatar render info for region " + llinfos << "LRI: Requesting avatar render info for region " << regionp->getName() << " from " << url << llendl; @@ -304,6 +305,12 @@ void LLAvatarRenderInfoAccountant::idle() S32 num_avs = LLCharacter::sInstances.size(); + if (logRenderInfo()) + { + llinfos << "LRI: Scanning all regions and checking for render info updates" + << llendl; + } + // Check all regions and see if it's time to fetch/send data for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); iter != LLWorld::getInstance()->getRegionList().end(); ++iter) @@ -325,6 +332,35 @@ void LLAvatarRenderInfoAccountant::idle() // We scanned all the regions, reset the request timer. sRenderInfoReportTimer.resetWithExpiry(SECS_BETWEEN_REGION_SCANS); } + + static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions"); + static U32 prev_render_auto_mute_functions = (U32) -1; + if (prev_render_auto_mute_functions != render_auto_mute_functions) + { + prev_render_auto_mute_functions = render_auto_mute_functions; + + // Adjust menus + BOOL show_items = (BOOL)(render_auto_mute_functions & 0x04); + gMenuAvatarOther->setItemVisible( std::string("Normal"), show_items); + gMenuAvatarOther->setItemVisible( std::string("Always use impostor"), show_items); + gMenuAvatarOther->setItemVisible( std::string("Never use impostor"), show_items); + gMenuAvatarOther->setItemVisible( std::string("Impostor seperator"), show_items); + + gMenuAttachmentOther->setItemVisible( std::string("Normal"), show_items); + gMenuAttachmentOther->setItemVisible( std::string("Always use impostor"), show_items); + gMenuAttachmentOther->setItemVisible( std::string("Never use impostor"), show_items); + gMenuAttachmentOther->setItemVisible( std::string("Impostor seperator"), show_items); + + if (!show_items) + { // Turning off visual muting + for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); + iter != LLCharacter::sInstances.end(); ++iter) + { // Make sure all AVs have the setting cleared + LLVOAvatar* inst = (LLVOAvatar*) *iter; + inst->setCachedVisualMute(false); + } + } + } } @@ -332,14 +368,23 @@ void LLAvatarRenderInfoAccountant::idle() // Make sRenderInfoReportTimer expire so the next call to idle() will scan and query a new region // called via LLViewerRegion::setCapabilitiesReceived() boost signals when the capabilities // are returned for a new LLViewerRegion, and is the earliest time to get render info -void LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer() +void LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer(const LLUUID& region_id) { if (logRenderInfo()) { - llinfos << "Viewer has new region capabilities" << llendl; + llinfos << "LRI: Viewer has new region capabilities, clearing global render info timer" + << " and timer for region " << region_id + << llendl; } - sRenderInfoReportTimer.resetWithExpiry(0.f); + // Reset the global timer so it will scan regions immediately + sRenderInfoReportTimer.reset(); + + LLViewerRegion* regionp = LLWorld::instance().getRegionFromID(region_id); + if (regionp) + { // Reset the region's timer so it will request data immediately + regionp->getRenderInfoRequestTimer().reset(); + } } // static diff --git a/indra/newview/llavatarrenderinfoaccountant.h b/indra/newview/llavatarrenderinfoaccountant.h index 97dd9f0ad3..d68f2dccfb 100644 --- a/indra/newview/llavatarrenderinfoaccountant.h +++ b/indra/newview/llavatarrenderinfoaccountant.h @@ -42,7 +42,7 @@ public: static void sendRenderInfoToRegion(LLViewerRegion * regionp); static void getRenderInfoFromRegion(LLViewerRegion * regionp); - static void expireRenderInfoReportTimer(); + static void expireRenderInfoReportTimer(const LLUUID& region_id); static void idle(); diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 14c09a2393..9682f38227 100755 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -132,10 +132,16 @@ void LLDrawable::destroy() sNumZombieDrawables--; } + // Attempt to catch violations of this in debug, + // knowing that some false alarms may result + // + llassert(!LLSpatialGroup::sNoDelete); + + /* cannot be guaranteed and causes crashes on false alarms if (LLSpatialGroup::sNoDelete) { llerrs << "Illegal deletion of LLDrawable!" << llendl; - } + }*/ std::for_each(mFaces.begin(), mFaces.end(), DeletePointer()); mFaces.clear(); @@ -254,7 +260,7 @@ S32 LLDrawable::findReferences(LLDrawable *drawablep) return count; } -static LLFastTimer::DeclareTimer FTM_ALLOCATE_FACE("Allocate Face"); +static LLFastTimer::DeclareTimer FTM_ALLOCATE_FACE("Allocate Face", true); LLFace* LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep) { @@ -527,6 +533,8 @@ void LLDrawable::makeStatic(BOOL warning_enabled) } updatePartition(); } + + llassert(isAvatar() || isRoot() || mParent->isStatic()); } // Returns "distance" between target destination and resulting xfrom diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 2f6e895cb7..1cd4d87437 100755 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -93,15 +93,35 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass) if (pass == 0) { + if (LLPipeline::sImpostorRender) + { + simple_shader = &gDeferredAlphaImpostorProgram; + fullbright_shader = &gDeferredFullbrightProgram; + } + else if (LLPipeline::sUnderWaterRender) + { + simple_shader = &gDeferredAlphaWaterProgram; + fullbright_shader = &gDeferredFullbrightWaterProgram; + } + else + { simple_shader = &gDeferredAlphaProgram; - fullbright_shader = &gObjectFullbrightProgram; + fullbright_shader = &gDeferredFullbrightProgram; + } + + F32 gamma = gSavedSettings.getF32("RenderDeferredDisplayGamma"); + fullbright_shader->bind(); fullbright_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f); + fullbright_shader->uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f/2.2f)); fullbright_shader->unbind(); + //prime simple shader (loads shadow relevant uniforms) gPipeline.bindDeferredShader(*simple_shader); + + simple_shader->uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f/2.2f)); } - else + else if (!LLPipeline::sImpostorRender) { //update depth buffer sampler gPipeline.mScreen.flush(); @@ -113,6 +133,23 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass) gObjectFullbrightAlphaMaskProgram.setMinimumAlpha(0.33f); } + + if (LLPipeline::sRenderDeferred) + { + emissive_shader = &gDeferredEmissiveProgram; + } + else + { + if (LLPipeline::sUnderWaterRender) + { + emissive_shader = &gObjectEmissiveWaterProgram; + } + else + { + emissive_shader = &gObjectEmissiveProgram; + } + } + deferred_render = TRUE; if (mVertexShaderLevel > 0) { @@ -124,7 +161,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass) void LLDrawPoolAlpha::endPostDeferredPass(S32 pass) { - if (pass == 1) + if (pass == 1 && !LLPipeline::sImpostorRender) { gPipeline.mDeferredDepth.flush(); gPipeline.mScreen.bindTarget(); @@ -144,7 +181,13 @@ void LLDrawPoolAlpha::beginRenderPass(S32 pass) { LLFastTimer t(FTM_RENDER_ALPHA); - if (LLPipeline::sUnderWaterRender) + if (LLPipeline::sImpostorRender) + { + simple_shader = &gObjectSimpleImpostorProgram; + fullbright_shader = &gObjectFullbrightProgram; + emissive_shader = &gObjectEmissiveProgram; + } + else if (LLPipeline::sUnderWaterRender) { simple_shader = &gObjectSimpleWaterProgram; fullbright_shader = &gObjectFullbrightWaterProgram; @@ -192,8 +235,13 @@ void LLDrawPoolAlpha::render(S32 pass) gGL.setColorMask(true, true); } - LLGLDepthTest depth(GL_TRUE, LLDrawPoolWater::sSkipScreenCopy || - (deferred_render && pass == 1) ? GL_TRUE : GL_FALSE); + bool write_depth = LLDrawPoolWater::sSkipScreenCopy + || (deferred_render && pass == 1) + // we want depth written so that rendered alpha will + // contribute to the alpha mask used for impostors + || LLPipeline::sImpostorRenderAlphaDepthPass; + + LLGLDepthTest depth(GL_TRUE, write_depth ? GL_TRUE : GL_FALSE); if (deferred_render && pass == 1) { @@ -239,11 +287,11 @@ void LLDrawPoolAlpha::render(S32 pass) if (mVertexShaderLevel > 0) { - renderAlpha(getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX | LLVertexBuffer::MAP_TANGENT | LLVertexBuffer::MAP_TEXCOORD1 | LLVertexBuffer::MAP_TEXCOORD2); + renderAlpha(getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX | LLVertexBuffer::MAP_TANGENT | LLVertexBuffer::MAP_TEXCOORD1 | LLVertexBuffer::MAP_TEXCOORD2, pass); } else { - renderAlpha(getVertexDataMask()); + renderAlpha(getVertexDataMask(), pass); } gGL.setColorMask(true, false); @@ -315,7 +363,7 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask) } } -void LLDrawPoolAlpha::renderAlpha(U32 mask) +void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass) { BOOL initialized_lighting = FALSE; BOOL light_enabled = TRUE; @@ -331,15 +379,10 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) if (group->mSpatialPartition->mRenderByGroup && !group->isDead()) { - static LLFastTimer::DeclareTimer FTM_RENDER_ALPHA_GROUP_LOOP("Alpha Group"); - LLFastTimer t(FTM_RENDER_ALPHA_GROUP_LOOP); - - bool draw_glow_for_this_partition = mVertexShaderLevel > 0; // no shaders = no glow. - - bool disable_cull = group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_PARTICLE || - group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_HUD_PARTICLE; - - LLGLDisable cull(disable_cull ? GL_CULL_FACE : 0); + bool draw_glow_for_this_partition = mVertexShaderLevel > 0 && // no shaders = no glow. + // All particle systems seem to come off the wire with texture entries which claim that they glow. This is probably a bug in the data. Suppress. + group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_PARTICLE && + group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD_PARTICLE; LLSpatialGroup::drawmap_elem_t& draw_info = group->mDrawMap[LLRenderPass::PASS_ALPHA]; @@ -353,11 +396,28 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) continue; } + // Fix for bug - NORSPEC-271 + // If the face is more than 90% transparent, then don't update the Depth buffer for Dof + // We don't want the nearly invisible objects to cause of DoF effects + if(pass == 1 && !LLPipeline::sImpostorRender) + { + LLFace* face = params.mFace; + if(face) + { + const LLTextureEntry* tep = face->getTextureEntry(); + if(tep) + { + if(tep->getColor().mV[3] < 0.1f) + continue; + } + } + } + LLRenderPass::applyModelMatrix(params); LLMaterial* mat = NULL; - if (deferred_render && !LLPipeline::sUnderWaterRender) + if (deferred_render) { mat = params.mMaterial; } @@ -401,6 +461,11 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) llassert(mask < LLMaterial::SHADER_COUNT); target_shader = &(gDeferredMaterialProgram[mask]); + if (LLPipeline::sUnderWaterRender) + { + target_shader = &(gDeferredMaterialWaterProgram[mask]); + } + if (current_shader != target_shader) { gPipeline.bindDeferredShader(*target_shader); @@ -510,8 +575,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) LLFastTimer t(FTM_RENDER_ALPHA_PUSH); gGL.blendFunc((LLRender::eBlendFactor) params.mBlendFuncSrc, (LLRender::eBlendFactor) params.mBlendFuncDst, mAlphaSFactor, mAlphaDFactor); params.mVertexBuffer->setBuffer(mask); - params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); - gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); + params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); + gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); } // If this alpha mesh has glow, then draw it a second time to add the destination-alpha (=glow). Interleaving these state-changing calls could be expensive, but glow must be drawn Z-sorted with alpha. @@ -531,6 +596,11 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) // do the actual drawing, again params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); + + // restore our alpha blend mode + gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor); + + current_shader->bind(); } if (tex_setup) diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h index 43122218ed..d064a3a324 100755 --- a/indra/newview/lldrawpoolalpha.h +++ b/indra/newview/lldrawpoolalpha.h @@ -63,7 +63,7 @@ public: /*virtual*/ void prerender(); void renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask, BOOL texture = TRUE); - void renderAlpha(U32 mask); + void renderAlpha(U32 mask, S32 pass); void renderAlphaHighlight(U32 mask); static BOOL sShowDebugAlpha; diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index f3f0b3cce2..5c4cb71e57 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -49,6 +49,7 @@ #include "llappviewer.h" #include "llrendersphere.h" #include "llviewerpartsim.h" +#include "llviewercontrol.h" // for gSavedSettings static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK; static U32 sBufferUsage = GL_STREAM_DRAW_ARB; @@ -688,12 +689,10 @@ void LLDrawPoolAvatar::beginDeferredImpostor() } sVertexProgram = &gDeferredImpostorProgram; - specular_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::SPECULAR_MAP); normal_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL); sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); - - sVertexProgram->bind(); + gPipeline.bindDeferredShader(*sVertexProgram); sVertexProgram->setMinimumAlpha(0.01f); } @@ -703,8 +702,9 @@ void LLDrawPoolAvatar::endDeferredImpostor() sVertexProgram->disableTexture(LLViewerShaderMgr::DEFERRED_NORMAL); sVertexProgram->disableTexture(LLViewerShaderMgr::SPECULAR_MAP); sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP); - sVertexProgram->unbind(); - gGL.getTexUnit(0)->activate(); + gPipeline.unbindDeferredShader(*sVertexProgram); + sVertexProgram = NULL; + sDiffuseChannel = 0; } void LLDrawPoolAvatar::beginDeferredRigid() diff --git a/indra/newview/lldrawpoolmaterials.cpp b/indra/newview/lldrawpoolmaterials.cpp index 08a36bddf1..d1b5080650 100644 --- a/indra/newview/lldrawpoolmaterials.cpp +++ b/indra/newview/lldrawpoolmaterials.cpp @@ -72,6 +72,12 @@ void LLDrawPoolMaterials::beginDeferredPass(S32 pass) }; mShader = &(gDeferredMaterialProgram[shader_idx[pass]]); + + if (LLPipeline::sUnderWaterRender) + { + mShader = &(gDeferredMaterialWaterProgram[shader_idx[pass]]); + } + mShader->bind(); diffuse_channel = mShader->enableTexture(LLShaderMgr::DIFFUSE_MAP); @@ -215,3 +221,4 @@ void LLDrawPoolMaterials::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, gGL.matrixMode(LLRender::MM_MODELVIEW); } } + diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index 2cf9d833c6..8926f64c64 100755 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp @@ -37,6 +37,7 @@ #include "llviewershadermgr.h" #include "llrender.h" +#define GE_FORCE_WORKAROUND LL_DARWIN static LLGLSLShader* simple_shader = NULL; static LLGLSLShader* fullbright_shader = NULL; @@ -111,7 +112,14 @@ void LLDrawPoolGlow::render(S32 pass) LLGLSLShader* shader = LLPipeline::sUnderWaterRender ? &gObjectEmissiveWaterProgram : &gObjectEmissiveProgram; shader->bind(); - shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.f); + if (LLPipeline::sRenderDeferred) + { + shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f); + } + else + { + shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.f); + } LLGLDepthTest depth(GL_TRUE, GL_FALSE); gGL.setColorMask(false, true); @@ -148,7 +156,11 @@ void LLDrawPoolSimple::beginRenderPass(S32 pass) { LLFastTimer t(FTM_RENDER_SIMPLE); - if (LLPipeline::sUnderWaterRender) + if (LLPipeline::sImpostorRender) + { + simple_shader = &gObjectSimpleImpostorProgram; + } + else if (LLPipeline::sUnderWaterRender) { simple_shader = &gObjectSimpleWaterProgram; } @@ -536,7 +548,15 @@ void LLDrawPoolFullbright::prerender() void LLDrawPoolFullbright::beginPostDeferredPass(S32 pass) { - gDeferredFullbrightProgram.bind(); + if (LLPipeline::sUnderWaterRender) + { + gDeferredFullbrightWaterProgram.bind(); + } + else + { + gDeferredFullbrightProgram.bind(); + } + } void LLDrawPoolFullbright::renderPostDeferred(S32 pass) @@ -550,7 +570,14 @@ void LLDrawPoolFullbright::renderPostDeferred(S32 pass) void LLDrawPoolFullbright::endPostDeferredPass(S32 pass) { - gDeferredFullbrightProgram.unbind(); + if (LLPipeline::sUnderWaterRender) + { + gDeferredFullbrightWaterProgram.unbind(); + } + else + { + gDeferredFullbrightProgram.unbind(); + } LLRenderPass::endRenderPass(pass); } @@ -625,15 +652,35 @@ S32 LLDrawPoolFullbright::getNumPasses() void LLDrawPoolFullbrightAlphaMask::beginPostDeferredPass(S32 pass) { - gObjectFullbrightAlphaMaskProgram.bind(); + if (LLPipeline::sRenderingHUDs || !LLPipeline::sRenderDeferred) { + gObjectFullbrightAlphaMaskProgram.bind(); gObjectFullbrightAlphaMaskProgram.uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0f); } else - { + { + +// Work-around until we can figure out why the right shader causes +// the GeForce driver to go tango uniform on OS X 10.6.8 only +// +#if GE_FORCE_WORKAROUND + gObjectFullbrightAlphaMaskProgram.bind(); gObjectFullbrightAlphaMaskProgram.uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f); +#else + if (LLPipeline::sUnderWaterRender) + { + gDeferredFullbrightAlphaMaskWaterProgram.bind(); + gDeferredFullbrightAlphaMaskWaterProgram.uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f); + } + else + { + gDeferredFullbrightAlphaMaskProgram.bind(); + gDeferredFullbrightAlphaMaskProgram.uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f); + } +#endif } + } void LLDrawPoolFullbrightAlphaMask::renderPostDeferred(S32 pass) @@ -646,7 +693,30 @@ void LLDrawPoolFullbrightAlphaMask::renderPostDeferred(S32 pass) void LLDrawPoolFullbrightAlphaMask::endPostDeferredPass(S32 pass) { - gObjectFullbrightAlphaMaskProgram.unbind(); + if (LLPipeline::sRenderingHUDs || !LLPipeline::sRenderDeferred) + { + gObjectFullbrightAlphaMaskProgram.unbind(); + } + else + { + +// Work-around until we can figure out why the right shader causes +// the GeForce driver to go tango uniform on OS X 10.6.8 only +// +#if GE_FORCE_WORKAROUND + gObjectFullbrightAlphaMaskProgram.unbind(); +#else + if (LLPipeline::sUnderWaterRender) + { + gDeferredFullbrightAlphaMaskWaterProgram.unbind(); + } + else + { + gDeferredFullbrightAlphaMaskProgram.unbind(); + } +#endif + + } LLRenderPass::endRenderPass(pass); } diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 7f7d9f65c6..ef8bdc3304 100755 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -155,3 +155,4 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) void LLDrawPoolSky::endRenderPass( S32 pass ) { } + diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 0d79631182..32a9365aba 100755 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -522,14 +522,21 @@ void LLDrawPoolWater::shade() F32 eyedepth = LLViewerCamera::getInstance()->getOrigin().mV[2] - gAgent.getRegion()->getWaterHeight(); + if (eyedepth < 0.f && LLPipeline::sWaterReflections) + { if (deferred_render) { - shader = &gDeferredWaterProgram; + shader = &gDeferredUnderWaterProgram; } - else if (eyedepth < 0.f && LLPipeline::sWaterReflections) + else { shader = &gUnderWaterProgram; } + } + else if (deferred_render) + { + shader = &gDeferredWaterProgram; + } else { shader = &gWaterProgram; @@ -597,9 +604,15 @@ void LLDrawPoolWater::shade() shader->uniform4fv(LLShaderMgr::WATER_FOGCOLOR, 1, sWaterFogColor.mV); } + F32 screenRes[] = + { + 1.f/gGLViewport[2], + 1.f/gGLViewport[3] + }; + shader->uniform2fv(LLShaderMgr::DEFERRED_SCREEN_RES, 1, screenRes); stop_glerror(); - S32 diffTex = shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); + S32 diffTex = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP); stop_glerror(); light_dir.normVec(); diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 4944de6030..197d1fa854 100755 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1984,7 +1984,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, LLMatrix4a mat_vert; mat_vert.loadu(mat_vert_in); - + F32* dst = (F32*) vert.get(); F32* end_f32 = dst+mGeomCount*4; @@ -1995,7 +1995,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, LLVector4a res0; //,res1,res2,res3; - + LLVector4a texIdx; S32 index = mTextureIndex < 255 ? mTextureIndex : 0; @@ -2046,14 +2046,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, }*/ while (src < end) - { + { mat_vert.affineTransform(*src++, res0); tmp.setSelectWithMask(mask, texIdx, res0); tmp.store4a((F32*) dst); dst += 4; } } - + { //LLFastTimer t(FTM_FACE_POSITION_PAD); while (dst < end_f32) @@ -2079,7 +2079,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, LLVector4a* end = src+num_vertices; while (src < end) - { + { LLVector4a normal; mat_normal.rotate(*src++, normal); normal.store4a(normals); diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 0687544d53..fe16920aa4 100755 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -195,7 +195,7 @@ public: void setSize(S32 numVertices, S32 num_indices = 0, bool align = false); BOOL genVolumeBBoxes(const LLVolume &volume, S32 f, - const LLMatrix4& mat, const LLMatrix3& inv_trans_mat, BOOL global_volume = FALSE); + const LLMatrix4& mat_vert_in, const LLMatrix3& mat_normal_in, BOOL global_volume = FALSE); void init(LLDrawable* drawablep, LLViewerObject* objp); void destroy(); diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 6158a778d3..c47618e1ec 100755 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -392,7 +392,7 @@ bool LLFeatureManager::parseFeatureTable(std::string filename) } else { - if (!flp) + if (flp) { S32 available; F32 recommended; diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 742a615902..3fec81b627 100755 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -873,6 +873,8 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename) success = false; } + send_agent_resume(); + // Account for the fact that the app has been stalled. LLFrameTimer::updateFrameTime(); return success; diff --git a/indra/newview/llfilepicker_mac.mm b/indra/newview/llfilepicker_mac.mm index 2a84226e0a..13757904e3 100644 --- a/indra/newview/llfilepicker_mac.mm +++ b/indra/newview/llfilepicker_mac.mm @@ -117,6 +117,7 @@ std::string* doSaveDialog(const std::string* file, std::string *outfile = NULL; NSURL* url = [NSURL fileURLWithPath:fileName]; + [panel setNameFieldStringValue: fileName]; [panel setDirectoryURL: url]; if([panel runModal] == NSFileHandlingPanelOKButton) diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 3ef0cc63b1..f26cb477ee 100755 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1615,7 +1615,7 @@ LLConversationItem* LLFloaterIMContainer::addConversationListItem(const LLUUID& // Create the participants widgets now // Note: usually, we do not get an updated avatar list at that point - if (uuid.isNull() || im_sessionp && !im_sessionp->isP2PSessionType()) + if (uuid.isNull() || (im_sessionp && !im_sessionp->isP2PSessionType())) { LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = item->getChildrenBegin(); LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = item->getChildrenEnd(); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 22f42875fb..abe094d748 100755 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -2544,7 +2544,11 @@ void LLPanelLandAccess::refresh_ui() getChildView("HoursSpin")->setEnabled(FALSE); getChildView("AccessList")->setEnabled(FALSE); getChildView("BannedList")->setEnabled(FALSE); - + getChildView("add_allowed")->setEnabled(FALSE); + getChildView("remove_allowed")->setEnabled(FALSE); + getChildView("add_banned")->setEnabled(FALSE); + getChildView("remove_banned")->setEnabled(FALSE); + LLParcel *parcel = mParcel->getParcel(); if (parcel) { diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 14923eec3c..7b25291da7 100755 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -1328,7 +1328,7 @@ void LLFloaterTools::getMediaState() getChildView("media_tex")->setEnabled(bool_has_media && editable); getChildView("edit_media")->setEnabled(bool_has_media && LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo && editable ); getChildView("delete_media")->setEnabled(bool_has_media && editable ); - getChildView("add_media")->setEnabled(( ! bool_has_media ) && editable ); + getChildView("add_media")->setEnabled(editable); // TODO: display a list of all media on the face - use 'identical' flag } else // not all face has media but at least one does. @@ -1358,7 +1358,7 @@ void LLFloaterTools::getMediaState() getChildView("media_tex")->setEnabled(TRUE); getChildView("edit_media")->setEnabled(LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo); getChildView("delete_media")->setEnabled(TRUE); - getChildView("add_media")->setEnabled(FALSE ); + getChildView("add_media")->setEnabled(editable); } media_info->setText(media_title); diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp index ad9958546c..14d3d4e7a8 100644 --- a/indra/newview/llmaterialmgr.cpp +++ b/indra/newview/llmaterialmgr.cpp @@ -52,10 +52,12 @@ #define MATERIALS_CAP_MATERIAL_ID_FIELD "MaterialID" #define SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION "MaxMaterialsPerTransaction" -#define MATERIALS_DEFAULT_MAX_ENTRIES 50 +#define MATERIALS_GET_MAX_ENTRIES 50 #define MATERIALS_GET_TIMEOUT (60.f * 20) +#define MATERIALS_POST_MAX_ENTRIES 50 #define MATERIALS_POST_TIMEOUT (60.f * 5) #define MATERIALS_PUT_THROTTLE_SECS 1.f +#define MATERIALS_PUT_MAX_ENTRIES 50 /** * LLMaterialsResponder helper class @@ -543,11 +545,9 @@ void LLMaterialMgr::onIdle(void*) instancep->processGetAllQueue(); } - static LLFrameTimer mPutTimer; - if ( (!instancep->mPutQueue.empty()) && (mPutTimer.hasExpired()) ) + if (!instancep->mPutQueue.empty()) { instancep->processPutQueue(); - mPutTimer.resetWithExpiry(MATERIALS_PUT_THROTTLE_SECS); } } @@ -564,14 +564,14 @@ void LLMaterialMgr::processGetQueue() continue; } - const LLViewerRegion* regionp = LLWorld::instance().getRegionFromID(region_id); + LLViewerRegion* regionp = LLWorld::instance().getRegionFromID(region_id); if (!regionp) { LL_WARNS("Materials") << "Unknown region with id " << region_id.asString() << LL_ENDL; mGetQueue.erase(itRegionQueue); continue; } - else if (!regionp->capabilitiesReceived()) + else if (!regionp->capabilitiesReceived() || regionp->materialsCapThrottled()) { continue; } @@ -594,8 +594,8 @@ void LLMaterialMgr::processGetQueue() LLSD materialsData = LLSD::emptyArray(); material_queue_t& materials = itRegionQueue->second; - U32 max_entries = getMaxEntries(regionp); - material_queue_t::iterator loopMaterial = materials.begin(); + U32 max_entries = regionp->getMaxMaterialsPerTransaction(); + material_queue_t::iterator loopMaterial = materials.begin(); while ( (materials.end() != loopMaterial) && (materialsData.size() < max_entries) ) { material_queue_t::iterator itMaterial = loopMaterial++; @@ -628,6 +628,7 @@ void LLMaterialMgr::processGetQueue() LL_DEBUGS("Materials") << "POSTing to region '" << regionp->getName() << "' at '"<< capURL << " for " << materialsData.size() << " materials." << "\ndata: " << ll_pretty_print_sd(materialsData) << LL_ENDL; LLHTTPClient::post(capURL, postData, materialsResponder); + regionp->resetMaterialsCapThrottle(); } } @@ -646,7 +647,7 @@ void LLMaterialMgr::processGetAllQueue() clearGetQueues(region_id); // Invalidates region_id continue; } - else if (!regionp->capabilitiesReceived()) + else if (!regionp->capabilitiesReceived() || regionp->materialsCapThrottled()) { continue; } @@ -663,6 +664,7 @@ void LLMaterialMgr::processGetAllQueue() LL_DEBUGS("Materials") << "GET all for region " << region_id << "url " << capURL << LL_ENDL; LLHTTPClient::ResponderPtr materialsResponder = new LLMaterialsResponder("GET", capURL, boost::bind(&LLMaterialMgr::onGetAllResponse, this, _1, _2, *itRegion)); LLHTTPClient::get(capURL, materialsResponder); + regionp->resetMaterialsCapThrottle(); mGetAllPending.insert(std::pair<LLUUID, F64>(region_id, LLFrameTimer::getTotalSeconds())); mGetAllQueue.erase(itRegion); // Invalidates region_id } @@ -670,7 +672,7 @@ void LLMaterialMgr::processGetAllQueue() void LLMaterialMgr::processPutQueue() { - typedef std::map<const LLViewerRegion*, LLSD> regionput_request_map; + typedef std::map<LLViewerRegion*, LLSD> regionput_request_map; regionput_request_map requests; put_queue_t::iterator loopQueue = mPutQueue.begin(); @@ -687,46 +689,47 @@ void LLMaterialMgr::processPutQueue() } else { - const LLViewerRegion* regionp = objectp->getRegion(); + LLViewerRegion* regionp = objectp->getRegion(); if ( !regionp ) - { + { LL_WARNS("Materials") << "Object region is NULL" << LL_ENDL; mPutQueue.erase(itQueue); - } - else if ( regionp->capabilitiesReceived()) + } + else if ( regionp->capabilitiesReceived() && !regionp->materialsCapThrottled()) { - LLSD& facesData = requests[regionp]; + LLSD& facesData = requests[regionp]; - facematerial_map_t& face_map = itQueue->second; - U32 max_entries = getMaxEntries(regionp); - facematerial_map_t::iterator itFace = face_map.begin(); + facematerial_map_t& face_map = itQueue->second; + U32 max_entries = regionp->getMaxMaterialsPerTransaction(); + facematerial_map_t::iterator itFace = face_map.begin(); while ( (face_map.end() != itFace) && (facesData.size() < max_entries) ) - { - LLSD faceData = LLSD::emptyMap(); - faceData[MATERIALS_CAP_FACE_FIELD] = static_cast<LLSD::Integer>(itFace->first); - faceData[MATERIALS_CAP_OBJECT_ID_FIELD] = static_cast<LLSD::Integer>(objectp->getLocalID()); - if (!itFace->second.isNull()) - { - faceData[MATERIALS_CAP_MATERIAL_FIELD] = itFace->second.asLLSD(); - } - facesData.append(faceData); - face_map.erase(itFace++); - } - if (face_map.empty()) - { - mPutQueue.erase(itQueue); - } + { + LLSD faceData = LLSD::emptyMap(); + faceData[MATERIALS_CAP_FACE_FIELD] = static_cast<LLSD::Integer>(itFace->first); + faceData[MATERIALS_CAP_OBJECT_ID_FIELD] = static_cast<LLSD::Integer>(objectp->getLocalID()); + if (!itFace->second.isNull()) + { + faceData[MATERIALS_CAP_MATERIAL_FIELD] = itFace->second.asLLSD(); } + facesData.append(faceData); + face_map.erase(itFace++); + } + if (face_map.empty()) + { + mPutQueue.erase(itQueue); + } + } } } for (regionput_request_map::const_iterator itRequest = requests.begin(); itRequest != requests.end(); ++itRequest) { - std::string capURL = itRequest->first->getCapability(MATERIALS_CAPABILITY_NAME); + LLViewerRegion* regionp = itRequest->first; + std::string capURL = regionp->getCapability(MATERIALS_CAPABILITY_NAME); if (capURL.empty()) { LL_WARNS("Materials") << "Capability '" << MATERIALS_CAPABILITY_NAME - << "' is not defined on region '" << itRequest->first->getName() << "'" << LL_ENDL; + << "' is not defined on region '" << regionp->getName() << "'" << LL_ENDL; continue; } @@ -749,6 +752,7 @@ void LLMaterialMgr::processPutQueue() LL_DEBUGS("Materials") << "put for " << itRequest->second.size() << " faces to region " << itRequest->first->getName() << LL_ENDL; LLHTTPClient::ResponderPtr materialsResponder = new LLMaterialsResponder("PUT", capURL, boost::bind(&LLMaterialMgr::onPutResponse, this, _1, _2)); LLHTTPClient::put(capURL, putData, materialsResponder); + regionp->resetMaterialsCapThrottle(); } else { @@ -783,20 +787,3 @@ void LLMaterialMgr::onRegionRemoved(LLViewerRegion* regionp) // Put doesn't need clearing: objects that can't be found will clean up in processPutQueue() } -U32 LLMaterialMgr::getMaxEntries(const LLViewerRegion* regionp) -{ - LLSD sim_features; - regionp->getSimulatorFeatures(sim_features); - U32 max_entries; - if ( sim_features.has( SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION ) - && sim_features[ SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION ].isInteger()) - { - max_entries = sim_features[ SIM_FEATURE_MAX_MATERIALS_PER_TRANSACTION ].asInteger(); - } - else - { - max_entries = MATERIALS_DEFAULT_MAX_ENTRIES; - } - return max_entries; -} - diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h index 834ad9e14c..b684881225 100755 --- a/indra/newview/llpanelface.h +++ b/indra/newview/llpanelface.h @@ -255,7 +255,26 @@ private: // Determine correct alpha mode for current diffuse texture // (i.e. does it have an alpha channel that makes alpha mode useful) // - U8 default_alpha_mode = (_panel->isAlpha() ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : LLMaterial::DIFFUSE_ALPHA_MODE_NONE); + // _panel->isAlpha() "lies" when one face has alpha and the rest do not (NORSPEC-329) + // need to get per-face answer to this question for sane alpha mode retention on updates. + // + bool is_alpha_face = object->isImageAlphaBlended(face); + + // need to keep this original answer for valid comparisons in logic below + // + U8 original_default_alpha_mode = is_alpha_face ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : LLMaterial::DIFFUSE_ALPHA_MODE_NONE; + + U8 default_alpha_mode = original_default_alpha_mode; + + if (!current_material.isNull()) + { + default_alpha_mode = current_material->getDiffuseAlphaMode(); + } + + // Insure we don't inherit the default of blend by accident... + // this will be stomped by a legit request to change the alpha mode by the apply() below + // + new_material->setDiffuseAlphaMode(default_alpha_mode); // Do "It"! // @@ -265,7 +284,13 @@ private: LLUUID new_normal_map_id = new_material->getNormalID(); LLUUID new_spec_map_id = new_material->getSpecularID(); - bool is_default_blend_mode = (new_alpha_mode == default_alpha_mode); + if ((new_alpha_mode == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND) && !is_alpha_face) + { + new_alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_NONE; + new_material->setDiffuseAlphaMode(LLMaterial::DIFFUSE_ALPHA_MODE_NONE); + } + + bool is_default_blend_mode = (new_alpha_mode == original_default_alpha_mode); bool is_need_material = !is_default_blend_mode || !new_normal_map_id.isNull() || !new_spec_map_id.isNull(); if (!is_need_material) diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index 02d363d795..a1d60b5b16 100755 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -710,9 +710,19 @@ void LLPanelVolume::onLightCancelColor(const LLSD& data) void LLPanelVolume::onLightCancelTexture(const LLSD& data) { LLTextureCtrl* LightTextureCtrl = getChild<LLTextureCtrl>("light texture control"); + if (LightTextureCtrl) { - LightTextureCtrl->setImageAssetID(mLightSavedTexture); + LightTextureCtrl->setImageAssetID(LLUUID::null); + } + + LLVOVolume *volobjp = (LLVOVolume *) mObject.get(); + if(volobjp) + { + // Cancel the light texture as requested + // NORSPEC-292 + // + volobjp->setLightTextureID(LLUUID::null); } } diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 4676f7b251..4300cafb6b 100755 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -133,6 +133,7 @@ public: PermissionMask getFilterPermMask(); void updateFilterPermMask(); void commitIfImmediateSet(); + void commitCancel(); void onFilterEdit(const std::string& search_string ); @@ -706,6 +707,14 @@ void LLFloaterTexturePicker::commitIfImmediateSet() } } +void LLFloaterTexturePicker::commitCancel() +{ + if (!mNoCopyTextureSelected && mOwner && mCanApply) + { + mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CANCEL); + } +} + // static void LLFloaterTexturePicker::onBtnSetToDefault(void* userdata) { @@ -733,7 +742,7 @@ void LLFloaterTexturePicker::onBtnNone(void* userdata) { LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; self->setImageID( LLUUID::null ); - self->commitIfImmediateSet(); + self->commitCancel(); } /* diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index aae84709d8..bbebeea3e0 100755 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -225,13 +225,13 @@ void display_stats() } static LLFastTimer::DeclareTimer FTM_PICK("Picking"); -static LLFastTimer::DeclareTimer FTM_RENDER("Render"); +static LLFastTimer::DeclareTimer FTM_RENDER("Render", true); static LLFastTimer::DeclareTimer FTM_UPDATE_SKY("Update Sky"); static LLFastTimer::DeclareTimer FTM_UPDATE_TEXTURES("Update Textures"); static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE("Update Images"); static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_CLASS("Class"); static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_BUMP("Image Update Bump"); -static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_LIST("List", true); +static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_LIST("List"); static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_DELETE("Delete"); static LLFastTimer::DeclareTimer FTM_RESIZE_WINDOW("Resize Window"); static LLFastTimer::DeclareTimer FTM_HUD_UPDATE("HUD Update"); @@ -675,7 +675,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD; LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE; gPipeline.updateCull(*LLViewerCamera::getInstance(), result, water_clip); - LLPipeline::sUnderWaterRender = FALSE; stop_glerror(); LLGLState::checkStates(); @@ -891,7 +890,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) { gGL.setColorMask(true, true); - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred) { gPipeline.mDeferredScreen.bindTarget(); glClearColor(1,0,1,1); @@ -940,7 +939,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) gGL.setColorMask(true, false); - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred) { gPipeline.renderGeomDeferred(*LLViewerCamera::getInstance()); } @@ -977,7 +976,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (to_texture) { - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred) { gPipeline.mDeferredScreen.flush(); if(LLRenderTarget::sUseFBO) @@ -1003,7 +1002,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } } - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred) { gPipeline.renderDeferredLighting(); } @@ -1624,3 +1623,4 @@ void display_cleanup() { gDisconnectedImagep = NULL; } + diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index 47a8a04b63..2fbb3bf868 100755 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -534,6 +534,11 @@ void stop_moving( EKeystate s ) void start_chat( EKeystate s ) { + if (LLAppViewer::instance()->quitRequested()) + { + return; // can't talk, gotta go, kthxbye! + } + // start chat LLFloaterIMNearbyChat::startChat(NULL); } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index c6c1090f45..9468a2d542 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2930,7 +2930,7 @@ bool enable_object_unmute() // 0 = normal, 1 = always, 2 = never -class LLAvatarCheckImposterMode : public view_listener_t +class LLAvatarCheckImpostorMode : public view_listener_t { bool handleEvent(const LLSD& userdata) { @@ -2956,7 +2956,7 @@ class LLAvatarCheckImposterMode : public view_listener_t }; // 0 = normal, 1 = always, 2 = never -class LLAvatarSetImposterMode : public view_listener_t +class LLAvatarSetImpostorMode : public view_listener_t { bool handleEvent(const LLSD& userdata) { @@ -2971,16 +2971,20 @@ class LLAvatarSetImposterMode : public view_listener_t { case 0: avatar->setVisualMuteSettings(LLVOAvatar::VISUAL_MUTE_NOT_SET); - return true; + break; case 1: avatar->setVisualMuteSettings(LLVOAvatar::ALWAYS_VISUAL_MUTE); - return true; + break; case 2: avatar->setVisualMuteSettings(LLVOAvatar::NEVER_VISUAL_MUTE); - return true; + break; default: return false; } + + avatar->forceUpdateVisualMuteSettings(); + LLVOAvatar::cullAvatarsByPixelArea(); + return true; } // handleEvent() }; @@ -8736,8 +8740,8 @@ void initialize_menus() view_listener_t::addMenu( new LLCheckPanelPeopleTab(), "SideTray.CheckPanelPeopleTab"); // Avatar pie menu - view_listener_t::addMenu(new LLAvatarCheckImposterMode(), "Avatar.CheckImposterMode"); - view_listener_t::addMenu(new LLAvatarSetImposterMode(), "Avatar.SetImposterMode"); + view_listener_t::addMenu(new LLAvatarCheckImpostorMode(), "Avatar.CheckImpostorMode"); + view_listener_t::addMenu(new LLAvatarSetImpostorMode(), "Avatar.SetImpostorMode"); view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute"); view_listener_t::addMenu(new LLAvatarAddFriend(), "Avatar.AddFriend"); view_listener_t::addMenu(new LLAvatarAddContact(), "Avatar.AddContact"); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index e92cc39ba7..7151a0d6ed 100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1724,7 +1724,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, // keep local flags and overwrite remote-controlled flags mFlags = (mFlags & FLAGS_LOCAL) | flags; - // ...new objects that should come in selected need to be added to the selected list + // ...new objects that should come in selected need to be added to the selected list mCreateSelected = ((flags & FLAGS_CREATE_SELECTED) != 0); } break; @@ -4412,12 +4412,10 @@ S32 LLViewerObject::setTEMaterialParams(const U8 te, const LLMaterialPtr pMateri void LLViewerObject::refreshMaterials() { - setChanged(ALL_CHANGED); + setChanged(TEXTURE); if (mDrawable.notNull()) { gPipeline.markTextured(mDrawable); - gPipeline.markRebuild(mDrawable,LLDrawable::REBUILD_ALL); - dirtySpatialGroup(TRUE); } } @@ -4521,6 +4519,30 @@ LLViewerTexture *LLViewerObject::getTEImage(const U8 face) const } +bool LLViewerObject::isImageAlphaBlended(const U8 te) const +{ + LLViewerTexture* image = getTEImage(te); + LLGLenum format = image ? image->getPrimaryFormat() : GL_RGB; + switch (format) + { + case GL_RGBA: + case GL_ALPHA: + { + return true; + } + break; + + case GL_RGB: break; + default: + { + llwarns << "Unexpected tex format in LLViewerObject::isImageAlphaBlended...returning no alpha." << llendl; + } + break; + } + + return false; +} + LLViewerTexture *LLViewerObject::getTENormalMap(const U8 face) const { // llassert(mTEImages); diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 05bc7f68a2..b035473c74 100755 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -112,6 +112,14 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate protected: ~LLViewerObject(); // use unref() + // TomY: Provide for a list of extra parameter structures, mapped by structure name + struct ExtraParameter + { + BOOL in_use; + LLNetworkData *data; + }; + std::map<U16, ExtraParameter*> mExtraParameterList; + public: typedef std::list<LLPointer<LLViewerObject> > child_list_t; typedef std::list<LLPointer<LLViewerObject> > vobj_list_t; @@ -331,6 +339,8 @@ public: LLViewerTexture *getTENormalMap(const U8 te) const; LLViewerTexture *getTESpecularMap(const U8 te) const; + bool isImageAlphaBlended(const U8 te) const; + void fitFaceTexture(const U8 face); void sendTEUpdate() const; // Sends packed representation of all texture entry information @@ -553,8 +563,6 @@ public: std::vector<LLVector3> mUnselectedChildrenPositions ; private: - // TomY: Provide for a list of extra parameter structures, mapped by structure name - struct ExtraParameter; ExtraParameter* createNewParameterEntry(U16 param_type); ExtraParameter* getExtraParameterEntry(U16 param_type) const; ExtraParameter* getExtraParameterEntryCreate(U16 param_type); @@ -794,14 +802,6 @@ private: LLUUID mAttachmentItemID; // ItemID of the associated object is in user inventory. EObjectUpdateType mLastUpdateType; BOOL mLastUpdateCached; - - // TomY: Provide for a list of extra parameter structures, mapped by structure name - struct ExtraParameter - { - BOOL in_use; - LLNetworkData *data; - }; - std::map<U16, ExtraParameter*> mExtraParameterList; }; /////////////////// @@ -847,7 +847,7 @@ public: LLStrider<LLVector4a>& verticesp, LLStrider<LLVector3>& normalsp, LLStrider<LLVector2>& texcoordsp, - LLStrider<LLColor4U>& colorsp, + LLStrider<LLColor4U>& colorsp, LLStrider<LLColor4U>& emissivep, LLStrider<U16>& indicesp) = 0; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 04ec98d514..a19b4bffac 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -44,7 +44,6 @@ #include "llagent.h" #include "llagentcamera.h" -#include "llavatarrenderinfoaccountant.h" #include "llcallingcard.h" #include "llcaphttpsender.h" #include "llcapabilitylistener.h" @@ -302,16 +301,12 @@ public: if ( regionp->getRegionImpl()->mCapabilities.size() != regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() ) { - llinfos << "BaseCapabilitiesCompleteTracker " << "sim " << regionp->getName() - << " sent duplicate seed caps that differs in size - most likely content. " - << (S32) regionp->getRegionImpl()->mCapabilities.size() << " vs " << regionp->getRegionImpl()->mSecondCapabilitiesTracker.size() - << llendl; + llinfos<<"BaseCapabilitiesCompleteTracker "<<"Sim sent duplicate seed caps that differs in size - most likely content."<<llendl; //todo#add cap debug versus original check? - /* - CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin(); + /*CapabilityMap::const_iterator iter = regionp->getRegionImpl()->mCapabilities.begin(); while (iter!=regionp->getRegionImpl()->mCapabilities.end() ) { - llinfos << "BaseCapabilitiesCompleteTracker Original " << iter->first << " is " << iter->second << llendl; + llinfos<<"BaseCapabilitiesCompleteTracker Original "<<iter->first<<" "<< iter->second<<llendl; ++iter; } */ @@ -399,9 +394,6 @@ LLViewerRegion::LLViewerRegion(const U64 &handle, mImpl->mObjectPartition.push_back(new LLBridgePartition()); //PARTITION_BRIDGE mImpl->mObjectPartition.push_back(new LLHUDParticlePartition());//PARTITION_HUD_PARTICLE mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE - - mRenderInfoRequestTimer.resetWithExpiry(0.f); // Set timer to be expired - setCapabilitiesReceivedCallback(boost::bind(&LLAvatarRenderInfoAccountant::expireRenderInfoReportTimer)); } @@ -1586,7 +1578,6 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) capabilityNames.append("AgentState"); capabilityNames.append("AttachmentResources"); capabilityNames.append("AvatarPickerSearch"); - capabilityNames.append("AvatarRenderInfo"); capabilityNames.append("CharacterProperties"); capabilityNames.append("ChatSessionRequest"); capabilityNames.append("CopyInventoryFromNotecard"); @@ -1954,3 +1945,47 @@ bool LLViewerRegion::dynamicPathfindingEnabled() const mSimulatorFeatures["DynamicPathfindingEnabled"].asBoolean()); } +void LLViewerRegion::resetMaterialsCapThrottle() +{ + F32 requests_per_sec = 1.0f; // original default; + if ( mSimulatorFeatures.has("RenderMaterialsCapability") + && mSimulatorFeatures["RenderMaterialsCapability"].isReal() ) + { + requests_per_sec = mSimulatorFeatures["RenderMaterialsCapability"].asReal(); + if ( requests_per_sec == 0.0f ) + { + requests_per_sec = 1.0f; + LL_WARNS("Materials") + << "region '" << getName() + << "' returned zero for RenderMaterialsCapability; using default " + << requests_per_sec << " per second" + << LL_ENDL; + } + LL_DEBUGS("Materials") << "region '" << getName() + << "' RenderMaterialsCapability " << requests_per_sec + << LL_ENDL; + } + else + { + LL_DEBUGS("Materials") + << "region '" << getName() + << "' did not return RenderMaterialsCapability, using default " + << requests_per_sec << " per second" + << LL_ENDL; + } + + mMaterialsCapThrottleTimer.resetWithExpiry( 1.0f / requests_per_sec ); +} + +U32 LLViewerRegion::getMaxMaterialsPerTransaction() const +{ + U32 max_entries = 50; // original hard coded default + if ( mSimulatorFeatures.has( "MaxMaterialsPerTransaction" ) + && mSimulatorFeatures[ "MaxMaterialsPerTransaction" ].isInteger()) + { + max_entries = mSimulatorFeatures[ "MaxMaterialsPerTransaction" ].asInteger(); + } + return max_entries; +} + + diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index e2cc95f232..8f8bfa23c1 100755 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -43,6 +43,7 @@ #include "llcapabilityprovider.h" #include "m4math.h" // LLMatrix4 #include "llhttpclient.h" +#include "llframetimer.h" // Surface id's #define LAND 1 @@ -343,6 +344,11 @@ public: const LLViewerRegionImpl * getRegionImpl() const { return mImpl; } LLViewerRegionImpl * getRegionImplNC() { return mImpl; } + // implements the materials capability throttle + bool materialsCapThrottled() const { return !mMaterialsCapThrottleTimer.hasExpired(); } + void resetMaterialsCapThrottle(); + + U32 getMaxMaterialsPerTransaction() const; public: struct CompareDistance { @@ -437,7 +443,9 @@ private: LLSD mSimulatorFeatures; - LLFrameTimer mRenderInfoRequestTimer; + // the materials capability throttle + LLFrameTimer mMaterialsCapThrottleTimer; +LLFrameTimer mRenderInfoRequestTimer; }; inline BOOL LLViewerRegion::getRegionProtocol(U64 protocol) const diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index dfe4147d94..0e099b8299 100755 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -90,6 +90,7 @@ LLGLSLShader gAlphaMaskProgram; //object shaders LLGLSLShader gObjectSimpleProgram; +LLGLSLShader gObjectSimpleImpostorProgram; LLGLSLShader gObjectPreviewProgram; LLGLSLShader gObjectSimpleWaterProgram; LLGLSLShader gObjectSimpleAlphaMaskProgram; @@ -175,6 +176,7 @@ LLGLSLShader gPostNightVisionProgram; // Deferred rendering shaders LLGLSLShader gDeferredImpostorProgram; LLGLSLShader gDeferredWaterProgram; +LLGLSLShader gDeferredUnderWaterProgram; LLGLSLShader gDeferredDiffuseProgram; LLGLSLShader gDeferredDiffuseAlphaMaskProgram; LLGLSLShader gDeferredNonIndexedDiffuseProgram; @@ -196,14 +198,20 @@ LLGLSLShader gDeferredMultiSpotLightProgram; LLGLSLShader gDeferredSunProgram; LLGLSLShader gDeferredBlurLightProgram; LLGLSLShader gDeferredSoftenProgram; +LLGLSLShader gDeferredSoftenWaterProgram; LLGLSLShader gDeferredShadowProgram; LLGLSLShader gDeferredShadowCubeProgram; LLGLSLShader gDeferredShadowAlphaMaskProgram; LLGLSLShader gDeferredAvatarShadowProgram; LLGLSLShader gDeferredAttachmentShadowProgram; LLGLSLShader gDeferredAlphaProgram; +LLGLSLShader gDeferredAlphaImpostorProgram; +LLGLSLShader gDeferredAlphaWaterProgram; LLGLSLShader gDeferredAvatarEyesProgram; LLGLSLShader gDeferredFullbrightProgram; +LLGLSLShader gDeferredFullbrightAlphaMaskProgram; +LLGLSLShader gDeferredFullbrightWaterProgram; +LLGLSLShader gDeferredFullbrightAlphaMaskWaterProgram; LLGLSLShader gDeferredEmissiveProgram; LLGLSLShader gDeferredPostProgram; LLGLSLShader gDeferredCoFProgram; @@ -221,6 +229,7 @@ LLGLSLShader gNormalMapGenProgram; // Deferred materials shaders LLGLSLShader gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2]; +LLGLSLShader gDeferredMaterialWaterProgram[LLMaterial::SHADER_COUNT*2]; LLViewerShaderMgr::LLViewerShaderMgr() : mVertexShaderLevel(SHADER_COUNT, 0), @@ -236,6 +245,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gWaterProgram); mShaderList.push_back(&gAvatarEyeballProgram); mShaderList.push_back(&gObjectSimpleProgram); + mShaderList.push_back(&gObjectSimpleImpostorProgram); mShaderList.push_back(&gObjectPreviewProgram); mShaderList.push_back(&gImpostorProgram); mShaderList.push_back(&gObjectFullbrightNoColorProgram); @@ -286,6 +296,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gUnderWaterProgram); mShaderList.push_back(&gDeferredSunProgram); mShaderList.push_back(&gDeferredSoftenProgram); + mShaderList.push_back(&gDeferredSoftenWaterProgram); mShaderList.push_back(&gDeferredMaterialProgram[1]); mShaderList.push_back(&gDeferredMaterialProgram[5]); mShaderList.push_back(&gDeferredMaterialProgram[9]); @@ -294,15 +305,30 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gDeferredMaterialProgram[5+LLMaterial::SHADER_COUNT]); mShaderList.push_back(&gDeferredMaterialProgram[9+LLMaterial::SHADER_COUNT]); mShaderList.push_back(&gDeferredMaterialProgram[13+LLMaterial::SHADER_COUNT]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[1]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[5]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[9]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[13]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[1+LLMaterial::SHADER_COUNT]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[5+LLMaterial::SHADER_COUNT]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[9+LLMaterial::SHADER_COUNT]); + mShaderList.push_back(&gDeferredMaterialWaterProgram[13+LLMaterial::SHADER_COUNT]); mShaderList.push_back(&gDeferredAlphaProgram); + mShaderList.push_back(&gDeferredAlphaProgram); + mShaderList.push_back(&gDeferredAlphaImpostorProgram); + mShaderList.push_back(&gDeferredAlphaWaterProgram); mShaderList.push_back(&gDeferredSkinnedAlphaProgram); mShaderList.push_back(&gDeferredFullbrightProgram); + mShaderList.push_back(&gDeferredFullbrightAlphaMaskProgram); + mShaderList.push_back(&gDeferredFullbrightWaterProgram); + mShaderList.push_back(&gDeferredFullbrightAlphaMaskWaterProgram); mShaderList.push_back(&gDeferredFullbrightShinyProgram); mShaderList.push_back(&gDeferredSkinnedFullbrightShinyProgram); mShaderList.push_back(&gDeferredSkinnedFullbrightProgram); mShaderList.push_back(&gDeferredEmissiveProgram); mShaderList.push_back(&gDeferredAvatarEyesProgram); mShaderList.push_back(&gDeferredWaterProgram); + mShaderList.push_back(&gDeferredUnderWaterProgram); mShaderList.push_back(&gDeferredAvatarAlphaProgram); mShaderList.push_back(&gDeferredWLSkyProgram); mShaderList.push_back(&gDeferredWLCloudProgram); @@ -671,6 +697,7 @@ void LLViewerShaderMgr::unloadShaders() gObjectFullbrightNoColorProgram.unload(); gObjectFullbrightNoColorWaterProgram.unload(); gObjectSimpleProgram.unload(); + gObjectSimpleImpostorProgram.unload(); gObjectPreviewProgram.unload(); gImpostorProgram.unload(); gObjectSimpleAlphaMaskProgram.unload(); @@ -1087,6 +1114,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredSunProgram.unload(); gDeferredBlurLightProgram.unload(); gDeferredSoftenProgram.unload(); + gDeferredSoftenWaterProgram.unload(); gDeferredShadowProgram.unload(); gDeferredShadowCubeProgram.unload(); gDeferredShadowAlphaMaskProgram.unload(); @@ -1095,7 +1123,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAvatarProgram.unload(); gDeferredAvatarAlphaProgram.unload(); gDeferredAlphaProgram.unload(); + gDeferredAlphaWaterProgram.unload(); gDeferredFullbrightProgram.unload(); + gDeferredFullbrightAlphaMaskProgram.unload(); + gDeferredFullbrightWaterProgram.unload(); + gDeferredFullbrightAlphaMaskWaterProgram.unload(); gDeferredEmissiveProgram.unload(); gDeferredAvatarEyesProgram.unload(); gDeferredPostProgram.unload(); @@ -1104,6 +1136,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredPostGammaCorrectProgram.unload(); gFXAAProgram.unload(); gDeferredWaterProgram.unload(); + gDeferredUnderWaterProgram.unload(); gDeferredWLSkyProgram.unload(); gDeferredWLCloudProgram.unload(); gDeferredStarProgram.unload(); @@ -1115,6 +1148,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() for (U32 i = 0; i < LLMaterial::SHADER_COUNT*2; ++i) { gDeferredMaterialProgram[i].unload(); + gDeferredMaterialWaterProgram[i].unload(); } return TRUE; } @@ -1199,11 +1233,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { gDeferredSkinnedAlphaProgram.mName = "Deferred Skinned Alpha Shader"; - gDeferredSkinnedAlphaProgram.mFeatures.atmosphericHelpers = true; gDeferredSkinnedAlphaProgram.mFeatures.hasObjectSkinning = true; - gDeferredSkinnedAlphaProgram.mFeatures.calculatesAtmospherics = true; - gDeferredSkinnedAlphaProgram.mFeatures.hasGamma = true; - gDeferredSkinnedAlphaProgram.mFeatures.hasAtmospherics = true; gDeferredSkinnedAlphaProgram.mFeatures.calculatesLighting = false; gDeferredSkinnedAlphaProgram.mFeatures.hasLighting = false; gDeferredSkinnedAlphaProgram.mFeatures.isAlphaLighting = true; @@ -1213,8 +1243,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredSkinnedAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; gDeferredSkinnedAlphaProgram.addPermutation("USE_DIFFUSE_TEX", "1"); - gDeferredSkinnedAlphaProgram.addPermutation("USE_VERTEX_COLOR", "1"); gDeferredSkinnedAlphaProgram.addPermutation("HAS_SKIN", "1"); + gDeferredSkinnedAlphaProgram.addPermutation("USE_VERTEX_COLOR", "1"); gDeferredSkinnedAlphaProgram.addPermutation("HAS_SHADOW", mVertexShaderLevel[SHADER_DEFERRED] > 1 ? "1" : "0"); success = gDeferredSkinnedAlphaProgram.createShader(NULL, NULL); @@ -1242,6 +1272,15 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredMaterialProgram[9+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = false; gDeferredMaterialProgram[13+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[1].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[5].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[9].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[13].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[1+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[5+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[9+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = false; + gDeferredMaterialWaterProgram[13+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = false; + for (U32 i = 0; i < LLMaterial::SHADER_COUNT*2; ++i) { if (success) @@ -1268,6 +1307,34 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() success = gDeferredMaterialProgram[i].createShader(NULL, NULL); } + + if (success) + { + gDeferredMaterialWaterProgram[i].mName = llformat("Deferred Underwater Material Shader %d", i); + + U32 alpha_mode = i & 0x3; + + gDeferredMaterialWaterProgram[i].mShaderFiles.clear(); + gDeferredMaterialWaterProgram[i].mShaderFiles.push_back(make_pair("deferred/materialV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredMaterialWaterProgram[i].mShaderFiles.push_back(make_pair("deferred/materialF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredMaterialWaterProgram[i].mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredMaterialWaterProgram[i].mShaderGroup = LLGLSLShader::SG_WATER; + + gDeferredMaterialWaterProgram[i].addPermutation("HAS_NORMAL_MAP", i & 0x8? "1" : "0"); + gDeferredMaterialWaterProgram[i].addPermutation("HAS_SPECULAR_MAP", i & 0x4 ? "1" : "0"); + gDeferredMaterialWaterProgram[i].addPermutation("DIFFUSE_ALPHA_MODE", llformat("%d", alpha_mode)); + gDeferredMaterialWaterProgram[i].addPermutation("HAS_SUN_SHADOW", mVertexShaderLevel[SHADER_DEFERRED] > 1 ? "1" : "0"); + bool has_skin = i & 0x10; + gDeferredMaterialWaterProgram[i].addPermutation("HAS_SKIN",has_skin ? "1" : "0"); + gDeferredMaterialWaterProgram[i].addPermutation("WATER_FOG","1"); + + if (has_skin) + { + gDeferredMaterialWaterProgram[i].mFeatures.hasObjectSkinning = true; + } + + success = gDeferredMaterialWaterProgram[i].createShader(NULL, NULL);//&mWLUniforms); + } } gDeferredMaterialProgram[1].mFeatures.hasLighting = true; @@ -1279,6 +1346,14 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredMaterialProgram[9+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; gDeferredMaterialProgram[13+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[1].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[5].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[9].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[13].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[1+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[5+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[9+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; + gDeferredMaterialWaterProgram[13+LLMaterial::SHADER_COUNT].mFeatures.hasLighting = true; if (success) @@ -1324,8 +1399,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() for (U32 i = 0; i < LL_DEFERRED_MULTI_LIGHT_COUNT; i++) { - if (success) - { + if (success) + { gDeferredMultiLightProgram[i].mName = llformat("Deferred MultiLight Shader %d", i); gDeferredMultiLightProgram[i].mShaderFiles.clear(); gDeferredMultiLightProgram[i].mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER_ARB)); @@ -1399,11 +1474,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { gDeferredAlphaProgram.mName = "Deferred Alpha Shader"; - gDeferredAlphaProgram.mFeatures.atmosphericHelpers = true; + gDeferredAlphaProgram.mFeatures.calculatesLighting = false; - gDeferredAlphaProgram.mFeatures.calculatesAtmospherics = true; - gDeferredAlphaProgram.mFeatures.hasGamma = true; - gDeferredAlphaProgram.mFeatures.hasAtmospherics = true; gDeferredAlphaProgram.mFeatures.hasLighting = false; gDeferredAlphaProgram.mFeatures.isAlphaLighting = true; gDeferredAlphaProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels @@ -1420,8 +1492,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); gDeferredAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredAlphaProgram.addPermutation("USE_INDEXED_TEX", "1"); - gDeferredAlphaProgram.addPermutation("USE_VERTEX_COLOR", "1"); gDeferredAlphaProgram.addPermutation("HAS_SHADOW", mVertexShaderLevel[SHADER_DEFERRED] > 1 ? "1" : "0"); + gDeferredAlphaProgram.addPermutation("USE_VERTEX_COLOR", "1"); gDeferredAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredAlphaProgram.createShader(NULL, NULL); @@ -1433,6 +1505,72 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + gDeferredAlphaImpostorProgram.mName = "Deferred Alpha Shader"; + + gDeferredAlphaImpostorProgram.mFeatures.calculatesLighting = false; + gDeferredAlphaImpostorProgram.mFeatures.hasLighting = false; + gDeferredAlphaImpostorProgram.mFeatures.isAlphaLighting = true; + gDeferredAlphaImpostorProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels + if (mVertexShaderLevel[SHADER_DEFERRED] < 1) + { + gDeferredAlphaImpostorProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels; + } + else + { //shave off some texture units for shadow maps + gDeferredAlphaImpostorProgram.mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels - 6, 1); + } + + gDeferredAlphaImpostorProgram.mShaderFiles.clear(); + gDeferredAlphaImpostorProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredAlphaImpostorProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredAlphaImpostorProgram.addPermutation("USE_INDEXED_TEX", "1"); + gDeferredAlphaImpostorProgram.addPermutation("HAS_SHADOW", mVertexShaderLevel[SHADER_DEFERRED] > 1 ? "1" : "0"); + gDeferredAlphaImpostorProgram.addPermutation("USE_VERTEX_COLOR", "1"); + gDeferredAlphaImpostorProgram.addPermutation("FOR_IMPOSTOR", "1"); + + gDeferredAlphaImpostorProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + + success = gDeferredAlphaImpostorProgram.createShader(NULL, NULL); + + // Hack + gDeferredAlphaImpostorProgram.mFeatures.calculatesLighting = true; + gDeferredAlphaImpostorProgram.mFeatures.hasLighting = true; + } + + if (success) + { + gDeferredAlphaWaterProgram.mName = "Deferred Alpha Underwater Shader"; + gDeferredAlphaWaterProgram.mFeatures.calculatesLighting = false; + gDeferredAlphaWaterProgram.mFeatures.hasLighting = false; + gDeferredAlphaWaterProgram.mFeatures.isAlphaLighting = true; + gDeferredAlphaWaterProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels + if (mVertexShaderLevel[SHADER_DEFERRED] < 1) + { + gDeferredAlphaWaterProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels; + } + else + { //shave off some texture units for shadow maps + gDeferredAlphaWaterProgram.mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels - 6, 1); + } + gDeferredAlphaWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + gDeferredAlphaWaterProgram.mShaderFiles.clear(); + gDeferredAlphaWaterProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredAlphaWaterProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredAlphaWaterProgram.addPermutation("USE_INDEXED_TEX", "1"); + gDeferredAlphaWaterProgram.addPermutation("WATER_FOG", "1"); + gDeferredAlphaWaterProgram.addPermutation("USE_VERTEX_COLOR", "1"); + gDeferredAlphaWaterProgram.addPermutation("HAS_SHADOW", mVertexShaderLevel[SHADER_DEFERRED] > 1 ? "1" : "0"); + gDeferredAlphaWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + + success = gDeferredAlphaWaterProgram.createShader(NULL, NULL); + + // Hack + gDeferredAlphaWaterProgram.mFeatures.calculatesLighting = true; + gDeferredAlphaWaterProgram.mFeatures.hasLighting = true; + } + + if (success) + { gDeferredAvatarEyesProgram.mName = "Deferred Avatar Eyes Shader"; gDeferredAvatarEyesProgram.mFeatures.calculatesAtmospherics = true; gDeferredAvatarEyesProgram.mFeatures.hasGamma = true; @@ -1461,6 +1599,54 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + gDeferredFullbrightAlphaMaskProgram.mName = "Deferred Fullbright Alpha Masking Shader"; + gDeferredFullbrightAlphaMaskProgram.mFeatures.calculatesAtmospherics = true; + gDeferredFullbrightAlphaMaskProgram.mFeatures.hasGamma = true; + gDeferredFullbrightAlphaMaskProgram.mFeatures.hasTransport = true; + gDeferredFullbrightAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels; + gDeferredFullbrightAlphaMaskProgram.mShaderFiles.clear(); + gDeferredFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredFullbrightAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredFullbrightAlphaMaskProgram.addPermutation("HAS_ALPHA_MASK","1"); + gDeferredFullbrightAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + success = gDeferredFullbrightAlphaMaskProgram.createShader(NULL, NULL); + } + + if (success) + { + gDeferredFullbrightWaterProgram.mName = "Deferred Fullbright Underwater Shader"; + gDeferredFullbrightWaterProgram.mFeatures.calculatesAtmospherics = true; + gDeferredFullbrightWaterProgram.mFeatures.hasGamma = true; + gDeferredFullbrightWaterProgram.mFeatures.hasTransport = true; + gDeferredFullbrightWaterProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels; + gDeferredFullbrightWaterProgram.mShaderFiles.clear(); + gDeferredFullbrightWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredFullbrightWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredFullbrightWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredFullbrightWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + gDeferredFullbrightWaterProgram.addPermutation("WATER_FOG","1"); + success = gDeferredFullbrightWaterProgram.createShader(NULL, NULL); + } + + if (success) + { + gDeferredFullbrightAlphaMaskWaterProgram.mName = "Deferred Fullbright Underwater Alpha Masking Shader"; + gDeferredFullbrightAlphaMaskWaterProgram.mFeatures.calculatesAtmospherics = true; + gDeferredFullbrightAlphaMaskWaterProgram.mFeatures.hasGamma = true; + gDeferredFullbrightAlphaMaskWaterProgram.mFeatures.hasTransport = true; + gDeferredFullbrightAlphaMaskWaterProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels; + gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.clear(); + gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredFullbrightAlphaMaskWaterProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredFullbrightAlphaMaskWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredFullbrightAlphaMaskWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + gDeferredFullbrightAlphaMaskWaterProgram.addPermutation("HAS_ALPHA_MASK","1"); + gDeferredFullbrightAlphaMaskWaterProgram.addPermutation("WATER_FOG","1"); + success = gDeferredFullbrightAlphaMaskWaterProgram.createShader(NULL, NULL); + } + + if (success) + { gDeferredFullbrightShinyProgram.mName = "Deferred FullbrightShiny Shader"; gDeferredFullbrightShinyProgram.mFeatures.calculatesAtmospherics = true; gDeferredFullbrightShinyProgram.mFeatures.hasGamma = true; @@ -1533,6 +1719,20 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + // load water shader + gDeferredUnderWaterProgram.mName = "Deferred Under Water Shader"; + gDeferredUnderWaterProgram.mFeatures.calculatesAtmospherics = true; + gDeferredUnderWaterProgram.mFeatures.hasGamma = true; + gDeferredUnderWaterProgram.mFeatures.hasTransport = true; + gDeferredUnderWaterProgram.mShaderFiles.clear(); + gDeferredUnderWaterProgram.mShaderFiles.push_back(make_pair("deferred/waterV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredUnderWaterProgram.mShaderFiles.push_back(make_pair("deferred/underWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredUnderWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + success = gDeferredUnderWaterProgram.createShader(NULL, NULL); + } + + if (success) + { gDeferredSoftenProgram.mName = "Deferred Soften Shader"; gDeferredSoftenProgram.mShaderFiles.clear(); gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB)); @@ -1550,6 +1750,25 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + gDeferredSoftenWaterProgram.mName = "Deferred Soften Underwater Shader"; + gDeferredSoftenWaterProgram.mShaderFiles.clear(); + gDeferredSoftenWaterProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredSoftenWaterProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + + gDeferredSoftenWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredSoftenWaterProgram.addPermutation("WATER_FOG", "1"); + gDeferredSoftenWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + + if (gSavedSettings.getBOOL("RenderDeferredSSAO")) + { //if using SSAO, take screen space light map into account as if shadows are enabled + gDeferredSoftenWaterProgram.mShaderLevel = llmax(gDeferredSoftenWaterProgram.mShaderLevel, 2); + } + + success = gDeferredSoftenWaterProgram.createShader(NULL, NULL); + } + + if (success) + { gDeferredShadowProgram.mName = "Deferred Shadow Shader"; gDeferredShadowProgram.mShaderFiles.clear(); gDeferredShadowProgram.mShaderFiles.push_back(make_pair("deferred/shadowV.glsl", GL_VERTEX_SHADER_ARB)); @@ -1630,12 +1849,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { gDeferredAvatarAlphaProgram.mName = "Avatar Alpha Shader"; - gDeferredAvatarAlphaProgram.mFeatures.atmosphericHelpers = true; gDeferredAvatarAlphaProgram.mFeatures.hasSkinning = true; gDeferredAvatarAlphaProgram.mFeatures.calculatesLighting = false; - gDeferredAvatarAlphaProgram.mFeatures.calculatesAtmospherics = true; - gDeferredAvatarAlphaProgram.mFeatures.hasGamma = true; - gDeferredAvatarAlphaProgram.mFeatures.hasAtmospherics = true; gDeferredAvatarAlphaProgram.mFeatures.hasLighting = false; gDeferredAvatarAlphaProgram.mFeatures.isAlphaLighting = true; gDeferredAvatarAlphaProgram.mFeatures.disableTextureIndex = true; @@ -1774,6 +1989,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightNoColorProgram.unload(); gObjectFullbrightNoColorWaterProgram.unload(); gObjectSimpleProgram.unload(); + gObjectSimpleImpostorProgram.unload(); gObjectPreviewProgram.unload(); gImpostorProgram.unload(); gObjectSimpleAlphaMaskProgram.unload(); @@ -2196,6 +2412,27 @@ BOOL LLViewerShaderMgr::loadShadersObject() if (success) { + gObjectSimpleImpostorProgram.mName = "Simple Impostor Shader"; + gObjectSimpleImpostorProgram.mFeatures.calculatesLighting = true; + gObjectSimpleImpostorProgram.mFeatures.calculatesAtmospherics = true; + gObjectSimpleImpostorProgram.mFeatures.hasGamma = true; + gObjectSimpleImpostorProgram.mFeatures.hasAtmospherics = true; + gObjectSimpleImpostorProgram.mFeatures.hasLighting = true; + gObjectSimpleImpostorProgram.mFeatures.mIndexedTextureChannels = 0; + // force alpha mask version of lighting so we can weed out + // transparent pixels from impostor temp buffer + // + gObjectSimpleImpostorProgram.mFeatures.hasAlphaMask = true; + gObjectSimpleImpostorProgram.mShaderFiles.clear(); + gObjectSimpleImpostorProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectSimpleImpostorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectSimpleImpostorProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + + success = gObjectSimpleImpostorProgram.createShader(NULL, NULL); + } + + if (success) + { gObjectSimpleWaterProgram.mName = "Simple Water Shader"; gObjectSimpleWaterProgram.mFeatures.calculatesLighting = true; gObjectSimpleWaterProgram.mFeatures.calculatesAtmospherics = true; @@ -3128,3 +3365,4 @@ LLViewerShaderMgr::shader_iter LLViewerShaderMgr::endShaders() const { return mShaderList.end(); } + diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index a685ce5914..3d89f8d20a 100755 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -77,8 +77,6 @@ public: SHADER_COUNT }; - - // simple model of forward iterator // http://www.sgi.com/tech/stl/ForwardIterator.html class shader_iter @@ -130,6 +128,23 @@ public: /* virtual */ void updateShaderUniforms(LLGLSLShader * shader); private: + + std::vector<std::string> mShinyUniforms; + + //water parameters + std::vector<std::string> mWaterUniforms; + + std::vector<std::string> mWLUniforms; + + //terrain parameters + std::vector<std::string> mTerrainUniforms; + + //glow parameters + std::vector<std::string> mGlowUniforms; + + std::vector<std::string> mGlowExtractUniforms; + + std::vector<std::string> mAvatarUniforms; // the list of shaders we need to propagate parameters to. std::vector<LLGLSLShader *> mShaderList; @@ -176,6 +191,7 @@ extern LLGLSLShader gOneTextureNoColorProgram; //object shaders extern LLGLSLShader gObjectSimpleProgram; +extern LLGLSLShader gObjectSimpleImpostorProgram; extern LLGLSLShader gObjectPreviewProgram; extern LLGLSLShader gObjectSimpleAlphaMaskProgram; extern LLGLSLShader gObjectSimpleWaterProgram; @@ -264,6 +280,7 @@ extern LLGLSLShader gPostNightVisionProgram; // Deferred rendering shaders extern LLGLSLShader gDeferredImpostorProgram; extern LLGLSLShader gDeferredWaterProgram; +extern LLGLSLShader gDeferredUnderWaterProgram; extern LLGLSLShader gDeferredDiffuseProgram; extern LLGLSLShader gDeferredDiffuseAlphaMaskProgram; extern LLGLSLShader gDeferredNonIndexedDiffuseAlphaMaskProgram; @@ -284,6 +301,7 @@ extern LLGLSLShader gDeferredSunProgram; extern LLGLSLShader gDeferredBlurLightProgram; extern LLGLSLShader gDeferredAvatarProgram; extern LLGLSLShader gDeferredSoftenProgram; +extern LLGLSLShader gDeferredSoftenWaterProgram; extern LLGLSLShader gDeferredShadowProgram; extern LLGLSLShader gDeferredShadowCubeProgram; extern LLGLSLShader gDeferredShadowAlphaMaskProgram; @@ -296,7 +314,12 @@ extern LLGLSLShader gDeferredPostGammaCorrectProgram; extern LLGLSLShader gDeferredAvatarShadowProgram; extern LLGLSLShader gDeferredAttachmentShadowProgram; extern LLGLSLShader gDeferredAlphaProgram; +extern LLGLSLShader gDeferredAlphaImpostorProgram; extern LLGLSLShader gDeferredFullbrightProgram; +extern LLGLSLShader gDeferredFullbrightAlphaMaskProgram; +extern LLGLSLShader gDeferredAlphaWaterProgram; +extern LLGLSLShader gDeferredFullbrightWaterProgram; +extern LLGLSLShader gDeferredFullbrightAlphaMaskWaterProgram; extern LLGLSLShader gDeferredEmissiveProgram; extern LLGLSLShader gDeferredAvatarEyesProgram; extern LLGLSLShader gDeferredAvatarAlphaProgram; @@ -310,5 +333,5 @@ extern LLGLSLShader gNormalMapGenProgram; // Deferred materials shaders extern LLGLSLShader gDeferredMaterialProgram[LLMaterial::SHADER_COUNT*2]; - +extern LLGLSLShader gDeferredMaterialWaterProgram[LLMaterial::SHADER_COUNT*2]; #endif diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index fc43abf844..2efe4665fa 100755 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -566,12 +566,12 @@ void LLViewerTextureList::addImageToList(LLViewerFetchedTexture *image) } else { - if((mImageList.insert(image)).second != true) - { + if((mImageList.insert(image)).second != true) + { llwarns << "Error happens when insert image " << image->getID() << " into mImageList!" << llendl ; - } - image->setInImageList(TRUE) ; } + image->setInImageList(TRUE) ; +} } void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image) @@ -585,30 +585,30 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image) { count = mImageList.erase(image) ; if(count != 1) - { - llwarns << "Image " << image->getID() + { + llinfos << "Image " << image->getID() << " had mInImageList set but mImageList.erase() returned " << count << llendl; } } else { // Something is wrong, image is expected in list or callers should check first - llwarns << "Calling removeImageFromList() for " << image->getID() + llinfos << "Calling removeImageFromList() for " << image->getID() << " but doesn't have mInImageList set" << " ref count is " << image->getNumRefs() << llendl; uuid_map_t::iterator iter = mUUIDMap.find(image->getID()); if(iter == mUUIDMap.end()) { - llwarns << "Image " << image->getID() << " is also not in mUUIDMap!" << llendl ; + llinfos << "Image " << image->getID() << " is also not in mUUIDMap!" << llendl ; } else if (iter->second != image) { - llwarns << "Image " << image->getID() << " was in mUUIDMap but with different pointer" << llendl ; - } + llinfos << "Image " << image->getID() << " was in mUUIDMap but with different pointer" << llendl ; + } else - { - llwarns << "Image " << image->getID() << " was in mUUIDMap with same pointer" << llendl ; + { + llinfos << "Image " << image->getID() << " was in mUUIDMap with same pointer" << llendl ; } count = mImageList.erase(image) ; if(count != 0) @@ -618,7 +618,7 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image) << llendl; } } - + image->setInImageList(FALSE) ; } @@ -626,15 +626,15 @@ void LLViewerTextureList::addImage(LLViewerFetchedTexture *new_image) { if (!new_image) { - llwarning("No image to add to image list", 0); return; } + llassert(new_image); LLUUID image_id = new_image->getID(); LLViewerFetchedTexture *image = findImage(image_id); if (image) { - llwarns << "Image with ID " << image_id << " already in list" << llendl; + llinfos << "Image with ID " << image_id << " already in list" << llendl; } sNumImages++; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 076b2524bf..68abb8c72e 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2987,81 +2987,90 @@ bool LLVOAvatar::isVisuallyMuted() { bool muted = false; - // Priority order (highest priority first) - // * own avatar is never visually muted - // * if on the "always draw normally" list, draw them normally - // * if on the "always visually mute" list, mute them - // * draw them normally if they meet the following criteria: - // - within the closest N avatars OR on friends list OR in an IM chat - // - AND aren't over the thresholds - // * otherwise visually mute all other avatars - if (!isSelf()) { - static LLCachedControl<F32> render_mute_threshold(gSavedSettings, "RenderAutoMuteThreshold"); - static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit"); - static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit"); - static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderCostLimit"); - - if (mVisuallyMuteSetting == ALWAYS_VISUAL_MUTE) - { // Always want to see this AV as an imposter - muted = true; - } - else if (mVisuallyMuteSetting == NEVER_VISUAL_MUTE) - { // Never show as imposter - muted = false; - } - else if (LLVOAvatar::sLODFactor <= render_mute_threshold) + static LLCachedControl<U32> render_auto_mute_functions(gSavedSettings, "RenderAutoMuteFunctions"); + if (render_auto_mute_functions) // Hacky debug switch for developing feature { - F64 now = LLFrameTimer::getTotalSeconds(); + // Priority order (highest priority first) + // * own avatar is never visually muted + // * if on the "always draw normally" list, draw them normally + // * if on the "always visually mute" list, mute them + // * draw them normally if they meet the following criteria: + // - within the closest N avatars OR on friends list OR in an IM chat + // - AND aren't over the thresholds + // * otherwise visually mute all other avatars - if (now < mCachedVisualMuteUpdateTime) - { // Use cached mute value - muted = mCachedVisualMute; + static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit"); + static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit"); + static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit"); + + if (mVisuallyMuteSetting == ALWAYS_VISUAL_MUTE) + { // Always want to see this AV as an impostor + muted = true; } - else - { // Determine if visually muted or not + else if (mVisuallyMuteSetting == NEVER_VISUAL_MUTE) + { // Never show as impostor + muted = false; + } + else + { + F64 now = LLFrameTimer::getTotalSeconds(); - U32 max_cost = (U32) (max_render_cost*(LLVOAvatar::sLODFactor+0.5)); + if (now < mCachedVisualMuteUpdateTime) + { // Use cached mute value + muted = mCachedVisualMute; + } + else + { // Determine if visually muted or not - muted = LLMuteList::getInstance()->isMuted(getID()) || - (mAttachmentGeometryBytes > max_attachment_bytes && max_attachment_bytes > 0) || - (mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f) || - (mVisualComplexity > max_cost && max_render_cost > 0); + U32 max_cost = (U32) (max_render_cost*(LLVOAvatar::sLODFactor+0.5)); - // Could be part of the grand || collection above, but yanked out to make the logic visible - if (!muted) - { - if (sMaxVisible > 0) - { // They are above the visibilty rank - mute them - muted = (mVisibilityRank > sMaxVisible); - } - - /* Not used - always draw friends or those in IMs. Works nicely, needs UI? - if (muted || // Don't mute friends or IMs - sMaxVisible == 0) + muted = LLMuteList::getInstance()->isMuted(getID()) || + (mAttachmentGeometryBytes > max_attachment_bytes && max_attachment_bytes > 0) || + (mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f) || + (mVisualComplexity > max_cost && max_render_cost > 0); + + // Could be part of the grand || collection above, but yanked out to make the logic visible + if (!muted) { - muted = !(LLAvatarTracker::instance().isBuddy(getID())); - if (muted) - { // Not a friend, so they are muted ... are they in an IM? - LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,getID()); - muted = !gIMMgr->hasSession(session_id); + if (sMaxVisible > 0) + { // They are above the visibilty rank - mute them + muted = (mVisibilityRank > sMaxVisible); + } + + // Always draw friends or those in IMs. Needs UI? + if ((render_auto_mute_functions & 0x02) && + (muted || sMaxVisible == 0)) // Don't mute friends or IMs + { + muted = !(LLAvatarTracker::instance().isBuddy(getID())); + if (muted) + { // Not a friend, so they are muted ... are they in an IM? + LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,getID()); + muted = !gIMMgr->hasSession(session_id); + } } } - */ - } - // Save visual mute state and set interval for updating - const F64 SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES = 1.5; - mCachedVisualMuteUpdateTime = now + SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES; - mCachedVisualMute = muted; - } + // Save visual mute state and set interval for updating + const F64 SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES = 1.5; + mCachedVisualMuteUpdateTime = now + SECONDS_BETWEEN_RENDER_AUTO_MUTE_UPDATES; + mCachedVisualMute = muted; + } + } } } return muted; } +void LLVOAvatar::forceUpdateVisualMuteSettings() +{ + // Set the cache time so it's updated ASAP + mCachedVisualMuteUpdateTime = LLFrameTimer::getTotalSeconds() - 1.0; +} + + //------------------------------------------------------------------------ // updateCharacter() // called on both your avatar and other avatars @@ -3806,11 +3815,11 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) { //LOD changed or new mesh created, allocate new vertex buffer if needed if (needs_rebuild || mDirtyMesh >= 2 || mVisibilityRank <= 4) { - updateMeshData(); + updateMeshData(); mDirtyMesh = 0; - mNeedsSkin = TRUE; - mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY); - } + mNeedsSkin = TRUE; + mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY); + } } if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) <= 0) @@ -7888,8 +7897,7 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d void LLVOAvatar::idleUpdateRenderCost() { - static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderCostLimit"); - + static LLCachedControl<U32> max_render_cost(gSavedSettings, "RenderAutoMuteRenderWeightLimit"); static const U32 ARC_LIMIT = 20000; if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_ATTACHMENT_BYTES)) @@ -8053,7 +8061,7 @@ LLColor4 LLVOAvatar::calcMutedAVColor(F32 value, S32 range_low, S32 range_high) LLColor4 new_color = lerp(*spectrum_color[spectrum_index_1], *spectrum_color[spectrum_index_2], fractBetween); new_color.normalize(); - new_color *= 0.9f; + new_color *= 0.7f; // Tone it down a bit //llinfos << "From value " << std::setprecision(3) << value << " returning color " << new_color // << " using indexes " << spectrum_index_1 << ", " << spectrum_index_2 diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 295175133c..931e65b3ea 100755 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -389,6 +389,8 @@ public: public: U32 renderImpostor(LLColor4U color = LLColor4U(255,255,255,255), S32 diffuse_channel = 0); bool isVisuallyMuted(); + void setCachedVisualMute(bool muted) { mCachedVisualMute = muted; }; + void forceUpdateVisualMuteSettings(); enum VisualMuteSettings { diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index ed2b18b822..aa35507e9c 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1029,7 +1029,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams ¶ms_in, const S32 detail, bo } } } - + static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback"); bool cache_in_vram = use_transform_feedback && gTransformPositionProgram.mProgramObject && @@ -4420,7 +4420,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) U32 spec_count = 0; U32 normspec_count = 0; - + U32 useage = group->mSpatialPartition->mBufferUsage; U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcVertexSize(group->mSpatialPartition->mVertexDataMask); @@ -4998,7 +4998,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) } else { - pAvatarVO->mAttachmentGeometryBytes += group->mGeometryBytes; + pAvatarVO->mAttachmentGeometryBytes += group->mGeometryBytes; } if (pAvatarVO->mAttachmentSurfaceArea < 0.f) { // First time through value is -1 @@ -5006,10 +5006,10 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) } else { - pAvatarVO->mAttachmentSurfaceArea += group->mSurfaceArea; - } + pAvatarVO->mAttachmentSurfaceArea += group->mSurfaceArea; } } +} static LLFastTimer::DeclareTimer FTM_REBUILD_MESH_FLUSH("Flush Mesh"); @@ -5027,7 +5027,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) const U32 MAX_BUFFER_COUNT = 4096; LLVertexBuffer* locked_buffer[MAX_BUFFER_COUNT]; - + U32 buffer_count = 0; for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter) @@ -5038,7 +5038,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) { LLVOVolume* vobj = drawablep->getVOVolume(); vobj->preRebuild(); - + if (drawablep->isState(LLDrawable::ANIMATED_CHILD)) { vobj->updateRelativeXform(true); @@ -5084,17 +5084,17 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) { LLFastTimer t(FTM_REBUILD_MESH_FLUSH); for (LLVertexBuffer** iter = locked_buffer, ** end_iter = locked_buffer+buffer_count; iter != end_iter; ++iter) - { - (*iter)->flush(); - } - - // don't forget alpha - if(group != NULL && - !group->mVertexBuffer.isNull() && - group->mVertexBuffer->isLocked()) - { - group->mVertexBuffer->flush(); - } + { + (*iter)->flush(); + } + + // don't forget alpha + if(group != NULL && + !group->mVertexBuffer.isNull() && + group->mVertexBuffer->isLocked()) + { + group->mVertexBuffer->flush(); + } } //if not all buffers are unmapped @@ -5291,7 +5291,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFac { texture_list[texture_count++] = tex; } - + if (can_batch_texture(facep)) { //populate texture_list with any textures that can be batched //move i to the next unbatchable face @@ -5497,18 +5497,23 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFac } bool use_legacy_bump = te->getBumpmap() && (te->getBumpmap() < 18) && (!mat || mat->getNormalID().isNull()); + bool opaque = te->getColor().mV[3] >= 0.999f; if (mat && LLPipeline::sRenderDeferred && !hud_group) { bool material_pass = false; - if (fullbright) + // do NOT use 'fullbright' for this logic or you risk sending + // things without normals down the materials pipeline and will + // render poorly if not crash NORSPEC-240,314 + // + if (te->getFullbright()) { if (mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_MASK) { - if (te->getColor().mV[3] >= 0.999f) + if (opaque) { - material_pass = true; + registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK); } else { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 4445539ac2..8e8114d667 100755 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -387,6 +387,7 @@ BOOL LLPipeline::sWaterReflections = FALSE; BOOL LLPipeline::sRenderGlow = FALSE; BOOL LLPipeline::sReflectionRender = FALSE; BOOL LLPipeline::sImpostorRender = FALSE; +BOOL LLPipeline::sImpostorRenderAlphaDepthPass = FALSE; BOOL LLPipeline::sUnderWaterRender = FALSE; BOOL LLPipeline::sTextureBindTest = FALSE; BOOL LLPipeline::sRenderFrameTest = FALSE; @@ -802,14 +803,22 @@ void LLPipeline::resizeScreenTexture() GLuint resX = gViewerWindow->getWorldViewWidthRaw(); GLuint resY = gViewerWindow->getWorldViewHeightRaw(); + if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight())) + { + releaseScreenBuffers(); if (!allocateScreenBuffer(resX,resY)) - { //FAILSAFE: screen buffer allocation failed, disable deferred rendering if it's enabled + { +#if PROBABLE_FALSE_DISABLES_OF_ALM_HERE + //FAILSAFE: screen buffer allocation failed, disable deferred rendering if it's enabled //NOTE: if the session closes successfully after this call, deferred rendering will be // disabled on future sessions if (LLPipeline::sRenderDeferred) { gSavedSettings.setBOOL("RenderDeferred", FALSE); LLPipeline::refreshCachedSettings(); + + } +#endif } } } @@ -958,11 +967,13 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) screenFormat = GL_RGBA12; } +#if !LL_DARWIN if (gGLManager.mGLVersion < 4.f && gGLManager.mIsNVIDIA) { screenFormat = GL_RGBA16F_ARB; } - +#endif + if (!mScreen.allocate(resX, resY, screenFormat, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; if (samples > 0) { @@ -1199,6 +1210,7 @@ void LLPipeline::releaseGLBuffers() mWaterRef.release(); mWaterDis.release(); + mHighlight.release(); for (U32 i = 0; i < 3; i++) { @@ -1229,12 +1241,12 @@ void LLPipeline::releaseScreenBuffers() mDeferredScreen.release(); mDeferredDepth.release(); mDeferredLight.release(); - - mHighlight.release(); + mOcclusionDepth.release(); for (U32 i = 0; i < 6; i++) { mShadow[i].release(); + mShadowOcclusion[i].release(); } } @@ -1246,14 +1258,31 @@ void LLPipeline::createGLBuffers() updateRenderDeferred(); + bool materials_in_water = false; + +#if MATERIALS_IN_REFLECTIONS + materials_in_water = gSavedSettings.getS32("RenderWaterMaterials"); +#endif + if (LLPipeline::sWaterReflections) { //water reflection texture U32 res = (U32) llmax(gSavedSettings.getS32("RenderWaterRefResolution"), 512); + // Set up SRGB targets if we're doing deferred-path reflection rendering + // + if (LLPipeline::sRenderDeferred && materials_in_water) + { + mWaterRef.allocate(res,res,GL_SRGB8_ALPHA8,TRUE,FALSE); + //always use FBO for mWaterDis so it can be used for avatar texture bakes + mWaterDis.allocate(res,res,GL_SRGB8_ALPHA8,TRUE,FALSE,LLTexUnit::TT_TEXTURE, true); + } + else + { mWaterRef.allocate(res,res,GL_RGBA,TRUE,FALSE); //always use FBO for mWaterDis so it can be used for avatar texture bakes mWaterDis.allocate(res,res,GL_RGBA,TRUE,FALSE,LLTexUnit::TT_TEXTURE, true); } + } mHighlight.allocate(256,256,GL_RGBA, FALSE, FALSE); @@ -2462,7 +2491,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl if (to_texture) { - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred) { mOcclusionDepth.bindTarget(); } @@ -2607,7 +2636,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl if (to_texture) { - if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) + if (LLPipeline::sRenderDeferred) { mOcclusionDepth.flush(); } @@ -8324,6 +8353,13 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 n shader.uniform2f(LLShaderMgr::DEFERRED_PROJ_SHADOW_RES, mShadow[4].getWidth(), mShadow[4].getHeight()); shader.uniform1f(LLShaderMgr::DEFERRED_DEPTH_CUTOFF, RenderEdgeDepthCutoff); shader.uniform1f(LLShaderMgr::DEFERRED_NORM_CUTOFF, RenderEdgeNormCutoff); + + + if (shader.getUniformLocation(LLShaderMgr::DEFERRED_NORM_MATRIX) >= 0) + { + glh::matrix4f norm_mat = glh_get_current_modelview().inverse().transpose(); + shader.uniformMatrix4fv(LLShaderMgr::DEFERRED_NORM_MATRIX, 1, FALSE, norm_mat.m); + } } LLColor3 pow3f(LLColor3 v, F32 f) @@ -8445,7 +8481,7 @@ void LLPipeline::renderDeferredLighting() } gDeferredSunProgram.uniform3fv(sOffset, slice, offset); - + { LLGLDisable blend(GL_BLEND); LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS); @@ -8537,7 +8573,7 @@ void LLPipeline::renderDeferredLighting() if (RenderDeferredAtmospheric) { //apply sunlight contribution LLFastTimer ftm(FTM_ATMOSPHERICS); - bindDeferredShader(gDeferredSoftenProgram); + bindDeferredShader(LLPipeline::sUnderWaterRender ? gDeferredSoftenWaterProgram : gDeferredSoftenProgram); { LLGLDepthTest depth(GL_FALSE); LLGLDisable blend(GL_BLEND); @@ -8559,7 +8595,7 @@ void LLPipeline::renderDeferredLighting() gGL.popMatrix(); } - unbindDeferredShader(gDeferredSoftenProgram); + unbindDeferredShader(LLPipeline::sUnderWaterRender ? gDeferredSoftenWaterProgram : gDeferredSoftenProgram); } { //render non-deferred geometry (fullbright, alpha, etc) @@ -8675,7 +8711,7 @@ void LLPipeline::renderDeferredLighting() LLFastTimer ftm(FTM_LOCAL_LIGHTS); gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c); - gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, 1.f/s); + gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s); gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); gGL.syncMatrices(); @@ -8696,7 +8732,7 @@ void LLPipeline::renderDeferredLighting() glh::vec3f tc(c); mat.mult_matrix_vec(tc); - fullscreen_lights.push_back(LLVector4(tc.v[0], tc.v[1], tc.v[2], 1.f/s)); + fullscreen_lights.push_back(LLVector4(tc.v[0], tc.v[1], tc.v[2], s)); light_colors.push_back(LLVector4(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f)); } } @@ -8781,7 +8817,7 @@ void LLPipeline::renderDeferredLighting() col[count].mV[1] = powf(col[count].mV[1], 2.2f); col[count].mV[2] = powf(col[count].mV[2], 2.2f);*/ - far_z = llmin(light[count].mV[2]-1.f/light[count].mV[3], far_z); + far_z = llmin(light[count].mV[2]-light[count].mV[3], far_z); //col[count] = pow4fsrgb(col[count], 2.2f); count++; if (count == max_count || fullscreen_lights.empty()) @@ -8794,13 +8830,12 @@ void LLPipeline::renderDeferredLighting() gDeferredMultiLightProgram[idx].uniform1f(LLShaderMgr::MULTI_LIGHT_FAR_Z, far_z); far_z = 0.f; count = 0; - mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); + unbindDeferredShader(gDeferredMultiLightProgram[idx]); } } - unbindDeferredShader(gDeferredMultiLightProgram[0]); - bindDeferredShader(gDeferredMultiSpotLightProgram); gDeferredMultiSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION); @@ -8881,9 +8916,9 @@ void LLPipeline::renderDeferredLighting() gDeferredPostGammaCorrectProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, mScreen.getWidth(), mScreen.getHeight()); - F32 gamma = 1.0/2.2; + F32 gamma = gSavedSettings.getF32("RenderDeferredDisplayGamma"); - gDeferredPostGammaCorrectProgram.uniform1f(LLShaderMgr::TEXTURE_GAMMA, gamma); + gDeferredPostGammaCorrectProgram.uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f/2.2f)); gGL.begin(LLRender::TRIANGLE_STRIP); gGL.texCoord2f(tc1.mV[0], tc1.mV[1]); @@ -8962,6 +8997,537 @@ void LLPipeline::renderDeferredLighting() } +void LLPipeline::renderDeferredLightingToRT(LLRenderTarget* target) +{ + if (!sCull) + { + return; + } + + { + LLFastTimer ftm(FTM_RENDER_DEFERRED); + + LLViewerCamera* camera = LLViewerCamera::getInstance(); + + { + LLGLDepthTest depth(GL_TRUE); + mDeferredDepth.copyContents(mDeferredScreen, 0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight(), + 0, 0, mDeferredDepth.getWidth(), mDeferredDepth.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST); + } + + LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0); + + if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) + { + gPipeline.toggleRenderType(LLPipeline::RENDER_TYPE_HUD); + } + + //ati doesn't seem to love actually using the stencil buffer on FBO's + LLGLDisable stencil(GL_STENCIL_TEST); + //glStencilFunc(GL_EQUAL, 1, 0xFFFFFFFF); + //glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + + gGL.setColorMask(true, true); + + //draw a cube around every light + LLVertexBuffer::unbind(); + + LLGLEnable cull(GL_CULL_FACE); + LLGLEnable blend(GL_BLEND); + + glh::matrix4f mat = glh_copy_matrix(gGLModelView); + + LLStrider<LLVector3> vert; + mDeferredVB->getVertexStrider(vert); + + vert[0].set(-1,1,0); + vert[1].set(-1,-3,0); + vert[2].set(3,1,0); + + { + setupHWLights(NULL); //to set mSunDir; + LLVector4 dir(mSunDir, 0.f); + glh::vec4f tc(dir.mV); + mat.mult_matrix_vec(tc); + mTransformedSunDir.set(tc.v); + } + + gGL.pushMatrix(); + gGL.loadIdentity(); + gGL.matrixMode(LLRender::MM_PROJECTION); + gGL.pushMatrix(); + gGL.loadIdentity(); + + if (RenderDeferredSSAO || RenderShadowDetail > 0) + { + mDeferredLight.bindTarget(); + { //paint shadow/SSAO light map (direct lighting lightmap) + LLFastTimer ftm(FTM_SUN_SHADOW); + bindDeferredShader(gDeferredSunProgram); + mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + glClearColor(1,1,1,1); + mDeferredLight.clear(GL_COLOR_BUFFER_BIT); + glClearColor(0,0,0,0); + + glh::matrix4f inv_trans = glh_get_current_modelview().inverse().transpose(); + + const U32 slice = 32; + F32 offset[slice*3]; + for (U32 i = 0; i < 4; i++) + { + for (U32 j = 0; j < 8; j++) + { + glh::vec3f v; + v.set_value(sinf(6.284f/8*j), cosf(6.284f/8*j), -(F32) i); + v.normalize(); + inv_trans.mult_matrix_vec(v); + v.normalize(); + offset[(i*8+j)*3+0] = v.v[0]; + offset[(i*8+j)*3+1] = v.v[2]; + offset[(i*8+j)*3+2] = v.v[1]; + } + } + + gDeferredSunProgram.uniform3fv(LLShaderMgr::DEFERRED_SHADOW_OFFSET, slice, offset); + gDeferredSunProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, mDeferredLight.getWidth(), mDeferredLight.getHeight()); + + { + LLGLDisable blend(GL_BLEND); + LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS); + stop_glerror(); + mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); + stop_glerror(); + } + + unbindDeferredShader(gDeferredSunProgram); + } + mDeferredLight.flush(); + } + + stop_glerror(); + gGL.popMatrix(); + stop_glerror(); + gGL.matrixMode(LLRender::MM_MODELVIEW); + stop_glerror(); + gGL.popMatrix(); + stop_glerror(); + + target->bindTarget(); + + //clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky + glClearColor(0,0,0,0); + target->clear(GL_COLOR_BUFFER_BIT); + + if (RenderDeferredAtmospheric) + { //apply sunlight contribution + LLFastTimer ftm(FTM_ATMOSPHERICS); + bindDeferredShader(gDeferredSoftenProgram); + { + LLGLDepthTest depth(GL_FALSE); + LLGLDisable blend(GL_BLEND); + LLGLDisable test(GL_ALPHA_TEST); + + //full screen blit + gGL.pushMatrix(); + gGL.loadIdentity(); + gGL.matrixMode(LLRender::MM_PROJECTION); + gGL.pushMatrix(); + gGL.loadIdentity(); + + mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + + mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); + + gGL.popMatrix(); + gGL.matrixMode(LLRender::MM_MODELVIEW); + gGL.popMatrix(); + } + + unbindDeferredShader(gDeferredSoftenProgram); + } + + { //render non-deferred geometry (fullbright, alpha, etc) + LLGLDisable blend(GL_BLEND); + LLGLDisable stencil(GL_STENCIL_TEST); + gGL.setSceneBlendType(LLRender::BT_ALPHA); + + gPipeline.pushRenderTypeMask(); + + gPipeline.andRenderTypeMask(LLPipeline::RENDER_TYPE_SKY, + LLPipeline::RENDER_TYPE_CLOUDS, + LLPipeline::RENDER_TYPE_WL_SKY, + LLPipeline::END_RENDER_TYPES); + + + renderGeomPostDeferred(*LLViewerCamera::getInstance(), false); + gPipeline.popRenderTypeMask(); + } + + BOOL render_local = RenderLocalLights; + + if (render_local) + { + gGL.setSceneBlendType(LLRender::BT_ADD); + std::list<LLVector4> fullscreen_lights; + LLDrawable::drawable_list_t spot_lights; + LLDrawable::drawable_list_t fullscreen_spot_lights; + + for (U32 i = 0; i < 2; i++) + { + mTargetShadowSpotLight[i] = NULL; + } + + std::list<LLVector4> light_colors; + + LLVertexBuffer::unbind(); + + { + bindDeferredShader(gDeferredLightProgram); + + if (mCubeVB.isNull()) + { + mCubeVB = ll_create_cube_vb(LLVertexBuffer::MAP_VERTEX, GL_STATIC_DRAW_ARB); + } + + mCubeVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + + LLGLDepthTest depth(GL_TRUE, GL_FALSE); + for (LLDrawable::drawable_set_t::iterator iter = mLights.begin(); iter != mLights.end(); ++iter) + { + LLDrawable* drawablep = *iter; + + LLVOVolume* volume = drawablep->getVOVolume(); + if (!volume) + { + continue; + } + + if (volume->isAttachment()) + { + if (!sRenderAttachedLights) + { + continue; + } + } + + + LLVector4a center; + center.load3(drawablep->getPositionAgent().mV); + const F32* c = center.getF32ptr(); + F32 s = volume->getLightRadius()*1.5f; + + LLColor3 col = volume->getLightColor(); + + if (col.magVecSquared() < 0.001f) + { + continue; + } + + if (s <= 0.001f) + { + continue; + } + + LLVector4a sa; + sa.splat(s); + if (camera->AABBInFrustumNoFarClip(center, sa) == 0) + { + continue; + } + + sVisibleLightCount++; + + if (camera->getOrigin().mV[0] > c[0] + s + 0.2f || + camera->getOrigin().mV[0] < c[0] - s - 0.2f || + camera->getOrigin().mV[1] > c[1] + s + 0.2f || + camera->getOrigin().mV[1] < c[1] - s - 0.2f || + camera->getOrigin().mV[2] > c[2] + s + 0.2f || + camera->getOrigin().mV[2] < c[2] - s - 0.2f) + { //draw box if camera is outside box + if (render_local) + { + if (volume->isLightSpotlight()) + { + drawablep->getVOVolume()->updateSpotLightPriority(); + spot_lights.push_back(drawablep); + continue; + } + + /*col.mV[0] = powf(col.mV[0], 2.2f); + col.mV[1] = powf(col.mV[1], 2.2f); + col.mV[2] = powf(col.mV[2], 2.2f);*/ + + LLFastTimer ftm(FTM_LOCAL_LIGHTS); + gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c); + gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s); + gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); + gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); + gGL.syncMatrices(); + + mCubeVB->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, center)); + stop_glerror(); + } + } + else + { + if (volume->isLightSpotlight()) + { + drawablep->getVOVolume()->updateSpotLightPriority(); + fullscreen_spot_lights.push_back(drawablep); + continue; + } + + glh::vec3f tc(c); + mat.mult_matrix_vec(tc); + + fullscreen_lights.push_back(LLVector4(tc.v[0], tc.v[1], tc.v[2], s)); + light_colors.push_back(LLVector4(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f)); + } + } + unbindDeferredShader(gDeferredLightProgram); + } + + if (!spot_lights.empty()) + { + LLGLDepthTest depth(GL_TRUE, GL_FALSE); + bindDeferredShader(gDeferredSpotLightProgram); + + mCubeVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + + gDeferredSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION); + + for (LLDrawable::drawable_list_t::iterator iter = spot_lights.begin(); iter != spot_lights.end(); ++iter) + { + LLFastTimer ftm(FTM_PROJECTORS); + LLDrawable* drawablep = *iter; + + LLVOVolume* volume = drawablep->getVOVolume(); + + LLVector4a center; + center.load3(drawablep->getPositionAgent().mV); + const F32* c = center.getF32ptr(); + F32 s = volume->getLightRadius()*1.5f; + + sVisibleLightCount++; + + setupSpotLight(gDeferredSpotLightProgram, drawablep); + + LLColor3 col = volume->getLightColor(); + /*col.mV[0] = powf(col.mV[0], 2.2f); + col.mV[1] = powf(col.mV[1], 2.2f); + col.mV[2] = powf(col.mV[2], 2.2f);*/ + + gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c); + gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s); + gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); + gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); + gGL.syncMatrices(); + + mCubeVB->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, center)); + } + gDeferredSpotLightProgram.disableTexture(LLShaderMgr::DEFERRED_PROJECTION); + unbindDeferredShader(gDeferredSpotLightProgram); + } + + //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); + + { + LLGLDepthTest depth(GL_FALSE); + + //full screen blit + gGL.pushMatrix(); + gGL.loadIdentity(); + gGL.matrixMode(LLRender::MM_PROJECTION); + gGL.pushMatrix(); + gGL.loadIdentity(); + + U32 count = 0; + + const U32 max_count = LL_DEFERRED_MULTI_LIGHT_COUNT; + LLVector4 light[max_count]; + LLVector4 col[max_count]; + + F32 far_z = 0.f; + + while (!fullscreen_lights.empty()) + { + LLFastTimer ftm(FTM_FULLSCREEN_LIGHTS); + light[count] = fullscreen_lights.front(); + fullscreen_lights.pop_front(); + col[count] = light_colors.front(); + light_colors.pop_front(); + + /*col[count].mV[0] = powf(col[count].mV[0], 2.2f); + col[count].mV[1] = powf(col[count].mV[1], 2.2f); + col[count].mV[2] = powf(col[count].mV[2], 2.2f);*/ + + far_z = llmin(light[count].mV[2]-light[count].mV[3], far_z); + //col[count] = pow4fsrgb(col[count], 2.2f); + count++; + if (count == max_count || fullscreen_lights.empty()) + { + U32 idx = count-1; + bindDeferredShader(gDeferredMultiLightProgram[idx]); + gDeferredMultiLightProgram[idx].uniform1i(LLShaderMgr::MULTI_LIGHT_COUNT, count); + gDeferredMultiLightProgram[idx].uniform4fv(LLShaderMgr::MULTI_LIGHT, count, (GLfloat*) light); + gDeferredMultiLightProgram[idx].uniform4fv(LLShaderMgr::MULTI_LIGHT_COL, count, (GLfloat*) col); + gDeferredMultiLightProgram[idx].uniform1f(LLShaderMgr::MULTI_LIGHT_FAR_Z, far_z); + far_z = 0.f; + count = 0; + mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); + } + } + + unbindDeferredShader(gDeferredMultiLightProgram[0]); + + bindDeferredShader(gDeferredMultiSpotLightProgram); + + gDeferredMultiSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION); + + mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + + for (LLDrawable::drawable_list_t::iterator iter = fullscreen_spot_lights.begin(); iter != fullscreen_spot_lights.end(); ++iter) + { + LLFastTimer ftm(FTM_PROJECTORS); + LLDrawable* drawablep = *iter; + + LLVOVolume* volume = drawablep->getVOVolume(); + + LLVector3 center = drawablep->getPositionAgent(); + F32* c = center.mV; + F32 s = volume->getLightRadius()*1.5f; + + sVisibleLightCount++; + + glh::vec3f tc(c); + mat.mult_matrix_vec(tc); + + setupSpotLight(gDeferredMultiSpotLightProgram, drawablep); + + LLColor3 col = volume->getLightColor(); + + /*col.mV[0] = powf(col.mV[0], 2.2f); + col.mV[1] = powf(col.mV[1], 2.2f); + col.mV[2] = powf(col.mV[2], 2.2f);*/ + + gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v); + gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s); + gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); + gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f); + mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3); + } + + gDeferredMultiSpotLightProgram.disableTexture(LLShaderMgr::DEFERRED_PROJECTION); + unbindDeferredShader(gDeferredMultiSpotLightProgram); + + gGL.popMatrix(); + gGL.matrixMode(LLRender::MM_MODELVIEW); + gGL.popMatrix(); + } + } + + gGL.setColorMask(true, true); + } + + /*target->flush(); + + //gamma correct lighting + gGL.matrixMode(LLRender::MM_PROJECTION); + gGL.pushMatrix(); + gGL.loadIdentity(); + gGL.matrixMode(LLRender::MM_MODELVIEW); + gGL.pushMatrix(); + gGL.loadIdentity(); + + { + LLGLDepthTest depth(GL_FALSE, GL_FALSE); + + LLVector2 tc1(0,0); + LLVector2 tc2((F32) target->getWidth()*2, + (F32) target->getHeight()*2); + + target->bindTarget(); + // Apply gamma correction to the frame here. + gDeferredPostGammaCorrectProgram.bind(); + //mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX); + S32 channel = 0; + channel = gDeferredPostGammaCorrectProgram.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, target->getUsage()); + if (channel > -1) + { + target->bindTexture(0,channel); + gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT); + } + + gDeferredPostGammaCorrectProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, target->getWidth(), target->getHeight()); + + F32 gamma = gSavedSettings.getF32("RenderDeferredDisplayGamma"); + + gDeferredPostGammaCorrectProgram.uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f/2.2f)); + + 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(tc2.mV[0], tc1.mV[1]); + gGL.vertex2f(3,-1); + + gGL.end(); + + gGL.getTexUnit(channel)->unbind(target->getUsage()); + gDeferredPostGammaCorrectProgram.unbind(); + target->flush(); + } + + gGL.matrixMode(LLRender::MM_PROJECTION); + gGL.popMatrix(); + gGL.matrixMode(LLRender::MM_MODELVIEW); + gGL.popMatrix(); + + target->bindTarget();*/ + + { //render non-deferred geometry (alpha, fullbright, glow) + LLGLDisable blend(GL_BLEND); + LLGLDisable stencil(GL_STENCIL_TEST); + + pushRenderTypeMask(); + andRenderTypeMask(LLPipeline::RENDER_TYPE_ALPHA, + LLPipeline::RENDER_TYPE_FULLBRIGHT, + LLPipeline::RENDER_TYPE_VOLUME, + LLPipeline::RENDER_TYPE_GLOW, + LLPipeline::RENDER_TYPE_BUMP, + LLPipeline::RENDER_TYPE_PASS_SIMPLE, + LLPipeline::RENDER_TYPE_PASS_ALPHA, + LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK, + LLPipeline::RENDER_TYPE_PASS_BUMP, + LLPipeline::RENDER_TYPE_PASS_POST_BUMP, + LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT, + LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK, + LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY, + LLPipeline::RENDER_TYPE_PASS_GLOW, + LLPipeline::RENDER_TYPE_PASS_GRASS, + LLPipeline::RENDER_TYPE_PASS_SHINY, + LLPipeline::RENDER_TYPE_PASS_INVISIBLE, + LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY, + LLPipeline::RENDER_TYPE_AVATAR, + LLPipeline::RENDER_TYPE_ALPHA_MASK, + LLPipeline::RENDER_TYPE_FULLBRIGHT_ALPHA_MASK, + END_RENDER_TYPES); + + renderGeomPostDeferred(*LLViewerCamera::getInstance()); + popRenderTypeMask(); + } + + //target->flush(); +} + void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep) { //construct frustum @@ -9208,16 +9774,23 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) water_clip = 1; } - S32 occlusion = LLPipeline::sUseOcclusion; - LLPipeline::sUseOcclusion = 0; + bool materials_in_water = false; + +#if MATERIALS_IN_REFLECTIONS + materials_in_water = gSavedSettings.getS32("RenderWaterMaterials"); +#endif if (!LLViewerCamera::getInstance()->cameraUnderWater()) { //generate planar reflection map //disable occlusion culling for reflection map for now + S32 occlusion = LLPipeline::sUseOcclusion; + LLPipeline::sUseOcclusion = 0; gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); glClearColor(0,0,0,0); + mWaterRef.bindTarget(); + LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WATER0; gGL.setColorMask(true, true); mWaterRef.clear(); @@ -9266,11 +9839,27 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) updateCull(camera, result); stateSort(camera, result); + if (LLPipeline::sRenderDeferred && materials_in_water) + { + mWaterRef.flush(); + + gPipeline.grabReferences(result); + gPipeline.mDeferredScreen.bindTarget(); + gGL.setColorMask(true, true); + glClearColor(0,0,0,0); + gPipeline.mDeferredScreen.clear(); + + renderGeomDeferred(camera); + } + else + { renderGeom(camera, TRUE); + } gPipeline.popRenderTypeMask(); } + gGL.setColorMask(true, false); gPipeline.pushRenderTypeMask(); clearRenderTypeMask(LLPipeline::RENDER_TYPE_WATER, @@ -9308,9 +9897,23 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) { gPipeline.grabReferences(ref_result); LLGLUserClipPlane clip_plane(plane, mat, projection); + + if (LLPipeline::sRenderDeferred && materials_in_water) + { + renderGeomDeferred(camera); + } + else + { renderGeom(camera); } } + } + + if (LLPipeline::sRenderDeferred && materials_in_water) + { + gPipeline.mDeferredScreen.flush(); + renderDeferredLightingToRT(&mWaterRef); + } gPipeline.popRenderTypeMask(); } @@ -9318,6 +9921,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) gGL.popMatrix(); mWaterRef.flush(); glh_set_current_modelview(current); + LLPipeline::sUseOcclusion = occlusion; } camera.setOrigin(camera_in.getOrigin()); @@ -9366,15 +9970,33 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) mWaterDis.clear(); gGL.setColorMask(true, false); + + if (LLPipeline::sRenderDeferred && materials_in_water) + { + mWaterDis.flush(); + gPipeline.mDeferredScreen.bindTarget(); + gGL.setColorMask(true, true); + glClearColor(0,0,0,0); + gPipeline.mDeferredScreen.clear(); + gPipeline.grabReferences(result); + renderGeomDeferred(camera); + } + else + { renderGeom(camera); + } + if (LLPipeline::sRenderDeferred && materials_in_water) + { + gPipeline.mDeferredScreen.flush(); + renderDeferredLightingToRT(&mWaterDis); + } } - LLPipeline::sUnderWaterRender = FALSE; mWaterDis.flush(); + LLPipeline::sUnderWaterRender = FALSE; + } - - LLPipeline::sUseOcclusion = occlusion; last_update = LLDrawPoolWater::sNeedsReflectionUpdate && LLDrawPoolWater::sNeedsDistortionUpdate; LLPipeline::sReflectionRender = FALSE; @@ -10699,23 +11321,29 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) } else { - andRenderTypeMask(LLPipeline::RENDER_TYPE_VOLUME, - LLPipeline::RENDER_TYPE_AVATAR, + andRenderTypeMask(LLPipeline::RENDER_TYPE_ALPHA, + LLPipeline::RENDER_TYPE_FULLBRIGHT, + LLPipeline::RENDER_TYPE_VOLUME, + LLPipeline::RENDER_TYPE_GLOW, LLPipeline::RENDER_TYPE_BUMP, - LLPipeline::RENDER_TYPE_GRASS, - LLPipeline::RENDER_TYPE_SIMPLE, - LLPipeline::RENDER_TYPE_FULLBRIGHT, - LLPipeline::RENDER_TYPE_ALPHA, - LLPipeline::RENDER_TYPE_INVISIBLE, LLPipeline::RENDER_TYPE_PASS_SIMPLE, LLPipeline::RENDER_TYPE_PASS_ALPHA, LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK, + LLPipeline::RENDER_TYPE_PASS_BUMP, + LLPipeline::RENDER_TYPE_PASS_POST_BUMP, LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT, LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK, LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_SHINY, + LLPipeline::RENDER_TYPE_PASS_GLOW, + LLPipeline::RENDER_TYPE_PASS_GRASS, LLPipeline::RENDER_TYPE_PASS_SHINY, LLPipeline::RENDER_TYPE_PASS_INVISIBLE, LLPipeline::RENDER_TYPE_PASS_INVISI_SHINY, + LLPipeline::RENDER_TYPE_AVATAR, + LLPipeline::RENDER_TYPE_ALPHA_MASK, + LLPipeline::RENDER_TYPE_FULLBRIGHT_ALPHA_MASK, + LLPipeline::RENDER_TYPE_INVISIBLE, + LLPipeline::RENDER_TYPE_SIMPLE, END_RENDER_TYPES); } @@ -10816,22 +11444,26 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) if (!avatar->mImpostor.isComplete()) { LLFastTimer t(FTM_IMPOSTOR_ALLOCATE); - avatar->mImpostor.allocate(resX,resY,GL_RGBA,TRUE,FALSE); + if (LLPipeline::sRenderDeferred) { + avatar->mImpostor.allocate(resX,resY,GL_SRGB8_ALPHA8,TRUE,FALSE); addDeferredAttachments(avatar->mImpostor); } + else + { + avatar->mImpostor.allocate(resX,resY,GL_RGBA,TRUE,FALSE); + } gGL.getTexUnit(0)->bind(&avatar->mImpostor); gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT); gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); } - else if(resX != avatar->mImpostor.getWidth() || - resY != avatar->mImpostor.getHeight()) + else if(resX != avatar->mImpostor.getWidth() || resY != avatar->mImpostor.getHeight()) { LLFastTimer t(FTM_IMPOSTOR_RESIZE); - avatar->mImpostor.resize(resX,resY,GL_RGBA); + avatar->mImpostor.resize(resX,resY); } avatar->mImpostor.bindTarget(); @@ -10848,7 +11480,23 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) { avatar->mImpostor.clear(); renderGeomDeferred(camera); + + renderGeomPostDeferred(camera); + + // Shameless hack time: render it all again, + // this time writing the depth + // values we need to generate the alpha mask below + // while preserving the alpha-sorted color rendering + // from the previous pass + // + sImpostorRenderAlphaDepthPass = true; + // depth-only here... + // + gGL.setColorMask(false,false); renderGeomPostDeferred(camera); + + sImpostorRenderAlphaDepthPass = false; + } else { @@ -10856,12 +11504,28 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) glScissor(0, 0, resX, resY); avatar->mImpostor.clear(); renderGeom(camera); + + // Shameless hack time: render it all again, + // this time writing the depth + // values we need to generate the alpha mask below + // while preserving the alpha-sorted color rendering + // from the previous pass + // + sImpostorRenderAlphaDepthPass = true; + + // depth-only here... + // + gGL.setColorMask(false,false); + renderGeom(camera); + + sImpostorRenderAlphaDepthPass = false; } - + LLDrawPoolAvatar::sMinimumAlpha = old_alpha; - + { //create alpha mask based on depth buffer (grey out if muted) LLFastTimer t(FTM_IMPOSTOR_BACKGROUND); + if (LLPipeline::sRenderDeferred) { GLuint buff = GL_COLOR_ATTACHMENT0; @@ -10873,7 +11537,6 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) if (visually_muted) { gGL.setColorMask(true, true); - } else { @@ -10892,7 +11555,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) gGL.pushMatrix(); gGL.loadIdentity(); - static const F32 clip_plane = 0.999f; + static const F32 clip_plane = 0.99999f; if (LLGLSLShader::sNoFixedFunction) { diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index f0bebbe20d..9aeb2d4978 100755 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -295,6 +295,7 @@ public: void unbindDeferredShader(LLGLSLShader& shader); void renderDeferredLighting(); + void renderDeferredLightingToRT(LLRenderTarget* target); void generateWaterReflection(LLCamera& camera); void generateSunShadow(LLCamera& camera); @@ -594,6 +595,7 @@ public: static BOOL sPickAvatar; static BOOL sReflectionRender; static BOOL sImpostorRender; + static BOOL sImpostorRenderAlphaDepthPass; static BOOL sUnderWaterRender; static BOOL sRenderGlow; static BOOL sTextureBindTest; diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index 5245467183..bc0eae7c5d 100755 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -8,7 +8,9 @@ Kompiliert mit [COMPILER] version [COMPILER_VERSION] </floater.string> <floater.string name="AboutPosition"> - Sie befinden sich in [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) + Sie befinden sich an [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(globale Koordinaten [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml index 8f99fc933c..27a74c874e 100755 --- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="BERECHTIGUNGEN BEARBEITEN"> +<floater name="floaterbulkperms" title="INHALTSBERECHTIGUNGEN ÄNDERN"> <floater.string name="nothing_to_modify_text"> Auswahl enthält keinen Inhalt, der bearbeitet werden kann. </floater.string> @@ -33,7 +33,7 @@ <button label="√ Alle" label_selected="Alle" name="check_all"/> <button label="Löschen" label_selected="Keine" name="check_none"/> <text name="newperms"> - Neue Inhalts-Berechtigungen + Inhaltsberechtigungen ändern in </text> <text name="GroupLabel"> Gruppe: @@ -49,6 +49,7 @@ <check_box label="Bearbeiten" name="next_owner_modify"/> <check_box label="Kopieren" name="next_owner_copy"/> <check_box initial_value="true" label="Transferieren" name="next_owner_transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> - <button label="OK" name="apply"/> + <button label="OK" name="ok"/> + <button label="Anwenden" name="apply"/> <button label="Abbrechen" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_goto_line.xml b/indra/newview/skins/default/xui/de/floater_goto_line.xml new file mode 100644 index 0000000000..02550ec398 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="GEHE ZU ZEILE"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + Gehe zu Zeile + </text> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml index f96eb72cb1..b07b74bf4a 100755 --- a/indra/newview/skins/default/xui/de/floater_im_session.xml +++ b/indra/newview/skins/default/xui/de/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Chat übersetzen" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Chat übersetzen" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml index 88e9f53a4c..ebf8f01632 100755 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Anzeigen: </text> - <check_box label="Test" name="show_world"/> + <check_box label="Welt" name="show_world"/> <check_box label="Nur bewegliche Objekte" name="show_world_movables_only"/> <check_box label="Navmesh" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml index 237c92f7d2..4c125c8b5d 100755 --- a/indra/newview/skins/default/xui/de/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Einfrieren" name="Freeze..."/> <menu_item_call label="Hinauswerfen" name="Eject..."/> <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/> + <menu_item_call label="XML ausgeben" name="Dump XML"/> <menu_item_call label="Hineinzoomen" name="Zoom In"/> <menu_item_call label="Bezahlen" name="Pay..."/> <menu_item_call label="Objektprofil" name="Object Inspect"/> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml index 325d52a22e..7888c7b0a1 100755 --- a/indra/newview/skins/default/xui/de/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/> + <menu_item_call label="XML ausgeben" name="Dump XML"/> <menu_item_call label="Fallen lassen" name="Drop"/> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml index 8aee0be3d2..65dc054ed5 100755 --- a/indra/newview/skins/default/xui/de/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Einfrieren" name="Freeze..."/> <menu_item_call label="Hinauswerfen" name="Eject..."/> <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/> + <menu_item_call label="XML ausgeben" name="Dump XML"/> <menu_item_call label="Hineinzoomen" name="Zoom In"/> <menu_item_call label="Bezahlen" name="Pay..."/> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml index c49f4b198b..022cd8c3ca 100755 --- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="Meine Gruppen" name="Groups..."/> <menu_item_call label="Mein Profil" name="Profile..."/> <menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/> + <menu_item_call label="XML ausgeben" name="Dump XML"/> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_conversation.xml b/indra/newview/skins/default/xui/de/menu_conversation.xml index 30d3ab79e1..bdfa66c23b 100644 --- a/indra/newview/skins/default/xui/de/menu_conversation.xml +++ b/indra/newview/skins/default/xui/de/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Unterhaltung schließen" name="close_conversation"/> <menu_item_call label="Unterhaltung öffnen" name="open_voice_conversation"/> <menu_item_call label="Voice-Verbindung trennen" name="disconnect_from_voice"/> + <menu_item_call label="Ausgewählte schließen" name="close_selected_conversations"/> <menu_item_call label="Profil anzeigen" name="view_profile"/> <menu_item_call label="IM" name="im"/> <menu_item_call label="Teleport anbieten" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/de/menu_land.xml b/indra/newview/skins/default/xui/de/menu_land.xml index de679da3d8..0bbf8c666e 100755 --- a/indra/newview/skins/default/xui/de/menu_land.xml +++ b/indra/newview/skins/default/xui/de/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Pass kaufen" name="Land Buy Pass"/> <menu_item_call label="Bauen" name="Create"/> <menu_item_call label="Land bearbeiten" name="Edit Terrain"/> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index b43b41a5dc..62358cc5a8 100755 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -18,7 +18,13 @@ <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/> <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/> <menu_item_call label="Web Content Floater Debug Test" name="Web Content Floater Debug Test"/> - <menu label="Protokollierungsstufe festlegen" name="Set Logging Level"/> + <menu label="Protokollierungsstufe festlegen" name="Set Logging Level"> + <menu_item_check label="Debug" name="Debug"/> + <menu_item_check label="Info" name="Info"/> + <menu_item_check label="Warnung" name="Warning"/> + <menu_item_check label="Fehler" name="Error"/> + <menu_item_check label="Keine" name="None"/> + </menu> <menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/> <menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_mute_particle.xml b/indra/newview/skins/default/xui/de/menu_mute_particle.xml new file mode 100644 index 0000000000..ea8ae03ee0 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml index 9f44ced928..de2b409678 100755 --- a/indra/newview/skins/default/xui/de/menu_object.xml +++ b/indra/newview/skins/default/xui/de/menu_object.xml @@ -5,13 +5,13 @@ </menu_item_call> <menu_item_call label="Bearbeiten" name="Edit..."/> <menu_item_call label="Bauen" name="Build"/> - <menu_item_call label="In Linksets anzeigen" name="show_in_linksets"/> - <menu_item_call label="In Figuren anzeigen" name="show_in_characters"/> <menu_item_call label="Öffnen" name="Open"/> <menu_item_call label="Hier sitzen" name="Object Sit"/> <menu_item_call label="Aufstehen" name="Object Stand Up"/> <menu_item_call label="Objektprofil" name="Object Inspect"/> <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <menu_item_call label="In Linksets anzeigen" name="show_in_linksets"/> + <menu_item_call label="In Figuren anzeigen" name="show_in_characters"/> <context_menu label="Anziehen" name="Put On"> <menu_item_call label="Anziehen" name="Wear"/> <menu_item_call label="Hinzufügen" name="Add"/> @@ -28,4 +28,5 @@ <menu_item_call label="Bezahlen" name="Pay..."/> <menu_item_call label="Kaufen" name="Buy..."/> <menu_item_call label="Löschen" name="Delete"/> + <menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_agent.xml b/indra/newview/skins/default/xui/de/menu_url_agent.xml index c61ebb0eae..ddb072ba8f 100755 --- a/indra/newview/skins/default/xui/de/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/de/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Profil anzeigen" name="show_agent"/> <menu_item_call label="IM senden..." name="send_im"/> <menu_item_call label="Freund hinzufügen..." name="add_friend"/> + <menu_item_call label="Freund entfernen..." name="remove_friend"/> <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/> <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml index 77b7004e44..fc01ea8444 100755 --- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Objektprofil..." name="show_object"/> + <menu_item_call label="Blockieren..." name="block_object"/> <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/> <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 47d9fec352..be5d4891d7 100755 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/> <menu_item_call label="Gehen/Rennen/Fliegen..." name="Walk / run / fly"/> </menu> - <menu label="Status" name="Status"/> + <menu label="Status" name="Status"> + <menu_item_check label="Abwesend" name="Away"/> + <menu_item_check label="Nicht stören" name="Do Not Disturb"/> + </menu> <menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/> <menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/> <menu_item_call label="Kontoübersicht..." name="Manage My Account"> @@ -32,6 +35,7 @@ <menu_item_check label="Unterhaltungen..." name="Conversations"/> <menu_item_check label="Chat in der Nähe..." name="Nearby Chat"/> <menu_item_check label="Sprechen" name="Speak"/> + <menu_item_check label="Unterhaltungsprotokoll..." name="Conversation Log..."/> <menu label="Voice-Morphing" name="VoiceMorphing"> <menu_item_check label="Kein Voice-Morphing" name="NoVoiceMorphing"/> <menu_item_check label="Vorschau..." name="Preview"/> @@ -42,6 +46,7 @@ <menu_item_check label="Gruppen" name="My Groups"/> <menu_item_check label="Leute in der Nähe" name="Active Speakers"/> <menu_item_call label="Blockierliste" name="Block List"/> + <menu_item_check label="Nicht stören" name="Do Not Disturb"/> </menu> <menu label="Welt" name="World"> <menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/> @@ -110,6 +115,7 @@ <menu_item_call label="Nächsten Teil mit einsschließen" name="Include Next Part"/> <menu_item_call label="Vorherige Teile mit einschließen" name="Include Previous Part"/> </menu> + <menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Fokus auf Auswahl" name="Focus on Selection"/> <menu_item_call label="Auf Auswahl zoomen" name="Zoom to Selection"/> <menu label="Objekt" name="Object"> @@ -279,6 +285,7 @@ <menu_item_check label="Framerate randomisieren" name="Randomize Framerate"/> <menu_item_check label="Periodic Slow Frame" name="Periodic Slow Frame"/> <menu_item_check label="Frame-Test" name="Frame Test"/> + <menu_item_call label="Rahmenprofil" name="Frame Profile"/> </menu> <menu label="Metadaten darstellen" name="Render Metadata"> <menu_item_check label="Bonding Boxes" name="Bounding Boxes"/> @@ -313,9 +320,10 @@ <menu_item_check label="Achsen" name="Axes"/> <menu_item_check label="Tangentenbasis" name="Tangent Basis"/> <menu_item_call label="Texturinfo für ausgewähltes Objekt" name="Selected Texture Info Basis"/> + <menu_item_call label="Ausgewählte Materialinfos" name="Selected Material Info"/> <menu_item_check label="Wireframe" name="Wireframe"/> <menu_item_check label="Objekt-Objekt Okklusion" name="Object-Object Occlusion"/> - <menu_item_check label="Uber Licht Modell" name="Advanced Lighting Model"/> + <menu_item_check label="Erweitertes Beleuchtungsmodell" name="Advanced Lighting Model"/> <menu_item_check label="Schatten von Sonne-/Mond-Projektoren" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO und Schattenglättung" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Fehler in GL beseitigen" name="Debug GL"/> @@ -325,7 +333,6 @@ <menu_item_check label="Animationstexturen" name="Animation Textures"/> <menu_item_check label="Texturen deaktivieren" name="Disable Textures"/> <menu_item_check label="Voll-Res-Texturen" name="Rull Res Textures"/> - <menu_item_check label="Textur-Atlas (experimentell)" name="Texture Atlas"/> <menu_item_check label="Angehängte Lichter rendern" name="Render Attached Lights"/> <menu_item_check label="Angehängte Partikel rendern" name="Render Attached Particles"/> <menu_item_check label="Leucht-Objekte schweben lassen" name="Hover Glow Objects"/> @@ -361,7 +368,6 @@ <menu_item_call label="Fokus ausgeben" name="Dump Focus Holder"/> <menu_item_call label="Ausgewählte Objektinfo drucken" name="Print Selected Object Info"/> <menu_item_call label="Agent-Info drucken" name="Print Agent Info"/> - <menu_item_call label="Speicher-Stats" name="Memory Stats"/> <menu_item_check label="Regions-Debug-Konsole" name="Region Debug Console"/> <menu_item_check label="Fehler in SelectMgr beseitigen" name="Debug SelectMgr"/> <menu_item_check label="Fehler in Klicks beseitigen" name="Debug Clicks"/> @@ -395,7 +401,6 @@ </menu> <menu_item_call label="Param auf Standard erzwingen" name="Force Params to Default"/> <menu_item_check label="Animations-Info" name="Animation Info"/> - <menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/> <menu_item_check label="Kamerafokus anzeigen" name="Show Look At"/> <menu_item_check label="Klickpunkt anzeigen??" name="Show Point At"/> <menu_item_check label="Fehler in Landaktualisierung beseitigen" name="Debug Joint Updates"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index dc0d7dc6b4..b3ae98f633 100755 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -146,7 +146,7 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/> </notification> <notification name="FriendsAndGroupsOnly"> - Leute, die nicht auf Ihrer Freundesliste stehen, werden nicht wissen, dass Sie deren Anrufe oder Sofortnachrichten ignoriert haben. + Personen, die nicht auf Ihrer Freundesliste stehen, werden nicht informiert, dass Sie ihre Anrufe und Instant Messages ignorieren. <usetemplate name="okbutton" yestext="Ja"/> </notification> <notification name="FavoritesOnLogin"> @@ -216,6 +216,14 @@ Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> + <notification name="EjectGroupMemberWarning"> + Sie sind dabei, [AVATAR_NAME] aus der Gruppe hinauszuwerfen. + <usetemplate ignoretext="Hinauswerfen eines einzelnen Gruppenmitglieds bestätigen" name="okcancelignore" notext="Abbrechen" yestext="Hinauswerfen"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Sie sind dabei, [COUNT] Mitglieder aus der Gruppe hinauszuwerfen. + <usetemplate ignoretext="Hinauswerfen mehrerer Gruppenmitglieder bestätigen" name="okcancelignore" notext="Abbrechen" yestext="Hinauswerfen"/> + </notification> <notification name="AttachmentDrop"> Sie möchten Ihren Anhang wirklich fallen lassen? Möchten Sie fortfahren? @@ -1124,7 +1132,7 @@ auf ALLEN LÄNDERN in diesem Sim LÖSCHEN? Geben sie einen höheren Betrag ein. </notification> <notification name="ConfirmItemDeleteHasLinks"> - Mindestens eines Ihrer ausgewählten Objekte verfügt über verknüpfte Objekte. Wenn Sie dieses Objekt löschen, funktionieren die Verknüpfungen nicht mehr. Wir empfehlen Ihnen daher, diese Verknüpfungen zuerst zu löschen. + Auf mindestens eines der Objekte wird über Verknüpfungen Bezug genommen. Wenn Sie dieses Objekt löschen, funktionieren die Verknüpfungen nicht mehr. Wir empfehlen daher, diese Verknüpfungen zuerst zu löschen. Möchten Sie diese Objekte wirklich löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> @@ -1142,9 +1150,9 @@ Möchten Sie diese Objekte löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> - Mindestens eines der ausgewählten Objekt gehört nicht Ihnen. + Mindestens eines der ausgewählten Objekte gehört nicht Ihnen. -Möchten Sie diese Objekte löschen? +Möchten Sie diese Objekte wirklich löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> @@ -1158,14 +1166,14 @@ Möchten Sie diese Objekte löschen? Mindestens ein Objekt ist gesperrt. Mindestens ein Objekt gehört nicht Ihnen. -Möchten Sie diese Objekte löschen? +Möchten Sie diese Objekte wirklich löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> Mindestens ein Objekt kann nicht kopiert werden. Mindestens ein Objekt gehört nicht Ihnen. -Möchten Sie diese Objekte löschen? +Möchten Sie diese Objekte wirklich löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> @@ -1173,7 +1181,7 @@ Möchten Sie diese Objekte löschen? Mindestens ein Objekt kann nicht kopiert werden. Mindestens ein Objekt gehört nicht Ihnen. -Möchten Sie diese Objekte löschen? +Möchten Sie diese Objekte wirklich löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> @@ -1492,13 +1500,43 @@ Version [VERSION] [[RELEASE_NOTES_FULL_URL] Informationen zu diesem Update] </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> Ein erforderliches Softwareupdate wurde heruntergeladen. -Version [VERSION] +Version [VERSION] [[INFO_URL] Infos zu diesem Update] Zur Installation des Updates muss [APP_NAME] neu gestartet werden. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> Zur Installation des Updates muss [APP_NAME] neu gestartet werden. +[[INFO_URL] Infos zu diesem Update] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + Für Ihre [APP_NAME]-Installation wurde ein Update heruntergeladen. +Version [VERSION] +Dieser experimentelle Viewer wurde durch einen [NEW_CHANNEL] Viewer ersetzt; +weitere Details zu diesem Update finden Sie [[INFO_URL] hier]. + <usetemplate name="okcancelbuttons" notext="Später..." yestext="Jetzt installieren und [APP_NAME] neu starten"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + Für Ihre [APP_NAME]-Installation wurde ein Update heruntergeladen. +Version [VERSION] +Dieser experimentelle Viewer wurde durch einen [NEW_CHANNEL] Viewer ersetzt; +weitere Infos zu diesem Update finden Sie [[INFO_URL] hier]. + <usetemplate name="okcancelbuttons" notext="Später..." yestext="Jetzt installieren und [APP_NAME] neu starten"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + Ein erforderliches Softwareupdate wurde heruntergeladen. +Version [VERSION] +Dieser experimentelle Viewer wurde durch einen [NEW_CHANNEL] Viewer ersetzt; +weitere Infos zu diesem Update finden Sie [[INFO_URL] hier]. + +Zur Installation des Updates muss [APP_NAME] neu gestartet werden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + Zur Installation des Updates muss [APP_NAME] neu gestartet werden. +Dieser experimentelle Viewer wurde durch einen [NEW_CHANNEL] Viewer ersetzt; +weitere Infos zu diesem Update finden Sie [[INFO_URL] hier]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1549,6 +1587,10 @@ Zur Installation des Updates muss [APP_NAME] neu gestartet werden. Diese Gruppe verlassen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + Sie können die Gruppe nicht verlassen, da Sie der letzte Besitzer der Gruppe sind. Weisen Sie die Besitzerrolle zuerst einem anderen Mitglied zu. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Möchten Sie WIRKLICH alle Benutzer aus dem Grid werfen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/> @@ -2410,9 +2452,7 @@ Wählen Sie ein einzelnes Objekt aus. „Teleportieren“ wählen.) </notification> <notification name="TeleportToPerson"> - Um Einwohner wie „[NAME]“ zu kontaktieren, klicken Sie auf die Schaltfläche „Leute“, wählen Sie eingeblendeten Fenster einen Einwohner aus - und klicken Sie unten im Fenster auf „IM“. - (Sie können auch auf den Namen doppelklicken bzw. ihn mit der rechten Maustaste anklicken und dann „IM“ wählen.) + Um eine private Unterhaltung zu beginnen, klicken Sie mit der rechten Maustaste auf den gewünschten Avatar und wählen Sie im Menü „IM“ aus. </notification> <notification name="CantSelectLandFromMultipleRegions"> Land kann nicht über Servergrenzen hinweg ausgewählt werden. @@ -2786,6 +2826,15 @@ Gewähren Sie dem Objekt nur dann Zugriff, wenn Sie genau verstehen, wieso ein s <button name="Deny" text="Verweigern"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + Die Runtime-Skript-Berechtigung, die von „<nolink>[OBJECTNAME]</nolink>“ (Besitzer: „[NAME]“) angefordert wurde, wird vom Viewer nicht erkannt und kann nicht gewährt werden. + +Um diese Berechtigung zu gewähren, laden Sie die neueste Version des Viewers von [DOWNLOADURL] herunter. + <form name="form"> + <button name="Deny" text="OK"/> + <button name="Mute" text="Blockieren"/> + </form> + </notification> <notification name="ScriptDialog"> „<nolink>[TITLE]</nolink>“ von [NAME] [MESSAGE] diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 8c05ca2c24..2d56d6b7d2 100755 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -49,6 +49,9 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte]. <menu_button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/> <dnd_button name="minus_btn" tool_tip="Ausgewählte Gruppe verlassen"/> </panel> + <text name="groupcount"> + Sie gehören [COUNT] Gruppen an und können [REMAINING] weiteren beitreten. + </text> </panel> <panel label="AKTUELL" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml index 8193fd42c1..8eb815fd1b 100755 --- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Text-Chat" name="chat"> - <panel> + <panel name="general_chat_settings"> <check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/> - <check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/> + <check_box label="IMs per E-Mail zustellen, wenn ich offline bin" name="send_im_to_email"/> <check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/> <text name="font_size"> Schriftgröße: @@ -14,10 +14,7 @@ </combo_box> <check_box label="Blasen-Chat" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Benachrichtigungen - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> IMs von Freunden: </text> @@ -25,8 +22,9 @@ <item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/> <item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/> <item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/> - <item label="None" name="None" value="none"/> + <item label="Keine Aktion" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sound abspielen" name="play_sound_friend_im"/> <text name="non_friend_ims"> IMs von anderen: </text> @@ -34,8 +32,9 @@ <item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/> <item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/> <item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/> - <item label="None" name="None" value="none"/> + <item label="Keine Aktion" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sound abspielen" name="play_sound_non_friend_im"/> <text name="conference_ims"> Konferenz-IMs: </text> @@ -43,8 +42,9 @@ <item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/> <item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/> <item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/> - <item label="None" name="None" value="none"/> + <item label="Keine Aktion" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sound abspielen" name="play_sound_conference_im"/> <text name="group_chat"> Gruppen-Chat: </text> @@ -52,8 +52,9 @@ <item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/> <item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/> <item label="Flash-Symbolleistenschaltfläche" name="FlashToolbarButton" value="flash"/> - <item label="None" name="None" value="none"/> + <item label="Keine Aktion" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sound abspielen" name="play_sound_group_chat_im"/> <text name="nearby_chat"> Chat in der Nähe: </text> @@ -61,25 +62,36 @@ <item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/> <item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/> <item label="Flash-Symbolleistenschaltfläche" name="FlashToolBarButton" value="flash"/> - <item label="None" name="None" value="none"/> + <item label="Keine Aktion" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Sound abspielen" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + IMs von Objekten: + </text> + <combo_box name="ObjectIMOptions"> + <item label="Unterhaltungsfenster öffnen" name="OpenConversationsWindow" value="openconversations"/> + <item label="Nachricht in Popup anzeigen" name="PopUpMessage" value="toast"/> + <item label="Flash-Symbolleistenschaltfläche" name="FlashToolBarButton" value="flash"/> + <item label="Keine Aktion" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sound abspielen" name="play_sound_object_im"/> <text name="notifications_alert"> Um vorübergehend alle Benachrichtigungen zu stoppen, wählen Sie „Unterhalten“ > „Nicht stören“. </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Sound abspielen: </text> <check_box label="Neue Unterhaltung" name="new_conversation"/> - <check_box label="Eingehender Anruf..." name="incoming_voice_call"/> + <check_box label="Eingehender Anruf" name="incoming_voice_call"/> <check_box label="Teleport-Angebot" name="teleport_offer"/> <check_box label="Inventarangebot" name="inventory_offer"/> </panel> - <panel> + <panel name="log_settings"> <button label="Protokoll löschen..." name="clear_log"/> - <button label="Protokolle löschen..." name="delete_transcripts"/> - <button label="Durchsuchen..." label_selected="Durchsuchen" name="log_path_button"/> + <button label="Transkripte löschen..." name="delete_transcripts"/> + <button label="Durchsuchen..." label_selected="Durchblättern" name="log_path_button"/> </panel> <button label="Übersetzen..." name="ok_btn"/> <button label="Automatisch ersetzen..." name="autoreplace_showgui"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index 9175ea0bae..f3746a7c82 100755 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="true" label="Lokale Lichtquellen" name="LocalLights"/> <check_box initial_value="true" label="Einfache Shader" name="BasicShaders" tool_tip="Deaktivieren Sie diese Option, wenn der Grafikkartentreiber Abstürze verursacht"/> <check_box initial_value="true" label="Atmosphären-Shader" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Licht und Schatten" name="UseLightShaders"/> + <check_box initial_value="true" label="Erweitertes Beleuchtungsmodell" name="UseLightShaders"/> <check_box initial_value="true" label="Ambient Occlusion" name="UseSSAO"/> <check_box initial_value="true" label="Schärfentiefe" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index 8c7ea688d7..24e5033bfc 100755 --- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Automatisch installieren" name="Install_automatically"/> <combo_box.item label="Updates manuell herunterladen und installieren" name="Install_manual"/> </combo_box> + <check_box label="Bereit, Release-Kandidaten zu verwenden" name="update_willing_to_test"/> <text name="Proxy Settings:"> Proxy-Einstellungen: </text> diff --git a/indra/newview/skins/default/xui/de/panel_script_ed.xml b/indra/newview/skins/default/xui/de/panel_script_ed.xml index 7e03aeff15..d688bedd5c 100755 --- a/indra/newview/skins/default/xui/de/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/de/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Alle auswählen" name="Select All"/> <menu_item_call label="Auswahl aufheben" name="Deselect"/> <menu_item_call label="Suchen / Ersetzen..." name="Search / Replace..."/> + <menu_item_call label="Gehe zu Zeile..." name="Go to line..."/> </menu> <menu label="Hilfe" name="Help"> <menu_item_call label="Hilfe..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/de/panel_tools_texture.xml b/indra/newview/skins/default/xui/de/panel_tools_texture.xml new file mode 100644 index 0000000000..18517d7a7d --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Textur" name="Texture"> + <panel.string name="string repeats per meter"> + Wiederholungen pro Meter + </panel.string> + <panel.string name="string repeats per face"> + Wiederholungen pro Fläche + </panel.string> + <text name="color label"> + Farbe + </text> + <color_swatch label="" name="colorswatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <text name="color trans"> + Transparenz % + </text> + <text name="glow label"> + Leuchten + </text> + <check_box label="Ganz hell" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Material" name="Materials"/> + <combo_box.item label="Medien" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Textur (diffus)" name="Texture (diffuse)"/> + <combo_box.item label="Unebenheit (normal)" name="Bumpiness (normal)"/> + <combo_box.item label="Glanzlicht (Spiegel)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/> + <text name="label alphamode"> + Alpha-Modus + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Keiner" name="None"/> + <combo_box.item label="Alpha-Mischung" name="Alpha blending"/> + <combo_box.item label="Alpha-Maske" name="Alpha masking"/> + <combo_box.item label="Selbststrahlende Maske" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Maskenabgrenzung + </text> + <texture_picker label="Textur" name="bumpytexture control" tool_tip="Klicken, um ein Bild auszuwählen"/> + <text name="label bumpiness"> + Unebenheit + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Keine" name="None"/> + <combo_box.item label="Helligkeit" name="Brightness"/> + <combo_box.item label="Dunkelheit" name="Darkness"/> + <combo_box.item label="Holzmaserung" name="woodgrain"/> + <combo_box.item label="Rinde" name="bark"/> + <combo_box.item label="Backsteine" name="bricks"/> + <combo_box.item label="Schachbrett" name="checker"/> + <combo_box.item label="Beton" name="concrete"/> + <combo_box.item label="Rostkachel" name="crustytile"/> + <combo_box.item label="Steinfliesen" name="cutstone"/> + <combo_box.item label="Scheiben" name="discs"/> + <combo_box.item label="Kies" name="gravel"/> + <combo_box.item label="Petrischale" name="petridish"/> + <combo_box.item label="Verkleidung" name="siding"/> + <combo_box.item label="Steinkachel" name="stonetile"/> + <combo_box.item label="Stuck" name="stucco"/> + <combo_box.item label="Saugkraft" name="suction"/> + <combo_box.item label="Gewebe" name="weave"/> + </combo_box> + <texture_picker label="Textur" name="shinytexture control" tool_tip="Klicken, um ein Bild auszuwählen"/> + <text name="label shininess"> + Glanz + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Keiner" name="None"/> + <combo_box.item label="Niedrig" name="Low"/> + <combo_box.item label="Mittel" name="Medium"/> + <combo_box.item label="Hoch" name="High"/> + </combo_box> + <text name="label glossiness"> + Glanz + </text> + <text name="label environment"> + Umgebung + </text> + <text name="label shinycolor"> + Farbe + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <text name="media_info"> + URL der ausgewählten Medien ggf. hier angeben + </text> + <button label="Auswählen..." name="add_media" tool_tip="Medien hinzufügen"/> + <button label="Entfernen" name="delete_media" tool_tip="Diese Medientextur löschen"/> + <button label="Ausrichten" label_selected="Medien ausrichten" name="button align" tool_tip="Medientextur ausrichten (muss zuerst geladen werden)"/> + <text name="tex gen"> + Zuordnung + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="Standard" name="Default"/> + <combo_box.item label="Planar" name="Planar"/> + </combo_box> + <spinner label="Horizontale Skalierung" name="TexScaleU"/> + <spinner label="Vertikale Skalierung" name="TexScaleV"/> + <spinner label="Wiederholungen pro Meter" name="rptctrl"/> + <spinner label="Drehung (Grad)" name="TexRot"/> + <spinner label="Horizontaler Versatz" name="TexOffsetU"/> + <spinner label="Vertikaler Versatz" name="TexOffsetV"/> + <spinner label="Horizontale Skalierung" name="bumpyScaleU"/> + <spinner label="Vertikale Skalierung" name="bumpyScaleV"/> + <spinner label="Drehung (Grad)" name="bumpyRot"/> + <spinner label="Horizontaler Versatz" name="bumpyOffsetU"/> + <spinner label="Vertikaler Versatz" name="bumpyOffsetV"/> + <spinner label="Horizontale Skalierung" name="shinyScaleU"/> + <spinner label="Vertikale Skalierung" name="shinyScaleV"/> + <spinner label="Drehung (Grad)" name="shinyRot"/> + <spinner label="Horizontaler Versatz" name="shinyOffsetU"/> + <spinner label="Vertikaler Versatz" name="shinyOffsetV"/> + <check_box initial_value="false" label="Planare Flächen ausrichten" name="checkbox planar align" tool_tip="Texturen auf allen ausgewählten Flächen an der zuletzt ausgewählten Fläche ausrichten. Erfordert planares Texture Mapping."/> +</panel> diff --git a/indra/newview/skins/default/xui/de/role_actions.xml b/indra/newview/skins/default/xui/de/role_actions.xml index 5d9dcacd51..3e9d406e5f 100755 --- a/indra/newview/skins/default/xui/de/role_actions.xml +++ b/indra/newview/skins/default/xui/de/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." name="Parcel Identity"> <action description="„Ort in Suche anzeigen" ein-/ausschalten und Kategorie festlegen." longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Ort in Suche anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen." name="land find places" value="17"/> - <action description="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen" ändern" longdescription="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen" ändern Diese Einstellungen finden Sie unter „Land-Info“ > Registerkarte „Optionen“." name="land change identity" value="18"/> + <action description="Parzellenname, Beschreibung und Einstelllungen für „Moderater Inhalt“ ändern" longdescription="Parzellenname, Beschreibung und Einstelllungen für „Moderater Inhalt“ ändern. Diese Einstellungen finden Sie unter „Land-Info“ > Registerkarte „Optionen“." name="land change identity" value="18"/> <action description="Landepunkt und Teleport-Route festlegen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." name="land set landing point" value="19"/> </action_set> <action_set description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index e142cb8029..c8c20424e1 100755 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -139,6 +139,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> Mit dem von Ihnen verwendeten Viewer ist der Zugriff auf Second Life nicht mehr möglich. Laden Sie von den folgenden Seite einen neuen Viewer herunter: http://secondlife.com/download @@ -448,6 +451,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="SLappAgentRequestFriend"> Freundschaftsangebot </string> + <string name="SLappAgentRemoveFriend"> + Entfernen von Freunden + </string> <string name="BUTTON_CLOSE_DARWIN"> Schließen (⌘W) </string> @@ -838,6 +844,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="multiple_textures"> Mehrfach </string> + <string name="use_texture"> + Textur verwenden + </string> <string name="texture_loading"> Wird geladen... </string> @@ -937,6 +946,21 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="TeleportYourAgent"> Sie teleportieren </string> + <string name="JoinAnExperience"> + Bei einem Erlebnis mitmachen + </string> + <string name="SilentlyManageEstateAccess"> + Beim Verwalten von Grundbesitzzugangslisten Warnhinweise unterdrücken + </string> + <string name="OverrideYourAnimations"> + Ihre Standardanimationen ersetzen + </string> + <string name="ScriptReturnObjects"> + Objekte in Ihrem Namen zurückgeben + </string> + <string name="UnknownScriptPermission"> + (unbekannt) + </string> <string name="SIM_ACCESS_PG"> Generell </string> @@ -1968,6 +1992,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD unten rechts </string> + <string name="ATTACH_NECK"> + Hals + </string> + <string name="ATTACH_AVATAR_CENTER"> + Avatar-Mitte + </string> <string name="CursorPos"> Zeile [LINE], Spalte [COLUMN] </string> @@ -2997,6 +3027,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Hip Width"> Breite der Hüfte </string> + <string name="Hover"> + Schweben + </string> <string name="In"> In </string> @@ -5081,4 +5114,7 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="logging_calls_enabled_log_empty"> Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden. </string> + <string name="loading_chat_logs"> + Laden... + </string> </strings> diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index 47fae51fac..ba91b0b5d9 100755 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -117,37 +117,37 @@ <menu_item_check name="Normal" - label="Normal"> + label="Normal Rendering"> <menu_item_check.on_check - function="Avatar.CheckImposterMode" + function="Avatar.CheckImpostorMode" parameter="0" /> <menu_item_check.on_click - function="Avatar.SetImposterMode" + function="Avatar.SetImpostorMode" parameter="0" /> </menu_item_check> <menu_item_check - name="Always use imposter" - label="Always use imposter"> + name="Always use impostor" + label="Always use impostor"> <menu_item_check.on_check - function="Avatar.CheckImposterMode" + function="Avatar.CheckImpostorMode" parameter="1" /> <menu_item_check.on_click - function="Avatar.SetImposterMode" + function="Avatar.SetImpostorMode" parameter="1" /> </menu_item_check> <menu_item_check - name="Never use imposter" - label="Never use imposter"> + name="Never use impostor" + label="Never use impostor"> <menu_item_check.on_check - function="Avatar.CheckImposterMode" + function="Avatar.CheckImpostorMode" parameter="2" /> <menu_item_check.on_click - function="Avatar.SetImposterMode" + function="Avatar.SetImpostorMode" parameter="2" /> </menu_item_check> <menu_item_separator - layout="topleft" /> + layout="topleft" name="Impostor seperator"/> <menu_item_call enabled="false" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index 935b5b3ea0..8bd013f14b 100755 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -110,37 +110,37 @@ <menu_item_check name="Normal" - label="Normal"> + label="Normal Rendering"> <menu_item_check.on_check - function="Avatar.CheckImposterMode" + function="Avatar.CheckImpostorMode" parameter="0" /> <menu_item_check.on_click - function="Avatar.SetImposterMode" + function="Avatar.SetImpostorMode" parameter="0" /> </menu_item_check> <menu_item_check - name="Always use imposter" - label="Always use imposter"> + name="Always use impostor" + label="Always use impostor"> <menu_item_check.on_check - function="Avatar.CheckImposterMode" + function="Avatar.CheckImpostorMode" parameter="1" /> <menu_item_check.on_click - function="Avatar.SetImposterMode" + function="Avatar.SetImpostorMode" parameter="1" /> </menu_item_check> <menu_item_check - name="Never use imposter" - label="Never use imposter"> + name="Never use impostor" + label="Never use impostor"> <menu_item_check.on_check - function="Avatar.CheckImposterMode" + function="Avatar.CheckImpostorMode" parameter="2" /> <menu_item_check.on_click - function="Avatar.SetImposterMode" + function="Avatar.SetImpostorMode" parameter="2" /> </menu_item_check> - <menu_item_separator - layout="topleft" /> + <menu_item_separator + layout="topleft" name="Impostor seperator"/> <menu_item_call enabled="false" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index cea8c6f593..2ec0910aea 100755 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -93,7 +93,7 @@ <menu_item_check label="Fly" name="Fly" - shortcut="PGUP"> + shortcut="HOME"> <menu_item_check.on_check function="Agent.getFlying" /> <menu_item_check.on_click @@ -104,7 +104,7 @@ <menu_item_call label="Stop flying" name="Stop flying" - shortcut="PGDN"> + shortcut="HOME"> <menu_item_call.on_click function="Agent.toggleFlying" /> <menu_item_call.on_enable diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 3c9508bb74..6c485c0595 100755 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -244,7 +244,7 @@ invisiblity_control="ShowAdvancedGraphicsSettings" height="16" initial_value="true" - label="Lighting and Shadows" + label="Advanced Lighting Model" layout="topleft" left="30" name="UseLightShaders2" diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml index 5ac2ec2b20..426c0c4915 100644 --- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml @@ -663,7 +663,7 @@ label_width="205" layout="topleft" left="10" - min_val="-1" + min_val="0" name="bumpyOffsetU" width="265" /> <spinner @@ -674,7 +674,7 @@ label_width="205" layout="topleft" left="10" - min_val="-1" + min_val="0" name="bumpyOffsetV" width="265" /> <spinner @@ -726,7 +726,7 @@ label_width="205" layout="topleft" left="10" - min_val="-1" + min_val="0" name="shinyOffsetU" width="265" /> <spinner @@ -737,7 +737,7 @@ label_width="205" layout="topleft" left="10" - min_val="-1" + min_val="0" name="shinyOffsetV" width="265" /> <check_box diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index 7ca1e3721f..e0a2375067 100755 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -8,7 +8,9 @@ Compilado con [COMPILER], versión [COMPILER_VERSION] </floater.string> <floater.string name="AboutPosition"> - Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1], de [REGION], alojada en <nolink>[HOSTNAME]</nolink> ([HOSTIP]) + Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] de [REGION], alojada en <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(coordenadas globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml index f1948220b4..5cd8b3c01f 100755 --- a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="EDITAR LOS PERMISOS DEL CONTENIDO"> +<floater name="floaterbulkperms" title="AJUSTAR LOS PERMISOS DEL CONTENIDO"> <floater.string name="nothing_to_modify_text"> Lo seleccionado tiene contenidos no editables. </floater.string> @@ -33,7 +33,7 @@ <button label="√ Todos" label_selected="Todo" name="check_all"/> <button label="Limpiar" label_selected="Ninguno" name="check_none"/> <text name="newperms"> - Permisos nuevos del contenido + Ajustar los permisos del contenido a </text> <text name="GroupLabel"> Grupo: @@ -49,6 +49,7 @@ <check_box label="Modificarlo" name="next_owner_modify"/> <check_box label="Copiarlo" name="next_owner_copy"/> <check_box initial_value="true" label="Transferirlo" name="next_owner_transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> - <button label="OK" name="apply"/> + <button label="OK" name="ok"/> + <button label="Aplicar" name="apply"/> <button label="Cancelar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_goto_line.xml b/indra/newview/skins/default/xui/es/floater_goto_line.xml new file mode 100644 index 0000000000..ef3ed80fcb --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="IR A LA LÍNEA"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + Ir a la línea + </text> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml index 5f38fbd615..e5f48e3fd5 100755 --- a/indra/newview/skins/default/xui/es/floater_im_session.xml +++ b/indra/newview/skins/default/xui/es/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Traducir el chat" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traducir el chat" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml index 3602270e5a..e93ecc9e10 100755 --- a/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/es/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Mostrar: </text> - <check_box label="Prueba" name="show_world"/> + <check_box label="Mundo virtual" name="show_world"/> <check_box label="Solamente los objetos movibles" name="show_world_movables_only"/> <check_box label="Navmesh" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml index 00bdb74881..7698348c00 100755 --- a/indra/newview/skins/default/xui/es/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Congelar" name="Freeze..."/> <menu_item_call label="Expulsar" name="Eject..."/> <menu_item_call label="Depurar las texturas" name="Debug..."/> + <menu_item_call label="Volcar XML" name="Dump XML"/> <menu_item_call label="Acercar el zoom" name="Zoom In"/> <menu_item_call label="Pagar" name="Pay..."/> <menu_item_call label="Perfil del objeto" name="Object Inspect"/> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml index 0ba39378bb..5acd0c327a 100755 --- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> <menu_item_call label="Depurar las texturas" name="Debug..."/> + <menu_item_call label="Volcar XML" name="Dump XML"/> <menu_item_call label="Soltar" name="Drop"/> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml index 7df2d7c4e0..244099214a 100755 --- a/indra/newview/skins/default/xui/es/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Congelar" name="Freeze..."/> <menu_item_call label="Expulsar" name="Eject..."/> <menu_item_call label="Depurar las texturas" name="Debug..."/> + <menu_item_call label="Volcar XML" name="Dump XML"/> <menu_item_call label="Acercar el zoom" name="Zoom In"/> <menu_item_call label="Pagar" name="Pay..."/> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml index 268d6f70ab..717b46ac74 100755 --- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="Mis grupos" name="Groups..."/> <menu_item_call label="Mi perfil" name="Profile..."/> <menu_item_call label="Depurar las texturas" name="Debug..."/> + <menu_item_call label="Volcar XML" name="Dump XML"/> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_conversation.xml b/indra/newview/skins/default/xui/es/menu_conversation.xml index e4e9a0bf63..b63711589d 100644 --- a/indra/newview/skins/default/xui/es/menu_conversation.xml +++ b/indra/newview/skins/default/xui/es/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Cerrar conversación" name="close_conversation"/> <menu_item_call label="Abrir conversación de voz" name="open_voice_conversation"/> <menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/> + <menu_item_call label="Cerrar seleccionados" name="close_selected_conversations"/> <menu_item_call label="Ver el perfil" name="view_profile"/> <menu_item_call label="MI" name="im"/> <menu_item_call label="Ofrecer teleporte" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/es/menu_land.xml b/indra/newview/skins/default/xui/es/menu_land.xml index b0f15be1b6..2097628356 100755 --- a/indra/newview/skins/default/xui/es/menu_land.xml +++ b/indra/newview/skins/default/xui/es/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Comprar un pase" name="Land Buy Pass"/> <menu_item_call label="Construir" name="Create"/> <menu_item_call label="Modificar el terreno" name="Edit Terrain"/> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index 289ac3f075..2286d0527a 100755 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml @@ -17,7 +17,13 @@ <menu_item_call label="Mostrar los 'TOS'" name="TOS"/> <menu_item_call label="Mostrar mensaje crítico" name="Critical"/> <menu_item_call label="Prueba de depuración de ventanas de contenido web" name="Web Content Floater Debug Test"/> - <menu label="Configurar el nivel de registro" name="Set Logging Level"/> + <menu label="Configurar el nivel de registro" name="Set Logging Level"> + <menu_item_check label="Depurar" name="Debug"/> + <menu_item_check label="Información" name="Info"/> + <menu_item_check label="¡Atención!" name="Warning"/> + <menu_item_check label="Error" name="Error"/> + <menu_item_check label="Ninguno" name="None"/> + </menu> <menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/> <menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_mute_particle.xml b/indra/newview/skins/default/xui/es/menu_mute_particle.xml new file mode 100644 index 0000000000..daddf982de --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml index 33ea8c88d8..e75c7283af 100755 --- a/indra/newview/skins/default/xui/es/menu_object.xml +++ b/indra/newview/skins/default/xui/es/menu_object.xml @@ -5,13 +5,13 @@ </menu_item_call> <menu_item_call label="Editar" name="Edit..."/> <menu_item_call label="Construir" name="Build"/> - <menu_item_call label="Mostrar en linksets" name="show_in_linksets"/> - <menu_item_call label="Mostrar en personajes" name="show_in_characters"/> <menu_item_call label="Abrir" name="Open"/> <menu_item_call label="Sentarme aquí" name="Object Sit"/> <menu_item_call label="Levantarme" name="Object Stand Up"/> <menu_item_call label="Perfil del objeto" name="Object Inspect"/> <menu_item_call label="Acercar el zoom" name="Zoom In"/> + <menu_item_call label="Mostrar en linksets" name="show_in_linksets"/> + <menu_item_call label="Mostrar en personajes" name="show_in_characters"/> <context_menu label="Ponerme" name="Put On"> <menu_item_call label="Ponerme" name="Wear"/> <menu_item_call label="Añadir" name="Add"/> @@ -28,4 +28,5 @@ <menu_item_call label="Pagar" name="Pay..."/> <menu_item_call label="Comprar" name="Buy..."/> <menu_item_call label="Borrar" name="Delete"/> + <menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml index 69a03671ab..610d65465d 100755 --- a/indra/newview/skins/default/xui/es/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/es/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Ver el perfil" name="show_agent"/> <menu_item_call label="Enviar un MI..." name="send_im"/> <menu_item_call label="Añadir como amigo..." name="add_friend"/> + <menu_item_call label="Quitar de los amigos..." name="remove_friend"/> <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/> <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml index e78fdec558..c3c8439ea2 100755 --- a/indra/newview/skins/default/xui/es/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/es/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Perfil del objeto..." name="show_object"/> + <menu_item_call label="Ignorar..." name="block_object"/> <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> <menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/> <menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 1e0ceb2220..e4fe871683 100755 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/> <menu_item_call label="Caminar / Correr / Volar..." name="Walk / run / fly"/> </menu> - <menu label="Estado" name="Status"/> + <menu label="Estado" name="Status"> + <menu_item_check label="Ausente" name="Away"/> + <menu_item_check label="No molestar" name="Do Not Disturb"/> + </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> <menu_item_call label="Panel de control de la cuenta..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/> @@ -31,6 +34,7 @@ <menu_item_check label="Conversaciones..." name="Conversations"/> <menu_item_check label="Chat..." name="Nearby Chat"/> <menu_item_check label="Hablar" name="Speak"/> + <menu_item_check label="Registro de conversación..." name="Conversation Log..."/> <menu label="Transformación de voz" name="VoiceMorphing"> <menu_item_check label="Sin transformación de voz" name="NoVoiceMorphing"/> <menu_item_check label="Probar..." name="Preview"/> @@ -41,6 +45,7 @@ <menu_item_check label="Grupos" name="My Groups"/> <menu_item_check label="Gente cerca" name="Active Speakers"/> <menu_item_call label="Lista de ignorados" name="Block List"/> + <menu_item_check label="No molestar" name="Do Not Disturb"/> </menu> <menu label="Mundo" name="World"> <menu_item_call label="Crear un hito de este sitio" name="Create Landmark Here"/> @@ -109,6 +114,7 @@ <menu_item_call label="Incluir la parte siguiente" name="Include Next Part"/> <menu_item_call label="Incluir la parte previa" name="Include Previous Part"/> </menu> + <menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Visión en lo seleccionado" name="Focus on Selection"/> <menu_item_call label="Zoom en lo seleccionado" name="Zoom to Selection"/> <menu label="Objeto" name="Object"> @@ -272,6 +278,7 @@ <menu_item_check label="Camera Offset" name="Camera Offset"/> <menu_item_check label="Randomize Framerate" name="Randomize Framerate"/> <menu_item_check label="Frame Test" name="Frame Test"/> + <menu_item_call label="Perfil del fotograma" name="Frame Profile"/> </menu> <menu label="Render Metadata" name="Render Metadata"> <menu_item_check label="Normales" name="Normals"/> @@ -292,15 +299,15 @@ </menu> <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> + <menu_item_call label="Información sobre el material seleccionado" name="Selected Material Info"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Luces y sombras" name="Advanced Lighting Model"/> + <menu_item_check label="Modelo de iluminación avanzado" name="Advanced Lighting Model"/> <menu_item_check label="Sombras del sol/la luna/proyectores" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO y sombras suavizadas" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Capas alfa automáticas (deferidas)" name="Automatic Alpha Masks (deferred)"/> <menu_item_check label="Capas alfa automáticas (no deferidas)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Animation Textures" name="Animation Textures"/> <menu_item_check label="Disable Textures" name="Disable Textures"/> - <menu_item_check label="Atlas de texturas (experimental)" name="Texture Atlas"/> <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> @@ -319,7 +326,6 @@ <menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/> <menu_item_call label="Navegador de contenido web" name="Web Content Browser"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> - <menu_item_call label="Memory Stats" name="Memory Stats"/> <menu_item_check label="Consola de depuración de región" name="Region Debug Console"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index 05455f54c3..d4451ad251 100755 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -206,6 +206,14 @@ No podrás removérseles de ese rol, sino que deberán renunciar a él por sí m ¿Añadir esta capacidad a '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> </notification> + <notification name="EjectGroupMemberWarning"> + Estás a punto de expulsar a [AVATAR_NAME] del grupo. + <usetemplate ignoretext="Confirmar la expulsión de un miembro del grupo" name="okcancelignore" notext="Cancelar" yestext="Expulsar"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Estás a punto de expulsar a [COUNT] miembros del grupo. + <usetemplate ignoretext="Confirmar la expulsión de varios miembros del grupo" name="okcancelignore" notext="Cancelar" yestext="Expulsar"/> + </notification> <notification name="AttachmentDrop"> Vas a soltar tu anexado. ¿Estás seguro de que quieres continuar? @@ -1113,7 +1121,7 @@ en TODO EL TERRENO de este sim? Por favor, elige un pago mayor. </notification> <notification name="ConfirmItemDeleteHasLinks"> - Por lo menos uno de los elementos seleccionados contiene vínculos que le señalan. Si eliminas este elemento, los vínculos dejarán de funcionar permanentemente. Lo más recomendable es eliminar primero los vínculos. + Por lo menos uno de los elementos contiene vínculos que lo señalan. Si eliminas este elemento, los vínculos dejarán de funcionar permanentemente. Lo más recomendable es eliminar primero los vínculos. ¿Estás seguro de que quieres eliminar los elementos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -1131,9 +1139,9 @@ Por favor, elige un pago mayor. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> - No eres el propietario de, al menos, uno de los ítems que has seleccionado. + Uno o más de los elementos seleccionados no son tuyos. -¿Estás seguro de que quieres borrar estos ítems? +¿Estás seguro de que quieres eliminar los elementos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> @@ -1144,25 +1152,25 @@ Al menos un objeto no es copiable. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoOwn"> - Al menos un objeto está bloqueado. -No eres propietario de, al menos, un objeto. + Hay un objeto bloqueado como mínimo. +No eres propietario de al menos un objeto. -¿Estás seguro de que quieres borrar estos ítems? +¿Estás seguro de que quieres eliminar los elementos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> - Al menos un objeto no es copiable. -No eres propietario de, al menos, un objeto. + No se puede copiar un objeto como mínimo. +No eres propietario de al menos un objeto. -¿Estás seguro de que quieres borrar estos ítems? +¿Estás seguro de que quieres eliminar los elementos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> - Al menos un objeto está bloqueado. -Al menos un objeto no es copiable. -No eres propietario de, al menos, un objeto. + Hay un objeto bloqueado como mínimo. +No se puede copiar un objeto como mínimo. +No eres propietario de al menos un objeto. -¿Estás seguro de que quieres borrar estos ítems? +¿Estás seguro de que quieres eliminar los elementos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> @@ -1486,13 +1494,43 @@ Versión [VERSION] [[RELEASE_NOTES_FULL_URL]; información acerca de esta actual </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> Hemos descargado una actualización de software necesaria. -Versión [VERSION] +Versión [VERSION] [[INFO_URL] Información sobre esta actualización] -Debemos reiniciar [APP_NAME] para instalar la actualización. +Para instalar la actualización, hay que reiniciar [APP_NAME]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> - Debemos reiniciar [APP_NAME] para instalar la actualización. + Para instalar la actualización, hay que reiniciar [APP_NAME]. +[[INFO_URL] Información sobre esta actualización] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + Hemos descargado una actualización aplicable a tu instalación de [APP_NAME]. +Versión [VERSION] +Este visor experimental se ha sustituido por un visor de [NEW_CHANNEL]. +Consulta [[INFO_URL] para informarte sobre esta actualización.] + <usetemplate name="okcancelbuttons" notext="Más tarde..." yestext="Instalar ahora y reiniciar [APP_NAME]"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + Hemos descargado una actualización aplicable a tu instalación de [APP_NAME]. +Versión [VERSION] +Este visor experimental se ha sustituido por un visor de [NEW_CHANNEL]. +Consulta [[INFO_URL] Información sobre esta actualización]. + <usetemplate name="okcancelbuttons" notext="Más tarde..." yestext="Instalar ahora y reiniciar [APP_NAME]"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + Hemos descargado una actualización de software necesaria. +Versión [VERSION] +Este visor experimental se ha sustituido por un visor de [NEW_CHANNEL]. +Consulta [[INFO_URL] Información sobre esta actualización]. + +Para instalar la actualización, hay que reiniciar [APP_NAME]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + Para instalar la actualización, hay que reiniciar [APP_NAME]. +Este visor experimental se ha sustituido por un visor de [NEW_CHANNEL]. +Consulta [[INFO_URL] Información sobre esta actualización]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1543,6 +1581,10 @@ Debemos reiniciar [APP_NAME] para instalar la actualización. ¿Deseas abandonar el grupo? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + No es posible abandonar el grupo. No puedes abandonarlo porque eres su último propietario. Antes tienes que asignar el papel de propietario a otro miembro. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> ¿Quieres realmente expulsar a todos los residentes de la cuadrícula? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar a todos los Residentes"/> @@ -2404,9 +2446,7 @@ Por favor, selecciona un sólo objeto. elegir 'Teleportar'.) </notification> <notification name="TeleportToPerson"> - Para ponerte en contacto con Residentes como '[NAME]', pulsa el botón "Gente", selecciona un Residente en la ventana que se abre y después pulsa en 'MI' en - la parte inferior de la ventana. - (También puedes pulsar dos veces en su nombre o pulsarlo con el botón derecho y elegir 'MI'). + Para abrir una conversación privada con alguien, pulsa con el botón derecho en su avatar y selecciona 'MI' en el menú. </notification> <notification name="CantSelectLandFromMultipleRegions"> No puedes seleccionar un terreno que cruce las fronteras entre servidores. @@ -2780,6 +2820,15 @@ No autorices el acceso a tu cuenta si no conoces cuál es la razón exacta. <button name="Deny" text="Denegar"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + '<nolink>[OBJECTNAME]</nolink>', un objeto propiedad de '[NAME]', ha solicitado un permiso de script en tiempo de ejecución que el visor no reconoce ni puede conceder. + +Para obtener el permiso, descárgate aquí la última versión: [DOWNLOADURL]. + <form name="form"> + <button name="Deny" text="Aceptar"/> + <button name="Mute" text="Ignorar"/> + </form> + </notification> <notification name="ScriptDialog"> '<nolink>[TITLE]</nolink>' de [NAME] [MESSAGE] diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml index 7a7dfca0b8..06150f7619 100755 --- a/indra/newview/skins/default/xui/es/panel_people.xml +++ b/indra/newview/skins/default/xui/es/panel_people.xml @@ -49,6 +49,9 @@ <menu_button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/> <dnd_button name="minus_btn" tool_tip="Dejar el grupo seleccionado"/> </panel> + <text name="groupcount"> + Formas parte de [COUNT] grupos y puedes unirte a [REMAINING] más. + </text> </panel> <panel label="RECIENTE" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml index 28bc98f988..7feff9005c 100755 --- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat de texto" name="chat"> - <panel> + <panel name="general_chat_settings"> <check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/> <check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/> <check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/> @@ -8,66 +8,78 @@ Tamaño de la fuente: </text> <combo_box name="chat_font_size"> - <item label="Pequeña" name="Small" value="0"/> - <item label="Mediana" name="Medium" value="1"/> + <item label="Pequeño" name="Small" value="0"/> + <item label="Medio" name="Medium" value="1"/> <item label="Grande" name="Large" value="2"/> </combo_box> <check_box label="Bocadillos del chat" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Notificaciones - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> MI de amigos: </text> <combo_box name="FriendIMOptions"> - <item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/> + <item label="Abrir ventana de conversaciones" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir el mensaje en una ventana emergente" name="PopUpMessage" value="toast"/> <item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/> - <item label="Ninguno" name="None" value="ninguno"/> + <item label="Ninguna acción" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Reproducir sonido" name="play_sound_friend_im"/> <text name="non_friend_ims"> MI de no amigos: </text> <combo_box name="NonFriendIMOptions"> - <item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/> + <item label="Abrir ventana de conversaciones" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir el mensaje en una ventana emergente" name="PopUpMessage" value="toast"/> <item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/> - <item label="Ninguno" name="None" value="ninguno"/> + <item label="Ninguna acción" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Reproducir sonido" name="play_sound_non_friend_im"/> <text name="conference_ims"> - MI de conferencia: + MI de conferencias: </text> <combo_box name="ConferenceIMOptions"> - <item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/> + <item label="Abrir ventana de conversaciones" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir el mensaje en una ventana emergente" name="PopUpMessage" value="toast"/> <item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/> - <item label="Ninguno" name="None" value="ninguno"/> + <item label="Ninguna acción" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Reproducir sonido" name="play_sound_conference_im"/> <text name="group_chat"> Chat de grupo: </text> <combo_box name="GroupChatOptions"> - <item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/> + <item label="Abrir ventana de conversaciones" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir el mensaje en una ventana emergente" name="PopUpMessage" value="toast"/> <item label="Botón de la barra de herramientas de Flash" name="FlashToolbarButton" value="flash"/> - <item label="Ninguno" name="None" value="ninguno"/> + <item label="Ninguna acción" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Reproducir sonido" name="play_sound_group_chat_im"/> <text name="nearby_chat"> - Chat: + Chat con gente cercana: </text> <combo_box name="NearbyChatOptions"> - <item label="Ventana Conversaciones abiertas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mensaje en ventana emergente" name="PopUpMessage" value="toast"/> + <item label="Abrir ventana de conversaciones" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir el mensaje en una ventana emergente" name="PopUpMessage" value="toast"/> + <item label="Botón de la barra de herramientas de Flash" name="FlashToolBarButton" value="flash"/> + <item label="Ninguna acción" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Reproducir sonido" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + MI de objetos: + </text> + <combo_box name="ObjectIMOptions"> + <item label="Abrir ventana de conversaciones" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir el mensaje en una ventana emergente" name="PopUpMessage" value="toast"/> <item label="Botón de la barra de herramientas de Flash" name="FlashToolBarButton" value="flash"/> - <item label="Ninguno" name="None" value="ninguno"/> + <item label="Ninguna acción" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Reproducir sonido" name="play_sound_object_im"/> <text name="notifications_alert"> - Para suspender provisionalmente todas las notificaciones, usa Comunicarme > No molestar. + Para dejar de recibir avisos durante un tiempo, usa Comunicarme > No molestar. </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Reproducir sonido: </text> @@ -76,9 +88,9 @@ <check_box label="Oferta de teleporte" name="teleport_offer"/> <check_box label="Oferta de inventario" name="inventory_offer"/> </panel> - <panel> - <button label="Limpiar el registro..." name="clear_log"/> - <button label="Eliminar transcripciones..." name="delete_transcripts"/> + <panel name="log_settings"> + <button label="Borrar registro..." name="clear_log"/> + <button label="Borrar grabaciones..." name="delete_transcripts"/> <button label="Examinar..." label_selected="Examinar" name="log_path_button"/> </panel> <button label="Traducción…" name="ok_btn"/> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml index 281b871fed..9362f76708 100755 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="verdadero" label="Luces locales" name="LocalLights"/> <check_box initial_value="true" label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/> <check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/> - <check_box initial_value="verdadero" label="Luces y sombras" name="UseLightShaders"/> + <check_box initial_value="verdadero" label="Modelo de iluminación avanzado" name="UseLightShaders"/> <check_box initial_value="verdadero" label="Oclusión del ambiente" name="UseSSAO"/> <check_box initial_value="verdadero" label="Profundidad del campo" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml index 81a29dae5a..f7eaa03d63 100755 --- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Instalar automáticamente" name="Install_automatically"/> <combo_box.item label="Descargar e instalar actualizaciones manualmente" name="Install_manual"/> </combo_box> + <check_box label="Admitir candidatos a la versión comercial a la hora de realizar actualizaciones" name="update_willing_to_test"/> <text name="Proxy Settings:"> Configuración de proxy: </text> diff --git a/indra/newview/skins/default/xui/es/panel_script_ed.xml b/indra/newview/skins/default/xui/es/panel_script_ed.xml index 4c4077b96f..87314820a6 100755 --- a/indra/newview/skins/default/xui/es/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/es/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Seleccionar todo" name="Select All"/> <menu_item_call label="Deseleccionar" name="Deselect"/> <menu_item_call label="Buscar / Reemplazar..." name="Search / Replace..."/> + <menu_item_call label="Ir a la línea..." name="Go to line..."/> </menu> <menu label="Ayuda" name="Help"> <menu_item_call label="Ayuda..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/es/panel_tools_texture.xml b/indra/newview/skins/default/xui/es/panel_tools_texture.xml new file mode 100644 index 0000000000..7199905a1c --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Textura" name="Texture"> + <panel.string name="string repeats per meter"> + Repeticiones por metro + </panel.string> + <panel.string name="string repeats per face"> + Repeticiones por cara + </panel.string> + <text name="color label"> + Color + </text> + <color_swatch label="" name="colorswatch" tool_tip="Pulsa para abrir el selector de color"/> + <text name="color trans"> + Porcentaje de transparencia + </text> + <text name="glow label"> + Resplandor + </text> + <check_box label="Brillo total" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Materiales" name="Materials"/> + <combo_box.item label="Media" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Textura (difuminar)" name="Texture (diffuse)"/> + <combo_box.item label="Rugosidad (normal)" name="Bumpiness (normal)"/> + <combo_box.item label="Brillo (efecto espejo)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Textura" name="texture control" tool_tip="Pulsa para elegir una imagen"/> + <text name="label alphamode"> + Modo alfa + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Ninguno" name="None"/> + <combo_box.item label="Mezclado alfa" name="Alpha blending"/> + <combo_box.item label="Máscara alfa" name="Alpha masking"/> + <combo_box.item label="Máscara de emisión lumínica" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Límite de máscara + </text> + <texture_picker label="Textura" name="bumpytexture control" tool_tip="Pulsa para elegir una imagen"/> + <text name="label bumpiness"> + Rugosidad + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Ninguna" name="None"/> + <combo_box.item label="Claridad" name="Brightness"/> + <combo_box.item label="Oscuridad" name="Darkness"/> + <combo_box.item label="madera" name="woodgrain"/> + <combo_box.item label="corteza" name="bark"/> + <combo_box.item label="ladrillos" name="bricks"/> + <combo_box.item label="cuadrícula" name="checker"/> + <combo_box.item label="hormigón" name="concrete"/> + <combo_box.item label="azulejo" name="crustytile"/> + <combo_box.item label="piedralabrada" name="cutstone"/> + <combo_box.item label="discos" name="discs"/> + <combo_box.item label="gravilla" name="gravel"/> + <combo_box.item label="placadepetri" name="petridish"/> + <combo_box.item label="revestimiento" name="siding"/> + <combo_box.item label="baldosa" name="stonetile"/> + <combo_box.item label="estuco" name="stucco"/> + <combo_box.item label="succión" name="suction"/> + <combo_box.item label="tejido" name="weave"/> + </combo_box> + <texture_picker label="Textura" name="shinytexture control" tool_tip="Pulsa para elegir una imagen"/> + <text name="label shininess"> + Brillo + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Ninguno" name="None"/> + <combo_box.item label="Bajo" name="Low"/> + <combo_box.item label="Medio" name="Medium"/> + <combo_box.item label="Alto" name="High"/> + </combo_box> + <text name="label glossiness"> + Efecto pulido + </text> + <text name="label environment"> + Entorno + </text> + <text name="label shinycolor"> + Color + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Pulsa para abrir el selector de color"/> + <text name="media_info"> + Espacio para la URL del media elegido, si procede + </text> + <button label="Elegir..." name="add_media" tool_tip="Añadir un media"/> + <button label="Eliminar" name="delete_media" tool_tip="Borrar esta textura para media"/> + <button label="Centrar" label_selected="Centrar los media" name="button align" tool_tip="Centrar esta textura para media (primero debe cargarse)"/> + <text name="tex gen"> + Representación + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="Por defecto" name="Default"/> + <combo_box.item label="En el plano" name="Planar"/> + </combo_box> + <spinner label="Escala horizontal" name="TexScaleU"/> + <spinner label="Escala vertical" name="TexScaleV"/> + <spinner label="Repeticiones por metro" name="rptctrl"/> + <spinner label="Grados de rotación" name="TexRot"/> + <spinner label="Desplazamiento horizontal" name="TexOffsetU"/> + <spinner label="Desplazamiento vertical" name="TexOffsetV"/> + <spinner label="Escala horizontal" name="bumpyScaleU"/> + <spinner label="Escala vertical" name="bumpyScaleV"/> + <spinner label="Grados de rotación" name="bumpyRot"/> + <spinner label="Desplazamiento horizontal" name="bumpyOffsetU"/> + <spinner label="Desplazamiento vertical" name="bumpyOffsetV"/> + <spinner label="Escala horizontal" name="shinyScaleU"/> + <spinner label="Escala vertical" name="shinyScaleV"/> + <spinner label="Grados de rotación" name="shinyRot"/> + <spinner label="Desplazamiento horizontal" name="shinyOffsetU"/> + <spinner label="Desplazamiento vertical" name="shinyOffsetV"/> + <check_box initial_value="falso" label="Alinear caras del plano" name="checkbox planar align" tool_tip="Alinear texturas en todas las caras seleccionadas con la última cara seleccionada. Requiere la representación de texturas en el plano."/> +</panel> diff --git a/indra/newview/skins/default/xui/es/role_actions.xml b/indra/newview/skins/default/xui/es/role_actions.xml index 660293b02c..902ed4df52 100755 --- a/indra/newview/skins/default/xui/es/role_actions.xml +++ b/indra/newview/skins/default/xui/es/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="Estas capacidades incluyen poder cambiar el nombre de la parcela y su configuración, así como si se muestra en Buscar y las opciones del punto de llegada y el de teleporte." name="Parcel Identity"> <action description="Cambiar 'Mostrar el sitio en Buscar' y configurar la categoría" longdescription="Cambia 'Mostrar el sitio en Buscar' y el configurar la categoría de una parcela en Acerca del terreno > pestaña Opciones." name="land find places" value="17"/> - <action description="Cambiar el nombre de la parcela, su descripción, y la configuración de 'Mostrar el sitio en Buscar'" longdescription="Cambia el nombre de la parcela, su descripción, y la configuración de 'Mostrar el sitio en Buscar'. Se hace en Acerca del terreno > pestaña Opciones." name="land change identity" value="18"/> + <action description="Cambia el nombre de la parcela, su descripción y la configuración de 'Contenido moderado'." longdescription="Cambia el nombre de la parcela, su descripción y la configuración de 'Contenido moderado'. Se hace en Acerca del terreno > pestaña Opciones." name="land change identity" value="18"/> <action description="Definir los puntos de llegada y teleporte" longdescription="En una parcela perteneciente al grupo, los miembros con un rol que tenga esta capacidad pueden precisar el punto de llegada o el de teleporte. Se hace en Acerca del terreno > pestaña Opciones." name="land set landing point" value="19"/> </action_set> <action_set description="Estas capacidades incluyen poderes que afectan a las opciones de la parcela, como 'Crear objetos', 'Editar el terreno' y las configuraciones de la música y los media." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 937433e210..4686d1ed3a 100755 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -130,6 +130,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download. + </string> <string name="LoginFailedViewerNotPermitted"> Ya no puedes acceder a Second Life con el visor que estás utilizando. Visita la siguiente página para descargar un nuevo visor: http://secondlife.com/download. @@ -439,6 +442,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="SLappAgentRequestFriend"> Petición de amistad </string> + <string name="SLappAgentRemoveFriend"> + Eliminación de amigos + </string> <string name="BUTTON_CLOSE_DARWIN"> Cerrar (⌘W) </string> @@ -823,6 +829,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="anim_yes_head"> Sí </string> + <string name="use_texture"> + Usar textura + </string> <string name="texture_loading"> Cargando... </string> @@ -919,6 +928,21 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="TeleportYourAgent"> Teleportarte </string> + <string name="JoinAnExperience"> + Únete a una experiencia + </string> + <string name="SilentlyManageEstateAccess"> + Suprimir alertas al gestionar las listas de acceso a un estado + </string> + <string name="OverrideYourAnimations"> + Reemplazar tus animaciones predeterminadas + </string> + <string name="ScriptReturnObjects"> + Devolver objetos en tu nombre + </string> + <string name="UnknownScriptPermission"> + (desconocido) + </string> <string name="SIM_ACCESS_PG"> General </string> @@ -1944,6 +1968,12 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD: abajo der. </string> + <string name="ATTACH_NECK"> + Cuello + </string> + <string name="ATTACH_AVATAR_CENTER"> + Centro del avatar + </string> <string name="CursorPos"> Línea [LINE], Columna [COLUMN] </string> @@ -2931,6 +2961,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="Hip Width"> Cadera: ancho </string> + <string name="Hover"> + Pasa el cursor + </string> <string name="In"> Pegadas </string> @@ -4991,4 +5024,7 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas <string name="logging_calls_enabled_log_empty"> No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquí se mostrará una entrada de registro. </string> + <string name="loading_chat_logs"> + Cargando... + </string> </strings> diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index d45bdccf3e..384966354e 100755 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -9,6 +9,8 @@ </floater.string> <floater.string name="AboutPosition"> Vous êtes à [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] dans [REGION], se trouvant à <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL : <nolink>[SLURL]</nolink> +(coordonnées globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml index ab68ce166b..7ee4441758 100755 --- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="MODIFIER LES DROITS"> +<floater name="floaterbulkperms" title="MODIFIER LES DROITS RELATIFS AU CONTENU"> <floater.string name="nothing_to_modify_text"> Certains contenus sont non modifiables. </floater.string> @@ -33,7 +33,7 @@ <button label="√ Tout" label_selected="Tout" name="check_all"/> <button label="Effacer" label_selected="Aucun" name="check_none"/> <text name="newperms"> - Nouveaux droits + Modifier les droits relatifs au contenu et remplacer par </text> <text name="GroupLabel"> Groupe : @@ -49,6 +49,7 @@ <check_box label="Modifier" name="next_owner_modify"/> <check_box label="Copier" name="next_owner_copy"/> <check_box initial_value="true" label="Transférer" name="next_owner_transfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet"/> - <button label="OK" name="apply"/> + <button label="OK" name="ok"/> + <button label="Appliquer" name="apply"/> <button label="Annuler" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_goto_line.xml b/indra/newview/skins/default/xui/fr/floater_goto_line.xml new file mode 100644 index 0000000000..fdc800b40b --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="ALLER À LA LIGNE"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + Aller à la ligne + </text> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml index 8ab98b8e4e..6d98f0a846 100755 --- a/indra/newview/skins/default/xui/fr/floater_im_session.xml +++ b/indra/newview/skins/default/xui/fr/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Traduire le chat" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traduire le chat" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml index 0bcf55aba5..02d969dc08 100755 --- a/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Afficher : </text> - <check_box label="Test" name="show_world"/> + <check_box label="Monde" name="show_world"/> <check_box label="Mobiles uniquement" name="show_world_movables_only"/> <check_box label="Maillage de navigation" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml index f48513eb2b..0450be28e0 100755 --- a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Figer" name="Freeze..."/> <menu_item_call label="Expulser" name="Eject..."/> <menu_item_call label="Déboguer les textures" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> <menu_item_call label="Zoomer en avant" name="Zoom In"/> <menu_item_call label="Payer" name="Pay..."/> <menu_item_call label="Profil de l'objet" name="Object Inspect"/> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml index 6af2064e44..f2e7928c24 100755 --- a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> <menu_item_call label="Déboguer les textures" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> <menu_item_call label="Lâcher" name="Drop"/> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml index 08d1a20361..1f5c1724f8 100755 --- a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Figer" name="Freeze..."/> <menu_item_call label="Expulser" name="Eject..."/> <menu_item_call label="Déboguer les textures" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> <menu_item_call label="Zoomer en avant" name="Zoom In"/> <menu_item_call label="Payer" name="Pay..."/> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml index 6310a2177a..4815ad0676 100755 --- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="Mes groupes" name="Groups..."/> <menu_item_call label="Mon profil" name="Profile..."/> <menu_item_call label="Déboguer les textures" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_conversation.xml b/indra/newview/skins/default/xui/fr/menu_conversation.xml index 857ead603b..09109f4555 100644 --- a/indra/newview/skins/default/xui/fr/menu_conversation.xml +++ b/indra/newview/skins/default/xui/fr/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Fermer la conversation" name="close_conversation"/> <menu_item_call label="Ouvrir une conversation vocale" name="open_voice_conversation"/> <menu_item_call label="Se déconnecter de la conversation et du canal vocal" name="disconnect_from_voice"/> + <menu_item_call label="Fermer la sélection" name="close_selected_conversations"/> <menu_item_call label="Voir le profil" name="view_profile"/> <menu_item_call label="IM" name="im"/> <menu_item_call label="Proposer une téléportation." name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/fr/menu_land.xml b/indra/newview/skins/default/xui/fr/menu_land.xml index b84daee3ae..7beaf00c58 100755 --- a/indra/newview/skins/default/xui/fr/menu_land.xml +++ b/indra/newview/skins/default/xui/fr/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Acheter un pass" name="Land Buy Pass"/> <menu_item_call label="Construire" name="Create"/> <menu_item_call label="Modifier le terrain" name="Edit Terrain"/> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index dc6b2793ca..7b1e106474 100755 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -18,7 +18,13 @@ <menu_item_call label="Afficher les conditions d'utilisation" name="TOS"/> <menu_item_call label="Afficher le message critique" name="Critical"/> <menu_item_call label="Test de débogage de la fenêtre flottante du contenu Web" name="Web Content Floater Debug Test"/> - <menu label="Définir le niveau de connexion" name="Set Logging Level"/> + <menu label="Définir le niveau de connexion" name="Set Logging Level"> + <menu_item_check label="Débogage" name="Debug"/> + <menu_item_check label="Infos" name="Info"/> + <menu_item_check label="Avertissement" name="Warning"/> + <menu_item_check label="Erreur" name="Error"/> + <menu_item_check label="Aucun" name="None"/> + </menu> <menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/> <menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_mute_particle.xml b/indra/newview/skins/default/xui/fr/menu_mute_particle.xml new file mode 100644 index 0000000000..5f5e4c8b08 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml index 573b6da582..d7b69e495a 100755 --- a/indra/newview/skins/default/xui/fr/menu_object.xml +++ b/indra/newview/skins/default/xui/fr/menu_object.xml @@ -5,13 +5,13 @@ </menu_item_call> <menu_item_call label="Modifier" name="Edit..."/> <menu_item_call label="Construire" name="Build"/> - <menu_item_call label="Voir parmi les groupes de liens" name="show_in_linksets"/> - <menu_item_call label="Voir parmi les personnages" name="show_in_characters"/> <menu_item_call label="Ouvrir" name="Open"/> <menu_item_call label="M'asseoir ici" name="Object Sit"/> <menu_item_call label="Me lever" name="Object Stand Up"/> <menu_item_call label="Profil de l'objet" name="Object Inspect"/> <menu_item_call label="Zoomer en avant" name="Zoom In"/> + <menu_item_call label="Voir parmi les groupes de liens" name="show_in_linksets"/> + <menu_item_call label="Voir parmi les personnages" name="show_in_characters"/> <context_menu label="Porter" name="Put On"> <menu_item_call label="Porter" name="Wear"/> <menu_item_call label="Ajouter" name="Add"/> @@ -28,4 +28,5 @@ <menu_item_call label="Payer" name="Pay..."/> <menu_item_call label="Acheter" name="Buy..."/> <menu_item_call label="Supprimer" name="Delete"/> + <menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml index d701b3a414..2c7443c6ca 100755 --- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Voir le profil" name="show_agent"/> <menu_item_call label="Envoyer IM..." name="send_im"/> <menu_item_call label="Devenir amis..." name="add_friend"/> + <menu_item_call label="Supprimer cet ami..." name="remove_friend"/> <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/> <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml index 0a934d3e69..5d745ef5f8 100755 --- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Profil de l'objet…" name="show_object"/> + <menu_item_call label="Ignorer…" name="block_object"/> <menu_item_call label="Voir sur la carte" name="show_on_map"/> <menu_item_call label="Me téléporter à l'emplacement de l'objet" name="teleport_to_object"/> <menu_item_call label="Copier le nom de l'objet dans le presse-papiers" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 548f144742..5d0026ace0 100755 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/> <menu_item_call label="Marcher / Courir / Voler..." name="Walk / run / fly"/> </menu> - <menu label="Statut" name="Status"/> + <menu label="Statut" name="Status"> + <menu_item_check label="Absent" name="Away"/> + <menu_item_check label="Ne pas déranger" name="Do Not Disturb"/> + </menu> <menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/> <menu_item_call label="Boîte d'envoi vendeur..." name="MerchantOutbox"/> <menu_item_call label="Page d'accueil du compte..." name="Manage My Account"> @@ -32,6 +35,7 @@ <menu_item_check label="Conversations..." name="Conversations"/> <menu_item_check label="Chat près de moi..." name="Nearby Chat"/> <menu_item_check label="Parler" name="Speak"/> + <menu_item_check label="Journal des conversations..." name="Conversation Log..."/> <menu label="Effet de voix" name="VoiceMorphing"> <menu_item_check label="Aucun effet de voix" name="NoVoiceMorphing"/> <menu_item_check label="Aperçu..." name="Preview"/> @@ -42,6 +46,7 @@ <menu_item_check label="Groupes" name="My Groups"/> <menu_item_check label="Personnes près de vous" name="Active Speakers"/> <menu_item_call label="Liste des ignorés" name="Block List"/> + <menu_item_check label="Ne pas déranger" name="Do Not Disturb"/> </menu> <menu label="Monde" name="World"> <menu_item_call label="Créer un repère pour ce lieu" name="Create Landmark Here"/> @@ -110,6 +115,7 @@ <menu_item_call label="Inclure la partie suivante" name="Include Next Part"/> <menu_item_call label="Inclure la partie précédente" name="Include Previous Part"/> </menu> + <menu_item_call label="Groupes de liens..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Point central sur la sélection" name="Focus on Selection"/> <menu_item_call label="Zoomer sur la sélection" name="Zoom to Selection"/> <menu label="Objet" name="Object"> @@ -279,6 +285,7 @@ <menu_item_check label="Taux de défilement aléatoire" name="Randomize Framerate"/> <menu_item_check label="Cadre lent périodique" name="Periodic Slow Frame"/> <menu_item_check label="Test cadre" name="Frame Test"/> + <menu_item_call label="Profil du cadre" name="Frame Profile"/> </menu> <menu label="Métadonnées de rendu" name="Render Metadata"> <menu_item_check label="Cadres" name="Bounding Boxes"/> @@ -313,9 +320,10 @@ <menu_item_check label="Axes" name="Axes"/> <menu_item_check label="Tangente" name="Tangent Basis"/> <menu_item_call label="Base des infos de la texture sélectionnée" name="Selected Texture Info Basis"/> + <menu_item_call label="Infos sur les matériaux sélectionnés" name="Selected Material Info"/> <menu_item_check label="Filaire" name="Wireframe"/> <menu_item_check label="Occlusion objet-objet" name="Object-Object Occlusion"/> - <menu_item_check label="Éclairage et ombres" name="Advanced Lighting Model"/> + <menu_item_check label="Modèle d'éclairage avancé" name="Advanced Lighting Model"/> <menu_item_check label="Ombres du soleil/de la lune/des projecteurs" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO et lissage des ombres" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Débogage GL" name="Debug GL"/> @@ -325,7 +333,6 @@ <menu_item_check label="Textures d'animation" name="Animation Textures"/> <menu_item_check label="Désactiver les textures" name="Disable Textures"/> <menu_item_check label="Textures pleine résolution" name="Rull Res Textures"/> - <menu_item_check label="Atlas des textures (expérimental)" name="Texture Atlas"/> <menu_item_check label="Rendu des lumières jointes" name="Render Attached Lights"/> <menu_item_check label="Rendu des particules jointes" name="Render Attached Particles"/> <menu_item_check label="Objets en surbrillance avec le pointeur" name="Hover Glow Objects"/> @@ -361,7 +368,6 @@ <menu_item_call label="Dump Focus Holder" name="Dump Focus Holder"/> <menu_item_call label="Imprimer les infos sur l'objet sélectionné" name="Print Selected Object Info"/> <menu_item_call label="Imprimer les infos sur l'avatar" name="Print Agent Info"/> - <menu_item_call label="Statistiques de mémoire" name="Memory Stats"/> <menu_item_check label="Console de débogage de région" name="Region Debug Console"/> <menu_item_check label="Débogage SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="Débogage clics" name="Debug Clicks"/> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index e73cc6e6e0..c295a6f5a7 100755 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -209,6 +209,14 @@ Ajouter ce pouvoir à « [ROLE_NAME] » ? Ajouter ce pouvoir à « [ROLE_NAME] » ? <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> </notification> + <notification name="EjectGroupMemberWarning"> + Vous allez expulser [AVATAR_NAME] du groupe. + <usetemplate ignoretext="Confirmer l'expulsion d'un membre du groupe" name="okcancelignore" notext="Annuler" yestext="Expulser"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Vous allez expulser [COUNT] membres du groupe. + <usetemplate ignoretext="Confirmer l'expulsion de plusieurs membres du groupe" name="okcancelignore" notext="Annuler" yestext="Expulser"/> + </notification> <notification name="AttachmentDrop"> Vous êtes sur le point d'abandonner l'élément joint. Voulez-vous vraiment continuer ? @@ -1106,7 +1114,7 @@ Voir https://wiki.secondlife.com/wiki/Adding_Spelling_Dictionaries Veuillez saisir un montant plus élevé. </notification> <notification name="ConfirmItemDeleteHasLinks"> - Des articles liés pointent vers au moins un article sélectionné. Les liens arrêteront définitivement de fonctionner si vous supprimez cet article. Il est vivement conseillé de supprimer d'abord ces liens. + Des liens pointent vers au moins un article sélectionné. Les liens arrêteront définitivement de fonctionner si vous supprimez cet article. Il est vivement conseillé de supprimer d'abord ces liens. Voulez-vous vraiment supprimer ces articles ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> @@ -1126,7 +1134,7 @@ Voulez-vous vraiment supprimer ces articles ? <notification name="ConfirmObjectDeleteNoOwn"> Au moins un des objets que vous avez sélectionnés ne vous appartient pas. -Êtes-vous certain de vouloir supprimer ces objets ? +Voulez-vous vraiment supprimer ces articles ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> @@ -1140,23 +1148,23 @@ Au moins un des objets n'est pas copiable. Au moins un des objets est verrouillé. Au moins un des objets ne vous appartient pas. -Êtes-vous certain de vouloir supprimer ces objets ? +Voulez-vous vraiment supprimer ces articles ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> - Au moins un des objets n'est pas copiable. + Au moins un des objets n'est pas reproductible. Au moins un des objets ne vous appartient pas. -Êtes-vous certain de vouloir supprimer ces objets ? +Voulez-vous vraiment supprimer ces articles ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> Au moins un des objets est verrouillé. -Au moins un des objets n'est pas copiable. +Au moins un des objets n'est pas reproductible. Au moins un des objets ne vous appartient pas. -Êtes-vous certain de vouloir supprimer ces objets ? - <usetemplate name="okcancelbuttons" notext="annuler" yestext="OK"/> +Voulez-vous vraiment supprimer ces articles ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> Au moins un des objets est verrouillé. @@ -1477,13 +1485,43 @@ Version [VERSION] [[RELEASE_NOTES_FULL_URL] Informations relatives à cette mise </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> Nous avons téléchargé une mise à jour logicielle requise. -Version [VERSION] +Version [VERSION] [Informations au sujet de cette mise à jour [INFO_URL]] [APP_NAME] doit être redémarré pour que la mise à jour soit installée. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> [APP_NAME] doit être redémarré pour que la mise à jour soit installée. +[Informations au sujet de cette mise à jour [INFO_URL]] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + Nous avons téléchargé une mise à jour de votre installation [APP_NAME]. +Version [VERSION] +Le client expérimental a été remplacé par un nouveau client [NEW_CHANNEL] ; +consultez [[INFO_URL] pour en savoir plus sur cette mise à jour] + <usetemplate name="okcancelbuttons" notext="Ultérieurement..." yestext="Installer maintenant et redémarrer [APP_NAME]"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + Nous avons téléchargé une mise à jour de votre installation [APP_NAME]. +Version [VERSION] +Le client expérimental a été remplacé par un nouveau client [NEW_CHANNEL] ; +consultez [Informations au sujet de cette mise à jour [INFO_URL]] + <usetemplate name="okcancelbuttons" notext="Ultérieurement..." yestext="Installer maintenant et redémarrer [APP_NAME]"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + Nous avons téléchargé une mise à jour logicielle requise. +Version [VERSION] +Le client expérimental a été remplacé par un nouveau client [NEW_CHANNEL] ; +consultez [Informations au sujet de cette mise à jour [INFO_URL]] + +[APP_NAME] doit être redémarré pour que la mise à jour soit installée. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + [APP_NAME] doit être redémarré pour que la mise à jour soit installée. +Le client expérimental a été remplacé par un nouveau client [NEW_CHANNEL] ; +consultez [Informations au sujet de cette mise à jour [INFO_URL]] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1534,6 +1572,10 @@ Version [VERSION] Quitter le groupe ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + Impossible de quitter le groupe. Vous ne pouvez pas quitter le groupe car vous en êtes le dernier propriétaire. Vous devez d'abord affecter le rôle de propriétaire à un autre membre. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Souhaitez-vous vraiment éjecter tous les résidents de la grille ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Éjecter tous les résidents"/> @@ -2396,9 +2438,7 @@ Veuillez sélectionner un seul objet. choisir Téléportation). </notification> <notification name="TeleportToPerson"> - Pour contacter un résident tel que [NAME], cliquez sur le bouton Personnes, sélectionnez le résident dans la fenêtre qui s'ouvre, puis cliquez sur IM en - bas de la fenêtre. - (Vous pouvez aussi double-cliquer sur le nom du résident dans la liste ou cliquer-droit dessus et choisir IM.) + Pour ouvrir une conversation privée avec une autre personne, cliquez-droit sur son avatar et choisissez IM dans le menu. </notification> <notification name="CantSelectLandFromMultipleRegions"> Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur. @@ -2772,6 +2812,15 @@ N'autorisez pas cet accès si vous ne comprenez pas entièrement pourquoi l <button name="Deny" text="Refuser"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + Le client ne reconnaît pas le droit de script à l'exécution demandé par <nolink>[OBJECTNAME]</nolink>, objet appartenant à [NAME], et ne peut donc pas l'accorder. + +Pour accorder ce droit, mettez votre client à jour pour passer à la version la plus récente, à partir de [DOWNLOADURL]. + <form name="form"> + <button name="Deny" text="OK"/> + <button name="Mute" text="Ignorer"/> + </form> + </notification> <notification name="ScriptDialog"> <nolink>[TITLE]</nolink> de [NAME] [MESSAGE] diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml index 227ce26df7..e306a00183 100755 --- a/indra/newview/skins/default/xui/fr/panel_people.xml +++ b/indra/newview/skins/default/xui/fr/panel_people.xml @@ -49,6 +49,9 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife:// <menu_button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/> <dnd_button name="minus_btn" tool_tip="Quitter le groupe sélectionné"/> </panel> + <text name="groupcount"> + Vous appartenez à [COUNT] groupes, et pouvez en rejoindre [REMAINING] autres. + </text> </panel> <panel label="RÉCENT" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> 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 972190dc15..52c6ed24b9 100755 --- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat écrit" name="chat"> - <panel> + <panel name="general_chat_settings"> <check_box initial_value="true" label="Exécuter l'animation clavier quand vous écrivez" name="play_typing_animation"/> <check_box label="M'envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/> <check_box label="Seuls mes amis et groupes peuvent m'appeler ou m'envoyer un IM" name="voice_call_friends_only_check"/> @@ -14,60 +14,72 @@ </combo_box> <check_box label="Bulles de chat" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Notifications - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> IM amis : </text> <combo_box name="FriendIMOptions"> <item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/> <item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/> - <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="clignote"/> - <item label="Aucun(e)" name="None" value="aucun(e)"/> + <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="flash"/> + <item label="Aucune action" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Écouter le son" name="play_sound_friend_im"/> <text name="non_friend_ims"> IM non amis : </text> <combo_box name="NonFriendIMOptions"> <item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/> <item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/> - <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="clignote"/> - <item label="Aucun(e)" name="None" value="aucun(e)"/> + <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="flash"/> + <item label="Aucune action" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Écouter le son" name="play_sound_non_friend_im"/> <text name="conference_ims"> IM conférence : </text> <combo_box name="ConferenceIMOptions"> <item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/> <item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/> - <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="clignote"/> - <item label="Aucun(e)" name="None" value="aucun(e)"/> + <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="flash"/> + <item label="Aucune action" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Écouter le son" name="play_sound_conference_im"/> <text name="group_chat"> Chat de groupe : </text> <combo_box name="GroupChatOptions"> <item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/> <item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/> - <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="clignote"/> - <item label="Aucun(e)" name="None" value="aucun(e)"/> + <item label="Bouton de la barre d'outils Flash" name="FlashToolbarButton" value="flash"/> + <item label="Aucune action" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Écouter le son" name="play_sound_group_chat_im"/> <text name="nearby_chat"> Chat près de moi : </text> <combo_box name="NearbyChatOptions"> <item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/> <item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/> - <item label="Bouton de la barre d'outils Flash" name="FlashToolBarButton" value="clignote"/> - <item label="Aucun(e)" name="None" value="aucun(e)"/> + <item label="Bouton de la barre d'outils Flash" name="FlashToolBarButton" value="flash"/> + <item label="Aucune action" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Écouter le son" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + IM objet : + </text> + <combo_box name="ObjectIMOptions"> + <item label="Ouvrir la fenêtre Conversation" name="OpenConversationsWindow" value="openconversations"/> + <item label="Afficher le message dans une fenêtre popup" name="PopUpMessage" value="toast"/> + <item label="Bouton de la barre d'outils Flash" name="FlashToolBarButton" value="flash"/> + <item label="Aucune action" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Écouter le son" name="play_sound_object_im"/> <text name="notifications_alert"> Pour suspendre temporairement toutes les notifications, utilisez Communication > Ne pas déranger. </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Écouter le son : </text> @@ -76,7 +88,7 @@ <check_box label="Offre de téléportation" name="teleport_offer"/> <check_box label="Offre d'inventaire" name="inventory_offer"/> </panel> - <panel> + <panel name="log_settings"> <button label="Effacer le journal..." name="clear_log"/> <button label="Supprimer les transcriptions..." name="delete_transcripts"/> <button label="Parcourir..." label_selected="Parcourir" name="log_path_button"/> 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 a738b2d43f..4946b09814 100755 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="true" label="Lumières locales" name="LocalLights"/> <check_box initial_value="true" label="Effets de base" name="BasicShaders" tool_tip="La désactivation de cette option peut éviter le plantage de certains pilotes de cartes graphiques"/> <check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Éclairage et ombres" name="UseLightShaders"/> + <check_box initial_value="true" label="Modèle d'éclairage avancé" name="UseLightShaders"/> <check_box initial_value="true" label="Occlusion ambiante" name="UseSSAO"/> <check_box initial_value="true" label="Profondeur de champ" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml index 83303950dc..50f4a49bd0 100755 --- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Installation automatique" name="Install_automatically"/> <combo_box.item label="Téléchargement et installation manuels" name="Install_manual"/> </combo_box> + <check_box label="Accepte de passer aux versions avant sortie officielle" name="update_willing_to_test"/> <text name="Proxy Settings:"> Paramètres de proxy : </text> diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml index 29fbe3c7e7..38e5cbe1f1 100755 --- a/indra/newview/skins/default/xui/fr/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/fr/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Tout sélectionner" name="Select All"/> <menu_item_call label="Désélectionner" name="Deselect"/> <menu_item_call label="Rechercher / Remplacer..." name="Search / Replace..."/> + <menu_item_call label="Aller à la ligne..." name="Go to line..."/> </menu> <menu label="Aide" name="Help"> <menu_item_call label="Aide..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/fr/panel_tools_texture.xml b/indra/newview/skins/default/xui/fr/panel_tools_texture.xml new file mode 100644 index 0000000000..c69cb61a92 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Texture" name="Texture"> + <panel.string name="string repeats per meter"> + Répétitions au mètre + </panel.string> + <panel.string name="string repeats per face"> + Répétitions par face + </panel.string> + <text name="color label"> + Couleur + </text> + <color_swatch label="" name="colorswatch" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + <text name="color trans"> + % de transparence + </text> + <text name="glow label"> + Rayonnement + </text> + <check_box label="Lumineux" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Matériaux" name="Materials"/> + <combo_box.item label="Médias" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Texture (diffuse)" name="Texture (diffuse)"/> + <combo_box.item label="Relief (normal)" name="Bumpiness (normal)"/> + <combo_box.item label="Brillance (spéculaire)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Texture" name="texture control" tool_tip="Cliquer pour sélectionner une image."/> + <text name="label alphamode"> + Mode alpha + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Aucun" name="None"/> + <combo_box.item label="Fusion alpha" name="Alpha blending"/> + <combo_box.item label="Masquage alpha" name="Alpha masking"/> + <combo_box.item label="Masque émissif" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Coupe du masque + </text> + <texture_picker label="Texture" name="bumpytexture control" tool_tip="Cliquer pour sélectionner une image."/> + <text name="label bumpiness"> + Relief + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Aucun" name="None"/> + <combo_box.item label="Luminosité" name="Brightness"/> + <combo_box.item label="Obscurité" name="Darkness"/> + <combo_box.item label="aggloméré" name="woodgrain"/> + <combo_box.item label="écorce" name="bark"/> + <combo_box.item label="briques" name="bricks"/> + <combo_box.item label="damier" name="checker"/> + <combo_box.item label="béton" name="concrete"/> + <combo_box.item label="carrelage" name="crustytile"/> + <combo_box.item label="pierre de taille" name="cutstone"/> + <combo_box.item label="disques" name="discs"/> + <combo_box.item label="gravier" name="gravel"/> + <combo_box.item label="boîte de Petri" name="petridish"/> + <combo_box.item label="lattes" name="siding"/> + <combo_box.item label="carreaux" name="stonetile"/> + <combo_box.item label="stuc" name="stucco"/> + <combo_box.item label="ventouses" name="suction"/> + <combo_box.item label="tissage" name="weave"/> + </combo_box> + <texture_picker label="Texture" name="shinytexture control" tool_tip="Cliquer pour sélectionner une image."/> + <text name="label shininess"> + Brillance + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Aucune" name="None"/> + <combo_box.item label="Faible" name="Low"/> + <combo_box.item label="Moyenne" name="Medium"/> + <combo_box.item label="Élevée" name="High"/> + </combo_box> + <text name="label glossiness"> + Lustrage + </text> + <text name="label environment"> + Environnement + </text> + <text name="label shinycolor"> + Couleur + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + <text name="media_info"> + L'URL du média choisi, le cas échéant, se place ici. + </text> + <button label="Choisir..." name="add_media" tool_tip="Ajouter un média"/> + <button label="Supprimer" name="delete_media" tool_tip="Supprimer cette texture de média"/> + <button label="Aligner" label_selected="Aligner le média" name="button align" tool_tip="Ajuster la texture du média (le chargement doit d’abord se terminer)"/> + <text name="tex gen"> + Application + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="Valeur par défaut" name="Default"/> + <combo_box.item label="Plan" name="Planar"/> + </combo_box> + <spinner label="Échelle horizontale" name="TexScaleU"/> + <spinner label="Échelle verticale" name="TexScaleV"/> + <spinner label="Répétitions au mètre" name="rptctrl"/> + <spinner label="Degrés de rotation" name="TexRot"/> + <spinner label="Décalage horizontal" name="TexOffsetU"/> + <spinner label="Décalage vertical" name="TexOffsetV"/> + <spinner label="Échelle horizontale" name="bumpyScaleU"/> + <spinner label="Échelle verticale" name="bumpyScaleV"/> + <spinner label="Degrés de rotation" name="bumpyRot"/> + <spinner label="Décalage horizontal" name="bumpyOffsetU"/> + <spinner label="Décalage vertical" name="bumpyOffsetV"/> + <spinner label="Échelle horizontale" name="shinyScaleU"/> + <spinner label="Échelle verticale" name="shinyScaleV"/> + <spinner label="Degrés de rotation" name="shinyRot"/> + <spinner label="Décalage horizontal" name="shinyOffsetU"/> + <spinner label="Décalage vertical" name="shinyOffsetV"/> + <check_box initial_value="false" label="Aligner les faces Plan" name="checkbox planar align" tool_tip="Aligner les textures sur toutes les faces sélectionnées avec la dernière face sélectionnée. Application de la texture Plan requise."/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml index 7187de8760..2a68ca0ddb 100755 --- a/indra/newview/skins/default/xui/fr/role_actions.xml +++ b/indra/newview/skins/default/xui/fr/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="Ces pouvoirs permettent de modifier le nom de la parcelle, son référencement dans la recherche et le lieu de téléportation." name="Parcel Identity"> <action description="Activer Afficher le lieu dans la recherche et définir la catégorie" longdescription="Activez Afficher le lieu dans la recherche et définissez la catégorie d'une parcelle dans l'onglet À propos du terrain > Options." name="land find places" value="17"/> - <action description="Modifier le nom et la description de la parcelle, ainsi que les paramètres d'affichage du lieu dans la recherche" longdescription="Modifiez le nom et la description de la parcelle, ainsi que les paramètres d'affichage du lieu dans la recherche. Pour ce faire, utilisez l'onglet À propos du terrain > Options." name="land change identity" value="18"/> + <action description="Changer le nom de la parcelle, la description et les paramètres de contenu modéré" longdescription="Changez le nom de la parcelle, la description et les paramètres de contenu modéré. Pour ce faire, utilisez l'onglet À propos du terrain > Options." name="land change identity" value="18"/> <action description="Définir le lieu d'arrivée et le routage des téléportations" longdescription="Définissez le lieu d'arrivée des téléportations et le routage à partir du menu À propos du terrain > Options." name="land set landing point" value="19"/> </action_set> <action_set description="Ces pouvoirs permettent de définir les options de la parcelle concernant la musique, les médias, la création d'objets et le relief." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 69ed20f376..346fa62351 100755 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -139,6 +139,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> Le client que vous utilisez ne permet plus d'accéder à Second Life. Téléchargez un nouveau client à la page suivante : http://secondlife.com/download @@ -448,6 +451,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="SLappAgentRequestFriend"> Demande d'amitié </string> + <string name="SLappAgentRemoveFriend"> + Suppression d'un ami + </string> <string name="BUTTON_CLOSE_DARWIN"> Fermer (⌘W) </string> @@ -838,6 +844,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="multiple_textures"> Multiples </string> + <string name="use_texture"> + Utiliser la texture + </string> <string name="texture_loading"> Chargement... </string> @@ -937,6 +946,21 @@ Veuillez réessayer de vous connecter dans une minute. <string name="TeleportYourAgent"> Vous téléporter </string> + <string name="JoinAnExperience"> + Rejoindre une expérience + </string> + <string name="SilentlyManageEstateAccess"> + Supprimer les alertes lors de la gestion des listes d'accès aux domaines + </string> + <string name="OverrideYourAnimations"> + Remplacer vos animations par défaut + </string> + <string name="ScriptReturnObjects"> + Renvoyer les objets de votre part + </string> + <string name="UnknownScriptPermission"> + (inconnu) + </string> <string name="SIM_ACCESS_PG"> Général </string> @@ -1968,6 +1992,12 @@ Veuillez réessayer de vous connecter dans une minute. <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD en bas à droite </string> + <string name="ATTACH_NECK"> + Cou + </string> + <string name="ATTACH_AVATAR_CENTER"> + Centre de l'avatar + </string> <string name="CursorPos"> Ligne [LINE], colonne [COLUMN] </string> @@ -2997,6 +3027,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Hip Width"> Largeur hanche </string> + <string name="Hover"> + Survol + </string> <string name="In"> Rentré </string> @@ -5081,4 +5114,7 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles <string name="logging_calls_enabled_log_empty"> Il n'y a aucune conversation enregistrée. Quand quelqu'un vous contacte ou quand vous contactez quelqu'un, une entrée de journal s'affiche ici. </string> + <string name="loading_chat_logs"> + Chargement... + </string> </strings> diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index b0fb585fa2..6f09eca90c 100755 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -8,7 +8,9 @@ Generato con [COMPILER] versione [COMPILER_VERSION] </floater.string> <floater.string name="AboutPosition"> - Tu sei [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a <nolink>[HOSTNAME]</nolink> ([HOSTIP]) + Tu sei a [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(coordinate globali [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml index 89f4a0cb71..399eb15802 100755 --- a/indra/newview/skins/default/xui/it/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/it/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="MODIFICA PERMESSI DEL CONTENUTO"> +<floater name="floaterbulkperms" title="CAMBIA I PERMESSI DEL CONTENUTO"> <floater.string name="nothing_to_modify_text"> La selezione non contiene nessun contenuto modificabile. </floater.string> @@ -33,7 +33,7 @@ <button label="√ Tutti" label_selected="Tutti" name="check_all"/> <button label="Cancella" label_selected="Nessuno" name="check_none"/> <text name="newperms"> - Nuovi permessi del contenuto + Cambia i permessi del contenuto a </text> <text name="GroupLabel"> Gruppo: @@ -49,6 +49,7 @@ <check_box label="Modificare" name="next_owner_modify"/> <check_box label="Copiare" name="next_owner_copy"/> <check_box initial_value="true" label="Trasferisci" name="next_owner_transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/> - <button label="OK" name="apply"/> + <button label="OK" name="ok"/> + <button label="Applica" name="apply"/> <button label="Annulla" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_goto_line.xml b/indra/newview/skins/default/xui/it/floater_goto_line.xml new file mode 100644 index 0000000000..29a4aabb99 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="PASSA ALLA RIGA"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + Passa alla riga + </text> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml index d38ec7a5fe..71f90accde 100755 --- a/indra/newview/skins/default/xui/it/floater_im_session.xml +++ b/indra/newview/skins/default/xui/it/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Traduci chat" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traduci chat" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml index 7777444161..77be220a2a 100755 --- a/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/it/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Mostra: </text> - <check_box label="Test" name="show_world"/> + <check_box label="Mondo" name="show_world"/> <check_box label="Solo elementi spostabili" name="show_world_movables_only"/> <check_box label="Navmesh" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml index d4d6fd68d0..d4ce25e6a5 100755 --- a/indra/newview/skins/default/xui/it/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Congela" name="Freeze..."/> <menu_item_call label="Espelli" name="Eject..."/> <menu_item_call label="Debug delle texture" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> <menu_item_call label="Zoom avanti" name="Zoom In"/> <menu_item_call label="Paga" name="Pay..."/> <menu_item_call label="Profilo dell'oggetto" name="Object Inspect"/> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_attachment_self.xml b/indra/newview/skins/default/xui/it/menu_attachment_self.xml index 0b841d591f..b28137262f 100755 --- a/indra/newview/skins/default/xui/it/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/it/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> <menu_item_call label="Debug delle texture" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> <menu_item_call label="Lascia" name="Drop"/> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml index c2edc32a49..a2b864b3e1 100755 --- a/indra/newview/skins/default/xui/it/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Congela" name="Freeze..."/> <menu_item_call label="Espelli" name="Eject..."/> <menu_item_call label="Debug delle texture" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> <menu_item_call label="Zoom avanti" name="Zoom In"/> <menu_item_call label="Paga" name="Pay..."/> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml index a4dafd7b5f..3666571065 100755 --- a/indra/newview/skins/default/xui/it/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="I miei gruppi" name="Groups..."/> <menu_item_call label="Il mio profilo" name="Profile..."/> <menu_item_call label="Debug delle texture" name="Debug..."/> + <menu_item_call label="Dump XML" name="Dump XML"/> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_conversation.xml b/indra/newview/skins/default/xui/it/menu_conversation.xml index 46ced93f1d..24486f2af2 100644 --- a/indra/newview/skins/default/xui/it/menu_conversation.xml +++ b/indra/newview/skins/default/xui/it/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Chiudi la conversazione" name="close_conversation"/> <menu_item_call label="Apri conversazione a voce" name="open_voice_conversation"/> <menu_item_call label="Interrompi collegamento a voce" name="disconnect_from_voice"/> + <menu_item_call label="Chiudi selezionato" name="close_selected_conversations"/> <menu_item_call label="Vedi profilo" name="view_profile"/> <menu_item_call label="IM" name="im"/> <menu_item_call label="Offri teleport" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/it/menu_land.xml b/indra/newview/skins/default/xui/it/menu_land.xml index f510078e14..816849a7b5 100755 --- a/indra/newview/skins/default/xui/it/menu_land.xml +++ b/indra/newview/skins/default/xui/it/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Acquista Permesso" name="Land Buy Pass"/> <menu_item_call label="Costruisci" name="Create"/> <menu_item_call label="Modifica terreno" name="Edit Terrain"/> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index 7b060e6565..35053ec499 100755 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -17,7 +17,13 @@ <menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/> <menu_item_call label="Mostra messaggio critico" name="Critical"/> <menu_item_call label="Test debug finestra contenuti Web" name="Web Content Floater Debug Test"/> - <menu label="Imposta livello di registrazione" name="Set Logging Level"/> + <menu label="Imposta livello di registrazione" name="Set Logging Level"> + <menu_item_check label="Debug" name="Debug"/> + <menu_item_check label="Info" name="Info"/> + <menu_item_check label="Attenzione" name="Warning"/> + <menu_item_check label="Errore" name="Error"/> + <menu_item_check label="Nessuno" name="None"/> + </menu> <menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/> <menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_mute_particle.xml b/indra/newview/skins/default/xui/it/menu_mute_particle.xml new file mode 100644 index 0000000000..7eb4b09495 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_object.xml b/indra/newview/skins/default/xui/it/menu_object.xml index 7f41e8937f..9bcc0879d2 100755 --- a/indra/newview/skins/default/xui/it/menu_object.xml +++ b/indra/newview/skins/default/xui/it/menu_object.xml @@ -5,13 +5,13 @@ </menu_item_call> <menu_item_call label="Modifica" name="Edit..."/> <menu_item_call label="Costruisci" name="Build"/> - <menu_item_call label="Mostra nei set collegati" name="show_in_linksets"/> - <menu_item_call label="Mostra nei personaggi" name="show_in_characters"/> <menu_item_call label="Apri" name="Open"/> <menu_item_call label="Siediti qui" name="Object Sit"/> <menu_item_call label="Alzati" name="Object Stand Up"/> <menu_item_call label="Profilo dell'oggetto" name="Object Inspect"/> <menu_item_call label="Zoom avanti" name="Zoom In"/> + <menu_item_call label="Mostra nei set collegati" name="show_in_linksets"/> + <menu_item_call label="Mostra nei personaggi" name="show_in_characters"/> <context_menu label="Metti" name="Put On"> <menu_item_call label="Indossa" name="Wear"/> <menu_item_call label="Aggiungi" name="Add"/> @@ -28,4 +28,5 @@ <menu_item_call label="Paga" name="Pay..."/> <menu_item_call label="Acquista" name="Buy..."/> <menu_item_call label="Elimina" name="Delete"/> + <menu_item_call label="Blocca proprietario particella" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_agent.xml b/indra/newview/skins/default/xui/it/menu_url_agent.xml index abfbab35a3..e5c20fb9e9 100755 --- a/indra/newview/skins/default/xui/it/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/it/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Vedi profilo" name="show_agent"/> <menu_item_call label="Manda IM..." name="send_im"/> <menu_item_call label="Aggiungi come amico..." name="add_friend"/> + <menu_item_call label="Togli amicizia..." name="remove_friend"/> <menu_item_call label="Copia nome negli Appunti" name="url_copy_label"/> <menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_url_objectim.xml b/indra/newview/skins/default/xui/it/menu_url_objectim.xml index 8456d14b63..116b652172 100755 --- a/indra/newview/skins/default/xui/it/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/it/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Profilo oggetto..." name="show_object"/> + <menu_item_call label="Blocca..." name="block_object"/> <menu_item_call label="Mostra sulla mappa" name="show_on_map"/> <menu_item_call label="Teleport sul luogo dell'oggetto" name="teleport_to_object"/> <menu_item_call label="Copia nome oggetto negli Appunti" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 2b7bc71df7..52247d6c9c 100755 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/> <menu_item_call label="Cammina / corri / vola..." name="Walk / run / fly"/> </menu> - <menu label="Stato" name="Status"/> + <menu label="Stato" name="Status"> + <menu_item_check label="Assente" name="Away"/> + <menu_item_check label="Non disturbare" name="Do Not Disturb"/> + </menu> <menu_item_call label="Acquista L$..." name="Buy and Sell L$"/> <menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/> <menu_item_call label="Dashboard dell'account..." name="Manage My Account"> @@ -32,6 +35,7 @@ <menu_item_check label="Conversazioni..." name="Conversations"/> <menu_item_check label="Chat nei dintorni..." name="Nearby Chat"/> <menu_item_check label="Parla" name="Speak"/> + <menu_item_check label="Registro conversazioni..." name="Conversation Log..."/> <menu label="Manipolazione voce" name="VoiceMorphing"> <menu_item_check label="Nessuna manipolazione voce" name="NoVoiceMorphing"/> <menu_item_check label="Anteprima..." name="Preview"/> @@ -42,6 +46,7 @@ <menu_item_check label="Gruppi" name="My Groups"/> <menu_item_check label="Persone vicine" name="Active Speakers"/> <menu_item_call label="Blocca lista" name="Block List"/> + <menu_item_check label="Non disturbare" name="Do Not Disturb"/> </menu> <menu label="Mondo" name="World"> <menu_item_call label="Crea punto di riferimento per questo luogo" name="Create Landmark Here"/> @@ -110,6 +115,7 @@ <menu_item_call label="Includi parte successiva" name="Include Next Part"/> <menu_item_call label="Includi parte precedente" name="Include Previous Part"/> </menu> + <menu_item_call label="Set collegati..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Ingrandisci selezione" name="Focus on Selection"/> <menu_item_call label="Zoom sulla selezione" name="Zoom to Selection"/> <menu label="Oggetto" name="Object"> @@ -273,6 +279,7 @@ <menu_item_check label="Spostamento fotocamera" name="Camera Offset"/> <menu_item_check label="Veloc. di visualizzazione casuale" name="Randomize Framerate"/> <menu_item_check label="Test frame" name="Frame Test"/> + <menu_item_call label="Profilo frame" name="Frame Profile"/> </menu> <menu label="Render Metadata" name="Render Metadata"> <menu_item_check label="Normali" name="Normals"/> @@ -293,15 +300,15 @@ </menu> <menu label="Rendering" name="Rendering"> <menu_item_check label="Assi" name="Axes"/> + <menu_item_call label="Info materiale selezionato" name="Selected Material Info"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Luci e ombre" name="Advanced Lighting Model"/> + <menu_item_check label="Modello illuminazione avanzato" name="Advanced Lighting Model"/> <menu_item_check label="Ombra dal sole, dalla luna e dai proiettori" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO e ombre fluide" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Maschera alfa automatica (differita)" name="Automatic Alpha Masks (deferred)"/> <menu_item_check label="Maschera alfa automatica (non differita)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Texture delle animazioni" name="Animation Textures"/> <menu_item_check label="Disabilita texture" name="Disable Textures"/> - <menu_item_check label="Atlante tessitura (sperimentale)" name="Texture Atlas"/> <menu_item_check label="Rendering delle luci unite" name="Render Attached Lights"/> <menu_item_check label="Rendering particelle unite" name="Render Attached Particles"/> <menu_item_check label="Gli oggetti brillano quando sono sotto il cursore" name="Hover Glow Objects"/> @@ -320,7 +327,6 @@ <menu_item_call label="Test browser multimedia" name="Web Browser Test"/> <menu_item_call label="Browser contenuto Web" name="Web Content Browser"/> <menu_item_call label="Stampa informazioni oggetto selezionato" name="Print Selected Object Info"/> - <menu_item_call label="Statistiche memoria" name="Memory Stats"/> <menu_item_check label="Console di debug regione" name="Region Debug Console"/> <menu_item_check label="Debug clic" name="Debug Clicks"/> <menu_item_check label="Debug eventi mouse" name="Debug Mouse Events"/> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 8adbebb62a..96b8c96595 100755 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -210,6 +210,14 @@ Aggiungi questo potere a '[ROLE_NAME]'? Aggiungi questo potere a '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> </notification> + <notification name="EjectGroupMemberWarning"> + Stai per espellere [AVATAR_NAME] dal gruppo. + <usetemplate ignoretext="Conferma l'espulsione di un partecipante dal gruppo" name="okcancelignore" notext="Annulla" yestext="Espelli"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Stai per espellere [COUNT] membri dal gruppo. + <usetemplate ignoretext="Conferma l'espulsione di vari partecipanti dal gruppo" name="okcancelignore" notext="Annulla" yestext="Espelli"/> + </notification> <notification name="AttachmentDrop"> Stai per abbandonare il tuo accessorio. Vuoi continuare? @@ -1110,7 +1118,7 @@ su TUTTI I TERRENI di questa sim? Introduci un prezzo più alto. </notification> <notification name="ConfirmItemDeleteHasLinks"> - 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. + Almeno uno degli oggetti è collegato tramite link ad altri oggetti. Se elimini l'oggetto, i relativi link non funzioneranno più. Si consiglia vivamente di eliminare prima i link. Sei sicuro di volere eliminare gli oggetti? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -1128,9 +1136,9 @@ Confermi di voler cancellare questi elementi? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> - Non possiedi neanche uno degli oggetti selezionati. + Non possiedi almeno uno degli oggetti selezionati. -Confermi di voler cancellare questi elementi? +Sei sicuro di volere eliminare gli oggetti? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> @@ -1142,24 +1150,24 @@ Confermi di voler cancellare questi elementi? </notification> <notification name="ConfirmObjectDeleteLockNoOwn"> Almeno un oggetto è bloccato. -Non possiedi neanche un oggetto. +Non possiedi almeno uno degli oggetti. -Confermi di voler cancellare questi elementi? +Sei sicuro di volere eliminare gli oggetti? <usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> - Almeno un oggetto non è copiabile. -Non possiedi neanche un oggetto. + Almeno un oggetto non può essere copiato. +Non possiedi almeno uno degli oggetti. -Confermi di voler cancellare questi elementi? +Sei sicuro di volere eliminare gli oggetti? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> Almeno un oggetto è bloccato. -Almeno un oggetto è non copiabile. -Non possiedi neanche un oggetto. +Almeno un oggetto non può essere copiato. +Non possiedi almeno uno degli oggetti. -Confermi di voler cancellare questi elementi? +Sei sicuro di volere eliminare gli oggetti? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> @@ -1481,13 +1489,43 @@ Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornament </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> È stato scaricato un aggiornamento obbligatorio del software. -Versione [VERSION] +Versione [VERSION] [[INFO_URL] Informazioni su questo aggiornamento] Per installare l'aggiornamento è necessario riavviare [APP_NAME]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> Per installare l'aggiornamento è necessario riavviare [APP_NAME]. +[[INFO_URL] Informazioni su questo aggiornamento] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + È stato scaricato un aggiornamento dell'installazione di [APP_NAME]. +Versione [VERSION] +Questo viewer sperimentale è stato sostituito con un viewer [NEW_CHANNEL]; +vedi [[INFO_URL] per informazioni su queesto aggiornamento] + <usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + È stato scaricato un aggiornamento dell'installazione di [APP_NAME]. +Versione [VERSION] +Questo viewer sperimentale è stato sostituito con un viewer [NEW_CHANNEL]; +vedi [[INFO_URL] Informazioni su questo aggiornamento] + <usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + È stato scaricato un aggiornamento obbligatorio del software. +Versione [VERSION] +Questo viewer sperimentale è stato sostituito con un viewer [NEW_CHANNEL]; +vedi [[INFO_URL] Informazioni su questo aggiornamento] + +Per installare l'aggiornamento è necessario riavviare [APP_NAME]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + Per installare l'aggiornamento è necessario riavviare [APP_NAME]. +Questo viewer sperimentale è stato sostituito con un viewer [NEW_CHANNEL]; +vedi [[INFO_URL] Informazioni su questo aggiornamento] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1538,6 +1576,10 @@ Per installare l'aggiornamento è necessario riavviare [APP_NAME]. Lasciare il gruppo? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + Impossibile abbandonare il gruppo. Non puoi abbandonare il gruppo perché sei l'ultimo proprietario del gruppo. Devi prima assegnare a un altro membro il ruolo di proprietario. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Vuoi veramente espellere tutti i residenti dalla griglia? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti i residenti"/> @@ -2401,9 +2443,7 @@ Seleziona solo un oggetto. scegliere Teleport.) </notification> <notification name="TeleportToPerson"> - Per contattare Residenti come '[NAME]', clicca sul pulsante "Persone", seleziona un Residente nel pannello che viene aperto, quindi 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'). + Per avviare una conversazione privata con un'altra persona, fai clic con il tasto destro sull'avatar e seleziona 'IM' dal menu. </notification> <notification name="CantSelectLandFromMultipleRegions"> Non è possibile selezionare il terreno attraverso i confini del server. @@ -2777,6 +2817,15 @@ Non consentire l'accesso se non comprendi perfettamente il motivo per cui d <button name="Deny" text="Nega"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + L'autorizzazione per script runtime richiesta da '<nolink>[OBJECTNAME]</nolink>', un oggetto di proprietà di '[NAME]', non è stata riconosciuta nel viewer e non può essere concessa. + +Per concedere questa autorizzazione è necessario che il viewer venga aggiornato alla versione più recente da [DOWNLOADURL]. + <form name="form"> + <button name="Deny" text="Ok"/> + <button name="Mute" text="Blocca"/> + </form> + </notification> <notification name="ScriptDialog"> '<nolink>[TITLE]</nolink>' di [NAME] [MESSAGE] diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml index e1468db76e..2f40d4bdc4 100755 --- a/indra/newview/skins/default/xui/it/panel_people.xml +++ b/indra/newview/skins/default/xui/it/panel_people.xml @@ -49,6 +49,9 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa <menu_button name="plus_btn" tool_tip="Aderisci al gruppo/Crea nuovo gruppo"/> <dnd_button name="minus_btn" tool_tip="Lascia il gruppo selezionato"/> </panel> + <text name="groupcount"> + Fai parte di [COUNT] gruppi e puoi iscriverti a [REMAINING] altri. + </text> </panel> <panel label="RECENTE" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml index c2ac6e97a9..09d7c96370 100755 --- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Text Chat" name="chat"> - <panel> - <check_box initial_value="true" label="Simula la battitura tasti quando scrivi" name="play_typing_animation"/> + <panel name="general_chat_settings"> + <check_box initial_value="true" label="Simula la battitura tasti quando sei in chat" name="play_typing_animation"/> <check_box label="Quando sono OFF-LINE, spediscimi gli IM in una e-mail" name="send_im_to_email"/> <check_box label="Solo amici e gruppi possono chiamarmi o mandarmi IM" name="voice_call_friends_only_check"/> <text name="font_size"> - Dimensioni caratteri: + Dimensioni carattere: </text> <combo_box name="chat_font_size"> <item label="Piccolo" name="Small" value="0"/> @@ -14,10 +14,7 @@ </combo_box> <check_box label="Chat a vignetta" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Notifiche - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> IM degli amici: </text> @@ -25,8 +22,9 @@ <item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/> <item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/> <item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/> - <item label="Nessuno" name="None" value="none"/> + <item label="Nessuna azione" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Riproduci suono" name="play_sound_friend_im"/> <text name="non_friend_ims"> IM non di amici: </text> @@ -34,8 +32,9 @@ <item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/> <item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/> <item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/> - <item label="Nessuno" name="None" value="none"/> + <item label="Nessuna azione" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Riproduci suono" name="play_sound_non_friend_im"/> <text name="conference_ims"> IM conferenza: </text> @@ -43,8 +42,9 @@ <item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/> <item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/> <item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/> - <item label="Nessuno" name="None" value="none"/> + <item label="Nessuna azione" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Riproduci suono" name="play_sound_conference_im"/> <text name="group_chat"> Chat di gruppo: </text> @@ -52,8 +52,9 @@ <item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/> <item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/> <item label="Pulsante barra strumenti Flash" name="FlashToolbarButton" value="flash"/> - <item label="Nessuno" name="None" value="none"/> + <item label="Nessuna azione" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Riproduci suono" name="play_sound_group_chat_im"/> <text name="nearby_chat"> Chat nei dintorni: </text> @@ -61,13 +62,24 @@ <item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/> <item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/> <item label="Pulsante barra strumenti Flash" name="FlashToolBarButton" value="flash"/> - <item label="Nessuno" name="None" value="none"/> + <item label="Nessuna azione" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Riproduci suono" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + IM di oggetti: + </text> + <combo_box name="ObjectIMOptions"> + <item label="Apri finestra Conversazioni" name="OpenConversationsWindow" value="openconversations"/> + <item label="Mostra il messaggio in una finestra pop-up" name="PopUpMessage" value="toast"/> + <item label="Pulsante barra strumenti Flash" name="FlashToolBarButton" value="flash"/> + <item label="Nessuna azione" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Riproduci suono" name="play_sound_object_im"/> <text name="notifications_alert"> Per interrompere temporaneamente le notifiche, usa Comunica > Non disturbare. </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Riproduci suono: </text> @@ -76,7 +88,7 @@ <check_box label="Offerta di Teleport" name="teleport_offer"/> <check_box label="Offerta inventario" name="inventory_offer"/> </panel> - <panel> + <panel name="log_settings"> <button label="Cancella registro..." name="clear_log"/> <button label="Cancella trascrizioni..." name="delete_transcripts"/> <button label="Sfoglia..." label_selected="Sfoglia" name="log_path_button"/> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml index 1f2b97af45..e7483b1ba5 100755 --- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="true" label="Luci locali" name="LocalLights"/> <check_box initial_value="true" label="Effetti grafici base" name="BasicShaders" tool_tip="Disabilitare questa opzione può evitare che qualche scheda grafica vada in crash."/> <check_box initial_value="true" label="Effetti grafici atmosferici" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Luci e ombre" name="UseLightShaders"/> + <check_box initial_value="true" label="Modello illuminazione avanzato" name="UseLightShaders"/> <check_box initial_value="true" label="Occlusione ambientale" name="UseSSAO"/> <check_box initial_value="true" label="Profondità di campo" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml index 0189d47f45..4c190197b4 100755 --- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Installa automaticamente" name="Install_automatically"/> <combo_box.item label="Scarica e installa manualmente gli aggiornamenti" name="Install_manual"/> </combo_box> + <check_box label="Disponibile agli aggiornamenti con versioni non rilasciate" name="update_willing_to_test"/> <text name="Proxy Settings:"> Impostazioni proxy: </text> diff --git a/indra/newview/skins/default/xui/it/panel_script_ed.xml b/indra/newview/skins/default/xui/it/panel_script_ed.xml index d7ee8230b3..feee8b1927 100755 --- a/indra/newview/skins/default/xui/it/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/it/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Seleziona tutto" name="Select All"/> <menu_item_call label="Deseleziona" name="Deselect"/> <menu_item_call label="Cerca / Sostituisci..." name="Search / Replace..."/> + <menu_item_call label="Passa alla riga..." name="Go to line..."/> </menu> <menu label="Guida" name="Help"> <menu_item_call label="Aiuto..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/it/panel_tools_texture.xml b/indra/newview/skins/default/xui/it/panel_tools_texture.xml new file mode 100644 index 0000000000..4e515563ac --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Texture" name="Texture"> + <panel.string name="string repeats per meter"> + Ripetizioni al metro + </panel.string> + <panel.string name="string repeats per face"> + Ripetizioni per faccia + </panel.string> + <text name="color label"> + Colore + </text> + <color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire il selettore dei colori"/> + <text name="color trans"> + Trasparenza % + </text> + <text name="glow label"> + Bagliore + </text> + <check_box label="Luminosità massima" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Materiali" name="Materials"/> + <combo_box.item label="Multimedia" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Texture (diffusa)" name="Texture (diffuse)"/> + <combo_box.item label="Irregolarità (normale)" name="Bumpiness (normal)"/> + <combo_box.item label="Lucentezza (speculare)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Texture" name="texture control" tool_tip="Clicca per scegliere una fotografia"/> + <text name="label alphamode"> + Modalità Alfa + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Nessuno" name="None"/> + <combo_box.item label="Miscelazione Alfa" name="Alpha blending"/> + <combo_box.item label="Mascheratura Alfa" name="Alpha masking"/> + <combo_box.item label="Mascheratura emissiva" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Limite mascheratura + </text> + <texture_picker label="Texture" name="bumpytexture control" tool_tip="Clicca per scegliere una fotografia"/> + <text name="label bumpiness"> + Irregolarità + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Nessuno" name="None"/> + <combo_box.item label="Luminosità" name="Brightness"/> + <combo_box.item label="Oscurità" name="Darkness"/> + <combo_box.item label="venatura" name="woodgrain"/> + <combo_box.item label="corteccia" name="bark"/> + <combo_box.item label="mattoni" name="bricks"/> + <combo_box.item label="scacchiera" name="checker"/> + <combo_box.item label="cemento" name="concrete"/> + <combo_box.item label="incrostatura" name="crustytile"/> + <combo_box.item label="gemma" name="cutstone"/> + <combo_box.item label="dischi" name="discs"/> + <combo_box.item label="ciottoli" name="gravel"/> + <combo_box.item label="batteri" name="petridish"/> + <combo_box.item label="rivestimento" name="siding"/> + <combo_box.item label="lastricato" name="stonetile"/> + <combo_box.item label="stucco" name="stucco"/> + <combo_box.item label="suzione" name="suction"/> + <combo_box.item label="trama" name="weave"/> + </combo_box> + <texture_picker label="Texture" name="shinytexture control" tool_tip="Clicca per scegliere una fotografia"/> + <text name="label shininess"> + Lucentezza + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Nessuna" name="None"/> + <combo_box.item label="Bassa" name="Low"/> + <combo_box.item label="Media" name="Medium"/> + <combo_box.item label="Alta" name="High"/> + </combo_box> + <text name="label glossiness"> + Patinatura + </text> + <text name="label environment"> + Ambiente + </text> + <text name="label shinycolor"> + Colore + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Clicca per aprire il selettore dei colori"/> + <text name="media_info"> + L'URL dell'eventuale elemento multimediale selezionato va qui + </text> + <button label="Scegli..." name="add_media" tool_tip="Aggiungi elemento multimediale"/> + <button label="Rimuovi" name="delete_media" tool_tip="Cancella questa texture dell'elemento multimediale"/> + <button label="Alllinea" label_selected="Allinea elmento multimediale" name="button align" tool_tip="Allinea texture dell'elemento multimediale (il caricamento deve prima essere completato)"/> + <text name="tex gen"> + Mappatura + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="Predefinita" name="Default"/> + <combo_box.item label="Planare" name="Planar"/> + </combo_box> + <spinner label="Scala orizzontale" name="TexScaleU"/> + <spinner label="Scala veritcale" name="TexScaleV"/> + <spinner label="Ripetizioni al metro" name="rptctrl"/> + <spinner label="Gradi di rotazione" name="TexRot"/> + <spinner label="Spostamento orizzontale" name="TexOffsetU"/> + <spinner label="Spostamento verticale" name="TexOffsetV"/> + <spinner label="Scala orizzontale" name="bumpyScaleU"/> + <spinner label="Scala veritcale" name="bumpyScaleV"/> + <spinner label="Gradi di rotazione" name="bumpyRot"/> + <spinner label="Spostamento orizzontale" name="bumpyOffsetU"/> + <spinner label="Spostamento verticale" name="bumpyOffsetV"/> + <spinner label="Scala orizzontale" name="shinyScaleU"/> + <spinner label="Scala veritcale" name="shinyScaleV"/> + <spinner label="Gradi di rotazione" name="shinyRot"/> + <spinner label="Spostamento orizzontale" name="shinyOffsetU"/> + <spinner label="Spostamento verticale" name="shinyOffsetV"/> + <check_box initial_value="falso" label="Allinea facce planari" name="checkbox planar align" tool_tip="Allinea le texture su tutte le facce selezionate con l’ultima faccia selezionata. È richiesta la mappatura planare delle texture."/> +</panel> diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml index 300e6cf721..3ccb674ed0 100755 --- a/indra/newview/skins/default/xui/it/role_actions.xml +++ b/indra/newview/skins/default/xui/it/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="Queste abilità permettono di cambiare il nome del lotto, le impostazioni di pubblicazione, la visibilità negli elenchi e il punto di arrivo, nonché opzioni di indirizzamento del Teleport." name="Parcel Identity"> <action description="Premi Mostra luogo nella ricerca e seleziona una categoria" longdescription="Premi Mostra luogo nella ricerca e seleziona una categoria di lotto in Informazioni sul terreno > scheda Opzioni." name="land find places" value="17"/> - <action description="Cambia il nome del lotto, la descrizione e le impostazioni di Mostra luogo nella ricerca" longdescription="Cambia il nome del lotto, la descrizione e le impostazioni di Mostra luogo nella ricerca. Ciò viene fatto in Informazioni sul terreno > scheda Opzioni." name="land change identity" value="18"/> + <action description="Cambia il nome, la descrizione e le impostazioni 'Contenuto Moderato' per il lotto" longdescription="Cambia il nome, la descrizione e le impostazioni 'Contenuto Moderato' per il lotto. Ciò viene fatto in Informazioni sul terreno > scheda Opzioni." name="land change identity" value="18"/> <action description="Impostare il punto di arrivo e l'indirizzamento del Teleport" longdescription="In un lotto di proprietà di un gruppo, i membri con questo ruolo e abilità possono impostare un punto di arrivo per i teleport entranti e impostare anche l'indirizzamento del teleport per ulteriore precisione. Viene fatto in Informazioni sul terreno > Opzioni." name="land set landing point" value="19"/> </action_set> <action_set description="Queste abilità hanno poteri relativi alle opzioni dei lotti, come la creazione di oggetti, la modifica del terreno e le impostazioni per la musica e gli elementi multimediali." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index f95318542b..160df911d3 100755 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -136,6 +136,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download. + </string> <string name="LoginFailedViewerNotPermitted"> Il viewer utilizzato non è più in grado di accedere a Second Life. Visita la parina seguente per scaricare un nuovo viewer: http://secondlife.com/download. @@ -445,6 +448,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="SLappAgentRequestFriend"> Richiesta di amicizia </string> + <string name="SLappAgentRemoveFriend"> + Rimozione amico + </string> <string name="BUTTON_CLOSE_DARWIN"> Chiudi (⌘W) </string> @@ -832,6 +838,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="multiple_textures"> Multiple </string> + <string name="use_texture"> + Usa texture + </string> <string name="texture_loading"> Caricamento in corso... </string> @@ -928,6 +937,21 @@ Prova ad accedere nuovamente tra un minuto. <string name="TeleportYourAgent"> Teleportarti </string> + <string name="JoinAnExperience"> + Partecipa a un'esperienza + </string> + <string name="SilentlyManageEstateAccess"> + Omette gli avvisi durante la gestione degli elenchi di accesso alle proprietà immobiliari + </string> + <string name="OverrideYourAnimations"> + Sostituisce le animazioni predefinite + </string> + <string name="ScriptReturnObjects"> + Restituisce oggetti per conto tuo + </string> + <string name="UnknownScriptPermission"> + (sconosciuto)! + </string> <string name="SIM_ACCESS_PG"> Generale </string> @@ -1953,6 +1977,12 @@ Prova ad accedere nuovamente tra un minuto. <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD basso a destra </string> + <string name="ATTACH_NECK"> + Collo + </string> + <string name="ATTACH_AVATAR_CENTER"> + Centro avatar + </string> <string name="CursorPos"> Riga [LINE], Colonna [COLUMN] </string> @@ -2940,6 +2970,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="Hip Width"> Larghezza bacino </string> + <string name="Hover"> + Muovi sopra + </string> <string name="In"> Dentro </string> @@ -4994,4 +5027,7 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="logging_calls_enabled_log_empty"> Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui. </string> + <string name="loading_chat_logs"> + Caricamento in corso... + </string> </strings> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index eae52c98ec..63a4e69c10 100755 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -8,7 +8,9 @@ コンパイラー [COMPILER] [COMPILER_VERSION] バージョン </floater.string> <floater.string name="AboutPosition"> - あなたの現在地は、[POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] の [REGION] です。位置は <nolink>[HOSTNAME]</nolink> です。([HOSTIP]) + あなたの現在地は、[POSITION_LOCAL_0,number,1]、[POSITION_LOCAL_1,number,1]、[POSITION_LOCAL_2,number,1] の [REGION] です。位置は <nolink>[HOSTNAME]</nolink> です。([HOSTIP]) +SLURL:<nolink>[SLURL]</nolink> +(グローバル座標 [POSITION_0,number,1]、[POSITION_1,number,1]、[POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml index d8d0164618..1b5a745cc4 100755 --- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="中身の権限の編集"> +<floater name="floaterbulkperms" title="コンテンツ権限を調整"> <floater.string name="nothing_to_modify_text"> 選択した中に編集できないものが含まれています </floater.string> @@ -33,7 +33,7 @@ <button label="すべてに √" label_selected="全て" name="check_all"/> <button label="クリア" label_selected="なし" name="check_none"/> <text name="newperms"> - 新しい中身の権限 + コンテンツ権限を以下に調整 </text> <text name="GroupLabel"> グループ: @@ -49,6 +49,7 @@ <check_box label="修正" name="next_owner_modify"/> <check_box label="コピー" name="next_owner_copy"/> <check_box initial_value="true" label="再販・プレゼント" name="next_owner_transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> - <button label="OK" name="apply"/> + <button label="OK" name="ok"/> + <button label="適用" name="apply"/> <button label="キャンセル" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_goto_line.xml b/indra/newview/skins/default/xui/ja/floater_goto_line.xml new file mode 100644 index 0000000000..5f2717ace5 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="行に移動"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + 行に移動 + </text> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml index a44c843df7..7ed46f7f01 100755 --- a/indra/newview/skins/default/xui/ja/floater_im_session.xml +++ b/indra/newview/skins/default/xui/ja/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="チャットを翻訳" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="チャットを翻訳" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml index 9733c61918..ec107f3e6b 100755 --- a/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/ja/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> 表示: </text> - <check_box label="テスト" name="show_world"/> + <check_box label="世界" name="show_world"/> <check_box label="可動物のみ" name="show_world_movables_only"/> <check_box label="ナビメッシュ" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml index 5adf0b3745..930af10692 100755 --- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="フリーズ" name="Freeze..."/> <menu_item_call label="追放" name="Eject..."/> <menu_item_call label="テクスチャのデバッグ" name="Debug..."/> + <menu_item_call label="ダンプ XML" name="Dump XML"/> <menu_item_call label="ズームイン" name="Zoom In"/> <menu_item_call label="支払う" name="Pay..."/> <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml index 6036e1075e..d87ef8e2a0 100755 --- a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プロフィール" name="Profile..."/> <menu_item_call label="テクスチャのデバッグ" name="Debug..."/> + <menu_item_call label="ダンプ XML" name="Dump XML"/> <menu_item_call label="下に落とす" name="Drop"/> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml index 54dd96f5ef..f9cadc36ac 100755 --- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="フリーズ" name="Freeze..."/> <menu_item_call label="追放" name="Eject..."/> <menu_item_call label="テクスチャのデバッグ" name="Debug..."/> + <menu_item_call label="ダンプ XML" name="Dump XML"/> <menu_item_call label="ズームイン" name="Zoom In"/> <menu_item_call label="支払う" name="Pay..."/> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml index 4709522665..eb8e98059a 100755 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="グループ" name="Groups..."/> <menu_item_call label="プロフィール" name="Profile..."/> <menu_item_call label="テクスチャのデバッグ" name="Debug..."/> + <menu_item_call label="ダンプ XML" name="Dump XML"/> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_conversation.xml b/indra/newview/skins/default/xui/ja/menu_conversation.xml index c7df20d252..66940471da 100644 --- a/indra/newview/skins/default/xui/ja/menu_conversation.xml +++ b/indra/newview/skins/default/xui/ja/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="会話を終える" name="close_conversation"/> <menu_item_call label="ボイスチャットを始める" name="open_voice_conversation"/> <menu_item_call label="ボイスチャットを切断する" name="disconnect_from_voice"/> + <menu_item_call label="選択した項目を閉じる" name="close_selected_conversations"/> <menu_item_call label="プロフィールを表示" name="view_profile"/> <menu_item_call label="IM" name="im"/> <menu_item_call label="テレポートを送る" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml index 89c122f14f..3754bd7fa4 100755 --- a/indra/newview/skins/default/xui/ja/menu_land.xml +++ b/indra/newview/skins/default/xui/ja/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="入場許可を購入" name="Land Buy Pass"/> <menu_item_call label="制作" name="Create"/> <menu_item_call label="地形を編集" name="Edit Terrain"/> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index ab6d9e3546..3918732fa8 100755 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -18,7 +18,13 @@ <menu_item_call label="利用規約を表示" name="TOS"/> <menu_item_call label="クリティカルメッセージを表示" name="Critical"/> <menu_item_call label="Web コンテンツフローターのデバッグテスト" name="Web Content Floater Debug Test"/> - <menu label="ログレベルを設定" name="Set Logging Level"/> + <menu label="ログレベルを設定" name="Set Logging Level"> + <menu_item_check label="デバッグ" name="Debug"/> + <menu_item_check label="情報" name="Info"/> + <menu_item_check label="警告" name="Warning"/> + <menu_item_check label="エラー" name="Error"/> + <menu_item_check label="なし" name="None"/> + </menu> <menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/> <menu_item_call label="通知コンソールを表示する" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_mute_particle.xml b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml new file mode 100644 index 0000000000..8dab025309 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml index 01436ad12b..39c32bc41e 100755 --- a/indra/newview/skins/default/xui/ja/menu_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -5,13 +5,13 @@ </menu_item_call> <menu_item_call label="編集" name="Edit..."/> <menu_item_call label="制作" name="Build"/> - <menu_item_call label="リンクセットで表示" name="show_in_linksets"/> - <menu_item_call label="キャラクターで表示" name="show_in_characters"/> <menu_item_call label="開く" name="Open"/> <menu_item_call label="ここに座る" name="Object Sit"/> <menu_item_call label="立ち上がる" name="Object Stand Up"/> <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/> <menu_item_call label="ズームイン" name="Zoom In"/> + <menu_item_call label="リンクセットで表示" name="show_in_linksets"/> + <menu_item_call label="キャラクターで表示" name="show_in_characters"/> <context_menu label="装着" name="Put On"> <menu_item_call label="装着" name="Wear"/> <menu_item_call label="追加" name="Add"/> @@ -28,4 +28,5 @@ <menu_item_call label="支払う" name="Pay..."/> <menu_item_call label="買う" name="Buy..."/> <menu_item_call label="削除" name="Delete"/> + <menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml index 72722db7cc..639602ce3c 100755 --- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="プロフィールを表示" name="show_agent"/> <menu_item_call label="IM を送信..." name="send_im"/> <menu_item_call label="フレンドを追加..." name="add_friend"/> + <menu_item_call label="フレンドを削除..." name="remove_friend"/> <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/> <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index 9e340e3239..a02ca8415d 100755 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="オブジェクトのプロフィール..." name="show_object"/> + <menu_item_call label="ブロック..." name="block_object"/> <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/> <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 89f58d3bac..b1ec62115c 100755 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/> <menu_item_call label="歩行/走行/飛行..." name="Walk / run / fly"/> </menu> - <menu label="ログイン" name="Status"/> + <menu label="ログイン" name="Status"> + <menu_item_check label="一時退席中" name="Away"/> + <menu_item_check label="着信拒否" name="Do Not Disturb"/> + </menu> <menu_item_call label="L$ の購入..." name="Buy and Sell L$"/> <menu_item_call label="マーチャントアウトボックス..." name="MerchantOutbox"/> <menu_item_call label="マイアカウント..." name="Manage My Account"> @@ -32,6 +35,7 @@ <menu_item_check label="会話..." name="Conversations"/> <menu_item_check label="近くのチャット..." name="Nearby Chat"/> <menu_item_check label="話す" name="Speak"/> + <menu_item_check label="会話ログ..." name="Conversation Log..."/> <menu label="ボイスモーフィング" name="VoiceMorphing"> <menu_item_check label="ボイスモーフィングなし" name="NoVoiceMorphing"/> <menu_item_check label="プレビュー..." name="Preview"/> @@ -42,6 +46,7 @@ <menu_item_check label="グループ" name="My Groups"/> <menu_item_check label="近くにいる人" name="Active Speakers"/> <menu_item_call label="リストをブロック" name="Block List"/> + <menu_item_check label="着信拒否" name="Do Not Disturb"/> </menu> <menu label="世界" name="World"> <menu_item_call label="現在地をランドマーク" name="Create Landmark Here"/> @@ -110,6 +115,7 @@ <menu_item_call label="次の部分を含める" name="Include Next Part"/> <menu_item_call label="前回の部分を含める" name="Include Previous Part"/> </menu> + <menu_item_call label="リンクセット..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="選択したものに焦点を合わせる" name="Focus on Selection"/> <menu_item_call label="選択したものをズームする" name="Zoom to Selection"/> <menu label="オブジェクト" name="Object"> @@ -279,6 +285,7 @@ <menu_item_check label="フレームレートをランダム化" name="Randomize Framerate"/> <menu_item_check label="定期的に遅いフレームを挿入する" name="Periodic Slow Frame"/> <menu_item_check label="フレームテスト" name="Frame Test"/> + <menu_item_call label="フレームプロフィール" name="Frame Profile"/> </menu> <menu label="メタデータのレンダー" name="Render Metadata"> <menu_item_check label="バウンディングボックス" name="Bounding Boxes"/> @@ -313,9 +320,10 @@ <menu_item_check label="軸" name="Axes"/> <menu_item_check label="接線基底" name="Tangent Basis"/> <menu_item_call label="選択したテクスチャ情報基底" name="Selected Texture Info Basis"/> + <menu_item_call label="選択したマテリアル情報" name="Selected Material Info"/> <menu_item_check label="ワイヤーフレーム" name="Wireframe"/> <menu_item_check label="オブジェクト間オクルージョン" name="Object-Object Occlusion"/> - <menu_item_check label="光と影" name="Advanced Lighting Model"/> + <menu_item_check label="高度なライティングモデル" name="Advanced Lighting Model"/> <menu_item_check label="太陽・月・プロジェクタからの影" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO と影の平滑化" name="SSAO and Shadow Smoothing"/> <menu_item_check label="GL デバッグ" name="Debug GL"/> @@ -325,7 +333,6 @@ <menu_item_check label="アニメーションテクスチャ" name="Animation Textures"/> <menu_item_check label="テクスチャを無効にする" name="Disable Textures"/> <menu_item_check label="フル解像度テクスチャ" name="Rull Res Textures"/> - <menu_item_check label="テクスチャアトラス(試験段階)" name="Texture Atlas"/> <menu_item_check label="装着された光源を描画する" name="Render Attached Lights"/> <menu_item_check label="取り付けられたパーティクルを描画する" name="Render Attached Particles"/> <menu_item_check label="マウスオーバーで強調表示する" name="Hover Glow Objects"/> @@ -361,7 +368,6 @@ <menu_item_call label="フォーカスホールダーをダンプ" name="Dump Focus Holder"/> <menu_item_call label="選択したオブジェクト情報をプリント" name="Print Selected Object Info"/> <menu_item_call label="エージェント情報をプリント" name="Print Agent Info"/> - <menu_item_call label="メモリ使用状況" name="Memory Stats"/> <menu_item_check label="地域デバッグコンソール" name="Region Debug Console"/> <menu_item_check label="SelectMgr のデバッグ" name="Debug SelectMgr"/> <menu_item_check label="ダブルクリック" name="Debug Clicks"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 356506f191..f1c916bf53 100755 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -150,7 +150,7 @@ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/> </notification> <notification name="FriendsAndGroupsOnly"> - フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 + フレンド以外の人からのコールや、インスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FavoritesOnLogin"> @@ -221,6 +221,14 @@ この能力を [ROLE_NAME] に割り当てますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> + <notification name="EjectGroupMemberWarning"> + [AVATAR_NAME] をグループから追放しようとしています。 + <usetemplate ignoretext="グループからの参加者の追放を確認します" name="okcancelignore" notext="取り消し" yestext="追放"/> + </notification> + <notification name="EjectGroupMembersWarning"> + [COUNT] 名のメンバーをグループから追放しようとしています。 + <usetemplate ignoretext="グループからの複数のメンバーの追放を確認します" name="okcancelignore" notext="取り消し" yestext="追放"/> + </notification> <notification name="AttachmentDrop"> アタッチメントを下に置こうとしています。 続けますか? @@ -1139,7 +1147,7 @@ https://wiki.secondlife.com/wiki/Adding_Spelling_Dictionaries を参照してく 金額を増やしてください。 </notification> <notification name="ConfirmItemDeleteHasLinks"> - ここにリンクされたアイテムが少なくとも1つあります。 このアイテムを削除するとここにリンクされたものが機能しなくなります。 リンクを先に削除することを強くお勧めします。 + 1 つ以上のアイテムにポイントするリンクがあります。このアイテムを削除する場合、そのリンクは永久に機能しなくなります。まず最初にリンクを削除することを強くお勧めします。 これらのアイテムを削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> @@ -1157,9 +1165,9 @@ https://wiki.secondlife.com/wiki/Adding_Spelling_Dictionaries を参照してく <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> - 選択したアイテムのうち、少なくとも 1 つがあなたの所有物ではありません。 + 選択したアイテムの 1 つ以上を所有していません。 -本当に削除しますか? +これらのアイテムを削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> @@ -1170,26 +1178,26 @@ https://wiki.secondlife.com/wiki/Adding_Spelling_Dictionaries を参照してく <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoOwn"> - 少なくとも 1 つのオブジェクトがロックされています。 -少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。 + 1 つ以上のオブジェクトがロックされました。 +1 つ以上のオブジェクトを所有していません。 -本当に削除しますか? +これらのアイテムを削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> - 少なくとも 1 つのオブジェクトがコピーできません。 -少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。 + 1 つ以上のオブジェクトがコピーできません。 +1 つ以上のオブジェクトを所有していません。 -本当に削除しますか? +これらのアイテムを削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> - 少なくとも 1 つのオブジェクトがロックされています。 -少なくとも 1 つのオブジェクトがコピーできません。 -少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。 + 1 つ以上のオブジェクトがロックされています。 +1 つ以上のオブジェクトがコピーできません。 +1 つ以上のオブジェクトを所有していません。 -本当に削除しますか? - <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> +これらのアイテムを削除しますか? + <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> 少なくとも 1 つのオブジェクトがロックされています。 @@ -1513,13 +1521,43 @@ http://secondlife.com/download から最新バージョンをダウンロード </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> 必要なソフトウェアのアップデートをダウンロードしました。 -バージョン [VERSION] +バージョン [VERSION] [[INFO_URL] このアップデートに関する情報] アップデートをインストールするには [APP_NAME] を再起動する必要があります。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> アップデートをインストールするには [APP_NAME] を再起動する必要があります。 +[[INFO_URL] このアップデートに関する情報] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + お使いの [APP_NAME] に必要なアップデートをダウンロードしました。 +バージョン [VERSION] +この試験的なビューアが [NEW_CHANNEL] ビューアに置き換えられています; +このアップデートの詳細については、[[INFO_URL] を参照してください] + <usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + お使いの [APP_NAME] に必要なアップデートをダウンロードしました。 +バージョン [VERSION] +この試験的なビューアが [NEW_CHANNEL] ビューアに置き換えられています; +[[INFO_URL] このアップデートに関する情報] を参照 + <usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + 必要なソフトウェアのアップデートをダウンロードしました。 +バージョン [VERSION] +この試験的なビューアが [NEW_CHANNEL] ビューアに置き換えられています; +[[INFO_URL] このアップデートに関する情報] を参照 + +アップデートをインストールするには [APP_NAME] を再起動する必要があります。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + アップデートをインストールするには [APP_NAME] を再起動する必要があります。 +この試験的なビューアが [NEW_CHANNEL] ビューアに置き換えられています; +[[INFO_URL] このアップデートに関する情報] を参照 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1572,6 +1610,10 @@ http://secondlife.com/download から最新バージョンをダウンロード グループから脱退しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + グループを抜けることができません。グループの最後のオーナーであるため、グループを抜けることができません。最初に、別のメンバーをオーナーの役割に割り当ててください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> 本当に住人全員をグリッドから追い出しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="住人全員を追い出す"/> @@ -2443,9 +2485,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ 「テレポート」を選択して実行することもできます。) </notification> <notification name="TeleportToPerson"> - [NAME] のような住人に連絡をとるには、「人」ボタンをクリックし、表示されるウィンドウで「住人」を選択してから、 -ウィンドウ下部にある「IM」をクリックします。 -(リストの名前をダブルクリック、または右クリックして「IM」を選んでも同じです。) + 誰かとのプライベートな会話を開くには、相手のアバターをクリックして、メニューから「IM」を選択します。 </notification> <notification name="CantSelectLandFromMultipleRegions"> サーバーの境界を越えて土地を選択することできません。 @@ -2820,6 +2860,15 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ <button name="Deny" text="拒否"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + '[NAME]' が所有する '<nolink>[OBJECTNAME]</nolink>' によってリクエストされたランタイムスクリプト権限がビューアによって認識されないため、許可できません。 + +この権限を許可するには、ビューアを [DOWNLOADURL] からの最新バージョンにアップデートしてください。 + <form name="form"> + <button name="Deny" text="Ok"/> + <button name="Mute" text="ブロック"/> + </form> + </notification> <notification name="ScriptDialog"> [NAME] の「<nolink>[TITLE]</nolink>」 [MESSAGE] diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index 03ce87537a..dd8fd41681 100755 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -49,6 +49,9 @@ <menu_button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/> <dnd_button name="minus_btn" tool_tip="選択したグループから脱退"/> </panel> + <text name="groupcount"> + あなたは[COUNT]グループに属しているので、まだ[REMAINING]参加できます。 + </text> </panel> <panel label="最新" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml index ae5391c7bd..1c3204ea04 100755 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="チャット" name="chat"> - <panel> + <panel name="general_chat_settings"> <check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/> <check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/> <check_box label="フレンドとグループ以外からはコールと IM を受信しない" name="voice_call_friends_only_check"/> @@ -14,71 +14,83 @@ </combo_box> <check_box label="吹き出しチャット" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - 通知 - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> フレンド IM: </text> <combo_box name="FriendIMOptions"> - <item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/> - <item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/> - <item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/> - <item label="フィルターなし" name="None" value="none"/> + <item label="開いている会話ウィンドウ" name="OpenConversationsWindow" value="openconversations"/> + <item label="メッセージをポップアップ表示" name="PopUpMessage" value="トースト"/> + <item label="フラッシュ ツールバー ボタン" name="FlashToolbarButton" value="フラッシュ"/> + <item label="動作なし" name="NoAction" value="noaction"/> </combo_box> + <check_box label="サウンドを再生" name="play_sound_friend_im"/> <text name="non_friend_ims"> - 非フレンド IM: + フレンドのいない IM: </text> <combo_box name="NonFriendIMOptions"> - <item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/> - <item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/> - <item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/> - <item label="フィルターなし" name="None" value="none"/> + <item label="開いている会話ウィンドウ" name="OpenConversationsWindow" value="openconversations"/> + <item label="メッセージをポップアップ表示" name="PopUpMessage" value="トースト"/> + <item label="フラッシュ ツールバー ボタン" name="FlashToolbarButton" value="フラッシュ"/> + <item label="動作なし" name="NoAction" value="noaction"/> </combo_box> + <check_box label="サウンドを再生" name="play_sound_non_friend_im"/> <text name="conference_ims"> - コンファレンス IM: + 会議 IM: </text> <combo_box name="ConferenceIMOptions"> - <item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/> - <item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/> - <item label="Flashツールバーボタン" name="FlashToolbarButton" value="flash"/> - <item label="フィルターなし" name="None" value="none"/> + <item label="開いている会話ウィンドウ" name="OpenConversationsWindow" value="openconversations"/> + <item label="メッセージをポップアップ表示" name="PopUpMessage" value="トースト"/> + <item label="フラッシュ ツールバー ボタン" name="FlashToolbarButton" value="フラッシュ"/> + <item label="動作なし" name="NoAction" value="noaction"/> </combo_box> + <check_box label="サウンドを再生" name="play_sound_conference_im"/> <text name="group_chat"> グループチャット: </text> <combo_box name="GroupChatOptions"> - <item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/> - <item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/> - <item label="Flash ツールバーボタン" name="FlashToolbarButton" value="flash"/> - <item label="なし" name="None" value="none"/> + <item label="開いている会話ウィンドウ" name="OpenConversationsWindow" value="openconversations"/> + <item label="メッセージをポップアップ表示" name="PopUpMessage" value="トースト"/> + <item label="フラッシュ ツールバー ボタン" name="FlashToolbarButton" value="フラッシュ"/> + <item label="動作なし" name="NoAction" value="noaction"/> </combo_box> + <check_box label="サウンドを再生" name="play_sound_group_chat_im"/> <text name="nearby_chat"> 近くのチャット: </text> <combo_box name="NearbyChatOptions"> - <item label="会話ウィンドウを開く" name="OpenConversationsWindow" value="openconversations"/> - <item label="メッセージのポップアップ" name="PopUpMessage" value="toast"/> - <item label="Flash ツールバーボタン" name="FlashToolBarButton" value="flash"/> - <item label="フィルターなし" name="None" value="none"/> + <item label="開いている会話ウィンドウ" name="OpenConversationsWindow" value="openconversations"/> + <item label="メッセージをポップアップ表示" name="PopUpMessage" value="トースト"/> + <item label="フラッシュ ツールバー ボタン" name="FlashToolBarButton" value="フラッシュ"/> + <item label="動作なし" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="サウンドを再生" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + オブジェクト IM: + </text> + <combo_box name="ObjectIMOptions"> + <item label="開いている会話ウィンドウ" name="OpenConversationsWindow" value="openconversations"/> + <item label="メッセージをポップアップ表示" name="PopUpMessage" value="トースト"/> + <item label="フラッシュ ツールバー ボタン" name="FlashToolBarButton" value="フラッシュ"/> + <item label="動作なし" name="NoAction" value="noaction"/> </combo_box> + <check_box label="サウンドを再生" name="play_sound_object_im"/> <text name="notifications_alert"> - すべての通知を一時的に受け付けないようにするには、「コミュニケート」>「通知を受けない」を使用します。 + 一時的にすべての通知を停止するには、「コミュニケーション」 > 「着信拒否]を使用します。 </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> - 音の再生: + サウンドを再生: </text> <check_box label="新しい会話" name="new_conversation"/> - <check_box label="ボイスコールの着信" name="incoming_voice_call"/> - <check_box label="テレポートを渡す" name="teleport_offer"/> - <check_box label="アイテムのオファー" name="inventory_offer"/> + <check_box label="受信音声コール" name="incoming_voice_call"/> + <check_box label="テレポートを送る" name="teleport_offer"/> + <check_box label="インベントリを送る" name="inventory_offer"/> </panel> - <panel> - <button label="ログのクリア..." name="clear_log"/> - <button label="テキストの削除..." name="delete_transcripts"/> + <panel name="log_settings"> + <button label="ログを消去..." name="clear_log"/> + <button label="テキストチャットを削除..." name="delete_transcripts"/> <button label="参照..." label_selected="参照" name="log_path_button"/> </panel> <button label="他の言語..." name="ok_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml index 1786b4befc..15017e330e 100755 --- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="true" label="近くの光" name="LocalLights"/> <check_box initial_value="true" label="基本シェーダー" name="BasicShaders" tool_tip="このオプションを無効にすると、グラフィックカードのドライバの種類によっては、クラッシュするのを防ぎます。"/> <check_box initial_value="true" label="周囲(大気)シェーダー" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="光と影" name="UseLightShaders"/> + <check_box initial_value="true" label="高度なライティングモデル" name="UseLightShaders"/> <check_box initial_value="true" label="アンビエントオクルージョン" name="UseSSAO"/> <check_box initial_value="true" label="フィールドの遠近感" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml index d90a1632ab..2c0359cb15 100755 --- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="自動的にインストール" name="Install_automatically"/> <combo_box.item label="手動でアップデートをダウンロード&インストール" name="Install_manual"/> </combo_box> + <check_box label="release candidate にアップグレードします" name="update_willing_to_test"/> <text name="Proxy Settings:"> プロキシ設定: </text> diff --git a/indra/newview/skins/default/xui/ja/panel_script_ed.xml b/indra/newview/skins/default/xui/ja/panel_script_ed.xml index 14d55002a3..b6d51085eb 100755 --- a/indra/newview/skins/default/xui/ja/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/ja/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="すべて選択" name="Select All"/> <menu_item_call label="選択解除" name="Deselect"/> <menu_item_call label="検索 / 再配置..." name="Search / Replace..."/> + <menu_item_call label="行に移動..." name="Go to line..."/> </menu> <menu label="ヘルプ" name="Help"> <menu_item_call label="ヘルプ..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/ja/panel_tools_texture.xml b/indra/newview/skins/default/xui/ja/panel_tools_texture.xml new file mode 100644 index 0000000000..34763f78c1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="テクスチャ" name="Texture"> + <panel.string name="string repeats per meter"> + メーターごとに繰り返す + </panel.string> + <panel.string name="string repeats per face"> + 面ごとに繰り返す + </panel.string> + <text name="color label"> + 色 + </text> + <color_swatch label="" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> + <text name="color trans"> + 透過度 % + </text> + <text name="glow label"> + グロー + </text> + <check_box label="明るさ全開" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="材質" name="Materials"/> + <combo_box.item label="メディア" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="テクスチャ (拡散)" name="Texture (diffuse)"/> + <combo_box.item label="凹凸 (標準)" name="Bumpiness (normal)"/> + <combo_box.item label="輝き (反射)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="テクスチャ" name="texture control" tool_tip="クリックして写真を選択します"/> + <text name="label alphamode"> + アルファモード + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="なし" name="None"/> + <combo_box.item label="アルファブレンディング" name="Alpha blending"/> + <combo_box.item label="アルファマスキング" name="Alpha masking"/> + <combo_box.item label="放射状マスク" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + マスクカットオフ + </text> + <texture_picker label="テクスチャ" name="bumpytexture control" tool_tip="クリックして写真を選択します"/> + <text name="label bumpiness"> + 凹凸 + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="なし" name="None"/> + <combo_box.item label="明るさ" name="Brightness"/> + <combo_box.item label="暗さ" name="Darkness"/> + <combo_box.item label="木目調" name="woodgrain"/> + <combo_box.item label="バーク" name="bark"/> + <combo_box.item label="レンガ" name="bricks"/> + <combo_box.item label="市松模様" name="checker"/> + <combo_box.item label="コンクリート" name="concrete"/> + <combo_box.item label="堅いタイル" name="crustytile"/> + <combo_box.item label="カットストーン" name="cutstone"/> + <combo_box.item label="円板" name="discs"/> + <combo_box.item label="小石" name="gravel"/> + <combo_box.item label="ペトリ皿" name="petridish"/> + <combo_box.item label="サイディング" name="siding"/> + <combo_box.item label="ストーンタイル" name="stonetile"/> + <combo_box.item label="化粧しっくい" name="stucco"/> + <combo_box.item label="サクション" name="suction"/> + <combo_box.item label="ウィーブ" name="weave"/> + </combo_box> + <texture_picker label="テクスチャ" name="shinytexture control" tool_tip="クリックして写真を選択します"/> + <text name="label shininess"> + 輝き + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="なし" name="None"/> + <combo_box.item label="低" name="Low"/> + <combo_box.item label="中" name="Medium"/> + <combo_box.item label="高" name="High"/> + </combo_box> + <text name="label glossiness"> + 光沢度 + </text> + <text name="label environment"> + 環境 + </text> + <text name="label shinycolor"> + 色 + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> + <text name="media_info"> + 選択したメディアの URL がもしあれば、ここに入ります + </text> + <button label="選択..." name="add_media" tool_tip="メディアを追加します"/> + <button label="削除" name="delete_media" tool_tip="このメディアテクスチャを削除します"/> + <button label="揃える" label_selected="メディアを一列に揃えます" name="button align" tool_tip="メディアテクスチャを一列に揃える(最初に読み込む必要があります)"/> + <text name="tex gen"> + マッピング + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="デフォルト" name="Default"/> + <combo_box.item label="平面" name="Planar"/> + </combo_box> + <spinner label="水平スケール" name="TexScaleU"/> + <spinner label="垂直スケール" name="TexScaleV"/> + <spinner label="メーターごとに繰り返す" name="rptctrl"/> + <spinner label="回転度" name="TexRot"/> + <spinner label="水平オフセット" name="TexOffsetU"/> + <spinner label="垂直オフセット" name="TexOffsetV"/> + <spinner label="水平スケール" name="bumpyScaleU"/> + <spinner label="垂直スケール" name="bumpyScaleV"/> + <spinner label="回転度" name="bumpyRot"/> + <spinner label="水平オフセット" name="bumpyOffsetU"/> + <spinner label="垂直オフセット" name="bumpyOffsetV"/> + <spinner label="水平スケール" name="shinyScaleU"/> + <spinner label="垂直スケール" name="shinyScaleV"/> + <spinner label="回転度" name="shinyRot"/> + <spinner label="水平オフセット" name="shinyOffsetU"/> + <spinner label="垂直オフセット" name="shinyOffsetV"/> + <check_box initial_value="false" label="平面を揃える" name="checkbox planar align" tool_tip="選択面全てのテクスチャを、最後に選択された面に揃えます。平面テクスチャのマッピングが必要です。"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml index 896ed556ae..5c2e18df03 100755 --- a/indra/newview/skins/default/xui/ja/role_actions.xml +++ b/indra/newview/skins/default/xui/ja/role_actions.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> <action_set description="これらの能力には、グループメンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" name="Membership"> <action description="このグループに人を招待" longdescription="「役割」セクションの「メンバー」タブ内にある「招待」ボタンを押して、このグループにメンバーを招待します。" name="member invite" value="1"/> @@ -25,7 +25,7 @@ </action_set> <action_set description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびに TP ルートのオプションを変更する権限が含まれます。" name="Parcel Identity"> <action description="「場所検索に表示」を切り替えカテゴリを設定" longdescription="「場所検索に表示」に切り替え、「土地情報」 > 「オプション」タブで区画のカテゴリを設定します。" name="land find places" value="17"/> - <action description="区画名、説明、「場所検索に表示」の設定を変更" longdescription="区画名、説明、「場所検索に表示」の設定を変更します。 「土地情報」 > 「オプション」タブで行います。" name="land change identity" value="18"/> + <action description="区画名、説明、および「Moderate コンテンツ」設定を変更" longdescription="区画名、説明、および「Moderate コンテンツ」設定を変更します。「土地情報」 > 「オプション」タブで行います。" name="land change identity" value="18"/> <action description="着地点およびテレポートルートを設定" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポートルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。" name="land set landing point" value="19"/> </action_set> <action_set description="これらの能力には、「オブジェクトを作成」、「地形を編集」、音楽とメディアの設定など、区画のオプションに関連する権限が含まれます。" name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index b27904c4d7..ab2fd461ab 100755 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -139,6 +139,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> お使いの古いビューワでは Second Life にアクセスできません。以下のページから新しいビューワをダウンロードしてください: http://secondlife.com/download @@ -448,6 +451,9 @@ support@secondlife.com にお問い合わせください。 <string name="SLappAgentRequestFriend"> フレンド登録リクエスト </string> + <string name="SLappAgentRemoveFriend"> + フレンドの削除 + </string> <string name="BUTTON_CLOSE_DARWIN"> 閉じる (⌘W) </string> @@ -838,6 +844,9 @@ support@secondlife.com にお問い合わせください。 <string name="multiple_textures"> 複数 </string> + <string name="use_texture"> + テクスチャを使用 + </string> <string name="texture_loading"> ローディング... </string> @@ -937,6 +946,21 @@ support@secondlife.com にお問い合わせください。 <string name="TeleportYourAgent"> あなたをテレポート </string> + <string name="JoinAnExperience"> + 体験に参加する + </string> + <string name="SilentlyManageEstateAccess"> + 土地のアクセスリストを管理するときにアラートを表示しない + </string> + <string name="OverrideYourAnimations"> + デフォルトのアニメーションを置き換え + </string> + <string name="ScriptReturnObjects"> + あなたの代わりにオブジェクトを返却 + </string> + <string name="UnknownScriptPermission"> + (不明)! + </string> <string name="SIM_ACCESS_PG"> General </string> @@ -1968,6 +1992,12 @@ support@secondlife.com にお問い合わせください。 <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD(右下) </string> + <string name="ATTACH_NECK"> + 首 + </string> + <string name="ATTACH_AVATAR_CENTER"> + アバターの中央 + </string> <string name="CursorPos"> [LINE] 行目、[COLUMN] 列目 </string> @@ -2997,6 +3027,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Hip Width"> 腰の幅 </string> + <string name="Hover"> + ホバー + </string> <string name="In"> 内向き </string> @@ -5081,4 +5114,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="logging_calls_enabled_log_empty"> ログイン時の会話はありません。誰かにご連絡した後、または誰かがあなたに連絡した後、ログエントリがここに表示されます。 </string> + <string name="loading_chat_logs"> + ロード中... + </string> </strings> diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index d089266342..47975a6386 100755 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -7,7 +7,9 @@ Construído com [COMPILER] versão [COMPILER_VERSION] </floater.string> <floater.string name="AboutPosition"> - Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em [HOSTNAME]</nolink>([HOSTIP]) + Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(coordenadas globais [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml index 8823d04b62..998fa8b2d6 100755 --- a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="EDITAR AUTORIZAÇÕES DE CONTEÚDO"> +<floater name="floaterbulkperms" title="AJUSTAR PERMISSÕES DE CONTEÚDO"> <floater.string name="nothing_to_modify_text"> A seleção não contém nenhum conteúdo editável. </floater.string> @@ -33,7 +33,7 @@ <button label="Tudo" label_selected="Todas" name="check_all"/> <button label="Limpar" label_selected="Nenhuma" name="check_none"/> <text name="newperms"> - Novas autorizações de conteúdo + Ajustar permissões de conteúdo para </text> <text name="GroupLabel"> Grupo: @@ -49,6 +49,7 @@ <check_box label="Modificar" name="next_owner_modify"/> <check_box label="Copiar" name="next_owner_copy"/> <check_box initial_value="true" label="Transferir" name="next_owner_transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> - <button label="OK" name="apply"/> + <button label="OK" name="ok"/> + <button label="Aplicar" name="apply"/> <button label="Cancelar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_goto_line.xml b/indra/newview/skins/default/xui/pt/floater_goto_line.xml new file mode 100644 index 0000000000..f2ef825ba0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="IR PARA A LINHA"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + Ir para a linha + </text> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml index 9f6a7a06ad..e592b14fa7 100755 --- a/indra/newview/skins/default/xui/pt/floater_im_session.xml +++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traduzir conversa" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml index d04cf2a173..182f2513e0 100755 --- a/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Exibir: </text> - <check_box label="Testar" name="show_world"/> + <check_box label="Mundo" name="show_world"/> <check_box label="Apenas móveis" name="show_world_movables_only"/> <check_box label="Navmesh" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml index cfd69158bc..61953f9f78 100755 --- a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Congelar" name="Freeze..."/> <menu_item_call label="Ejetar" name="Eject..."/> <menu_item_call label="Depurar texturas" name="Debug..."/> + <menu_item_call label="Descartar XML" name="Dump XML"/> <menu_item_call label="Mais zoom" name="Zoom In"/> <menu_item_call label="Pagar" name="Pay..."/> <menu_item_call label="Perfil do objeto" name="Object Inspect"/> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml index 5b32784c32..2d4cd670e6 100755 --- a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> <menu_item_call label="Depurar texturas" name="Debug..."/> + <menu_item_call label="Descartar XML" name="Dump XML"/> <menu_item_call label="Largar" name="Drop"/> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml index a4a26144c7..1af8d64438 100755 --- a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Congelar" name="Freeze..."/> <menu_item_call label="Ejetar" name="Eject..."/> <menu_item_call label="Depurar texturas" name="Debug..."/> + <menu_item_call label="Descartar XML" name="Dump XML"/> <menu_item_call label="Mais zoom" name="Zoom In"/> <menu_item_call label="Pagar" name="Pay..."/> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml index e84dcb093d..447b77657b 100755 --- a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="Meus grupos" name="Groups..."/> <menu_item_call label="Meu perfil" name="Profile..."/> <menu_item_call label="Depurar texturas" name="Debug..."/> + <menu_item_call label="Descartar XML" name="Dump XML"/> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_conversation.xml b/indra/newview/skins/default/xui/pt/menu_conversation.xml index 01316b887d..2dd150a61e 100644 --- a/indra/newview/skins/default/xui/pt/menu_conversation.xml +++ b/indra/newview/skins/default/xui/pt/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Encerrar conversa" name="close_conversation"/> <menu_item_call label="Abrir conversa de voz" name="open_voice_conversation"/> <menu_item_call label="Desconectar de voz" name="disconnect_from_voice"/> + <menu_item_call label="Fechar selecionados" name="close_selected_conversations"/> <menu_item_call label="Exibir perfil" name="view_profile"/> <menu_item_call label="MI" name="im"/> <menu_item_call label="Oferecer teletransporte" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/pt/menu_land.xml b/indra/newview/skins/default/xui/pt/menu_land.xml index 9182ce321a..2ebe85df6e 100755 --- a/indra/newview/skins/default/xui/pt/menu_land.xml +++ b/indra/newview/skins/default/xui/pt/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Comprar passe" name="Land Buy Pass"/> <menu_item_call label="Construir" name="Create"/> <menu_item_call label="Editar a topografia" name="Edit Terrain"/> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index be94ad49db..cd840f3137 100755 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml @@ -17,7 +17,13 @@ <menu_item_call label="Mostrar TOS" name="TOS"/> <menu_item_call label="Mostrar mensagem crítica" name="Critical"/> <menu_item_call label="Test de Bugs de Conteúdo Web" name="Web Content Floater Debug Test"/> - <menu label="Configurar nível de registro em log" name="Set Logging Level"/> + <menu label="Configurar nível de registro em log" name="Set Logging Level"> + <menu_item_check label="Depurar" name="Debug"/> + <menu_item_check label="Info" name="Info"/> + <menu_item_check label="Aviso" name="Warning"/> + <menu_item_check label="Erro" name="Error"/> + <menu_item_check label="Nenhum" name="None"/> + </menu> <menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/> <menu_item_call label="Exibir painel de notificações" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_mute_particle.xml b/indra/newview/skins/default/xui/pt/menu_mute_particle.xml new file mode 100644 index 0000000000..be13c66d7a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_object.xml b/indra/newview/skins/default/xui/pt/menu_object.xml index 28dd9febe2..a552a5de5a 100755 --- a/indra/newview/skins/default/xui/pt/menu_object.xml +++ b/indra/newview/skins/default/xui/pt/menu_object.xml @@ -5,13 +5,13 @@ </menu_item_call> <menu_item_call label="Editar" name="Edit..."/> <menu_item_call label="Construir" name="Build"/> - <menu_item_call label="Exibir em linksets" name="show_in_linksets"/> - <menu_item_call label="Exibir em personagens" name="show_in_characters"/> <menu_item_call label="Abrir" name="Open"/> <menu_item_call label="Sentar aqui" name="Object Sit"/> <menu_item_call label="Ficar de pé" name="Object Stand Up"/> <menu_item_call label="Perfil do objeto" name="Object Inspect"/> <menu_item_call label="Mais zoom" name="Zoom In"/> + <menu_item_call label="Exibir em linksets" name="show_in_linksets"/> + <menu_item_call label="Exibir em personagens" name="show_in_characters"/> <context_menu label="Colocar no(a)" name="Put On"> <menu_item_call label="Vestir" name="Wear"/> <menu_item_call label="Adicionar" name="Add"/> @@ -28,4 +28,5 @@ <menu_item_call label="Pagar" name="Pay..."/> <menu_item_call label="Comprar" name="Buy..."/> <menu_item_call label="Excluir" name="Delete"/> + <menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml index aa0a426405..102df18b28 100755 --- a/indra/newview/skins/default/xui/pt/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Exibir perfil" name="show_agent"/> <menu_item_call label="Enviar MI..." name="send_im"/> <menu_item_call label="Adicionar amigo..." name="add_friend"/> + <menu_item_call label="Remover amigo..." name="remove_friend"/> <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/> <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml index 247a92567a..2cd0f52ef3 100755 --- a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Perfil do objeto..." name="show_object"/> + <menu_item_call label="Bloquear..." name="block_object"/> <menu_item_call label="Mostrar no mapa" name="show_on_map"/> <menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/> <menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 15814fed4c..e6eceb5f2f 100755 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/> <menu_item_call label="Andar/correr/voar..." name="Walk / run / fly"/> </menu> - <menu label="Status" name="Status"/> + <menu label="Status" name="Status"> + <menu_item_check label="Ausente" name="Away"/> + <menu_item_check label="Não perturbe" name="Do Not Disturb"/> + </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> <menu_item_call label="Caixa de saída do lojista..." name="MerchantOutbox"/> <menu_item_call label="Painel da conta..." name="Manage My Account"> @@ -32,6 +35,7 @@ <menu_item_check label="Conversas..." name="Conversations"/> <menu_item_check label="Bate-papo local..." name="Nearby Chat"/> <menu_item_check label="Falar" name="Speak"/> + <menu_item_check label="Registro de conversas..." name="Conversation Log..."/> <menu label="Distorção de voz" name="VoiceMorphing"> <menu_item_check label="Não distorcer voz" name="NoVoiceMorphing"/> <menu_item_check label="Visualizar..." name="Preview"/> @@ -42,6 +46,7 @@ <menu_item_check label="Grupos" name="My Groups"/> <menu_item_check label="Pessoas próximas" name="Active Speakers"/> <menu_item_call label="Lista de bloqueados" name="Block List"/> + <menu_item_check label="Não perturbe" name="Do Not Disturb"/> </menu> <menu label="Mundo" name="World"> <menu_item_call label="Criar marco deste lugar" name="Create Landmark Here"/> @@ -110,6 +115,7 @@ <menu_item_call label="Incluir próxima parte" name="Include Next Part"/> <menu_item_call label="Incluir parte anterior" name="Include Previous Part"/> </menu> + <menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Enfocar seleção" name="Focus on Selection"/> <menu_item_call label="Ampliar seleção" name="Zoom to Selection"/> <menu label="Objeto:" name="Object"> @@ -273,6 +279,7 @@ <menu_item_check label="Camera Offset" name="Camera Offset"/> <menu_item_check label="Taxa de quadros aleatória" name="Randomize Framerate"/> <menu_item_check label="Frame Test" name="Frame Test"/> + <menu_item_call label="Perfil do quadro" name="Frame Profile"/> </menu> <menu label="Render Metadata" name="Render Metadata"> <menu_item_check label="Normais" name="Normals"/> @@ -293,15 +300,15 @@ </menu> <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> + <menu_item_call label="Informações sobre o material selecionado" name="Selected Material Info"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Iluminação e sombras" name="Advanced Lighting Model"/> + <menu_item_check label="Modelo avançado de luzes" name="Advanced Lighting Model"/> <menu_item_check label="Sombras da projeção do sol/lua" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO e sombra suave" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Máscaras alpha automáticas (adiadas)" name="Automatic Alpha Masks (deferred)"/> <menu_item_check label="Máscaras alpha automáticas (sem adiar)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Texturas de animação" name="Animation Textures"/> <menu_item_check label="Desativar texturas" name="Disable Textures"/> - <menu_item_check label="Atlas texturizado (fase experimental)" name="Texture Atlas"/> <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> <menu_item_check label="Objetos iridescentes" name="Hover Glow Objects"/> @@ -320,7 +327,6 @@ <menu_item_call label="Teste de mídia do navegador" name="Web Browser Test"/> <menu_item_call label="Navegador de conteúdo web" name="Web Content Browser"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> - <menu_item_call label="Dados de memória" name="Memory Stats"/> <menu_item_check label="Console de depuração de região" name="Region Debug Console"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index d9f5e48745..d5096ec858 100755 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -209,6 +209,14 @@ Qualquer membro numa função com esta habilidade, pode atribuir a sí mesmo -- Adicionar esta habilidade a '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> + <notification name="EjectGroupMemberWarning"> + Você está prestes a expulsar [AVATAR_NAME] do grupo. + <usetemplate ignoretext="Confirmar expulsão de um participante do grupo" name="okcancelignore" notext="Cancelar" yestext="Expulsar"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Você está prestes a expulsar [COUNT] membros do grupo. + <usetemplate ignoretext="Confirmar expulsão de diversos membros do grupo" name="okcancelignore" notext="Cancelar" yestext="Expulsar"/> + </notification> <notification name="AttachmentDrop"> Você está prestes a largar seu anexo. Tem certeza de que quer prosseguir? @@ -1105,9 +1113,9 @@ em TODOS OS TERRENOS deste sim? Por favor, insira um valor maior. </notification> <notification name="ConfirmItemDeleteHasLinks"> - Pelo menos um dos itens possui links que levam a ele. Ao excluir o item, os links não funcionarão mais. Por isso, recomendamos excluir os links primeiro. + Pelo menos um dos itens possui links que levam a ele. Ao excluir o item, os links não funcionarão mais. Por isso, recomendamos excluir os links primeiro. -Tem certeza de que quer excluir estes items? +Tem certeza de que quer excluir estes itens? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLock"> @@ -1123,9 +1131,9 @@ Tem certeza de que deseja apagar estes itens? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> - Você não é proprietário de pelo menos um dos itens selecionados. + Ao menos um dos itens selecionados não é seu. -Tem certeza de que deseja apagar estes itens? +Tem certeza de que quer excluir estes itens? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> @@ -1135,22 +1143,26 @@ Tem certeza de que deseja apagar estes itens? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="ConfirmObjectDeleteLockNoOwn"> - Pelo menos um dos objetos está trancado ou não é de sua posse. + Ao menos um objeto está bloqueado. +Ao menos um objeto não é seu. -Tem certeza de que deseja apagar estes itens? +Tem certeza de que quer excluir estes itens? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> - Pelo menos um dos objetos não é copiável ou não é de sua posse. + Ao menos um objeto não é copiável. +Ao menos um objeto não é seu. -Tem certeza de que deseja apagar estes itens? +Tem certeza de que quer excluir estes itens? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> - Pelo menos um dos objetos está trancado, não é copiável ou você não o possui. + Ao menos um objeto está bloqueado. +Ao menos um objeto não é copiável. +Ao menos um objeto não é seu. -Tem certeza de que deseja apagar estes itens? - <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> +Tem certeza de que quer excluir estes itens? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> </notification> <notification name="ConfirmObjectTakeLock"> Pelo menos um dos objetos está trancado. @@ -1468,13 +1480,43 @@ Versão [VERSION] [[RELEASE_NOTES_FULL_URL] sobre esta atualização] </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> O software requer uma atualização que já foi baixada. -Versão [VERSION] +Versão [VERSION] Informação [[INFO_URL] sobre essa atualização] Para instalar a atualização, será preciso reiniciar o [APP_NAME]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> Para instalar a atualização, será preciso reiniciar o [APP_NAME]. +Informação [[INFO_URL] sobre essa atualização] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + Baixamos uma atualização para a instalação do [APP_NAME]. +Versão [VERSION] +O visualizador experimental foi substituído por um visualizador [NEW_CHANNEL]; +consulte [[INFO_URL] para obter mais detalhes sobre essa atualização] + <usetemplate name="okcancelbuttons" notext="Depois..." yestext="Instalar agora e reiniciar o [APP_NAME]"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + Baixamos uma atualização para a instalação do [APP_NAME]. +Versão [VERSION] +O visualizador experimental foi substituído por um visualizador [NEW_CHANNEL]; +consulte a informação [[INFO_URL] sobre essa atualização] + <usetemplate name="okcancelbuttons" notext="Depois..." yestext="Instalar agora e reiniciar o [APP_NAME]"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + O software requer uma atualização que já foi baixada. +Versão [VERSION] +O visualizador experimental foi substituído por um visualizador [NEW_CHANNEL]; +consulte a informação [[INFO_URL] sobre essa atualização] + +Para instalar a atualização, será preciso reiniciar o [APP_NAME]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + Para instalar a atualização, será preciso reiniciar o [APP_NAME]. +O visualizador experimental foi substituído por um visualizador [NEW_CHANNEL]; +consulte a informação [[INFO_URL] sobre essa atualização] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1524,6 +1566,10 @@ Para instalar a atualização, será preciso reiniciar o [APP_NAME]. Você é atualmente um membro do grupo <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sair"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + Não foi possível deixar o grupo. Você não pode deixar o grupo pois é o último proprietário dele. Primeiramente, atribua outro membro à função de proprietário. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Tem CERTEZA de que deseja expulsar todos os residentes do grid? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Chutar todos"/> @@ -2384,9 +2430,7 @@ Selecione só um objeto. e selecionar 'Teletransportar'.) </notification> <notification name="TeleportToPerson"> - Para entrar em contato com residentes como '[NAME]', clique no botão "Pessoas", selecione um residente na janela que é exibida e clique em 'MI' na - parte inferior da janela. - (Também é possível clicar duas vezes no nome, ou clicar no nome com o botão direito e selecionar 'MI'.) + Para iniciar uma conversa particular com alguém, clique com o botão direito no avatar e selecione "MI" no menu. </notification> <notification name="CantSelectLandFromMultipleRegions"> Impossível selecionar terra nas fronteiras do servidor. Tente selecionar um pedaço menor de terra. @@ -2757,6 +2801,15 @@ Não conceda acesso se você não entender completamente por que ele deseja aces <button name="Deny" text="Negar"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + A permissão de script de tempo de execução solicitada por '<nolink>[OBJECTNAME]</nolink>', um objeto de '[NAME]', não é reconhecida pelo visualizador e não pode ser concedida. + +Para conceder essa permissão, atualize seu visualizador para a versão mais recente em [DOWNLOADURL]. + <form name="form"> + <button name="Deny" text="Ok"/> + <button name="Mute" text="Bloquear"/> + </form> + </notification> <notification name="ScriptDialog"> '<nolink>[TITLE]</nolink>' de [NAME] [MESSAGE] diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml index babb48c208..205fd6b97d 100755 --- a/indra/newview/skins/default/xui/pt/panel_people.xml +++ b/indra/newview/skins/default/xui/pt/panel_people.xml @@ -49,6 +49,9 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa- <menu_button name="plus_btn" tool_tip="Entrar em um grupo/Criar novo grupo"/> <dnd_button name="minus_btn" tool_tip="Sair do grupo selecionado"/> </panel> + <text name="groupcount"> + Você pertence a [COUNT] grupos e pode entrar em mais [REMAINING]. + </text> </panel> <panel label="RECENTE" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml index baf14c2c23..89f1e07647 100755 --- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat" name="chat"> - <panel> - <check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/> - <check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/> + <panel name="general_chat_settings"> + <check_box initial_value="true" label="Executar animação de digitação durante o bate-papo" name="play_typing_animation"/> + <check_box label="Envie MIs por email quando eu estiver desconectado" name="send_im_to_email"/> <check_box label="Apenas amigos e grupos podem me ligar ou enviar MIs" name="voice_call_friends_only_check"/> <text name="font_size"> Tamanho da fonte: @@ -12,62 +12,74 @@ <item label="Médio" name="Medium" value="1"/> <item label="Grande" name="Large" value="2"/> </combo_box> - <check_box label="Balão de bate-papo" name="bubble_text_chat"/> + <check_box label="Balão de conversa" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Notificações - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> MIs de amigos: </text> <combo_box name="FriendIMOptions"> <item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/> - <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/> - <item label="Nenhum" name="None" value="none"/> + <item label="Abrir pop up com mensagem" name="PopUpMessage" value="avisos"/> + <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="piscar"/> + <item label="Nenhuma ação" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Executar som" name="play_sound_friend_im"/> <text name="non_friend_ims"> MIs de não amigos: </text> <combo_box name="NonFriendIMOptions"> <item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/> - <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/> - <item label="Nenhum" name="None" value="none"/> + <item label="Abrir pop up com mensagem" name="PopUpMessage" value="avisos"/> + <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="piscar"/> + <item label="Nenhuma ação" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Executar som" name="play_sound_non_friend_im"/> <text name="conference_ims"> MIs de conferências: </text> <combo_box name="ConferenceIMOptions"> <item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/> - <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/> - <item label="Nenhum" name="None" value="none"/> + <item label="Abrir pop up com mensagem" name="PopUpMessage" value="avisos"/> + <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="piscar"/> + <item label="Nenhuma ação" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Executar som" name="play_sound_conference_im"/> <text name="group_chat"> - Bate-papo de grupo: + Conversa em grupo: </text> <combo_box name="GroupChatOptions"> <item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/> - <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="flash"/> - <item label="Nenhum" name="None" value="none"/> + <item label="Abrir pop up com mensagem" name="PopUpMessage" value="avisos"/> + <item label="Piscar botão da barra de ferramentas" name="FlashToolbarButton" value="piscar"/> + <item label="Nenhuma ação" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Executar som" name="play_sound_group_chat_im"/> <text name="nearby_chat"> - Bate-papo local: + Conversa local: </text> <combo_box name="NearbyChatOptions"> <item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/> - <item label="Abrir pop up com mensagem" name="PopUpMessage" value="toast"/> - <item label="Piscar botão da barra de ferramentas" name="FlashToolBarButton" value="flash"/> - <item label="Nenhum" name="None" value="none"/> + <item label="Abrir pop up com mensagem" name="PopUpMessage" value="avisos"/> + <item label="Piscar botão da barra de ferramentas" name="FlashToolBarButton" value="piscar"/> + <item label="Nenhuma ação" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Executar som" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + MIs de objetos: + </text> + <combo_box name="ObjectIMOptions"> + <item label="Abrir janela Conversas" name="OpenConversationsWindow" value="openconversations"/> + <item label="Abrir pop up com mensagem" name="PopUpMessage" value="avisos"/> + <item label="Piscar botão da barra de ferramentas" name="FlashToolBarButton" value="piscar"/> + <item label="Nenhuma ação" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Executar som" name="play_sound_object_im"/> <text name="notifications_alert"> Para interromper temporariamente todas as notificações, use Comunicar > Não perturbe. </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Executar som: </text> @@ -76,7 +88,7 @@ <check_box label="Oferta de teletransporte" name="teleport_offer"/> <check_box label="Oferta de inventário" name="inventory_offer"/> </panel> - <panel> + <panel name="log_settings"> <button label="Limpar registro..." name="clear_log"/> <button label="Excluir transcrições..." name="delete_transcripts"/> <button label="Procurar..." label_selected="Procurar" name="log_path_button"/> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml index 28e7184326..37e8838bf4 100755 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml @@ -31,7 +31,7 @@ rápido <check_box initial_value="verdadeiro" label="Luzes locais" name="LocalLights"/> <check_box initial_value="true" label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vídeo a travem."/> <check_box initial_value="true" label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/> - <check_box initial_value="verdadeiro" label="Iluminação e sombras" name="UseLightShaders"/> + <check_box initial_value="verdadeiro" label="Modelo avançado de luzes" name="UseLightShaders"/> <check_box initial_value="verdadeiro" label="Oclusão ambiental" name="UseSSAO"/> <check_box initial_value="verdadeiro" label="Profundidade" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml index ebbd63138a..887d0cfe98 100755 --- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Instalar automaticamente" name="Install_automatically"/> <combo_box.item label="Baixar e instalar atualizações manualmente" name="Install_manual"/> </combo_box> + <check_box label="Disposto a atualizar para candidatos da versão" name="update_willing_to_test"/> <text name="Proxy Settings:"> Configurações de proxy: </text> diff --git a/indra/newview/skins/default/xui/pt/panel_script_ed.xml b/indra/newview/skins/default/xui/pt/panel_script_ed.xml index de02aafe2f..39bb5edc75 100755 --- a/indra/newview/skins/default/xui/pt/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/pt/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Selecionar tudo" name="Select All"/> <menu_item_call label="Desmarcar" name="Deselect"/> <menu_item_call label="Buscar / Substituir..." name="Search / Replace..."/> + <menu_item_call label="Ir para a linha..." name="Go to line..."/> </menu> <menu label="Ajuda" name="Help"> <menu_item_call label="ajuda..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/pt/panel_tools_texture.xml b/indra/newview/skins/default/xui/pt/panel_tools_texture.xml new file mode 100644 index 0000000000..03da89dd3b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Textura" name="Texture"> + <panel.string name="string repeats per meter"> + Repetições por metro + </panel.string> + <panel.string name="string repeats per face"> + Repetições por face + </panel.string> + <text name="color label"> + Cor + </text> + <color_swatch label="" name="colorswatch" tool_tip="Selecionar a cor"/> + <text name="color trans"> + % de transparência + </text> + <text name="glow label"> + Brilho + </text> + <check_box label="Completamente luminoso" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Materiais" name="Materials"/> + <combo_box.item label="Mídia" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Textura (difusa)" name="Texture (diffuse)"/> + <combo_box.item label="Relevo (normal)" name="Bumpiness (normal)"/> + <combo_box.item label="Brilho (especular)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Textura" name="texture control" tool_tip="Selecionar imagem"/> + <text name="label alphamode"> + Modo alpha + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Nenhum" name="None"/> + <combo_box.item label="Mistura alpha" name="Alpha blending"/> + <combo_box.item label="Máscara alpha" name="Alpha masking"/> + <combo_box.item label="Máscara emissiva" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Corte da máscara + </text> + <texture_picker label="Textura" name="bumpytexture control" tool_tip="Selecionar imagem"/> + <text name="label bumpiness"> + Relevo + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Nenhum" name="None"/> + <combo_box.item label="Luminosidade" name="Brightness"/> + <combo_box.item label="Escuridão" name="Darkness"/> + <combo_box.item label="grão de madeira" name="woodgrain"/> + <combo_box.item label="casca de árvore" name="bark"/> + <combo_box.item label="tijolos" name="bricks"/> + <combo_box.item label="quadriculado" name="checker"/> + <combo_box.item label="concreto" name="concrete"/> + <combo_box.item label="ladrilho ríspido" name="crustytile"/> + <combo_box.item label="pedra talhada" name="cutstone"/> + <combo_box.item label="discos" name="discs"/> + <combo_box.item label="cascalho" name="gravel"/> + <combo_box.item label="placa de petri" name="petridish"/> + <combo_box.item label="desvio" name="siding"/> + <combo_box.item label="ladrilho de pedra" name="stonetile"/> + <combo_box.item label="estuque" name="stucco"/> + <combo_box.item label="sucção" name="suction"/> + <combo_box.item label="tecelagem" name="weave"/> + </combo_box> + <texture_picker label="Textura" name="shinytexture control" tool_tip="Selecionar imagem"/> + <text name="label shininess"> + Brilho + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Nenhum" name="None"/> + <combo_box.item label="Baixo" name="Low"/> + <combo_box.item label="Médio" name="Medium"/> + <combo_box.item label="Alto" name="High"/> + </combo_box> + <text name="label glossiness"> + Acetinação + </text> + <text name="label environment"> + Ambiente + </text> + <text name="label shinycolor"> + Cor + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Selecionar a cor"/> + <text name="media_info"> + A URL da mídia escolhida, caso haja, é inserida aqui + </text> + <button label="Selecionar..." name="add_media" tool_tip="Adicionar mídia"/> + <button label="Remover" name="delete_media" tool_tip="Excluir esta textura de mídia"/> + <button label="Alinhar" label_selected="Alinhar mídia" name="button align" tool_tip="Alinhar texturas de mídia (após carregar mídia)"/> + <text name="tex gen"> + Mapeamento + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="Padrão" name="Default"/> + <combo_box.item label="Planar" name="Planar"/> + </combo_box> + <spinner label="Escala horizontal" name="TexScaleU"/> + <spinner label="Escala vertical" name="TexScaleV"/> + <spinner label="Repetições por metro" name="rptctrl"/> + <spinner label="Graus de rotação" name="TexRot"/> + <spinner label="Offset horizontal" name="TexOffsetU"/> + <spinner label="Offset vertical" name="TexOffsetV"/> + <spinner label="Escala horizontal" name="bumpyScaleU"/> + <spinner label="Escala vertical" name="bumpyScaleV"/> + <spinner label="Graus de rotação" name="bumpyRot"/> + <spinner label="Offset horizontal" name="bumpyOffsetU"/> + <spinner label="Offset vertical" name="bumpyOffsetV"/> + <spinner label="Escala horizontal" name="shinyScaleU"/> + <spinner label="Escala vertical" name="shinyScaleV"/> + <spinner label="Graus de rotação" name="shinyRot"/> + <spinner label="Offset horizontal" name="shinyOffsetU"/> + <spinner label="Offset vertical" name="shinyOffsetV"/> + <check_box initial_value="false" label="Alinhar planos planares" name="checkbox planar align" tool_tip="Alinhar texturas de todos os planos selecionados com o plano selecionado por último. Requer mapeamento de textura planar."/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml index 21b085431e..e45a3bd21f 100755 --- a/indra/newview/skins/default/xui/pt/role_actions.xml +++ b/indra/newview/skins/default/xui/pt/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="Estas habilidades incluem poderes para mudar o nome da parcelas e configurações de publicação, visibilidade da busca de diretório e ponto de aterrissagem & opções de rota de TP." name="Parcel Identity"> <action description="Alternar 'Exibir nos resultados de busca' e selecionar a categoria" longdescription="Alterne entre 'Exibir nos resultados de busca' ou não, e selecione a categoria do terreno em 'Sobre o terreno'." name="land find places" value="17"/> - <action description="Mude o nome, a descrição e a exibição do terreno nos resultados de busca." longdescription="Mude o nome, a descrição e a exibição do terreno nos resultados de busca. Veja essas opções em Sobre o terreno > guia Opções." name="land change identity" value="18"/> + <action description="Alterar nome da parcela, descrição e configurações de "Conteúdo moderado"" longdescription="Altere o nome da parcela, descrição e configurações de "Conteúdo moderado". Isso é feito em Sobre o terreno > guia Opções." name="land change identity" value="18"/> <action description="Definir ponto de aterrissagem e rota de teletransporte" longdescription="Em uma parcela pertencente ao grupo, membros em uma função com esta habilidade podem definir um ponto de aterrissagem para especificar onde os teletransportes chegam e também definir a rota do teletransporte para um maior controle. É feito em Sobre o terreno > aba Opções." name="land set landing point" value="19"/> </action_set> <action_set description="Estas habilidade incluem poderes que afetam opções de parcela, como 'Criar objetos', 'Editar terreno' e música & configurações de mídia." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 4bf18aab70..adc3ee14e0 100755 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -130,6 +130,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> O visualizador utilizado já não é compatível com o Second Life. Visite a página abaixo para baixar uma versão atual: http://secondlife.com/download @@ -400,6 +403,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="SLappAgentRequestFriend"> Pedido de amizade </string> + <string name="SLappAgentRemoveFriend"> + Remoção de amigo + </string> <string name="BUTTON_CLOSE_DARWIN"> Fechar (⌘W) </string> @@ -787,6 +793,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="multiple_textures"> Múltiplo </string> + <string name="use_texture"> + Usar textura + </string> <string name="texture_loading"> Carregando... </string> @@ -883,6 +892,21 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="TeleportYourAgent"> Teletransportá-lo </string> + <string name="JoinAnExperience"> + Participar de uma experiência + </string> + <string name="SilentlyManageEstateAccess"> + Suprimir alertas ao gerenciar listas de acesso ao terreno + </string> + <string name="OverrideYourAnimations"> + Substituir suas animações padrão + </string> + <string name="ScriptReturnObjects"> + Retornar objetos em seu nome + </string> + <string name="UnknownScriptPermission"> + (desconhecido)! + </string> <string name="SIM_ACCESS_PG"> Público geral </string> @@ -1908,6 +1932,12 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD direito inferior </string> + <string name="ATTACH_NECK"> + Pescoço + </string> + <string name="ATTACH_AVATAR_CENTER"> + Centro do avatar + </string> <string name="CursorPos"> Linha [LINE], Coluna [COLUMN] </string> @@ -2894,6 +2924,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="Hip Width"> Largura do quadril </string> + <string name="Hover"> + Pairar + </string> <string name="In"> Dentro </string> @@ -4951,4 +4984,7 @@ Tente colocar o caminho do editor entre aspas. <string name="logging_calls_enabled_log_empty"> Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui. </string> + <string name="loading_chat_logs"> + Carregando... + </string> </strings> diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml index 2b2b3cf453..9494106e96 100755 --- a/indra/newview/skins/default/xui/ru/floater_about.xml +++ b/indra/newview/skins/default/xui/ru/floater_about.xml @@ -9,6 +9,8 @@ </floater.string> <floater.string name="AboutPosition"> Вы в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», расположенном на <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +SLURL: <nolink>[SLURL]</nolink> +(глобальные координаты [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml index ccf13cf02a..31fc1c5ed3 100755 --- a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="ИЗМЕНИТЬ РАЗРЕШЕНИЯ НА ИСПОЛЬЗОВАНИЕ КОНТЕНТА"> +<floater name="floaterbulkperms" title="НАСТРОИТЬ РАЗРЕШЕНИЯ НА ИСПОЛЬЗОВАНИЕ КОНТЕНТА"> <floater.string name="nothing_to_modify_text"> В выбранной области нет контента, который можно изменять. </floater.string> @@ -24,7 +24,7 @@ <button label="√ Все" name="check_all"/> <button label="Очистить" label_selected="Нет" name="check_none"/> <text name="newperms"> - Новые разрешения на контент + Настроить разрешения на использование контента: </text> <text name="GroupLabel"> Группа: @@ -40,6 +40,7 @@ <check_box label="Изменять" name="next_owner_modify"/> <check_box label="Копировать" name="next_owner_copy"/> <check_box initial_value="истина" label="Передать" name="next_owner_transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/> - <button label="ОК" name="apply"/> + <button label="OK" name="ok"/> + <button label="Применить" name="apply"/> <button label="Отмена" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_goto_line.xml b/indra/newview/skins/default/xui/ru/floater_goto_line.xml new file mode 100644 index 0000000000..51caaa471d --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="ПЕРЕЙТИ НА СТРОКУ"> + <button label="OK" label_selected="OK" name="goto_btn"/> + <text name="txt"> + Перейти на строку + </text> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_im_session.xml b/indra/newview/skins/default/xui/ru/floater_im_session.xml index ea110ffb44..d4ca04b88b 100755 --- a/indra/newview/skins/default/xui/ru/floater_im_session.xml +++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Переводить чат" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Переводить чат" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml index 8faddb1805..fa72df04fd 100755 --- a/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Показать: </text> - <check_box label="Тест" name="show_world"/> + <check_box label="Мир" name="show_world"/> <check_box label="Только перемещаемые предметы" name="show_world_movables_only"/> <check_box label="Навигационная сетка" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml index fb1c24448b..76acb32a64 100755 --- a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Заморозить" name="Freeze..."/> <menu_item_call label="Выкинуть" name="Eject..."/> <menu_item_call label="Отладка текстур" name="Debug..."/> + <menu_item_call label="Вывод XML" name="Dump XML"/> <menu_item_call label="Приблизить" name="Zoom In"/> <menu_item_call label="Заплатить" name="Pay..."/> <menu_item_call label="Профиль объекта" name="Object Inspect"/> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml index f241b48871..2b1291a8d5 100755 --- a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> <menu_item_call label="Отладка текстур" name="Debug..."/> + <menu_item_call label="Вывод XML" name="Dump XML"/> <menu_item_call label="Бросить" name="Drop"/> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml index fb283c9d80..dfe3c2e701 100755 --- a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Заморозить" name="Freeze..."/> <menu_item_call label="Выкинуть" name="Eject..."/> <menu_item_call label="Отладка текстур" name="Debug..."/> + <menu_item_call label="Вывод XML" name="Dump XML"/> <menu_item_call label="Приблизить" name="Zoom In"/> <menu_item_call label="Заплатить" name="Pay..."/> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml index b72f3dcc42..e09117226c 100755 --- a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="Мои группы" name="Groups..."/> <menu_item_call label="Мой профиль" name="Profile..."/> <menu_item_call label="Отладка текстур" name="Debug..."/> + <menu_item_call label="Вывод XML" name="Dump XML"/> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_conversation.xml b/indra/newview/skins/default/xui/ru/menu_conversation.xml index 530b1ea704..4d1240db98 100644 --- a/indra/newview/skins/default/xui/ru/menu_conversation.xml +++ b/indra/newview/skins/default/xui/ru/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Закрыть разговор" name="close_conversation"/> <menu_item_call label="Открыть голосовой чат" name="open_voice_conversation"/> <menu_item_call label="Прекратить голосовой чат" name="disconnect_from_voice"/> + <menu_item_call label="Закрыть выбранные" name="close_selected_conversations"/> <menu_item_call label="Смотреть профиль" name="view_profile"/> <menu_item_call label="IM" name="im"/> <menu_item_call label="Предложить телепортацию" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/ru/menu_land.xml b/indra/newview/skins/default/xui/ru/menu_land.xml index 89889d7bf6..5aa4e6ccd2 100755 --- a/indra/newview/skins/default/xui/ru/menu_land.xml +++ b/indra/newview/skins/default/xui/ru/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Купить пропуск" name="Land Buy Pass"/> <menu_item_call label="Строительство" name="Create"/> <menu_item_call label="Изменить ландшафт" name="Edit Terrain"/> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml index 93a5ffbb25..835c4e186e 100755 --- a/indra/newview/skins/default/xui/ru/menu_login.xml +++ b/indra/newview/skins/default/xui/ru/menu_login.xml @@ -18,7 +18,13 @@ <menu_item_call label="Показать лицензионное соглашение" name="TOS"/> <menu_item_call label="Показать сообщение об ошибке" name="Critical"/> <menu_item_call label="Тест отладки плавающего окна с веб-контентом" name="Web Content Floater Debug Test"/> - <menu label="Уровень журнала" name="Set Logging Level"/> + <menu label="Уровень журнала" name="Set Logging Level"> + <menu_item_check label="Отладка" name="Debug"/> + <menu_item_check label="Информация" name="Info"/> + <menu_item_check label="Внимание!" name="Warning"/> + <menu_item_check label="Ошибка" name="Error"/> + <menu_item_check label="Нет" name="None"/> + </menu> <menu_item_check label="Выбор сетки" name="Show Grid Picker"/> <menu_item_call label="Консоль уведомлений" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/ru/menu_mute_particle.xml b/indra/newview/skins/default/xui/ru/menu_mute_particle.xml new file mode 100644 index 0000000000..0c5a147419 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_object.xml b/indra/newview/skins/default/xui/ru/menu_object.xml index 288df3beb9..056dab74c1 100755 --- a/indra/newview/skins/default/xui/ru/menu_object.xml +++ b/indra/newview/skins/default/xui/ru/menu_object.xml @@ -3,13 +3,13 @@ <menu_item_call label="Коснуться" name="Object Touch"/> <menu_item_call label="Изменить" name="Edit..."/> <menu_item_call label="Строительство" name="Build"/> - <menu_item_call label="Показывать в наборах связей" name="show_in_linksets"/> - <menu_item_call label="Показывать в персонажах" name="show_in_characters"/> <menu_item_call label="Открыто" name="Open"/> <menu_item_call label="Сесть здесь" name="Object Sit"/> <menu_item_call label="Встать" name="Object Stand Up"/> <menu_item_call label="Профиль объекта" name="Object Inspect"/> <menu_item_call label="Приблизить" name="Zoom In"/> + <menu_item_call label="Показывать в наборах связей" name="show_in_linksets"/> + <menu_item_call label="Показывать в персонажах" name="show_in_characters"/> <context_menu label="Надеть" name="Put On"> <menu_item_call label="Надеть" name="Wear"/> <menu_item_call label="Добавить" name="Add"/> @@ -26,4 +26,5 @@ <menu_item_call label="Заплатить" name="Pay..."/> <menu_item_call label="Купить" name="Buy..."/> <menu_item_call label="Удалить" name="Delete"/> + <menu_item_call label="Блокировать владельца участка" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_url_agent.xml b/indra/newview/skins/default/xui/ru/menu_url_agent.xml index 230d049fad..fcd1fe310d 100755 --- a/indra/newview/skins/default/xui/ru/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Смотреть профиль" name="show_agent"/> <menu_item_call label="Отправить сообщение..." name="send_im"/> <menu_item_call label="Добавить в друзья..." name="add_friend"/> + <menu_item_call label="Удалить из друзей..." name="remove_friend"/> <menu_item_call label="Копировать название в буфер обмена" name="url_copy_label"/> <menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml index 1326db708e..4f5361b2e3 100755 --- a/indra/newview/skins/default/xui/ru/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Профиль объекта..." name="show_object"/> + <menu_item_call label="Блокировать..." name="block_object"/> <menu_item_call label="Показать на карте" name="show_on_map"/> <menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/> <menu_item_call label="Копировать название объекта в буфер обмена" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index 92a9943b93..fcb7c4e531 100755 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/> <menu_item_call label="Ходьба / бег / полет..." name="Walk / run / fly"/> </menu> - <menu label="Статус" name="Status"/> + <menu label="Статус" name="Status"> + <menu_item_check label="Нет на месте" name="Away"/> + <menu_item_check label="Не беспокоить" name="Do Not Disturb"/> + </menu> <menu_item_call label="Купить L$..." name="Buy and Sell L$"/> <menu_item_call label="Торговые исходящие..." name="MerchantOutbox"/> <menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/> @@ -30,6 +33,7 @@ <menu_item_check label="Разговоры..." name="Conversations"/> <menu_item_check label="Локальный чат..." name="Nearby Chat"/> <menu_item_check label="Говорить" name="Speak"/> + <menu_item_check label="Журнал разговора..." name="Conversation Log..."/> <menu label="Изменение голоса" name="VoiceMorphing"> <menu_item_check label="Без изменения голоса" name="NoVoiceMorphing"/> <menu_item_check label="Просмотр..." name="Preview"/> @@ -40,6 +44,7 @@ <menu_item_check label="Группы" name="My Groups"/> <menu_item_check label="Люди неподалеку" name="Active Speakers"/> <menu_item_call label="Черный список" name="Block List"/> + <menu_item_check label="Не беспокоить" name="Do Not Disturb"/> </menu> <menu label="Мир" name="World"> <menu_item_call label="Добавить закладку на это место" name="Create Landmark Here"/> @@ -108,13 +113,13 @@ <menu_item_call label="Включить следующую" name="Include Next Part"/> <menu_item_call label="Включить предыдущую" name="Include Previous Part"/> </menu> + <menu_item_call label="Наборы связей..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Фокус на выбранном" name="Focus on Selection"/> <menu_item_call label="Приблизить к выбранному" name="Zoom to Selection"/> <menu label="Объект" name="Object"> <menu_item_call label="Купить" name="Menu Object Buy"/> <menu_item_call label="Взять" name="Menu Object Take"/> <menu_item_call label="Взять копию" name="Take Copy"/> - <menu_item_call label="Сохранить в моем инвентаре" name="Save Object Back to My Inventory"/> <menu_item_call label="Сохранить в контенте объектов" name="Save Object Back to Object Contents"/> <menu_item_call label="Вернуть объект" name="Return Object back to Owner"/> </menu> @@ -270,6 +275,7 @@ <menu_item_check label="Случайная частота кадров" name="Randomize Framerate"/> <menu_item_check label="Периодическое замедление кадров" name="Periodic Slow Frame"/> <menu_item_check label="Тест кадров" name="Frame Test"/> + <menu_item_call label="Профиль кадра" name="Frame Profile"/> </menu> <menu label="Визуализировать метаданные" name="Render Metadata"> <menu_item_check label="Рамки" name="Bounding Boxes"/> @@ -304,9 +310,10 @@ <menu_item_check label="Оси" name="Axes"/> <menu_item_check label="Касательный базис" name="Tangent Basis"/> <menu_item_call label="Выбранная текстура в основе" name="Selected Texture Info Basis"/> + <menu_item_call label="Сведения о выбранном материале" name="Selected Material Info"/> <menu_item_check label="Каркас" name="Wireframe"/> <menu_item_check label="Смыкание объектов" name="Object-Object Occlusion"/> - <menu_item_check label="Освещение и тени" name="Advanced Lighting Model"/> + <menu_item_check label="Расширенная модель освещения" name="Advanced Lighting Model"/> <menu_item_check label="Тени от солнца, луны и прожекторов" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO и сглаживание теней" name="SSAO and Shadow Smoothing"/> <menu_item_check label="Отладка GL" name="Debug GL"/> @@ -316,7 +323,6 @@ <menu_item_check label="Текстуры анимаций" name="Animation Textures"/> <menu_item_check label="Отключить текстуры" name="Disable Textures"/> <menu_item_check label="Текстуры в полном разрешении" name="Rull Res Textures"/> - <menu_item_check label="Атлас текстур (экспериментальная функция)" name="Texture Atlas"/> <menu_item_check label="Визуализация присоединенных источников света" name="Render Attached Lights"/> <menu_item_check label="Визуализация присоединенных частиц" name="Render Attached Particles"/> <menu_item_check label="Парящие светящиеся объекты" name="Hover Glow Objects"/> @@ -352,7 +358,6 @@ <menu_item_call label="Вывод средства фокусировки" name="Dump Focus Holder"/> <menu_item_call label="Печать информации о выбранных объектах" name="Print Selected Object Info"/> <menu_item_call label="Печать информации об агенте" name="Print Agent Info"/> - <menu_item_call label="Статистическая информация о памяти" name="Memory Stats"/> <menu_item_check label="Консоль отладки региона" name="Region Debug Console"/> <menu_item_check label="Отладка SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="Отладка щелчков мышью" name="Debug Clicks"/> @@ -386,7 +391,6 @@ </menu> <menu_item_call label="Скинуть параметры" name="Force Params to Default"/> <menu_item_check label="Данные об анимации" name="Animation Info"/> - <menu_item_check label="Анимация медленных движений" name="Slow Motion Animations"/> <menu_item_check label="Показать взгляд" name="Show Look At"/> <menu_item_check label="Показать указание" name="Show Point At"/> <menu_item_check label="Отладка обновленных движений суставов" name="Debug Joint Updates"/> diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index 00ab0b5763..1dc8202b00 100755 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -210,6 +210,14 @@ Добавить эту способность к роли «[ROLE_NAME]»? <usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/> </notification> + <notification name="EjectGroupMemberWarning"> + Вы собираетесь исключить [AVATAR_NAME] из группы. + <usetemplate ignoretext="Подтвердите исключение участника из группы" name="okcancelignore" notext="Отмена" yestext="Выкинуть"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Вы собираетесь исключить [COUNT] участников из группы. + <usetemplate ignoretext="Подтвердите исключение участников из группы" name="okcancelignore" notext="Отмена" yestext="Выкинуть"/> + </notification> <notification name="AttachmentDrop"> Вы собираетесь сбросить свое присоединение. Продолжить? @@ -1111,7 +1119,7 @@ Введите более высокую цену. </notification> <notification name="ConfirmItemDeleteHasLinks"> - Имеется ссылка, указывающая как минимум на один из выбранных вами предметов. Если удалить этот предмет, его ссылки перестанут работать. Настоятельно рекомендуется сначала удалить ссылки. + По крайней мере у одного предмета есть ссылки, указывающие на него. Если удалить этот предмет, его ссылки перестанут работать. Настоятельно рекомендуется сначала удалить ссылки. Действительно удалить эти предметы? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> @@ -1161,7 +1169,7 @@ Вы не владеете по крайней мере одним объектом. Действительно удалить эти предметы? - <usetemplate name="okcancelbuttons" notext="отмена" yestext="OK"/> + <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> Как минимум один объект фиксирован. @@ -1480,13 +1488,43 @@ http://secondlife.com/download. </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> Загружено обязательное обновление. -Версия [VERSION] +Версия [VERSION]. [[INFO_URL] Сведения об этом обновлении] Необходимо перезапустить [APP_NAME] для установки обновления. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> Необходимо перезапустить [APP_NAME] для установки обновления. +[[INFO_URL] Сведения об этом обновлении] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + Загружено обновление для вашей версии [APP_NAME]. +Версия [VERSION] +На замену этой экспериментальной версии клиента предлагается клиент [NEW_CHANNEL]; +см. [[INFO_URL] об этом обновлении] + <usetemplate name="okcancelbuttons" notext="Позже..." yestext="Установите обновление и перезапустите [APP_NAME]"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + Загружено обновление для вашей версии [APP_NAME]. +Версия [VERSION] +На замену этой экспериментальной версии клиента предлагается клиент [NEW_CHANNEL]; +см. [[INFO_URL] Сведения об этом обновлении] + <usetemplate name="okcancelbuttons" notext="Позже..." yestext="Установите обновление и перезапустите [APP_NAME]"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + Загружено обязательное обновление. +Версия [VERSION] +На замену этой экспериментальной версии клиента предлагается клиент [NEW_CHANNEL]; +см. [[INFO_URL] Сведения об этом обновлении] + +Необходимо перезапустить [APP_NAME] для установки обновления. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + Необходимо перезапустить [APP_NAME] для установки обновления. +На замену этой экспериментальной версии клиента предлагается клиент [NEW_CHANNEL]; +см. [[INFO_URL] Сведения об этом обновлении] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="DeedObjectToGroup"> @@ -1537,6 +1575,10 @@ http://secondlife.com/download. Хотите покинуть группу? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + Невозможно покинуть группу. Вы не можете покинуть группу, так как вы ее последний владелец. Сначала назначьте владельцем другого участника. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmKick"> Вы ДЕЙСТВИТЕЛЬНО хотите выбросить всех жителей с сетки? <usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выбросить всех жителей"/> @@ -2396,9 +2438,7 @@ http://secondlife.com/download. выбрать команду «Телепортация».) </notification> <notification name="TeleportToPerson"> - Чтобы обратиться к жителю, например «[NAME]», нажмите кнопку «Люди», выберите жителя в появившемся окне и нажмите кнопку - «IM» внизу окна. - (Также можно дважды щелкнуть имя жителя в списке или щелкнуть его правой кнопкой мыши и выбрать команду «IM».) + Чтобы начать личный разговор, щелкните аватар собеседника правой кнопкой мыши и выберите в меню «IM». </notification> <notification name="CantSelectLandFromMultipleRegions"> Нельзя выбрать землю с обеих сторон границы между серверами. @@ -2772,6 +2812,15 @@ http://secondlife.com/download. <button name="Deny" text="Отклонить"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + Объект <nolink>[OBJECTNAME]</nolink>» владельца «[NAME]» требует разрешения на выполнение скрипта; разрешение не распознается клиентом и не будет предоставлено + +Для получения этого разрешения установите последнюю версию клиента из [DOWNLOADURL]. + <form name="form"> + <button name="Deny" text="OK"/> + <button name="Mute" text="Заблокировать"/> + </form> + </notification> <notification name="ScriptDialog"> [NAME] – «<nolink>[TITLE]</nolink>» [MESSAGE] diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml index 7da7fb3191..9606f0aec1 100755 --- a/indra/newview/skins/default/xui/ru/panel_people.xml +++ b/indra/newview/skins/default/xui/ru/panel_people.xml @@ -49,6 +49,9 @@ <menu_button name="plus_btn" tool_tip="Присоединиться к группе/создать новую группу"/> <dnd_button name="minus_btn" tool_tip="Покинуть выбранную группу"/> </panel> + <text name="groupcount"> + Вы входите в [COUNT] групп и можете присоединиться еще к [REMAINING]. + </text> </panel> <panel label="НЕДАВНИЕ" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml index 6383fc8c2c..914426c91e 100755 --- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Текстовый чат" name="chat"> - <panel> - <check_box initial_value="истина" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/> + <panel name="general_chat_settings"> + <check_box initial_value="true" label="Воспроизводить анимацию ввода текста при общении" name="play_typing_animation"/> <check_box label="Отправлять мне сообщения по почте, когда меня нет в сети" name="send_im_to_email"/> <check_box label="Только друзья и группы могут звонить мне и отправлять IM" name="voice_call_friends_only_check"/> <text name="font_size"> @@ -14,10 +14,7 @@ </combo_box> <check_box label="Чат в пузырьках" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Уведомления - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> IM друзей: </text> @@ -25,8 +22,9 @@ <item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/> <item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/> <item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/> - <item label="Нет" name="None" value="нет"/> + <item label="Без действия" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Звук" name="play_sound_friend_im"/> <text name="non_friend_ims"> IM чужих: </text> @@ -34,8 +32,9 @@ <item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/> <item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/> <item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/> - <item label="Нет" name="None" value="нет"/> + <item label="Без действия" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Звук" name="play_sound_non_friend_im"/> <text name="conference_ims"> IM конференции: </text> @@ -43,8 +42,9 @@ <item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/> <item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/> <item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/> - <item label="Нет" name="None" value="нет"/> + <item label="Без действия" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Звук" name="play_sound_conference_im"/> <text name="group_chat"> Групповой чат: </text> @@ -52,8 +52,9 @@ <item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/> <item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/> <item label="Мигание кнопки на панели инструментов" name="FlashToolbarButton" value="мигание"/> - <item label="Нет" name="None" value="нет"/> + <item label="Без действия" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Звук" name="play_sound_group_chat_im"/> <text name="nearby_chat"> Локальный чат: </text> @@ -61,13 +62,24 @@ <item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/> <item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/> <item label="Мигание кнопки на панели инструментов" name="FlashToolBarButton" value="мигание"/> - <item label="Нет" name="None" value="нет"/> + <item label="Без действия" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Звук" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + IM объектов: + </text> + <combo_box name="ObjectIMOptions"> + <item label="Открыть окно разговоров" name="OpenConversationsWindow" value="openconversations"/> + <item label="Сообщение во всплывающем окне" name="PopUpMessage" value="всплывание"/> + <item label="Мигание кнопки на панели инструментов" name="FlashToolBarButton" value="мигание"/> + <item label="Без действия" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Звук" name="play_sound_object_im"/> <text name="notifications_alert"> Для временного отключения всех уведомлений вызовите меню «Общение > Не беспокоить». </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Звук: </text> @@ -76,7 +88,7 @@ <check_box label="Предложение телепортации" name="teleport_offer"/> <check_box label="Предложение инвентаря" name="inventory_offer"/> </panel> - <panel> + <panel name="log_settings"> <button label="Очистить журнал..." name="clear_log"/> <button label="Удалить записи..." name="delete_transcripts"/> <button label="Обзор..." label_selected="Обзор" name="log_path_button"/> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml index a7e826f5fc..029e72e137 100755 --- a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="истина" label="Локальный свет" name="LocalLights"/> <check_box initial_value="истина" label="Базовые шейдеры" name="BasicShaders" tool_tip="Отключение этого параметра может предотвратить зависание некоторых видеокарт"/> <check_box initial_value="истина" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/> - <check_box initial_value="истина" label="Освещение и тени" name="UseLightShaders"/> + <check_box initial_value="истина" label="Расширенная модель освещения" name="UseLightShaders"/> <check_box initial_value="истина" label="Объемный свет" name="UseSSAO"/> <check_box initial_value="истина" label="Глубина поля" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml index 8e7fc71f0d..e9c0c7de10 100755 --- a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Устанавливать автоматически" name="Install_automatically"/> <combo_box.item label="Загружать и устанавливать обновления вручную" name="Install_manual"/> </combo_box> + <check_box label="Устанавливать бета-версии" name="update_willing_to_test"/> <text name="Proxy Settings:"> Настройки прокси-сервера: </text> diff --git a/indra/newview/skins/default/xui/ru/panel_script_ed.xml b/indra/newview/skins/default/xui/ru/panel_script_ed.xml index 05ccaeb54b..a9e5d9ef10 100755 --- a/indra/newview/skins/default/xui/ru/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/ru/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Выделить все" name="Select All"/> <menu_item_call label="Снять выделение" name="Deselect"/> <menu_item_call label="Поиск и замена..." name="Search / Replace..."/> + <menu_item_call label="Перейти на строку..." name="Go to line..."/> </menu> <menu label="Справка" name="Help"> <menu_item_call label="Справка..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/ru/panel_tools_texture.xml b/indra/newview/skins/default/xui/ru/panel_tools_texture.xml new file mode 100644 index 0000000000..60717a3d1d --- /dev/null +++ b/indra/newview/skins/default/xui/ru/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Текстура" name="Texture"> + <panel.string name="string repeats per meter"> + Повторений на метр + </panel.string> + <panel.string name="string repeats per face"> + Повторений на грань + </panel.string> + <text name="color label"> + Цвет + </text> + <color_swatch label="" name="colorswatch" tool_tip="Щелкните для выбора цвета"/> + <text name="color trans"> + Прозрачность % + </text> + <text name="glow label"> + Свечение + </text> + <check_box label="Собственная яркость" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Материалы" name="Materials"/> + <combo_box.item label="Медиа" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Текстура (рассеянная)" name="Texture (diffuse)"/> + <combo_box.item label="Шероховатость (обычная)" name="Bumpiness (normal)"/> + <combo_box.item label="Блеск (зеркальный)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Текстура" name="texture control" tool_tip="Щелкните для выбора изображения"/> + <text name="label alphamode"> + Альфа-режим + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Нет" name="None"/> + <combo_box.item label="Альфа-смешивание" name="Alpha blending"/> + <combo_box.item label="Альфа-маскирование" name="Alpha masking"/> + <combo_box.item label="Излучающая маска" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Отсечка маски + </text> + <texture_picker label="Текстура" name="bumpytexture control" tool_tip="Щелкните для выбора изображения"/> + <text name="label bumpiness"> + Рельефность + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Нет" name="None"/> + <combo_box.item label="Яркость" name="Brightness"/> + <combo_box.item label="По темному" name="Darkness"/> + <combo_box.item label="дерево" name="woodgrain"/> + <combo_box.item label="кора" name="bark"/> + <combo_box.item label="кирпич" name="bricks"/> + <combo_box.item label="шахматная доска" name="checker"/> + <combo_box.item label="бетон" name="concrete"/> + <combo_box.item label="старая плитка" name="crustytile"/> + <combo_box.item label="тесаный камень" name="cutstone"/> + <combo_box.item label="диски" name="discs"/> + <combo_box.item label="гравий" name="gravel"/> + <combo_box.item label="чашка Петри" name="petridish"/> + <combo_box.item label="сайдинг" name="siding"/> + <combo_box.item label="каменная плитка" name="stonetile"/> + <combo_box.item label="штукатурка" name="stucco"/> + <combo_box.item label="присоска" name="suction"/> + <combo_box.item label="переплетение" name="weave"/> + </combo_box> + <texture_picker label="Текстура" name="shinytexture control" tool_tip="Щелкните для выбора изображения"/> + <text name="label shininess"> + Блеск + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Нет" name="None"/> + <combo_box.item label="Низкий" name="Low"/> + <combo_box.item label="Средний" name="Medium"/> + <combo_box.item label="Высокий" name="High"/> + </combo_box> + <text name="label glossiness"> + Глянец + </text> + <text name="label environment"> + Среда + </text> + <text name="label shinycolor"> + Цвет + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Щелкните для выбора цвета"/> + <text name="media_info"> + URL выбранного медиа (если есть) + </text> + <button label="Выбрать..." name="add_media" tool_tip="Добавить медиа"/> + <button label="Удалить" name="delete_media" tool_tip="Удалить медиа-текстуру"/> + <button label="Выровнять" label_selected="Выровнять медиа" name="button align" tool_tip="Масштабирование медиа-текстуры (сначала нужно загрузить)"/> + <text name="tex gen"> + Наложение + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="По умолчанию" name="Default"/> + <combo_box.item label="На плоскость" name="Planar"/> + </combo_box> + <spinner label="Масштаб по горизонтали" name="TexScaleU"/> + <spinner label="Масштаб по вертикали" name="TexScaleV"/> + <spinner label="Повторений на метр" name="rptctrl"/> + <spinner label="Поворот, градусы" name="TexRot"/> + <spinner label="Смещение по горизонтали" name="TexOffsetU"/> + <spinner label="Смещение по вертикали" name="TexOffsetV"/> + <spinner label="Масштаб по горизонтали" name="bumpyScaleU"/> + <spinner label="Масштаб по вертикали" name="bumpyScaleV"/> + <spinner label="Поворот, градусы" name="bumpyRot"/> + <spinner label="Смещение по горизонтали" name="bumpyOffsetU"/> + <spinner label="Смещение по вертикали" name="bumpyOffsetV"/> + <spinner label="Масштаб по горизонтали" name="shinyScaleU"/> + <spinner label="Масштаб по вертикали" name="shinyScaleV"/> + <spinner label="Поворот, градусы" name="shinyRot"/> + <spinner label="Смещение по горизонтали" name="shinyOffsetU"/> + <spinner label="Смещение по вертикали" name="shinyOffsetV"/> + <check_box initial_value="ложь" label="Согласование" name="checkbox planar align" tool_tip="Согласование текстур на всех выбранных гранях по последней выбранной грани. Должно быть выбрано наложение по плоскостям."/> +</panel> diff --git a/indra/newview/skins/default/xui/ru/role_actions.xml b/indra/newview/skins/default/xui/ru/role_actions.xml index b6ba818abd..3f31ecfa10 100755 --- a/indra/newview/skins/default/xui/ru/role_actions.xml +++ b/indra/newview/skins/default/xui/ru/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="К этим способностям относится изменение названия участка и публикация настроек, поиск видимых каталогов, а также настройки точек и вариантов телепортации." name="Parcel Identity"> <action description="Включение-отключение показа места в результатах поиска и настройка категории" longdescription="Включить-отключить показ места в результатах поиска и настроить категорию участка можно в окне «О земле» на вкладке «Параметры»." name="land find places" value="17"/> - <action description="Изменение названия или описания участка, настройки «Показать место в поиске»" longdescription="Изменение названия или описания участка, настройки «Показать место в поиске». Это можно выполнить в окне «О земле» на вкладке «Параметры»." name="land change identity" value="18"/> + <action description="Изменение названия или описания участка, настройки «Умеренный контент»" longdescription="Изменение названия или описания участка, настройки «Умеренный контент». Это можно выполнить в окне «О земле» на вкладке «Параметры»." name="land change identity" value="18"/> <action description="Установка конечной точки и варианта телепортации" longdescription="Участники роли с этой способностью могут установить конечную точку телепортации на участке группы, а также задать вариант телепортации для усиления контроля. Это можно выполнить в окне «О земле» на вкладке «Параметры»." name="land set landing point" value="19"/> </action_set> <action_set description="К этим способностям относится изменение настроек участка, в т. ч. «Создать объекты», «Изменить ландшафт», а также настройки музыки и медиа." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index d7d4df4a37..49ce33ec96 100755 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -139,6 +139,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> У клиента, которым вы пользуетесь, больше нет доступа к игре Second Life. Загрузить новую версию клиента можно по адресу http://secondlife.com/download @@ -448,6 +451,9 @@ support@secondlife.com. <string name="SLappAgentRequestFriend"> Предложить дружбу </string> + <string name="SLappAgentRemoveFriend"> + Удаление друга + </string> <string name="BUTTON_CLOSE_DARWIN"> Закрыть (⌘W) </string> @@ -835,6 +841,9 @@ support@secondlife.com. <string name="multiple_textures"> Несколько </string> + <string name="use_texture"> + Использовать текстуру + </string> <string name="texture_loading"> Загрузка... </string> @@ -934,6 +943,21 @@ support@secondlife.com. <string name="TeleportYourAgent"> Телепортировать вас </string> + <string name="JoinAnExperience"> + Присоединитесь + </string> + <string name="SilentlyManageEstateAccess"> + Отключить извещения при управлении списками доступа к землевладениям + </string> + <string name="OverrideYourAnimations"> + Заменить ваши стандартные анимации + </string> + <string name="ScriptReturnObjects"> + Вернуть объекты от вашего имени + </string> + <string name="UnknownScriptPermission"> + (неизвестно)! + </string> <string name="SIM_ACCESS_PG"> Общий </string> @@ -1965,6 +1989,12 @@ support@secondlife.com. <string name="ATTACH_HUD_BOTTOM_RIGHT"> Данные в игре внизу справа </string> + <string name="ATTACH_NECK"> + Шея + </string> + <string name="ATTACH_AVATAR_CENTER"> + Центр аватара + </string> <string name="CursorPos"> Строка [LINE], столбец [COLUMN] </string> @@ -2991,6 +3021,9 @@ support@secondlife.com. <string name="Hip Width"> Ширина бедер </string> + <string name="Hover"> + Наведите + </string> <string name="In"> Внутрь </string> @@ -5087,4 +5120,7 @@ support@secondlife.com. <string name="logging_calls_enabled_log_empty"> Нет зарегистрированных разговоров. Если вы обратитесь к кому-то или наоборот, в журнале появится новая запись. </string> + <string name="loading_chat_logs"> + Загрузка... + </string> </strings> diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml index 4dcf6200c6..7b925e8830 100755 --- a/indra/newview/skins/default/xui/tr/floater_about.xml +++ b/indra/newview/skins/default/xui/tr/floater_about.xml @@ -9,6 +9,8 @@ </floater.string> <floater.string name="AboutPosition"> <nolink>[HOSTNAME]</nolink> ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız +SLURL: <nolink>[SLURL]</nolink> +(küresel koordinatlar [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml index 1d929a2dd3..bf4473ce1f 100755 --- a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="İÇERİK İZİNLERİNİ DÜZENLE"> +<floater name="floaterbulkperms" title="İÇERİK İZİNLERİNİ AYARLA"> <floater.string name="nothing_to_modify_text"> Seçim içerisinde düzenlenebilir içerik yok. </floater.string> @@ -24,7 +24,7 @@ <button label="√ Tümü" name="check_all"/> <button label="Temizle" label_selected="Hiçbiri" name="check_none"/> <text name="newperms"> - Yeni İçerik İzinleri + Şunun İçin İçerik İzinlerini Ayarla: </text> <text name="GroupLabel"> Grup: @@ -40,6 +40,7 @@ <check_box label="Değiştir" name="next_owner_modify"/> <check_box label="Kopyala" name="next_owner_copy"/> <check_box initial_value="true" label="Aktar" name="next_owner_transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/> - <button label="Tamam" name="apply"/> + <button label="Tamam" name="ok"/> + <button label="Uygula" name="apply"/> <button label="İptal" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_goto_line.xml b/indra/newview/skins/default/xui/tr/floater_goto_line.xml new file mode 100644 index 0000000000..673fe553cc --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="ŞU SATIRA GİT:"> + <button label="Tamam" label_selected="Tamam" name="goto_btn"/> + <text name="txt"> + Şu satıra git: + </text> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_im_session.xml b/indra/newview/skins/default/xui/tr/floater_im_session.xml index 8ce8f0fe13..52a10feeef 100755 --- a/indra/newview/skins/default/xui/tr/floater_im_session.xml +++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="Sohbeti çevir" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Sohbeti çevir" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml index 35f47e6dfa..6eecc7fb77 100755 --- a/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> Göster: </text> - <check_box label="Test" name="show_world"/> + <check_box label="Dünya" name="show_world"/> <check_box label="Sadece hareket ettirilebilir nesneler" name="show_world_movables_only"/> <check_box label="Navigasyon örgüsü" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml index 9ba214ff31..0cb233a657 100755 --- a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="Dondur" name="Freeze..."/> <menu_item_call label="Çıkar" name="Eject..."/> <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/> + <menu_item_call label="XML Dökümünü Al" name="Dump XML"/> <menu_item_call label="Yakınlaştır" name="Zoom In"/> <menu_item_call label="Öde" name="Pay..."/> <menu_item_call label="Nesne Profili" name="Object Inspect"/> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml index 16d1e3f356..ff7c718979 100755 --- a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/> + <menu_item_call label="XML Dökümünü Al" name="Dump XML"/> <menu_item_call label="Bırak" name="Drop"/> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml index 7d691d2ac5..0da328a894 100755 --- a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="Dondur" name="Freeze..."/> <menu_item_call label="Çıkar" name="Eject..."/> <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/> + <menu_item_call label="XML Dökümünü Al" name="Dump XML"/> <menu_item_call label="Yakınlaştır" name="Zoom In"/> <menu_item_call label="Öde" name="Pay..."/> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml index c520aff521..6996dc612f 100755 --- a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="Gruplarım" name="Groups..."/> <menu_item_call label="Profilim" name="Profile..."/> <menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/> + <menu_item_call label="XML Dökümünü Al" name="Dump XML"/> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_conversation.xml b/indra/newview/skins/default/xui/tr/menu_conversation.xml index 31404f2501..c2773cdc26 100644 --- a/indra/newview/skins/default/xui/tr/menu_conversation.xml +++ b/indra/newview/skins/default/xui/tr/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="Sohbeti kapat" name="close_conversation"/> <menu_item_call label="Ses sohbetini aç" name="open_voice_conversation"/> <menu_item_call label="Ses bağlantısını kes" name="disconnect_from_voice"/> + <menu_item_call label="Seçileni Kapat" name="close_selected_conversations"/> <menu_item_call label="Profili Göster" name="view_profile"/> <menu_item_call label="Aİ" name="im"/> <menu_item_call label="Işınlama teklif et" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/tr/menu_land.xml b/indra/newview/skins/default/xui/tr/menu_land.xml index db65f1af1e..d6d8dbf730 100755 --- a/indra/newview/skins/default/xui/tr/menu_land.xml +++ b/indra/newview/skins/default/xui/tr/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="Geçiş Hakkı Satın Al" name="Land Buy Pass"/> <menu_item_call label="İnşa Et" name="Create"/> <menu_item_call label="Yüzeyi Düzenle" name="Edit Terrain"/> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml index f27908bf7a..79c95407e8 100755 --- a/indra/newview/skins/default/xui/tr/menu_login.xml +++ b/indra/newview/skins/default/xui/tr/menu_login.xml @@ -18,7 +18,13 @@ <menu_item_call label="Hizmet Şartlarını Göster" name="TOS"/> <menu_item_call label="Kritik İletiyi Göster" name="Critical"/> <menu_item_call label="Web İçeriği Gezdiricisi Hata Ayıklama Testi" name="Web Content Floater Debug Test"/> - <menu label="Günlük Tutma Seviyesini Seç" name="Set Logging Level"/> + <menu label="Günlük Tutma Seviyesini Seç" name="Set Logging Level"> + <menu_item_check label="Hata ayıkla" name="Debug"/> + <menu_item_check label="Bilgi" name="Info"/> + <menu_item_check label="Uyarı" name="Warning"/> + <menu_item_check label="Hata" name="Error"/> + <menu_item_check label="Hiçbiri" name="None"/> + </menu> <menu_item_check label="Izgara Seçiciyi Göster" name="Show Grid Picker"/> <menu_item_call label="Bildirimler Konsolunu Göster" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/tr/menu_mute_particle.xml b/indra/newview/skins/default/xui/tr/menu_mute_particle.xml new file mode 100644 index 0000000000..a05a745ed0 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_object.xml b/indra/newview/skins/default/xui/tr/menu_object.xml index 72f7adf016..2f8b5c0362 100755 --- a/indra/newview/skins/default/xui/tr/menu_object.xml +++ b/indra/newview/skins/default/xui/tr/menu_object.xml @@ -3,13 +3,13 @@ <menu_item_call label="Dokun" name="Object Touch"/> <menu_item_call label="Düzenle" name="Edit..."/> <menu_item_call label="İnşa Et" name="Build"/> - <menu_item_call label="Bağlantı kümelerinde göster" name="show_in_linksets"/> - <menu_item_call label="Karakterlerde göster" name="show_in_characters"/> <menu_item_call label="Aç" name="Open"/> <menu_item_call label="Buraya Otur" name="Object Sit"/> <menu_item_call label="Kalk" name="Object Stand Up"/> <menu_item_call label="Nesne Profili" name="Object Inspect"/> <menu_item_call label="Yakınlaştır" name="Zoom In"/> + <menu_item_call label="Bağlantı kümelerinde göster" name="show_in_linksets"/> + <menu_item_call label="Karakterlerde göster" name="show_in_characters"/> <context_menu label="Üzerine Koy" name="Put On"> <menu_item_call label="Giy" name="Wear"/> <menu_item_call label="Ekle" name="Add"/> @@ -26,4 +26,5 @@ <menu_item_call label="Öde" name="Pay..."/> <menu_item_call label="Satın Al" name="Buy..."/> <menu_item_call label="Sil" name="Delete"/> + <menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_url_agent.xml b/indra/newview/skins/default/xui/tr/menu_url_agent.xml index b14a0509bf..109cd62495 100755 --- a/indra/newview/skins/default/xui/tr/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="Profili Göster" name="show_agent"/> <menu_item_call label="Aİ Gönder..." name="send_im"/> <menu_item_call label="Arkadaş Ekle..." name="add_friend"/> + <menu_item_call label="Arkadaşı Çıkar..." name="remove_friend"/> <menu_item_call label="Adı panoya kopyala" name="url_copy_label"/> <menu_item_call label="SLurl'yi Panoya Kopyala" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml index 00fa3c27c2..ae68669605 100755 --- a/indra/newview/skins/default/xui/tr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Nesne Profili..." name="show_object"/> + <menu_item_call label="Engelle..." name="block_object"/> <menu_item_call label="Haritada Göster" name="show_on_map"/> <menu_item_call label="Nesne Konumuna Işınla" name="teleport_to_object"/> <menu_item_call label="Nesne Adını panoya kopyala" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index 35485bb292..4236f91636 100755 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/> <menu_item_call label="Yürü / koş / uç..." name="Walk / run / fly"/> </menu> - <menu label="Durum" name="Status"/> + <menu label="Durum" name="Status"> + <menu_item_check label="Uzakta" name="Away"/> + <menu_item_check label="Rahatsız Etme" name="Do Not Disturb"/> + </menu> <menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/> <menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/> <menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/> @@ -30,6 +33,7 @@ <menu_item_check label="Sohbetler..." name="Conversations"/> <menu_item_check label="Yakındaki Sohbet..." name="Nearby Chat"/> <menu_item_check label="Konuş" name="Speak"/> + <menu_item_check label="Sohbet Günlüğü..." name="Conversation Log..."/> <menu label="Ses şekillendirme" name="VoiceMorphing"> <menu_item_check label="Ses şekillendirme yok" name="NoVoiceMorphing"/> <menu_item_check label="Önizleme..." name="Preview"/> @@ -40,6 +44,7 @@ <menu_item_check label="Gruplar" name="My Groups"/> <menu_item_check label="Yakındaki kişiler" name="Active Speakers"/> <menu_item_call label="Engelleme Listesi" name="Block List"/> + <menu_item_check label="Rahatsız Etme" name="Do Not Disturb"/> </menu> <menu label="Dünya" name="World"> <menu_item_call label="Bu Yeri Yer İmlerine Ekle" name="Create Landmark Here"/> @@ -108,6 +113,7 @@ <menu_item_call label="Sonraki Parçayı Dahil Et" name="Include Next Part"/> <menu_item_call label="Önceki Parçayı Dahil Et" name="Include Previous Part"/> </menu> + <menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linkset_menu_item"/> <menu_item_call label="Seçime Odaklan" name="Focus on Selection"/> <menu_item_call label="Seçimi Yakınlaştır" name="Zoom to Selection"/> <menu label="Nesne" name="Object"> @@ -277,6 +283,7 @@ <menu_item_check label="Çerçeve Hızını Rastgele Seç" name="Randomize Framerate"/> <menu_item_check label="Düzenli Yavaş Çerçeve" name="Periodic Slow Frame"/> <menu_item_check label="Çerçeve Testi" name="Frame Test"/> + <menu_item_call label="Çerçeve Profili..." name="Frame Profile"/> </menu> <menu label="Meta Verileri İşle" name="Render Metadata"> <menu_item_check label="Sınırlama Kutuları" name="Bounding Boxes"/> @@ -311,9 +318,10 @@ <menu_item_check label="Eksenler" name="Axes"/> <menu_item_check label="Tanjant Temeli" name="Tangent Basis"/> <menu_item_call label="Seçilen Doku Bilgi Temeli" name="Selected Texture Info Basis"/> + <menu_item_call label="Seçilen Malzeme Bilgisi" name="Selected Material Info"/> <menu_item_check label="Telkafes" name="Wireframe"/> <menu_item_check label="Görünen Nesneler İçin Gölgeleme" name="Object-Object Occlusion"/> - <menu_item_check label="Işıklandırma ve Gölgeler" name="Advanced Lighting Model"/> + <menu_item_check label="Gelişmiş Aydınlatma Modeli" name="Advanced Lighting Model"/> <menu_item_check label="Güneş/Ay/Projektörlerden Gelen Gölgeler" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO ve Gölge Yumuşatma" name="SSAO and Shadow Smoothing"/> <menu_item_check label="GL Hata Ayıklama" name="Debug GL"/> @@ -323,7 +331,6 @@ <menu_item_check label="Animasyon Dokuları" name="Animation Textures"/> <menu_item_check label="Dokuları Devre Dışı Bırak" name="Disable Textures"/> <menu_item_check label="Tam Çöz. Dokular" name="Rull Res Textures"/> - <menu_item_check label="Doku Atlas (deneysel)" name="Texture Atlas"/> <menu_item_check label="Eklenmiş Işıkları İşle" name="Render Attached Lights"/> <menu_item_check label="Eklenmiş Parçacıkları İşle" name="Render Attached Particles"/> <menu_item_check label="Parıldayan Nesneler Üzerine Gel" name="Hover Glow Objects"/> @@ -359,7 +366,6 @@ <menu_item_call label="Odaklayıcı Tutucunun Dökümünü Al" name="Dump Focus Holder"/> <menu_item_call label="Seçilen Nesne Bilgisini Yazdır" name="Print Selected Object Info"/> <menu_item_call label="Aracı Bilgisini Yazdır" name="Print Agent Info"/> - <menu_item_call label="Bellek İstatistikleri" name="Memory Stats"/> <menu_item_check label="Bölge Hata Ayıklama Konsolu" name="Region Debug Console"/> <menu_item_check label="SelectMgr İçin Hata Ayıklama" name="Debug SelectMgr"/> <menu_item_check label="Tıklamalar İçin Hata Ayıklama" name="Debug Clicks"/> diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index ad92a4b478..492178ab82 100755 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -210,6 +210,14 @@ Bu Yetenek '[ROLE_NAME]' rolüne eklensin mi? Bu Yetenek '[ROLE_NAME]' rolüne eklensin mi? <usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/> </notification> + <notification name="EjectGroupMemberWarning"> + Gruptan [AVATAR_NAME] adlı üyeyi çıkarmak üzeresiniz. + <usetemplate ignoretext="Gruptan bir katılımcının çıkarılmasını doğrulayın" name="okcancelignore" notext="İptal" yestext="Çıkar"/> + </notification> + <notification name="EjectGroupMembersWarning"> + Gruptan [COUNT] üyeyi çıkarmak üzeresiniz. + <usetemplate ignoretext="Gruptan birden çok üyenin çıkarılmasını doğrulayın" name="okcancelignore" notext="İptal" yestext="Çıkar"/> + </notification> <notification name="AttachmentDrop"> Aksesuarınızı çıkarmak üzeresiniz. Devam etmek istediğinize emin misiniz? @@ -1111,7 +1119,7 @@ bu simdeki TÜM ARAZİLERDEN SİLMEK istediğinize emin misiniz? Lütfen daha yüksek bir tutar girin. </notification> <notification name="ConfirmItemDeleteHasLinks"> - Seçtiğiniz öğelerden en az birinin kendisine işaret eden bağlantılı öğeler var. Bu öğeyi silerseniz, bağlantıları kalıcı olarak çalışmaz hale gelecek. Önce bağlantıları silmeniz önemle tavsiye edilir. + Öğelerden en az birinde kendisine işaret eden bağlantılar var. Bu öğeyi silerseniz, bağlantıları kalıcı olarak çalışmaz hale gelecek. Önce bağlantıları silmeniz önemle tavsiye edilir. Bu öğeleri silmek istediğinize emin misiniz? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> @@ -1479,14 +1487,44 @@ Sürüm [VERSION] [[RELEASE_NOTES_FULL_URL] Bu güncelleme hakkında ayrıntıl <usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi kur ve [APP_NAME] uygulamasını yeniden başlat"/> </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> - Gerekli bir yazılım güncellemesini karşıdan yükledik. -Sürüm [VERSION] + Gerekli bir yazılım güncellemesi indirdik. +Sürüm [VERSION] [[INFO_URL] Bu güncelleme hakkında ayrıntılı bilgi] -Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız. +Güncellemeyi yüklemek için [APP_NAME] uygulamasını yeniden başlatmalısınız. <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> - Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız. + Güncellemeyi yüklemek için [APP_NAME] uygulamasını yeniden başlatmalısınız. +[[INFO_URL] Bu güncelleme hakkında bilgi] + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + [APP_NAME] kurulumunuz için bir güncelleme indirdik. +Sürüm [VERSION] +Bu deneysel görüntüleyicinin yerini bir [NEW_CHANNEL] görüntüleyici aldı; +bkz. [bu güncelleme hakkında bilgi için [INFO_URL]] + <usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi yükle ve [APP_NAME] uygulamasını yeniden başlat"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + [APP_NAME] kurulumunuz için bir güncelleme indirdik. +Sürüm [VERSION] +Bu deneysel görüntüleyicinin yerini bir [NEW_CHANNEL] görüntüleyici aldı; +bkz. [[INFO_URL] Bu güncelleme hakkında bilgi] + <usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi yükle ve [APP_NAME] uygulamasını yeniden başlat"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + Gerekli bir yazılım güncellemesi indirdik. +Sürüm [VERSION] +Bu deneysel görüntüleyicinin yerini bir [NEW_CHANNEL] görüntüleyici aldı; +bkz. [[INFO_URL] Bu güncelleme hakkında bilgi] + +Güncellemeyi yüklemek için [APP_NAME] uygulamasını yeniden başlatmalısınız. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + Güncellemeyi yüklemek için [APP_NAME] uygulamasını yeniden başlatmalısınız. +Bu deneysel görüntüleyicinin yerini bir [NEW_CHANNEL] görüntüleyici aldı; +bkz. [[INFO_URL] Bu güncelleme hakkında bilgi] <usetemplate name="okbutton" yestext="Tamam"/> </notification> <notification name="DeedObjectToGroup"> @@ -1537,6 +1575,10 @@ Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız Gruptan ayrılmak istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + Gruptan ayrılınamıyor. Gruptan ayrılamazsınız çünkü grubun son sahibisiniz. Lütfen önce sahip rolüne başka bir üye atayın. + <usetemplate name="okbutton" yestext="Tamam"/> + </notification> <notification name="ConfirmKick"> Tüm Sakinleri GERÇEKTEN ağ dışına çıkarmak istiyor musunuz? <usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Tüm Sakinleri Çıkar"/> @@ -2396,9 +2438,7 @@ Lütfen tek bir nesne seçin. 'Işınla' seçimini yapabilirsiniz.) </notification> <notification name="TeleportToPerson"> - '[NAME]' gibi sakinlerle bağlantıya geçmek için "Kişiler" düğmesine tıklayın, açılan pencereden bir Sakin seçin ve sonra - pencerenin altında 'Anlık İleti" üzerine tıklayın. - (Listede adlarına çift tıklayarak veya sağ tıklayıp "Anlık İleti"yi seçerek de bunu yapabilirsiniz.) + Biriyle özel bir sohbet başlatmak için, avatarlarına sağ tıklayın ve menüden "Aİ" seçimini yapın. </notification> <notification name="CantSelectLandFromMultipleRegions"> Sunucunun sınırları dışındaki arazi seçilemez. @@ -2772,6 +2812,15 @@ Eğer hesabınıza neden erişmek istediğini tam olarak anlamıyorsanız, eriş <button name="Deny" text="Reddet"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + '[NAME]' tarafından sahip olunan bir nesne olan '<nolink>[OBJECTNAME]</nolink>' tarafından istenen çalışma zamanı komut dosyası izni görüntüleyici tarafından tanınmadı ve verilemez. + +Bu izni vermek için lütfen [DOWNLOADURL] adresinden görüntüleyicinizi en son sürüme güncelleyin. + <form name="form"> + <button name="Deny" text="Tamam"/> + <button name="Mute" text="Engelle"/> + </form> + </notification> <notification name="ScriptDialog"> [NAME] adlı kişiye ait '<nolink>[TITLE]</nolink>' [MESSAGE] diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml index 08efd0aa61..b499ec8307 100755 --- a/indra/newview/skins/default/xui/tr/panel_people.xml +++ b/indra/newview/skins/default/xui/tr/panel_people.xml @@ -49,6 +49,9 @@ Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/worldmap Dünya <menu_button name="plus_btn" tool_tip="Gruba katıl/yeni grup oluştur"/> <dnd_button name="minus_btn" tool_tip="Seçilen gruptan ayrıl"/> </panel> + <text name="groupcount"> + [COUNT] gruba üyesiniz, daha [REMAINING] gruba üye olabilirsiniz. + </text> </panel> <panel label="SON" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml index aaeebdfe6e..d46f3e08cc 100755 --- a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Metin Sohbeti" name="chat"> - <panel> + <panel name="general_chat_settings"> <check_box initial_value="true" label="Sohbet sırasında yazma animasyonunu oynat" name="play_typing_animation"/> <check_box label="Çevrimdışı olduğunda Aİ'ler e-posta ile bana gönderilsin" name="send_im_to_email"/> <check_box label="Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/> @@ -14,19 +14,17 @@ </combo_box> <check_box label="Balon Sohbeti" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - Bildirimler - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> Arkadaş Aİ'leri: </text> <combo_box name="FriendIMOptions"> <item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mesajı aç" name="PopUpMessage" value="toast"/> + <item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/> <item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/> - <item label="Hiçbiri" name="None" value="none"/> + <item label="Eylem yok" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sesi çal" name="play_sound_friend_im"/> <text name="non_friend_ims"> Arkadaş harici Aİ'ler: </text> @@ -34,40 +32,54 @@ <item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/> <item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/> <item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/> - <item label="Hiçbiri" name="None" value="none"/> + <item label="Eylem yok" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sesi çal" name="play_sound_non_friend_im"/> <text name="conference_ims"> Konferans Aİ'leri: </text> <combo_box name="ConferenceIMOptions"> <item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mesajı aç" name="PopUpMessage" value="toast"/> + <item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/> <item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/> - <item label="Hiçbiri" name="None" value="none"/> + <item label="Eylem yok" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sesi çal" name="play_sound_conference_im"/> <text name="group_chat"> Grup sohbeti: </text> <combo_box name="GroupChatOptions"> <item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mesajı aç" name="PopUpMessage" value="toast"/> + <item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/> <item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolbarButton" value="flash"/> - <item label="Hiçbiri" name="None" value="none"/> + <item label="Eylem yok" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sesi çal" name="play_sound_group_chat_im"/> <text name="nearby_chat"> Yakındaki sohbet: </text> <combo_box name="NearbyChatOptions"> <item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/> - <item label="Mesajı aç" name="PopUpMessage" value="toast"/> + <item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/> + <item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolBarButton" value="flash"/> + <item label="Eylem yok" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="Sesi çal" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + Nesne Aİ'leri: + </text> + <combo_box name="ObjectIMOptions"> + <item label="Sohbetler penceresini aç" name="OpenConversationsWindow" value="openconversations"/> + <item label="Mesajı açılır pencerede göster" name="PopUpMessage" value="toast"/> <item label="Araç çubuğu düğmesi yanıp sönsün" name="FlashToolBarButton" value="flash"/> - <item label="Hiçbiri" name="None" value="none"/> + <item label="Eylem yok" name="NoAction" value="noaction"/> </combo_box> + <check_box label="Sesi çal" name="play_sound_object_im"/> <text name="notifications_alert"> Tüm bildirimleri geçici olarak durdurmak için İletişim Kur > Rahatsız Etme seçeneğini kullanın. </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> Sesi çal: </text> @@ -76,7 +88,7 @@ <check_box label="Işınlama teklifi" name="teleport_offer"/> <check_box label="Envanter teklifi" name="inventory_offer"/> </panel> - <panel> + <panel name="log_settings"> <button label="Günlüğü temizle..." name="clear_log"/> <button label="Dökümleri sil..." name="delete_transcripts"/> <button label="Gözat..." label_selected="Gözat" name="log_path_button"/> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml index ddb83ffc69..25c9e966c7 100755 --- a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="true" label="Yerel Işıklar" name="LocalLights"/> <check_box initial_value="true" label="Temel gölgeleyiciler" name="BasicShaders" tool_tip="Bu seçeneğin devre dışı bırakılması bazı grafik kartlarının sürücülerinin kilitlenmesini önleyebilir"/> <check_box initial_value="true" label="Atmosferik gölgeleyiciler" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Işıklandırma ve Gölgeler" name="UseLightShaders"/> + <check_box initial_value="true" label="Gelişmiş Aydınlatma Modeli" name="UseLightShaders"/> <check_box initial_value="true" label="Ortam Gölgeleme" name="UseSSAO"/> <check_box initial_value="true" label="Alan Derinliği" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml index 9d03d9b01d..2039761748 100755 --- a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="Otomatik olarak kurulsun" name="Install_automatically"/> <combo_box.item label="Güncelleştirmeler manuel olarak karşıdan yüklensin ve kurulsun" name="Install_manual"/> </combo_box> + <check_box label="Sürüm adaylarına güncelleme yapmaya gönüllü" name="update_willing_to_test"/> <text name="Proxy Settings:"> Proxy Ayarları: </text> diff --git a/indra/newview/skins/default/xui/tr/panel_script_ed.xml b/indra/newview/skins/default/xui/tr/panel_script_ed.xml index 7aa1da6fb2..79cd86c3f0 100755 --- a/indra/newview/skins/default/xui/tr/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/tr/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="Tümünü Seç" name="Select All"/> <menu_item_call label="Seçimi Kaldır" name="Deselect"/> <menu_item_call label="Ara / Değiştir..." name="Search / Replace..."/> + <menu_item_call label="Şu satıra git:" name="Go to line..."/> </menu> <menu label="Yardım" name="Help"> <menu_item_call label="Yardım..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/tr/panel_tools_texture.xml b/indra/newview/skins/default/xui/tr/panel_tools_texture.xml new file mode 100644 index 0000000000..2ce7c9c11f --- /dev/null +++ b/indra/newview/skins/default/xui/tr/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Doku" name="Texture"> + <panel.string name="string repeats per meter"> + Metrede Kaç Kez Tekrarlandığı + </panel.string> + <panel.string name="string repeats per face"> + Bir Yüzde Kaç Kez Tekrarlandığı + </panel.string> + <text name="color label"> + Renk + </text> + <color_swatch label="" name="colorswatch" tool_tip="Renk seçiciyi açmak için tıklayın"/> + <text name="color trans"> + Saydamlık % + </text> + <text name="glow label"> + Parıltı + </text> + <check_box label="Tam Parlak" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="Malzemeler" name="Materials"/> + <combo_box.item label="Ortam" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="Doku (yayılmış)" name="Texture (diffuse)"/> + <combo_box.item label="Yumruluk (normal)" name="Bumpiness (normal)"/> + <combo_box.item label="Parıldama (yansıtan)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="Doku" name="texture control" tool_tip="Bir resim seçmek için tıklayın"/> + <text name="label alphamode"> + Alfa modu + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="Hiçbiri" name="None"/> + <combo_box.item label="Alfa karıştırma" name="Alpha blending"/> + <combo_box.item label="Alfa maskeleme" name="Alpha masking"/> + <combo_box.item label="Yayımlatıcı maske" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + Maske kesimi + </text> + <texture_picker label="Doku" name="bumpytexture control" tool_tip="Bir resim seçmek için tıklayın"/> + <text name="label bumpiness"> + Yumruluk + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="Yok" name="None"/> + <combo_box.item label="Parlaklık" name="Brightness"/> + <combo_box.item label="Koyuluk" name="Darkness"/> + <combo_box.item label="damarlı ahşap" name="woodgrain"/> + <combo_box.item label="ağaç kabuğu" name="bark"/> + <combo_box.item label="tuğlalar" name="bricks"/> + <combo_box.item label="dama tahtası" name="checker"/> + <combo_box.item label="beton" name="concrete"/> + <combo_box.item label="sert çini" name="crustytile"/> + <combo_box.item label="kesilmiş taş" name="cutstone"/> + <combo_box.item label="diskler" name="discs"/> + <combo_box.item label="çakıl" name="gravel"/> + <combo_box.item label="petri kabı" name="petridish"/> + <combo_box.item label="dış kaplama" name="siding"/> + <combo_box.item label="taş çini" name="stonetile"/> + <combo_box.item label="stükko" name="stucco"/> + <combo_box.item label="vakum" name="suction"/> + <combo_box.item label="örgü" name="weave"/> + </combo_box> + <texture_picker label="Doku" name="shinytexture control" tool_tip="Bir resim seçmek için tıklayın"/> + <text name="label shininess"> + Parıldama + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="Yok" name="None"/> + <combo_box.item label="Düşük" name="Low"/> + <combo_box.item label="Orta" name="Medium"/> + <combo_box.item label="Yüksek" name="High"/> + </combo_box> + <text name="label glossiness"> + Pürüzsüzlük + </text> + <text name="label environment"> + Ortam + </text> + <text name="label shinycolor"> + Renk + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="Renk seçiciyi açmak için tıklayın"/> + <text name="media_info"> + Varsa, seçilen ortamın URL'si burada yer alır + </text> + <button label="Seç..." name="add_media" tool_tip="Ortam Ekle"/> + <button label="Kaldır" name="delete_media" tool_tip="Bu ortam dokusunu sil"/> + <button label="Hizala" label_selected="Ortamı Hizala" name="button align" tool_tip="Ortam dokusunu hizala (önce yüklenmelidir)"/> + <text name="tex gen"> + Eşleştirme + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="Varsayılan" name="Default"/> + <combo_box.item label="Planar" name="Planar"/> + </combo_box> + <spinner label="Yatay ölçek" name="TexScaleU"/> + <spinner label="Dikey ölçek" name="TexScaleV"/> + <spinner label="Metrede kaç kez tekrarlandığı" name="rptctrl"/> + <spinner label="Dönüş derecesi" name="TexRot"/> + <spinner label="Yatay ofset" name="TexOffsetU"/> + <spinner label="Dikey ofset" name="TexOffsetV"/> + <spinner label="Yatay ölçek" name="bumpyScaleU"/> + <spinner label="Dikey ölçek" name="bumpyScaleV"/> + <spinner label="Dönüş derecesi" name="bumpyRot"/> + <spinner label="Yatay ofset" name="bumpyOffsetU"/> + <spinner label="Dikey ofset" name="bumpyOffsetV"/> + <spinner label="Yatay ölçek" name="shinyScaleU"/> + <spinner label="Dikey ölçek" name="shinyScaleV"/> + <spinner label="Dönüş derecesi" name="shinyRot"/> + <spinner label="Yatay ofset" name="shinyOffsetU"/> + <spinner label="Dikey ofset" name="shinyOffsetV"/> + <check_box initial_value="false" label="Planar yüzleri hizala" name="checkbox planar align" tool_tip="Tüm seçili yüzeylerdeki dokuları son seçili yüzdekiyle hizalar. Planar doku eşleştirmesi gerektirir."/> +</panel> diff --git a/indra/newview/skins/default/xui/tr/role_actions.xml b/indra/newview/skins/default/xui/tr/role_actions.xml index 655ac64172..76ca58c319 100755 --- a/indra/newview/skins/default/xui/tr/role_actions.xml +++ b/indra/newview/skins/default/xui/tr/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="Bu yetenekler arasında parsel adını ve yayınlama ayarlarını, Bul dizinindeki görünürlük ile iniş noktası ve TP yönlendirme seçeneklerini değiştirme imkanları yer alır." name="Parcel Identity"> <action description="'Konumu Arama Sonuçlarında Göster' seçeneğini Aç/Kapa ve kategoriyi ayarla" longdescription="Arazi Hakkında > Seçenekler sekmesinden 'Konumu Arama Sonuçlarında Göster' seçeneğini Açın/Kapayın ve parsel kategorisini ayarlayın." name="land find places" value="17"/> - <action description="Parsel adını, açıklamasını ve "Konumu Arama Sonuçlarında Göster" ayarlarını değiştir" longdescription="Parsel adını, açıklamasını ve "Konumu Arama Sonuçlarında Göster" ayarlarını değiştirin. Bu işlem Arazi Hakkında > Seçenekler sekmesinde yapılır." name="land change identity" value="18"/> + <action description="Parsel adını, açıklamasını ve "Orta Seviyede İçerik" ayarlarını değiştir" longdescription="Parsel adını, açıklamasını ve "Orta Seviyede İçerik" ayarlarını değiştir. Bu işlem Arazi Hakkında > Seçenekler sekmesinde yapılır." name="land change identity" value="18"/> <action description="İniş noktasını ve ışınlama yönlendirmesini ayarlayın" longdescription="Bir grubun sahip olduğu parsel üzerinde, bu Yeteneğe sahip olan bir Roldeki Üyeler gelen ışınlanmaların varacağı iniş noktasını ve daha fazla kontrol için ışınlama yönlendirmesini ayarlayabilirler. Bu işlem Arazi Hakkında > Seçenekler sekmesinde yapılır." name="land set landing point" value="19"/> </action_set> <action_set description="Bu Yeteneklere 'Nesneleri Oluştur', 'Yüzeyi Düzenle', müzik ve ortam ayarları gibi parsel seçeneklerini etkileyen güçler de dahildir." name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index 155dc8749a..5a809ea783 100755 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -139,6 +139,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> Kullandığınız görüntüleyici ile artık Second Life'a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin: http://secondlife.com/download @@ -448,6 +451,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="SLappAgentRequestFriend"> Arkadaşlık Talebi </string> + <string name="SLappAgentRemoveFriend"> + Arkadaşların Çıkarılması + </string> <string name="BUTTON_CLOSE_DARWIN"> Kapat (⌘W) </string> @@ -835,6 +841,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="multiple_textures"> Birden Çok </string> + <string name="use_texture"> + Dokuyu kullan + </string> <string name="texture_loading"> Yükleniyor... </string> @@ -934,6 +943,21 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="TeleportYourAgent"> Sizi ışınlama </string> + <string name="JoinAnExperience"> + Bir tecrübeye katıl + </string> + <string name="SilentlyManageEstateAccess"> + Gayri menkul erişim listelerini yönetirken uyarıları bastır + </string> + <string name="OverrideYourAnimations"> + Varsayılan animasyonlarınızı değiştirin + </string> + <string name="ScriptReturnObjects"> + Kendi adınıza nesneler iade edin + </string> + <string name="UnknownScriptPermission"> + (bilinmiyor)! + </string> <string name="SIM_ACCESS_PG"> Genel </string> @@ -1965,6 +1989,12 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="ATTACH_HUD_BOTTOM_RIGHT"> BÜG Sağ Alt </string> + <string name="ATTACH_NECK"> + Boyun + </string> + <string name="ATTACH_AVATAR_CENTER"> + Avatar Merkezi + </string> <string name="CursorPos"> Satır [LINE], Sütun [COLUMN] </string> @@ -2994,6 +3024,9 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun. <string name="Hip Width"> Kalça Genişliği </string> + <string name="Hover"> + Üzerine getir + </string> <string name="In"> İçeri </string> @@ -5088,4 +5121,7 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. <string name="logging_calls_enabled_log_empty"> Günlüğü tutulmuş sohbet yok. Siz biriyle iletişime geçtikten sonra veya biri sizinle iletişime geçtikten sonra, burada bir günlük girişi gösterilir. </string> + <string name="loading_chat_logs"> + Yükleniyor... + </string> </strings> diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml index 1193243c7e..2dfb35fa54 100755 --- a/indra/newview/skins/default/xui/zh/floater_about.xml +++ b/indra/newview/skins/default/xui/zh/floater_about.xml @@ -9,6 +9,8 @@ </floater.string> <floater.string name="AboutPosition"> 你的方位是 [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地區名:[REGION],主機:<nolink>[HOSTNAME]</nolink> ([HOSTIP]) +第二人生 URL:<nolink>[SLURL]</nolink> +(全域坐標:[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1]) [SERVER_VERSION] [SERVER_RELEASE_NOTES_URL] </floater.string> diff --git a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml index 59751a3a46..c103ea938f 100755 --- a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="編輯內容物權限"> +<floater name="floaterbulkperms" title="調整內容物權限"> <floater.string name="nothing_to_modify_text"> 選擇未包含可編輯的內容物。 </floater.string> @@ -24,7 +24,7 @@ <button label="√ 全部" name="check_all"/> <button label="清除" label_selected="無" name="check_none"/> <text name="newperms"> - 新內容物權限 + 調整內容物權限: </text> <text name="GroupLabel"> 群組: @@ -40,6 +40,7 @@ <check_box label="修改" name="next_owner_modify"/> <check_box label="恚庨" name="next_owner_copy"/> <check_box initial_value="true" label="轉移" name="next_owner_transfer" tool_tip="下一個所有人可贈送或轉售這個物件"/> - <button label="確定" name="apply"/> + <button label="確定" name="ok"/> + <button label="套用" name="apply"/> <button label="取消" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_goto_line.xml b/indra/newview/skins/default/xui/zh/floater_goto_line.xml new file mode 100644 index 0000000000..e0215aef8a --- /dev/null +++ b/indra/newview/skins/default/xui/zh/floater_goto_line.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script goto" title="前往某行數"> + <button label="確定" label_selected="確定" name="goto_btn"/> + <text name="txt"> + 前往某行數 + </text> +</floater> diff --git a/indra/newview/skins/default/xui/zh/floater_im_session.xml b/indra/newview/skins/default/xui/zh/floater_im_session.xml index d63c5507db..864af2e592 100755 --- a/indra/newview/skins/default/xui/zh/floater_im_session.xml +++ b/indra/newview/skins/default/xui/zh/floater_im_session.xml @@ -34,13 +34,11 @@ <layout_panel name="body_panel"> <layout_stack name="im_panels"> <layout_panel name="right_part_holder"> - <panel name="trnsAndChat_panel"> - <layout_stack name="translate_and_chat_stack"> - <layout_panel name="translate_chat_checkbox_lp"> - <check_box label="翻譯聊天內容" name="translate_chat_checkbox"/> - </layout_panel> - </layout_stack> - </panel> + <layout_stack name="translate_and_chat_stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="翻譯聊天內容" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml index d0978b8b01..be009b54d8 100755 --- a/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_console.xml @@ -71,7 +71,7 @@ <text name="show_label"> 顯示: </text> - <check_box label="測試" name="show_world"/> + <check_box label="世界" name="show_world"/> <check_box label="僅限可移動的" name="show_world_movables_only"/> <check_box label="導航網面" name="show_navmesh"/> <text name="show_walkability_label"> diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml index 885c4b9add..41b3409627 100755 --- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml @@ -11,7 +11,9 @@ <menu_item_call label="凍結" name="Freeze..."/> <menu_item_call label="踢出" name="Eject..."/> <menu_item_call label="材質除錯" name="Debug..."/> + <menu_item_call label="傾印 XML" name="Dump XML"/> <menu_item_call label="放大" name="Zoom In"/> <menu_item_call label="支付" name="Pay..."/> <menu_item_call label="物件檔案" name="Object Inspect"/> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml index c14a98c64b..eb1bad0ca2 100755 --- a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml @@ -12,5 +12,7 @@ <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> <menu_item_call label="材質除錯" name="Debug..."/> + <menu_item_call label="傾印 XML" name="Dump XML"/> <menu_item_call label="丟棄" name="Drop"/> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml index 1d02464748..dc035bafa0 100755 --- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml @@ -11,6 +11,8 @@ <menu_item_call label="凍結" name="Freeze..."/> <menu_item_call label="踢出" name="Eject..."/> <menu_item_call label="材質除錯" name="Debug..."/> + <menu_item_call label="傾印 XML" name="Dump XML"/> <menu_item_call label="放大" name="Zoom In"/> <menu_item_call label="支付" name="Pay..."/> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml index 32757bbff6..68d0600141 100755 --- a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml @@ -29,4 +29,6 @@ <menu_item_call label="我的群組" name="Groups..."/> <menu_item_call label="我的個人檔案" name="Profile..."/> <menu_item_call label="材質除錯" name="Debug..."/> + <menu_item_call label="傾印 XML" name="Dump XML"/> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_conversation.xml b/indra/newview/skins/default/xui/zh/menu_conversation.xml index 507255d0c0..adfeefc337 100644 --- a/indra/newview/skins/default/xui/zh/menu_conversation.xml +++ b/indra/newview/skins/default/xui/zh/menu_conversation.xml @@ -3,6 +3,7 @@ <menu_item_call label="關閉交談" name="close_conversation"/> <menu_item_call label="開啟語音交談" name="open_voice_conversation"/> <menu_item_call label="切斷語音交談" name="disconnect_from_voice"/> + <menu_item_call label="關閉所選" name="close_selected_conversations"/> <menu_item_call label="察看檔案" name="view_profile"/> <menu_item_call label="IM" name="im"/> <menu_item_call label="發出瞬間傳送邀請" name="offer_teleport"/> diff --git a/indra/newview/skins/default/xui/zh/menu_land.xml b/indra/newview/skins/default/xui/zh/menu_land.xml index a87ab77dd0..3ad9c0ab31 100755 --- a/indra/newview/skins/default/xui/zh/menu_land.xml +++ b/indra/newview/skins/default/xui/zh/menu_land.xml @@ -6,4 +6,5 @@ <menu_item_call label="購買通行權" name="Land Buy Pass"/> <menu_item_call label="建造" name="Create"/> <menu_item_call label="編輯地形" name="Edit Terrain"/> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index c327b132a1..1d3d771efb 100755 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml @@ -18,7 +18,13 @@ <menu_item_call label="顯示 TOS" name="TOS"/> <menu_item_call label="顯示嚴重訊息" name="Critical"/> <menu_item_call label="網頁內容浮動視窗除錯測試" name="Web Content Floater Debug Test"/> - <menu label="設定記錄細節" name="Set Logging Level"/> + <menu label="設定記錄細節" name="Set Logging Level"> + <menu_item_check label="除錯" name="Debug"/> + <menu_item_check label="資訊" name="Info"/> + <menu_item_check label="警告" name="Warning"/> + <menu_item_check label="錯誤" name="Error"/> + <menu_item_check label="無" name="None"/> + </menu> <menu_item_check label="顯示網格挑選器" name="Show Grid Picker"/> <menu_item_call label="顯示通知控制台" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_mute_particle.xml b/indra/newview/skins/default/xui/zh/menu_mute_particle.xml new file mode 100644 index 0000000000..fbde9b435d --- /dev/null +++ b/indra/newview/skins/default/xui/zh/menu_mute_particle.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Mute Particle Pie"> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_object.xml b/indra/newview/skins/default/xui/zh/menu_object.xml index 4282c1e131..f6657d876e 100755 --- a/indra/newview/skins/default/xui/zh/menu_object.xml +++ b/indra/newview/skins/default/xui/zh/menu_object.xml @@ -3,13 +3,13 @@ <menu_item_call label="觸碰" name="Object Touch"/> <menu_item_call label="編輯" name="Edit..."/> <menu_item_call label="建造" name="Build"/> - <menu_item_call label="在聯結集裡顯示" name="show_in_linksets"/> - <menu_item_call label="在角色中顯示" name="show_in_characters"/> <menu_item_call label="打開" name="Open"/> <menu_item_call label="坐在這裡" name="Object Sit"/> <menu_item_call label="起立" name="Object Stand Up"/> <menu_item_call label="物件檔案" name="Object Inspect"/> <menu_item_call label="放大" name="Zoom In"/> + <menu_item_call label="在聯結集裡顯示" name="show_in_linksets"/> + <menu_item_call label="在角色中顯示" name="show_in_characters"/> <context_menu label="穿上" name="Put On"> <menu_item_call label="穿上" name="Wear"/> <menu_item_call label="添加" name="Add"/> @@ -26,4 +26,5 @@ <menu_item_call label="支付" name="Pay..."/> <menu_item_call label="購買" name="Buy..."/> <menu_item_call label="刪除" name="Delete"/> + <menu_item_call label="封鎖粒子所有人" name="Mute Particle"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_agent.xml b/indra/newview/skins/default/xui/zh/menu_url_agent.xml index 72629822d4..752634dc6b 100755 --- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml @@ -3,6 +3,7 @@ <menu_item_call label="察看檔案" name="show_agent"/> <menu_item_call label="送出 IM..." name="send_im"/> <menu_item_call label="加為朋友..." name="add_friend"/> + <menu_item_call label="移除朋友…" name="remove_friend"/> <menu_item_call label="覆製名稱到剪貼簿" name="url_copy_label"/> <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml index 9f3a9d58ff..ac366f92ef 100755 --- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="物件檔案..." name="show_object"/> + <menu_item_call label="封鎖…" name="block_object"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> <menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/> <menu_item_call label="覆製物件名稱到剪貼簿" name="url_copy_label"/> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index d4844b191b..b267bda2bb 100755 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -16,7 +16,10 @@ <menu_item_call label="停止我身上的動作" name="Stop Animating My Avatar"/> <menu_item_call label="行走 / 跑步 / 飛行…" name="Walk / run / fly"/> </menu> - <menu label="狀態" name="Status"/> + <menu label="狀態" name="Status"> + <menu_item_check label="離開" name="Away"/> + <menu_item_check label="請勿打擾" name="Do Not Disturb"/> + </menu> <menu_item_call label="購買 L$…" name="Buy and Sell L$"/> <menu_item_call label="商家發件匣…" name="MerchantOutbox"/> <menu_item_call label="帳戶主控臺…" name="Manage My Account"/> @@ -30,6 +33,7 @@ <menu_item_check label="交談……" name="Conversations"/> <menu_item_check label="附近的聊天……" name="Nearby Chat"/> <menu_item_check label="說話" name="Speak"/> + <menu_item_check label="交談記錄…" name="Conversation Log..."/> <menu label="語音變聲" name="VoiceMorphing"> <menu_item_check label="沒有變聲效果" name="NoVoiceMorphing"/> <menu_item_check label="預覽……" name="Preview"/> @@ -40,6 +44,7 @@ <menu_item_check label="群組" name="My Groups"/> <menu_item_check label="附近的人群" name="Active Speakers"/> <menu_item_call label="封鎖清單" name="Block List"/> + <menu_item_check label="請勿打擾" name="Do Not Disturb"/> </menu> <menu label="世界" name="World"> <menu_item_call label="將此處記為地標" name="Create Landmark Here"/> @@ -108,6 +113,7 @@ <menu_item_call label="包括下一部位" name="Include Next Part"/> <menu_item_call label="包括上一部位" name="Include Previous Part"/> </menu> + <menu_item_call label="聯結集…" name="pathfinding_linkset_menu_item"/> <menu_item_call label="聚焦於所選部位" name="Focus on Selection"/> <menu_item_call label="縮放至所選部位" name="Zoom to Selection"/> <menu label="物件" name="Object"> @@ -277,6 +283,7 @@ <menu_item_check label="隨機變動幀率" name="Randomize Framerate"/> <menu_item_check label="定期出現慢幀率" name="Periodic Slow Frame"/> <menu_item_check label="畫面測試" name="Frame Test"/> + <menu_item_call label="幀特性" name="Frame Profile"/> </menu> <menu label="呈像的元資料" name="Render Metadata"> <menu_item_check label="外框箱" name="Bounding Boxes"/> @@ -311,9 +318,10 @@ <menu_item_check label="軸" name="Axes"/> <menu_item_check label="切線基礎" name="Tangent Basis"/> <menu_item_call label="已選取材質資訊基礎" name="Selected Texture Info Basis"/> + <menu_item_call label="所選材料資訊" name="Selected Material Info"/> <menu_item_check label="線框" name="Wireframe"/> <menu_item_check label="物件導向的遮蔽" name="Object-Object Occlusion"/> - <menu_item_check label="光線和陰影" name="Advanced Lighting Model"/> + <menu_item_check label="進階照明模型" name="Advanced Lighting Model"/> <menu_item_check label="來自日/月/投影物的陰影" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="屏幕空間環境光遮蔽和陰影平滑技術" name="SSAO and Shadow Smoothing"/> <menu_item_check label="GL 除錯" name="Debug GL"/> @@ -323,7 +331,6 @@ <menu_item_check label="動作材質" name="Animation Textures"/> <menu_item_check label="關閉材質" name="Disable Textures"/> <menu_item_check label="全解析度材質" name="Rull Res Textures"/> - <menu_item_check label="材質圖集(實驗性質)" name="Texture Atlas"/> <menu_item_check label="使附著燈光呈像" name="Render Attached Lights"/> <menu_item_check label="使附著例子效果呈像" name="Render Attached Particles"/> <menu_item_check label="停懸發光物件" name="Hover Glow Objects"/> @@ -359,7 +366,6 @@ <menu_item_call label="傾印焦點容器" name="Dump Focus Holder"/> <menu_item_call label="列印所選物件資訊" name="Print Selected Object Info"/> <menu_item_call label="列印用戶資訊" name="Print Agent Info"/> - <menu_item_call label="計憶體狀態" name="Memory Stats"/> <menu_item_check label="地區除錯控制台" name="Region Debug Console"/> <menu_item_check label="除錯 SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="除錯點按動作" name="Debug Clicks"/> diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 59be26d43b..864f20fc15 100755 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -210,6 +210,14 @@ 你仍要新增這項能力給「[ROLE_NAME]」? <usetemplate name="okcancelbuttons" notext="否" yestext="是"/> </notification> + <notification name="EjectGroupMemberWarning"> + 你即將把 [AVATAR_NAME] 踢出群組。 + <usetemplate ignoretext="確定將某人踢出群組" name="okcancelignore" notext="取消" yestext="踢出"/> + </notification> + <notification name="EjectGroupMembersWarning"> + 你即將把 [COUNT] 個人踢出群組。 + <usetemplate ignoretext="確定將多人踢出群組" name="okcancelignore" notext="取消" yestext="踢出"/> + </notification> <notification name="AttachmentDrop"> 你即將卸除你的附件。 你確定你要繼續? @@ -1470,13 +1478,43 @@ SHA1 指紋:[MD5_DIGEST] </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> 我們已下載了一個必要的軟體更新。 -版本:[VERSION] +[VERSION] 版本 [[INFO_URL] 關於此更新的資訊] 我門必須重新啟動 [APP_NAME] 以安裝更新。 <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> 我門必須重新啟動 [APP_NAME] 以安裝更新。 +[[INFO_URL] 關於此更新的資訊] + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="OtherChannelDownloadBackgroundTip"> + 我們已為你的 [APP_NAME] 軟體下載了更新。 +版本:[VERSION] +原本試驗性質的瀏覽器已被 [NEW_CHANNEL] 瀏覽器取代, +參見[[INFO_URL] 此更新版的詳情] + <usetemplate name="okcancelbuttons" notext="稍候..." yestext="立即安裝並重新啟動 [APP_NAME]"/> + </notification> + <notification name="OtherChannelDownloadBackgroundDialog"> + 我們已為你的 [APP_NAME] 軟體下載了更新。 +版本:[VERSION] +原本試驗性質的瀏覽器已被 [NEW_CHANNEL] 瀏覽器取代, +參見[[INFO_URL] 介紹此更新版的資訊] + <usetemplate name="okcancelbuttons" notext="稍候…" yestext="立即安裝並重新啟動 [APP_NAME]"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedVerboseDialog"> + 我們已下載了一個必要的軟體更新。 +版本:[VERSION] +原本試驗性質的瀏覽器已被 [NEW_CHANNEL] 瀏覽器取代, +參見[[INFO_URL] 介紹此更新版的資訊] + +我們必須重新啟動 [APP_NAME] 以便安裝更新。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> + <notification name="OtherChannelRequiredUpdateDownloadedDialog"> + 我們必須重新啟動 [APP_NAME] 以便安裝更新。 +原本試驗性質的瀏覽器已被 [NEW_CHANNEL] 瀏覽器取代, +參見[[INFO_URL] 介紹此更新版的資訊] <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="DeedObjectToGroup"> @@ -1527,6 +1565,10 @@ SHA1 指紋:[MD5_DIGEST] 是否要離開群組? <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> + <notification name="OwnerCannotLeaveGroup"> + 無法離開群組。 你是此群組僅存的所有人,不得離開群組。 請先把所有人職銜指派給另一人。 + <usetemplate name="okbutton" yestext="確定"/> + </notification> <notification name="ConfirmKick"> 你確定要踢出這網格內的全部居民? <usetemplate name="okcancelbuttons" notext="取消" yestext="踢出全部居民"/> @@ -2386,9 +2428,7 @@ SHA1 指紋:[MD5_DIGEST] (你還可以直接按兩下那個地標,或按滑鼠右鍵,選擇「瞬間傳送」。) </notification> <notification name="TeleportToPerson"> - 要聯絡如「[NAME]」的任何一位居民,請點按「人群」按鈕,從打開的視窗中選擇一位居民,再點按視窗底下的「IM」。 - - (你還可以從清單直接按兩下名字,或按滑鼠右鍵,選擇「IM」。) + 要和某人私下交談,請右鍵點按化身,再點按選單的「IM」。 </notification> <notification name="CantSelectLandFromMultipleRegions"> 無法選擇超出伺服器邊界的土地。 @@ -2762,6 +2802,15 @@ SHA1 指紋:[MD5_DIGEST] <button name="Deny" text="拒絕"/> </form> </notification> + <notification name="UnknownScriptQuestion"> + 由 '[NAME]' 所擁有的物件 '<nolink>[OBJECTNAME]</nolink>' 正請求某項執行時期腳本權限,但本瀏覽器無法辨識該權限,故不允准。 + +欲准許此權限,請從 [DOWNLOADURL] 下載並更新為最新版瀏覽器。 + <form name="form"> + <button name="Deny" text="確定"/> + <button name="Mute" text="封鎖"/> + </form> + </notification> <notification name="ScriptDialog"> [NAME] 的 '<nolink>[TITLE]</nolink>' [MESSAGE] diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml index 5f7aca387a..da5918d553 100755 --- a/indra/newview/skins/default/xui/zh/panel_people.xml +++ b/indra/newview/skins/default/xui/zh/panel_people.xml @@ -49,6 +49,9 @@ <menu_button name="plus_btn" tool_tip="加入群組/創立新群組"/> <dnd_button name="minus_btn" tool_tip="離開所選群組"/> </panel> + <text name="groupcount"> + 你目前屬於 [COUNT] 個群組,可再加入 [REMAINING] 個。 + </text> </panel> <panel label="最近" name="recent_panel"> <panel label="bottom_panel" name="recent_buttons_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml index e700e35516..b5cdddc252 100755 --- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="文字聊天" name="chat"> - <panel> - <check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/> + <panel name="general_chat_settings"> + <check_box initial_value="true" label="聊天時呈現打字動作" name="play_typing_animation"/> <check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/> - <check_box label="只有我的朋友和群組可以 IM 或與我通話。" name="voice_call_friends_only_check"/> + <check_box label="只允許我的朋友和群組與我通話或 IM 給我" name="voice_call_friends_only_check"/> <text name="font_size"> - 字型尺寸: + 字型大小: </text> <combo_box name="chat_font_size"> <item label="小" name="Small" value="0"/> @@ -14,10 +14,7 @@ </combo_box> <check_box label="聊天泡泡" name="bubble_text_chat"/> </panel> - <panel> - <text name="notifications"> - 通知 - </text> + <panel name="im_notification_settings"> <text name="friend_ims"> 朋友 IM: </text> @@ -25,8 +22,9 @@ <item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/> <item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/> <item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/> - <item label="無" name="None" value="無"/> + <item label="無動作" name="NoAction" value="noaction"/> </combo_box> + <check_box label="播放聲音" name="play_sound_friend_im"/> <text name="non_friend_ims"> 非朋友 IM: </text> @@ -34,8 +32,9 @@ <item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/> <item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/> <item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/> - <item label="無" name="None" value="無"/> + <item label="無動作" name="NoAction" value="noaction"/> </combo_box> + <check_box label="播放聲音" name="play_sound_non_friend_im"/> <text name="conference_ims"> 多方交談 IM: </text> @@ -43,8 +42,9 @@ <item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/> <item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/> <item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/> - <item label="無" name="None" value="無"/> + <item label="無動作" name="NoAction" value="noaction"/> </combo_box> + <check_box label="播放聲音" name="play_sound_conference_im"/> <text name="group_chat"> 群組聊天: </text> @@ -52,8 +52,9 @@ <item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/> <item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/> <item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/> - <item label="無" name="None" value="無"/> + <item label="無動作" name="NoAction" value="noaction"/> </combo_box> + <check_box label="播放聲音" name="play_sound_group_chat_im"/> <text name="nearby_chat"> 附近的聊天: </text> @@ -61,13 +62,24 @@ <item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/> <item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/> <item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/> - <item label="無" name="None" value="無"/> + <item label="無動作" name="NoAction" value="noaction"/> + </combo_box> + <check_box label="播放聲音" name="play_sound_nearby_chat_im"/> + <text name="object_ims"> + 來自物件的 IM: + </text> + <combo_box name="ObjectIMOptions"> + <item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/> + <item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/> + <item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/> + <item label="無動作" name="NoAction" value="noaction"/> </combo_box> + <check_box label="播放聲音" name="play_sound_object_im"/> <text name="notifications_alert"> 若要暫時停止所有通知,請設定「溝通 > 請勿打擾」。 </text> </panel> - <panel> + <panel name="play_sound_settings"> <text name="play_sound"> 播放聲音: </text> @@ -76,9 +88,9 @@ <check_box label="瞬間傳送邀請" name="teleport_offer"/> <check_box label="收納物品贈送" name="inventory_offer"/> </panel> - <panel> - <button label="清空記錄……" name="clear_log"/> - <button label="刪除交談內容記錄……" name="delete_transcripts"/> + <panel name="log_settings"> + <button label="清空記錄…" name="clear_log"/> + <button label="刪除交談內容記錄…" name="delete_transcripts"/> <button label="瀏覽…" label_selected="瀏覽" name="log_path_button"/> </panel> <button label="翻譯…" name="ok_btn"/> 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 3948a48992..2311eb99a7 100755 --- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml @@ -30,7 +30,7 @@ <check_box initial_value="true" label="本地光線" name="LocalLights"/> <check_box initial_value="true" label="基本著色" name="BasicShaders" tool_tip="關閉此一選項可能避免部分顯示卡驅動程式損毀當機"/> <check_box initial_value="true" label="大氣著色" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="光線和陰影" name="UseLightShaders"/> + <check_box initial_value="true" label="進階照明模型" name="UseLightShaders"/> <check_box initial_value="true" label="環境光遮蔽" name="UseSSAO"/> <check_box initial_value="true" label="景深" name="UseDoF"/> <text name="shadows_label"> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml index a607a7c33b..0fcc49b203 100755 --- a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml @@ -29,6 +29,7 @@ <combo_box.item label="自動安裝" name="Install_automatically"/> <combo_box.item label="手動下載及安裝" name="Install_manual"/> </combo_box> + <check_box label="願意在更新時搶先試用釋出候選版" name="update_willing_to_test"/> <text name="Proxy Settings:"> 代理伺服器設定: </text> 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 29e9a35869..198e59be7b 100755 --- a/indra/newview/skins/default/xui/zh/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_ed.xml @@ -34,6 +34,7 @@ <menu_item_call label="全選" name="Select All"/> <menu_item_call label="取消選擇" name="Deselect"/> <menu_item_call label="搜尋 / 取代..." name="Search / Replace..."/> + <menu_item_call label="前往某行數…" name="Go to line..."/> </menu> <menu label="幫助" name="Help"> <menu_item_call label="幫助..." name="Help..."/> diff --git a/indra/newview/skins/default/xui/zh/panel_tools_texture.xml b/indra/newview/skins/default/xui/zh/panel_tools_texture.xml new file mode 100644 index 0000000000..5ea6d818c7 --- /dev/null +++ b/indra/newview/skins/default/xui/zh/panel_tools_texture.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="材質" name="Texture"> + <panel.string name="string repeats per meter"> + 每公尺重覆次數 + </panel.string> + <panel.string name="string repeats per face"> + 每一面重覆次數 + </panel.string> + <text name="color label"> + 顏色 + </text> + <color_swatch label="" name="colorswatch" tool_tip="點按以開啟顏色挑選器"/> + <text name="color trans"> + 透明度 % + </text> + <text name="glow label"> + 光暈 + </text> + <check_box label="全亮" name="checkbox fullbright"/> + <combo_box name="combobox matmedia"> + <combo_box.item label="材料" name="Materials"/> + <combo_box.item label="媒體" name="Media"/> + </combo_box> + <combo_box name="combobox mattype"> + <combo_box.item label="材質(漫反射圖)" name="Texture (diffuse)"/> + <combo_box.item label="凹凸度(正交)" name="Bumpiness (normal)"/> + <combo_box.item label="閃亮度(鏡反光)" name="Shininess (specular)"/> + </combo_box> + <texture_picker label="材質" name="texture control" tool_tip="點按以挑選圖片"/> + <text name="label alphamode"> + 半透明模式 + </text> + <combo_box name="combobox alphamode"> + <combo_box.item label="無" name="None"/> + <combo_box.item label="半透明攙混" name="Alpha blending"/> + <combo_box.item label="半透明遮罩" name="Alpha masking"/> + <combo_box.item label="自發光遮罩" name="Emissive mask"/> + </combo_box> + <text name="label maskcutoff"> + 遮罩截斷值 + </text> + <texture_picker label="材質" name="bumpytexture control" tool_tip="點按以挑選圖片"/> + <text name="label bumpiness"> + 凹凸度 + </text> + <combo_box name="combobox bumpiness"> + <combo_box.item label="無" name="None"/> + <combo_box.item label="亮度" name="Brightness"/> + <combo_box.item label="暗度" name="Darkness"/> + <combo_box.item label="木紋" name="woodgrain"/> + <combo_box.item label="樹皮" name="bark"/> + <combo_box.item label="磚" name="bricks"/> + <combo_box.item label="格子" name="checker"/> + <combo_box.item label="混凝土" name="concrete"/> + <combo_box.item label="粗花磚" name="crustytile"/> + <combo_box.item label="石磚" name="cutstone"/> + <combo_box.item label="圓盤" name="discs"/> + <combo_box.item label="碎石" name="gravel"/> + <combo_box.item label="培養皿" name="petridish"/> + <combo_box.item label="側邊片" name="siding"/> + <combo_box.item label="石磚格" name="stonetile"/> + <combo_box.item label="彩色沙岩" name="stucco"/> + <combo_box.item label="吸附" name="suction"/> + <combo_box.item label="編織" name="weave"/> + </combo_box> + <texture_picker label="材質" name="shinytexture control" tool_tip="點按以挑選圖片"/> + <text name="label shininess"> + 閃亮度 + </text> + <combo_box name="combobox shininess"> + <combo_box.item label="無" name="None"/> + <combo_box.item label="低" name="Low"/> + <combo_box.item label="中" name="Medium"/> + <combo_box.item label="高" name="High"/> + </combo_box> + <text name="label glossiness"> + 光滑度 + </text> + <text name="label environment"> + 環境 + </text> + <text name="label shinycolor"> + 顏色 + </text> + <color_swatch label="" name="shinycolorswatch" tool_tip="點按以開啟顏色挑選器"/> + <text name="media_info"> + 所選媒體如有 URL,置於此 + </text> + <button label="選擇…" name="add_media" tool_tip="添加媒體"/> + <button label="移除" name="delete_media" tool_tip="刪除這個媒體材質"/> + <button label="對齊" label_selected="對齊媒體" name="button align" tool_tip="對齊媒體材質(須先載入)"/> + <text name="tex gen"> + 映射方式 + </text> + <combo_box name="combobox texgen"> + <combo_box.item label="預設" name="Default"/> + <combo_box.item label="平面" name="Planar"/> + </combo_box> + <spinner label="水平刻度" name="TexScaleU"/> + <spinner label="垂直刻度" name="TexScaleV"/> + <spinner label="每公尺重覆次數" name="rptctrl"/> + <spinner label="旋轉角度" name="TexRot"/> + <spinner label="水平偏距" name="TexOffsetU"/> + <spinner label="垂直偏距" name="TexOffsetV"/> + <spinner label="水平刻度" name="bumpyScaleU"/> + <spinner label="垂直刻度" name="bumpyScaleV"/> + <spinner label="旋轉角度" name="bumpyRot"/> + <spinner label="水平偏距" name="bumpyOffsetU"/> + <spinner label="垂直偏距" name="bumpyOffsetV"/> + <spinner label="水平刻度" name="shinyScaleU"/> + <spinner label="垂直刻度" name="shinyScaleV"/> + <spinner label="旋轉角度" name="shinyRot"/> + <spinner label="水平偏距" name="shinyOffsetU"/> + <spinner label="垂直偏距" name="shinyOffsetV"/> + <check_box initial_value="false" label="對齊平面" name="checkbox planar align" tool_tip="以最後所選擇的面為基準,對齊全部所選擇的面上的材質。 這必須使用平面材質映射方式。"/> +</panel> diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml index 767bcecde7..9587981444 100755 --- a/indra/newview/skins/default/xui/zh/role_actions.xml +++ b/indra/newview/skins/default/xui/zh/role_actions.xml @@ -25,7 +25,7 @@ </action_set> <action_set description="這些能力包括可更改地段名稱和發佈設定、設定是否公開到搜尋結果、設定登陸地點和瞬間傳送繞路選項。" name="Parcel Identity"> <action description="切換「將地點顯示在搜尋結果」設定,並選定類別" longdescription="切換「將地點顯示在搜尋結果」設定,並在「土地資料」> 選項頁籤設定地段類別。" name="land find places" value="17"/> - <action description="更改地段名稱、描述,和「將地點顯示在搜尋結果」設定。" longdescription="更改地段名稱、描述,和「將地點顯示在搜尋結果」設定。 這可在「土地資料」> 選項頁籤完成。" name="land change identity" value="18"/> + <action description="更改地段名稱、描述、「適度成人內容」設定" longdescription="更改地段名稱、描述、「適度成人內容」設定。 這可在「土地資料」> 選項頁籤完成。" name="land change identity" value="18"/> <action description="設定登陸地點和瞬間傳送繞路設定。" longdescription="在群組所有的地段上,身負具此能力的成員,可以設定人們瞬間傳送進來時的登陸地點,和瞬間傳送的繞路選項。 這可在「土地資料」> 選項頁籤完成。" name="land set landing point" value="19"/> </action_set> <action_set description="這些能力包括有權更改地段選項,例如「新建物件」、「編輯地形」,和音樂、媒體設定等。" name="Parcel Settings"> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index 31713ac281..d9fa105ef4 100755 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -139,6 +139,9 @@ <string name="create_account_url"> http://join.secondlife.com/?sourceid=[sourceid] </string> + <string name="ViewerDownloadURL"> + http://secondlife.com/download + </string> <string name="LoginFailedViewerNotPermitted"> 你目前所用的 Viewer 已經無法再進入第二人生。 請到這個頁面下載最新 Viewer: http://secondlife.com/download @@ -443,6 +446,9 @@ http://secondlife.com/viewer-access-faq <string name="SLappAgentRequestFriend"> 交友要求 </string> + <string name="SLappAgentRemoveFriend"> + 移除朋友 + </string> <string name="BUTTON_CLOSE_DARWIN"> 關閉(⌘W) </string> @@ -830,6 +836,9 @@ http://secondlife.com/viewer-access-faq <string name="multiple_textures"> 多個 </string> + <string name="use_texture"> + 使用材質 + </string> <string name="texture_loading"> 載入中... </string> @@ -929,6 +938,21 @@ http://secondlife.com/viewer-access-faq <string name="TeleportYourAgent"> 瞬間傳送你本人 </string> + <string name="JoinAnExperience"> + 加入體驗 + </string> + <string name="SilentlyManageEstateAccess"> + 管理領出入許可名單時,不顯示警示 + </string> + <string name="OverrideYourAnimations"> + 替換你預設的動作 + </string> + <string name="ScriptReturnObjects"> + 為你送返物件 + </string> + <string name="UnknownScriptPermission"> + (未知)! + </string> <string name="SIM_ACCESS_PG"> 一般普級 </string> @@ -1960,6 +1984,12 @@ http://secondlife.com/viewer-access-faq <string name="ATTACH_HUD_BOTTOM_RIGHT"> 擡頭顯示右下 </string> + <string name="ATTACH_NECK"> + 頸部 + </string> + <string name="ATTACH_AVATAR_CENTER"> + 化身中心 + </string> <string name="CursorPos"> 橫行 [LINE],縱列 [COLUMN] </string> @@ -2989,6 +3019,9 @@ http://secondlife.com/viewer-access-faq <string name="Hip Width"> 腰寬 </string> + <string name="Hover"> + 停懸 + </string> <string name="In"> 向內 </string> @@ -5085,4 +5118,7 @@ http://secondlife.com/viewer-access-faq <string name="logging_calls_enabled_log_empty"> 目前沒有交談記錄。 在你聯絡某人或某人聯絡你之後,這裡將留存記錄。 </string> + <string name="loading_chat_logs"> + 載入中… + </string> </strings> |