From 5e2b781e7886c3238645b5fcff9017ed960396e9 Mon Sep 17 00:00:00 2001 From: Twisted_Laws <none@none> Date: Thu, 14 Apr 2011 08:11:06 -0400 Subject: STORM-1103 Nearby sidebar minimap should be optional --- indra/newview/app_settings/settings.xml | 11 +++++ .../xui/en/menu_people_nearby_view_sort.xml | 8 ++++ .../newview/skins/default/xui/en/panel_people.xml | 51 ++++++++++++---------- 3 files changed, 48 insertions(+), 22 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d98f0da1c2..ebddb2d73a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9177,6 +9177,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>NearbyListShowMap</key> + <map> + <key>Comment</key> + <string>Show/hide map in nearby list</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>NearbyListShowIcons</key> <map> <key>Comment</key> diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml index f9db64b524..65bd2793b6 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml @@ -42,6 +42,14 @@ function="CheckControl" parameter="NearbyListShowIcons" /> </menu_item_check> + <menu_item_check name ="view_map" label="View Map"> + <menu_item_check.on_check + function="CheckControl" + parameter="NearbyListShowMap" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="NearbyListShowMap" /> + </menu_item_check> <menu_item_separator layout="topleft" /> <menu_item_call name="show_blocked_list" label="Show Blocked Residents & Objects"> <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" /> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 1a00416b2a..1869eec476 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -99,28 +99,35 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M name="nearby_panel" top="0" width="313"> - <net_map - bg_color="NetMapBackgroundColor" - follows="top|left|right" - layout="topleft" - left="3" - mouse_opaque="false" - name="Net Map" - width="305" - height="140" - top="5"/> - <avatar_list - allow_select="true" - follows="top|left|bottom|right" - height="211" - ignore_online_status="true" - layout="topleft" - left="3" - multi_select="true" - name="avatar_list" - top="145" - width="306" /> - <panel + <layout_stack orientation="vertical" clip="false" follows="all" layout="topleft" top="0" left="0" height="355" width="313" mouse_opaque="false"> + <layout_panel layout="topleft" top="0" left="0" height="142" width="313" user_resize="false" mouse_opaque="false" visibility_control="NearbyListShowMap"> + <net_map + bg_color="NetMapBackgroundColor" + follows="all" + layout="topleft" + left="3" + mouse_opaque="false" + name="Net Map" + width="305" + height="140" + top="4"/> + </layout_panel> + <layout_panel layout="topleft" height="213" min_height="100" width="313" user_resize="false" mouse_opaque="false"> + <avatar_list + allow_select="true" + follows="all" + height="211" + ignore_online_status="true" + layout="topleft" + left="3" + multi_select="true" + keep_one_selected="false" + name="avatar_list" + top="2" + width="306" /> + </layout_panel> + </layout_stack> + <panel background_visible="true" follows="left|right|bottom" height="27" -- cgit v1.2.3 From c3e4fd975cd6ce7af9521143d469ec9f017d47dd Mon Sep 17 00:00:00 2001 From: Twisted_Laws <none@none> Date: Fri, 15 Apr 2011 14:32:56 -0400 Subject: STORM-1103 Nearby sidebar minimap should be optional, changes from review --- indra/newview/app_settings/settings.xml | 2 +- .../newview/skins/default/xui/en/panel_people.xml | 79 ++++++++++++++-------- 2 files changed, 50 insertions(+), 31 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index ebddb2d73a..bb4f2664cd 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9180,7 +9180,7 @@ <key>NearbyListShowMap</key> <map> <key>Comment</key> - <string>Show/hide map in nearby list</string> + <string>Show/hide map above nearby people list</string> <key>Persist</key> <integer>1</integer> <key>Type</key> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 1869eec476..775805ad2e 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -87,7 +87,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M width="319"> <panel background_opaque="true" - background_visible="true" + background_visible="true" bg_alpha_color="DkGray" bg_opaque_color="DkGray" follows="all" @@ -99,35 +99,54 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M name="nearby_panel" top="0" width="313"> - <layout_stack orientation="vertical" clip="false" follows="all" layout="topleft" top="0" left="0" height="355" width="313" mouse_opaque="false"> - <layout_panel layout="topleft" top="0" left="0" height="142" width="313" user_resize="false" mouse_opaque="false" visibility_control="NearbyListShowMap"> - <net_map - bg_color="NetMapBackgroundColor" - follows="all" - layout="topleft" - left="3" - mouse_opaque="false" - name="Net Map" - width="305" - height="140" - top="4"/> - </layout_panel> - <layout_panel layout="topleft" height="213" min_height="100" width="313" user_resize="false" mouse_opaque="false"> - <avatar_list - allow_select="true" - follows="all" - height="211" - ignore_online_status="true" - layout="topleft" - left="3" - multi_select="true" - keep_one_selected="false" - name="avatar_list" - top="2" - width="306" /> - </layout_panel> - </layout_stack> - <panel + <layout_stack + clip="false" + follows="all" + height="355" + layout="topleft" + mouse_opaque="false" + orientation="vertical" + width="313"> + <layout_panel + height="142" + layout="topleft" + mouse_opaque="false" + user_resize="false" + visibility_control="NearbyListShowMap" + width="313"> + <net_map + bg_color="NetMapBackgroundColor" + follows="all" + height="140" + layout="topleft" + left="3" + mouse_opaque="false" + name="Net Map" + top="4" + width="305"/> + </layout_panel> + <layout_panel + height="213" + layout="topleft" + min_height="100" + mouse_opaque="false" + user_resize="false" + width="313"> + <avatar_list + allow_select="true" + follows="all" + height="211" + ignore_online_status="true" + layout="topleft" + left="3" + keep_one_selected="false" + multi_select="true" + name="avatar_list" + top="2" + width="306" /> + </layout_panel> + </layout_stack> + <panel background_visible="true" follows="left|right|bottom" height="27" -- cgit v1.2.3 From 9cb31845bafe9188d9f90dc1330355c73fb96851 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 4 May 2011 20:45:14 -0500 Subject: SH-1497 Update mesh asset parser to use new format restrictions. --- indra/newview/llmeshrepository.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index dd2ffdf7f1..013fc43f99 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -772,8 +772,8 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id) if (header_size > 0) { - S32 offset = header_size + mMeshHeader[mesh_id]["decomposition"]["offset"].asInteger(); - S32 size = mMeshHeader[mesh_id]["decomposition"]["size"].asInteger(); + S32 offset = header_size + mMeshHeader[mesh_id]["physics_convex"]["offset"].asInteger(); + S32 size = mMeshHeader[mesh_id]["physics_convex"]["size"].asInteger(); mHeaderMutex->unlock(); @@ -844,8 +844,8 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id) if (header_size > 0) { - S32 offset = header_size + mMeshHeader[mesh_id]["physics_shape"]["offset"].asInteger(); - S32 size = mMeshHeader[mesh_id]["physics_shape"]["size"].asInteger(); + S32 offset = header_size + mMeshHeader[mesh_id]["physics_mesh"]["offset"].asInteger(); + S32 size = mMeshHeader[mesh_id]["physics_mesh"]["size"].asInteger(); mHeaderMutex->unlock(); @@ -1927,7 +1927,7 @@ void LLMeshHeaderResponder::completedRaw(U32 status, const std::string& reason, //just in case skin info or decomposition is at the end of the file (which it shouldn't be) lod_bytes = llmax(lod_bytes, header["skin"]["offset"].asInteger() + header["skin"]["size"].asInteger()); - lod_bytes = llmax(lod_bytes, header["decomposition"]["offset"].asInteger() + header["decomposition"]["size"].asInteger()); + lod_bytes = llmax(lod_bytes, header["physics_convex"]["offset"].asInteger() + header["physics_convex"]["size"].asInteger()); S32 header_bytes = (S32) gMeshRepo.mThread->mMeshHeaderSize[mesh_id]; S32 bytes = lod_bytes + header_bytes; @@ -2543,7 +2543,7 @@ void LLMeshRepository::buildHull(const LLVolumeParams& params, S32 detail) bool LLMeshRepository::hasPhysicsShape(const LLUUID& mesh_id) { LLSD mesh = mThread->getMeshHeader(mesh_id); - return mesh.has("physics_shape") && mesh["physics_shape"].has("size") && (mesh["physics_shape"]["size"].asInteger() > 0); + return mesh.has("physics_mesh") && mesh["physics_mesh"].has("size") && (mesh["physics_mesh"]["size"].asInteger() > 0); } LLSD& LLMeshRepository::getMeshHeader(const LLUUID& mesh_id) -- cgit v1.2.3 From 51bb3c15c8ac6c85ed1a7e8526ba6b60794ac29e Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 19 May 2011 20:38:39 -0500 Subject: SH-469 WIP -- get rid of LLMultiSampleBuffer and use GL_ARB_texture_multisample instead. --- .../shaders/class1/deferred/blurLightMSF.glsl | 102 +++++++ .../shaders/class1/deferred/cloudsF.glsl | 79 +++++ .../shaders/class1/deferred/cloudsV.glsl | 165 +++++++++++ .../shaders/class1/deferred/pointLightMSF.glsl | 100 +++++++ .../shaders/class1/deferred/postDeferredMSF.glsl | 133 +++++++++ .../class1/deferred/postDeferredNoDoFMSF.glsl | 36 +++ .../app_settings/shaders/class1/deferred/skyF.glsl | 44 +++ .../app_settings/shaders/class1/deferred/skyV.glsl | 140 +++++++++ .../shaders/class1/deferred/softenLightMSF.glsl | 318 +++++++++++++++++++++ .../shaders/class1/deferred/sunLightMSF.glsl | 17 ++ .../shaders/class1/deferred/sunLightSSAOMSF.glsl | 125 ++++++++ .../shaders/class2/deferred/edgeMSF.glsl | 74 +++++ .../shaders/class2/deferred/softenLightMSF.glsl | 307 ++++++++++++++++++++ indra/newview/lldrawpoolwlsky.cpp | 88 ++++-- indra/newview/lldrawpoolwlsky.h | 8 +- indra/newview/llviewerdisplay.cpp | 2 +- indra/newview/llviewershadermgr.cpp | 114 +++++++- indra/newview/llviewershadermgr.h | 2 + indra/newview/pipeline.cpp | 85 ++---- indra/newview/pipeline.h | 1 - 20 files changed, 1849 insertions(+), 91 deletions(-) create mode 100644 indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/skyF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/skyV.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl new file mode 100644 index 0000000000..113197c871 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl @@ -0,0 +1,102 @@ +/** + * @file blurLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2DMS lightMap; + +uniform float dist_factor; +uniform float blur_size; +uniform vec2 delta; +uniform vec3 kern[4]; +uniform float kern_scale; + +varying vec2 vary_fragcoord; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 texture2DMS(sampler2DMS tex, ivec2 tc) +{ + vec4 ret = vec4(0,0,0,0); + for (int i = 0; i < 4; i++) + { + ret += texelFetch(tex, tc, i); + } + + return ret * 0.25; +} + +vec4 getPosition(ivec2 pos_screen) +{ + float depth = texture2DMS(depthMap, pos_screen.xy).r; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec2 tc = vary_fragcoord.xy; + ivec2 itc = ivec2(tc); + + vec3 norm = texture2DMS(normalMap, itc).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + vec3 pos = getPosition(itc).xyz; + vec4 ccol = texture2DMS(lightMap, itc).rgba; + + vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy); + dlt /= max(-pos.z*dist_factor, 1.0); + + vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free' + vec4 col = defined_weight.xyxx * ccol; + + // relax tolerance according to distance to avoid speckling artifacts, as angles and distances are a lot more abrupt within a small screen area at larger distances + float pointplanedist_tolerance_pow2 = pos.z*pos.z*0.00005; + + // perturb sampling origin slightly in screen-space to hide edge-ghosting artifacts where smoothing radius is quite large + tc += ( (mod(tc.x+tc.y,2) - 0.5) * kern[1].z * dlt * 0.5 ); + + for (int i = 1; i < 4; i++) + { + ivec2 samptc = ivec2(tc + kern[i].z*dlt); + vec3 samppos = getPosition(samptc).xyz; + float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane + if (d*d <= pointplanedist_tolerance_pow2) + { + col += texture2DMS(lightMap, samptc)*kern[i].xyxx; + defined_weight += kern[i].xy; + } + } + for (int i = 1; i < 4; i++) + { + ivec2 samptc = ivec2(tc - kern[i].z*dlt); + vec3 samppos = getPosition(samptc).xyz; + float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane + if (d*d <= pointplanedist_tolerance_pow2) + { + col += texture2DMS(lightMap, samptc)*kern[i].xyxx; + defined_weight += kern[i].xy; + } + } + + col /= defined_weight.xyxx; + col.y *= col.y; + + gl_FragColor = col; +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl new file mode 100644 index 0000000000..9e551fa976 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl @@ -0,0 +1,79 @@ +/** + * @file WLCloudsF.glsl + * + * $LicenseInfo:firstyear=2005&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +///////////////////////////////////////////////////////////////////////// +// The fragment shader for the sky +///////////////////////////////////////////////////////////////////////// + +varying vec4 vary_CloudColorSun; +varying vec4 vary_CloudColorAmbient; +varying float vary_CloudDensity; + +uniform sampler2D cloud_noise_texture; +uniform vec4 cloud_pos_density1; +uniform vec4 cloud_pos_density2; +uniform vec4 gamma; + +/// Soft clips the light with a gamma correction +vec3 scaleSoftClip(vec3 light) { + //soft clip effect: + light = 1. - clamp(light, vec3(0.), vec3(1.)); + light = 1. - pow(light, gamma.xxx); + + return light; +} + +void main() +{ + // Set variables + vec2 uv1 = gl_TexCoord[0].xy; + vec2 uv2 = gl_TexCoord[1].xy; + + vec4 cloudColorSun = vary_CloudColorSun; + vec4 cloudColorAmbient = vary_CloudColorAmbient; + float cloudDensity = vary_CloudDensity; + vec2 uv3 = gl_TexCoord[2].xy; + vec2 uv4 = gl_TexCoord[3].xy; + + // Offset texture coords + uv1 += cloud_pos_density1.xy; //large texture, visible density + uv2 += cloud_pos_density1.xy; //large texture, self shadow + uv3 += cloud_pos_density2.xy; //small texture, visible density + uv4 += cloud_pos_density2.xy; //small texture, self shadow + + + // Compute alpha1, the main cloud opacity + float alpha1 = (texture2D(cloud_noise_texture, uv1).x - 0.5) + (texture2D(cloud_noise_texture, uv3).x - 0.5) * cloud_pos_density2.z; + alpha1 = min(max(alpha1 + cloudDensity, 0.) * 10. * cloud_pos_density1.z, 1.); + + // And smooth + alpha1 = 1. - alpha1 * alpha1; + alpha1 = 1. - alpha1 * alpha1; + + + // Compute alpha2, for self shadowing effect + // (1 - alpha2) will later be used as percentage of incoming sunlight + float alpha2 = (texture2D(cloud_noise_texture, uv2).x - 0.5); + alpha2 = min(max(alpha2 + cloudDensity, 0.) * 2.5 * cloud_pos_density1.z, 1.); + + // And smooth + alpha2 = 1. - alpha2; + alpha2 = 1. - alpha2 * alpha2; + + // Combine + vec4 color; + color = (cloudColorSun*(1.-alpha2) + cloudColorAmbient); + color *= 2.; + + /// Gamma correct for WL (soft clip effect). + gl_FragData[0] = vec4(scaleSoftClip(color.rgb), alpha1); + gl_FragData[1] = vec4(0.0,0.0,0.0,0.0); + gl_FragData[2] = vec4(0,0,1,0); +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl new file mode 100644 index 0000000000..267ef36d4d --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl @@ -0,0 +1,165 @@ +/** + * @file WLCloudsV.glsl + * + * $LicenseInfo:firstyear=2005&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +////////////////////////////////////////////////////////////////////////// +// The vertex shader for creating the atmospheric sky +/////////////////////////////////////////////////////////////////////////////// + +// Output parameters +varying vec4 vary_CloudColorSun; +varying vec4 vary_CloudColorAmbient; +varying float vary_CloudDensity; + +// Inputs +uniform vec3 camPosLocal; + +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform vec4 haze_horizon; +uniform vec4 haze_density; + +uniform vec4 cloud_shadow; +uniform vec4 density_multiplier; +uniform vec4 max_y; + +uniform vec4 glow; + +uniform vec4 cloud_color; + +uniform vec4 cloud_scale; + +void main() +{ + + // World / view / projection + gl_Position = ftransform(); + + gl_TexCoord[0] = gl_MultiTexCoord0; + + // Get relative position + vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0); + + // Set altitude + if (P.y > 0.) + { + P *= (max_y.x / P.y); + } + else + { + P *= (-32000. / P.y); + } + + // Can normalize then + vec3 Pn = normalize(P); + float Plen = length(P); + + // Initialize temp variables + vec4 temp1 = vec4(0.); + vec4 temp2 = vec4(0.); + vec4 blue_weight; + vec4 haze_weight; + vec4 sunlight = sunlight_color; + vec4 light_atten; + + + // Sunlight attenuation effect (hue and brightness) due to atmosphere + // this is used later for sunlight modulation at various altitudes + light_atten = (blue_density * 1.0 + haze_density.x * 0.25) * (density_multiplier.x * max_y.x); + + // Calculate relative weights + temp1 = blue_density + haze_density.x; + blue_weight = blue_density / temp1; + haze_weight = haze_density.x / temp1; + + // Compute sunlight from P & lightnorm (for long rays like sky) + temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y ); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // Distance + temp2.z = Plen * density_multiplier.x; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z); + + + // Compute haze glow + temp2.x = dot(Pn, lightnorm.xyz); + temp2.x = 1. - temp2.x; + // temp2.x is 0 at the sun and increases away from sun + temp2.x = max(temp2.x, .001); + // 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; + tmpAmbient += (1. - tmpAmbient) * cloud_shadow.x * 0.5; + + // Dim sunlight by cloud shadow percentage + sunlight *= (1. - cloud_shadow.x); + + // Haze color below cloud + vec4 additiveColorBelowCloud = ( blue_horizon * blue_weight * (sunlight + tmpAmbient) + + (haze_horizon.r * haze_weight) * (sunlight * temp2.x + tmpAmbient) + ); + + // CLOUDS + + sunlight = sunlight_color; + temp2.y = max(0., lightnorm.y * 2.); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // Cloud color out + vary_CloudColorSun = (sunlight * temp2.x) * cloud_color; + vary_CloudColorAmbient = tmpAmbient * cloud_color; + + // Attenuate cloud color by atmosphere + temp1 = sqrt(temp1); //less atmos opacity (more transparency) below clouds + vary_CloudColorSun *= temp1; + vary_CloudColorAmbient *= temp1; + vec4 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - temp1); + + // Make a nice cloud density based on the cloud_shadow value that was passed in. + vary_CloudDensity = 2. * (cloud_shadow.x - 0.25); + + + // Texture coords + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_TexCoord[0].xy -= 0.5; + gl_TexCoord[0].xy /= cloud_scale.x; + gl_TexCoord[0].xy += 0.5; + + gl_TexCoord[1] = gl_TexCoord[0]; + gl_TexCoord[1].x += lightnorm.x * 0.0125; + gl_TexCoord[1].y += lightnorm.z * 0.0125; + + gl_TexCoord[2] = gl_TexCoord[0] * 16.; + gl_TexCoord[3] = gl_TexCoord[1] * 16.; + + // Combine these to minimize register use + vary_CloudColorAmbient += oHazeColorBelowCloud; + + // needs this to compile on mac + //vary_AtmosAttenuation = vec3(0.0,0.0,0.0); + + // END CLOUDS +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl new file mode 100644 index 0000000000..22ed9dcd40 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl @@ -0,0 +1,100 @@ +/** + * @file pointLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + #version 120 + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect diffuseRect; +uniform sampler2DRect specularRect; +uniform sampler2DRect normalMap; +uniform samplerCube environmentMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2DRect depthMap; + +uniform vec3 env_mat[3]; +uniform float sun_wash; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; +uniform vec4 viewport; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = (pos_screen.xy-viewport.xy)*2.0; + sc /= viewport.zw; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + + vec3 pos = getPosition(frag.xy).xyz; + vec3 lv = vary_light.xyz-pos; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 > 1.0) + { + discard; + } + + vec3 norm = texture2DRect(normalMap, frag.xy).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + float da = dot(norm, lv); + if (da < 0.0) + { + discard; + } + + norm = normalize(norm); + lv = normalize(lv); + da = dot(norm, lv); + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + + vec3 col = texture2DRect(diffuseRect, frag.xy).rgb; + float fa = gl_Color.a+1.0; + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + float lit = da * dist_atten * noise; + + col = gl_Color.rgb*lit*col; + + vec4 spec = texture2DRect(specularRect, frag.xy); + if (spec.a > 0.0) + { + float sa = dot(normalize(lv-normalize(pos)),norm); + if (sa > 0.0) + { + sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*gl_Color.rgb*spec.rgb; + } + } + + if (dot(col, col) <= 0.0) + { + discard; + } + + gl_FragColor.rgb = col; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl new file mode 100644 index 0000000000..a34f882c39 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl @@ -0,0 +1,133 @@ +/** + * @file postDeferredF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS edgeMap; +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2D bloomMap; + +uniform float depth_cutoff; +uniform float norm_cutoff; +uniform float focal_distance; +uniform float blur_constant; +uniform float tan_pixel_angle; +uniform float magnification; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +varying vec2 vary_fragcoord; + +vec4 texture2DMS(sampler2DMS tex, ivec2 tc) +{ + vec4 ret = vec4(0,0,0,0); + for (int i = 0; i < 4; ++i) + { + ret += texelFetch(tex, tc, i); + } + + return ret * 0.25; +} + +float getDepth(ivec2 pos_screen) +{ + float z = texture2DMS(depthMap, pos_screen.xy).r; + z = z*2.0-1.0; + vec4 ndc = vec4(0.0, 0.0, z, 1.0); + vec4 p = inv_proj*ndc; + return p.z/p.w; +} + +float calc_cof(float depth) +{ + float sc = abs(depth-focal_distance)/-depth*blur_constant; + + sc /= magnification; + + // tan_pixel_angle = pixel_length/-depth; + float pixel_length = tan_pixel_angle*-focal_distance; + + sc = sc/pixel_length; + sc *= 1.414; + + return sc; +} + +void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ivec2 tc) +{ + float d = getDepth(tc); + + float sc = calc_cof(d); + + if (sc > min_sc //sampled pixel is more "out of focus" than current sample radius + || d < cur_depth) //sampled pixel is further away than current pixel + { + float wg = 0.25; + + vec4 s = texture2DMS(diffuseRect, tc); + // de-weight dull areas to make highlights 'pop' + wg += s.r+s.g+s.b; + + diff += wg*s; + + w += wg; + } +} + + +void main() +{ + ivec2 itc = ivec2(vary_fragcoord.xy); + + vec3 norm = texture2DMS(normalMap, itc).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + + float depth = getDepth(itc); + + vec4 diff = texture2DMS(diffuseRect, itc); + + { + float w = 1.0; + + float sc = calc_cof(depth); + sc = min(abs(sc), 10.0); + + float fd = depth*0.5f; + + float PI = 3.14159265358979323846264; + + int isc = int(sc); + + // sample quite uniformly spaced points within a circle, for a circular 'bokeh' + //if (depth < focal_distance) + { + for (int x = -isc; x <= isc; x+=2) + { + for (int y = -isc; y <= isc; y+=2) + { + ivec2 cur_samp = ivec2(x,y); + float cur_sc = length(vec2(cur_samp)); + if (cur_sc < sc) + { + dofSample(diff, w, cur_sc, depth, itc+cur_samp); + } + } + } + } + + diff /= w; + } + + vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res); + gl_FragColor = diff + bloom; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl new file mode 100644 index 0000000000..7b14974f8b --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl @@ -0,0 +1,36 @@ +/** + * @file postDeferredF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2D bloomMap; + +uniform vec2 screen_res; +varying vec2 vary_fragcoord; + +vec4 texture2DMS(sampler2DMS tex, ivec2 tc) +{ + vec4 ret = texelFetch(tex,tc,0); + ret += texelFetch(tex,tc,1); + ret += texelFetch(tex,tc,2); + ret += texelFetch(tex,tc,3); + ret *= 0.25; + + return ret; +} + +void main() +{ + vec4 diff = texture2DMS(diffuseRect, ivec2(vary_fragcoord.xy)); + + vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res); + gl_FragColor = diff + bloom; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl new file mode 100644 index 0000000000..91143943b6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl @@ -0,0 +1,44 @@ +/** + * @file WLSkyF.glsl + * + * $LicenseInfo:firstyear=2005&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +///////////////////////////////////////////////////////////////////////// +// The fragment shader for the sky +///////////////////////////////////////////////////////////////////////// + +varying vec4 vary_HazeColor; + +uniform sampler2D cloud_noise_texture; +uniform vec4 gamma; + +/// Soft clips the light with a gamma correction +vec3 scaleSoftClip(vec3 light) { + //soft clip effect: + light = 1. - clamp(light, vec3(0.), vec3(1.)); + light = 1. - pow(light, gamma.xxx); + + return light; +} + +void main() +{ + // Potential Fill-rate optimization. Add cloud calculation + // back in and output alpha of 0 (so that alpha culling kills + // the fragment) if the sky wouldn't show up because the clouds + // are fully opaque. + + vec4 color; + color = vary_HazeColor; + color *= 2.; + + /// Gamma correct for WL (soft clip effect). + gl_FragData[0] = vec4(scaleSoftClip(color.rgb), 1.0); + gl_FragData[1] = vec4(0.0,0.0,0.0,0.0); + gl_FragData[2] = vec4(0,0,1,0); +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl new file mode 100644 index 0000000000..03bca8f27e --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl @@ -0,0 +1,140 @@ +/** + * @file WLSkyV.glsl + * + * $LicenseInfo:firstyear=2005&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +// SKY //////////////////////////////////////////////////////////////////////// +// The vertex shader for creating the atmospheric sky +/////////////////////////////////////////////////////////////////////////////// + +// Output parameters +varying vec4 vary_HazeColor; + +// Inputs +uniform vec3 camPosLocal; + +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform vec4 haze_horizon; +uniform vec4 haze_density; + +uniform vec4 cloud_shadow; +uniform vec4 density_multiplier; +uniform vec4 max_y; + +uniform vec4 glow; + +uniform vec4 cloud_color; + +uniform vec4 cloud_scale; + +void main() +{ + + // World / view / projection + gl_Position = ftransform(); + gl_TexCoord[0] = gl_MultiTexCoord0; + + // Get relative position + vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0); + //vec3 P = gl_Vertex.xyz + vec3(0,50,0); + + // Set altitude + if (P.y > 0.) + { + P *= (max_y.x / P.y); + } + else + { + P *= (-32000. / P.y); + } + + // Can normalize then + vec3 Pn = normalize(P); + float Plen = length(P); + + // Initialize temp variables + vec4 temp1 = vec4(0.); + vec4 temp2 = vec4(0.); + vec4 blue_weight; + vec4 haze_weight; + vec4 sunlight = sunlight_color; + vec4 light_atten; + + + // Sunlight attenuation effect (hue and brightness) due to atmosphere + // this is used later for sunlight modulation at various altitudes + light_atten = (blue_density * 1.0 + haze_density.x * 0.25) * (density_multiplier.x * max_y.x); + + // Calculate relative weights + temp1 = blue_density + haze_density.x; + blue_weight = blue_density / temp1; + haze_weight = haze_density.x / temp1; + + // Compute sunlight from P & lightnorm (for long rays like sky) + temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y ); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // Distance + temp2.z = Plen * density_multiplier.x; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z); + + + // Compute haze glow + temp2.x = dot(Pn, lightnorm.xyz); + temp2.x = 1. - temp2.x; + // temp2.x is 0 at the sun and increases away from sun + temp2.x = max(temp2.x, .001); + // 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; + + + // Haze color above cloud + vary_HazeColor = ( blue_horizon * blue_weight * (sunlight + ambient) + + (haze_horizon.r * haze_weight) * (sunlight * temp2.x + ambient) + ); + + + // Increase ambient when there are more clouds + vec4 tmpAmbient = ambient; + tmpAmbient += (1. - tmpAmbient) * cloud_shadow.x * 0.5; + + // Dim sunlight by cloud shadow percentage + sunlight *= (1. - cloud_shadow.x); + + // Haze color below cloud + vec4 additiveColorBelowCloud = ( blue_horizon * blue_weight * (sunlight + tmpAmbient) + + (haze_horizon.r * haze_weight) * (sunlight * temp2.x + tmpAmbient) + ); + + // Final atmosphere additive + vary_HazeColor *= (1. - temp1); + + // Attenuate cloud color by atmosphere + temp1 = sqrt(temp1); //less atmos opacity (more transparency) below clouds + + // At horizon, blend high altitude sky color towards the darker color below the clouds + vary_HazeColor += (additiveColorBelowCloud - vary_HazeColor) * (1. - sqrt(temp1)); + + // won't compile on mac without this being set + //vary_AtmosAttenuation = vec3(0.0,0.0,0.0); +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl new file mode 100644 index 0000000000..4c38d91499 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl @@ -0,0 +1,318 @@ +/** + * @file softenLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS normalMap; +uniform sampler2DMS depthMap; +uniform sampler2D noiseMap; +uniform samplerCube environmentMap; +uniform sampler2D lightFunc; + +uniform float blur_size; +uniform float blur_fidelity; + +// Inputs +uniform vec4 morphFactor; +uniform vec3 camPosLocal; +//uniform vec4 camPosWorld; +uniform vec4 gamma; +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform vec4 haze_horizon; +uniform vec4 haze_density; +uniform vec4 cloud_shadow; +uniform vec4 density_multiplier; +uniform vec4 distance_multiplier; +uniform vec4 max_y; +uniform vec4 glow; +uniform float scene_light_strength; +uniform vec3 env_mat[3]; +//uniform mat4 shadow_matrix[3]; +//uniform vec4 shadow_clip; +uniform mat3 ssao_effect_mat; + +varying vec4 vary_light; +varying vec2 vary_fragcoord; + +vec3 vary_PositionEye; + +vec3 vary_SunlitColor; +vec3 vary_AmblitColor; +vec3 vary_AdditiveColor; +vec3 vary_AtmosAttenuation; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +vec4 getPosition_d(vec2 pos_screen, float depth) +{ + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +vec3 getPositionEye() +{ + return vary_PositionEye; +} +vec3 getSunlitColor() +{ + return vary_SunlitColor; +} +vec3 getAmblitColor() +{ + return vary_AmblitColor; +} +vec3 getAdditiveColor() +{ + return vary_AdditiveColor; +} +vec3 getAtmosAttenuation() +{ + return vary_AtmosAttenuation; +} + + +void setPositionEye(vec3 v) +{ + vary_PositionEye = v; +} + +void setSunlitColor(vec3 v) +{ + vary_SunlitColor = v; +} + +void setAmblitColor(vec3 v) +{ + vary_AmblitColor = v; +} + +void setAdditiveColor(vec3 v) +{ + vary_AdditiveColor = v; +} + +void setAtmosAttenuation(vec3 v) +{ + vary_AtmosAttenuation = v; +} + +void calcAtmospherics(vec3 inPositionEye, float ambFactor) { + + vec3 P = inPositionEye; + setPositionEye(P); + + //(TERRAIN) limit altitude + if (P.y > max_y.x) P *= (max_y.x / P.y); + if (P.y < -max_y.x) P *= (-max_y.x / P.y); + + vec3 tmpLightnorm = lightnorm.xyz; + + vec3 Pn = normalize(P); + float Plen = length(P); + + vec4 temp1 = vec4(0); + vec3 temp2 = vec3(0); + vec4 blue_weight; + vec4 haze_weight; + vec4 sunlight = sunlight_color; + vec4 light_atten; + + //sunlight attenuation effect (hue and brightness) due to atmosphere + //this is used later for sunlight modulation at various altitudes + light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); + //I had thought blue_density and haze_density should have equal weighting, + //but attenuation due to haze_density tends to seem too strong + + temp1 = blue_density + vec4(haze_density.r); + blue_weight = blue_density / temp1; + haze_weight = vec4(haze_density.r) / temp1; + + //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain) + temp2.y = max(0.0, tmpLightnorm.y); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // main atmospheric scattering line integral + temp2.z = Plen * density_multiplier.x; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); + + //final atmosphere attenuation factor + setAtmosAttenuation(temp1.rgb); + + //compute haze glow + //(can use temp2.x as temp because we haven't used it yet) + temp2.x = dot(Pn, tmpLightnorm.xyz); + temp2.x = 1. - temp2.x; + //temp2.x is 0 at the sun and increases away from sun + temp2.x = max(temp2.x, .03); //was glow.y + //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot) + temp2.x *= glow.x; + //higher glow.x gives dimmer glow (because next step is 1 / "angle") + temp2.x = pow(temp2.x, glow.z); + //glow.z should be negative, so we're doing a sort of (1 / "angle") function + + //add "minimum anti-solar illumination" + temp2.x += .25; + + //increase ambient when there are more clouds + vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; + + /* decrease value and saturation (that in HSV, not HSL) for occluded areas + * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html + * // The following line of code performs the equivalent of: + * float ambAlpha = tmpAmbient.a; + * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis + * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue); + * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha); + */ + tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); + + //haze color + setAdditiveColor( + vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) + + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x + + tmpAmbient))); + + //brightness of surface both sunlight and ambient + setSunlitColor(vec3(sunlight * .5)); + setAmblitColor(vec3(tmpAmbient * .25)); + setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1)); +} + +vec3 atmosLighting(vec3 light) +{ + light *= getAtmosAttenuation().r; + light += getAdditiveColor(); + return (2.0 * light); +} + +vec3 atmosTransport(vec3 light) { + light *= getAtmosAttenuation().r; + light += getAdditiveColor() * 2.0; + return light; +} +vec3 atmosGetDiffuseSunlightColor() +{ + return getSunlitColor(); +} + +vec3 scaleDownLight(vec3 light) +{ + return (light / scene_light_strength ); +} + +vec3 scaleUpLight(vec3 light) +{ + return (light * scene_light_strength); +} + +vec3 atmosAmbient(vec3 light) +{ + return getAmblitColor() + light / 2.0; +} + +vec3 atmosAffectDirectionalLight(float lightIntensity) +{ + return getSunlitColor() * lightIntensity; +} + +vec3 scaleSoftClip(vec3 light) +{ + //soft clip effect: + light = 1. - clamp(light, vec3(0.), vec3(1.)); + light = 1. - pow(light, gamma.xxx); + + return light; +} + +vec4 texture2DMS(sampler2DMS tex, ivec2 tc) +{ + vec4 ret = texelFetch(tex,tc,0); + ret += texelFetch(tex,tc,1); + ret += texelFetch(tex,tc,2); + ret += texelFetch(tex,tc,3); + ret *= 0.25; + + return ret; +} + +void main() +{ + int samples = 4; + vec2 tc = vary_fragcoord.xy; + ivec2 itc = ivec2(tc); + + vec3 fcol = vec3(0,0,0); + + for (int i = 0; i < samples; ++i) + { + float depth = texelFetch(depthMap, itc, i).r; + vec3 pos = getPosition_d(tc, depth).xyz; + vec3 norm = texelFetch(normalMap, itc, i).xyz; + + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + //vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz; + + float da = max(dot(norm.xyz, vary_light.xyz), 0.0); + + vec4 diffuse = texelFetch(diffuseRect, itc, i); + if (diffuse.a >= 1.0) + { + fcol += diffuse.rgb; + } + else + { + vec4 spec = texelFetch(specularRect, itc, i); + + calcAtmospherics(pos.xyz, 1.0); + + vec3 col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a)); + + col *= diffuse.rgb; + + if (spec.a > 0.0) // specular reflection + { + // the old infinite-sky shiny reflection + // + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(refnormpersp, vary_light.xyz); + vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a; + + // add the two types of shiny together + col += dumbshiny * spec.rgb; + } + + col = atmosLighting(col); + col = scaleSoftClip(col); + fcol += col; + } + } + + gl_FragColor.rgb = fcol.rgb/samples; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl new file mode 100644 index 0000000000..00093836a2 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl @@ -0,0 +1,17 @@ +/** + * @file sunLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +//class 1, no shadow, no SSAO, should never be called + +#extension GL_ARB_texture_rectangle : enable + +void main() +{ + gl_FragColor = vec4(0,0,0,0); +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl new file mode 100644 index 0000000000..49b45dedd6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl @@ -0,0 +1,125 @@ +/** + * @file sunLightSSAOF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +//class 1 -- no shadow, SSAO only + +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2D noiseMap; + + +// Inputs +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform float ssao_radius; +uniform float ssao_max_radius; +uniform float ssao_factor; +uniform float ssao_factor_inv; + +varying vec2 vary_fragcoord; +varying vec4 vary_light; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +uniform float shadow_bias; +uniform float shadow_offset; + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +//calculate decreases in ambient lighting when crowded out (SSAO) +float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample) +{ + float ret = 1.0; + + vec2 kern[8]; + // exponentially (^2) distant occlusion samples spread around origin + kern[0] = vec2(-1.0, 0.0) * 0.125*0.125; + kern[1] = vec2(1.0, 0.0) * 0.250*0.250; + kern[2] = vec2(0.0, 1.0) * 0.375*0.375; + kern[3] = vec2(0.0, -1.0) * 0.500*0.500; + kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625; + kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750; + kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875; + kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000; + + vec2 pos_screen = vary_fragcoord.xy; + vec3 pos_world = pos.xyz; + vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy; + + float angle_hidden = 0.0; + int points = 0; + + float scale = min(ssao_radius / -pos_world.z, ssao_max_radius); + + // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations unrolling?) + for (int i = 0; i < 8; i++) + { + ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect)); + vec3 samppos_world = getPosition(samppos_screen, sample).xyz; + + vec3 diff = pos_world - samppos_world; + float dist2 = dot(diff, diff); + + // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area + // --> solid angle shrinking by the square of distance + //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2 + //(k should vary inversely with # of samples, but this is taken care of later) + + angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv); + + // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion" + points = points + int(diff.z > -1.0); + } + + angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0); + + ret = (1.0 - (float(points != 0) * angle_hidden)); + + return min(ret, 1.0); +} + +void main() +{ + int samples = 4; + + vec2 pos_screen = vary_fragcoord.xy; + ivec2 itc = ivec2(pos_screen); + + float col = 0; + + for (int i = 0; i < samples; i++) + { + vec4 pos = getPosition(itc, i); + vec3 norm = texelFetch(normalMap, itc, i).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + col += calcAmbientOcclusion(pos,norm,i); + } + + col /= samples; + + gl_FragColor[0] = 1.0; + gl_FragColor[1] = col; + gl_FragColor[2] = 1.0; + gl_FragColor[3] = 1.0; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl new file mode 100644 index 0000000000..a47ee678f6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl @@ -0,0 +1,74 @@ +/** + * @file edgeF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; + +varying vec2 vary_fragcoord; + +uniform float depth_cutoff; +uniform float norm_cutoff; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +float getDepth(float z) +{ + z = z*2.0-1.0; + vec4 ndc = vec4(0.0, 0.0, z, 1.0); + vec4 p = inv_proj*ndc; + return p.z/p.w; +} + +void main() +{ + + float e = 0; + + ivec2 itc = ivec2(vary_fragcoord.xy); + + for (int i = 0; i < samples; i++) + { + vec3 norm = texelFetch(normalMap, itc, i).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + float depth = getDepth(texelFetch(depthMap, itc, i).r); + + vec2 tc = vary_fragcoord.xy; + + float sc = 0.75; + + vec2 de; + de.x = (depth-getDepth(tc+vec2(sc, sc))) + (depth-getDepth(tc+vec2(-sc, -sc))); + de.y = (depth-getDepth(tc+vec2(-sc, sc))) + (depth-getDepth(tc+vec2(sc, -sc))); + de /= depth; + de *= de; + de = step(depth_cutoff, de); + + vec2 ne; + vec3 nexnorm = texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb; + nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm + ne.x = dot(nexnorm, norm); + vec3 neynorm = texture2DRect(normalMap, tc+vec2(sc,sc)).rgb; + neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm + ne.y = dot(neynorm, norm); + + ne = 1.0-ne; + + ne = step(norm_cutoff, ne); + + e += dot(de,de)+dot(ne,ne); + } + + e /= samples; + + gl_FragColor.a = e; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl new file mode 100644 index 0000000000..7d4548d6d9 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl @@ -0,0 +1,307 @@ +/** + * @file softenLightMSF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS normalMap; +uniform sampler2DMS lightMap; +uniform sampler2DMS depthMap; +uniform sampler2D noiseMap; +uniform samplerCube environmentMap; +uniform sampler2D lightFunc; +uniform vec3 gi_quad; + +uniform float blur_size; +uniform float blur_fidelity; + +// Inputs +uniform vec4 morphFactor; +uniform vec3 camPosLocal; +//uniform vec4 camPosWorld; +uniform vec4 gamma; +uniform vec4 lightnorm; +uniform vec4 sunlight_color; +uniform vec4 ambient; +uniform vec4 blue_horizon; +uniform vec4 blue_density; +uniform vec4 haze_horizon; +uniform vec4 haze_density; +uniform vec4 cloud_shadow; +uniform vec4 density_multiplier; +uniform vec4 distance_multiplier; +uniform vec4 max_y; +uniform vec4 glow; +uniform float scene_light_strength; +uniform vec3 env_mat[3]; +uniform vec4 shadow_clip; +uniform mat3 ssao_effect_mat; + +uniform mat4 inv_proj; +uniform vec2 screen_res; + +varying vec4 vary_light; +varying vec2 vary_fragcoord; + +vec3 vary_PositionEye; + +vec3 vary_SunlitColor; +vec3 vary_AmblitColor; +vec3 vary_AdditiveColor; +vec3 vary_AtmosAttenuation; + +vec4 getPosition_d(vec2 pos_screen, float depth) +{ + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +vec3 getPositionEye() +{ + return vary_PositionEye; +} +vec3 getSunlitColor() +{ + return vary_SunlitColor; +} +vec3 getAmblitColor() +{ + return vary_AmblitColor; +} +vec3 getAdditiveColor() +{ + return vary_AdditiveColor; +} +vec3 getAtmosAttenuation() +{ + return vary_AtmosAttenuation; +} + + +void setPositionEye(vec3 v) +{ + vary_PositionEye = v; +} + +void setSunlitColor(vec3 v) +{ + vary_SunlitColor = v; +} + +void setAmblitColor(vec3 v) +{ + vary_AmblitColor = v; +} + +void setAdditiveColor(vec3 v) +{ + vary_AdditiveColor = v; +} + +void setAtmosAttenuation(vec3 v) +{ + vary_AtmosAttenuation = v; +} + +void calcAtmospherics(vec3 inPositionEye, float ambFactor) { + + vec3 P = inPositionEye; + setPositionEye(P); + + //(TERRAIN) limit altitude + if (P.y > max_y.x) P *= (max_y.x / P.y); + if (P.y < -max_y.x) P *= (-max_y.x / P.y); + + vec3 tmpLightnorm = lightnorm.xyz; + + vec3 Pn = normalize(P); + float Plen = length(P); + + vec4 temp1 = vec4(0); + vec3 temp2 = vec3(0); + vec4 blue_weight; + vec4 haze_weight; + vec4 sunlight = sunlight_color; + vec4 light_atten; + + //sunlight attenuation effect (hue and brightness) due to atmosphere + //this is used later for sunlight modulation at various altitudes + light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); + //I had thought blue_density and haze_density should have equal weighting, + //but attenuation due to haze_density tends to seem too strong + + temp1 = blue_density + vec4(haze_density.r); + blue_weight = blue_density / temp1; + haze_weight = vec4(haze_density.r) / temp1; + + //(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain) + temp2.y = max(0.0, tmpLightnorm.y); + temp2.y = 1. / temp2.y; + sunlight *= exp( - light_atten * temp2.y); + + // main atmospheric scattering line integral + temp2.z = Plen * density_multiplier.x; + + // Transparency (-> temp1) + // ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati + // compiler gets confused. + temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); + + //final atmosphere attenuation factor + setAtmosAttenuation(temp1.rgb); + + //compute haze glow + //(can use temp2.x as temp because we haven't used it yet) + temp2.x = dot(Pn, tmpLightnorm.xyz); + temp2.x = 1. - temp2.x; + //temp2.x is 0 at the sun and increases away from sun + temp2.x = max(temp2.x, .03); //was glow.y + //set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot) + temp2.x *= glow.x; + //higher glow.x gives dimmer glow (because next step is 1 / "angle") + temp2.x = pow(temp2.x, glow.z); + //glow.z should be negative, so we're doing a sort of (1 / "angle") function + + //add "minimum anti-solar illumination" + temp2.x += .25; + + //increase ambient when there are more clouds + vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; + + /* decrease value and saturation (that in HSV, not HSL) for occluded areas + * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html + * // The following line of code performs the equivalent of: + * float ambAlpha = tmpAmbient.a; + * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis + * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue); + * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha); + */ + tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a); + + //haze color + setAdditiveColor( + vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) + + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x + + tmpAmbient))); + + //brightness of surface both sunlight and ambient + setSunlitColor(vec3(sunlight * .5)); + setAmblitColor(vec3(tmpAmbient * .25)); + setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1)); +} + +vec3 atmosLighting(vec3 light) +{ + light *= getAtmosAttenuation().r; + light += getAdditiveColor(); + return (2.0 * light); +} + +vec3 atmosTransport(vec3 light) { + light *= getAtmosAttenuation().r; + light += getAdditiveColor() * 2.0; + return light; +} +vec3 atmosGetDiffuseSunlightColor() +{ + return getSunlitColor(); +} + +vec3 scaleDownLight(vec3 light) +{ + return (light / scene_light_strength ); +} + +vec3 scaleUpLight(vec3 light) +{ + return (light * scene_light_strength); +} + +vec3 atmosAmbient(vec3 light) +{ + return getAmblitColor() + light / 2.0; +} + +vec3 atmosAffectDirectionalLight(float lightIntensity) +{ + return getSunlitColor() * lightIntensity; +} + +vec3 scaleSoftClip(vec3 light) +{ + //soft clip effect: + light = 1. - clamp(light, vec3(0.), vec3(1.)); + light = 1. - pow(light, gamma.xxx); + + return light; +} + +void main() +{ + int samples = 4; + vec2 tc = vary_fragcoord.xy; + ivec2 itc = ivec2(tc); + + vec3 fcol = vec3(0,0,0); + + float amb = 0; + + for (int i = 0; i < samples; ++i) + { + float depth = texelFetch(depthMap, itc.xy, i).r; + vec3 pos = getPosition_d(tc, depth).xyz; + vec3 norm = texelFetch(normalMap, itc, i).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + + float da = max(dot(norm.xyz, vary_light.xyz), 0.0); + + vec4 diffuse = texelFetch(diffuseRect, itc, i); + vec4 spec = texelFetch(specularRect, itc, i); + + vec2 scol_ambocc = texelFetch(lightMap, itc, i).rg; + float scol = max(scol_ambocc.r, diffuse.a); + float ambocc = scol_ambocc.g; + amb += ambocc; + + calcAtmospherics(pos.xyz, ambocc); + + vec3 col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); + + col *= diffuse.rgb; + + if (spec.a > 0.0) // specular reflection + { + // the old infinite-sky shiny reflection + // + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(refnormpersp, vary_light.xyz); + vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; + + // add the two types of shiny together + col += dumbshiny * spec.rgb; + } + + col = atmosLighting(col); + col = scaleSoftClip(col); + + fcol += col; + } + + gl_FragColor.rgb = fcol/samples; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 696c2d1abd..66b834ab11 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -44,6 +44,8 @@ LLPointer<LLViewerTexture> LLDrawPoolWLSky::sCloudNoiseTexture = NULL; LLPointer<LLImageRaw> LLDrawPoolWLSky::sCloudNoiseRawImage = NULL; +static LLGLSLShader* cloud_shader = NULL; +static LLGLSLShader* sky_shader = NULL; LLDrawPoolWLSky::LLDrawPoolWLSky(void) : @@ -83,12 +85,32 @@ LLViewerTexture *LLDrawPoolWLSky::getDebugTexture() void LLDrawPoolWLSky::beginRenderPass( S32 pass ) { + sky_shader = + LLPipeline::sUnderWaterRender ? + &gObjectSimpleWaterProgram : + &gWLSkyProgram; + + cloud_shader = + LLPipeline::sUnderWaterRender ? + &gObjectSimpleWaterProgram : + &gWLCloudProgram; } void LLDrawPoolWLSky::endRenderPass( S32 pass ) { } +void LLDrawPoolWLSky::beginDeferredPass(S32 pass) +{ + sky_shader = &gDeferredWLSkyProgram; + cloud_shader = &gDeferredWLCloudProgram; +} + +void LLDrawPoolWLSky::endDeferredPass(S32 pass) +{ + +} + void LLDrawPoolWLSky::renderDome(F32 camHeightLocal, LLGLSLShader * shader) const { LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin(); @@ -128,19 +150,14 @@ void LLDrawPoolWLSky::renderSkyHaze(F32 camHeightLocal) const { if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_SKY)) { - LLGLSLShader* shader = - LLPipeline::sUnderWaterRender ? - &gObjectSimpleWaterProgram : - &gWLSkyProgram; - LLGLDisable blend(GL_BLEND); - shader->bind(); + sky_shader->bind(); /// Render the skydome - renderDome(camHeightLocal, shader); + renderDome(camHeightLocal, sky_shader); - shader->unbind(); + sky_shader->unbind(); } } @@ -186,23 +203,18 @@ void LLDrawPoolWLSky::renderSkyClouds(F32 camHeightLocal) const { if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS)) { - LLGLSLShader* shader = - LLPipeline::sUnderWaterRender ? - &gObjectSimpleWaterProgram : - &gWLCloudProgram; - LLGLEnable blend(GL_BLEND); gGL.setSceneBlendType(LLRender::BT_ALPHA); gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); gGL.getTexUnit(0)->bind(sCloudNoiseTexture); - shader->bind(); + cloud_shader->bind(); /// Render the skydome - renderDome(camHeightLocal, shader); + renderDome(camHeightLocal, cloud_shader); - shader->unbind(); + cloud_shader->unbind(); } } @@ -246,6 +258,50 @@ void LLDrawPoolWLSky::renderHeavenlyBodies() } } +void LLDrawPoolWLSky::renderDeferred(S32 pass) +{ + if (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_SKY)) + { + return; + } + LLFastTimer ftm(FTM_RENDER_WL_SKY); + + const F32 camHeightLocal = LLWLParamManager::instance()->getDomeOffset() * LLWLParamManager::instance()->getDomeRadius(); + + LLGLSNoFog disableFog; + LLGLDepthTest depth(GL_TRUE, GL_FALSE); + LLGLDisable clip(GL_CLIP_PLANE0); + + gGL.setColorMask(true, false); + + LLGLSquashToFarClip far_clip(glh_get_current_projection()); + + renderSkyHaze(camHeightLocal); + + /*LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin(); + glPushMatrix(); + + glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); + + // *NOTE: have to bind a texture here since register combiners blending in + // renderStars() requires something to be bound and we might as well only + // bind the moon's texture once. + gGL.getTexUnit(0)->bind(gSky.mVOSkyp->mFace[LLVOSky::FACE_MOON]->getTexture()); + + renderHeavenlyBodies(); + + renderStars(); + + + glPopMatrix();*/ + + renderSkyClouds(camHeightLocal); + + gGL.setColorMask(true, true); + //gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + +} + void LLDrawPoolWLSky::render(S32 pass) { if (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_SKY)) diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h index 8ca1ebb942..cd15c991ee 100644 --- a/indra/newview/lldrawpoolwlsky.h +++ b/indra/newview/lldrawpoolwlsky.h @@ -44,10 +44,10 @@ public: /*virtual*/ BOOL isDead() { return FALSE; } - /*virtual*/ S32 getNumPostDeferredPasses() { return getNumPasses(); } - /*virtual*/ void beginPostDeferredPass(S32 pass) { beginRenderPass(pass); } - /*virtual*/ void endPostDeferredPass(S32 pass) { endRenderPass(pass); } - /*virtual*/ void renderPostDeferred(S32 pass) { render(pass); } + /*virtual*/ S32 getNumDeferredPasses() { return 1; } + /*virtual*/ void beginDeferredPass(S32 pass); + /*virtual*/ void endDeferredPass(S32 pass); + /*virtual*/ void renderDeferred(S32 pass); /*virtual*/ LLViewerTexture *getDebugTexture(); /*virtual*/ void beginRenderPass( S32 pass ); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index e41773d273..10e96525ce 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -836,7 +836,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if (LLPipeline::sRenderDeferred && !LLPipeline::sUnderWaterRender) { gPipeline.mDeferredScreen.bindTarget(); - glClearColor(0,0,0,0); + glClearColor(1,0,1,1); gPipeline.mDeferredScreen.clear(); } else diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 3e85802ba6..84fb1eb5d0 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -138,7 +138,8 @@ LLGLSLShader gDeferredGIFinalProgram; LLGLSLShader gDeferredPostGIProgram; LLGLSLShader gDeferredPostProgram; LLGLSLShader gDeferredPostNoDoFProgram; - +LLGLSLShader gDeferredWLSkyProgram; +LLGLSLShader gDeferredWLCloudProgram; LLGLSLShader gLuminanceGatherProgram; @@ -190,6 +191,8 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gDeferredGIFinalProgram); mShaderList.push_back(&gDeferredWaterProgram); mShaderList.push_back(&gDeferredAvatarAlphaProgram); + mShaderList.push_back(&gDeferredWLSkyProgram); + mShaderList.push_back(&gDeferredWLCloudProgram); } LLViewerShaderMgr::~LLViewerShaderMgr() @@ -952,6 +955,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredGIProgram.unload(); gDeferredGIFinalProgram.unload(); gDeferredWaterProgram.unload(); + gDeferredWLSkyProgram.unload(); + gDeferredWLCloudProgram.unload(); return TRUE; } @@ -959,6 +964,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() BOOL success = TRUE; + bool multisample = gSavedSettings.getU32("RenderFSAASamples") > 0 && gGLManager.mHasTextureMultisample; + if (success) { gDeferredDiffuseProgram.mName = "Deferred Diffuse Shader"; @@ -1083,11 +1090,25 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (gSavedSettings.getBOOL("RenderDeferredSSAO")) { - fragment = "deferred/sunLightSSAOF.glsl"; + if (multisample) + { + fragment = "deferred/sunlightSSAOMSF.glsl"; + } + else + { + fragment = "deferred/sunLightSSAOF.glsl"; + } } else { - fragment = "deferred/sunLightF.glsl"; + if (multisample) + { + fragment = "deferred/sunlightMSF.glsl"; + } + else + { + fragment = "deferred/sunLightF.glsl"; + } } gDeferredSunProgram.mName = "Deferred Sun Shader"; @@ -1100,10 +1121,21 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + std::string fragment; + + if (multisample) + { + fragment = "deferred/blurLightMSF.glsl"; + } + else + { + fragment = "deferred/blurLightF.glsl"; + } + gDeferredBlurLightProgram.mName = "Deferred Blur Light Shader"; gDeferredBlurLightProgram.mShaderFiles.clear(); gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredBlurLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredBlurLightProgram.createShader(NULL, NULL); } @@ -1153,10 +1185,21 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + std::string fragment; + + if (multisample) + { + fragment = "deferred/softenLightMSF.glsl"; + } + else + { + fragment = "deferred/softenLightF.glsl"; + } + gDeferredSoftenProgram.mName = "Deferred Soften Shader"; gDeferredSoftenProgram.mShaderFiles.clear(); gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredSoftenProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredSoftenProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; @@ -1239,32 +1282,85 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + std::string fragment; + if (multisample) + { + fragment = "deferred/postDeferredMSF.glsl"; + } + else + { + fragment = "deferred/postDeferredF.glsl"; + } + gDeferredPostProgram.mName = "Deferred Post Shader"; gDeferredPostProgram.mShaderFiles.clear(); gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredPostProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredPostProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredPostProgram.createShader(NULL, NULL); } if (success) { + std::string fragment; + if (multisample) + { + fragment = "deferred/postDeferredNoDoFMSF.glsl"; + } + else + { + fragment = "deferred/postDeferredNoDoFF.glsl"; + } + gDeferredPostNoDoFProgram.mName = "Deferred Post Shader"; gDeferredPostNoDoFProgram.mShaderFiles.clear(); gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDoFF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredPostNoDoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredPostNoDoFProgram.createShader(NULL, NULL); } + if (success) + { + gDeferredWLSkyProgram.mName = "Deferred Windlight Sky Shader"; + //gWLSkyProgram.mFeatures.hasGamma = true; + gDeferredWLSkyProgram.mShaderFiles.clear(); + gDeferredWLSkyProgram.mShaderFiles.push_back(make_pair("deferred/skyV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredWLSkyProgram.mShaderFiles.push_back(make_pair("deferred/skyF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredWLSkyProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredWLSkyProgram.mShaderGroup = LLGLSLShader::SG_SKY; + success = gDeferredWLSkyProgram.createShader(NULL, &mWLUniforms); + } + + if (success) + { + gDeferredWLCloudProgram.mName = "Deferred Windlight Cloud Program"; + gDeferredWLCloudProgram.mShaderFiles.clear(); + gDeferredWLCloudProgram.mShaderFiles.push_back(make_pair("deferred/cloudsV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredWLCloudProgram.mShaderFiles.push_back(make_pair("deferred/cloudsF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredWLCloudProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredWLCloudProgram.mShaderGroup = LLGLSLShader::SG_SKY; + success = gDeferredWLCloudProgram.createShader(NULL, &mWLUniforms); + } + if (mVertexShaderLevel[SHADER_DEFERRED] > 1) { if (success) { + std::string fragment; + if (multisample) + { + fragment = "deferred/edgeMSF.glsl"; + } + else + { + fragment = "deferred/edgeF.glsl"; + } + gDeferredEdgeProgram.mName = "Deferred Edge Shader"; gDeferredEdgeProgram.mShaderFiles.clear(); gDeferredEdgeProgram.mShaderFiles.push_back(make_pair("deferred/edgeV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredEdgeProgram.mShaderFiles.push_back(make_pair("deferred/edgeF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredEdgeProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredEdgeProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredEdgeProgram.createShader(NULL, NULL); } @@ -1272,8 +1368,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (mVertexShaderLevel[SHADER_DEFERRED] > 2) { - - if (success) { gDeferredPostGIProgram.mName = "Deferred Post GI Shader"; diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index 72ac5e02ee..b13775742b 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -374,6 +374,8 @@ extern LLGLSLShader gDeferredAttachmentShadowProgram; extern LLGLSLShader gDeferredAlphaProgram; extern LLGLSLShader gDeferredFullbrightProgram; extern LLGLSLShader gDeferredAvatarAlphaProgram; +extern LLGLSLShader gDeferredWLSkyProgram; +extern LLGLSLShader gDeferredWLCloudProgram; extern LLGLSLShader gLuminanceGatherProgram; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index f64eb89866..964836ff90 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -580,11 +580,6 @@ void LLPipeline::allocatePhysicsBuffer() if (mPhysicsDisplay.getWidth() != resX || mPhysicsDisplay.getHeight() != resY) { mPhysicsDisplay.allocate(resX, resY, GL_RGBA, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); - if (mSampleBuffer.getWidth() == mPhysicsDisplay.getWidth() && - mSampleBuffer.getHeight() == mPhysicsDisplay.getHeight()) - { - mPhysicsDisplay.setSampleBuffer(&mSampleBuffer); - } } } @@ -621,16 +616,16 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) bool gi = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED); //allocate deferred rendering color buffers - mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE); - mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); + mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); addDeferredAttachments(mDeferredScreen); - mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); if (shadow_detail > 0 || ssao) { //only need mDeferredLight[0] for shadows OR ssao - mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); + mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); } else { @@ -639,7 +634,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (ssao) { //only need mDeferredLight[1] for ssao - mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); + mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false, samples); } else { @@ -648,7 +643,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (gi) { //only need mDeferredLight[2] and mGIMapPost for gi - mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); + mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false); for (U32 i = 0; i < 2; i++) { mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); @@ -729,25 +724,6 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE); } - if (LLRenderTarget::sUseFBO && samples > 1) - { - mSampleBuffer.allocate(resX,resY,GL_RGBA,TRUE,TRUE,LLTexUnit::TT_RECT_TEXTURE,FALSE,samples); - if (LLPipeline::sRenderDeferred) - { - addDeferredAttachments(mSampleBuffer); - mDeferredScreen.setSampleBuffer(&mSampleBuffer); - mEdgeMap.setSampleBuffer(&mSampleBuffer); - } - - mScreen.setSampleBuffer(&mSampleBuffer); - - stop_glerror(); - } - else - { - mSampleBuffer.release(); - } - if (LLPipeline::sRenderDeferred) { //share depth buffer between deferred targets mDeferredScreen.shareDepthBuffer(mScreen); @@ -826,7 +802,6 @@ void LLPipeline::releaseGLBuffers() mScreen.release(); mPhysicsDisplay.release(); mUIScreen.release(); - mSampleBuffer.release(); mDeferredScreen.release(); mDeferredDepth.release(); for (U32 i = 0; i < 3; i++) @@ -6420,11 +6395,10 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) shader->uniform1f("magnification", magnification); } - S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, LLTexUnit::TT_RECT_TEXTURE); + S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage()); if (channel > -1) { mScreen.bindTexture(0, channel); - gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); } //channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, LLTexUnit::TT_RECT_TEXTURE); //if (channel > -1) @@ -6567,21 +6541,21 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen shader.bind(); S32 channel = 0; - channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, LLTexUnit::TT_RECT_TEXTURE); + channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage()); if (channel > -1) { mDeferredScreen.bindTexture(0,channel); gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT); } - channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, LLTexUnit::TT_RECT_TEXTURE); + channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage()); if (channel > -1) { mDeferredScreen.bindTexture(1, channel); gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT); } - channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, LLTexUnit::TT_RECT_TEXTURE); + channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage()); if (channel > -1) { mDeferredScreen.bindTexture(2, channel); @@ -6704,22 +6678,16 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen shader.uniformMatrix4fv("gi_norm_mat", 1, FALSE, mGINormalMatrix.m); } } - - /*channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_POSITION, LLTexUnit::TT_RECT_TEXTURE); - if (channel > -1) - { - mDeferredScreen.bindTexture(3, channel); - }*/ + stop_glerror(); - channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, LLTexUnit::TT_RECT_TEXTURE); + channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, mDeferredDepth.getUsage()); if (channel > -1) { gGL.getTexUnit(channel)->bind(&mDeferredDepth, TRUE); - gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT); stop_glerror(); - glTexParameteri(LLTexUnit::getInternalType(mDeferredDepth.getUsage()), GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE); - glTexParameteri(LLTexUnit::getInternalType(mDeferredDepth.getUsage()), GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA); + //glTexParameteri(LLTexUnit::getInternalType(mDeferredDepth.getUsage()), GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE); + //glTexParameteri(LLTexUnit::getInternalType(mDeferredDepth.getUsage()), GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA); stop_glerror(); @@ -6748,7 +6716,7 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen stop_glerror(); - channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, LLTexUnit::TT_RECT_TEXTURE); + channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, mDeferredLight[light_index].getUsage()); if (channel > -1) { mDeferredLight[light_index].bindTexture(0, channel); @@ -6968,9 +6936,9 @@ void LLPipeline::renderDeferredLighting() } //ati doesn't seem to love actually using the stencil buffer on FBO's - LLGLEnable stencil(GL_STENCIL_TEST); - glStencilFunc(GL_EQUAL, 1, 0xFFFFFFFF); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + LLGLDisable stencil(GL_STENCIL_TEST); + //glStencilFunc(GL_EQUAL, 1, 0xFFFFFFFF); + //glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); gGL.setColorMask(true, true); @@ -7789,16 +7757,15 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep) void LLPipeline::unbindDeferredShader(LLGLSLShader &shader) { stop_glerror(); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_POSITION, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, LLTexUnit::TT_RECT_TEXTURE); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage()); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage()); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage()); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, mDeferredScreen.getUsage()); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, mDeferredLight[0].getUsage()); shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LIGHT, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_EDGE, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_SUN_LIGHT, LLTexUnit::TT_RECT_TEXTURE); - shader.disableTexture(LLViewerShaderMgr::DEFERRED_LOCAL_LIGHT, LLTexUnit::TT_RECT_TEXTURE); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_EDGE, mEdgeMap.getUsage()); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_SUN_LIGHT, mDeferredLight[1].getUsage()); + shader.disableTexture(LLViewerShaderMgr::DEFERRED_LOCAL_LIGHT, mDeferredLight[2].getUsage()); shader.disableTexture(LLViewerShaderMgr::DEFERRED_LUMINANCE); shader.disableTexture(LLViewerShaderMgr::DIFFUSE_MAP); shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MIP); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index e9a250cd6d..ed4a803e7e 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -524,7 +524,6 @@ public: LLRenderTarget mEdgeMap; LLRenderTarget mDeferredDepth; LLRenderTarget mDeferredLight[3]; - LLMultisampleBuffer mSampleBuffer; LLRenderTarget mGIMap; LLRenderTarget mGIMapPost[2]; LLRenderTarget mLuminanceMap; -- cgit v1.2.3 From f15b6396ecf1a14802cd4977986af2bec30c76b5 Mon Sep 17 00:00:00 2001 From: prep linden <prep@lindenlab.com> Date: Fri, 20 May 2011 15:45:09 -0400 Subject: Added NewAccountingEnabled cap --- indra/newview/llviewerregion.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 590c82856d..fb608b3a4f 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1508,6 +1508,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("LandResources"); capabilityNames.append("MapLayer"); capabilityNames.append("MapLayerGod"); + capabilityNames.append("NewAccountingEnabled"); capabilityNames.append("NewFileAgentInventory"); capabilityNames.append("NewFileAgentInventoryVariablePrice"); capabilityNames.append("ObjectAdd"); @@ -1546,9 +1547,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("ViewerStartAuction"); capabilityNames.append("ViewerStats"); //prep# Finalize these!!!!!!!!! - //capabilityNames.append("AccountingVO"); capabilityNames.append("AccountingParcel"); - capabilityNames.append("AccountingRegion"); + capabilityNames.append("AccountingSelection"); // Please add new capabilities alphabetically to reduce // merge conflicts. -- cgit v1.2.3 From 0e99a8b2c5646ba2a3243de210cfcc7944b28719 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Fri, 20 May 2011 15:52:33 -0400 Subject: SH-1492 WIP --- indra/newview/llinventorymodel.cpp | 2 + indra/newview/llmeshrepository.cpp | 80 +++++++++++++++++++++++++++++--------- 2 files changed, 63 insertions(+), 19 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index b5180854ef..318beafe65 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -632,10 +632,12 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) } // We're hiding mesh types +#if 0 if (item->getType() == LLAssetType::AT_MESH) { return mask; } +#endif LLViewerInventoryItem* old_item = getItem(item->getUUID()); LLPointer<LLViewerInventoryItem> new_item; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index d9a58d56fe..7fee7e0e3e 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -498,18 +498,29 @@ public: //assert_main_thread(); llinfos << "completed" << llendl; mThread->mPendingUploads--; - dumpLLSDToFile(content,"whole_model_response.xml"); + dumpLLSDToFile(content,"whole_model_fee_response.xml"); + if (isGoodStatus(status)) + { + mThread->mWholeModelUploadURL = content["uploader"].asString(); + } + else + { + llinfos << "upload failed" << llendl; + mThread->mWholeModelUploadURL = ""; + } - mThread->mWholeModelUploadURL = content["uploader"].asString(); } }; class LLWholeModelUploadResponder: public LLCurl::Responder { LLMeshUploadThread* mThread; + LLSD mPostData; + public: - LLWholeModelUploadResponder(LLMeshUploadThread* thread): - mThread(thread) + LLWholeModelUploadResponder(LLMeshUploadThread* thread, LLSD& post_data): + mThread(thread), + mPostData(post_data) { } virtual void completed(U32 status, @@ -520,6 +531,7 @@ public: llinfos << "upload completed" << llendl; mThread->mPendingUploads--; dumpLLSDToFile(content,"whole_model_upload_response.xml"); + gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mPostData,content)); } }; @@ -1404,14 +1416,13 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) result["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT); result["asset_type"] = "mesh"; result["inventory_type"] = "object"; - result["name"] = "your name here"; + result["name"] = "mesh model"; result["description"] = "your description here"; // TODO "optional" fields from the spec res["mesh_list"] = LLSD::emptyArray(); -// TODO Textures - //res["texture_list"] = LLSD::emptyArray(); + res["texture_list"] = LLSD::emptyArray(); S32 mesh_num = 0; S32 texture_num = 0; @@ -1421,8 +1432,15 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLMeshUploadData data; data.mBaseModel = iter->first; - LLModelInstance& instance = *(iter->second.begin()); + LLModel* model = instance.mModel; + + std::string model_name = data.mBaseModel->getName(); + + if (!model_name.empty()) + { + result["name"] = model_name; + } for (S32 i = 0; i < 5; i++) { @@ -1458,11 +1476,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) LLMatrix4 transformation = instance.mTransform; decomposeMeshMatrix(transformation,pos,rot,scale); -#if 0 - mesh_entry["childpos"] = ll_sd_from_vector3(pos); - mesh_entry["childrot"] = ll_sd_from_quaternion(rot); - mesh_entry["scale"] = ll_sd_from_vector3(scale); -#endif mesh_entry["position"] = ll_sd_from_vector3(LLVector3()); mesh_entry["rotation"] = ll_sd_from_quaternion(rot); mesh_entry["scale"] = ll_sd_from_vector3(scale); @@ -1471,14 +1484,19 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) std::string str = ostr.str(); mesh_entry["mesh_data"] = LLSD::Binary(str.begin(),str.end()); - res["mesh_list"][mesh_num] = mesh_entry; // TODO how do textures in the list map to textures in the meshes? if (mUploadTextures) { + mesh_entry["face_list"] = LLSD::emptyArray(); + + S32 face_num = 0; + for (std::vector<LLImportMaterial>::iterator material_iter = instance.mMaterial.begin(); material_iter != instance.mMaterial.end(); ++material_iter) { + LLSD face_entry = LLSD::emptyMap(); + if (textures.find(material_iter->mDiffuseMap.get()) == textures.end()) { @@ -1500,11 +1518,23 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) LLSD texture_entry; texture_entry["texture_data"] = ostr.str(); res["texture_list"][texture_num] = texture_entry; + face_entry["image"] = texture_num; + face_entry["scales"] = 1.0; + face_entry["scalet"] = 1.0; + face_entry["offsets"] = 0.0; + face_entry["offsett"] = 0.0; + face_entry["imagerot"] = 0.0; + texture_num++; } + + mesh_entry["face_list"][face_num] = face_entry; + face_num++; } } + res["mesh_list"][mesh_num] = mesh_entry; + mesh_num++; } @@ -1577,12 +1607,22 @@ void LLMeshUploadThread::doWholeModelUpload() mCurlRequest->process(); } while (mCurlRequest->getQueued() > 0); - mCurlRequest->post(mWholeModelUploadURL, headers, model_data["asset_resources"], new LLWholeModelUploadResponder(this)); - - do + LLSD body = model_data["asset_resources"]; + dumpLLSDToFile(body,"whole_model_body.xml"); + + if (mWholeModelUploadURL.empty()) { - mCurlRequest->process(); - } while (mCurlRequest->getQueued() > 0); + llinfos << "unable to upload, fee request failed" << llendl; + } + else + { + mCurlRequest->post(mWholeModelUploadURL, headers, body, + new LLWholeModelUploadResponder(this, model_data)); + do + { + mCurlRequest->process(); + } while (mCurlRequest->getQueued() > 0); + } delete mCurlRequest; mCurlRequest = NULL; @@ -3243,6 +3283,8 @@ bool LLImportMaterial::operator<(const LLImportMaterial &rhs) const void LLMeshRepository::updateInventory(inventory_data data) { LLMutexLock lock(mMeshMutex); + dumpLLSDToFile(data.mPostData,"update_inventory_post_data.xml"); + dumpLLSDToFile(data.mResponse,"update_inventory_response.xml"); mInventoryQ.push(data); } -- cgit v1.2.3 From 1330881ba1613570a6c07a4afd9eea34af1f4d7d Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Fri, 20 May 2011 18:45:56 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 49 ++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 20 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 7fee7e0e3e..5388bd404a 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1427,6 +1427,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) S32 texture_num = 0; std::set<LLViewerTexture* > textures; + std::map<LLViewerTexture*,S32> texture_index; for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter) { @@ -1484,7 +1485,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) std::string str = ostr.str(); mesh_entry["mesh_data"] = LLSD::Binary(str.begin(),str.end()); - // TODO how do textures in the list map to textures in the meshes? if (mUploadTextures) { @@ -1492,20 +1492,24 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) S32 face_num = 0; - for (std::vector<LLImportMaterial>::iterator material_iter = instance.mMaterial.begin(); - material_iter != instance.mMaterial.end(); ++material_iter) + for (S32 face_num = 0; face_num < model->getNumVolumeFaces(); face_num++) { + LLImportMaterial& material = instance.mMaterial[face_num]; LLSD face_entry = LLSD::emptyMap(); - - - if (textures.find(material_iter->mDiffuseMap.get()) == textures.end()) + + LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); + + if (texture != NULL) { - textures.insert(material_iter->mDiffuseMap.get()); + if (textures.find(texture) == textures.end()) + { + textures.insert(texture); + } std::stringstream ostr; if (include_textures) // otherwise data is blank. { - LLTextureUploadData data(material_iter->mDiffuseMap.get(), material_iter->mDiffuseMapLabel); + LLTextureUploadData data(texture, material.mDiffuseMapLabel); if (!data.mTexture->isRawImageValid()) { data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); @@ -1515,22 +1519,25 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); ostr.write((const char*) upload_file->getData(), upload_file->getDataSize()); } - LLSD texture_entry; - texture_entry["texture_data"] = ostr.str(); - res["texture_list"][texture_num] = texture_entry; - face_entry["image"] = texture_num; + + if (texture_index.find(texture) == texture_index.end()) + { + texture_index[texture] = texture_num; + std::string str = ostr.str(); + res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); + texture_num++; + } + + face_entry["image"] = texture_index[texture]; face_entry["scales"] = 1.0; face_entry["scalet"] = 1.0; face_entry["offsets"] = 0.0; face_entry["offsett"] = 0.0; face_entry["imagerot"] = 0.0; - - texture_num++; } - mesh_entry["face_list"][face_num] = face_entry; - face_num++; } + } res["mesh_list"][mesh_num] = mesh_entry; @@ -1593,9 +1600,9 @@ void LLMeshUploadThread::doWholeModelUpload() apr_sleep(100); } - bool do_include_textures = false; // not needed for initial cost/validation check. LLSD model_data; - wholeModelToLLSD(model_data, do_include_textures); + wholeModelToLLSD(model_data,false); + dumpLLSDToFile(model_data,"whole_model_fee_request.xml"); mPendingUploads++; LLCurlRequest::headers_t headers; @@ -1607,8 +1614,6 @@ void LLMeshUploadThread::doWholeModelUpload() mCurlRequest->process(); } while (mCurlRequest->getQueued() > 0); - LLSD body = model_data["asset_resources"]; - dumpLLSDToFile(body,"whole_model_body.xml"); if (mWholeModelUploadURL.empty()) { @@ -1616,6 +1621,10 @@ void LLMeshUploadThread::doWholeModelUpload() } else { + LLSD full_model_data; + wholeModelToLLSD(full_model_data, true); + LLSD body = full_model_data["asset_resources"]; + dumpLLSDToFile(body,"whole_model_body.xml"); mCurlRequest->post(mWholeModelUploadURL, headers, body, new LLWholeModelUploadResponder(this, model_data)); do -- cgit v1.2.3 From 107ca81b8e9dcb072424673f8b81736cb359a1a0 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 11:22:49 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 5388bd404a..21e4c35f8c 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1477,7 +1477,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) LLMatrix4 transformation = instance.mTransform; decomposeMeshMatrix(transformation,pos,rot,scale); - mesh_entry["position"] = ll_sd_from_vector3(LLVector3()); + mesh_entry["position"] = ll_sd_from_vector3(pos); mesh_entry["rotation"] = ll_sd_from_quaternion(rot); mesh_entry["scale"] = ll_sd_from_vector3(scale); -- cgit v1.2.3 From d348b69d93945e2e0269208c4a229fbe52e9ccf4 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 13:45:02 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 21e4c35f8c..085dc64473 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -531,6 +531,9 @@ public: llinfos << "upload completed" << llendl; mThread->mPendingUploads--; dumpLLSDToFile(content,"whole_model_upload_response.xml"); + // requested "mesh" asset type isn't actually the type + // of the resultant object, fix it up here. + mPostData["asset_type"] = "object"; gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mPostData,content)); } }; @@ -1435,6 +1438,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) data.mBaseModel = iter->first; LLModelInstance& instance = *(iter->second.begin()); LLModel* model = instance.mModel; + LLSD mesh_entry; std::string model_name = data.mBaseModel->getName(); @@ -1448,6 +1452,32 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) data.mModel[i] = instance.mLOD[i]; } +#if 1 + LLVolumeParams volume_params; + volume_params.setType( LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE ); + volume_params.setBeginAndEndS( 0.f, 1.f ); + volume_params.setBeginAndEndT( 0.f, 1.f ); + volume_params.setRatio ( 1, 1 ); + volume_params.setShear ( 0, 0 ); + volume_params.setSculptID(instance.mMeshID, LL_SCULPT_TYPE_MESH); + mesh_entry["shape"] = volume_params.asLLSD(); + mesh_entry["material"] = LL_MCODE_WOOD; + mesh_entry["group-id"] = gAgent.getGroupID(); + LLPermissions perm; + perm.setOwnerAndGroup(gAgent.getID(), gAgent.getID(), LLUUID::null, false); + perm.setCreator(gAgent.getID()); + + perm.initMasks(PERM_ITEM_UNRESTRICTED | PERM_MOVE, //base + PERM_ITEM_UNRESTRICTED | PERM_MOVE, //owner + LLFloaterPerms::getEveryonePerms(), + LLFloaterPerms::getGroupPerms(), + LLFloaterPerms::getNextOwnerPerms()); + + mesh_entry["permissions"] = ll_create_sd_from_permissions(perm); + + mesh_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); +#endif + std::stringstream ostr; LLModel::Decomposition& decomp = @@ -1470,8 +1500,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) data.mAssetData = ostr.str(); - LLSD mesh_entry; - LLVector3 pos, scale; LLQuaternion rot; LLMatrix4 transformation = instance.mTransform; @@ -1546,9 +1574,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) } result["asset_resources"] = res; -#if 1 dumpLLSDToFile(result,"whole_model.xml"); -#endif dest = result; } -- cgit v1.2.3 From 19b93cb8c57ac043ff0c795e931f7863b0aa07a7 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 13:46:55 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 085dc64473..f3b1aa9a1b 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1401,13 +1401,13 @@ void LLMeshUploadThread::run() } } -#if 1 void dumpLLSDToFile(const LLSD& content, std::string filename) { +#if 1 std::ofstream of(filename.c_str()); LLSDSerialize::toPrettyXML(content,of); -} #endif +} void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { @@ -1452,7 +1452,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) data.mModel[i] = instance.mLOD[i]; } -#if 1 LLVolumeParams volume_params; volume_params.setType( LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE ); volume_params.setBeginAndEndS( 0.f, 1.f ); @@ -1472,11 +1471,8 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) LLFloaterPerms::getEveryonePerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getNextOwnerPerms()); - mesh_entry["permissions"] = ll_create_sd_from_permissions(perm); - mesh_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); -#endif std::stringstream ostr; -- cgit v1.2.3 From 8729c4ac2f3fdffa7863dc01b4f51d69f44ddbfd Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 14:47:48 -0400 Subject: Fixing missing newline that's making linux build fail --- indra/newview/llaccountingquotamanager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 indra/newview/llaccountingquotamanager.h (limited to 'indra/newview') diff --git a/indra/newview/llaccountingquotamanager.h b/indra/newview/llaccountingquotamanager.h old mode 100644 new mode 100755 index 4c20561bce..f605d1e6b2 --- a/indra/newview/llaccountingquotamanager.h +++ b/indra/newview/llaccountingquotamanager.h @@ -57,4 +57,4 @@ private: }; //=============================================================================== -#endif \ No newline at end of file +#endif -- cgit v1.2.3 From 7b51aa0ba2a9cffba71e87ad5c19b30bf87904a1 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 14:50:18 -0400 Subject: Another fix for build failure - unused variable warning --- indra/newview/llmeshrepository.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index f3b1aa9a1b..5e006e90a1 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1514,8 +1514,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { mesh_entry["face_list"] = LLSD::emptyArray(); - S32 face_num = 0; - for (S32 face_num = 0; face_num < model->getNumVolumeFaces(); face_num++) { LLImportMaterial& material = instance.mMaterial[face_num]; -- cgit v1.2.3 From 1840a2a6926f6c6121fd7eb283e4a1c5bd817024 Mon Sep 17 00:00:00 2001 From: prep <prep@lindenlab.com> Date: Mon, 23 May 2011 16:55:23 -0400 Subject: Fix for sh-788 --- indra/newview/llvoavatar.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index ec2b5a4c98..dc355362ce 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4968,19 +4968,6 @@ void LLVOAvatar::resetSpecificJointPosition( const std::string& name ) //----------------------------------------------------------------------------- void LLVOAvatar::resetJointPositionsToDefault( void ) { - const LLVector3& avPos = getCharacterPosition(); - - //Reposition the pelvis - LLJoint* pPelvis = mRoot.findJoint("mPelvis"); - if ( pPelvis ) - { - pPelvis->setPosition( avPos + pPelvis->getPosition() ); - } - else - { - llwarns<<"Can't get pelvis joint."<<llendl; - return; - } //Subsequent joints are relative to pelvis for( S32 i = 0; i < (S32)mNumJoints; ++i ) @@ -4991,7 +4978,7 @@ void LLVOAvatar::resetJointPositionsToDefault( void ) pJoint->setId( LLUUID::null ); //restore joints to default positions, however skip over the pelvis - if ( pJoint && pPelvis != pJoint ) + if ( pJoint ) { pJoint->restoreOldXform(); } @@ -6028,6 +6015,14 @@ void LLVOAvatar::cleanupAttachedMesh( LLViewerObject* pVO ) if ( bindCnt > 0 ) { LLVOAvatar::resetJointPositionsToDefault(); + //Need to handle the repositioning of the cam, updating rig data etc during outfit editing + //This handles the case where we detach a replacement rig. + if ( gAgentCamera.cameraCustomizeAvatar() ) + { + gAgent.unpauseAnimation(); + //Still want to refocus on head bone + gAgentCamera.changeCameraToCustomizeAvatar(); + } } } } -- cgit v1.2.3 From 302ec5586d1b3d589af0baeb907d5be2d12407f4 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 17:21:05 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 5e006e90a1..9e0b17280e 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1518,7 +1518,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLImportMaterial& material = instance.mMaterial[face_num]; LLSD face_entry = LLSD::emptyMap(); - LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); if (texture != NULL) @@ -1549,14 +1548,20 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); texture_num++; } + } + // Subset of TextureEntry fields. + if (texture) + { face_entry["image"] = texture_index[texture]; - face_entry["scales"] = 1.0; - face_entry["scalet"] = 1.0; - face_entry["offsets"] = 0.0; - face_entry["offsett"] = 0.0; - face_entry["imagerot"] = 0.0; } + face_entry["scales"] = 1.0; + face_entry["scalet"] = 1.0; + face_entry["offsets"] = 0.0; + face_entry["offsett"] = 0.0; + face_entry["imagerot"] = 0.0; + face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); + face_entry["fullbright"] = material.mFullbright; mesh_entry["face_list"][face_num] = face_entry; } -- cgit v1.2.3 From 3f182d220046d4a2ffb81743252124cbb8bb9a70 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 23 May 2011 18:08:21 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 9 --------- 1 file changed, 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 9e0b17280e..263d704231 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1452,16 +1452,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) data.mModel[i] = instance.mLOD[i]; } - LLVolumeParams volume_params; - volume_params.setType( LL_PCODE_PROFILE_SQUARE, LL_PCODE_PATH_LINE ); - volume_params.setBeginAndEndS( 0.f, 1.f ); - volume_params.setBeginAndEndT( 0.f, 1.f ); - volume_params.setRatio ( 1, 1 ); - volume_params.setShear ( 0, 0 ); - volume_params.setSculptID(instance.mMeshID, LL_SCULPT_TYPE_MESH); - mesh_entry["shape"] = volume_params.asLLSD(); mesh_entry["material"] = LL_MCODE_WOOD; - mesh_entry["group-id"] = gAgent.getGroupID(); LLPermissions perm; perm.setOwnerAndGroup(gAgent.getID(), gAgent.getID(), LLUUID::null, false); perm.setCreator(gAgent.getID()); -- cgit v1.2.3 From 79131e8a480ab3611ce739717ed84c6ad76aa234 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Tue, 24 May 2011 16:07:19 -0400 Subject: separating meshes from instances --- indra/newview/llmeshrepository.cpp | 118 +++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 58 deletions(-) mode change 100644 => 100755 indra/newview/llmeshrepository.cpp (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp old mode 100644 new mode 100755 index 263d704231..2f5563e1a6 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1411,8 +1411,6 @@ void dumpLLSDToFile(const LLSD& content, std::string filename) void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { - // TODO where do textures go? - LLSD result; LLSD res; @@ -1422,88 +1420,94 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) result["name"] = "mesh model"; result["description"] = "your description here"; - // TODO "optional" fields from the spec - res["mesh_list"] = LLSD::emptyArray(); res["texture_list"] = LLSD::emptyArray(); + res["instance_list"] = LLSD::emptyArray(); S32 mesh_num = 0; S32 texture_num = 0; std::set<LLViewerTexture* > textures; std::map<LLViewerTexture*,S32> texture_index; + std::map<LLModel*,S32> mesh_index; + + S32 instance_num = 0; + for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter) { LLMeshUploadData data; data.mBaseModel = iter->first; LLModelInstance& instance = *(iter->second.begin()); LLModel* model = instance.mModel; - LLSD mesh_entry; - - std::string model_name = data.mBaseModel->getName(); - - if (!model_name.empty()) + if (mesh_index.find(model) == mesh_index.end()) { - result["name"] = model_name; - } + // Have not seen this model before - create a new mesh_list entry for it. + std::string model_name = data.mBaseModel->getName(); + if (!model_name.empty()) + { + result["name"] = model_name; + } + std::stringstream ostr; + + LLModel::Decomposition& decomp = + data.mModel[LLModel::LOD_PHYSICS].notNull() ? + data.mModel[LLModel::LOD_PHYSICS]->mPhysics : + data.mBaseModel->mPhysics; + + decomp.mBaseHull = mHullMap[data.mBaseModel]; + + LLSD mesh_header = LLModel::writeModel( + ostr, + data.mModel[LLModel::LOD_PHYSICS], + data.mModel[LLModel::LOD_HIGH], + data.mModel[LLModel::LOD_MEDIUM], + data.mModel[LLModel::LOD_LOW], + data.mModel[LLModel::LOD_IMPOSTOR], + decomp, + mUploadSkin, + mUploadJoints); + + data.mAssetData = ostr.str(); + std::string str = ostr.str(); + + res["mesh_list"][mesh_num] = LLSD::Binary(str.begin(),str.end()); + mesh_index[model] = mesh_num; + mesh_num++; + } + + LLSD instance_entry; + for (S32 i = 0; i < 5; i++) { data.mModel[i] = instance.mLOD[i]; } - - mesh_entry["material"] = LL_MCODE_WOOD; + + LLVector3 pos, scale; + LLQuaternion rot; + LLMatrix4 transformation = instance.mTransform; + decomposeMeshMatrix(transformation,pos,rot,scale); + instance_entry["position"] = ll_sd_from_vector3(pos); + instance_entry["rotation"] = ll_sd_from_quaternion(rot); + instance_entry["scale"] = ll_sd_from_vector3(scale); + + instance_entry["material"] = LL_MCODE_WOOD; LLPermissions perm; perm.setOwnerAndGroup(gAgent.getID(), gAgent.getID(), LLUUID::null, false); perm.setCreator(gAgent.getID()); - + perm.initMasks(PERM_ITEM_UNRESTRICTED | PERM_MOVE, //base PERM_ITEM_UNRESTRICTED | PERM_MOVE, //owner LLFloaterPerms::getEveryonePerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getNextOwnerPerms()); - mesh_entry["permissions"] = ll_create_sd_from_permissions(perm); - mesh_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); - - std::stringstream ostr; - - LLModel::Decomposition& decomp = - data.mModel[LLModel::LOD_PHYSICS].notNull() ? - data.mModel[LLModel::LOD_PHYSICS]->mPhysics : - data.mBaseModel->mPhysics; - - decomp.mBaseHull = mHullMap[data.mBaseModel]; - - LLSD mesh_header = LLModel::writeModel( - ostr, - data.mModel[LLModel::LOD_PHYSICS], - data.mModel[LLModel::LOD_HIGH], - data.mModel[LLModel::LOD_MEDIUM], - data.mModel[LLModel::LOD_LOW], - data.mModel[LLModel::LOD_IMPOSTOR], - decomp, - mUploadSkin, - mUploadJoints); - - data.mAssetData = ostr.str(); + instance_entry["permissions"] = ll_create_sd_from_permissions(perm); + instance_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); + instance_entry["mesh"] = mesh_index[model]; - LLVector3 pos, scale; - LLQuaternion rot; - LLMatrix4 transformation = instance.mTransform; - decomposeMeshMatrix(transformation,pos,rot,scale); - - mesh_entry["position"] = ll_sd_from_vector3(pos); - mesh_entry["rotation"] = ll_sd_from_quaternion(rot); - mesh_entry["scale"] = ll_sd_from_vector3(scale); - - // TODO should be binary. - std::string str = ostr.str(); - mesh_entry["mesh_data"] = LLSD::Binary(str.begin(),str.end()); - - // TODO how do textures in the list map to textures in the meshes? if (mUploadTextures) { - mesh_entry["face_list"] = LLSD::emptyArray(); + instance_entry["face_list"] = LLSD::emptyArray(); for (S32 face_num = 0; face_num < model->getNumVolumeFaces(); face_num++) { @@ -1553,14 +1557,12 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) face_entry["imagerot"] = 0.0; face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); face_entry["fullbright"] = material.mFullbright; - mesh_entry["face_list"][face_num] = face_entry; + instance_entry["face_list"][face_num] = face_entry; } - } - res["mesh_list"][mesh_num] = mesh_entry; - - mesh_num++; + res["instance_list"][instance_num] = instance_entry; + instance_num++; } result["asset_resources"] = res; -- cgit v1.2.3 From 4353eeb9288c95b98935e60928ec0b80de4e6145 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 24 May 2011 15:29:33 -0500 Subject: SH-469 GL_ARB_texture_multisample support --- .../shaders/class1/deferred/blurLightF.glsl | 4 +- .../shaders/class1/deferred/blurLightMSF.glsl | 4 +- .../shaders/class1/deferred/multiPointLightF.glsl | 2 +- .../class1/deferred/multiPointLightMSF.glsl | 137 ++++++++++++ .../shaders/class1/deferred/multiSpotLightMSF.glsl | 233 ++++++++++++++++++++ .../shaders/class1/deferred/pointLightF.glsl | 2 +- .../shaders/class1/deferred/pointLightMSF.glsl | 96 ++++---- .../shaders/class1/deferred/pointLightV.glsl | 7 +- .../shaders/class1/deferred/postDeferredF.glsl | 2 +- .../shaders/class1/deferred/postDeferredMSF.glsl | 4 +- .../class1/deferred/postDeferredNoDoFMSF.glsl | 13 +- .../shaders/class1/deferred/softenLightF.glsl | 2 +- .../shaders/class1/deferred/softenLightMSF.glsl | 14 +- .../shaders/class1/deferred/spotLightMSF.glsl | 234 ++++++++++++++++++++ .../shaders/class1/deferred/starsF.glsl | 19 ++ .../shaders/class1/deferred/starsV.glsl | 17 ++ .../shaders/class1/deferred/sunLightSSAOF.glsl | 2 +- .../shaders/class1/deferred/sunLightSSAOMSF.glsl | 2 - .../shaders/class1/effects/glowExtractMSF.glsl | 38 ++++ .../shaders/class2/deferred/edgeF.glsl | 2 +- .../shaders/class2/deferred/edgeMSF.glsl | 16 +- .../shaders/class2/deferred/multiSpotLightF.glsl | 2 +- .../shaders/class2/deferred/multiSpotLightMSF.glsl | 244 ++++++++++++++++++++ .../shaders/class2/deferred/softenLightF.glsl | 52 +---- .../shaders/class2/deferred/softenLightMSF.glsl | 1 - .../shaders/class2/deferred/spotLightMSF.glsl | 245 +++++++++++++++++++++ .../shaders/class2/deferred/sunLightF.glsl | 2 +- .../shaders/class2/deferred/sunLightMSF.glsl | 202 +++++++++++++++++ .../shaders/class2/deferred/sunLightSSAOF.glsl | 2 +- .../shaders/class2/deferred/sunLightSSAOMSF.glsl | 241 ++++++++++++++++++++ indra/newview/lldrawpoolwlsky.cpp | 7 +- indra/newview/llviewercontrol.cpp | 17 +- indra/newview/llviewershadermgr.cpp | 83 ++++++- indra/newview/llviewershadermgr.h | 2 +- indra/newview/pipeline.cpp | 14 +- 35 files changed, 1809 insertions(+), 155 deletions(-) create mode 100644 indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/starsF.glsl create mode 100644 indra/newview/app_settings/shaders/class1/deferred/starsV.glsl create mode 100644 indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl index d9f021b114..98d034c2b5 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl @@ -26,7 +26,7 @@ uniform vec2 screen_res; vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); @@ -39,7 +39,7 @@ vec4 getPosition(vec2 pos_screen) void main() { - vec2 tc = vary_fragcoord.xy; + vec2 tc = vary_fragcoord.xy; vec3 norm = texture2DRect(normalMap, tc).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm vec3 pos = getPosition(tc).xyz; diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl index 113197c871..4366376d99 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl @@ -28,12 +28,12 @@ uniform vec2 screen_res; vec4 texture2DMS(sampler2DMS tex, ivec2 tc) { vec4 ret = vec4(0,0,0,0); - for (int i = 0; i < 4; i++) + for (int i = 0; i < samples; i++) { ret += texelFetch(tex, tc, i); } - return ret * 0.25; + return ret/samples; } vec4 getPosition(ivec2 pos_screen) diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 609fc4f14f..e10fb105e8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -36,7 +36,7 @@ uniform mat4 inv_proj; vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl new file mode 100644 index 0000000000..16e97109f9 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl @@ -0,0 +1,137 @@ +/** + * @file multiPointLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS depthMap; +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS normalMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; + + +uniform vec3 env_mat[3]; +uniform float sun_wash; + +uniform int light_count; + +#define MAX_LIGHT_COUNT 16 +uniform vec4 light[MAX_LIGHT_COUNT]; +uniform vec4 light_col[MAX_LIGHT_COUNT]; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform float far_z; + +uniform mat4 inv_proj; + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res; + ivec2 itc = ivec2(frag); + + int wght = 0; + vec3 fcol = vec3(0,0,0); + + for (int s = 0; s < samples; ++s) + { + vec3 pos = getPosition(itc, s).xyz; + if (pos.z >= far_z) + { + vec3 norm = texelFetch(normalMap, itc, s).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + norm = normalize(norm); + vec4 spec = texelFetch(specularRect, itc, s); + vec3 diff = texelFetch(diffuseRect, itc, s).rgb; + float noise = texture2D(noiseMap, frag.xy/128.0).b; + vec3 out_col = vec3(0,0,0); + vec3 npos = normalize(-pos); + + // As of OSX 10.6.7 ATI Apple's crash when using a variable size loop + for (int i = 0; i < MAX_LIGHT_COUNT; ++i) + { + bool light_contrib = (i < light_count); + + vec3 lv = light[i].xyz-pos; + float dist2 = dot(lv,lv); + dist2 /= light[i].w; + if (dist2 > 1.0) + { + light_contrib = false; + } + + float da = dot(norm, lv); + if (da < 0.0) + { + light_contrib = false; + } + + if (light_contrib) + { + lv = normalize(lv); + da = dot(norm, lv); + + float fa = light_col[i].a+1.0; + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + dist_atten *= noise; + + float lit = da * dist_atten; + + vec3 col = light_col[i].rgb*lit*diff; + //vec3 col = vec3(dist2, light_col[i].a, lit); + + if (spec.a > 0.0) + { + //vec3 ref = dot(pos+lv, norm); + + float sa = dot(normalize(lv+npos),norm); + + if (sa > 0.0) + { + sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*light_col[i].rgb*spec.rgb; + } + } + + out_col += col; + } + } + + fcol += out_col; + ++wght; + } + } + + if (wght <= 0) + { + discard; + } + + gl_FragColor.rgb = fcol/wght; + gl_FragColor.a = 0.0; + + +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl new file mode 100644 index 0000000000..bdaa8e59c4 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl @@ -0,0 +1,233 @@ +/** + * @file multiSpotLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +//class 1 -- no shadows + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambient_lod; +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; +uniform int proj_shadow_idx; +uniform float shadow_fade; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float det = max(1.0-lod/(proj_lod*0.5), 0.0); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0); + + return ret; +} + +vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); + + float det = min(lod/(proj_lod*0.5), 1.0); + + float d = min(dist.x, dist.y); + + float edge = 0.25*det; + + ret *= clamp(d/edge, 0.0, 1.0); + + return ret; +} + +vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0); + + return ret; +} + + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + int wght = 0; + + vec3 fcol = vec3(0,0,0); + + vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res; + + ivec2 itc = ivec2(frag.xy); + + for (int i = 0; i < samples; ++i) + { + vec3 pos = getPosition(itc, i).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 <= 1.0) + { + vec3 norm = texelFetch(normalMap, itc, i).xyz*2.0-1.0; + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z >= 0.0) + { + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0); + if (dist_atten > 0.0) + { + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + float amb_da = proj_ambiance; + + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex; + amb_da += (da*0.5)*proj_ambiance; + } + + //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texelFetch(specularRect, itc, i); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); + + if (stc.z > 0.0) + { + stc.xy /= stc.w; + + float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0); + + stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5); + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb; + } + } + } + } + + fcol += col; + ++wght; + } + } + } + } + + if (wght <= 0) + { + discard; + } + + gl_FragColor.rgb = fcol/wght; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 22ed9dcd40..0d771109fb 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -30,7 +30,7 @@ uniform vec4 viewport; vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = (pos_screen.xy-viewport.xy)*2.0; sc /= viewport.zw; sc -= vec2(1.0,1.0); diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl index 22ed9dcd40..23b5e76735 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl @@ -8,14 +8,15 @@ #version 120 #extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable -uniform sampler2DRect diffuseRect; -uniform sampler2DRect specularRect; -uniform sampler2DRect normalMap; -uniform samplerCube environmentMap; +uniform sampler2DMS depthMap; +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS normalMap; uniform sampler2D noiseMap; uniform sampler2D lightFunc; -uniform sampler2DRect depthMap; + uniform vec3 env_mat[3]; uniform float sun_wash; @@ -28,10 +29,10 @@ uniform vec2 screen_res; uniform mat4 inv_proj; uniform vec4 viewport; -vec4 getPosition(vec2 pos_screen) +vec4 getPosition(ivec2 pos_screen, int sample) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; - vec2 sc = (pos_screen.xy-viewport.xy)*2.0; + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = (vec2(pos_screen.xy)-viewport.xy)*2.0; sc /= viewport.zw; sc -= vec2(1.0,1.0); vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); @@ -48,53 +49,60 @@ void main() frag.xyz = frag.xyz*0.5+0.5; frag.xy *= screen_res; - vec3 pos = getPosition(frag.xy).xyz; - vec3 lv = vary_light.xyz-pos; - float dist2 = dot(lv,lv); - dist2 /= vary_light.w; - if (dist2 > 1.0) - { - discard; - } - - vec3 norm = texture2DRect(normalMap, frag.xy).xyz; - norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm - float da = dot(norm, lv); - if (da < 0.0) + ivec2 itc = ivec2(frag.xy); + + int wght = 0; + vec3 fcol = vec3(0,0,0); + + for (int s = 0; s < samples; ++s) { - discard; - } - - norm = normalize(norm); - lv = normalize(lv); - da = dot(norm, lv); + vec3 pos = getPosition(itc, s).xyz; + vec3 lv = vary_light.xyz-pos; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 <= 1.0) + { + vec3 norm = texelFetch(normalMap, itc, s).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + float da = dot(norm, lv); + if (da >= 0.0) + { + norm = normalize(norm); + lv = normalize(lv); + da = dot(norm, lv); - float noise = texture2D(noiseMap, frag.xy/128.0).b; + float noise = texture2D(noiseMap, frag.xy/128.0).b; - vec3 col = texture2DRect(diffuseRect, frag.xy).rgb; - float fa = gl_Color.a+1.0; - float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - float lit = da * dist_atten * noise; + vec3 col = texelFetch(diffuseRect, itc, s).rgb; + float fa = gl_Color.a+1.0; + float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + float lit = da * dist_atten * noise; - col = gl_Color.rgb*lit*col; + col = gl_Color.rgb*lit*col; - vec4 spec = texture2DRect(specularRect, frag.xy); - if (spec.a > 0.0) - { - float sa = dot(normalize(lv-normalize(pos)),norm); - if (sa > 0.0) - { - sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); - sa *= noise; - col += da*sa*gl_Color.rgb*spec.rgb; + vec4 spec = texelFetch(specularRect, itc, s); + if (spec.a > 0.0) + { + float sa = dot(normalize(lv-normalize(pos)),norm); + if (sa > 0.0) + { + sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0); + sa *= noise; + col += da*sa*gl_Color.rgb*spec.rgb; + } + } + + fcol += col; + ++wght; + } } } - if (dot(col, col) <= 0.0) + if (wght <= 0) { discard; } - gl_FragColor.rgb = col; + gl_FragColor.rgb = fcol/wght; gl_FragColor.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl index 8e74feb615..2377947e7f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl @@ -10,14 +10,9 @@ varying vec4 vary_light; varying vec4 vary_fragcoord; -uniform vec2 screen_res; -uniform float near_clip; - void main() { //transform vertex - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; vary_fragcoord = pos; @@ -25,6 +20,8 @@ void main() tex.w = 1.0; vary_light = gl_MultiTexCoord0; + + gl_Position = pos; gl_FrontColor = gl_Color; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl index 77f1b2224c..d389add03b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl @@ -29,7 +29,7 @@ varying vec2 vary_fragcoord; float getDepth(vec2 pos_screen) { - float z = texture2DRect(depthMap, pos_screen.xy).a; + float z = texture2DRect(depthMap, pos_screen.xy).r; z = z*2.0-1.0; vec4 ndc = vec4(0.0, 0.0, z, 1.0); vec4 p = inv_proj*ndc; diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl index a34f882c39..711c6dc96d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl @@ -31,12 +31,12 @@ varying vec2 vary_fragcoord; vec4 texture2DMS(sampler2DMS tex, ivec2 tc) { vec4 ret = vec4(0,0,0,0); - for (int i = 0; i < 4; ++i) + for (int i = 0; i < samples; ++i) { ret += texelFetch(tex, tc, i); } - return ret * 0.25; + return ret/samples; } float getDepth(ivec2 pos_screen) diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl index 7b14974f8b..359b26b7d4 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl @@ -18,13 +18,14 @@ varying vec2 vary_fragcoord; vec4 texture2DMS(sampler2DMS tex, ivec2 tc) { - vec4 ret = texelFetch(tex,tc,0); - ret += texelFetch(tex,tc,1); - ret += texelFetch(tex,tc,2); - ret += texelFetch(tex,tc,3); - ret *= 0.25; + vec4 ret = vec4(0,0,0,0); - return ret; + for (int i = 0; i < samples; ++i) + { + ret += texelFetch(tex,tc,i); + } + + return ret/samples; } void main() diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 29340c7e9f..c1147feff6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -259,7 +259,7 @@ vec3 scaleSoftClip(vec3 light) void main() { vec2 tc = vary_fragcoord.xy; - float depth = texture2DRect(depthMap, tc.xy).a; + float depth = texture2DRect(depthMap, tc.xy).r; vec3 pos = getPosition_d(tc, depth).xyz; vec3 norm = texture2DRect(normalMap, tc).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl index 4c38d91499..fcba4f57e6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl @@ -251,18 +251,18 @@ vec3 scaleSoftClip(vec3 light) vec4 texture2DMS(sampler2DMS tex, ivec2 tc) { - vec4 ret = texelFetch(tex,tc,0); - ret += texelFetch(tex,tc,1); - ret += texelFetch(tex,tc,2); - ret += texelFetch(tex,tc,3); - ret *= 0.25; + vec4 ret = vec4(0,0,0,0); - return ret; + for (int i = 0; i < samples; ++i) + { + ret += texelFetch(tex,tc,i); + } + + return ret/samples; } void main() { - int samples = 4; vec2 tc = vary_fragcoord.xy; ivec2 itc = ivec2(tc); diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl new file mode 100644 index 0000000000..3a9d9266bb --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl @@ -0,0 +1,234 @@ +/** + * @file multiSpotLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +//class 1 -- no shadows + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambient_lod; +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; +uniform int proj_shadow_idx; +uniform float shadow_fade; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float det = max(1.0-lod/(proj_lod*0.5), 0.0); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0); + + return ret; +} + +vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); + + float det = min(lod/(proj_lod*0.5), 1.0); + + float d = min(dist.x, dist.y); + + float edge = 0.25*det; + + ret *= clamp(d/edge, 0.0, 1.0); + + return ret; +} + +vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0); + + return ret; +} + + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + ivec2 itc = ivec2(frag.xy); + + vec3 fcol = vec3(0,0,0); + int wght = 0; + + for (int i = 0; i < samples; ++i) + { + vec3 pos = getPosition(itc, i).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 <= 1.0) + { + vec3 norm = texelFetch(normalMap, itc, i).xyz*2.0-1.0; + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z >= 0.0) + { + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0); + if (dist_atten > 0.0) + { + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + float amb_da = proj_ambiance; + + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex; + amb_da += (da*0.5)*proj_ambiance; + } + + //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texelFetch(specularRect, itc, i); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); + + if (stc.z > 0.0) + { + stc.xy /= stc.w; + + float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0); + + stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5); + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb; + } + } + } + } + + fcol += col; + ++wght; + } + } + } + } + + if (wght <= 0) + { + discard; + } + + gl_FragColor.rgb = fcol/wght; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl new file mode 100644 index 0000000000..b1c25b7fd3 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl @@ -0,0 +1,19 @@ +/** + * @file starsF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +uniform sampler2D diffuseMap; + +void main() +{ + vec4 col = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy); + + gl_FragData[0] = col; + gl_FragData[1] = vec4(0,0,0,0); + gl_FragData[2] = vec4(0,0,1,0); +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl new file mode 100644 index 0000000000..1f0376ce6b --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl @@ -0,0 +1,17 @@ +/** + * @file starsV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + + +void main() +{ + //transform vertex + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl index cd91351ad4..d1e8359742 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl @@ -35,7 +35,7 @@ uniform float shadow_offset; vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl index 49b45dedd6..ce0ebc54f8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl @@ -101,8 +101,6 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample) void main() { - int samples = 4; - vec2 pos_screen = vary_fragcoord.xy; ivec2 itc = ivec2(pos_screen); diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl new file mode 100644 index 0000000000..c03a0c61bd --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl @@ -0,0 +1,38 @@ +/** + * @file glowExtractF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseMap; +uniform float minLuminance; +uniform float maxExtractAlpha; +uniform vec3 lumWeights; +uniform vec3 warmthWeights; +uniform float warmthAmount; + +void main() +{ + ivec2 itc = ivec2(gl_TexCoord[0].xy); + vec4 fcol = vec4(0,0,0,0); + + for (int i = 0; i < samples; i++) + { + vec4 col = texelFetch(diffuseMap, itc, i); + + /// CALCULATING LUMINANCE (Using NTSC lum weights) + /// http://en.wikipedia.org/wiki/Luma_%28video%29 + float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) ); + float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) ); + + fcol += vec4(col.rgb, max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha)); + } + + gl_FragColor = fcol/samples; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl index 3155f3f929..30e1702e9f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl @@ -22,7 +22,7 @@ uniform vec2 screen_res; float getDepth(vec2 pos_screen) { - float z = texture2DRect(depthMap, pos_screen.xy).a; + float z = texture2DRect(depthMap, pos_screen.xy).r; z = z*2.0-1.0; vec4 ndc = vec4(0.0, 0.0, z, 1.0); vec4 p = inv_proj*ndc; diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl index a47ee678f6..38100d1523 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl @@ -21,8 +21,9 @@ uniform float norm_cutoff; uniform mat4 inv_proj; uniform vec2 screen_res; -float getDepth(float z) +float getDepth(ivec2 pos_screen, int sample) { + float z = texelFetch(depthMap, pos_screen, sample).r; z = z*2.0-1.0; vec4 ndc = vec4(0.0, 0.0, z, 1.0); vec4 p = inv_proj*ndc; @@ -31,7 +32,6 @@ float getDepth(float z) void main() { - float e = 0; ivec2 itc = ivec2(vary_fragcoord.xy); @@ -40,24 +40,24 @@ void main() { vec3 norm = texelFetch(normalMap, itc, i).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm - float depth = getDepth(texelFetch(depthMap, itc, i).r); + float depth = getDepth(itc, i); vec2 tc = vary_fragcoord.xy; - float sc = 0.75; + int sc = 1; vec2 de; - de.x = (depth-getDepth(tc+vec2(sc, sc))) + (depth-getDepth(tc+vec2(-sc, -sc))); - de.y = (depth-getDepth(tc+vec2(-sc, sc))) + (depth-getDepth(tc+vec2(sc, -sc))); + de.x = (depth-getDepth(itc+ivec2(sc, sc),i)) + (depth-getDepth(itc+ivec2(-sc, -sc), i)); + de.y = (depth-getDepth(itc+ivec2(-sc, sc),i)) + (depth-getDepth(itc+ivec2(sc, -sc), i)); de /= depth; de *= de; de = step(depth_cutoff, de); vec2 ne; - vec3 nexnorm = texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb; + vec3 nexnorm = texelFetch(normalMap, itc+ivec2(-sc,-sc), i).rgb; nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm ne.x = dot(nexnorm, norm); - vec3 neynorm = texture2DRect(normalMap, tc+vec2(sc,sc)).rgb; + vec3 neynorm = texelFetch(normalMap, itc+ivec2(sc,sc), i).rgb; neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm ne.y = dot(neynorm, norm); diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index d6cd984ebe..de987b1233 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -91,7 +91,7 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl new file mode 100644 index 0000000000..c6f0ea2a5d --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl @@ -0,0 +1,244 @@ +/** + * @file multiSpotLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2DMS lightMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambient_lod; +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; +uniform int proj_shadow_idx; +uniform float shadow_fade; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float det = max(1.0-lod/(proj_lod*0.5), 0.0); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0); + + return ret; +} + +vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); + + float det = min(lod/(proj_lod*0.5), 1.0); + + float d = min(dist.x, dist.y); + + float edge = 0.25*det; + + ret *= clamp(d/edge, 0.0, 1.0); + + return ret; +} + +vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0); + + return ret; +} + + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + int wght = 0; + + vec3 fcol = vec3(0,0,0); + + vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res; + + ivec2 itc = ivec2(frag.xy); + + for (int i = 0; i < samples; i++) + { + vec3 pos = getPosition(itc, i).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 <= 1.0) + { + float shadow = 1.0; + + if (proj_shadow_idx >= 0) + { + vec4 shd = texelFetch(lightMap, itc, i); + float sh[2]; + sh[0] = shd.b; + sh[1] = shd.a; + shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); + } + + vec3 norm = texelFetch(normalMap, itc, i).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z >= 0.0) + { + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0); + if (dist_atten > 0.0) + { + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + float amb_da = proj_ambiance; + + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex*shadow; + amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance; + } + + //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texelFetch(specularRect, itc, i); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); + + if (stc.z > 0.0) + { + stc.xy /= stc.w; + + float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0); + + stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5); + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow; + } + } + } + } + + fcol += col; + wght++; + } + } + } + } + + if (wght <= 0) + { + discard; + } + + gl_FragColor.rgb = fcol/wght; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 0160e84278..dfa1964142 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -71,7 +71,7 @@ vec4 getPosition_d(vec2 pos_screen, float depth) vec4 getPosition(vec2 pos_screen) { //get position in screen space (world units) given window coordinate and depth map - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; return getPosition_d(pos_screen, depth); } @@ -258,7 +258,7 @@ vec3 scaleSoftClip(vec3 light) void main() { vec2 tc = vary_fragcoord.xy; - float depth = texture2DRect(depthMap, tc.xy).a; + float depth = texture2DRect(depthMap, tc.xy).r; vec3 pos = getPosition_d(tc, depth).xyz; vec3 norm = texture2DRect(normalMap, tc).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm @@ -288,54 +288,8 @@ void main() float sa = dot(refnormpersp, vary_light.xyz); vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; - /* - // screen-space cheap fakey reflection map - // - vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz)); - depth -= 0.5; // unbias depth - // first figure out where we'll make our 2D guess from - vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth; - // Offset the guess source a little according to a trivial - // checkerboard dither function and spec.a. - // This is meant to be similar to sampling a blurred version - // of the diffuse map. LOD would be better in that regard. - // The goal of the blur is to soften reflections in surfaces - // with low shinyness, and also to disguise our lameness. - float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0 - float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5); - ref2d += vec2(checkoffset, checkoffset); - ref2d += tc.xy; // use as offset from destination - // Get attributes from the 2D guess point. - // We average two samples of diffuse (not of anything else) per - // pixel to try to reduce aliasing some more. - vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb + - texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb); - float refdepth = texture2DRect(depthMap, ref2d).a; - vec3 refpos = getPosition_d(ref2d, refdepth).xyz; - float refshad = texture2DRect(lightMap, ref2d).r; - vec3 refn = texture2DRect(normalMap, ref2d).rgb; - refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm - refn = normalize(refn); - // figure out how appropriate our guess actually was - float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos))); - // darken reflections from points which face away from the reflected ray - our guess was a back-face - //refapprop *= step(dot(refnorm, refn), 0.0); - refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant - // get appropriate light strength for guess-point - // reflect light direction to increase the illusion that - // these are reflections. - vec3 reflight = reflect(lightnorm.xyz, norm.xyz); - float reflit = min(max(dot(refn, reflight.xyz), 0.0), refshad); - // apply sun color to guess-point, dampen according to inappropriateness of guess - float refmod = min(refapprop, reflit); - vec3 refprod = vary_SunlitColor * refcol.rgb * refmod; - vec3 ssshiny = (refprod * spec.a); - ssshiny *= 0.3; // dampen it even more - */ - vec3 ssshiny = vec3(0,0,0); - // add the two types of shiny together - col += (ssshiny + dumbshiny) * spec.rgb; + col += dumbshiny * spec.rgb; } col = atmosLighting(col); diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl index 7d4548d6d9..71482d0c7b 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl @@ -252,7 +252,6 @@ vec3 scaleSoftClip(vec3 light) void main() { - int samples = 4; vec2 tc = vary_fragcoord.xy; ivec2 itc = ivec2(tc); diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl new file mode 100644 index 0000000000..099a45718a --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl @@ -0,0 +1,245 @@ +/** + * @file multiSpotLightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +uniform sampler2DMS diffuseRect; +uniform sampler2DMS specularRect; +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2DMS lightMap; +uniform sampler2D noiseMap; +uniform sampler2D lightFunc; +uniform sampler2D projectionMap; + +uniform mat4 proj_mat; //screen space to light space +uniform float proj_near; //near clip for projection +uniform vec3 proj_p; //plane projection is emitting from (in screen space) +uniform vec3 proj_n; +uniform float proj_focus; //distance from plane to begin blurring +uniform float proj_lod; //(number of mips in proj map) +uniform float proj_range; //range between near clip and far clip plane of projection +uniform float proj_ambient_lod; +uniform float proj_ambiance; +uniform float near_clip; +uniform float far_clip; + +uniform vec3 proj_origin; //origin of projection to be used for angular attenuation +uniform float sun_wash; +uniform int proj_shadow_idx; +uniform float shadow_fade; + +varying vec4 vary_light; + +varying vec4 vary_fragcoord; +uniform vec2 screen_res; + +uniform mat4 inv_proj; + +vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float det = max(1.0-lod/(proj_lod*0.5), 0.0); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0); + + return ret; +} + +vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); + + float det = min(lod/(proj_lod*0.5), 1.0); + + float d = min(dist.x, dist.y); + + float edge = 0.25*det; + + ret *= clamp(d/edge, 0.0, 1.0); + + return ret; +} + +vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod) +{ + vec4 ret = texture2DLod(projectionMap, tc, lod); + + vec2 dist = tc-vec2(0.5); + + float d = dot(dist,dist); + + ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0); + + return ret; +} + + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec4 frag = vary_fragcoord; + frag.xyz /= frag.w; + frag.xyz = frag.xyz*0.5+0.5; + frag.xy *= screen_res; + ivec2 itc = ivec2(frag.xy); + + vec3 fcol = vec3(0,0,0); + int wght = 0; + + for (int i = 0; i < samples; i++) + { + vec3 pos = getPosition(itc, i).xyz; + vec3 lv = vary_light.xyz-pos.xyz; + float dist2 = dot(lv,lv); + dist2 /= vary_light.w; + if (dist2 <= 1.0) + { + float shadow = 1.0; + + if (proj_shadow_idx >= 0) + { + vec4 shd = texelFetch(lightMap, itc, i); + float sh[2]; + sh[0] = shd.b; + sh[1] = shd.a; + shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); + } + + vec3 norm = texelFetch(normalMap, itc, i).xyz; + norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm + + norm = normalize(norm); + float l_dist = -dot(lv, proj_n); + + vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0)); + if (proj_tc.z >= 0.0) + { + proj_tc.xyz /= proj_tc.w; + + float fa = gl_Color.a+1.0; + float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0); + if (dist_atten > 0.0) + { + lv = proj_origin-pos.xyz; + lv = normalize(lv); + float da = dot(norm, lv); + + vec3 col = vec3(0,0,0); + + vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb; + + float noise = texture2D(noiseMap, frag.xy/128.0).b; + if (proj_tc.z > 0.0 && + proj_tc.x < 1.0 && + proj_tc.y < 1.0 && + proj_tc.x > 0.0 && + proj_tc.y > 0.0) + { + float lit = 0.0; + float amb_da = proj_ambiance; + + if (da > 0.0) + { + float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0); + float lod = diff * proj_lod; + + vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); + + vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; + + lit = da * dist_atten * noise; + + col = lcol*lit*diff_tex*shadow; + amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance; + } + + //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); + vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); + + amb_da += (da*da*0.5+0.5)*proj_ambiance; + + amb_da *= dist_atten * noise; + + amb_da = min(amb_da, 1.0-lit); + + col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; + } + + + vec4 spec = texelFetch(specularRect, itc, i); + if (spec.a > 0.0) + { + vec3 ref = reflect(normalize(pos), norm); + + //project from point pos in direction ref to plane proj_p, proj_n + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + + if (ds < 0.0) + { + vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds; + + vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0)); + + if (stc.z > 0.0) + { + stc.xy /= stc.w; + + float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0); + + stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5); + + if (stc.x < 1.0 && + stc.y < 1.0 && + stc.x > 0.0 && + stc.y > 0.0) + { + vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); + col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow; + } + } + } + } + + fcol += col; + wght++; + } + } + } + } + + if (wght <= 0) + { + discard; + } + + gl_FragColor.rgb = fcol/wght; + gl_FragColor.a = 0.0; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 4369b3b34f..b724c134b9 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -45,7 +45,7 @@ uniform float spot_shadow_offset; vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl new file mode 100644 index 0000000000..dd6fa958c9 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl @@ -0,0 +1,202 @@ +/** + * @file sunLightMSF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +//class 2, shadows, no SSAO + +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap4; +uniform sampler2DShadow shadowMap5; + + +// Inputs +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform float ssao_radius; +uniform float ssao_max_radius; +uniform float ssao_factor; +uniform float ssao_factor_inv; + +varying vec2 vary_fragcoord; +varying vec4 vary_light; + +uniform mat4 inv_proj; +uniform vec2 screen_res; +uniform vec2 shadow_res; +uniform vec2 proj_shadow_res; + +uniform float shadow_bias; +uniform float shadow_offset; + +uniform float spot_shadow_bias; +uniform float spot_shadow_offset; + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen.xy, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias*scl; + + float cs = shadow2DRect(shadowMap, stc.xyz).x; + float shadow = cs; + + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs); + + return shadow/5.0; + + //return shadow; +} + +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += spot_shadow_bias*scl; + + float cs = shadow2D(shadowMap, stc.xyz).x; + float shadow = cs; + + vec2 off = 1.5/proj_shadow_res; + + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs); + + return shadow/5.0; + + //return shadow; +} + +void main() +{ + vec2 pos_screen = vary_fragcoord.xy; + ivec2 itc = ivec2(pos_screen); + + //try doing an unproject here + + vec4 fcol = vec4(0,0,0,0); + + for (int i = 0; i < samples; i++) + { + vec4 pos = getPosition(itc, i); + + vec4 nmap4 = texelFetch(normalMap, itc, i); + nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm + float displace = nmap4.w; + vec3 norm = nmap4.xyz; + + /*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL + { + gl_FragColor = vec4(0.0); // doesn't matter + return; + }*/ + + float shadow = 1.0; + float dp_directional_light = max(0.0, dot(norm, vary_light.xyz)); + + vec3 shadow_pos = pos.xyz + displace*norm; + vec3 offset = vary_light.xyz * (1.0-dp_directional_light); + + vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0); + + if (spos.z > -shadow_clip.w) + { + if (dp_directional_light == 0.0) + { + // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup + shadow = 0.0; + } + else + { + vec4 lpos; + + if (spos.z < -shadow_clip.z) + { + lpos = shadow_matrix[3]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap3, lpos, 0.25); + shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); + } + else if (spos.z < -shadow_clip.y) + { + lpos = shadow_matrix[2]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap2, lpos, 0.5); + } + else if (spos.z < -shadow_clip.x) + { + lpos = shadow_matrix[1]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap1, lpos, 0.75); + } + else + { + lpos = shadow_matrix[0]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap0, lpos, 1.0); + } + + // take the most-shadowed value out of these two: + // * the blurred sun shadow in the light (shadow) map + // * an unblurred dot product between the sun and this norm + // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting + shadow = min(shadow, dp_directional_light); + + //lpos.xy /= lpos.w*32.0; + //if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1) + //{ + // shadow = 0.0; + //} + + } + } + else + { + // more distant than the shadow map covers + shadow = 1.0; + } + + fcol[0] += shadow; + fcol[1] += 1.0; + + spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0); + + //spotlight shadow 1 + vec4 lpos = shadow_matrix[4]*spos; + fcol[2] += pcfShadow(shadowMap4, lpos, 0.8); + + //spotlight shadow 2 + lpos = shadow_matrix[5]*spos; + fcol[3] += pcfShadow(shadowMap5, lpos, 0.8); + } + + gl_FragColor = fcol/samples; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 847b36b1ac..68e18162f6 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -45,7 +45,7 @@ uniform float spot_shadow_offset; vec4 getPosition(vec2 pos_screen) { - float depth = texture2DRect(depthMap, pos_screen.xy).a; + float depth = texture2DRect(depthMap, pos_screen.xy).r; vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl new file mode 100644 index 0000000000..d28741f945 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl @@ -0,0 +1,241 @@ +/** + * @file sunLightSSAOF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#version 120 + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_texture_multisample : enable + +//class 2 -- shadows and SSAO + +uniform sampler2DMS depthMap; +uniform sampler2DMS normalMap; +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap4; +uniform sampler2DShadow shadowMap5; +uniform sampler2D noiseMap; + +// Inputs +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform float ssao_radius; +uniform float ssao_max_radius; +uniform float ssao_factor; +uniform float ssao_factor_inv; + +varying vec2 vary_fragcoord; +varying vec4 vary_light; + +uniform mat4 inv_proj; +uniform vec2 screen_res; +uniform vec2 shadow_res; +uniform vec2 proj_shadow_res; + +uniform float shadow_bias; +uniform float shadow_offset; + +uniform float spot_shadow_bias; +uniform float spot_shadow_offset; + +vec4 getPosition(ivec2 pos_screen, int sample) +{ + float depth = texelFetch(depthMap, pos_screen, sample).r; + vec2 sc = vec2(pos_screen.xy)*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +//calculate decreases in ambient lighting when crowded out (SSAO) +float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample) +{ + float ret = 1.0; + + vec2 kern[8]; + // exponentially (^2) distant occlusion samples spread around origin + kern[0] = vec2(-1.0, 0.0) * 0.125*0.125; + kern[1] = vec2(1.0, 0.0) * 0.250*0.250; + kern[2] = vec2(0.0, 1.0) * 0.375*0.375; + kern[3] = vec2(0.0, -1.0) * 0.500*0.500; + kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625; + kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750; + kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875; + kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000; + + vec2 pos_screen = vary_fragcoord.xy; + vec3 pos_world = pos.xyz; + vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy; + + float angle_hidden = 0.0; + int points = 0; + + float scale = min(ssao_radius / -pos_world.z, ssao_max_radius); + + // it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?) + for (int i = 0; i < 8; i++) + { + ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect)); + vec3 samppos_world = getPosition(samppos_screen, sample).xyz; + + vec3 diff = pos_world - samppos_world; + float dist2 = dot(diff, diff); + + // assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area + // --> solid angle shrinking by the square of distance + //radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2 + //(k should vary inversely with # of samples, but this is taken care of later) + + angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv); + + // 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion" + points = points + int(diff.z > -1.0); + } + + angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0); + + ret = (1.0 - (float(points != 0) * angle_hidden)); + + return min(ret, 1.0); +} + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias*scl; + + float cs = shadow2DRect(shadowMap, stc.xyz).x; + float shadow = cs; + + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs); + + return shadow/5.0; + + //return shadow; +} + +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += spot_shadow_bias*scl; + + float cs = shadow2D(shadowMap, stc.xyz).x; + float shadow = cs; + + vec2 off = 1.5/proj_shadow_res; + + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs); + shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs); + + + return shadow/5.0; + + //return shadow; +} + +void main() +{ + vec2 pos_screen = vary_fragcoord.xy; + ivec2 itc = ivec2(pos_screen); + vec4 fcol = vec4(0,0,0,0); + + for (int i = 0; i < samples; i++) + { + vec4 pos = getPosition(itc, i); + + vec4 nmap4 = texelFetch(normalMap, itc, i); + nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm + float displace = nmap4.w; + vec3 norm = nmap4.xyz; + + float shadow = 1.0; + float dp_directional_light = max(0.0, dot(norm, vary_light.xyz)); + + vec3 shadow_pos = pos.xyz + displace*norm; + vec3 offset = vary_light.xyz * (1.0-dp_directional_light); + + vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0); + + if (spos.z > -shadow_clip.w) + { + if (dp_directional_light == 0.0) + { + // if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup + shadow = 0.0; + } + else + { + vec4 lpos; + + if (spos.z < -shadow_clip.z) + { + lpos = shadow_matrix[3]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap3, lpos, 0.25); + shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); + } + else if (spos.z < -shadow_clip.y) + { + lpos = shadow_matrix[2]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap2, lpos, 0.5); + } + else if (spos.z < -shadow_clip.x) + { + lpos = shadow_matrix[1]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap1, lpos, 0.75); + } + else + { + lpos = shadow_matrix[0]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap0, lpos, 1.0); + } + + // take the most-shadowed value out of these two: + // * the blurred sun shadow in the light (shadow) map + // * an unblurred dot product between the sun and this norm + // the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting + shadow = min(shadow, dp_directional_light); + + } + } + else + { + // more distant than the shadow map covers + shadow = 1.0; + } + + + fcol[0] += shadow; + fcol[1] += calcAmbientOcclusion(pos, norm, i); + + spos.xyz = shadow_pos+offset*spot_shadow_offset; + + //spotlight shadow 1 + vec4 lpos = shadow_matrix[4]*spos; + fcol[2] += pcfShadow(shadowMap4, lpos, 0.8); + + //spotlight shadow 2 + lpos = shadow_matrix[5]*spos; + fcol[3] += pcfShadow(shadowMap5, lpos, 0.8); + } + + gl_FragColor = fcol / samples; +} diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 66b834ab11..409b18d522 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -278,11 +278,13 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass) renderSkyHaze(camHeightLocal); - /*LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin(); + LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin(); glPushMatrix(); + glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); + gDeferredStarProgram.bind(); // *NOTE: have to bind a texture here since register combiners blending in // renderStars() requires something to be bound and we might as well only // bind the moon's texture once. @@ -292,8 +294,9 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass) renderStars(); + gDeferredStarProgram.unbind(); - glPopMatrix();*/ + glPopMatrix(); renderSkyClouds(camHeightLocal); diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 379bbe614d..00a0b87d93 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -183,6 +183,21 @@ static bool handleReleaseGLBufferChanged(const LLSD& newvalue) return true; } +static bool handleFSAASamplesChanged(const LLSD& newvalue) +{ + if (gPipeline.isInit()) + { + gPipeline.releaseGLBuffers(); + gPipeline.createGLBuffers(); + + if (LLPipeline::sRenderDeferred) + { + LLViewerShaderMgr::instance()->setShaders(); + } + } + return true; +} + static bool handleAnisotropicChanged(const LLSD& newvalue) { LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean(); @@ -568,7 +583,7 @@ void settings_setup_listeners() gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); - gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); + gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleFSAASamplesChanged, _2)); gSavedSettings.getControl("RenderAnisotropic")->getSignal()->connect(boost::bind(&handleAnisotropicChanged, _2)); gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 84fb1eb5d0..911a8bb65f 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -140,6 +140,7 @@ LLGLSLShader gDeferredPostProgram; LLGLSLShader gDeferredPostNoDoFProgram; LLGLSLShader gDeferredWLSkyProgram; LLGLSLShader gDeferredWLCloudProgram; +LLGLSLShader gDeferredStarProgram; LLGLSLShader gLuminanceGatherProgram; @@ -193,6 +194,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gDeferredAvatarAlphaProgram); mShaderList.push_back(&gDeferredWLSkyProgram); mShaderList.push_back(&gDeferredWLCloudProgram); + mShaderList.push_back(&gDeferredStarProgram); } LLViewerShaderMgr::~LLViewerShaderMgr() @@ -350,6 +352,9 @@ void LLViewerShaderMgr::setShaders() return; } + //setup preprocessor definitions + LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gSavedSettings.getU32("RenderFSAASamples")); + reentrance = true; // Make sure the compiled shader map is cleared before we recompile shaders. @@ -836,6 +841,8 @@ BOOL LLViewerShaderMgr::loadShadersEffects() { BOOL success = TRUE; + bool multisample = gSavedSettings.getU32("RenderFSAASamples") > 0 && gGLManager.mHasTextureMultisample; + if (mVertexShaderLevel[SHADER_EFFECT] == 0) { gGlowProgram.unload(); @@ -861,10 +868,21 @@ BOOL LLViewerShaderMgr::loadShadersEffects() if (success) { + std::string fragment; + + if (gSavedSettings.getU32("RenderFSAASamples") > 0 && LLRenderTarget::sUseFBO && gGLManager.mHasTextureMultisample) + { + fragment = "effects/glowExtractMSF.glsl"; + } + else + { + fragment = "effects/glowExtractF.glsl"; + } + gGlowExtractProgram.mName = "Glow Extract Shader (Post)"; gGlowExtractProgram.mShaderFiles.clear(); gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractV.glsl", GL_VERTEX_SHADER_ARB)); - gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractF.glsl", GL_FRAGMENT_SHADER_ARB)); + gGlowExtractProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gGlowExtractProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT]; success = gGlowExtractProgram.createShader(NULL, &mGlowExtractUniforms); if (!success) @@ -957,6 +975,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredWaterProgram.unload(); gDeferredWLSkyProgram.unload(); gDeferredWLCloudProgram.unload(); + gDeferredStarProgram.unload(); return TRUE; } @@ -1046,40 +1065,83 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() if (success) { + std::string fragment; + + if (multisample) + { + fragment = "deferred/pointLightMSF.glsl"; + } + else + { + fragment = "deferred/pointLightF.glsl"; + } + gDeferredLightProgram.mName = "Deferred Light Shader"; gDeferredLightProgram.mShaderFiles.clear(); gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredLightProgram.createShader(NULL, NULL); } if (success) { + std::string fragment; + if (multisample) + { + fragment = "deferred/multiPointLightMSF.glsl"; + } + else + { + fragment = "deferred/multiPointLightF.glsl"; + } + gDeferredMultiLightProgram.mName = "Deferred MultiLight Shader"; gDeferredMultiLightProgram.mShaderFiles.clear(); gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredMultiLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredMultiLightProgram.createShader(NULL, NULL); } if (success) { + std::string fragment; + + if (multisample) + { + fragment = "deferred/spotLightMSF.glsl"; + } + else + { + fragment = "deferred/multiSpotLightF.glsl"; + } + gDeferredSpotLightProgram.mName = "Deferred SpotLight Shader"; gDeferredSpotLightProgram.mShaderFiles.clear(); gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredSpotLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredSpotLightProgram.createShader(NULL, NULL); } if (success) { + std::string fragment; + + if (multisample) + { + fragment = "deferred/multiSpotLightMSF.glsl"; + } + else + { + fragment = "deferred/multiSpotLightF.glsl"; + } + gDeferredMultiSpotLightProgram.mName = "Deferred MultiSpotLight Shader"; gDeferredMultiSpotLightProgram.mShaderFiles.clear(); gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB)); gDeferredMultiSpotLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredMultiSpotLightProgram.createShader(NULL, NULL); } @@ -1343,6 +1405,17 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() success = gDeferredWLCloudProgram.createShader(NULL, &mWLUniforms); } + if (success) + { + gDeferredStarProgram.mName = "Deferred Star Program"; + gDeferredStarProgram.mShaderFiles.clear(); + gDeferredStarProgram.mShaderFiles.push_back(make_pair("deferred/starsV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredStarProgram.mShaderFiles.push_back(make_pair("deferred/starsF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredStarProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + gDeferredStarProgram.mShaderGroup = LLGLSLShader::SG_SKY; + success = gDeferredStarProgram.createShader(NULL, &mWLUniforms); + } + if (mVertexShaderLevel[SHADER_DEFERRED] > 1) { if (success) diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index b13775742b..f5371f0619 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -376,7 +376,7 @@ extern LLGLSLShader gDeferredFullbrightProgram; extern LLGLSLShader gDeferredAvatarAlphaProgram; extern LLGLSLShader gDeferredWLSkyProgram; extern LLGLSLShader gDeferredWLCloudProgram; - +extern LLGLSLShader gDeferredStarProgram; extern LLGLSLShader gLuminanceGatherProgram; //current avatar shader parameter pointer diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index ef3cbe5278..ffe3b4b1a4 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -589,8 +589,8 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) mScreenWidth = resX; mScreenHeight = resY; - //never use more than 4 samples for render targets - U32 samples = llmin(gSavedSettings.getU32("RenderFSAASamples"), (U32) 4); + U32 samples = llmin(gSavedSettings.getU32("RenderFSAASamples"), (U32) 16); + if (gGLManager.mIsATI) { //disable multisampling of render targets where ATI is involved samples = 0; @@ -6170,11 +6170,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.getTexUnit(0)->disable(); - gGL.getTexUnit(0)->enable(LLTexUnit::TT_RECT_TEXTURE); - gGL.getTexUnit(0)->bind(&mScreen); - + mScreen.bindTexture(0, 0); + gGL.color4f(1,1,1,1); gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); gGL.begin(LLRender::TRIANGLE_STRIP); @@ -6189,7 +6186,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) gGL.end(); - gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE); + gGL.getTexUnit(0)->unbind(mScreen.getUsage()); mGlow[2].flush(); } @@ -6217,7 +6214,6 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) for (S32 i = 0; i < kernel; i++) { - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); { LLFastTimer ftm(FTM_RENDER_BLOOM_FBO); mGlow[i%2].bindTarget(); -- cgit v1.2.3 From f5726a094db77ec4fbba67e33d436cba8bf60a4b Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Tue, 24 May 2011 17:36:06 -0600 Subject: fix for SH-712:Asset error given on upload of duck.dae using High LOD for physics shape - Analyze seems to not complete; SH-889: Viewer crash when analyzing physics LOD; SH-890: Viewer crash on Exit after analyzing physics layer which never seems to complete --- indra/newview/llfloatermodelpreview.cpp | 25 ++++++++++++++++++++++--- indra/newview/llfloatermodelwizard.cpp | 25 ++++++++++++++++++++++--- indra/newview/llmeshrepository.cpp | 19 +++++++++++++++++++ indra/newview/llmeshrepository.h | 10 +++++++++- 4 files changed, 72 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 9dd5269a6b..2a3bd37129 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -4962,9 +4962,12 @@ LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LL if (mdl) { U16 index_offset = 0; + U16 tri[3] ; mPositions.clear(); mIndices.clear(); + mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; + mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; //queue up vertex positions and indices for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) @@ -4978,12 +4981,28 @@ LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LL for (U32 j = 0; j < face.mNumVertices; ++j) { mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); + for(U32 k = 0 ; k < 3 ; k++) + { + mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; + mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; + } } - for (U32 j = 0; j < face.mNumIndices; ++j) + updateTriangleAreaThreshold() ; + + for (U32 j = 0; j+2 < face.mNumIndices; j += 3) { - mIndices.push_back(face.mIndices[j]+index_offset); - } + tri[0] = face.mIndices[j] + index_offset ; + tri[1] = face.mIndices[j + 1] + index_offset ; + tri[2] = face.mIndices[j + 2] + index_offset ; + + if(isValidTriangle(tri[0], tri[1], tri[2])) + { + mIndices.push_back(tri[0]); + mIndices.push_back(tri[1]); + mIndices.push_back(tri[2]); + } + } index_offset += face.mNumVertices; } diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp index faf81dbc5c..e44737f39e 100644 --- a/indra/newview/llfloatermodelwizard.cpp +++ b/indra/newview/llfloatermodelwizard.cpp @@ -441,10 +441,13 @@ LLFloaterModelWizard::DecompRequest::DecompRequest(const std::string& stage, LLM if (mdl) { U16 index_offset = 0; + U16 tri[3] ; mPositions.clear(); mIndices.clear(); - + mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; + mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; + //queue up vertex positions and indices for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) { @@ -457,11 +460,27 @@ LLFloaterModelWizard::DecompRequest::DecompRequest(const std::string& stage, LLM for (U32 j = 0; j < face.mNumVertices; ++j) { mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); + for(U32 k = 0 ; k < 3 ; k++) + { + mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; + mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; + } } - for (U32 j = 0; j < face.mNumIndices; ++j) + updateTriangleAreaThreshold() ; + + for (U32 j = 0; j+2 < face.mNumIndices; j += 3) { - mIndices.push_back(face.mIndices[j]+index_offset); + tri[0] = face.mIndices[j] + index_offset ; + tri[1] = face.mIndices[j + 1] + index_offset ; + tri[2] = face.mIndices[j + 2] + index_offset ; + + if(isValidTriangle(tri[0], tri[1], tri[2])) + { + mIndices.push_back(tri[0]); + mIndices.push_back(tri[1]); + mIndices.push_back(tri[2]); + } } index_offset += face.mNumVertices; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index d9a58d56fe..90e8f055dc 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -3751,6 +3751,25 @@ void LLPhysicsDecomp::run() mDone = true; } +void LLPhysicsDecomp::Request::updateTriangleAreaThreshold() +{ + F32 range = mBBox[1].mV[0] - mBBox[0].mV[0] ; + range = llmin(range, mBBox[1].mV[1] - mBBox[0].mV[1]) ; + range = llmin(range, mBBox[1].mV[2] - mBBox[0].mV[2]) ; + + mTriangleAreaThreshold = llmin(0.0002f, range * 0.000002f) ; +} + +//check if the triangle area is large enough to qualify for a valid triangle +bool LLPhysicsDecomp::Request::isValidTriangle(U16 idx1, U16 idx2, U16 idx3) +{ + LLVector3 a = mPositions[idx2] - mPositions[idx1] ; + LLVector3 b = mPositions[idx3] - mPositions[idx1] ; + F32 c = a * b ; + + return ((a*a) * (b*b) - c * c) > mTriangleAreaThreshold ; +} + void LLPhysicsDecomp::Request::setStatusMessage(const std::string& msg) { mStatusMessage = msg; diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index f859e29c07..0a6954bade 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -152,7 +152,7 @@ public: std::string mStatusMessage; std::vector<LLModel::PhysicsMesh> mHullMesh; LLModel::convex_hull_decomposition mHull; - + //status message callback, called from decomposition thread virtual S32 statusCallback(const char* status, S32 p1, S32 p2) = 0; @@ -160,6 +160,14 @@ public: virtual void completed() = 0; virtual void setStatusMessage(const std::string& msg); + + protected: + //internal use + LLVector3 mBBox[2] ; + F32 mTriangleAreaThreshold ; + + void updateTriangleAreaThreshold() ; + bool isValidTriangle(U16 idx1, U16 idx2, U16 idx3) ; }; LLCondition* mSignal; -- cgit v1.2.3 From 594f1da03b02d09c57699b543692ebd85cdcff17 Mon Sep 17 00:00:00 2001 From: Loren Shih <seraph@lindenlab.com> Date: Wed, 25 May 2011 11:36:19 -0400 Subject: SH-657 FIXED Preview normals inverted for mesh mirrored by negative scale transformation SH-810 FIXED Mesh uploader should enable Physics Analyze after "Use Level of Detail" is picked. Both changes together in this changeset. --- indra/newview/llfloatermodelpreview.cpp | 30 ++++++++++++++++++++++++++++-- indra/newview/llfloatermodelpreview.h | 2 ++ 2 files changed, 30 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2a3bd37129..46327a6211 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -314,7 +314,7 @@ BOOL LLFloaterModelPreview::postBuild() childSetCommitCallback("pelvis_offset", onPelvisOffsetCommit, this); childSetCommitCallback("lod_file_or_limit", refresh, this); - childSetCommitCallback("physics_load_radio", refresh, this); + childSetCommitCallback("physics_load_radio", onPhysicsLoadRadioCommit, this); //childSetCommitCallback("physics_optimize", refresh, this); //childSetCommitCallback("physics_use_hull", refresh, this); @@ -469,6 +469,29 @@ void LLFloaterModelPreview::onPelvisOffsetCommit( LLUICtrl*, void* userdata ) fp->mModelPreview->refresh(); } +//static +void LLFloaterModelPreview::onPhysicsLoadRadioCommit( LLUICtrl*, void *userdata) +{ + LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance; + if (fmp) + { + if (fmp->childGetValue("physics_use_lod").asBoolean()) + { + onPhysicsUseLOD(NULL,NULL); + } + if (fmp->childGetValue("physics_load_from_file").asBoolean()) + { + + } + LLModelPreview *model_preview = fmp->mModelPreview; + if (model_preview) + { + model_preview->refresh(); + model_preview->updateStatusMessages(); + } + } +} + //static void LLFloaterModelPreview::onUploadJointsCommit(LLUICtrl*,void* userdata) { @@ -2296,8 +2319,11 @@ void LLModelLoader::processElement(daeElement* element) { domFloat3 dom_value = scale->getValue(); + + LLVector3 scale_vector = LLVector3(dom_value[0], dom_value[1], dom_value[2]); + scale_vector.abs(); // Set all values positive, since we don't currently support mirrored meshes LLMatrix4 scaling; - scaling.initScale(LLVector3(dom_value[0], dom_value[1], dom_value[2])); + scaling.initScale(scale_vector); scaling *= mTransform; mTransform = scaling; diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index f6d4a08d1f..ed7cbe6d1e 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -199,6 +199,8 @@ protected: static void onUploadJointsCommit(LLUICtrl*,void*); static void onUploadSkinCommit(LLUICtrl*,void*); + static void onPhysicsLoadRadioCommit(LLUICtrl*,void *data); + static void onPreviewLODCommit(LLUICtrl*,void*); static void onGenerateNormalsCommit(LLUICtrl*,void*); -- cgit v1.2.3 From b76d15ed14abfe3b4c422ba9ff3d4151de8a31ea Mon Sep 17 00:00:00 2001 From: prep <prep@lindenlab.com> Date: Wed, 25 May 2011 12:40:51 -0400 Subject: SH-1252 & SH-1253 accesor cleanup --- indra/newview/llviewerobjectlist.cpp | 4 ++-- indra/newview/llviewerobjectlist.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 007b3416f1..78b06b0764 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1418,12 +1418,12 @@ void LLViewerObjectList::onObjectCostFetchFailure(const LLUUID& object_id) mPendingObjectCost.erase(object_id); } -void LLViewerObjectList::updateQuotaCost( const LLUUID& objectId, const SelectionQuota& quota ) +void LLViewerObjectList::updateQuota( const LLUUID& objectId, const SelectionQuota& quota ) { LLViewerObject* pVO = findObject( objectId ); if ( pVO ) { - //pVO->updateQuota( quota ); + pVO->updateQuota( quota ); } } diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 8e211eaf73..6f0d285f5d 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -102,7 +102,7 @@ public: F32 restitution, F32 gravity_multiplier); - void updateQuotaCost( const LLUUID& objectId, const SelectionQuota& costs ); + void updateQuota( const LLUUID& objectId, const SelectionQuota& costs ); void shiftObjects(const LLVector3 &offset); -- cgit v1.2.3 From 8e728befa57bcea0981179709dd5f13af1cd29a8 Mon Sep 17 00:00:00 2001 From: prep <prep@lindenlab.com> Date: Wed, 25 May 2011 15:57:12 -0400 Subject: Sh-1647: Accounting caps update --- indra/newview/llaccountingquotamanager.cpp | 98 ++++++++++++++++++------------ indra/newview/llviewerregion.cpp | 5 +- 2 files changed, 61 insertions(+), 42 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llaccountingquotamanager.cpp b/indra/newview/llaccountingquotamanager.cpp index ada74ea44c..9b77ada8b7 100644 --- a/indra/newview/llaccountingquotamanager.cpp +++ b/indra/newview/llaccountingquotamanager.cpp @@ -77,12 +77,10 @@ public: return; } - //Differentiate what the incoming caps could be from the data - //bool VOContent = content.has("Objects"); + //Differentiate what the incoming caps could be from the data bool containsParcel = content.has("parcel"); bool containsSelection = content.has("selected"); - //bool VORegion = content.has("region"); - + //Loop over the stored object ids checking against the incoming data for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter ) { @@ -97,16 +95,17 @@ public: for(S32 i = 0; i < dataCount; i++) { //prep#todo verify that this is safe, otherwise just add a bool - S32 parcelId = 0; - S32 parcelOwner = 0; + LLUUID parcelId; + //S32 parcelOwner = 0; if ( content["parcel"][i].has("parcel_id") ) { - parcelId = content["parcel"][i]["parcel_id"].asInteger(); - } - if ( content["parcel"][i].has("parcel_owner") ) - { - parcelOwner = content["parcel"][i]["parcel_owner"].asInteger(); + parcelId = content["parcel"][i]["parcel_id"].asUUID(); } + + //if ( content["parcel"][i].has("parcel_owner") ) + //{ + // parcelOwner = content["parcel"][i]["parcel_owner"].asInteger(); + //} F32 ownerRenderCost = 0; F32 ownerPhysicsCost = 0; @@ -123,48 +122,69 @@ public: F32 otherNetworkCost = 0; F32 otherSimulationCost = 0; - F32 totalRenderCost = 0; - F32 totalPhysicsCost = 0; - F32 totalNetworkCost = 0; - F32 totalSimulationCost = 0; + F32 tempRenderCost = 0; + F32 tempPhysicsCost = 0; + F32 tempNetworkCost = 0; + F32 tempSimulationCost = 0; + + F32 selectedRenderCost = 0; + F32 selectedPhysicsCost = 0; + F32 selectedNetworkCost = 0; + F32 selectedSimulationCost = 0; + F32 parcelCapacity = 0; + + if ( content["parcel"][i].has("capacity") ) + { + parcelCapacity = content["parcel"][i].has("capacity"); + } + if ( content["parcel"][i].has("owner") ) { - ownerRenderCost = content["parcel"][i]["owner"]["render"].asReal(); + ownerRenderCost = content["parcel"][i]["owner"]["rendering"].asReal(); ownerPhysicsCost = content["parcel"][i]["owner"]["physics"].asReal(); - ownerNetworkCost = content["parcel"][i]["owner"]["network"].asReal(); - ownerSimulationCost = content["parcel"][i]["owner"]["simulation"].asReal(); - + ownerNetworkCost = content["parcel"][i]["owner"]["streaming"].asReal(); + ownerSimulationCost = content["parcel"][i]["owner"]["simulation"].asReal(); } + if ( content["parcel"][i].has("group") ) { - groupRenderCost = content["parcel"][i]["group"]["render"].asReal(); + groupRenderCost = content["parcel"][i]["group"]["rendering"].asReal(); groupPhysicsCost = content["parcel"][i]["group"]["physics"].asReal(); - groupNetworkCost = content["parcel"][i]["group"]["network"].asReal(); + groupNetworkCost = content["parcel"][i]["group"]["streaming"].asReal(); groupSimulationCost = content["parcel"][i]["group"]["simulation"].asReal(); } if ( content["parcel"][i].has("other") ) { - otherRenderCost = content["parcel"][i]["other"]["render"].asReal(); + otherRenderCost = content["parcel"][i]["other"]["rendering"].asReal(); otherPhysicsCost = content["parcel"][i]["other"]["physics"].asReal(); - otherNetworkCost = content["parcel"][i]["other"]["network"].asReal(); + otherNetworkCost = content["parcel"][i]["other"]["streaming"].asReal(); otherSimulationCost = content["parcel"][i]["other"]["simulation"].asReal(); } - if ( content["parcel"][i].has("total") ) + if ( content["parcel"][i].has("temp") ) { - totalRenderCost = content["parcel"][i]["total"]["render"].asReal(); - totalPhysicsCost = content["parcel"][i]["total"]["physics"].asReal(); - totalNetworkCost = content["parcel"][i]["total"]["network"].asReal(); - totalSimulationCost = content["parcel"][i]["total"]["simulation"].asReal(); - + tempRenderCost = content["parcel"][i]["total"]["rendering"].asReal(); + tempPhysicsCost = content["parcel"][i]["total"]["physics"].asReal(); + tempNetworkCost = content["parcel"][i]["total"]["streaming"].asReal(); + tempSimulationCost = content["parcel"][i]["total"]["simulation"].asReal(); + } + + if ( content["parcel"][i].has("selected") ) + { + selectedRenderCost = content["parcel"][i]["total"]["rendering"].asReal(); + selectedPhysicsCost = content["parcel"][i]["total"]["physics"].asReal(); + selectedNetworkCost = content["parcel"][i]["total"]["streaming"].asReal(); + selectedSimulationCost = content["parcel"][i]["total"]["simulation"].asReal(); } - ParcelQuota parcelQuota( ownerRenderCost, ownerPhysicsCost, ownerNetworkCost, ownerSimulationCost, - groupRenderCost, groupPhysicsCost, groupNetworkCost, groupSimulationCost, - otherRenderCost, otherPhysicsCost, otherNetworkCost, otherSimulationCost, - totalRenderCost, totalPhysicsCost, totalNetworkCost, totalSimulationCost ); + ParcelQuota parcelQuota( ownerRenderCost, ownerPhysicsCost, ownerNetworkCost, ownerSimulationCost, + groupRenderCost, groupPhysicsCost, groupNetworkCost, groupSimulationCost, + otherRenderCost, otherPhysicsCost, otherNetworkCost, otherSimulationCost, + tempRenderCost, tempPhysicsCost, tempNetworkCost, tempSimulationCost, + selectedRenderCost, selectedPhysicsCost, selectedNetworkCost, selectedSimulationCost, + parcelCapacity ); //Update the Parcel LLParcel* pParcel = LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel(); if ( pParcel ) @@ -185,18 +205,18 @@ public: F32 networkCost = 0; F32 simulationCost = 0; - S32 localId = 0; + LLUUID objectId; - localId = content["selected"][i]["local_id"].asInteger(); - renderCost = content["selected"][i]["render"].asReal(); + objectId = content["selected"][i]["local_id"].asUUID(); + renderCost = content["selected"][i]["rendering"].asReal(); physicsCost = content["selected"][i]["physics"].asReal(); - networkCost = content["selected"][i]["network"].asReal(); + networkCost = content["selected"][i]["streaming"].asReal(); simulationCost = content["selected"][i]["simulation"].asReal(); - SelectionQuota selectionQuota( localId, renderCost, physicsCost, networkCost, simulationCost ); + SelectionQuota selectionQuota( objectId, renderCost, physicsCost, networkCost, simulationCost ); //Update the objects - //gObjectList.updateQuota( localId, selectionQuota ); + gObjectList.updateQuota( objectId, selectionQuota ); } } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index fb608b3a4f..c4ca5d37ce 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1480,6 +1480,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url) LLSD capabilityNames = LLSD::emptyArray(); + capabilityNames.append("AccountingParcel"); + capabilityNames.append("AccountingSelection"); capabilityNames.append("AttachmentResources"); capabilityNames.append("AvatarPickerSearch"); capabilityNames.append("ChatSessionRequest"); @@ -1546,9 +1548,6 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("ViewerMetrics"); capabilityNames.append("ViewerStartAuction"); capabilityNames.append("ViewerStats"); - //prep# Finalize these!!!!!!!!! - capabilityNames.append("AccountingParcel"); - capabilityNames.append("AccountingSelection"); // Please add new capabilities alphabetically to reduce // merge conflicts. -- cgit v1.2.3 From d79468057c954a05acdb9dd69d398dd004425ec0 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Wed, 25 May 2011 16:08:21 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 155 +++++++++++++++++++------------------ 1 file changed, 81 insertions(+), 74 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index b79f120eda..79541e49d3 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1437,9 +1437,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLMeshUploadData data; data.mBaseModel = iter->first; - LLModelInstance& instance = *(iter->second.begin()); - LLModel* model = instance.mModel; - if (mesh_index.find(model) == mesh_index.end()) + if (mesh_index.find(data.mBaseModel) == mesh_index.end()) { // Have not seen this model before - create a new mesh_list entry for it. std::string model_name = data.mBaseModel->getName(); @@ -1472,97 +1470,106 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) std::string str = ostr.str(); res["mesh_list"][mesh_num] = LLSD::Binary(str.begin(),str.end()); - mesh_index[model] = mesh_num; + mesh_index[data.mBaseModel] = mesh_num; mesh_num++; } + + // For all instances that use this model + for (instance_list::iterator instance_iter = iter->second.begin(); + instance_iter != iter->second.end(); + ++instance_iter) + { + + LLModelInstance& instance = *instance_iter; - LLSD instance_entry; + LLSD instance_entry; - for (S32 i = 0; i < 5; i++) - { - data.mModel[i] = instance.mLOD[i]; - } + for (S32 i = 0; i < 5; i++) + { + data.mModel[i] = instance.mLOD[i]; + } - LLVector3 pos, scale; - LLQuaternion rot; - LLMatrix4 transformation = instance.mTransform; - decomposeMeshMatrix(transformation,pos,rot,scale); - instance_entry["position"] = ll_sd_from_vector3(pos); - instance_entry["rotation"] = ll_sd_from_quaternion(rot); - instance_entry["scale"] = ll_sd_from_vector3(scale); + LLVector3 pos, scale; + LLQuaternion rot; + LLMatrix4 transformation = instance.mTransform; + decomposeMeshMatrix(transformation,pos,rot,scale); + instance_entry["position"] = ll_sd_from_vector3(pos); + instance_entry["rotation"] = ll_sd_from_quaternion(rot); + instance_entry["scale"] = ll_sd_from_vector3(scale); - instance_entry["material"] = LL_MCODE_WOOD; - LLPermissions perm; - perm.setOwnerAndGroup(gAgent.getID(), gAgent.getID(), LLUUID::null, false); - perm.setCreator(gAgent.getID()); + instance_entry["material"] = LL_MCODE_WOOD; + LLPermissions perm; + perm.setOwnerAndGroup(gAgent.getID(), gAgent.getID(), LLUUID::null, false); + perm.setCreator(gAgent.getID()); - perm.initMasks(PERM_ITEM_UNRESTRICTED | PERM_MOVE, //base - PERM_ITEM_UNRESTRICTED | PERM_MOVE, //owner - LLFloaterPerms::getEveryonePerms(), - LLFloaterPerms::getGroupPerms(), - LLFloaterPerms::getNextOwnerPerms()); - instance_entry["permissions"] = ll_create_sd_from_permissions(perm); - instance_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); - instance_entry["mesh"] = mesh_index[model]; - - if (mUploadTextures) - { - instance_entry["face_list"] = LLSD::emptyArray(); - - for (S32 face_num = 0; face_num < model->getNumVolumeFaces(); face_num++) + perm.initMasks(PERM_ITEM_UNRESTRICTED | PERM_MOVE, //base + PERM_ITEM_UNRESTRICTED | PERM_MOVE, //owner + LLFloaterPerms::getEveryonePerms(), + LLFloaterPerms::getGroupPerms(), + LLFloaterPerms::getNextOwnerPerms()); + instance_entry["permissions"] = ll_create_sd_from_permissions(perm); + instance_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); + instance_entry["mesh"] = mesh_index[data.mBaseModel]; + + if (mUploadTextures) { - LLImportMaterial& material = instance.mMaterial[face_num]; - LLSD face_entry = LLSD::emptyMap(); - LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); - - if (texture != NULL) - { - if (textures.find(texture) == textures.end()) - { - textures.insert(texture); - } + instance_entry["face_list"] = LLSD::emptyArray(); - std::stringstream ostr; - if (include_textures) // otherwise data is blank. + for (S32 face_num = 0; face_num < data.mBaseModel->getNumVolumeFaces(); face_num++) + { + LLImportMaterial& material = instance.mMaterial[face_num]; + LLSD face_entry = LLSD::emptyMap(); + LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); + + if (texture != NULL) { - LLTextureUploadData data(texture, material.mDiffuseMapLabel); - if (!data.mTexture->isRawImageValid()) + if (textures.find(texture) == textures.end()) { - data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); + textures.insert(texture); } + + std::stringstream ostr; + if (include_textures) // otherwise data is blank. + { + LLTextureUploadData data(texture, material.mDiffuseMapLabel); + if (!data.mTexture->isRawImageValid()) + { + data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); + } - LLPointer<LLImageJ2C> upload_file = - LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); - ostr.write((const char*) upload_file->getData(), upload_file->getDataSize()); + LLPointer<LLImageJ2C> upload_file = + LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); + ostr.write((const char*) upload_file->getData(), upload_file->getDataSize()); + } + + if (texture_index.find(texture) == texture_index.end()) + { + texture_index[texture] = texture_num; + std::string str = ostr.str(); + res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); + texture_num++; + } } - if (texture_index.find(texture) == texture_index.end()) + // Subset of TextureEntry fields. + if (texture) { - texture_index[texture] = texture_num; - std::string str = ostr.str(); - res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); - texture_num++; + face_entry["image"] = texture_index[texture]; } + face_entry["scales"] = 1.0; + face_entry["scalet"] = 1.0; + face_entry["offsets"] = 0.0; + face_entry["offsett"] = 0.0; + face_entry["imagerot"] = 0.0; + face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); + face_entry["fullbright"] = material.mFullbright; + instance_entry["face_list"][face_num] = face_entry; } + } - // Subset of TextureEntry fields. - if (texture) - { - face_entry["image"] = texture_index[texture]; - } - face_entry["scales"] = 1.0; - face_entry["scalet"] = 1.0; - face_entry["offsets"] = 0.0; - face_entry["offsett"] = 0.0; - face_entry["imagerot"] = 0.0; - face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); - face_entry["fullbright"] = material.mFullbright; - instance_entry["face_list"][face_num] = face_entry; - } + res["instance_list"][instance_num] = instance_entry; + instance_num++; } - - res["instance_list"][instance_num] = instance_entry; - instance_num++; } result["asset_resources"] = res; -- cgit v1.2.3 From 9eea451a82379a61fa4a6cc2a55274e06cecbd58 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 25 May 2011 15:51:15 -0500 Subject: SH-469 Don't use depth buffers and multisample buffers where not absolutely needed -- make sample counts consistent between shaders and render targets. --- .../shaders/class1/deferred/blurLightMSF.glsl | 37 +++++++++++++------- .../class1/deferred/multiPointLightMSF.glsl | 2 +- .../shaders/class1/deferred/multiSpotLightMSF.glsl | 3 +- .../shaders/class1/deferred/pointLightMSF.glsl | 2 +- .../shaders/class1/deferred/spotLightMSF.glsl | 2 +- .../shaders/class2/deferred/multiSpotLightMSF.glsl | 26 +++++++------- .../shaders/class2/deferred/softenLightMSF.glsl | 9 ++--- .../shaders/class2/deferred/spotLightMSF.glsl | 24 ++++++------- indra/newview/llviewershadermgr.cpp | 10 +++--- indra/newview/pipeline.cpp | 40 +++++++++++++--------- 10 files changed, 88 insertions(+), 67 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl index 4366376d99..edec83ea07 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl @@ -12,7 +12,7 @@ uniform sampler2DMS depthMap; uniform sampler2DMS normalMap; -uniform sampler2DMS lightMap; +uniform sampler2DRect lightMap; uniform float dist_factor; uniform float blur_size; @@ -25,12 +25,23 @@ varying vec2 vary_fragcoord; uniform mat4 inv_proj; uniform vec2 screen_res; -vec4 texture2DMS(sampler2DMS tex, ivec2 tc) +vec3 texture2DMS3(sampler2DMS tex, ivec2 tc) { - vec4 ret = vec4(0,0,0,0); + vec3 ret = vec3(0,0,0); for (int i = 0; i < samples; i++) { - ret += texelFetch(tex, tc, i); + ret += texelFetch(tex, tc, i).rgb; + } + + return ret/samples; +} + +float texture2DMS1(sampler2DMS tex, ivec2 tc) +{ + float ret = 0; + for (int i = 0; i < samples; i++) + { + ret += texelFetch(tex, tc, i).r; } return ret/samples; @@ -38,7 +49,7 @@ vec4 texture2DMS(sampler2DMS tex, ivec2 tc) vec4 getPosition(ivec2 pos_screen) { - float depth = texture2DMS(depthMap, pos_screen.xy).r; + float depth = texture2DMS1(depthMap, pos_screen.xy); vec2 sc = pos_screen.xy*2.0; sc /= screen_res; sc -= vec2(1.0,1.0); @@ -54,10 +65,10 @@ void main() vec2 tc = vary_fragcoord.xy; ivec2 itc = ivec2(tc); - vec3 norm = texture2DMS(normalMap, itc).xyz; + vec3 norm = texture2DMS3(normalMap, itc).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm vec3 pos = getPosition(itc).xyz; - vec4 ccol = texture2DMS(lightMap, itc).rgba; + vec4 ccol = texture2DRect(lightMap, tc).rgba; vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy); dlt /= max(-pos.z*dist_factor, 1.0); @@ -73,23 +84,23 @@ void main() for (int i = 1; i < 4; i++) { - ivec2 samptc = ivec2(tc + kern[i].z*dlt); - vec3 samppos = getPosition(samptc).xyz; + vec2 samptc = tc + kern[i].z*dlt; + vec3 samppos = getPosition(ivec2(samptc)).xyz; float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane if (d*d <= pointplanedist_tolerance_pow2) { - col += texture2DMS(lightMap, samptc)*kern[i].xyxx; + col += texture2DRect(lightMap, samptc)*kern[i].xyxx; defined_weight += kern[i].xy; } } for (int i = 1; i < 4; i++) { - ivec2 samptc = ivec2(tc - kern[i].z*dlt); - vec3 samppos = getPosition(samptc).xyz; + vec2 samptc = vec2(tc - kern[i].z*dlt); + vec3 samppos = getPosition(ivec2(samptc)).xyz; float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane if (d*d <= pointplanedist_tolerance_pow2) { - col += texture2DMS(lightMap, samptc)*kern[i].xyxx; + col += texture2DRect(lightMap, samptc)*kern[i].xyxx; defined_weight += kern[i].xy; } } diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl index 16e97109f9..66c7a5cb4a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl @@ -130,7 +130,7 @@ void main() discard; } - gl_FragColor.rgb = fcol/wght; + gl_FragColor.rgb = fcol/samples; gl_FragColor.a = 0.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl index bdaa8e59c4..b450ff1ca2 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl @@ -34,7 +34,6 @@ uniform float far_clip; uniform vec3 proj_origin; //origin of projection to be used for angular attenuation uniform float sun_wash; -uniform int proj_shadow_idx; uniform float shadow_fade; varying vec4 vary_light; @@ -228,6 +227,6 @@ void main() discard; } - gl_FragColor.rgb = fcol/wght; + gl_FragColor.rgb = fcol/samples; gl_FragColor.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl index 23b5e76735..7521c3310c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl @@ -103,6 +103,6 @@ void main() discard; } - gl_FragColor.rgb = fcol/wght; + gl_FragColor.rgb = fcol/samples; gl_FragColor.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl index 3a9d9266bb..6702bd5014 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl @@ -229,6 +229,6 @@ void main() discard; } - gl_FragColor.rgb = fcol/wght; + gl_FragColor.rgb = fcol/samples; gl_FragColor.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl index c6f0ea2a5d..d0f9101774 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl @@ -14,7 +14,7 @@ uniform sampler2DMS diffuseRect; uniform sampler2DMS specularRect; uniform sampler2DMS depthMap; uniform sampler2DMS normalMap; -uniform sampler2DMS lightMap; +uniform sampler2DRect lightMap; uniform sampler2D noiseMap; uniform sampler2D lightFunc; uniform sampler2D projectionMap; @@ -112,6 +112,17 @@ void main() ivec2 itc = ivec2(frag.xy); + float shadow = 1.0; + + if (proj_shadow_idx >= 0) + { + vec4 shd = texture2DRect(lightMap, frag); + float sh[2]; + sh[0] = shd.b; + sh[1] = shd.a; + shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); + } + for (int i = 0; i < samples; i++) { vec3 pos = getPosition(itc, i).xyz; @@ -120,17 +131,6 @@ void main() dist2 /= vary_light.w; if (dist2 <= 1.0) { - float shadow = 1.0; - - if (proj_shadow_idx >= 0) - { - vec4 shd = texelFetch(lightMap, itc, i); - float sh[2]; - sh[0] = shd.b; - sh[1] = shd.a; - shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); - } - vec3 norm = texelFetch(normalMap, itc, i).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm @@ -239,6 +239,6 @@ void main() discard; } - gl_FragColor.rgb = fcol/wght; + gl_FragColor.rgb = fcol/samples; gl_FragColor.a = 0.0; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl index 71482d0c7b..cb09fe9895 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl @@ -13,7 +13,7 @@ uniform sampler2DMS diffuseRect; uniform sampler2DMS specularRect; uniform sampler2DMS normalMap; -uniform sampler2DMS lightMap; +uniform sampler2DRect lightMap; uniform sampler2DMS depthMap; uniform sampler2D noiseMap; uniform samplerCube environmentMap; @@ -257,7 +257,8 @@ void main() vec3 fcol = vec3(0,0,0); - float amb = 0; + vec2 scol_ambocc = texture2DRect(lightMap, tc).rg; + float ambocc = scol_ambocc.g; for (int i = 0; i < samples; ++i) { @@ -271,9 +272,9 @@ void main() vec4 diffuse = texelFetch(diffuseRect, itc, i); vec4 spec = texelFetch(specularRect, itc, i); - vec2 scol_ambocc = texelFetch(lightMap, itc, i).rg; + float amb = 0; + float scol = max(scol_ambocc.r, diffuse.a); - float ambocc = scol_ambocc.g; amb += ambocc; calcAtmospherics(pos.xyz, ambocc); diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl index 099a45718a..8d6ffd79c5 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl @@ -14,7 +14,7 @@ uniform sampler2DMS diffuseRect; uniform sampler2DMS specularRect; uniform sampler2DMS depthMap; uniform sampler2DMS normalMap; -uniform sampler2DMS lightMap; +uniform sampler2DRect lightMap; uniform sampler2D noiseMap; uniform sampler2D lightFunc; uniform sampler2D projectionMap; @@ -113,6 +113,17 @@ void main() vec3 fcol = vec3(0,0,0); int wght = 0; + float shadow = 1.0; + + if (proj_shadow_idx >= 0) + { + vec4 shd = texture2DRect(lightMap, frag.xy); + float sh[2]; + sh[0] = shd.b; + sh[1] = shd.a; + shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); + } + for (int i = 0; i < samples; i++) { vec3 pos = getPosition(itc, i).xyz; @@ -121,17 +132,6 @@ void main() dist2 /= vary_light.w; if (dist2 <= 1.0) { - float shadow = 1.0; - - if (proj_shadow_idx >= 0) - { - vec4 shd = texelFetch(lightMap, itc, i); - float sh[2]; - sh[0] = shd.b; - sh[1] = shd.a; - shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0); - } - vec3 norm = texelFetch(normalMap, itc, i).xyz; norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 911a8bb65f..b818da205e 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -353,7 +353,7 @@ void LLViewerShaderMgr::setShaders() } //setup preprocessor definitions - LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gSavedSettings.getU32("RenderFSAASamples")); + LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"))); reentrance = true; @@ -841,7 +841,8 @@ BOOL LLViewerShaderMgr::loadShadersEffects() { BOOL success = TRUE; - bool multisample = gSavedSettings.getU32("RenderFSAASamples") > 0 && gGLManager.mHasTextureMultisample; + U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")); + bool multisample = samples > 1 && LLPipeline::sRenderDeferred && gGLManager.mHasTextureMultisample; if (mVertexShaderLevel[SHADER_EFFECT] == 0) { @@ -870,7 +871,7 @@ BOOL LLViewerShaderMgr::loadShadersEffects() { std::string fragment; - if (gSavedSettings.getU32("RenderFSAASamples") > 0 && LLRenderTarget::sUseFBO && gGLManager.mHasTextureMultisample) + if (multisample) { fragment = "effects/glowExtractMSF.glsl"; } @@ -983,7 +984,8 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() BOOL success = TRUE; - bool multisample = gSavedSettings.getU32("RenderFSAASamples") > 0 && gGLManager.mHasTextureMultisample; + U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")); + bool multisample = samples > 1 && gGLManager.mHasTextureMultisample; if (success) { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index ffe3b4b1a4..1214d1b545 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -589,7 +589,8 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) mScreenWidth = resX; mScreenHeight = resY; - U32 samples = llmin(gSavedSettings.getU32("RenderFSAASamples"), (U32) 16); + //cap samples at 4 for render targets to avoid out of memory errors + U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")); if (gGLManager.mIsATI) { //disable multisampling of render targets where ATI is involved @@ -631,7 +632,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (shadow_detail > 0 || ssao) { //only need mDeferredLight[0] for shadows OR ssao - mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); + mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); } else { @@ -640,7 +641,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (ssao) { //only need mDeferredLight[1] for ssao - mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false, samples); + mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false); } else { @@ -742,13 +743,6 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (LLPipeline::sRenderDeferred) { //share depth buffer between deferred targets mDeferredScreen.shareDepthBuffer(mScreen); - for (U32 i = 0; i < 3; i++) - { //share stencil buffer with screen space lightmap to stencil out sky - if (mDeferredLight[i].getTexture(0)) - { - mDeferredScreen.shareDepthBuffer(mDeferredLight[i]); - } - } } gGL.getTexUnit(0)->disable(); @@ -7751,18 +7745,27 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep) LLViewerTexture* img = volume->getLightTexture(); + if (img == NULL) + { + img = LLViewerFetchedTexture::sWhiteImagep; + } + S32 channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION); - if (channel > -1 && img) + if (channel > -1) { - gGL.getTexUnit(channel)->bind(img); + if (img) + { + gGL.getTexUnit(channel)->bind(img); - F32 lod_range = logf(img->getWidth())/logf(2.f); + F32 lod_range = logf(img->getWidth())/logf(2.f); - shader.uniform1f("proj_focus", focus); - shader.uniform1f("proj_lod", lod_range); - shader.uniform1f("proj_ambient_lod", llclamp((proj_range-focus)/proj_range*lod_range, 0.f, 1.f)); + shader.uniform1f("proj_focus", focus); + shader.uniform1f("proj_lod", lod_range); + shader.uniform1f("proj_ambient_lod", llclamp((proj_range-focus)/proj_range*lod_range, 0.f, 1.f)); + } } + } void LLPipeline::unbindDeferredShader(LLGLSLShader &shader) @@ -9372,6 +9375,11 @@ void LLPipeline::generateSunShadow(LLCamera& camera) mShadow[i+4].flush(); } } + else + { //no spotlight shadows + mShadowSpotLight[0] = mShadowSpotLight[1] = NULL; + } + if (!gSavedSettings.getBOOL("CameraOffset")) { -- cgit v1.2.3 From 354f0e84eb178be79aa08420725ea745376f0e83 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 25 May 2011 16:09:32 -0500 Subject: SH-1537 Make mesh importer use physics shape for bounding hull (again). --- indra/newview/llmeshrepository.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index b79f120eda..1ba553f927 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1702,7 +1702,13 @@ void LLMeshUploadThread::doIterativeUpload() } //queue up models for hull generation - DecompRequest* request = new DecompRequest(data.mModel[LLModel::LOD_HIGH], data.mBaseModel, this); + LLModel* physics = data.mModel[LLModel::LOD_PHYSICS]; + if (physics == NULL) + { //no physics model available, use high lod + physics = data.mModel[LLModel::LOD_HIGH]; + } + + DecompRequest* request = new DecompRequest(physics, data.mBaseModel, this); gMeshRepo.mDecompThread->submitRequest(request); } -- cgit v1.2.3 From e3782b56337a9e0026ce4d2e6e9dabb2d8801be1 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 25 May 2011 17:21:48 -0500 Subject: SH-1644 Don't default avatar hardware skinning to off on all ATI cards. --- indra/newview/featuretable.txt | 1 - indra/newview/featuretable_mac.txt | 27 +-------------------------- indra/newview/featuretable_xp.txt | 1 - 3 files changed, 1 insertion(+), 28 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index dd8a88e558..25dd2ffe78 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -467,7 +467,6 @@ RenderAvatarCloth 0 0 list ATI RenderUseStreamVBO 1 0 -RenderAvatarVP 1 0 // Disable vertex buffer objects by default for ATI cards with little video memory list ATIVramLT256 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index e2b979d9e9..8b8340bd71 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -1,4 +1,4 @@ -version 23 +version 24 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -412,31 +412,6 @@ Disregard128DefaultDrawDistance 1 0 list ATI_Mobility_Radeon_X1xxx Disregard128DefaultDrawDistance 1 0 - - - -// Avatar hardware skinning causes -// invisible avatars on HD 2600... so I masked -// out other possible bad ones till it's fixed - -list ATI_Radeon_HD_2300 -RenderAvatarVP 0 0 -RenderAvatarCloth 0 0 -Disregard128DefaultDrawDistance 1 0 -list ATI_Radeon_HD_2400 -RenderAvatarVP 0 0 -RenderAvatarCloth 0 0 -Disregard128DefaultDrawDistance 1 0 -list ATI_Radeon_HD_2600 -RenderAvatarVP 0 0 -RenderAvatarCloth 0 0 -list ATI_Radeon_HD_2900 -RenderAvatarVP 0 0 -RenderAvatarCloth 0 0 -list ATI_Radeon_HD_3800 -RenderAvatarVP 0 0 -RenderAvatarCloth 0 0 - /// Tweaked NVIDIA list NVIDIA_GeForce_FX_5100 diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index 3339172a1a..65a6f59bbe 100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt @@ -466,7 +466,6 @@ RenderAvatarCloth 0 0 list ATI RenderUseStreamVBO 1 0 -RenderAvatarVP 1 0 // Disable vertex buffer objects by default for ATI cards with little video memory list ATIVramLT256 -- cgit v1.2.3 From 081ba71f9632153efa86df07b33c28471b31e2cb Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Wed, 25 May 2011 18:36:01 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 79541e49d3..d4be311be8 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -62,6 +62,8 @@ #include "llinventorymodel.h" #include "llfoldertype.h" +#include "boost/lexical_cast.hpp" + #ifndef LL_WINDOWS #include "netdb.h" #endif @@ -85,6 +87,12 @@ U32 LLMeshRepository::sPeakKbps = 0; const U32 MAX_TEXTURE_UPLOAD_RETRIES = 5; +static S32 dump_num = 0; +std::string make_dump_name(std::string prefix, S32 num) +{ + return prefix + boost::lexical_cast<std::string>(num) + std::string(".xml"); + +} void dumpLLSDToFile(const LLSD& content, std::string filename); std::string header_lod[] = @@ -498,7 +506,7 @@ public: //assert_main_thread(); llinfos << "completed" << llendl; mThread->mPendingUploads--; - dumpLLSDToFile(content,"whole_model_fee_response.xml"); + dumpLLSDToFile(content,make_dump_name("whole_model_fee_response_",dump_num)); if (isGoodStatus(status)) { mThread->mWholeModelUploadURL = content["uploader"].asString(); @@ -530,7 +538,7 @@ public: //assert_main_thread(); llinfos << "upload completed" << llendl; mThread->mPendingUploads--; - dumpLLSDToFile(content,"whole_model_upload_response.xml"); + dumpLLSDToFile(content,make_dump_name("whole_model_upload_response_",dump_num)); // requested "mesh" asset type isn't actually the type // of the resultant object, fix it up here. mPostData["asset_type"] = "object"; @@ -1437,6 +1445,12 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLMeshUploadData data; data.mBaseModel = iter->first; + LLModelInstance& first_instance = *(iter->second.begin()); + for (S32 i = 0; i < 5; i++) + { + data.mModel[i] = first_instance.mLOD[i]; + } + if (mesh_index.find(data.mBaseModel) == mesh_index.end()) { // Have not seen this model before - create a new mesh_list entry for it. @@ -1573,13 +1587,15 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) } result["asset_resources"] = res; - dumpLLSDToFile(result,"whole_model.xml"); + dumpLLSDToFile(result,make_dump_name("whole_model_",dump_num)); dest = result; } void LLMeshUploadThread::doWholeModelUpload() { + dump_num++; + mCurlRequest = new LLCurlRequest(); // Queue up models for hull generation (viewer-side) @@ -1627,7 +1643,7 @@ void LLMeshUploadThread::doWholeModelUpload() LLSD model_data; wholeModelToLLSD(model_data,false); - dumpLLSDToFile(model_data,"whole_model_fee_request.xml"); + dumpLLSDToFile(model_data,make_dump_name("whole_model_fee_request_",dump_num)); mPendingUploads++; LLCurlRequest::headers_t headers; @@ -1649,7 +1665,7 @@ void LLMeshUploadThread::doWholeModelUpload() LLSD full_model_data; wholeModelToLLSD(full_model_data, true); LLSD body = full_model_data["asset_resources"]; - dumpLLSDToFile(body,"whole_model_body.xml"); + dumpLLSDToFile(body,make_dump_name("whole_model_body_",dump_num)); mCurlRequest->post(mWholeModelUploadURL, headers, body, new LLWholeModelUploadResponder(this, model_data)); do @@ -3317,8 +3333,8 @@ bool LLImportMaterial::operator<(const LLImportMaterial &rhs) const void LLMeshRepository::updateInventory(inventory_data data) { LLMutexLock lock(mMeshMutex); - dumpLLSDToFile(data.mPostData,"update_inventory_post_data.xml"); - dumpLLSDToFile(data.mResponse,"update_inventory_response.xml"); + dumpLLSDToFile(data.mPostData,make_dump_name("update_inventory_post_data_",dump_num)); + dumpLLSDToFile(data.mResponse,make_dump_name("update_inventory_response_",dump_num)); mInventoryQ.push(data); } -- cgit v1.2.3 From 9ef81de6e15fe41a056112810237d2fdb908775b Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 25 May 2011 18:18:34 -0500 Subject: SH-1527 Fix for black alpha objects with lighting and shadows enabled and no lights around. --- .../shaders/class1/deferred/alphaSkinnedV.glsl | 25 +++++++++++++--------- .../shaders/class1/deferred/alphaV.glsl | 25 +++++++++++++--------- .../shaders/class1/deferred/avatarAlphaV.glsl | 25 +++++++++++++--------- .../shaders/class2/deferred/alphaSkinnedV.glsl | 25 +++++++++++++--------- .../shaders/class2/deferred/alphaV.glsl | 25 +++++++++++++--------- .../shaders/class2/deferred/avatarAlphaV.glsl | 25 +++++++++++++--------- 6 files changed, 90 insertions(+), 60 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl index 5addbbb176..65d9209983 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 525b68c437..2691fc8ded 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -36,19 +36,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl index a2a7dea20d..a012cb5030 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl index d227346163..dfb36980b0 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index 86f014df35..f6160815eb 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl index 495e86c8db..0ae09df0c6 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl @@ -37,19 +37,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa //get distance float d = length(lv); - //normalize light vector - lv *= 1.0/d; + float da = 0.0; + + if (d > 0.0 && la > 0.0 && fa > 0.0) + { + //normalize light vector + lv *= 1.0/d; - //distance attenuation - float dist2 = d*d/(la*la); - float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); + //distance attenuation + float dist2 = d*d/(la*la); + da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); - // spotlight coefficient. - float spot = max(dot(-ln, lv), is_pointlight); - da *= spot*spot; // GL_SPOT_EXPONENT=2 + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 - //angular attenuation - da *= calcDirectionalLight(n, lv); + //angular attenuation + da *= calcDirectionalLight(n, lv); + } return da; } -- cgit v1.2.3 From 3a409e6edc95ddee8ea0ff88f8388a8aa840d871 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 25 May 2011 18:45:21 -0500 Subject: SH-1603 Replace every occurrence of "WTF" with something more appropriate. --- indra/newview/lldrawable.cpp | 3 ++- indra/newview/llface.cpp | 9 +------ indra/newview/llfloatermodelpreview.cpp | 8 ++---- indra/newview/llmeshrepository.cpp | 35 +++++-------------------- indra/newview/llspatialpartition.cpp | 46 +++++++-------------------------- indra/newview/llviewerobject.cpp | 2 +- indra/newview/llvotree.cpp | 5 ---- indra/newview/llvovolume.cpp | 10 +------ 8 files changed, 24 insertions(+), 94 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index bdc12ec0e3..7db13868d6 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -695,7 +695,8 @@ void LLDrawable::updateDistance(LLCamera& camera, bool force_update) { if (LLViewerCamera::sCurCameraID != LLViewerCamera::CAMERA_WORLD) { - llerrs << "WTF?" << llendl; + llwarns << "Attempted to update distance for non-world camera." << llendl; + return; } //switch LOD with the spatial group to avoid artifacts diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 5398c13c44..9f9e50ad0a 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -364,14 +364,7 @@ void LLFace::setSize(S32 num_vertices, S32 num_indices, bool align) //allocate vertices in blocks of 4 for alignment num_vertices = (num_vertices + 0x3) & ~0x3; } - else - { - if (mDrawablep->getVOVolume()) - { - llerrs << "WTF?" << llendl; - } - } - + if (mGeomCount != num_vertices || mIndicesCount != num_indices) { diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 46327a6211..3bddd020e1 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1657,7 +1657,7 @@ bool LLModelLoader::doLoadModel() { if (pos.getCount() <= j+2) { - llerrs << "WTF?" << llendl; + llerrs << "Invalid position array size." << llendl; } LLVector3 v(pos[j], pos[j+1], pos[j+2]); @@ -4264,11 +4264,7 @@ void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights) const LLModel::weight_list& weight_list = base_mdl->getJointInfluences(pos); LLVector4 w(0,0,0,0); - if (weight_list.size() > 4) - { - llerrs << "WTF?" << llendl; - } - + for (U32 i = 0; i < weight_list.size(); ++i) { F32 wght = llmin(weight_list[i].mWeight, 0.999999f); diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index b79f120eda..429d035dd7 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -709,10 +709,7 @@ void LLMeshRepoThread::loadMeshLOD(const LLVolumeParams& mesh_params, S32 lod) if (pending != mPendingLOD.end()) { //append this lod request to existing header request pending->second.push_back(lod); - if (pending->second.size() > 4) - { - llerrs << "WTF?" << llendl; - } + llassert(pending->second.size() <= LLModel::NUM_LODS) } else { //if no header request is pending, fetch header @@ -1359,11 +1356,8 @@ void LLMeshUploadThread::DecompRequest::completed() mThread->mPhysicsComplete = true; } - if (mHull.size() != 1) - { - llerrs << "WTF?" << llendl; - } - + llassert(mHull.size() == 1); + mThread->mHullMap[mBaseModel] = mHull[0]; } @@ -1604,11 +1598,8 @@ void LLMeshUploadThread::doWholeModelUpload() physics = data.mModel[LLModel::LOD_HIGH]; } - if (!physics) - { - llerrs << "WTF?" << llendl; - } - + llassert(physics != NULL); + DecompRequest* request = new DecompRequest(physics, data.mBaseModel, this); gMeshRepo.mDecompThread->submitRequest(request); } @@ -2454,10 +2445,6 @@ S32 LLMeshRepository::loadMesh(LLVOVolume* vobj, const LLVolumeParams& mesh_para group->derefLOD(lod); } } - else - { - llerrs << "WTF?" << llendl; - } } return detail; @@ -3142,11 +3129,8 @@ LLSD LLMeshUploadThread::createObject(LLModelInstance& instance) { LLMatrix4 transformation = instance.mTransform; - if (instance.mMeshID.isNull()) - { - llerrs << "WTF?" << llendl; - } - + llassert(instance.mMeshID.notNull()); + // check for reflection BOOL reflected = (transformation.determinant() < 0); @@ -3535,11 +3519,6 @@ void LLPhysicsDecomp::doDecomposition() { ret = LLConvexDecomposition::getInstance()->setParam(param->mName, value.asBoolean()); } - - if (ret) - { - llerrs << "WTF?" << llendl; - } } mCurRequest->setStatusMessage("Executing."); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index fa329eb0ae..a812ba4e03 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -689,17 +689,8 @@ static LLFastTimer::DeclareTimer FTM_REBUILD_VBO("VBO Rebuilt"); void LLSpatialPartition::rebuildGeom(LLSpatialGroup* group) { - /*if (!gPipeline.hasRenderType(mDrawableType)) - { - return; - }*/ - if (group->isDead() || !group->isState(LLSpatialGroup::GEOM_DIRTY)) { - /*if (!group->isState(LLSpatialGroup::GEOM_DIRTY) && mRenderByGroup) - { - llerrs << "WTF?" << llendl; - }*/ return; } @@ -961,21 +952,15 @@ void LLSpatialGroup::setState(U32 state) { mState |= state; - if (state > LLSpatialGroup::STATE_MASK) - { - llerrs << "WTF?" << llendl; - } + llassert(state <= LLSpatialGroup::STATE_MASK); } void LLSpatialGroup::setState(U32 state, S32 mode) { LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION); - if (state > LLSpatialGroup::STATE_MASK) - { - llerrs << "WTF?" << llendl; - } - + llassert(state <= LLSpatialGroup::STATE_MASK); + if (mode > STATE_MODE_SINGLE) { if (mode == STATE_MODE_DIFF) @@ -1021,20 +1006,14 @@ public: void LLSpatialGroup::clearState(U32 state) { - if (state > LLSpatialGroup::STATE_MASK) - { - llerrs << "WTF?" << llendl; - } + llassert(state <= LLSpatialGroup::STATE_MASK); mState &= ~state; } void LLSpatialGroup::clearState(U32 state, S32 mode) { - if (state > LLSpatialGroup::STATE_MASK) - { - llerrs << "WTF?" << llendl; - } + llassert(state <= LLSpatialGroup::STATE_MASK); LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION); @@ -1059,10 +1038,7 @@ void LLSpatialGroup::clearState(U32 state, S32 mode) BOOL LLSpatialGroup::isState(U32 state) const { - if (state > LLSpatialGroup::STATE_MASK) - { - llerrs << "WTF?" << llendl; - } + llassert(state <= LLSpatialGroup::STATE_MASK); return mState & state ? TRUE : FALSE; } @@ -1250,7 +1226,8 @@ void LLSpatialGroup::updateDistance(LLCamera &camera) { if (LLViewerCamera::sCurCameraID != LLViewerCamera::CAMERA_WORLD) { - llerrs << "WTF?" << llendl; + llwarns << "Attempted to update distance for camera other than world camera!" << llendl; + return; } #if !LL_RELEASE_FOR_DOWNLOAD @@ -2064,11 +2041,8 @@ public: virtual void processGroup(LLSpatialGroup* group) { - if (group->isState(LLSpatialGroup::DIRTY) || group->getData().empty()) - { - llerrs << "WTF?" << llendl; - } - + llassert(!group->isState(LLSpatialGroup::DIRTY) && !group->getData().empty()) + if (mRes < 2) { if (mCamera->AABBInFrustum(group->mObjectBounds[0], group->mObjectBounds[1]) > 0) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index e7878d8adf..72cdb4b355 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1894,7 +1894,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, // // - // WTF? If we're going to skip this message, why are we + // If we're going to skip this message, why are we // doing all the parenting, etc above? U32 packet_id = mesgsys->getCurrentRecvPacketID(); if (packet_id < mLatestRecvPacketID && diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 8946d4e0b6..3c7fe708e6 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -980,11 +980,6 @@ void LLVOTree::appendMesh(LLStrider<LLVector3>& vertices, for (S32 i = 0; i < index_count; i++) { U16 index = index_offset + i; - if (idx[index] >= vert_start + vert_count || - idx[index] < vert_start) - { - llerrs << "WTF?" << llendl; - } *indices++ = idx[index]-vert_start+cur_idx; } diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index e9a8c9b80a..943de669f6 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4297,11 +4297,6 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) face->getGeometryVolume(*volume, face->getTEOffset(), vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), face->getGeomIndex()); } - - if (!face) - { - llerrs << "WTF?" << llendl; - } } drawablep->clearState(LLDrawable::REBUILD_ALL); @@ -4356,10 +4351,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) group->clearState(LLSpatialGroup::MESH_DIRTY | LLSpatialGroup::NEW_DRAWINFO); } - if (group && group->isState(LLSpatialGroup::NEW_DRAWINFO)) - { - llerrs << "WTF?" << llendl; - } + llassert(!group || !group->isState(LLSpatialGroup::NEW_DRAWINFO)); } void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort) -- cgit v1.2.3 From a6fa155725205d1e6207abfe1112f92bbe38203d Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 25 May 2011 19:23:57 -0500 Subject: Make avatars use same shadow offset magic as prims. --- .../app_settings/shaders/class1/deferred/avatarShadowF.glsl | 3 +++ .../app_settings/shaders/class1/deferred/avatarShadowV.glsl | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl index 1b7ae06888..3d0884bbe8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl @@ -9,10 +9,13 @@ uniform sampler2D diffuseMap; +varying vec4 post_pos; void main() { //gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a); gl_FragColor = vec4(1,1,1,1); + + gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl index cf6579a40d..3460f40657 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl @@ -11,6 +11,8 @@ mat4 getSkinnedTransform(); attribute vec4 weight; +varying vec4 post_pos; + void main() { gl_TexCoord[0] = gl_MultiTexCoord0; @@ -30,8 +32,9 @@ void main() norm = normalize(norm); pos = gl_ProjectionMatrix * pos; - pos.z = max(pos.z, -pos.w+0.01); - gl_Position = pos; + post_pos = pos; + + gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w); gl_FrontColor = gl_Color; } -- cgit v1.2.3 From 9ecc872b731b5863f320446089bc5679832b0890 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Thu, 26 May 2011 05:43:35 -0400 Subject: STORM-1273 Duplicate entries in settings.xml --- indra/newview/app_settings/settings.xml | 22 ---------------------- 1 file changed, 22 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 78db307d64..1a202c168a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3245,17 +3245,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>FirstLoginThisInstall</key> - <map> - <key>Comment</key> - <string>Specifies that you have not successfully logged in since you installed the latest update</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>FirstName</key> <map> <key>Comment</key> @@ -8857,17 +8846,6 @@ <integer>0</integer> </map> <key>RenderUseTriStrips</key> - <map> - <key>Comment</key> - <string>Use triangle strips for rendering prims.</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> - <key>RenderUseTriStrips</key> <map> <key>Comment</key> <string>Use triangle strips for rendering prims.</string> -- cgit v1.2.3 From bf8b02b1f31ac1b3959a537568b712fdf16d02e2 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Thu, 26 May 2011 09:17:14 -0400 Subject: STORM-899 'No attachments worn' text on blank 'Attachments' accordion remains in English for all locales --- indra/newview/llcofwearables.cpp | 3 ++- indra/newview/llcofwearables.h | 2 +- indra/newview/skins/default/xui/en/panel_cof_wearables.xml | 3 --- indra/newview/skins/default/xui/en/strings.xml | 2 ++ 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 84c560639e..9a30979b9b 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -296,7 +296,7 @@ LLCOFWearables::~LLCOFWearables() // virtual BOOL LLCOFWearables::postBuild() { - mAttachments = getChild<LLFlatListView>("list_attachments"); + mAttachments = getChild<LLFlatListViewEx>("list_attachments"); mClothing = getChild<LLFlatListView>("list_clothing"); mBodyParts = getChild<LLFlatListView>("list_body_parts"); @@ -317,6 +317,7 @@ BOOL LLCOFWearables::postBuild() mAttachments->setComparator(&WEARABLE_NAME_COMPARATOR); mBodyParts->setComparator(&WEARABLE_NAME_COMPARATOR); + mAttachments->setNoItemsMsg(getString("no_attachments")); mClothingTab = getChild<LLAccordionCtrlTab>("tab_clothing"); mClothingTab->setDropDownStateChangedCallback(boost::bind(&LLCOFWearables::onAccordionTabStateChanged, this, _1, _2)); diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index 1f8d6d0c94..271e36e87d 100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h @@ -106,7 +106,7 @@ protected: void onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu); - LLFlatListView* mAttachments; + LLFlatListViewEx* mAttachments; LLFlatListView* mClothing; LLFlatListView* mBodyParts; diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml index f438e3d42d..bbeb592e96 100644 --- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml @@ -53,9 +53,6 @@ name="list_attachments" top="0" width="311"> - <flat_list_view.no_items_text - value="No attachments worn" /> - </flat_list_view> </accordion_tab> <accordion_tab layout="topleft" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index f8c90106b7..f7599c70ff 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2092,6 +2092,8 @@ Requests name of an avatar. When data is available the dataserver event will be <string name="InvFolder Friends">Friends</string> <string name="InvFolder All">All</string> + <string name="no_attachments">No attachments worn</string> + <!-- inventory FVBridge --> <!-- This is used in llpanelinventory.cpp when constructing a context menu for an item for Sale --> <string name="Buy">Buy</string> -- cgit v1.2.3 From 8b552a25c4fb1e9babdd52c5a5acee3540f353ac Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Thu, 26 May 2011 13:56:12 -0400 Subject: SH-1492 WIP - include face info even if textures not being uploaded --- indra/newview/llmeshrepository.cpp | 88 ++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 46 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index d4be311be8..7c75599a15 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1525,60 +1525,56 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) instance_entry["physics_shape_type"] = (U8)(LLViewerObject::PHYSICS_SHAPE_CONVEX_HULL); instance_entry["mesh"] = mesh_index[data.mBaseModel]; - if (mUploadTextures) + instance_entry["face_list"] = LLSD::emptyArray(); + + for (S32 face_num = 0; face_num < data.mBaseModel->getNumVolumeFaces(); face_num++) { - instance_entry["face_list"] = LLSD::emptyArray(); + LLImportMaterial& material = instance.mMaterial[face_num]; + LLSD face_entry = LLSD::emptyMap(); + LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); + + if ((texture != NULL) && + (textures.find(texture) == textures.end())) + { + textures.insert(texture); + } - for (S32 face_num = 0; face_num < data.mBaseModel->getNumVolumeFaces(); face_num++) + std::stringstream texture_str; + if (texture != NULL && include_textures && mUploadTextures) { - LLImportMaterial& material = instance.mMaterial[face_num]; - LLSD face_entry = LLSD::emptyMap(); - LLViewerFetchedTexture *texture = material.mDiffuseMap.get(); - - if (texture != NULL) + // Get binary rep of texture, if needed. + LLTextureUploadData data(texture, material.mDiffuseMapLabel); + if (!data.mTexture->isRawImageValid()) { - if (textures.find(texture) == textures.end()) - { - textures.insert(texture); - } - - std::stringstream ostr; - if (include_textures) // otherwise data is blank. - { - LLTextureUploadData data(texture, material.mDiffuseMapLabel); - if (!data.mTexture->isRawImageValid()) - { - data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); - } + data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); + } - LLPointer<LLImageJ2C> upload_file = - LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); - ostr.write((const char*) upload_file->getData(), upload_file->getDataSize()); - } + LLPointer<LLImageJ2C> upload_file = + LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); + texture_str.write((const char*) upload_file->getData(), upload_file->getDataSize()); + } - if (texture_index.find(texture) == texture_index.end()) - { - texture_index[texture] = texture_num; - std::string str = ostr.str(); - res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); - texture_num++; - } - } + if (texture_index.find(texture) == texture_index.end()) + { + texture_index[texture] = texture_num; + std::string str = texture_str.str(); + res["texture_list"][texture_num] = LLSD::Binary(str.begin(),str.end()); + texture_num++; + } - // Subset of TextureEntry fields. - if (texture) - { - face_entry["image"] = texture_index[texture]; - } - face_entry["scales"] = 1.0; - face_entry["scalet"] = 1.0; - face_entry["offsets"] = 0.0; - face_entry["offsett"] = 0.0; - face_entry["imagerot"] = 0.0; - face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); - face_entry["fullbright"] = material.mFullbright; - instance_entry["face_list"][face_num] = face_entry; + // Subset of TextureEntry fields. + if (texture) + { + face_entry["image"] = texture_index[texture]; } + face_entry["scales"] = 1.0; + face_entry["scalet"] = 1.0; + face_entry["offsets"] = 0.0; + face_entry["offsett"] = 0.0; + face_entry["imagerot"] = 0.0; + face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); + face_entry["fullbright"] = material.mFullbright; + instance_entry["face_list"][face_num] = face_entry; } res["instance_list"][instance_num] = instance_entry; -- cgit v1.2.3 From 01c5e12853b60d6f9ddc4f32b1450548beb09736 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Thu, 26 May 2011 18:22:14 -0400 Subject: SH-1492 WIP --- indra/newview/llmeshrepository.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 7c75599a15..5074caccb6 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1554,7 +1554,9 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) texture_str.write((const char*) upload_file->getData(), upload_file->getDataSize()); } - if (texture_index.find(texture) == texture_index.end()) + if (texture != NULL && + mUploadTextures && + texture_index.find(texture) == texture_index.end()) { texture_index[texture] = texture_num; std::string str = texture_str.str(); @@ -1563,15 +1565,15 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) } // Subset of TextureEntry fields. - if (texture) + if (texture != NULL && mUploadTextures) { face_entry["image"] = texture_index[texture]; + face_entry["scales"] = 1.0; + face_entry["scalet"] = 1.0; + face_entry["offsets"] = 0.0; + face_entry["offsett"] = 0.0; + face_entry["imagerot"] = 0.0; } - face_entry["scales"] = 1.0; - face_entry["scalet"] = 1.0; - face_entry["offsets"] = 0.0; - face_entry["offsett"] = 0.0; - face_entry["imagerot"] = 0.0; face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); face_entry["fullbright"] = material.mFullbright; instance_entry["face_list"][face_num] = face_entry; -- cgit v1.2.3 From 53e890f4fdab1ab014b745c5d872b240b8c4ce76 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 26 May 2011 20:37:15 -0500 Subject: SH-1359 General octree tune-up -- increase maximum capacity of an octree node and rework requested octree node sizes for minimum triangles per frame and maximum triangles per drawing call. --- indra/newview/app_settings/settings.xml | 75 +++++++++++++++++++++++++++++++-- indra/newview/lldrawable.cpp | 9 +++- indra/newview/lldrawable.h | 1 + indra/newview/llspatialpartition.cpp | 42 ++++++++---------- indra/newview/llviewercontrol.cpp | 16 +++++++ indra/newview/llviewerdisplay.cpp | 1 + indra/newview/llviewerobjectlist.cpp | 18 ++++++++ indra/newview/llviewerobjectlist.h | 1 + indra/newview/llvovolume.cpp | 48 +++++++++++++++------ indra/newview/pipeline.cpp | 28 +++++++++++- indra/newview/pipeline.h | 7 ++- 11 files changed, 201 insertions(+), 45 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 78db307d64..2c6d75e3c9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7091,7 +7091,76 @@ <key>Value</key> <integer>1</integer> </map> - <key>RenderAnisotropic</key> + + <key>OctreeMaxNodeCapacity</key> + <map> + <key>Comment</key> + <string>Maximum number of elements to store in a single octree node</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>128</integer> + </map> + + <key>OctreeStaticObjectSizeFactor</key> + <map> + <key>Comment</key> + <string>Multiplier on static object size for determining octree node size </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>1</integer> + </map> + + <key>OctreeAlphaDistanceFactor</key> + <map> + <key>Comment</key> + <string>Multiplier on alpha object distance for determining octree node size </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>0.05</real> + <real>0.0</real> + <real>0.0</real> + </array> + </map> + + <key>OctreeAttachmentSizeFactor</key> + <map> + <key>Comment</key> + <string>Multiplier on attachment size for determining octree node size </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>4</integer> + </map> + + <key>OctreeDistanceFactor</key> + <map> + <key>Comment</key> + <string>Multiplier on distance for determining octree node size </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Vector3</string> + <key>Value</key> + <array> + <real>0.05</real> + <real>0.0</real> + <real>0.0</real> + </array> + </map> + + <key>RenderAnisotropic</key> <map> <key>Comment</key> <string>Render textures using anisotropic filtering</string> @@ -7188,7 +7257,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <integer>1.0</integer> + <real>1.0</real> </map> <key>RenderAvatarVP</key> <map> @@ -8589,7 +8658,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>8192</integer> + <integer>65536</integer> </map> <key>RenderMaxVBOSize</key> <map> diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 7db13868d6..ad3710843c 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -94,7 +94,9 @@ void LLDrawable::init() mRenderType = 0; mCurrentScale = LLVector3(1,1,1); mDistanceWRTCamera = 0.0f; - + mPositionGroup.clear(); + mExtents[0].clear(); + mExtents[1].clear(); mQuietCount = 0; mState = 0; @@ -587,7 +589,10 @@ void LLDrawable::setRadius(F32 radius) void LLDrawable::moveUpdatePipeline(BOOL moved) { - makeActive(); + if (moved) + { + makeActive(); + } // Update the face centers. for (S32 i = 0; i < getNumFaces(); i++) diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 9ebe1a45b4..e268640a21 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -276,6 +276,7 @@ public: REBUILD_SHADOW = 0x02000000, HAS_ALPHA = 0x04000000, RIGGED = 0x08000000, + PARTITION_MOVE = 0x10000000, } EDrawableFlags; private: //aligned members diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index a812ba4e03..8143d6a41f 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -69,6 +69,7 @@ U32 LLSpatialGroup::sNodeCount = 0; std::set<GLuint> LLSpatialGroup::sPendingQueries; +U32 gOctreeMaxCapacity; BOOL LLSpatialGroup::sNoDelete = FALSE; @@ -630,7 +631,7 @@ BOOL LLSpatialGroup::updateInGroup(LLDrawable *drawablep, BOOL immediate) if (mOctreeNode->isInside(drawablep->getPositionGroup()) && (mOctreeNode->contains(drawablep) || (drawablep->getBinRadius() > mOctreeNode->getSize()[0] && - parent && parent->getElementCount() >= LL_OCTREE_MAX_CAPACITY))) + parent && parent->getElementCount() >= gOctreeMaxCapacity))) { unbound(); setState(OBJECT_DIRTY); @@ -2515,7 +2516,7 @@ void renderOctree(LLSpatialGroup* group) //coded by buffer usage and activity gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA); LLVector4 col; - if (group->mBuilt > 0.f) + /*if (group->mBuilt > 0.f) { group->mBuilt -= 2.f * gFrameIntervalSeconds; if (group->mBufferUsage == GL_STATIC_DRAW_ARB) @@ -2584,7 +2585,7 @@ void renderOctree(LLSpatialGroup* group) gGL.color4f(1,1,1,1); } } - else + else*/ { if (group->mBufferUsage == GL_STATIC_DRAW_ARB && !group->getData().empty() && group->mSpatialPartition->mRenderByGroup) @@ -2604,33 +2605,24 @@ void renderOctree(LLSpatialGroup* group) size.mul(1.01f); size.add(fudge); - { - LLGLDepthTest depth(GL_TRUE, GL_FALSE); - drawBox(group->mObjectBounds[0], fudge); - } + //{ + // LLGLDepthTest depth(GL_TRUE, GL_FALSE); + // drawBox(group->mObjectBounds[0], fudge); + //} gGL.setSceneBlendType(LLRender::BT_ALPHA); - if (group->mBuilt <= 0.f) + //if (group->mBuilt <= 0.f) { //draw opaque outline - gGL.color4f(col.mV[0], col.mV[1], col.mV[2], 1.f); - drawBoxOutline(group->mObjectBounds[0], group->mObjectBounds[1]); + //gGL.color4f(col.mV[0], col.mV[1], col.mV[2], 1.f); + //drawBoxOutline(group->mObjectBounds[0], group->mObjectBounds[1]); - if (group->mOctreeNode->isLeaf()) - { - gGL.color4f(1,1,1,1); - } - else - { - gGL.color4f(0,1,1,1); - } - + gGL.color4f(0,1,1,1); drawBoxOutline(group->mBounds[0],group->mBounds[1]); - - + //draw bounding box for draw info - if (group->mSpatialPartition->mRenderByGroup) + /*if (group->mSpatialPartition->mRenderByGroup) { gGL.color4f(1.0f, 0.75f, 0.25f, 0.6f); for (LLSpatialGroup::draw_map_t::iterator i = group->mDrawMap.begin(); i != group->mDrawMap.end(); ++i) @@ -2647,7 +2639,7 @@ void renderOctree(LLSpatialGroup* group) drawBoxOutline(center, size); } } - } + }*/ } // LLSpatialGroup::OctreeNode* node = group->mOctreeNode; @@ -2690,7 +2682,7 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera) gGL.color4f(0.f, 0.75f, 0.f, 0.5f); pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX); } - else if (camera && group->mOcclusionVerts.notNull()) + /*else if (camera && group->mOcclusionVerts.notNull()) { LLVertexBuffer::unbind(); group->mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX); @@ -2702,7 +2694,7 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera) glColor4f(1.0f, 1.f, 1.f, 1.0f); group->mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, group->mBounds[0])); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - } + }*/ } } diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 00a0b87d93..61200db2b9 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -57,6 +57,7 @@ #include "llworld.h" #include "pipeline.h" #include "llviewerjoystick.h" +#include "llviewerobjectlist.h" #include "llviewerparcelmgr.h" #include "llparcel.h" #include "llkeyboard.h" @@ -372,6 +373,16 @@ static bool handleResetVertexBuffersChanged(const LLSD&) return true; } +static bool handleRepartition(const LLSD&) +{ + if (gPipeline.isInit()) + { + gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity"); + gObjectList.repartitionObjects(); + } + return true; +} + static bool handleRenderDynamicLODChanged(const LLSD& newvalue) { LLPipeline::sDynamicLOD = newvalue.asBoolean(); @@ -575,6 +586,11 @@ void settings_setup_listeners() gSavedSettings.getControl("FirstPersonAvatarVisible")->getSignal()->connect(boost::bind(&handleRenderAvatarMouselookChanged, _2)); gSavedSettings.getControl("RenderFarClip")->getSignal()->connect(boost::bind(&handleRenderFarClipChanged, _2)); gSavedSettings.getControl("RenderTerrainDetail")->getSignal()->connect(boost::bind(&handleTerrainDetailChanged, _2)); + gSavedSettings.getControl("OctreeStaticObjectSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); + gSavedSettings.getControl("OctreeDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); + gSavedSettings.getControl("OctreeMaxNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2)); + gSavedSettings.getControl("OctreeAlphaDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); + gSavedSettings.getControl("OctreeAttachmentSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); gSavedSettings.getControl("RenderUseTriStrips")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderAnimateTrees")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 10e96525ce..5dadd2c33b 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -582,6 +582,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLMemType mt_ug(LLMemType::MTYPE_DISPLAY_UPDATE_GEOM); const F32 max_geom_update_time = 0.005f*10.f*gFrameIntervalSeconds; // 50 ms/second update time gPipeline.createObjects(max_geom_update_time); + gPipeline.processPartitionQ(); gPipeline.updateGeom(max_geom_update_time); stop_glerror(); } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 78b06b0764..45c6777ae8 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1497,6 +1497,24 @@ void LLViewerObjectList::shiftObjects(const LLVector3 &offset) LLWorld::getInstance()->shiftRegions(offset); } +void LLViewerObjectList::repartitionObjects() +{ + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) + { + LLViewerObject* objectp = *iter; + if (!objectp->isDead()) + { + LLDrawable* drawable = objectp->mDrawable; + if (drawable && !drawable->isDead()) + { + drawable->updateBinRadius(); + drawable->updateSpatialExtents(); + drawable->movePartition(); + } + } + } +} + //debug code bool LLViewerObjectList::hasMapObjectInRegion(LLViewerRegion* regionp) { diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 6f0d285f5d..9d1b5cb56f 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -105,6 +105,7 @@ public: void updateQuota( const LLUUID& objectId, const SelectionQuota& costs ); void shiftObjects(const LLVector3 &offset); + void repartitionObjects(); bool hasMapObjectInRegion(LLViewerRegion* regionp) ; void clearAllMapObjectsInRegion(LLViewerRegion* regionp) ; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 943de669f6..cc443d32fb 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1245,7 +1245,19 @@ BOOL LLVOVolume::calcLOD() if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_LOD_INFO)) { - setDebugText(llformat("%.2f:%.2f, %d", debug_distance, radius, cur_detail)); + //setDebugText(llformat("%.2f:%.2f, %d", debug_distance, radius, cur_detail)); + + F32 bin_radius = getBinRadius(); + F32 node_size = 0.f; + + LLSpatialGroup* group = mDrawable->getSpatialGroup(); + if (group) + { + LLSpatialGroup::OctreeNode* node = group->mOctreeNode; + node_size = node->getSize()[0]; + } + + setDebugText(llformat("%.2f:%.2f", bin_radius, node_size)); } if (cur_detail != mLOD) @@ -1274,6 +1286,15 @@ BOOL LLVOVolume::updateLOD() gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE); mLODChanged = TRUE; } + else + { + F32 new_radius = getBinRadius(); + F32 old_radius = mDrawable->getBinRadius(); + if (new_radius < old_radius * 0.9f || new_radius > old_radius*1.1f) + { + gPipeline.markPartitionMove(mDrawable); + } + } lod_changed = lod_changed || LLViewerObject::updateLOD(); @@ -3187,6 +3208,10 @@ F32 LLVOVolume::getBinRadius() F32 scale = 1.f; + S32 size_factor = llmax(gSavedSettings.getS32("OctreeStaticObjectSizeFactor"), 1); + S32 attachment_size_factor = llmax(gSavedSettings.getS32("OctreeAttachmentSizeFactor"), 1); + LLVector3 distance_factor = gSavedSettings.getVector3("OctreeDistanceFactor"); + LLVector3 alpha_distance_factor = gSavedSettings.getVector3("OctreeAlphaDistanceFactor"); const LLVector4a* ext = mDrawable->getSpatialExtents(); BOOL shrink_wrap = mDrawable->isAnimating(); @@ -3216,6 +3241,8 @@ F32 LLVOVolume::getBinRadius() radius = llmin(bounds.mV[1], bounds.mV[2]); radius = llmin(radius, bounds.mV[0]); radius *= 0.5f; + radius *= 1.f+mDrawable->mDistanceWRTCamera*alpha_distance_factor[1]; + radius += mDrawable->mDistanceWRTCamera*alpha_distance_factor[0]; } else if (shrink_wrap) { @@ -3226,24 +3253,19 @@ F32 LLVOVolume::getBinRadius() } else if (mDrawable->isStatic()) { - /*if (mDrawable->getRadius() < 2.0f) - { - radius = 16.f; - } - else - { - radius = llmax(mDrawable->getRadius(), 32.f); - }*/ - - radius = (((S32) mDrawable->getRadius())/2+1)*8; + radius = llmax((S32) mDrawable->getRadius(), 1)*size_factor; + radius *= 1.f + mDrawable->mDistanceWRTCamera * distance_factor[1]; + radius += mDrawable->mDistanceWRTCamera * distance_factor[0]; } else if (mDrawable->getVObj()->isAttachment()) { - radius = (((S32) (mDrawable->getRadius()*4)+1))*2; + radius = llmax((S32) mDrawable->getRadius(),1)*attachment_size_factor; } else { - radius = 8.f; + radius = mDrawable->getRadius(); + radius *= 1.f + mDrawable->mDistanceWRTCamera * distance_factor[1]; + radius += mDrawable->mDistanceWRTCamera * distance_factor[0]; } return llclamp(radius*scale, 0.5f, 256.f); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 1214d1b545..fadae7c71e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -392,6 +392,7 @@ void LLPipeline::init() { LLMemType mt(LLMemType::MTYPE_PIPELINE_INIT); + gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity"); sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD"); sRenderBump = gSavedSettings.getBOOL("RenderObjectBump"); sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips"); @@ -2519,6 +2520,32 @@ void LLPipeline::markGLRebuild(LLGLUpdate* glu) } } +void LLPipeline::markPartitionMove(LLDrawable* drawable) +{ + if (!drawable->isState(LLDrawable::PARTITION_MOVE) && + !drawable->getPositionGroup().equals3(LLVector4a::getZero())) + { + drawable->setState(LLDrawable::PARTITION_MOVE); + mPartitionQ.push_back(drawable); + } +} + +void LLPipeline::processPartitionQ() +{ + for (LLDrawable::drawable_list_t::iterator iter = mPartitionQ.begin(); iter != mPartitionQ.end(); ++iter) + { + LLDrawable* drawable = *iter; + if (!drawable->isDead()) + { + drawable->updateBinRadius(); + drawable->movePartition(); + } + drawable->clearState(LLDrawable::PARTITION_MOVE); + } + + mPartitionQ.clear(); +} + void LLPipeline::markRebuild(LLSpatialGroup* group, BOOL priority) { LLMemType mt(LLMemType::MTYPE_PIPELINE); @@ -5888,7 +5915,6 @@ LLSpatialPartition* LLPipeline::getSpatialPartition(LLViewerObject* vobj) return NULL; } - void LLPipeline::resetVertexBuffers(LLDrawable* drawable) { if (!drawable || drawable->isDead()) diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index ed4a803e7e..e967b8c31e 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -157,7 +157,8 @@ public: void markGLRebuild(LLGLUpdate* glu); void markRebuild(LLSpatialGroup* group, BOOL priority = FALSE); void markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags flag = LLDrawable::REBUILD_ALL, BOOL priority = FALSE); - + void markPartitionMove(LLDrawable* drawablep); + //get the object between start and end that's closest to start. LLViewerObject* lineSegmentIntersectInWorld(const LLVector3& start, const LLVector3& end, BOOL pick_transparent, @@ -211,6 +212,7 @@ public: void updateCull(LLCamera& camera, LLCullResult& result, S32 water_clip = 0, LLPlane* plane = NULL); //if water_clip is 0, ignore water plane, 1, cull to above plane, -1, cull to below plane void createObjects(F32 max_dtime); void createObject(LLViewerObject* vobj); + void processPartitionQ(); void updateGeom(F32 max_dtime); void updateGL(); void rebuildPriorityGroups(); @@ -636,6 +638,9 @@ protected: LLDrawable::drawable_list_t mBuildQ2; // non-priority LLSpatialGroup::sg_vector_t mGroupQ1; //priority LLSpatialGroup::sg_vector_t mGroupQ2; // non-priority + + LLDrawable::drawable_list_t mPartitionQ; //drawables that need to update their spatial partition radius + bool mGroupQ2Locked; bool mGroupQ1Locked; -- cgit v1.2.3 From 31e850d04885bed2ac779c66bb6b7923a0a51d96 Mon Sep 17 00:00:00 2001 From: Roxie Linden <roxie@lindenlab.com> Date: Fri, 27 May 2011 11:50:39 -0700 Subject: transplant fix for SH-1467 viewer now uses simulatorfeatures to check whether to show UI elements for mesh or not --- indra/newview/llfloaterregioninfo.cpp | 5 ++- indra/newview/llfloatertools.cpp | 7 ++--- indra/newview/llmanipscale.cpp | 5 ++- indra/newview/llmeshrepository.cpp | 31 +++++++++++++++++++ indra/newview/llmeshrepository.h | 4 +++ indra/newview/llpanelobject.cpp | 5 ++- indra/newview/llpanelvolume.cpp | 14 +++++++-- indra/newview/llviewermenufile.cpp | 4 +-- indra/newview/llviewerregion.cpp | 57 +++++++++++++++++++++++++++++++++++ indra/newview/llviewerregion.h | 4 +++ indra/newview/llviewerwindow.cpp | 2 +- 11 files changed, 118 insertions(+), 20 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index fc6976755f..6b3e3088d5 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -82,6 +82,7 @@ #include "llvlcomposition.h" #include "lltrans.h" #include "llagentui.h" +#include "llmeshrepository.h" const S32 TERRAIN_TEXTURE_COUNT = 4; const S32 CORNER_COUNT = 4; @@ -590,9 +591,7 @@ bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region) getChildView("im_btn")->setEnabled(allow_modify); getChildView("manage_telehub_btn")->setEnabled(allow_modify); - const bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") && - gAgent.getRegion() && - !gAgent.getRegion()->getCapability("GetMesh").empty(); + const bool enable_mesh = gMeshRepo.meshRezEnabled(); getChildView("mesh_rez_enabled_check")->setVisible(enable_mesh); getChildView("mesh_rez_enabled_check")->setEnabled(getChildView("mesh_rez_enabled_check")->getEnabled() && enable_mesh); // Data gets filled in by processRegionInfo diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 061a42ab57..0f11d05175 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -86,6 +86,7 @@ #include "llvovolume.h" #include "lluictrlfactory.h" #include "llaccountingquotamanager.h" +#include "llmeshrepository.h" // Globals LLFloaterTools *gFloaterTools = NULL; @@ -423,7 +424,7 @@ void LLFloaterTools::refresh() // Refresh object and prim count labels LLLocale locale(LLLocale::USER_LOCALE); - if ((gAgent.getRegion() && gAgent.getRegion()->getCapability("GetMesh").empty()) || !gSavedSettings.getBOOL("MeshEnabled")) + if (gMeshRepo.meshRezEnabled()) { std::string obj_count_string; LLResMgr::getInstance()->getIntegerString(obj_count_string, LLSelectMgr::getInstance()->getSelection()->getRootObjectCount()); @@ -788,9 +789,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) getChildView("Strength:")->setVisible( land_visible); } - bool show_mesh_cost = gAgent.getRegion() && - !gAgent.getRegion()->getCapability("GetMesh").empty() && - gSavedSettings.getBOOL("MeshEnabled"); + bool show_mesh_cost = gMeshRepo.meshRezEnabled(); getChildView("obj_count")->setVisible( !land_visible && !show_mesh_cost); getChildView("prim_count")->setVisible( !land_visible && !show_mesh_cost); diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 738d82e732..4eb94dfb8e 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -58,6 +58,7 @@ #include "llworld.h" #include "v2math.h" #include "llvoavatar.h" +#include "llmeshrepository.h" const F32 MAX_MANIP_SELECT_DISTANCE_SQUARED = 11.f * 11.f; @@ -90,9 +91,7 @@ F32 get_default_max_prim_scale(bool is_flora) { // a bit of a hack, but if it's foilage, we don't want to use the // new larger scale which would result in giant trees and grass - if (gSavedSettings.getBOOL("MeshEnabled") && - gAgent.getRegion() && - !gAgent.getRegion()->getCapability("GetMesh").empty() && + if (gMeshRepo.meshRezEnabled() && !is_flora) { return DEFAULT_MAX_PRIM_SCALE; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 4464d299ed..4e75219c3e 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -61,6 +61,7 @@ #include "pipeline.h" #include "llinventorymodel.h" #include "llfoldertype.h" +#include "llviewerparcelmgr.h" #include "boost/lexical_cast.hpp" @@ -3957,3 +3958,33 @@ void LLMeshRepository::buildPhysicsMesh(LLModel::Decomposition& decomp) } } } + +bool LLMeshRepository::meshUploadEnabled() +{ + LLViewerRegion *region = gAgent.getRegion(); + if(gSavedSettings.getBOOL("MeshEnabled") && + LLViewerParcelMgr::getInstance()->allowAgentBuild() && + region) + { + LLSD sim_features; + region->getSimulatorFeatures(sim_features); + return (sim_features.has("MeshUploadEnabled") && + sim_features["MeshUploadEnabled"].asBoolean()); + } + return false; +} + +bool LLMeshRepository::meshRezEnabled() +{ + LLViewerRegion *region = gAgent.getRegion(); + if(gSavedSettings.getBOOL("MeshEnabled") && + region) + { + LLSD sim_features; + region->getSimulatorFeatures(sim_features); + return (sim_features.has("MeshRezEnabled") && + sim_features["MeshRezEnabled"].asBoolean()); + } + return false; +} + diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 0a6954bade..44cf7dadf6 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -482,6 +482,10 @@ public: void buildHull(const LLVolumeParams& params, S32 detail); void buildPhysicsMesh(LLModel::Decomposition& decomp); + + bool meshUploadEnabled(); + bool meshRezEnabled(); + LLSD& getMeshHeader(const LLUUID& mesh_id); diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 34a92cd0ac..61241e3ce5 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -64,6 +64,7 @@ #include "pipeline.h" #include "llviewercontrol.h" #include "lluictrlfactory.h" +#include "llmeshrepository.h" //#include "llfirstuse.h" #include "lldrawpool.h" @@ -1740,9 +1741,7 @@ void LLPanelObject::refresh() mRootObject = NULL; } - bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") && - gAgent.getRegion() && - !gAgent.getRegion()->getCapability("GetMesh").empty(); + bool enable_mesh = gMeshRepo.meshRezEnabled(); F32 max_scale = get_default_max_prim_scale(LLPickInfo::isFlora(mObject)); diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index ebddaa90bc..bb87601d20 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -530,16 +530,24 @@ void LLPanelVolume::refresh() getChildView("Light Ambiance")->setVisible( visible); getChildView("light texture control")->setVisible( visible); - bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") && - gAgent.getRegion() && - !gAgent.getRegion()->getCapability("GetMesh").empty(); + bool enable_mesh = false; + LLSD sim_features; + LLViewerRegion *region = gAgent.getRegion(); + if(region) + { + LLSD sim_features; + region->getSimulatorFeatures(sim_features); + enable_mesh = sim_features.has("PhysicsShapeTypes"); + } getChildView("label physicsshapetype")->setVisible(enable_mesh); getChildView("Physics Shape Type Combo Ctrl")->setVisible(enable_mesh); getChildView("Physics Gravity")->setVisible(enable_mesh); getChildView("Physics Friction")->setVisible(enable_mesh); getChildView("Physics Density")->setVisible(enable_mesh); getChildView("Physics Restitution")->setVisible(enable_mesh); + + /* TODO: add/remove individual physics shape types as per the PhysicsShapeTypes simulator features */ } diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 37640ad0d4..b2080a5b82 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -107,9 +107,7 @@ class LLMeshUploadVisible : public view_listener_t { bool handleEvent(const LLSD& userdata) { - return gSavedSettings.getBOOL("MeshEnabled") && - LLViewerParcelMgr::getInstance()->allowAgentBuild() && - !gAgent.getRegion()->getCapability("ObjectAdd").empty(); + return gMeshRepo.meshUploadEnabled(); } }; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index fb608b3a4f..41437329c1 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -69,6 +69,7 @@ #include "llspatialpartition.h" #include "stringize.h" #include "llviewercontrol.h" +#include "llsdserialize.h" #ifdef LL_WINDOWS #pragma warning(disable:4355) @@ -1140,6 +1141,20 @@ void LLViewerRegion::getInfo(LLSD& info) info["Region"]["Handle"]["y"] = (LLSD::Integer)y; } +void LLViewerRegion::getSimulatorFeatures(LLSD& sim_features) +{ + sim_features = mSimulatorFeatures; +} + +void LLViewerRegion::setSimulatorFeatures(const LLSD& sim_features) +{ + std::stringstream str; + + LLSDSerialize::toPrettyXML(sim_features, str); + llinfos << str.str() << llendl; + mSimulatorFeatures = sim_features; +} + LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObject* objectp, LLDataPackerBinaryBuffer &dp) { U32 local_id = objectp->getLocalID(); @@ -1559,6 +1574,42 @@ void LLViewerRegion::setSeedCapability(const std::string& url) LLHTTPClient::post(url, capabilityNames, mImpl->mHttpResponderPtr); } +class SimulatorFeaturesReceived : public LLHTTPClient::Responder +{ + LOG_CLASS(SimulatorFeaturesReceived); +public: + SimulatorFeaturesReceived(LLViewerRegion* region) + : mRegion(region) + { } + + + void error(U32 statusNum, const std::string& reason) + { + LL_WARNS2("AppInit", "SimulatorFeatures") << statusNum << ": " << reason << LL_ENDL; + } + + void result(const LLSD& content) + { + if(!mRegion) //region is removed or responder is not created. + { + return ; + } + + mRegion->setSimulatorFeatures(content); + } + + static boost::intrusive_ptr<SimulatorFeaturesReceived> build( + LLViewerRegion* region) + { + return boost::intrusive_ptr<SimulatorFeaturesReceived>( + new SimulatorFeaturesReceived(region)); + } + +private: + LLViewerRegion* mRegion; +}; + + void LLViewerRegion::setCapability(const std::string& name, const std::string& url) { if(name == "EventQueueGet") @@ -1571,6 +1622,11 @@ void LLViewerRegion::setCapability(const std::string& name, const std::string& u { LLHTTPSender::setSender(mImpl->mHost, new LLCapHTTPSender(url)); } + else if (name == "SimulatorFeatures") + { + // kick off a request for simulator features + LLHTTPClient::get(url, new SimulatorFeaturesReceived(this)); + } else { mImpl->mCapabilities[name] = url; @@ -1664,3 +1720,4 @@ std::string LLViewerRegion::getDescription() const return stringize(*this); } + diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index a6e5c47b86..d936277231 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -276,6 +276,8 @@ public: void getInfo(LLSD& info); + void getSimulatorFeatures(LLSD& info); + void setSimulatorFeatures(const LLSD& info); typedef enum { @@ -401,6 +403,8 @@ private: bool mCapabilitiesReceived; BOOL mReleaseNotesRequested; + + LLSD mSimulatorFeatures; }; inline BOOL LLViewerRegion::getAllowDamage() const diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 6fe79c2e85..4ecf156646 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -601,7 +601,7 @@ public: ypos += y_inc; - if (gSavedSettings.getBOOL("MeshEnabled")) + if (gMeshRepo.meshRezEnabled()) { addText(xpos, ypos, llformat("%.3f MB Mesh Data Received", LLMeshRepository::sBytesReceived/(1024.f*1024.f))); -- cgit v1.2.3 From 1fd46831f0ea7309d83c1fa2eecc611b3bada719 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Sun, 29 May 2011 00:40:57 -0500 Subject: SH-1682 Work in progress on using texture indexes to improve batch size (wow, super fast so far) --- indra/newview/app_settings/settings.xml | 2 +- .../shaders/class1/deferred/diffuseF.glsl | 1 + .../shaders/class1/deferred/diffuseV.glsl | 4 +- .../shaders/class1/deferred/fullbrightF.glsl | 64 ++++----- .../shaders/class1/deferred/fullbrightV.glsl | 21 +-- indra/newview/lldrawpool.cpp | 42 ++++-- indra/newview/lldrawpool.h | 4 +- indra/newview/lldrawpoolalpha.cpp | 2 +- indra/newview/lldrawpoolbump.cpp | 2 +- indra/newview/lldrawpoolbump.h | 2 +- indra/newview/lldrawpoolsimple.cpp | 83 ++++++++++- indra/newview/lldrawpoolsimple.h | 14 +- indra/newview/llface.cpp | 35 +++++ indra/newview/llface.h | 3 + indra/newview/llspatialpartition.cpp | 24 ++++ indra/newview/llspatialpartition.h | 4 +- indra/newview/llviewershadermgr.cpp | 27 +++- indra/newview/llvopartgroup.cpp | 1 + indra/newview/llvosurfacepatch.cpp | 2 + indra/newview/llvovolume.cpp | 158 +++++++++++++++++---- 20 files changed, 383 insertions(+), 112 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2c6d75e3c9..22d8ce49c1 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7489,7 +7489,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>RenderDebugNormalScale</key> <map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl index 35cfb80c93..f71d9f0b49 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl @@ -20,3 +20,4 @@ void main() vec3 nvn = normalize(vary_normal); gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0); } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl index 03d3322cb6..b8de629fc8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl @@ -8,13 +8,15 @@ #version 120 varying vec3 vary_normal; +varying float vary_texture_index; void main() { //transform vertex - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_Position = gl_ModelViewProjectionMatrix * vec4(gl_Vertex.xyz, 1.0); gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + vary_texture_index = gl_Vertex.w; vary_normal = normalize(gl_NormalMatrix * gl_Normal); gl_FrontColor = gl_Color; diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 3429877397..30231039b0 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -9,56 +9,48 @@ #extension GL_ARB_texture_rectangle : enable -uniform sampler2D diffuseMap; -uniform sampler2DRect depthMap; -uniform sampler2D noiseMap; - -uniform vec4 shadow_clip; -uniform vec2 screen_res; +varying float vary_texture_index; + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +vec4 textureLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + case 7: return texture2D(tex7, texcoord); + } + + return vec4(0,0,0,0); +} vec3 fullbrightAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); -varying vec3 vary_ambient; -varying vec3 vary_directional; -varying vec4 vary_position; -varying vec3 vary_normal; -varying vec3 vary_fragcoord; - -uniform mat4 inv_proj; - -vec4 getPosition(vec2 pos_screen) -{ - float depth = texture2DRect(depthMap, pos_screen.xy).a; - vec2 sc = pos_screen.xy*2.0; - sc /= screen_res; - sc -= vec2(1.0,1.0); - vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); - vec4 pos = inv_proj * ndc; - pos /= pos.w; - pos.w = 1.0; - return pos; -} void main() { - vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; - frag *= screen_res; - - vec3 samp_pos = getPosition(frag).xyz; - float shadow = 1.0; - vec4 pos = vary_position; - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy)*gl_Color; + vec4 color = textureLookup(gl_TexCoord[0].xy)*gl_Color; color.rgb = fullbrightAtmosTransport(color.rgb); color.rgb = fullbrightScaleSoftClip(color.rgb); - //gl_FragColor = gl_Color; gl_FragColor = color; - //gl_FragColor = vec4(1,0,1,1); - } diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl index 6c38d220e2..6890360c56 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl @@ -14,30 +14,23 @@ vec3 atmosAffectDirectionalLight(float lightIntensity); vec3 scaleDownLight(vec3 light); vec3 scaleUpLight(vec3 light); -varying vec3 vary_ambient; -varying vec3 vary_directional; -varying vec3 vary_normal; -varying vec3 vary_fragcoord; -uniform float near_clip; -varying vec4 vary_position; +varying float vary_texture_index; void main() { //transform vertex - gl_Position = ftransform(); + vec4 vert = vec4(gl_Vertex.xyz, 1.0); + vary_texture_index = gl_Vertex.w; + + gl_Position = gl_ModelViewProjectionMatrix*vert; gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vec4 pos = (gl_ModelViewMatrix * gl_Vertex); - vary_position = pos; - + vec4 pos = (gl_ModelViewMatrix * vert); + calcAtmospherics(pos.xyz); gl_FrontColor = gl_Color; gl_FogFragCoord = pos.z; - - pos = gl_ModelViewProjectionMatrix * gl_Vertex; - vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); - } diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index 25e4bc847c..9645693493 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -430,14 +430,14 @@ void LLRenderPass::renderTexture(U32 type, U32 mask) pushBatches(type, mask, TRUE); } -void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture) +void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture, BOOL batch_textures) { for (LLCullResult::drawinfo_list_t::iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i) { LLDrawInfo* pparams = *i; if (pparams) { - pushBatch(*pparams, mask, texture); + pushBatch(*pparams, mask, texture, batch_textures); } } } @@ -456,26 +456,42 @@ void LLRenderPass::applyModelMatrix(LLDrawInfo& params) } } -void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) +void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures) { applyModelMatrix(params); + bool tex_setup = false; + if (texture) { - if (params.mTexture.notNull()) + if (batch_textures && params.mTextureList.size() > 1) { - params.mTexture->addTextureStats(params.mVSize); - gGL.getTexUnit(0)->bind(params.mTexture, TRUE) ; - if (params.mTextureMatrix) + for (U32 i = 0; i < params.mTextureList.size(); ++i) { - glMatrixMode(GL_TEXTURE); - glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); - gPipeline.mTextureMatrixOps++; + if (params.mTextureList[i].notNull()) + { + gGL.getTexUnit(i)->bind(params.mTextureList[i], TRUE); + } } } else - { - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + { //not batching textures or batch has only 1 texture -- might need a texture matrix + if (params.mTexture.notNull()) + { + params.mTexture->addTextureStats(params.mVSize); + gGL.getTexUnit(0)->bind(params.mTexture, TRUE) ; + if (params.mTextureMatrix) + { + tex_setup = true; + glMatrixMode(GL_TEXTURE); + glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); + gPipeline.mTextureMatrixOps++; + } + } + else + { + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + } } } @@ -490,7 +506,7 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); } - if (params.mTextureMatrix && texture && params.mTexture.notNull()) + if (tex_setup) { glLoadIdentity(); glMatrixMode(GL_MODELVIEW); diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index d3fd9ead0d..c7acbb42c6 100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h @@ -146,8 +146,8 @@ public: void resetDrawOrders() { } static void applyModelMatrix(LLDrawInfo& params); - virtual void pushBatches(U32 type, U32 mask, BOOL texture = TRUE); - virtual void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture); + virtual void pushBatches(U32 type, U32 mask, BOOL texture = TRUE, BOOL batch_textures = FALSE); + virtual void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures = FALSE); virtual void renderGroup(LLSpatialGroup* group, U32 type, U32 mask, BOOL texture = TRUE); virtual void renderGroups(U32 type, U32 mask, BOOL texture = TRUE); virtual void renderTexture(U32 type, U32 mask); diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 8b5a2ce781..3b3d48ab36 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -124,7 +124,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass) if (pass == 0) { simple_shader = &gDeferredAlphaProgram; - fullbright_shader = &gDeferredFullbrightProgram; + fullbright_shader = &gObjectFullbrightProgram; } else { diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 5f89d11391..3531073896 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -1292,7 +1292,7 @@ void LLDrawPoolBump::renderBump(U32 type, U32 mask) } } -void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) +void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures) { applyModelMatrix(params); diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h index f4702bf61d..476b1d41b7 100644 --- a/indra/newview/lldrawpoolbump.h +++ b/indra/newview/lldrawpoolbump.h @@ -55,7 +55,7 @@ public: virtual void endRenderPass( S32 pass ); virtual S32 getNumPasses(); /*virtual*/ void prerender(); - /*virtual*/ void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture); + /*virtual*/ void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures = FALSE); void renderBump(U32 type, U32 mask); void renderGroup(LLSpatialGroup* group, U32 type, U32 mask, BOOL texture); diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index 2e83167851..8ff60f73cc 100644 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp @@ -44,6 +44,43 @@ static LLGLSLShader* fullbright_shader = NULL; static LLFastTimer::DeclareTimer FTM_RENDER_SIMPLE_DEFERRED("Deferred Simple"); static LLFastTimer::DeclareTimer FTM_RENDER_GRASS_DEFERRED("Deferred Grass"); +void LLDrawPoolGlow::beginPostDeferredPass(S32 pass) +{ + gDeferredFullbrightProgram.bind(); +} + +void LLDrawPoolGlow::renderPostDeferred(S32 pass) +{ + LLFastTimer t(FTM_RENDER_GLOW); + LLGLEnable blend(GL_BLEND); + LLGLDisable test(GL_ALPHA_TEST); + gGL.flush(); + /// Get rid of z-fighting with non-glow pass. + LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(-1.0f, -1.0f); + gGL.setSceneBlendType(LLRender::BT_ADD); + + LLGLDepthTest depth(GL_TRUE, GL_FALSE); + gGL.setColorMask(false, true); + pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); + + gGL.setColorMask(true, false); + gGL.setSceneBlendType(LLRender::BT_ALPHA); +} + +void LLDrawPoolGlow::endPostDeferredPass(S32 pass) +{ + gDeferredFullbrightProgram.unbind(); + for (U32 i = 0; i < 8; i++) + { + if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) + { + gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); + gGL.getTexUnit(i)->disable(); + } + } +} + void LLDrawPoolGlow::render(S32 pass) { LLFastTimer t(FTM_RENDER_GLOW); @@ -79,10 +116,10 @@ void LLDrawPoolGlow::render(S32 pass) } } -void LLDrawPoolGlow::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) +void LLDrawPoolGlow::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures) { glColor4ubv(params.mGlowColor.mV); - LLRenderPass::pushBatch(params, mask, texture); + LLRenderPass::pushBatch(params, mask, texture, batch_textures); } @@ -128,8 +165,8 @@ void LLDrawPoolSimple::endRenderPass(S32 pass) LLFastTimer t(FTM_RENDER_SIMPLE); LLRenderPass::endRenderPass(pass); - if (mVertexShaderLevel > 0){ - + if (mVertexShaderLevel > 0) + { simple_shader->unbind(); } } @@ -168,6 +205,15 @@ void LLDrawPoolSimple::endDeferredPass(S32 pass) LLRenderPass::endRenderPass(pass); gDeferredDiffuseProgram.unbind(); + + for (U32 i = 0; i < 8; i++) + { + if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) + { + gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); + gGL.getTexUnit(i)->disable(); + } + } } void LLDrawPoolSimple::renderDeferred(S32 pass) @@ -177,7 +223,7 @@ void LLDrawPoolSimple::renderDeferred(S32 pass) { //render simple LLFastTimer t(FTM_RENDER_SIMPLE_DEFERRED); - renderTexture(LLRenderPass::PASS_SIMPLE, getVertexDataMask()); + pushBatches(LLRenderPass::PASS_SIMPLE, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); } } @@ -285,6 +331,33 @@ void LLDrawPoolFullbright::prerender() mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT); } +void LLDrawPoolFullbright::beginPostDeferredPass(S32 pass) +{ + gDeferredFullbrightProgram.bind(); +} + +void LLDrawPoolFullbright::renderPostDeferred(S32 pass) +{ + LLFastTimer t(FTM_RENDER_FULLBRIGHT); + + gGL.setSceneBlendType(LLRender::BT_ALPHA); + U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_TEXTURE_INDEX; + pushBatches(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask, TRUE, TRUE); +} + +void LLDrawPoolFullbright::endPostDeferredPass(S32 pass) +{ + gDeferredFullbrightProgram.unbind(); + for (U32 i = 0; i < 8; i++) + { + if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) + { + gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); + gGL.getTexUnit(i)->disable(); + } + } +} + void LLDrawPoolFullbright::beginRenderPass(S32 pass) { LLFastTimer t(FTM_RENDER_FULLBRIGHT); diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h index 5f3bbebbda..3811b3d398 100644 --- a/indra/newview/lldrawpoolsimple.h +++ b/indra/newview/lldrawpoolsimple.h @@ -98,9 +98,9 @@ public: LLDrawPoolFullbright(); /*virtual*/ S32 getNumPostDeferredPasses() { return 1; } - /*virtual*/ void beginPostDeferredPass(S32 pass) { beginRenderPass(pass); } - /*virtual*/ void endPostDeferredPass(S32 pass) { endRenderPass(pass); } - /*virtual*/ void renderPostDeferred(S32 pass) { render(pass); } + /*virtual*/ void beginPostDeferredPass(S32 pass); + /*virtual*/ void endPostDeferredPass(S32 pass); + /*virtual*/ void renderPostDeferred(S32 pass); /*virtual*/ void beginRenderPass(S32 pass); /*virtual*/ void endRenderPass(S32 pass); @@ -126,12 +126,12 @@ public: virtual void prerender() { } /*virtual*/ S32 getNumPostDeferredPasses() { return 1; } - /*virtual*/ void beginPostDeferredPass(S32 pass) { beginRenderPass(pass); } - /*virtual*/ void endPostDeferredPass(S32 pass) { endRenderPass(pass); } - /*virtual*/ void renderPostDeferred(S32 pass) { render(pass); } + /*virtual*/ void beginPostDeferredPass(S32 pass); + /*virtual*/ void endPostDeferredPass(S32 pass); + /*virtual*/ void renderPostDeferred(S32 pass); void render(S32 pass = 0); - void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture = TRUE); + void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture = TRUE, BOOL batch_textures = FALSE); }; diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 9f9e50ad0a..e30522d380 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -165,6 +165,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp) mIndexInTex = 0; mTexture = NULL; mTEOffset = -1; + mTextureIndex = 255; setDrawable(drawablep); mVObjp = objp; @@ -386,6 +387,26 @@ void LLFace::setGeomIndex(U16 idx) } } +void LLFace::setTextureIndex(U8 index) +{ + if (index != mTextureIndex) + { + mTextureIndex = index; + + if (mTextureIndex != 255) + { + mDrawablep->setState(LLDrawable::REBUILD_POSITION); + } + else + { + if (mDrawInfo && !mDrawInfo->mTextureList.empty()) + { + llerrs << "Face with no texture index references indexed texture draw info." << llendl; + } + } + } +} + void LLFace::setIndicesIndex(S32 idx) { if (mIndicesIndex != idx) @@ -1573,6 +1594,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, mat_vert.affineTransform(*src++, *dst++); } while(dst < end); + + F32 index = (F32) (mTextureIndex < 255 ? mTextureIndex : 0); + F32 *index_dst = (F32*) vertices; + F32 *index_end = (F32*) end; + + index_dst += 3; + index_end += 3; + do + { + *index_dst = index; + index_dst += 4; + } + while (index_dst < index_end); + } if (rebuild_normal) diff --git a/indra/newview/llface.h b/indra/newview/llface.h index b2170c4cf3..b5eaeecd60 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -94,6 +94,8 @@ public: U16 getGeomCount() const { return mGeomCount; } // vertex count for this face U16 getGeomIndex() const { return mGeomIndex; } // index into draw pool U16 getGeomStart() const { return mGeomIndex; } // index into draw pool + void setTextureIndex(U8 index); + U8 getTextureIndex() const { return mTextureIndex; } void setTexture(LLViewerTexture* tex) ; void switchTexture(LLViewerTexture* new_texture); void dirtyTexture(); @@ -262,6 +264,7 @@ private: U16 mGeomCount; // vertex count for this face U16 mGeomIndex; // index into draw pool + U8 mTextureIndex; // index of texture channel to use for pseudo-atlasing U32 mIndicesCount; U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!) S32 mIndexInTex ; diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 8143d6a41f..7f91f9a952 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -3439,6 +3439,8 @@ void renderTextureAnim(LLDrawInfo* params) void renderBatchSize(LLDrawInfo* params) { + LLGLEnable offset(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(-1.f, 1.f); glColor3ubv((GLubyte*) &(params->mDebugColor)); pushVerts(params, LLVertexBuffer::MAP_VERTEX); } @@ -3876,6 +3878,28 @@ public: renderAgentTarget(avatar); } + if (gDebugGL) + { + for (U32 i = 0; i < drawable->getNumFaces(); ++i) + { + LLFace* facep = drawable->getFace(i); + U8 index = facep->getTextureIndex(); + if (facep->mDrawInfo) + { + if (index < 255) + { + if (facep->mDrawInfo->mTextureList.size() <= index) + { + llerrs << "Face texture index out of bounds." << llendl; + } + else if (facep->mDrawInfo->mTextureList[index] != facep->getTexture()) + { + llerrs << "Face texture index incorrect." << llendl; + } + } + } + } + } } for (LLSpatialGroup::draw_map_t::iterator i = group->mDrawMap.begin(); i != group->mDrawMap.end(); ++i) diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 0d9cad914a..ae5d4fa463 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -91,6 +91,8 @@ public: LLPointer<LLVertexBuffer> mVertexBuffer; LLPointer<LLViewerTexture> mTexture; + std::vector<LLPointer<LLViewerTexture> > mTextureList; + LLColor4U mGlowColor; S32 mDebugColor; const LLMatrix4* mTextureMatrix; @@ -684,7 +686,7 @@ class LLVolumeGeometryManager: public LLGeometryManager virtual void rebuildGeom(LLSpatialGroup* group); virtual void rebuildMesh(LLSpatialGroup* group); virtual void getGeometry(LLSpatialGroup* group); - void genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort = FALSE); + void genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort = FALSE, BOOL batch_textures = FALSE); void registerFace(LLSpatialGroup* group, LLFace* facep, U32 type); }; diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index b818da205e..29f3acdf91 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -354,6 +354,7 @@ void LLViewerShaderMgr::setShaders() //setup preprocessor definitions LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"))); + LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits); reentrance = true; @@ -941,6 +942,20 @@ BOOL LLViewerShaderMgr::loadShadersEffects() } +void setup_indexed_texture(LLGLSLShader& shader) +{ + shader.bind(); + shader.uniform1i("tex0", 0); + shader.uniform1i("tex1", 1); + shader.uniform1i("tex2", 2); + shader.uniform1i("tex3", 3); + shader.uniform1i("tex4", 4); + shader.uniform1i("tex5", 5); + shader.uniform1i("tex6", 6); + shader.uniform1i("tex7", 7); + shader.unbind(); +} + BOOL LLViewerShaderMgr::loadShadersDeferred() { if (mVertexShaderLevel[SHADER_DEFERRED] == 0) @@ -992,9 +1007,14 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredDiffuseProgram.mName = "Deferred Diffuse Shader"; gDeferredDiffuseProgram.mShaderFiles.clear(); gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredDiffuseProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredDiffuseProgram.createShader(NULL, NULL); + + if (success) + { //force tex0-7 to appropriate texture channels + setup_indexed_texture(gDeferredDiffuseProgram); + } } if (success) @@ -1231,6 +1251,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredFullbrightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredFullbrightProgram.createShader(NULL, NULL); + + if (success) + { + setup_indexed_texture(gDeferredFullbrightProgram); + } } if (success) diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 6f354b78b1..85b740d819 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -418,6 +418,7 @@ void LLParticlePartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_co mFaceList.push_back(facep); vertex_count += facep->getGeomCount(); index_count += facep->getIndicesCount(); + llassert(facep->getIndicesCount() < 65536); } obj->mDepth /= count; diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index dbcd4f50ca..510525259f 100644 --- a/indra/newview/llvosurfacepatch.cpp +++ b/indra/newview/llvosurfacepatch.cpp @@ -375,6 +375,8 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep, S32 num_vertices, num_indices; U32 index; + llassert(mLastStride > 0); + render_stride = mLastStride; patch_size = mPatchp->getSurface()->getGridsPerPatchEdge(); S32 vert_size = patch_size / render_stride; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index cc443d32fb..87de064ad1 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1247,17 +1247,7 @@ BOOL LLVOVolume::calcLOD() { //setDebugText(llformat("%.2f:%.2f, %d", debug_distance, radius, cur_detail)); - F32 bin_radius = getBinRadius(); - F32 node_size = 0.f; - - LLSpatialGroup* group = mDrawable->getSpatialGroup(); - if (group) - { - LLSpatialGroup::OctreeNode* node = group->mOctreeNode; - node_size = node->getSize()[0]; - } - - setDebugText(llformat("%.2f:%.2f", bin_radius, node_size)); + setDebugText(llformat("%d", mDrawable->getFace(0)->getTextureIndex())); } if (cur_detail != mLOD) @@ -3734,6 +3724,21 @@ LLVolumeBridge::LLVolumeBridge(LLDrawable* drawablep) mSlopRatio = 0.25f; } +bool can_batch_texture(LLFace* facep) +{ + if (facep->getTextureEntry()->getBumpmap()) + { //bump maps aren't worked into texture batching yet + return false; + } + + if (facep->isState(LLFace::TEXTURE_ANIM) && facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) + { //texture animation breaks batches + return false; + } + + return true; +} + void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, U32 type) { LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION); @@ -3784,12 +3789,36 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, LLViewerTexture* tex = facep->getTexture(); + U8 index = facep->getTextureIndex(); + + bool batchable = false; + + if (index < 255 && idx >= 0) + { + if (index < draw_vec[idx]->mTextureList.size()) + { + if (draw_vec[idx]->mTextureList[index].isNull()) + { + batchable = true; + draw_vec[idx]->mTextureList[index] = tex; + } + else if (draw_vec[idx]->mTextureList[index] == tex) + { //this face's texture index can be used with this batch + batchable = true; + } + } + else + { //texture list can be expanded to fit this texture index + batchable = true; + } + } + U8 glow = (U8) (facep->getTextureEntry()->getGlow() * 255); if (idx >= 0 && draw_vec[idx]->mVertexBuffer == facep->getVertexBuffer() && draw_vec[idx]->mEnd == facep->getGeomIndex()-1 && - (LLPipeline::sTextureBindTest || draw_vec[idx]->mTexture == tex) && + (LLPipeline::sTextureBindTest || draw_vec[idx]->mTexture == tex || batchable) && #if LL_DARWIN draw_vec[idx]->mEnd - draw_vec[idx]->mStart + facep->getGeomCount() <= (U32) gGLManager.mGLMaxVertexRange && draw_vec[idx]->mCount + facep->getIndicesCount() <= (U32) gGLManager.mGLMaxIndexRange && @@ -3803,6 +3832,12 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, draw_vec[idx]->mCount += facep->getIndicesCount(); draw_vec[idx]->mEnd += facep->getGeomCount(); draw_vec[idx]->mVSize = llmax(draw_vec[idx]->mVSize, facep->getVirtualSize()); + + if (index >= draw_vec[idx]->mTextureList.size()) + { + draw_vec[idx]->mTextureList.resize(index+1); + draw_vec[idx]->mTextureList[index] = tex; + } draw_vec[idx]->validate(); update_min_max(draw_vec[idx]->mExtents[0], draw_vec[idx]->mExtents[1], facep->mExtents[0]); update_min_max(draw_vec[idx]->mExtents[0], draw_vec[idx]->mExtents[1], facep->mExtents[1]); @@ -3833,6 +3868,11 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, draw_info->mDrawMode = LLRender::TRIANGLE_STRIP; } + if (index < 255) + { //initialize texture list for texture batching + draw_info->mTextureList.resize(index+1); + draw_info->mTextureList[index] = tex; + } draw_info->validate(); } } @@ -4258,11 +4298,16 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) if (LLPipeline::sRenderDeferred) { bump_mask |= LLVertexBuffer::MAP_BINORMAL; + genDrawInfo(group, simple_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, simple_faces, FALSE, TRUE); + genDrawInfo(group, fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, fullbright_faces, FALSE, TRUE); + genDrawInfo(group, bump_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, bump_faces, FALSE, TRUE); + } + else + { + genDrawInfo(group, simple_mask, simple_faces); + genDrawInfo(group, fullbright_mask, fullbright_faces); + genDrawInfo(group, bump_mask, bump_faces, FALSE, TRUE); } - - genDrawInfo(group, simple_mask, simple_faces); - genDrawInfo(group, bump_mask, bump_faces); - genDrawInfo(group, fullbright_mask, fullbright_faces); genDrawInfo(group, alpha_mask, alpha_faces, TRUE); if (!LLPipeline::sDelayVBUpdate) @@ -4376,7 +4421,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) llassert(!group || !group->isState(LLSpatialGroup::NEW_DRAWINFO)); } -void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort) +void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort, BOOL batch_textures) { //calculate maximum number of vertices to store in a single buffer U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcVertexSize(group->mSpatialPartition->mVertexDataMask); @@ -4435,19 +4480,71 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: std::vector<LLFace*>::iterator i = face_iter; ++i; - while (i != faces.end() && - (LLPipeline::sTextureBindTest || (distance_sort || (*i)->getTexture() == tex))) + std::vector<LLViewerTexture*> texture_list; + + if (!distance_sort && batch_textures) { - facep = *i; - - if (geom_count + facep->getGeomCount() > max_vertices) - { //cut batches on geom count too big - break; + U8 cur_tex = 0; + facep->setTextureIndex(cur_tex); + texture_list.push_back(tex); + + if (can_batch_texture(facep)) + { + while (i != faces.end()) + { + facep = *i; + if (facep->getTexture() != tex) + { + cur_tex++; + if (cur_tex >= 8) + { //cut batches on every 8 textures + break; + } + tex = facep->getTexture(); + texture_list.push_back(tex); + } + + if (geom_count + facep->getGeomCount() > max_vertices) + { //cut batches on geom count too big + break; + } + + if (!can_batch_texture(facep)) + { //cut batches on things that require single texture rendering (animated texture, bump maps) + break; + } + + ++i; + index_count += facep->getIndicesCount(); + geom_count += facep->getGeomCount(); + + facep->setTextureIndex(cur_tex); + } } - ++i; - index_count += facep->getIndicesCount(); - geom_count += facep->getGeomCount(); + tex = texture_list[0]; + } + else + { + while (i != faces.end() && + (LLPipeline::sTextureBindTest || (distance_sort || (*i)->getTexture() == tex))) + { + facep = *i; + + + //face has no texture index + facep->mDrawInfo = NULL; + facep->setTextureIndex(255); + + if (geom_count + facep->getGeomCount() > max_vertices) + { //cut batches on geom count too big + break; + } + + ++i; + index_count += facep->getIndicesCount(); + geom_count += facep->getGeomCount(); + } } //create/delete/resize vertex buffer if needed @@ -4497,6 +4594,11 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: facep->setGeomIndex(index_offset); facep->setVertexBuffer(buffer); + if (batch_textures && facep->getTextureIndex() == 255) + { + llerrs << "Invalid texture index." << llendl; + } + { //for debugging, set last time face was updated vs moved facep->updateRebuildFlags(); @@ -4695,7 +4797,7 @@ void LLGeometryManager::addGeometryCount(LLSpatialGroup* group, U32 &vertex_coun { vertex_count += facep->getGeomCount(); index_count += facep->getIndicesCount(); - + llassert(facep->getIndicesCount() < 65536); //remember face (for sorting) mFaceList.push_back(facep); } -- cgit v1.2.3 From 57725bd6a14f471cae1a0f4ac7485ab9ccd8bfc6 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Sun, 29 May 2011 00:41:28 -0500 Subject: SH-1682 indexd diffuse fragment shader for deferred rendering --- .../shaders/class1/deferred/diffuseIndexedF.glsl | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl new file mode 100644 index 0000000000..1bbaeb44ff --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl @@ -0,0 +1,50 @@ +/** + * @file diffuseIndexedF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +varying float vary_texture_index; +varying vec3 vary_normal; + +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + case 7: return texture2D(tex7, texcoord); + } + + return vec4(0,0,0,0); +} + +void main() +{ + vec3 col = gl_Color.rgb * diffuseLookup(gl_TexCoord[0].xy).rgb; + + //col = vec3(vary_texture_index*0.25, 0, 0); + + gl_FragData[0] = vec4(col, 0.0); + gl_FragData[1] = gl_Color.aaaa; // spec + //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested + vec3 nvn = normalize(vary_normal); + gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0); +} -- cgit v1.2.3 From eca17c8993aecfd8d69c1b1765f8ac841ad29119 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Mon, 30 May 2011 01:25:55 -0500 Subject: SH-1682 Full integration if indexed texture rendering to improve batch size. --- indra/newview/app_settings/settings.xml | 2 +- .../shaders/class1/deferred/alphaF.glsl | 5 +- .../shaders/class1/deferred/alphaV.glsl | 9 +- .../shaders/class1/deferred/avatarEyesV.glsl | 21 ++ .../shaders/class2/deferred/alphaF.glsl | 5 +- .../shaders/class2/deferred/alphaV.glsl | 9 +- .../shaders/class2/lighting/lightF.glsl | 30 ++- .../shaders/class2/lighting/lightFullbrightF.glsl | 32 ++- .../lighting/lightFullbrightNonIndexedF.glsl | 25 ++ .../class2/lighting/lightFullbrightShinyF.glsl | 30 ++- .../lighting/lightFullbrightShinyNonIndexedF.glsl | 32 +++ .../lighting/lightFullbrightShinyWaterF.glsl | 29 ++- .../lightFullbrightShinyWaterNonIndexedF.glsl | 32 +++ .../class2/lighting/lightFullbrightWaterF.glsl | 30 ++- .../lighting/lightFullbrightWaterNonIndexedF.glsl | 23 ++ .../shaders/class2/lighting/lightNonIndexedF.glsl | 25 ++ .../shaders/class2/lighting/lightShinyF.glsl | 29 ++- .../class2/lighting/lightShinyNonIndexedF.glsl | 32 +++ .../shaders/class2/lighting/lightShinyWaterF.glsl | 28 ++- .../lighting/lightShinyWaterNonIndexedF.glsl | 29 +++ .../shaders/class2/lighting/lightWaterF.glsl | 30 ++- .../class2/lighting/lightWaterNonIndexedF.glsl | 23 ++ .../shaders/class2/objects/fullbrightShinyV.glsl | 35 +++ .../shaders/class2/objects/fullbrightV.glsl | 29 +++ .../shaders/class2/objects/shinyV.glsl | 8 +- .../shaders/class2/objects/simpleV.glsl | 33 +++ indra/newview/lldrawpool.cpp | 8 + indra/newview/lldrawpoolalpha.cpp | 153 +++++++----- indra/newview/lldrawpoolavatar.cpp | 26 +- indra/newview/lldrawpoolbump.cpp | 94 ++++--- indra/newview/lldrawpoolsimple.cpp | 51 ++-- indra/newview/lldrawpooltree.cpp | 4 +- indra/newview/llviewershadermgr.cpp | 276 ++++++++++++++++++++- indra/newview/llviewershadermgr.h | 11 + indra/newview/llvopartgroup.cpp | 12 +- indra/newview/llvosky.cpp | 2 + indra/newview/llvovolume.cpp | 55 +++- indra/newview/pipeline.cpp | 6 +- 38 files changed, 1135 insertions(+), 178 deletions(-) create mode 100644 indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl create mode 100644 indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl create mode 100644 indra/newview/app_settings/shaders/class2/objects/simpleV.glsl (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 22d8ce49c1..2c6d75e3c9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7489,7 +7489,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>RenderDebugNormalScale</key> <map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 3b12a07a27..f6b7f42c22 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -9,9 +9,10 @@ #extension GL_ARB_texture_rectangle : enable -uniform sampler2D diffuseMap; uniform sampler2DRect depthMap; +vec4 diffuseLookup(vec2 texcoord); + uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; uniform vec2 screen_res; @@ -47,7 +48,7 @@ void main() vec4 pos = vec4(vary_position, 1.0); - vec4 diff= texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 diff= diffuseLookup(gl_TexCoord[0].xy); vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a); vec4 color = diff * col; diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 2691fc8ded..5890c30d8f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -23,6 +23,7 @@ varying vec3 vary_fragcoord; varying vec3 vary_position; varying vec3 vary_light; varying vec3 vary_pointlight_col; +varying float vary_texture_index; uniform float near_clip; uniform float shadow_offset; @@ -61,11 +62,13 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa void main() { //transform vertex - gl_Position = ftransform(); + vec4 vert = vec4(gl_Vertex.xyz, 1.0); + vary_texture_index = gl_Vertex.w; + gl_Position = gl_ModelViewProjectionMatrix * vert; gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vec4 pos = (gl_ModelViewMatrix * gl_Vertex); + vec4 pos = (gl_ModelViewMatrix * vert); vec3 norm = normalize(gl_NormalMatrix * gl_Normal); float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz)); @@ -102,7 +105,7 @@ void main() gl_FogFragCoord = pos.z; - pos = gl_ModelViewProjectionMatrix * gl_Vertex; + pos = gl_ModelViewProjectionMatrix * vert; vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl new file mode 100644 index 0000000000..536bacd23c --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl @@ -0,0 +1,21 @@ +/** + * @file avatarEyesV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +varying vec3 vary_normal; + +void main() +{ + //transform vertex + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + + vary_normal = normalize(gl_NormalMatrix * gl_Normal); + + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 6dfc1b952c..bd4875f3ff 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -9,13 +9,14 @@ #extension GL_ARB_texture_rectangle : enable -uniform sampler2D diffuseMap; uniform sampler2DRectShadow shadowMap0; uniform sampler2DRectShadow shadowMap1; uniform sampler2DRectShadow shadowMap2; uniform sampler2DRectShadow shadowMap3; uniform sampler2DRect depthMap; +vec4 diffuseLookup(vec2 texcoord); + uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; uniform vec2 screen_res; @@ -105,7 +106,7 @@ void main() } } - vec4 diff= texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 diff = diffuseLookup(gl_TexCoord[0].xy); vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a); vec4 color = diff * col; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index f6160815eb..c6c0b0f32a 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -22,6 +22,7 @@ varying vec3 vary_directional; varying vec3 vary_fragcoord; varying vec3 vary_position; varying vec3 vary_pointlight_col; +varying float vary_texture_index; uniform float near_clip; uniform float shadow_offset; @@ -60,11 +61,13 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa void main() { //transform vertex - gl_Position = ftransform(); + vec4 vert = vec4(gl_Vertex.xyz, 1.0); + vary_texture_index = gl_Vertex.w; + gl_Position = gl_ModelViewProjectionMatrix * vert; gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; - vec4 pos = (gl_ModelViewMatrix * gl_Vertex); + vec4 pos = (gl_ModelViewMatrix * vert); vec3 norm = normalize(gl_NormalMatrix * gl_Normal); float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz)); @@ -99,7 +102,7 @@ void main() gl_FogFragCoord = pos.z; - pos = gl_ModelViewProjectionMatrix * gl_Vertex; + pos = gl_ModelViewProjectionMatrix * vert; vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); } diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl index 342bc2ab66..d5775f4506 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl @@ -7,14 +7,40 @@ #version 120 -uniform sampler2D diffuseMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + case 7: return texture2D(tex7, texcoord); + } + + return vec4(0,0,0,0); +} vec3 atmosLighting(vec3 light); vec3 scaleSoftClip(vec3 light); void default_lighting() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; + vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color; color.rgb = atmosLighting(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl index dad18b5883..e64b089dca 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl @@ -7,14 +7,40 @@ #version 120 -uniform sampler2D diffuseMap; - vec3 fullbrightAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + case 7: return texture2D(tex7, texcoord); + } + + return vec4(0,0,0,0); +} + void fullbright_lighting() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; + vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color; color.rgb = fullbrightAtmosTransport(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl new file mode 100644 index 0000000000..811a919d52 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl @@ -0,0 +1,25 @@ +/** + * @file lightFullbrightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +vec3 fullbrightAtmosTransport(vec3 light); +vec3 fullbrightScaleSoftClip(vec3 light); + +uniform sampler2D diffuseMap; + +void fullbright_lighting() +{ + vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color; + + color.rgb = fullbrightAtmosTransport(color.rgb); + + color.rgb = fullbrightScaleSoftClip(color.rgb); + + gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl index 73ff81e03a..f4ac789a74 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl @@ -7,15 +7,41 @@ #version 120 -uniform sampler2D diffuseMap; uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + } + + return vec4(0,0,0,0); +} + + vec3 fullbrightShinyAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); void fullbright_shiny_lighting() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 color = diffuseLookup(gl_TexCoord[0].xy); color.rgb *= gl_Color.rgb; vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl new file mode 100644 index 0000000000..51a7ddb89a --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl @@ -0,0 +1,32 @@ +/** + * @file lightFullbrightShinyF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +uniform samplerCube environmentMap; +uniform sampler2D diffuseMap; + +vec3 fullbrightShinyAtmosTransport(vec3 light); +vec3 fullbrightScaleSoftClip(vec3 light); + +void fullbright_shiny_lighting() +{ + vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); + color.rgb *= gl_Color.rgb; + + vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; + color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + + color.rgb = fullbrightShinyAtmosTransport(color.rgb); + + color.rgb = fullbrightScaleSoftClip(color.rgb); + + color.a = max(color.a, gl_Color.a); + + gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl index 9b4b584369..277170e8af 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl @@ -7,8 +7,33 @@ #version 120 -uniform sampler2D diffuseMap; + uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + } + + return vec4(0,0,0,0); +} vec3 fullbrightShinyAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); @@ -16,7 +41,7 @@ vec4 applyWaterFog(vec4 color); void fullbright_shiny_lighting_water() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 color = diffuseLookup(gl_TexCoord[0].xy); color.rgb *= gl_Color.rgb; vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl new file mode 100644 index 0000000000..a9a95940e6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl @@ -0,0 +1,32 @@ +/** + * @file lightFullbrightShinyWaterF.glsl + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#version 120 + + +uniform samplerCube environmentMap; +uniform sampler2D diffuseMap; + +vec3 fullbrightShinyAtmosTransport(vec3 light); +vec3 fullbrightScaleSoftClip(vec3 light); +vec4 applyWaterFog(vec4 color); + +void fullbright_shiny_lighting_water() +{ + vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy); + color.rgb *= gl_Color.rgb; + + vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; + color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + + color.rgb = fullbrightShinyAtmosTransport(color.rgb); + color.rgb = fullbrightScaleSoftClip(color.rgb); + color.a = max(color.a, gl_Color.a); + + gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl index 3d46c8d874..37e33059a6 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl @@ -7,14 +7,40 @@ #version 120 -uniform sampler2D diffuseMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + case 7: return texture2D(tex7, texcoord); + } + + return vec4(0,0,0,0); +} vec3 fullbrightAtmosTransport(vec3 light); vec4 applyWaterFog(vec4 color); void fullbright_lighting_water() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; + vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color; color.rgb = fullbrightAtmosTransport(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl new file mode 100644 index 0000000000..3d46c8d874 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl @@ -0,0 +1,23 @@ +/** + * @file lightFullbrightWaterF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +uniform sampler2D diffuseMap; + +vec3 fullbrightAtmosTransport(vec3 light); +vec4 applyWaterFog(vec4 color); + +void fullbright_lighting_water() +{ + vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; + + color.rgb = fullbrightAtmosTransport(color.rgb); + + gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl new file mode 100644 index 0000000000..787eeb7af6 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl @@ -0,0 +1,25 @@ +/** + * @file lightF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +uniform sampler2D diffuseMap; + +vec3 atmosLighting(vec3 light); +vec3 scaleSoftClip(vec3 light); + +void default_lighting() +{ + vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color; + + color.rgb = atmosLighting(color.rgb); + + color.rgb = scaleSoftClip(color.rgb); + + gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl index ebe21320b4..9f438f513f 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl @@ -7,8 +7,33 @@ #version 120 -uniform sampler2D diffuseMap; + uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + } + + return vec4(0,0,0,0); +} vec3 scaleSoftClip(vec3 light); vec3 atmosLighting(vec3 light); @@ -16,7 +41,7 @@ vec4 applyWaterFog(vec4 color); void shiny_lighting() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 color = diffuseLookup(gl_TexCoord[0].xy); color.rgb *= gl_Color.rgb; vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl new file mode 100644 index 0000000000..212eacd6ea --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl @@ -0,0 +1,32 @@ +/** + * @file lightShinyF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + + +uniform samplerCube environmentMap; +uniform sampler2D diffuseMap; + +vec3 scaleSoftClip(vec3 light); +vec3 atmosLighting(vec3 light); +vec4 applyWaterFog(vec4 color); + +void shiny_lighting() +{ + vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy); + color.rgb *= gl_Color.rgb; + + vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; + color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + + color.rgb = atmosLighting(color.rgb); + + color.rgb = scaleSoftClip(color.rgb); + color.a = max(color.a, gl_Color.a); + gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl index 7f48e2cf1d..5e11f6585c 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl @@ -8,15 +8,39 @@ #version 120 -uniform sampler2D diffuseMap; uniform samplerCube environmentMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + } + + return vec4(0,0,0,0); +} vec3 atmosLighting(vec3 light); vec4 applyWaterFog(vec4 color); void shiny_lighting_water() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy); + vec4 color = diffuseLookup(gl_TexCoord[0].xy); color.rgb *= gl_Color.rgb; vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl new file mode 100644 index 0000000000..cb8a24da60 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl @@ -0,0 +1,29 @@ +/** + * @file lightShinyWaterF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + + +uniform sampler2D diffuseMap; +uniform samplerCube environmentMap; + +vec3 atmosLighting(vec3 light); +vec4 applyWaterFog(vec4 color); + +void shiny_lighting_water() +{ + vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy); + color.rgb *= gl_Color.rgb; + + vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb; + color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a); + + color.rgb = atmosLighting(color.rgb); + color.a = max(color.a, gl_Color.a); + gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl index 97eba92d7b..022544a917 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl @@ -7,14 +7,40 @@ #version 120 -uniform sampler2D diffuseMap; +uniform sampler2D tex0; +uniform sampler2D tex1; +uniform sampler2D tex2; +uniform sampler2D tex3; +uniform sampler2D tex4; +uniform sampler2D tex5; +uniform sampler2D tex6; +uniform sampler2D tex7; + +varying float vary_texture_index; + +vec4 diffuseLookup(vec2 texcoord) +{ + switch (int(vary_texture_index+0.25)) + { + case 0: return texture2D(tex0, texcoord); + case 1: return texture2D(tex1, texcoord); + case 2: return texture2D(tex2, texcoord); + case 3: return texture2D(tex3, texcoord); + case 4: return texture2D(tex4, texcoord); + case 5: return texture2D(tex5, texcoord); + case 6: return texture2D(tex6, texcoord); + case 7: return texture2D(tex7, texcoord); + } + + return vec4(0,0,0,0); +} vec3 atmosLighting(vec3 light); vec4 applyWaterFog(vec4 color); void default_lighting_water() { - vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color; + vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color; color.rgb = atmosLighting(color.rgb); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl new file mode 100644 index 0000000000..dc16f2d5cd --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl @@ -0,0 +1,23 @@ +/** + * @file lightWaterF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +uniform sampler2D diffuseMap; + +vec3 atmosLighting(vec3 light); +vec4 applyWaterFog(vec4 color); + +void default_lighting_water() +{ + vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color; + + color.rgb = atmosLighting(color.rgb); + + gl_FragColor = applyWaterFog(color); +} + diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl new file mode 100644 index 0000000000..e2145e1956 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl @@ -0,0 +1,35 @@ +/** + * @file fullbrightShinyV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +void calcAtmospherics(vec3 inPositionEye); + +uniform vec4 origin; + +varying float vary_texture_index; + +void main() +{ + //transform vertex + vec4 vert = vec4(gl_Vertex.xyz,1.0); + vary_texture_index = gl_Vertex.w; + gl_Position = gl_ModelViewProjectionMatrix*vert; + + vec4 pos = (gl_ModelViewMatrix * vert); + vec3 norm = normalize(gl_NormalMatrix * gl_Normal); + vec3 ref = reflect(pos.xyz, -norm); + + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0); + + calcAtmospherics(pos.xyz); + + gl_FrontColor = gl_Color; + + gl_FogFragCoord = pos.z; +} diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl new file mode 100644 index 0000000000..c4a3611a29 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl @@ -0,0 +1,29 @@ +/** + * @file fullbrightV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +void calcAtmospherics(vec3 inPositionEye); + +varying float vary_texture_index; + +void main() +{ + //transform vertex + vec4 vert = vec4(gl_Vertex.xyz,1.0); + vary_texture_index = gl_Vertex.w; + gl_Position = gl_ModelViewProjectionMatrix*vert; + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + + vec4 pos = (gl_ModelViewMatrix * vert); + + calcAtmospherics(pos.xyz); + + gl_FrontColor = gl_Color; + + gl_FogFragCoord = pos.z; +} diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl index 4cebb06df0..436c193c5d 100644 --- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl +++ b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl @@ -11,14 +11,18 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); +varying float vary_texture_index; + uniform vec4 origin; void main() { //transform vertex - gl_Position = ftransform(); + vec4 vert = vec4(gl_Vertex.xyz,1.0); + vary_texture_index = gl_Vertex.w; + gl_Position = gl_ModelViewProjectionMatrix*vert; - vec4 pos = (gl_ModelViewMatrix * gl_Vertex); + vec4 pos = (gl_ModelViewMatrix * vert); vec3 norm = normalize(gl_NormalMatrix * gl_Normal); vec3 ref = reflect(pos.xyz, -norm); diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl new file mode 100644 index 0000000000..50d2beee57 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl @@ -0,0 +1,33 @@ +/** + * @file simpleV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#version 120 + +vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); +void calcAtmospherics(vec3 inPositionEye); + +varying float vary_texture_index; + +void main() +{ + //transform vertex + vec4 vert = vec4(gl_Vertex.xyz,1.0); + vary_texture_index = gl_Vertex.w; + gl_Position = gl_ModelViewProjectionMatrix*vert; + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + + vec4 pos = (gl_ModelViewMatrix * vert); + + vec3 norm = normalize(gl_NormalMatrix * gl_Normal); + + calcAtmospherics(pos.xyz); + + vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); + gl_FrontColor = color; + + gl_FogFragCoord = pos.z; +} diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index 9645693493..b8b12018d2 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -191,6 +191,14 @@ void LLDrawPool::renderPostDeferred(S32 pass) //virtual void LLDrawPool::endRenderPass( S32 pass ) { + for (U32 i = 1; i < 8; i++) + { //dummy cleanup of any currently bound textures + if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) + { + gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); + gGL.getTexUnit(i)->disable(); + } + } } //virtual diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 3b3d48ab36..71eee0188c 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -228,13 +228,13 @@ void LLDrawPoolAlpha::render(S32 pass) if (!LLPipeline::sRenderDeferred) { simple_shader->bind(); - pushBatches(LLRenderPass::PASS_ALPHA_MASK, getVertexDataMask()); + pushBatches(LLRenderPass::PASS_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); } if (fullbright_shader) { fullbright_shader->bind(); } - pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask()); + pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); LLGLSLShader::bindNoShader(); } else @@ -273,7 +273,14 @@ void LLDrawPoolAlpha::render(S32 pass) } } - renderAlpha(getVertexDataMask()); + if (mVertexShaderLevel > 0) + { + renderAlpha(getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX); + } + else + { + renderAlpha(getVertexDataMask()); + } gGL.setColorMask(true, false); @@ -341,10 +348,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) BOOL light_enabled = TRUE; S32 diffuse_channel = 0; - BOOL use_shaders = (LLPipeline::sUnderWaterRender && gPipeline.canUseVertexShaders()) - || gPipeline.canUseWindLightShadersOnObjects(); - - + BOOL use_shaders = gPipeline.canUseVertexShaders(); + for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i) { LLSpatialGroup* group = *i; @@ -368,92 +373,107 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) LLRenderPass::applyModelMatrix(params); + + if (params.mFullbright) { - if (params.mFullbright) - { - // Turn off lighting if it hasn't already been so. - if (light_enabled || !initialized_lighting) - { - initialized_lighting = TRUE; - if (use_shaders) - { - target_shader = fullbright_shader; - } - else - { - gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); - } - light_enabled = FALSE; - } - } - // Turn on lighting if it isn't already. - else if (!light_enabled || !initialized_lighting) + // Turn off lighting if it hasn't already been so. + if (light_enabled || !initialized_lighting) { initialized_lighting = TRUE; if (use_shaders) { - target_shader = simple_shader; + target_shader = fullbright_shader; } else { - gPipeline.enableLightsDynamic(); + gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); } - light_enabled = TRUE; + light_enabled = FALSE; } - - // If we need shaders, and we're not ALREADY using the proper shader, then bind it - // (this way we won't rebind shaders unnecessarily). - if(use_shaders && (current_shader != target_shader)) + } + // Turn on lighting if it isn't already. + else if (!light_enabled || !initialized_lighting) + { + initialized_lighting = TRUE; + if (use_shaders) { - llassert(target_shader != NULL); - if (deferred_render && current_shader != NULL) - { - gPipeline.unbindDeferredShader(*current_shader); - diffuse_channel = 0; - } - current_shader = target_shader; - if (deferred_render) - { - gPipeline.bindDeferredShader(*current_shader); - diffuse_channel = current_shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); - } - else - { - current_shader->bind(); - } + target_shader = simple_shader; } - else if (!use_shaders && current_shader != NULL) + else { - if (deferred_render) - { - gPipeline.unbindDeferredShader(*current_shader); - diffuse_channel = 0; - } - LLGLSLShader::bindNoShader(); - current_shader = NULL; + gPipeline.enableLightsDynamic(); } + light_enabled = TRUE; + } - if (params.mGroup) + // If we need shaders, and we're not ALREADY using the proper shader, then bind it + // (this way we won't rebind shaders unnecessarily). + if(use_shaders && (current_shader != target_shader)) + { + llassert(target_shader != NULL); + if (deferred_render && current_shader != NULL) + { + gPipeline.unbindDeferredShader(*current_shader); + diffuse_channel = 0; + } + current_shader = target_shader; + if (deferred_render) { - params.mGroup->rebuildMesh(); + gPipeline.bindDeferredShader(*current_shader); + diffuse_channel = current_shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); } + else + { + current_shader->bind(); + } + } + else if (!use_shaders && current_shader != NULL) + { + if (deferred_render) + { + gPipeline.unbindDeferredShader(*current_shader); + diffuse_channel = 0; + } + LLGLSLShader::bindNoShader(); + current_shader = NULL; + } - - if (params.mTexture.notNull()) + if (params.mGroup) + { + params.mGroup->rebuildMesh(); + } + + bool tex_setup = false; + + if (use_shaders && params.mTextureList.size() > 1) + { + for (U32 i = 0; i < params.mTextureList.size(); ++i) { - gGL.getTexUnit(diffuse_channel)->bind(params.mTexture.get()); - if(params.mTexture.notNull()) + if (params.mTextureList[i].notNull()) { - params.mTexture->addTextureStats(params.mVSize); + gGL.getTexUnit(i)->bind(params.mTextureList[i], TRUE); } + } + } + else + { //not batching textures or batch has only 1 texture -- might need a texture matrix + if (params.mTexture.notNull()) + { + params.mTexture->addTextureStats(params.mVSize); + gGL.getTexUnit(0)->bind(params.mTexture, TRUE) ; if (params.mTextureMatrix) { + tex_setup = true; gGL.getTexUnit(0)->activate(); glMatrixMode(GL_TEXTURE); glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); gPipeline.mTextureMatrixOps++; } } + else + { + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + } } params.mVertexBuffer->setBuffer(mask); @@ -480,7 +500,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor); } - if (params.mTextureMatrix && params.mTexture.notNull()) + if (tex_setup) { gGL.getTexUnit(0)->activate(); glLoadIdentity(); @@ -494,9 +514,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) { gPipeline.unbindDeferredShader(*current_shader); LLVertexBuffer::unbind(); - LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); } if (!light_enabled) diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 645c7ebcae..7c017f5694 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -613,11 +613,11 @@ void LLDrawPoolAvatar::beginRigid() { if (LLPipeline::sUnderWaterRender) { - sVertexProgram = &gObjectSimpleWaterProgram; + sVertexProgram = &gObjectSimpleNonIndexedWaterProgram; } else { - sVertexProgram = &gObjectSimpleProgram; + sVertexProgram = &gObjectSimpleNonIndexedProgram; } if (sVertexProgram != NULL) @@ -669,7 +669,7 @@ void LLDrawPoolAvatar::endDeferredImpostor() void LLDrawPoolAvatar::beginDeferredRigid() { - sVertexProgram = &gDeferredDiffuseProgram; + sVertexProgram = &gDeferredNonIndexedDiffuseProgram; sVertexProgram->bind(); } @@ -700,11 +700,11 @@ void LLDrawPoolAvatar::beginSkinned() { if (LLPipeline::sUnderWaterRender) { - sVertexProgram = &gObjectSimpleWaterProgram; + sVertexProgram = &gObjectSimpleNonIndexedWaterProgram; } else { - sVertexProgram = &gObjectSimpleProgram; + sVertexProgram = &gObjectSimpleNonIndexedProgram; } } @@ -789,11 +789,11 @@ void LLDrawPoolAvatar::beginRiggedSimple() { if (LLPipeline::sUnderWaterRender) { - sVertexProgram = &gObjectSimpleWaterProgram; + sVertexProgram = &gObjectSimpleNonIndexedWaterProgram; } else { - sVertexProgram = &gObjectSimpleProgram; + sVertexProgram = &gObjectSimpleNonIndexedProgram; } } @@ -864,11 +864,11 @@ void LLDrawPoolAvatar::beginRiggedFullbright() { if (LLPipeline::sUnderWaterRender) { - sVertexProgram = &gObjectFullbrightWaterProgram; + sVertexProgram = &gObjectFullbrightNonIndexedWaterProgram; } else { - sVertexProgram = &gObjectFullbrightProgram; + sVertexProgram = &gObjectFullbrightNonIndexedProgram; } } @@ -908,11 +908,11 @@ void LLDrawPoolAvatar::beginRiggedShinySimple() { if (LLPipeline::sUnderWaterRender) { - sVertexProgram = &gObjectShinyWaterProgram; + sVertexProgram = &gObjectShinyNonIndexedWaterProgram; } else { - sVertexProgram = &gObjectShinyProgram; + sVertexProgram = &gObjectShinyNonIndexedProgram; } } @@ -953,11 +953,11 @@ void LLDrawPoolAvatar::beginRiggedFullbrightShiny() { if (LLPipeline::sUnderWaterRender) { - sVertexProgram = &gObjectFullbrightShinyWaterProgram; + sVertexProgram = &gObjectFullbrightShinyNonIndexedWaterProgram; } else { - sVertexProgram = &gObjectFullbrightShinyProgram; + sVertexProgram = &gObjectFullbrightShinyNonIndexedProgram; } } diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 3531073896..4ac4b89ab4 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -309,6 +309,9 @@ void LLDrawPoolBump::endRenderPass(S32 pass) llassert(0); break; } + + //to cleanup texture channels + LLRenderPass::endRenderPass(pass); } //static @@ -347,6 +350,11 @@ void LLDrawPoolBump::beginShiny(bool invisible) } bindCubeMap(shader, mVertexShaderLevel, diffuse_channel, cube_channel, invisible); + + if (mVertexShaderLevel > 1) + { //indexed texture rendering, channel 0 is always diffuse + diffuse_channel = 0; + } } //static @@ -414,16 +422,16 @@ void LLDrawPoolBump::renderShiny(bool invisible) LLGLEnable blend_enable(GL_BLEND); if (!invisible && mVertexShaderLevel > 1) { - LLRenderPass::renderTexture(LLRenderPass::PASS_SHINY, sVertexMask); + LLRenderPass::pushBatches(LLRenderPass::PASS_SHINY, sVertexMask | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); } else if (!invisible) { renderGroups(LLRenderPass::PASS_SHINY, sVertexMask); } - else // invisible - { - renderGroups(LLRenderPass::PASS_INVISI_SHINY, sVertexMask); - } + //else // invisible (deprecated) + //{ + //renderGroups(LLRenderPass::PASS_INVISI_SHINY, sVertexMask); + //} } } @@ -536,7 +544,15 @@ void LLDrawPoolBump::renderFullbrightShiny() if( gSky.mVOSkyp->getCubeMap() ) { LLGLEnable blend_enable(GL_BLEND); - LLRenderPass::renderTexture(LLRenderPass::PASS_FULLBRIGHT_SHINY, sVertexMask); + + if (mVertexShaderLevel > 1) + { + LLRenderPass::pushBatches(LLRenderPass::PASS_FULLBRIGHT_SHINY, sVertexMask | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); + } + else + { + LLRenderPass::renderTexture(LLRenderPass::PASS_FULLBRIGHT_SHINY, sVertexMask); + } } } @@ -836,6 +852,9 @@ void LLDrawPoolBump::endPostDeferredPass(S32 pass) endBump(LLRenderPass::PASS_POST_BUMP); break; } + + //to disable texture channels + LLRenderPass::endRenderPass(pass); } void LLDrawPoolBump::renderPostDeferred(S32 pass) @@ -1296,39 +1315,56 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL { applyModelMatrix(params); - if (params.mTextureMatrix) + bool tex_setup = false; + + if (batch_textures && params.mTextureList.size() > 1) { - if (mShiny) + for (U32 i = 0; i < params.mTextureList.size(); ++i) { - gGL.getTexUnit(0)->activate(); - glMatrixMode(GL_TEXTURE); + if (params.mTextureList[i].notNull()) + { + gGL.getTexUnit(i)->bind(params.mTextureList[i], TRUE); + } } - else + } + else + { //not batching textures or batch has only 1 texture -- might need a texture matrix + if (params.mTextureMatrix) { - gGL.getTexUnit(1)->activate(); - glMatrixMode(GL_TEXTURE); + if (mShiny) + { + gGL.getTexUnit(0)->activate(); + glMatrixMode(GL_TEXTURE); + } + else + { + gGL.getTexUnit(1)->activate(); + glMatrixMode(GL_TEXTURE); + glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); + gPipeline.mTextureMatrixOps++; + gGL.getTexUnit(0)->activate(); + } + glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); gPipeline.mTextureMatrixOps++; - gGL.getTexUnit(0)->activate(); - } - glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); - gPipeline.mTextureMatrixOps++; - } - - if (mShiny && mVertexShaderLevel > 1 && texture) - { - if (params.mTexture.notNull()) - { - gGL.getTexUnit(diffuse_channel)->bind(params.mTexture) ; - params.mTexture->addTextureStats(params.mVSize); + tex_setup = true; } - else + + if (mShiny && mVertexShaderLevel > 1 && texture) { - gGL.getTexUnit(diffuse_channel)->unbind(LLTexUnit::TT_TEXTURE); + if (params.mTexture.notNull()) + { + gGL.getTexUnit(diffuse_channel)->bind(params.mTexture) ; + params.mTexture->addTextureStats(params.mVSize); + } + else + { + gGL.getTexUnit(diffuse_channel)->unbind(LLTexUnit::TT_TEXTURE); + } } } - + if (params.mGroup) { params.mGroup->rebuildMesh(); @@ -1336,7 +1372,7 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL params.mVertexBuffer->setBuffer(mask); params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); - if (params.mTextureMatrix) + if (tex_setup) { if (mShiny) { diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index 8ff60f73cc..9b73b2f9b6 100644 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp @@ -105,7 +105,15 @@ void LLDrawPoolGlow::render(S32 pass) LLGLDepthTest depth(GL_TRUE, GL_FALSE); gGL.setColorMask(false, true); - renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask()); + + if (shader_level > 1) + { + pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); + } + else + { + renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask()); + } gGL.setColorMask(true, false); gGL.setSceneBlendType(LLRender::BT_ALPHA); @@ -179,13 +187,24 @@ void LLDrawPoolSimple::render(S32 pass) { //render simple LLFastTimer t(FTM_RENDER_SIMPLE); gPipeline.enableLightsDynamic(); - renderTexture(LLRenderPass::PASS_SIMPLE, getVertexDataMask()); - if (LLPipeline::sRenderDeferred) - { //if deferred rendering is enabled, bump faces aren't registered as simple - //render bump faces here as simple so bump faces will appear under water - renderTexture(LLRenderPass::PASS_BUMP, getVertexDataMask()); + if (mVertexShaderLevel > 0) + { + U32 mask = getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX; + + pushBatches(LLRenderPass::PASS_SIMPLE, mask, TRUE, TRUE); + + if (LLPipeline::sRenderDeferred) + { //if deferred rendering is enabled, bump faces aren't registered as simple + //render bump faces here as simple so bump faces will appear under water + pushBatches(LLRenderPass::PASS_BUMP, mask, TRUE, TRUE); + } } + else + { + renderTexture(LLRenderPass::PASS_SIMPLE, getVertexDataMask()); + } + } } @@ -246,11 +265,11 @@ void LLDrawPoolGrass::beginRenderPass(S32 pass) if (LLPipeline::sUnderWaterRender) { - simple_shader = &gObjectSimpleWaterProgram; + simple_shader = &gObjectSimpleNonIndexedWaterProgram; } else { - simple_shader = &gObjectSimpleProgram; + simple_shader = &gObjectSimpleNonIndexedProgram; } if (mVertexShaderLevel > 0) @@ -386,25 +405,21 @@ void LLDrawPoolFullbright::endRenderPass(S32 pass) void LLDrawPoolFullbright::render(S32 pass) { //render fullbright LLFastTimer t(FTM_RENDER_FULLBRIGHT); + gGL.setSceneBlendType(LLRender::BT_ALPHA); + if (mVertexShaderLevel > 0) { fullbright_shader->bind(); fullbright_shader->uniform1f(LLViewerShaderMgr::FULLBRIGHT, 1.f); + U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_TEXTURE_INDEX; + pushBatches(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask, TRUE, TRUE); } else { gPipeline.enableLightsFullbright(LLColor4(1,1,1,1)); + U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR; + renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask); } - - //gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.25f); - - //LLGLEnable test(GL_ALPHA_TEST); - //LLGLEnable blend(GL_BLEND); - gGL.setSceneBlendType(LLRender::BT_ALPHA); - U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR; - renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask); - - //gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); } S32 LLDrawPoolFullbright::getNumPasses() diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp index 195ee60a2e..81c796b146 100644 --- a/indra/newview/lldrawpooltree.cpp +++ b/indra/newview/lldrawpooltree.cpp @@ -66,11 +66,11 @@ void LLDrawPoolTree::beginRenderPass(S32 pass) if (LLPipeline::sUnderWaterRender) { - shader = &gObjectSimpleWaterProgram; + shader = &gObjectSimpleNonIndexedWaterProgram; } else { - shader = &gObjectSimpleProgram; + shader = &gObjectSimpleNonIndexedProgram; } if (gPipeline.canUseWindLightShadersOnObjects()) diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 29f3acdf91..e60b3f4543 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -66,12 +66,20 @@ LLGLSLShader gObjectSimpleProgram; LLGLSLShader gObjectSimpleWaterProgram; LLGLSLShader gObjectFullbrightProgram; LLGLSLShader gObjectFullbrightWaterProgram; - LLGLSLShader gObjectFullbrightShinyProgram; LLGLSLShader gObjectFullbrightShinyWaterProgram; LLGLSLShader gObjectShinyProgram; LLGLSLShader gObjectShinyWaterProgram; +LLGLSLShader gObjectSimpleNonIndexedProgram; +LLGLSLShader gObjectSimpleNonIndexedWaterProgram; +LLGLSLShader gObjectFullbrightNonIndexedProgram; +LLGLSLShader gObjectFullbrightNonIndexedWaterProgram; +LLGLSLShader gObjectFullbrightShinyNonIndexedProgram; +LLGLSLShader gObjectFullbrightShinyNonIndexedWaterProgram; +LLGLSLShader gObjectShinyNonIndexedProgram; +LLGLSLShader gObjectShinyNonIndexedWaterProgram; + //object hardware skinning shaders LLGLSLShader gSkinnedObjectSimpleProgram; LLGLSLShader gSkinnedObjectFullbrightProgram; @@ -113,6 +121,7 @@ LLGLSLShader gDeferredImpostorProgram; LLGLSLShader gDeferredEdgeProgram; LLGLSLShader gDeferredWaterProgram; LLGLSLShader gDeferredDiffuseProgram; +LLGLSLShader gDeferredNonIndexedDiffuseProgram; LLGLSLShader gDeferredSkinnedDiffuseProgram; LLGLSLShader gDeferredSkinnedBumpProgram; LLGLSLShader gDeferredSkinnedAlphaProgram; @@ -132,6 +141,7 @@ LLGLSLShader gDeferredShadowProgram; LLGLSLShader gDeferredAvatarShadowProgram; LLGLSLShader gDeferredAttachmentShadowProgram; LLGLSLShader gDeferredAlphaProgram; +LLGLSLShader gDeferredAvatarEyesProgram; LLGLSLShader gDeferredFullbrightProgram; LLGLSLShader gDeferredGIProgram; LLGLSLShader gDeferredGIFinalProgram; @@ -162,6 +172,10 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gObjectFullbrightProgram); mShaderList.push_back(&gObjectFullbrightShinyProgram); mShaderList.push_back(&gObjectFullbrightShinyWaterProgram); + mShaderList.push_back(&gObjectSimpleNonIndexedProgram); + mShaderList.push_back(&gObjectFullbrightNonIndexedProgram); + mShaderList.push_back(&gObjectFullbrightShinyNonIndexedProgram); + mShaderList.push_back(&gObjectFullbrightShinyNonIndexedWaterProgram); mShaderList.push_back(&gSkinnedObjectSimpleProgram); mShaderList.push_back(&gSkinnedObjectFullbrightProgram); mShaderList.push_back(&gSkinnedObjectFullbrightShinyProgram); @@ -185,6 +199,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gDeferredAlphaProgram); mShaderList.push_back(&gDeferredSkinnedAlphaProgram); mShaderList.push_back(&gDeferredFullbrightProgram); + mShaderList.push_back(&gDeferredAvatarEyesProgram); mShaderList.push_back(&gDeferredPostGIProgram); mShaderList.push_back(&gDeferredEdgeProgram); mShaderList.push_back(&gDeferredPostProgram); @@ -586,6 +601,16 @@ void LLViewerShaderMgr::unloadShaders() gObjectFullbrightShinyWaterProgram.unload(); gObjectShinyWaterProgram.unload(); + gObjectSimpleNonIndexedProgram.unload(); + gObjectSimpleNonIndexedWaterProgram.unload(); + gObjectFullbrightNonIndexedProgram.unload(); + gObjectFullbrightNonIndexedWaterProgram.unload(); + + gObjectShinyNonIndexedProgram.unload(); + gObjectFullbrightShinyNonIndexedProgram.unload(); + gObjectFullbrightShinyNonIndexedWaterProgram.unload(); + gObjectShinyNonIndexedWaterProgram.unload(); + gSkinnedObjectSimpleProgram.unload(); gSkinnedObjectFullbrightProgram.unload(); gSkinnedObjectFullbrightShinyProgram.unload(); @@ -616,6 +641,7 @@ void LLViewerShaderMgr::unloadShaders() gPostNightVisionProgram.unload(); gDeferredDiffuseProgram.unload(); + gDeferredNonIndexedDiffuseProgram.unload(); gDeferredSkinnedDiffuseProgram.unload(); gDeferredSkinnedBumpProgram.unload(); gDeferredSkinnedAlphaProgram.unload(); @@ -707,6 +733,14 @@ BOOL LLViewerShaderMgr::loadBasicShaders() shaders.push_back( make_pair( "lighting/lightFullbrightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); shaders.push_back( make_pair( "lighting/lightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightFullbrightNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightFullbrightWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightShinyNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightFullbrightShinyNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightShinyWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); for (U32 i = 0; i < shaders.size(); i++) { @@ -953,6 +987,32 @@ void setup_indexed_texture(LLGLSLShader& shader) shader.uniform1i("tex5", 5); shader.uniform1i("tex6", 6); shader.uniform1i("tex7", 7); + + S32 cur_tex = 8; //adjust any texture channels that might have been overwritten + for (U32 i = 0; i < shader.mTexture.size(); i++) + { + if (shader.mTexture[i] > -1 && shader.mTexture[i] < 7) + { + shader.uniform1i(i, cur_tex); + shader.mTexture[i] = cur_tex++; + } + } + shader.unbind(); +} + +void setup_indexed_texture_with_cubemap(LLGLSLShader& shader) +{ + shader.bind(); + shader.uniform1i("tex0", 0); + shader.uniform1i("tex1", 1); + shader.uniform1i("tex2", 2); + shader.uniform1i("tex3", 3); + shader.uniform1i("tex4", 4); + shader.uniform1i("tex5", 5); + shader.uniform1i("tex6", 6); + shader.uniform1i("environmentMap", 7); + shader.mTexture[LLViewerShaderMgr::ENVIRONMENT_MAP] = 7; + shader.mTexture[LLViewerShaderMgr::DIFFUSE_MAP] = 0; shader.unbind(); } @@ -962,6 +1022,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() { gDeferredTreeProgram.unload(); gDeferredDiffuseProgram.unload(); + gDeferredNonIndexedDiffuseProgram.unload(); gDeferredSkinnedDiffuseProgram.unload(); gDeferredSkinnedBumpProgram.unload(); gDeferredSkinnedAlphaProgram.unload(); @@ -982,6 +1043,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAvatarAlphaProgram.unload(); gDeferredAlphaProgram.unload(); gDeferredFullbrightProgram.unload(); + gDeferredAvatarEyesProgram.unload(); gDeferredPostGIProgram.unload(); gDeferredEdgeProgram.unload(); gDeferredPostProgram.unload(); @@ -1017,6 +1079,17 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() } } + if (success) + { + gDeferredNonIndexedDiffuseProgram.mName = "Non Indexed Deferred Diffuse Shader"; + gDeferredNonIndexedDiffuseProgram.mShaderFiles.clear(); + gDeferredNonIndexedDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredNonIndexedDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredNonIndexedDiffuseProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + success = gDeferredNonIndexedDiffuseProgram.createShader(NULL, NULL); + } + + if (success) { gDeferredSkinnedDiffuseProgram.mName = "Deferred Skinned Diffuse Shader"; @@ -1237,6 +1310,24 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredAlphaProgram.createShader(NULL, NULL); + if (success) + { + setup_indexed_texture(gDeferredAlphaProgram); + } + } + + if (success) + { + gDeferredAvatarEyesProgram.mName = "Deferred Avatar Eyes Shader"; + gDeferredAvatarEyesProgram.mFeatures.calculatesAtmospherics = true; + gDeferredAvatarEyesProgram.mFeatures.hasGamma = true; + gDeferredAvatarEyesProgram.mFeatures.hasTransport = true; + gDeferredAvatarEyesProgram.mFeatures.isFullbright = true; + gDeferredAvatarEyesProgram.mShaderFiles.clear(); + gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/avatarEyesV.glsl", GL_VERTEX_SHADER_ARB)); + gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredAvatarEyesProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; + success = gDeferredAvatarEyesProgram.createShader(NULL, NULL); } if (success) @@ -1515,6 +1606,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() BOOL LLViewerShaderMgr::loadShadersObject() { BOOL success = TRUE; + bool batch_textures = mVertexShaderLevel[SHADER_OBJECT] > 1; if (mVertexShaderLevel[SHADER_OBJECT] == 0) { @@ -1526,6 +1618,14 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectSimpleWaterProgram.unload(); gObjectFullbrightProgram.unload(); gObjectFullbrightWaterProgram.unload(); + gObjectShinyNonIndexedProgram.unload(); + gObjectFullbrightShinyNonIndexedProgram.unload(); + gObjectFullbrightShinyNonIndexedWaterProgram.unload(); + gObjectShinyNonIndexedWaterProgram.unload(); + gObjectSimpleNonIndexedProgram.unload(); + gObjectSimpleNonIndexedWaterProgram.unload(); + gObjectFullbrightNonIndexedProgram.unload(); + gObjectFullbrightNonIndexedWaterProgram.unload(); gSkinnedObjectSimpleProgram.unload(); gSkinnedObjectFullbrightProgram.unload(); gSkinnedObjectFullbrightShinyProgram.unload(); @@ -1538,6 +1638,137 @@ BOOL LLViewerShaderMgr::loadShadersObject() return TRUE; } + if (success) + { + gObjectSimpleNonIndexedProgram.mName = "Non indexed Shader"; + gObjectSimpleNonIndexedProgram.mFeatures.calculatesLighting = true; + gObjectSimpleNonIndexedProgram.mFeatures.calculatesAtmospherics = true; + gObjectSimpleNonIndexedProgram.mFeatures.hasGamma = true; + gObjectSimpleNonIndexedProgram.mFeatures.hasAtmospherics = true; + gObjectSimpleNonIndexedProgram.mFeatures.hasLighting = true; + gObjectSimpleNonIndexedProgram.mFeatures.disableTextureIndex = true; + gObjectSimpleNonIndexedProgram.mShaderFiles.clear(); + gObjectSimpleNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectSimpleNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectSimpleNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + success = gObjectSimpleNonIndexedProgram.createShader(NULL, NULL); + } + + if (success) + { + gObjectSimpleNonIndexedWaterProgram.mName = "Non indexed Water Shader"; + gObjectSimpleNonIndexedWaterProgram.mFeatures.calculatesLighting = true; + gObjectSimpleNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true; + gObjectSimpleNonIndexedWaterProgram.mFeatures.hasWaterFog = true; + gObjectSimpleNonIndexedWaterProgram.mFeatures.hasAtmospherics = true; + gObjectSimpleNonIndexedWaterProgram.mFeatures.hasLighting = true; + gObjectSimpleNonIndexedWaterProgram.mFeatures.disableTextureIndex = true; + gObjectSimpleNonIndexedWaterProgram.mShaderFiles.clear(); + gObjectSimpleNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectSimpleNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectSimpleNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + gObjectSimpleNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + success = gObjectSimpleNonIndexedWaterProgram.createShader(NULL, NULL); + } + + if (success) + { + gObjectFullbrightNonIndexedProgram.mName = "Non Indexed Fullbright Shader"; + gObjectFullbrightNonIndexedProgram.mFeatures.calculatesAtmospherics = true; + gObjectFullbrightNonIndexedProgram.mFeatures.hasGamma = true; + gObjectFullbrightNonIndexedProgram.mFeatures.hasTransport = true; + gObjectFullbrightNonIndexedProgram.mFeatures.isFullbright = true; + gObjectFullbrightNonIndexedProgram.mFeatures.disableTextureIndex = true; + gObjectFullbrightNonIndexedProgram.mShaderFiles.clear(); + gObjectFullbrightNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectFullbrightNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectFullbrightNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + success = gObjectFullbrightNonIndexedProgram.createShader(NULL, NULL); + } + + if (success) + { + gObjectFullbrightNonIndexedWaterProgram.mName = "Non Indexed Fullbright Water Shader"; + gObjectFullbrightNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true; + gObjectFullbrightNonIndexedWaterProgram.mFeatures.isFullbright = true; + gObjectFullbrightNonIndexedWaterProgram.mFeatures.hasWaterFog = true; + gObjectFullbrightNonIndexedWaterProgram.mFeatures.hasTransport = true; + gObjectFullbrightNonIndexedWaterProgram.mFeatures.disableTextureIndex = true; + gObjectFullbrightNonIndexedWaterProgram.mShaderFiles.clear(); + gObjectFullbrightNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectFullbrightNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectFullbrightNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + gObjectFullbrightNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + success = gObjectFullbrightNonIndexedWaterProgram.createShader(NULL, NULL); + } + + if (success) + { + gObjectShinyNonIndexedProgram.mName = "Non Indexed Shiny Shader"; + gObjectShinyNonIndexedProgram.mFeatures.calculatesAtmospherics = true; + gObjectShinyNonIndexedProgram.mFeatures.calculatesLighting = true; + gObjectShinyNonIndexedProgram.mFeatures.hasGamma = true; + gObjectShinyNonIndexedProgram.mFeatures.hasAtmospherics = true; + gObjectShinyNonIndexedProgram.mFeatures.isShiny = true; + gObjectShinyNonIndexedProgram.mFeatures.disableTextureIndex = true; + gObjectShinyNonIndexedProgram.mShaderFiles.clear(); + gObjectShinyNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectShinyNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/shinyF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectShinyNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + success = gObjectShinyNonIndexedProgram.createShader(NULL, &mShinyUniforms); + } + + if (success) + { + gObjectShinyNonIndexedWaterProgram.mName = "Non Indexed Shiny Water Shader"; + gObjectShinyNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true; + gObjectShinyNonIndexedWaterProgram.mFeatures.calculatesLighting = true; + gObjectShinyNonIndexedWaterProgram.mFeatures.isShiny = true; + gObjectShinyNonIndexedWaterProgram.mFeatures.hasWaterFog = true; + gObjectShinyNonIndexedWaterProgram.mFeatures.hasAtmospherics = true; + gObjectShinyNonIndexedWaterProgram.mFeatures.disableTextureIndex = true; + gObjectShinyNonIndexedWaterProgram.mShaderFiles.clear(); + gObjectShinyNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectShinyNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectShinyNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + gObjectShinyNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + success = gObjectShinyNonIndexedWaterProgram.createShader(NULL, &mShinyUniforms); + } + + if (success) + { + gObjectFullbrightShinyNonIndexedProgram.mName = "Non Indexed Fullbright Shiny Shader"; + gObjectFullbrightShinyNonIndexedProgram.mFeatures.calculatesAtmospherics = true; + gObjectFullbrightShinyNonIndexedProgram.mFeatures.isFullbright = true; + gObjectFullbrightShinyNonIndexedProgram.mFeatures.isShiny = true; + gObjectFullbrightShinyNonIndexedProgram.mFeatures.hasGamma = true; + gObjectFullbrightShinyNonIndexedProgram.mFeatures.hasTransport = true; + gObjectFullbrightShinyNonIndexedProgram.mFeatures.disableTextureIndex = true; + gObjectFullbrightShinyNonIndexedProgram.mShaderFiles.clear(); + gObjectFullbrightShinyNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectFullbrightShinyNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectFullbrightShinyNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + success = gObjectFullbrightShinyNonIndexedProgram.createShader(NULL, &mShinyUniforms); + } + + if (success) + { + gObjectFullbrightShinyNonIndexedWaterProgram.mName = "Non Indexed Fullbright Shiny Water Shader"; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.isFullbright = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.isShiny = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.hasGamma = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.hasTransport = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.hasWaterFog = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mFeatures.disableTextureIndex = true; + gObjectFullbrightShinyNonIndexedWaterProgram.mShaderFiles.clear(); + gObjectFullbrightShinyNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectFullbrightShinyNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectFullbrightShinyNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + gObjectFullbrightShinyNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; + success = gObjectFullbrightShinyNonIndexedWaterProgram.createShader(NULL, &mShinyUniforms); + } + if (success) { gObjectSimpleProgram.mName = "Simple Shader"; @@ -1551,6 +1782,11 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectSimpleProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectSimpleProgram.createShader(NULL, NULL); + + if (success && batch_textures) + { + setup_indexed_texture(gObjectSimpleProgram); + } } if (success) @@ -1567,6 +1803,11 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectSimpleWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectSimpleWaterProgram.createShader(NULL, NULL); + + if (success && batch_textures) + { + setup_indexed_texture(gObjectSimpleWaterProgram); + } } if (success) @@ -1581,6 +1822,10 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectFullbrightProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectFullbrightProgram.createShader(NULL, NULL); + if (success && batch_textures) + { + setup_indexed_texture(gObjectFullbrightProgram); + } } if (success) @@ -1596,6 +1841,10 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectFullbrightWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectFullbrightWaterProgram.createShader(NULL, NULL); + if (success && batch_textures) + { + setup_indexed_texture(gObjectFullbrightWaterProgram); + } } if (success) @@ -1611,6 +1860,10 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectShinyProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectShinyProgram.createShader(NULL, &mShinyUniforms); + if (success && batch_textures) + { + setup_indexed_texture_with_cubemap(gObjectShinyProgram); + } } if (success) @@ -1627,6 +1880,10 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectShinyWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectShinyWaterProgram.createShader(NULL, &mShinyUniforms); + if (success && batch_textures) + { + setup_indexed_texture_with_cubemap(gObjectShinyWaterProgram); + } } if (success) @@ -1642,6 +1899,10 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectFullbrightShinyProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectFullbrightShinyProgram.createShader(NULL, &mShinyUniforms); + if (success && batch_textures) + { + setup_indexed_texture_with_cubemap(gObjectFullbrightShinyProgram); + } } if (success) @@ -1659,6 +1920,10 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightShinyWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectFullbrightShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectFullbrightShinyWaterProgram.createShader(NULL, &mShinyUniforms); + if (success && batch_textures) + { + setup_indexed_texture_with_cubemap(gObjectFullbrightShinyWaterProgram); + } } if (mVertexShaderLevel[SHADER_AVATAR] > 0) @@ -1672,6 +1937,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectSimpleProgram.mFeatures.hasAtmospherics = true; gSkinnedObjectSimpleProgram.mFeatures.hasLighting = true; gSkinnedObjectSimpleProgram.mFeatures.hasObjectSkinning = true; + gSkinnedObjectSimpleProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectSimpleProgram.mShaderFiles.clear(); gSkinnedObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); gSkinnedObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -1687,6 +1953,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectFullbrightProgram.mFeatures.hasTransport = true; gSkinnedObjectFullbrightProgram.mFeatures.isFullbright = true; gSkinnedObjectFullbrightProgram.mFeatures.hasObjectSkinning = true; + gSkinnedObjectFullbrightProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectFullbrightProgram.mShaderFiles.clear(); gSkinnedObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); gSkinnedObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -1703,6 +1970,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectFullbrightShinyProgram.mFeatures.isShiny = true; gSkinnedObjectFullbrightShinyProgram.mFeatures.isFullbright = true; gSkinnedObjectFullbrightShinyProgram.mFeatures.hasObjectSkinning = true; + gSkinnedObjectFullbrightShinyProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectFullbrightShinyProgram.mShaderFiles.clear(); gSkinnedObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinySkinnedV.glsl", GL_VERTEX_SHADER_ARB)); gSkinnedObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -1719,6 +1987,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectShinySimpleProgram.mFeatures.hasAtmospherics = true; gSkinnedObjectShinySimpleProgram.mFeatures.hasObjectSkinning = true; gSkinnedObjectShinySimpleProgram.mFeatures.isShiny = true; + gSkinnedObjectShinySimpleProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectShinySimpleProgram.mShaderFiles.clear(); gSkinnedObjectShinySimpleProgram.mShaderFiles.push_back(make_pair("objects/shinySimpleSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); gSkinnedObjectShinySimpleProgram.mShaderFiles.push_back(make_pair("objects/shinyF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -1734,9 +2003,11 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectSimpleWaterProgram.mFeatures.hasGamma = true; gSkinnedObjectSimpleWaterProgram.mFeatures.hasAtmospherics = true; gSkinnedObjectSimpleWaterProgram.mFeatures.hasLighting = true; + gSkinnedObjectSimpleWaterProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectSimpleWaterProgram.mFeatures.hasWaterFog = true; gSkinnedObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; gSkinnedObjectSimpleWaterProgram.mFeatures.hasObjectSkinning = true; + gSkinnedObjectSimpleWaterProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectSimpleWaterProgram.mShaderFiles.clear(); gSkinnedObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); gSkinnedObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -1753,6 +2024,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectFullbrightWaterProgram.mFeatures.isFullbright = true; gSkinnedObjectFullbrightWaterProgram.mFeatures.hasObjectSkinning = true; gSkinnedObjectFullbrightWaterProgram.mFeatures.hasWaterFog = true; + gSkinnedObjectFullbrightWaterProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectFullbrightWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; gSkinnedObjectFullbrightWaterProgram.mShaderFiles.clear(); gSkinnedObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); @@ -1771,6 +2043,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectFullbrightShinyWaterProgram.mFeatures.isFullbright = true; gSkinnedObjectFullbrightShinyWaterProgram.mFeatures.hasObjectSkinning = true; gSkinnedObjectFullbrightShinyWaterProgram.mFeatures.hasWaterFog = true; + gSkinnedObjectFullbrightShinyWaterProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectFullbrightShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; gSkinnedObjectFullbrightShinyWaterProgram.mShaderFiles.clear(); gSkinnedObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinySkinnedV.glsl", GL_VERTEX_SHADER_ARB)); @@ -1789,6 +2062,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gSkinnedObjectShinySimpleWaterProgram.mFeatures.hasObjectSkinning = true; gSkinnedObjectShinySimpleWaterProgram.mFeatures.isShiny = true; gSkinnedObjectShinySimpleWaterProgram.mFeatures.hasWaterFog = true; + gSkinnedObjectShinySimpleWaterProgram.mFeatures.disableTextureIndex = true; gSkinnedObjectShinySimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; gSkinnedObjectShinySimpleWaterProgram.mShaderFiles.clear(); gSkinnedObjectShinySimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/shinySimpleSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index f5371f0619..6ecba65470 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -298,16 +298,25 @@ extern LLVector4 gShinyOrigin; //object shaders extern LLGLSLShader gObjectSimpleProgram; extern LLGLSLShader gObjectSimpleWaterProgram; +extern LLGLSLShader gObjectSimpleNonIndexedProgram; +extern LLGLSLShader gObjectSimpleNonIndexedWaterProgram; extern LLGLSLShader gObjectFullbrightProgram; extern LLGLSLShader gObjectFullbrightWaterProgram; +extern LLGLSLShader gObjectFullbrightNonIndexedProgram; +extern LLGLSLShader gObjectFullbrightNonIndexedWaterProgram; extern LLGLSLShader gObjectSimpleLODProgram; extern LLGLSLShader gObjectFullbrightLODProgram; extern LLGLSLShader gObjectFullbrightShinyProgram; extern LLGLSLShader gObjectFullbrightShinyWaterProgram; +extern LLGLSLShader gObjectFullbrightShinyNonIndexedProgram; +extern LLGLSLShader gObjectFullbrightShinyNonIndexedWaterProgram; + extern LLGLSLShader gObjectShinyProgram; extern LLGLSLShader gObjectShinyWaterProgram; +extern LLGLSLShader gObjectShinyNonIndexedProgram; +extern LLGLSLShader gObjectShinyNonIndexedWaterProgram; extern LLGLSLShader gSkinnedObjectSimpleProgram; extern LLGLSLShader gSkinnedObjectFullbrightProgram; @@ -349,6 +358,7 @@ extern LLGLSLShader gDeferredImpostorProgram; extern LLGLSLShader gDeferredEdgeProgram; extern LLGLSLShader gDeferredWaterProgram; extern LLGLSLShader gDeferredDiffuseProgram; +extern LLGLSLShader gDeferredNonIndexedDiffuseProgram; extern LLGLSLShader gDeferredSkinnedDiffuseProgram; extern LLGLSLShader gDeferredSkinnedBumpProgram; extern LLGLSLShader gDeferredSkinnedAlphaProgram; @@ -373,6 +383,7 @@ extern LLGLSLShader gDeferredAvatarShadowProgram; extern LLGLSLShader gDeferredAttachmentShadowProgram; extern LLGLSLShader gDeferredAlphaProgram; extern LLGLSLShader gDeferredFullbrightProgram; +extern LLGLSLShader gDeferredAvatarEyesProgram; extern LLGLSLShader gDeferredAvatarAlphaProgram; extern LLGLSLShader gDeferredWLSkyProgram; extern LLGLSLShader gDeferredWLCloudProgram; diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 85b740d819..a4b0910c92 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -324,10 +324,18 @@ void LLVOPartGroup::getGeometry(S32 idx, LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis(); - + + //HACK -- the verticesp->mV[3] = 0.f here are to set the texture index to 0 (particles don't use texture batching, maybe they should) + // this works because there is actually a 4th float stored after the vertex position which is used as a texture index + // also, somebody please VECTORIZE THIS + + verticesp->mV[3] = 0.f; *verticesp++ = part_pos_agent + up - right; + verticesp->mV[3] = 0.f; *verticesp++ = part_pos_agent - up - right; + verticesp->mV[3] = 0.f; *verticesp++ = part_pos_agent + up + right; + verticesp->mV[3] = 0.f; *verticesp++ = part_pos_agent - up + right; *colorsp++ = part.mColor; @@ -360,7 +368,7 @@ U32 LLVOPartGroup::getPartitionType() const } LLParticlePartition::LLParticlePartition() -: LLSpatialPartition(LLDrawPoolAlpha::VERTEX_DATA_MASK, TRUE, GL_STREAM_DRAW_ARB) +: LLSpatialPartition(LLDrawPoolAlpha::VERTEX_DATA_MASK | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, GL_STREAM_DRAW_ARB) { mRenderPass = LLRenderPass::PASS_ALPHA; mDrawableType = LLPipeline::RENDER_TYPE_PARTICLES; diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 6396bc042d..800af26b69 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -1483,6 +1483,8 @@ BOOL LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, cons facep->setVertexBuffer(buff); } + llassert(facep->getVertexBuffer()->getNumIndices() == 6); + index_offset = facep->getGeometry(verticesp,normalsp,texCoordsp, indicesp); if (-1 == index_offset) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 87de064ad1..713724cf46 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -73,6 +73,7 @@ #include "llagent.h" #include "llviewermediafocus.h" #include "lldatapacker.h" +#include "llviewershadermgr.h" #include "llvoavatar.h" #include "llvocache.h" @@ -4295,20 +4296,24 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) U32 bump_mask = LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1 | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR; U32 fullbright_mask = LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR; - if (LLPipeline::sRenderDeferred) + bool batch_textures = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 1; + + if (batch_textures) { bump_mask |= LLVertexBuffer::MAP_BINORMAL; genDrawInfo(group, simple_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, simple_faces, FALSE, TRUE); genDrawInfo(group, fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, fullbright_faces, FALSE, TRUE); genDrawInfo(group, bump_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, bump_faces, FALSE, TRUE); + genDrawInfo(group, alpha_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, alpha_faces, TRUE, TRUE); } else { genDrawInfo(group, simple_mask, simple_faces); genDrawInfo(group, fullbright_mask, fullbright_faces); genDrawInfo(group, bump_mask, bump_faces, FALSE, TRUE); + genDrawInfo(group, alpha_mask, alpha_faces, TRUE); } - genDrawInfo(group, alpha_mask, alpha_faces, TRUE); + if (!LLPipeline::sDelayVBUpdate) { @@ -4482,25 +4487,60 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: std::vector<LLViewerTexture*> texture_list; - if (!distance_sort && batch_textures) + if (batch_textures) { U8 cur_tex = 0; facep->setTextureIndex(cur_tex); texture_list.push_back(tex); - if (can_batch_texture(facep)) + //if (can_batch_texture(facep)) { while (i != faces.end()) { facep = *i; if (facep->getTexture() != tex) { - cur_tex++; + if (distance_sort) + { //textures might be out of order, see if texture exists in current batch + bool found = false; + for (U32 tex_idx = 0; tex_idx < texture_list.size(); ++tex_idx) + { + if (facep->getTexture() == texture_list[tex_idx]) + { + cur_tex = tex_idx; + found = true; + break; + } + } + + if (!found) + { + cur_tex = texture_list.size(); + } + } + else + { + cur_tex++; + + if (cur_tex >= 7 && facep->getTextureEntry()->getShiny()) + { //entry 7 is reserved for the environment map for shiny faces + break; + } + } + + if (!can_batch_texture(facep)) + { //face is bump mapped or has an animated texture matrix -- can't + //batch more than 1 texture at a time + break; + } + if (cur_tex >= 8) { //cut batches on every 8 textures break; } + tex = facep->getTexture(); + texture_list.push_back(tex); } @@ -4509,11 +4549,6 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: break; } - if (!can_batch_texture(facep)) - { //cut batches on things that require single texture rendering (animated texture, bump maps) - break; - } - ++i; index_count += facep->getIndicesCount(); geom_count += facep->getGeomCount(); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index fadae7c71e..1489c033e2 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3606,7 +3606,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) if (gDebugGL) { check_stack_depth(stack_depth); - std::string msg = llformat("%s pass %d", gPoolNames[cur_type].c_str(), i); + std::string msg = llformat("pass %d", i); LLGLState::checkStates(msg); LLGLState::checkTextureChannels(msg); LLGLState::checkClientArrays(msg); @@ -6568,8 +6568,6 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen noise_map = mNoiseMap; } - LLGLState::checkTextureChannels(); - shader.bind(); S32 channel = 0; channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage()); @@ -7852,8 +7850,6 @@ void LLPipeline::unbindDeferredShader(LLGLSLShader &shader) gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); gGL.getTexUnit(0)->activate(); shader.unbind(); - - LLGLState::checkTextureChannels(); } inline float sgn(float a) -- cgit v1.2.3 From 504e0a2522ec2fbe1ce17f9d29c42c1936cb0e79 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Mon, 30 May 2011 01:53:56 -0500 Subject: unused variable --- indra/newview/llvovolume.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 713724cf46..ed6edbb65b 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1223,7 +1223,7 @@ BOOL LLVOVolume::calcLOD() } //hold onto unmodified distance for debugging - F32 debug_distance = distance; + //F32 debug_distance = distance; distance *= sDistanceFactor; -- cgit v1.2.3 From 522a28d12721e1cc2e7f726882baa79be97d55fa Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Mon, 30 May 2011 02:22:01 -0500 Subject: Fix for classic clouds being busted. --- indra/newview/llvoclouds.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llvoclouds.cpp b/indra/newview/llvoclouds.cpp index 78aa6e6ab8..478708cd78 100644 --- a/indra/newview/llvoclouds.cpp +++ b/indra/newview/llvoclouds.cpp @@ -244,9 +244,13 @@ void LLVOClouds::getGeometry(S32 te, vtx[2] = puff_pos_agent + right + up; vtx[3] = puff_pos_agent + right - up; + verticesp->mV[3] = 0.f; *verticesp++ = vtx[0]; + verticesp->mV[3] = 0.f; *verticesp++ = vtx[1]; + verticesp->mV[3] = 0.f; *verticesp++ = vtx[2]; + verticesp->mV[3] = 0.f; *verticesp++ = vtx[3]; *texcoordsp++ = uvs[0]; -- cgit v1.2.3 From 69391625ebf53a8ee797b268ee6aef7303bea6af Mon Sep 17 00:00:00 2001 From: Seraph Linden <none@none> Date: Mon, 30 May 2011 13:53:49 -0400 Subject: SH-1677 FIXED [REGRESSION] Bulk uploads do not adhere to default permissions no idea how this ever worked before, as the code since 1.23 has been using the wrong keyword ("everyone_mask" instead of "new_everyone_mask"). I suspect something changed on the sim side? --- indra/newview/llassetuploadresponders.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index c08771c5e7..d7ba4ea470 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -384,18 +384,18 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content) // Continuing the horrible hack above, we need to extract the originally requested permissions data, if any, // and use them for each next file to be uploaded. Note the requested perms are not the same as the U32 everyone_perms = - content.has("everyone_mask") ? - content["everyone_mask"].asInteger() : + content.has("new_everyone_mask") ? + content["new_everyone_mask"].asInteger() : PERM_NONE; U32 group_perms = - content.has("group_mask") ? - content["group_mask"].asInteger() : + content.has("new_group_mask") ? + content["new_group_mask"].asInteger() : PERM_NONE; U32 next_owner_perms = - content.has("next_owner_mask") ? - content["next_owner_mask"].asInteger() : + content.has("new_next_owner_mask") ? + content["new_next_owner_mask"].asInteger() : PERM_NONE; std::string display_name = LLStringUtil::null; -- cgit v1.2.3 From fa76b8992c6c636303d398bd25d34c39ae23419e Mon Sep 17 00:00:00 2001 From: Seraph Linden <none@none> Date: Mon, 30 May 2011 16:49:43 -0400 Subject: SH-1592 FIXED Advanced model uploader needs an IP checkbox like the wizard uploader has --- indra/newview/llfloatermodelpreview.cpp | 15 +++++++++++---- .../skins/default/xui/en/floater_model_preview.xml | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 3bddd020e1..8be5c427fe 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -320,9 +320,11 @@ BOOL LLFloaterModelPreview::postBuild() childDisable("upload_skin"); childDisable("upload_joints"); - + childDisable("ok_btn"); + childSetCommitCallback("confirm_checkbox", refresh, this); + mViewOptionMenuButton = getChild<LLMenuButton>("options_gear_btn"); mCommitCallbackRegistrar.add("ModelImport.ViewOption.Action", boost::bind(&LLFloaterModelPreview::onViewOptionChecked, this, _2)); @@ -2701,7 +2703,8 @@ U32 LLModelPreview::calcResourceCost() if (mFMP && mModelLoader) { - if ( getLoadState() < LLModelLoader::ERROR_PARSING ) + const BOOL confirmed_checkbox = mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->getValue().asBoolean(); + if ( getLoadState() < LLModelLoader::ERROR_PARSING && confirmed_checkbox ) { mFMP->childEnable("ok_btn"); } @@ -2843,7 +2846,8 @@ void LLModelPreview::rebuildUploadData() F32 max_scale = 0.f; - if ( mBaseScene.size() > 0 ) + const BOOL confirmed_checkbox = mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->getValue().asBoolean(); + if ( mBaseScene.size() > 0 && confirmed_checkbox ) { mFMP->childEnable("ok_btn"); } @@ -3247,6 +3251,8 @@ void LLModelPreview::loadModelCallback(S32 lod) } mLoading = false; + if (mFMP) + mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->set(FALSE); refresh(); mModelLoadedSignal(); @@ -3902,7 +3908,8 @@ void LLModelPreview::updateStatusMessages() } } - if ( upload_ok && !errorStateFromLoader && skinAndRigOk ) + const BOOL confirmed_checkbox = mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->getValue().asBoolean(); + if ( upload_ok && !errorStateFromLoader && skinAndRigOk && confirmed_checkbox) { mFMP->childEnable("ok_btn"); } diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index dce55dae12..4677d014b8 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -83,6 +83,20 @@ </text> </panel> + <check_box + height="16" + left_delta="0" + name="confirm_checkbox" + top_pad="15" + follows="bottom|left" + width="16" /> + + <text + height="30" + width="570" + word_wrap="true" + left_delta="25" + top_delta="0">I confirm that I have the appropriate rights to the material contained in this model. [secondlife:///app/floater/learn_more Learn more]</text> <text left="10" bottom="540" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text> -- cgit v1.2.3 From ece32418e7c1828a65c88e526a5afcb635c5453a Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 31 May 2011 14:35:59 -0500 Subject: SH-1682 Dynamically adjust the number of texture channels to use for indexed texture rendering based on available hardware. --- indra/newview/app_settings/settings.xml | 4 +- .../shaders/class1/avatar/avatarF.glsl | 2 +- .../shaders/class1/avatar/avatarSkinV.glsl | 2 +- .../shaders/class1/avatar/avatarV.glsl | 2 +- .../shaders/class1/avatar/eyeballF.glsl | 2 +- .../shaders/class1/avatar/eyeballV.glsl | 2 +- .../shaders/class1/avatar/objectSkinV.glsl | 2 +- .../shaders/class1/avatar/pickAvatarF.glsl | 2 +- .../shaders/class1/avatar/pickAvatarV.glsl | 2 +- .../shaders/class1/deferred/alphaF.glsl | 2 +- .../shaders/class1/deferred/alphaNonIndexedF.glsl | 67 +++++++++ .../shaders/class1/deferred/alphaSkinnedV.glsl | 2 +- .../shaders/class1/deferred/alphaV.glsl | 2 +- .../shaders/class1/deferred/attachmentShadowF.glsl | 2 +- .../shaders/class1/deferred/attachmentShadowV.glsl | 2 +- .../shaders/class1/deferred/avatarAlphaV.glsl | 2 +- .../shaders/class1/deferred/avatarEyesV.glsl | 2 +- .../shaders/class1/deferred/avatarF.glsl | 2 +- .../shaders/class1/deferred/avatarShadowF.glsl | 2 +- .../shaders/class1/deferred/avatarShadowV.glsl | 2 +- .../shaders/class1/deferred/avatarV.glsl | 2 +- .../shaders/class1/deferred/blurLightF.glsl | 2 +- .../shaders/class1/deferred/blurLightMSF.glsl | 2 +- .../shaders/class1/deferred/blurLightV.glsl | 2 +- .../shaders/class1/deferred/bumpF.glsl | 2 +- .../shaders/class1/deferred/bumpSkinnedV.glsl | 2 +- .../shaders/class1/deferred/bumpV.glsl | 2 +- .../shaders/class1/deferred/cloudsF.glsl | 2 +- .../shaders/class1/deferred/cloudsV.glsl | 2 +- .../shaders/class1/deferred/diffuseF.glsl | 2 +- .../shaders/class1/deferred/diffuseIndexedF.glsl | 31 ---- .../shaders/class1/deferred/diffuseSkinnedV.glsl | 2 +- .../shaders/class1/deferred/diffuseV.glsl | 2 +- .../shaders/class1/deferred/fullbrightF.glsl | 2 +- .../shaders/class1/deferred/fullbrightV.glsl | 2 +- .../app_settings/shaders/class1/deferred/giF.glsl | 2 +- .../app_settings/shaders/class1/deferred/giV.glsl | 2 +- .../shaders/class1/deferred/impostorF.glsl | 2 +- .../shaders/class1/deferred/impostorV.glsl | 2 +- .../shaders/class1/deferred/luminanceF.glsl | 2 +- .../shaders/class1/deferred/luminanceV.glsl | 2 +- .../shaders/class1/deferred/multiPointLightF.glsl | 2 +- .../class1/deferred/multiPointLightMSF.glsl | 2 +- .../shaders/class1/deferred/multiPointLightV.glsl | 2 +- .../shaders/class1/deferred/multiSpotLightF.glsl | 2 +- .../shaders/class1/deferred/multiSpotLightMSF.glsl | 2 +- .../shaders/class1/deferred/pointLightF.glsl | 2 +- .../shaders/class1/deferred/pointLightMSF.glsl | 2 +- .../shaders/class1/deferred/pointLightV.glsl | 2 +- .../shaders/class1/deferred/postDeferredF.glsl | 2 +- .../shaders/class1/deferred/postDeferredMSF.glsl | 2 +- .../class1/deferred/postDeferredNoDoFF.glsl | 2 +- .../class1/deferred/postDeferredNoDoFMSF.glsl | 2 +- .../shaders/class1/deferred/postDeferredV.glsl | 2 +- .../shaders/class1/deferred/postgiF.glsl | 2 +- .../shaders/class1/deferred/postgiV.glsl | 2 +- .../shaders/class1/deferred/shadowF.glsl | 2 +- .../shaders/class1/deferred/shadowV.glsl | 2 +- .../app_settings/shaders/class1/deferred/skyF.glsl | 2 +- .../app_settings/shaders/class1/deferred/skyV.glsl | 2 +- .../shaders/class1/deferred/softenLightF.glsl | 2 +- .../shaders/class1/deferred/softenLightMSF.glsl | 2 +- .../shaders/class1/deferred/softenLightV.glsl | 2 +- .../shaders/class1/deferred/spotLightF.glsl | 2 +- .../shaders/class1/deferred/spotLightMSF.glsl | 2 +- .../shaders/class1/deferred/starsF.glsl | 2 +- .../shaders/class1/deferred/starsV.glsl | 2 +- .../shaders/class1/deferred/sunLightF.glsl | 2 +- .../shaders/class1/deferred/sunLightMSF.glsl | 2 +- .../shaders/class1/deferred/sunLightSSAOF.glsl | 2 +- .../shaders/class1/deferred/sunLightSSAOMSF.glsl | 2 +- .../shaders/class1/deferred/sunLightV.glsl | 2 +- .../shaders/class1/deferred/terrainF.glsl | 2 +- .../shaders/class1/deferred/terrainV.glsl | 2 +- .../shaders/class1/deferred/treeF.glsl | 2 +- .../shaders/class1/deferred/treeV.glsl | 2 +- .../shaders/class1/deferred/waterF.glsl | 2 +- .../shaders/class1/deferred/waterV.glsl | 2 +- .../shaders/class1/effects/glowExtractF.glsl | 2 +- .../shaders/class1/effects/glowExtractMSF.glsl | 2 +- .../shaders/class1/effects/glowExtractV.glsl | 2 +- .../app_settings/shaders/class1/effects/glowF.glsl | 2 +- .../app_settings/shaders/class1/effects/glowV.glsl | 2 +- .../shaders/class1/environment/terrainF.glsl | 2 +- .../shaders/class1/environment/terrainV.glsl | 2 +- .../shaders/class1/environment/terrainWaterF.glsl | 2 +- .../shaders/class1/environment/underWaterF.glsl | 2 +- .../shaders/class1/environment/waterF.glsl | 2 +- .../shaders/class1/environment/waterFogF.glsl | 2 +- .../shaders/class1/environment/waterV.glsl | 2 +- .../shaders/class1/interface/highlightF.glsl | 2 +- .../shaders/class1/interface/highlightV.glsl | 2 +- .../shaders/class1/lighting/lightF.glsl | 2 +- .../shaders/class1/lighting/lightFullbrightF.glsl | 2 +- .../class1/lighting/lightFullbrightShinyF.glsl | 2 +- .../lighting/lightFullbrightShinyWaterF.glsl | 2 +- .../class1/lighting/lightFullbrightWaterF.glsl | 2 +- .../class1/lighting/lightFuncSpecularV.glsl | 2 +- .../shaders/class1/lighting/lightFuncV.glsl | 2 +- .../shaders/class1/lighting/lightShinyF.glsl | 2 +- .../shaders/class1/lighting/lightShinyWaterF.glsl | 2 +- .../shaders/class1/lighting/lightSpecularV.glsl | 2 +- .../shaders/class1/lighting/lightV.glsl | 2 +- .../shaders/class1/lighting/lightWaterF.glsl | 2 +- .../class1/lighting/sumLightsSpecularV.glsl | 2 +- .../shaders/class1/lighting/sumLightsV.glsl | 2 +- .../shaders/class1/objects/fullbrightF.glsl | 2 +- .../shaders/class1/objects/fullbrightShinyF.glsl | 2 +- .../class1/objects/fullbrightShinySkinnedV.glsl | 2 +- .../shaders/class1/objects/fullbrightShinyV.glsl | 2 +- .../class1/objects/fullbrightShinyWaterF.glsl | 2 +- .../shaders/class1/objects/fullbrightSkinnedV.glsl | 2 +- .../shaders/class1/objects/fullbrightV.glsl | 2 +- .../shaders/class1/objects/fullbrightWaterF.glsl | 2 +- .../shaders/class1/objects/shinyF.glsl | 2 +- .../class1/objects/shinySimpleSkinnedV.glsl | 2 +- .../shaders/class1/objects/shinyV.glsl | 2 +- .../shaders/class1/objects/shinyWaterF.glsl | 2 +- .../shaders/class1/objects/simpleF.glsl | 2 - .../shaders/class1/objects/simpleSkinnedV.glsl | 2 +- .../shaders/class1/objects/simpleV.glsl | 2 +- .../shaders/class1/objects/simpleWaterF.glsl | 2 +- .../shaders/class1/windlight/atmosphericsF.glsl | 2 +- .../class1/windlight/atmosphericsHelpersV.glsl | 2 +- .../shaders/class1/windlight/atmosphericsV.glsl | 2 +- .../class1/windlight/atmosphericsVarsF.glsl | 2 +- .../class1/windlight/atmosphericsVarsV.glsl | 2 +- .../shaders/class1/windlight/gammaF.glsl | 2 +- .../shaders/class1/windlight/transportF.glsl | 2 +- .../shaders/class2/avatar/eyeballV.glsl | 2 +- .../shaders/class2/deferred/alphaF.glsl | 4 +- .../shaders/class2/deferred/alphaNonIndexedF.glsl | 125 ++++++++++++++++ .../shaders/class2/deferred/alphaSkinnedV.glsl | 2 +- .../shaders/class2/deferred/alphaV.glsl | 2 +- .../shaders/class2/deferred/avatarAlphaV.glsl | 2 +- .../shaders/class2/deferred/edgeF.glsl | 2 +- .../shaders/class2/deferred/edgeMSF.glsl | 2 +- .../shaders/class2/deferred/edgeV.glsl | 2 +- .../shaders/class2/deferred/multiSpotLightF.glsl | 2 +- .../shaders/class2/deferred/multiSpotLightMSF.glsl | 2 +- .../shaders/class2/deferred/softenLightF.glsl | 2 +- .../shaders/class2/deferred/softenLightMSF.glsl | 2 +- .../shaders/class2/deferred/softenLightV.glsl | 2 +- .../shaders/class2/deferred/spotLightF.glsl | 2 +- .../shaders/class2/deferred/spotLightMSF.glsl | 2 +- .../shaders/class2/deferred/sunLightF.glsl | 2 +- .../shaders/class2/deferred/sunLightMSF.glsl | 2 +- .../shaders/class2/deferred/sunLightSSAOF.glsl | 2 +- .../shaders/class2/deferred/sunLightSSAOMSF.glsl | 2 +- .../shaders/class2/deferred/sunLightV.glsl | 2 +- .../app_settings/shaders/class2/effects/blurF.glsl | 2 +- .../app_settings/shaders/class2/effects/blurV.glsl | 2 +- .../shaders/class2/effects/colorFilterF.glsl | 2 +- .../shaders/class2/effects/drawQuadV.glsl | 2 +- .../shaders/class2/effects/extractF.glsl | 2 +- .../shaders/class2/effects/nightVisionF.glsl | 2 +- .../shaders/class2/effects/simpleF.glsl | 2 +- .../shaders/class2/environment/terrainF.glsl | 2 +- .../shaders/class2/environment/terrainV.glsl | 2 +- .../shaders/class2/environment/terrainWaterF.glsl | 2 +- .../shaders/class2/environment/underWaterF.glsl | 2 +- .../shaders/class2/environment/waterF.glsl | 2 +- .../shaders/class2/environment/waterFogF.glsl | 2 +- .../shaders/class2/lighting/lightF.glsl | 28 ---- .../shaders/class2/lighting/lightFullbrightF.glsl | 30 +--- .../lighting/lightFullbrightNonIndexedF.glsl | 2 +- .../class2/lighting/lightFullbrightShinyF.glsl | 29 +--- .../lighting/lightFullbrightShinyNonIndexedF.glsl | 2 +- .../lighting/lightFullbrightShinyWaterF.glsl | 27 +--- .../lightFullbrightShinyWaterNonIndexedF.glsl | 2 +- .../class2/lighting/lightFullbrightWaterF.glsl | 28 +--- .../lighting/lightFullbrightWaterNonIndexedF.glsl | 2 +- .../shaders/class2/lighting/lightNonIndexedF.glsl | 2 +- .../shaders/class2/lighting/lightShinyF.glsl | 27 +--- .../class2/lighting/lightShinyNonIndexedF.glsl | 2 +- .../shaders/class2/lighting/lightShinyWaterF.glsl | 27 +--- .../lighting/lightShinyWaterNonIndexedF.glsl | 2 +- .../shaders/class2/lighting/lightSpecularV.glsl | 2 +- .../shaders/class2/lighting/lightV.glsl | 2 +- .../shaders/class2/lighting/lightWaterF.glsl | 28 ---- .../class2/lighting/lightWaterNonIndexedF.glsl | 2 +- .../class2/lighting/sumLightsSpecularV.glsl | 2 +- .../shaders/class2/lighting/sumLightsV.glsl | 2 +- .../shaders/class2/objects/fullbrightShinyV.glsl | 2 +- .../shaders/class2/objects/fullbrightV.glsl | 2 +- .../shaders/class2/objects/shinyV.glsl | 2 +- .../shaders/class2/objects/simpleV.glsl | 2 +- .../shaders/class2/windlight/atmosphericsF.glsl | 2 +- .../class2/windlight/atmosphericsHelpersV.glsl | 2 +- .../shaders/class2/windlight/atmosphericsV.glsl | 2 +- .../class2/windlight/atmosphericsVarsF.glsl | 2 +- .../class2/windlight/atmosphericsVarsV.glsl | 2 +- .../shaders/class2/windlight/cloudsF.glsl | 2 +- .../shaders/class2/windlight/cloudsV.glsl | 2 +- .../shaders/class2/windlight/gammaF.glsl | 2 +- .../shaders/class2/windlight/skyF.glsl | 2 +- .../shaders/class2/windlight/skyV.glsl | 2 +- .../shaders/class2/windlight/transportF.glsl | 2 - .../shaders/class3/avatar/avatarV.glsl | 2 +- .../shaders/class3/deferred/giDownsampleF.glsl | 2 +- .../shaders/class3/deferred/giDownsampleV.glsl | 2 +- .../app_settings/shaders/class3/deferred/giF.glsl | 2 +- .../shaders/class3/deferred/giFinalF.glsl | 2 +- .../shaders/class3/deferred/giFinalV.glsl | 2 +- .../app_settings/shaders/class3/deferred/giV.glsl | 2 +- .../shaders/class3/deferred/luminanceF.glsl | 2 +- .../shaders/class3/deferred/luminanceV.glsl | 2 +- .../shaders/class3/deferred/postDeferredF.glsl | 2 +- .../shaders/class3/deferred/postDeferredV.glsl | 2 +- .../shaders/class3/deferred/postgiF.glsl | 2 +- .../shaders/class3/deferred/postgiV.glsl | 2 +- .../shaders/class3/deferred/softenLightF.glsl | 2 +- .../shaders/class3/deferred/softenLightV.glsl | 2 +- .../shaders/class3/deferred/treeF.glsl | 2 +- .../class3/lighting/sumLightsSpecularV.glsl | 2 +- .../shaders/class3/lighting/sumLightsV.glsl | 2 +- indra/newview/lldrawpool.cpp | 5 +- indra/newview/lldrawpoolsimple.cpp | 3 +- indra/newview/llviewershadermgr.cpp | 166 +++++++-------------- indra/newview/llvovolume.cpp | 17 ++- 220 files changed, 472 insertions(+), 580 deletions(-) create mode 100644 indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl create mode 100644 indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2c6d75e3c9..bed7e4705e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7113,7 +7113,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>1</integer> + <integer>4</integer> </map> <key>OctreeAlphaDistanceFactor</key> @@ -7154,7 +7154,7 @@ <string>Vector3</string> <key>Value</key> <array> - <real>0.05</real> + <real>0.25</real> <real>0.0</real> <real>0.0</real> </array> diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl index 3f6b8b3323..b0fa0ddd3e 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void default_lighting(); diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl index 1ad87badfe..d9f29ced4f 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + attribute vec4 weight; //1 diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl index a15846f192..2796222c68 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl index 05fe100372..d86ef19a04 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/eyeballF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void default_lighting(); diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl index 4b8a7604a1..2eb814bd91 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index ef823c28b1..7613e50dca 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + attribute vec4 object_weight; diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl index 27ac59a840..2638351e96 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl index f1aa549a47..86b189b282 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index f6b7f42c22..4a0815a163 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl new file mode 100644 index 0000000000..b0d029dbf4 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl @@ -0,0 +1,67 @@ +/** + * @file alphaF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect depthMap; +uniform sampler2D diffuseMap; + + +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform vec2 screen_res; + +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; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos /= pos.w; + pos.w = 1.0; + return pos; +} + +void main() +{ + vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; + frag *= screen_res; + + vec4 pos = vec4(vary_position, 1.0); + + vec4 diff= texture2D(diffuseMap,gl_TexCoord[0].xy); + + vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a); + vec4 color = diff * col; + + color.rgb = atmosLighting(color.rgb); + + color.rgb = scaleSoftClip(color.rgb); + + color.rgb += diff.rgb * vary_pointlight_col.rgb; + + gl_FragColor = color; + //gl_FragColor = vec4(1,0,1,1); + //gl_FragColor = vec4(1,0,1,1)*shadow; + +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl index 65d9209983..ac3f7189c2 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); mat4 getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 5890c30d8f..44cb78e914 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl index 164322c3a7..870d593311 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl index 5ae41cb730..c7a4f86727 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + mat4 getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl index a012cb5030..68e4055cf2 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl index 536bacd23c..7bc78fe407 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_normal; diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl index 9748727147..3268618093 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl index 3d0884bbe8..78986ab12e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl index 3460f40657..f177fcd8f1 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl index 69c93799b5..7eac11287a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl index 98d034c2b5..8c75c8045a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl index edec83ea07..6ca51377c1 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl index c2d05c601a..862f809de5 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl index 37bfaac32c..75b4dc624a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; uniform sampler2D bumpMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl index d884f2e4a5..dc69519a85 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + varying vec3 vary_mat0; varying vec3 vary_mat1; diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl index 9b109b2db6..5b6726488b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_mat0; varying vec3 vary_mat1; diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl index 9e551fa976..ef300d5631 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ///////////////////////////////////////////////////////////////////////// // The fragment shader for the sky diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl index 267ef36d4d..3eac63076c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ////////////////////////////////////////////////////////////////////////// // The vertex shader for creating the atmospheric sky diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl index f71d9f0b49..43af480c50 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl index 1bbaeb44ff..e7b5dcce7f 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl @@ -5,43 +5,12 @@ * $/LicenseInfo$ */ -#version 120 - -varying float vary_texture_index; varying vec3 vary_normal; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; -uniform sampler2D tex7; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - case 7: return texture2D(tex7, texcoord); - } - - return vec4(0,0,0,0); -} - void main() { vec3 col = gl_Color.rgb * diffuseLookup(gl_TexCoord[0].xy).rgb; - //col = vec3(vary_texture_index*0.25, 0, 0); - gl_FragData[0] = vec4(col, 0.0); gl_FragData[1] = gl_Color.aaaa; // spec //gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl index 9a45c03237..2c4caea109 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + varying vec3 vary_normal; diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl index b8de629fc8..b56d1493c3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_normal; varying float vary_texture_index; diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 30231039b0..029f282d7c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl index 6890360c56..2eed044b7c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl index 75b555e8ae..41c149e774 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl index 8dc1410ea5..e86f2896da 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl index e3c15a2ab2..fa811f0d55 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; uniform sampler2D normalMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl index 37148b3f1a..723777bd3a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void main() { diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl index 78df54d5dc..25e93ae266 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl index 0c820bfc6c..4baf1fc65a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index e10fb105e8..3c5c780d94 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl index 66c7a5cb4a..6c43679acf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl index 2e3e84dd15..434fb6f534 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec4 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index a9f03f7615..0d25d7792d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + //class 1 -- no shadows diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl index b450ff1ca2..c80a54346e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + //class 1 -- no shadows diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 0d771109fb..5efa3200d4 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ - #version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl index 7521c3310c..feaf38115d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ - #version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl index 2377947e7f..c510d8ad77 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec4 vary_light; varying vec4 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl index d389add03b..f6b0402bb9 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl index 711c6dc96d..62ae5f917a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl index ab48d08bbb..bf829bfc56 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl index 359b26b7d4..bf35dfe11c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl index 12983baa94..876f65ee3a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl index 63b3c9f205..fa3f04bcc8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect depthMap; uniform sampler2DRect normalMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl index ae57227fe5..eebe930666 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl index 6674c4a5aa..e0c5406483 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl index db3bddc6be..9271a5115c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec4 post_pos; diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl index 91143943b6..820c82ffd7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ///////////////////////////////////////////////////////////////////////// // The fragment shader for the sky diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl index 03bca8f27e..1ea00f723a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // SKY //////////////////////////////////////////////////////////////////////// // The vertex shader for creating the atmospheric sky diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index c1147feff6..60082f40d6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl index fcba4f57e6..9dfacfb520 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl index 8f0bcca76b..745cc01992 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index 29fac46bfe..9aaffc15bf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl index 6702bd5014..4bb9bad275 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + //class 1 -- no shadows diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl index b1c25b7fd3..2cf7d194cc 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl index 1f0376ce6b..c43125dad9 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void main() diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl index 00093836a2..f20886565a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + //class 1, no shadow, no SSAO, should never be called diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl index 00093836a2..f20886565a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + //class 1, no shadow, no SSAO, should never be called diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl index d1e8359742..665d8126a0 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl index ce0ebc54f8..32d1b2149a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl index 9beb513ad8..814deb3677 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec4 vary_light; varying vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl index 0edae47918..d005f67bf6 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D detail_0; uniform sampler2D detail_1; diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl index a6163063be..3038fd2966 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_normal; diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl index c54d9a1e3e..de7e038402 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl index 29689ecbaf..a9bef4292d 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_normal; diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl index e76f598d09..2710422d32 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl index 649e392630..5397290b11 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl index f2023fa5ea..32f5f5f236 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl index c03a0c61bd..9267a8585d 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl index 0ca0608b45..76736fed53 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void main() { diff --git a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl index 65fc2e9f99..d3225546b3 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; uniform float glowStrength; diff --git a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl index 0bd44cec90..9bb41626ae 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec2 glowDelta; diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl index ac00f15b35..cdc2ca3da2 100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D detail0; uniform sampler2D detail1; diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl index 1e19ee7699..8af981915b 100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl index 34f78565a5..d94d986581 100644 --- a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // this class1 shader is just a copy of terrainF diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl index 0dfac84a6e..06854fcc0a 100644 --- a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; uniform sampler2D bumpMap; diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl index 4e9c09b1ea..0f24e3c35a 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec3 scaleSoftClip(vec3 inColor); vec3 atmosTransport(vec3 inColor); diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl index a34cf23790..630459b324 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 applyWaterFog(vec4 color) { diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl index 161c794c68..831d6a761c 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl index 6f821f893d..f6c6d945de 100644 --- a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl index d1c98bf70c..f114f766bf 100644 --- a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void main() { diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl index 9c59e8c3ad..1796730c92 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl index 1fee99c446..bfe0be9fdf 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl index fb5da21c72..6f1fe91007 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl index 1bdaccf9b8..19072cd052 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl @@ -6,7 +6,7 @@ */ -#version 120 + uniform sampler2D diffuseMap; uniform samplerCube environmentMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl index 2e94d3bbf1..0ae6dc89e2 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl @@ -6,7 +6,7 @@ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl index 714f9a2551..5d4bf2c33e 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l) { diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl index 65b45f8081..574252af12 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFuncV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l) diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl index 7f65ea76f7..29f575b7e5 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl index 8f13e6dc04..65da5a6825 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl index 56f31f6a79..d491f1102e 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l); diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl index 64d549ff52..ef38ee9699 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l); diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl index c5d084c132..286c92326b 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl index 732d246471..772a420e33 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da); vec3 atmosAmbient(vec3 light); diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl index 73e1a1ec26..da60a3ddf5 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl index afc3dc89bf..c0b72115dd 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void fullbright_lighting(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl index 3dc4294f67..391c06edc8 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void fullbright_shiny_lighting(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl index f0baeeeee5..f44a5ce32e 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); mat4 getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl index 02367b9439..31e0f0a429 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl index 5daf66fb31..8ffb252f57 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyWaterF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + void fullbright_shiny_lighting_water(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl index 02ff3cc2a9..e5dafa8c78 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); mat4 getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl index 38e07dbd80..3382384c99 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl index afaac4f69c..220f26614f 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void fullbright_lighting_water(); diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl index 2cf7a69baa..d079de5377 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void shiny_lighting(); diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl index 4146646058..cd655f3bb5 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl index 6ea83b721d..68a086dbc1 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl index e3babe2210..4649d1c47c 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinyWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void shiny_lighting_water(); diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl index d449d37c0c..b4e4dcfbbf 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleF.glsl @@ -5,8 +5,6 @@ * $/LicenseInfo$ */ -#version 120 - void default_lighting(); void main() diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl index be38a14d52..900448035c 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl index 0d8e14e2e3..b493f76fcc 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl index 68bd81e029..4ec5ee43b4 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void default_lighting_water(); diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl index f337bde329..3d05850ab3 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec3 atmosLighting(vec3 light) { diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl index 4b402a7028..f1a0af21af 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec3 atmosAmbient(vec3 light) { diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl index 20948b1e46..73bbd57315 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void setPositionEye(vec3 v); diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl index 8a2c2a7186..e0eb7b3767 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_PositionEye; diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl index a1dd4ed5fe..a251213ff5 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_PositionEye; diff --git a/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl index 7aed1fd3b5..4958cb2f72 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/gammaF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec4 gamma; diff --git a/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl index 6780dc4d3e..75929bc609 100644 --- a/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class1/windlight/transportF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec3 atmosTransport(vec3 light) { diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl index 172c2ca078..3e8b719f93 100644 --- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl +++ b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index bd4875f3ff..681e52de2a 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable @@ -15,8 +15,6 @@ uniform sampler2DRectShadow shadowMap2; uniform sampler2DRectShadow shadowMap3; uniform sampler2DRect depthMap; -vec4 diffuseLookup(vec2 texcoord); - uniform mat4 shadow_matrix[6]; uniform vec4 shadow_clip; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl new file mode 100644 index 0000000000..5350359f75 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl @@ -0,0 +1,125 @@ +/** + * @file alphaF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2DRect depthMap; +uniform sampler2D diffuseMap; + +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform vec2 screen_res; +uniform vec2 shadow_res; + +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; + +uniform float shadow_bias; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ + float depth = texture2DRect(depthMap, pos_screen.xy).a; + vec2 sc = pos_screen.xy*2.0; + sc /= screen_res; + sc -= vec2(1.0,1.0); + vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); + vec4 pos = inv_proj * ndc; + pos.xyz /= pos.w; + pos.w = 1.0; + return pos; +} + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ + stc.xyz /= stc.w; + stc.z += shadow_bias; + + float cs = shadow2DRect(shadowMap, stc.xyz).x; + float shadow = cs; + + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, -scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, scl, 0.0)).x, cs); + shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, -scl, 0.0)).x, cs); + + return shadow/5.0; +} + + +void main() +{ + vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; + frag *= screen_res; + + float shadow = 1.0; + vec4 pos = vec4(vary_position, 1.0); + + vec4 spos = pos; + + if (spos.z > -shadow_clip.w) + { + vec4 lpos; + + if (spos.z < -shadow_clip.z) + { + lpos = shadow_matrix[3]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap3, lpos, 1.5); + shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); + } + else if (spos.z < -shadow_clip.y) + { + lpos = shadow_matrix[2]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap2, lpos, 1.5); + } + else if (spos.z < -shadow_clip.x) + { + lpos = shadow_matrix[1]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap1, lpos, 1.5); + } + else + { + lpos = shadow_matrix[0]*spos; + lpos.xy *= shadow_res; + shadow = pcfShadow(shadowMap0, lpos, 1.5); + } + } + + vec4 diff = texture2D(diffuseMap,gl_TexCoord[0].xy); + + vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a); + vec4 color = diff * col; + + color.rgb = atmosLighting(color.rgb); + + color.rgb = scaleSoftClip(color.rgb); + + color.rgb += diff.rgb * vary_pointlight_col.rgb; + + //gl_FragColor = gl_Color; + gl_FragColor = color; + //gl_FragColor.r = 0.0; + //gl_FragColor = vec4(1,shadow,1,1); + +} + diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl index dfb36980b0..948a52da5b 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index c6c0b0f32a..f616ecc872 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl index 0ae09df0c6..01e40afc4f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl index 30e1702e9f..729e4b5543 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl index 38100d1523..b22bc5b288 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl index b3413c301f..393084a3db 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index de987b1233..f54186ffca 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl index d0f9101774..fee32be3e3 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index dfa1964142..66a1a8515f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl index cb09fe9895..0bae10ca7d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl index 8f0bcca76b..745cc01992 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 50b9ef276e..cd3828fbd4 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl index 8d6ffd79c5..ec9b547a47 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index b724c134b9..315139b415 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl index dd6fa958c9..63d13c996d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 68e18162f6..6dbcc479e1 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl index d28741f945..a2a76eed9f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable #extension GL_ARB_texture_multisample : enable diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl index 9beb513ad8..814deb3677 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec4 vary_light; varying vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl b/indra/newview/app_settings/shaders/class2/effects/blurF.glsl index a4ad0bfa15..dff4d4a68f 100644 --- a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/blurF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect RenderTexture; uniform float bloomStrength; diff --git a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl b/indra/newview/app_settings/shaders/class2/effects/blurV.glsl index d471a6c5e5..de469542f9 100644 --- a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/blurV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec2 texelSize; uniform vec2 blurDirection; diff --git a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl index 66880b958e..8871bb3fc7 100644 --- a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect RenderTexture; uniform float brightness; diff --git a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl b/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl index c35c500d62..9c52b8dd5d 100644 --- a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void main(void) { diff --git a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl index e77baa5bee..713f8021de 100644 --- a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect RenderTexture; uniform float extractLow; diff --git a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl index 8e0eec6f5e..fd94b2e95f 100644 --- a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect RenderTexture; uniform sampler2D NoiseTexture; diff --git a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl index 98a50e22fc..a1a9c9716c 100644 --- a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl +++ b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect RenderTexture; diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl index bbb8951f3a..9527dc469b 100644 --- a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl +++ b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D detail_0; uniform sampler2D detail_1; diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl index 84906c16bf..2658bee88d 100644 --- a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl +++ b/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl index 7590c542ef..974e227b77 100644 --- a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D detail_0; uniform sampler2D detail_1; diff --git a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl index 900f1a6cb8..702e0881ac 100644 --- a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; uniform sampler2D bumpMap; diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl index f4f6b6e90f..c4e4bc08c5 100644 --- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl +++ b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec3 scaleSoftClip(vec3 inColor); vec3 atmosTransport(vec3 inColor); diff --git a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl index 9f3328cbf0..b66b72b401 100644 --- a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl +++ b/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec4 lightnorm; uniform vec4 waterPlane; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl index d5775f4506..4c31602736 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl @@ -5,35 +5,7 @@ * $/LicenseInfo$ */ -#version 120 -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; -uniform sampler2D tex7; - -varying float vary_texture_index; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - case 7: return texture2D(tex7, texcoord); - } - - return vec4(0,0,0,0); -} vec3 atmosLighting(vec3 light); vec3 scaleSoftClip(vec3 light); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl index e64b089dca..95bd052b5d 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl @@ -5,39 +5,11 @@ * $/LicenseInfo$ */ -#version 120 + vec3 fullbrightAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; -uniform sampler2D tex7; - -varying float vary_texture_index; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - case 7: return texture2D(tex7, texcoord); - } - - return vec4(0,0,0,0); -} - void fullbright_lighting() { vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl index 811a919d52..b1e61e1a33 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec3 fullbrightAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl index f4ac789a74..26f0ea84e0 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl @@ -5,36 +5,9 @@ * $/LicenseInfo$ */ -#version 120 - -uniform samplerCube environmentMap; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; - -varying float vary_texture_index; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - } - - return vec4(0,0,0,0); -} +uniform samplerCube environmentMap; vec3 fullbrightShinyAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl index 51a7ddb89a..953298da0d 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform samplerCube environmentMap; uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl index 277170e8af..a6e10a249d 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl @@ -5,35 +5,10 @@ * $License$ */ -#version 120 -uniform samplerCube environmentMap; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; - -varying float vary_texture_index; -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - } - - return vec4(0,0,0,0); -} +uniform samplerCube environmentMap; vec3 fullbrightShinyAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl index a9a95940e6..b4bb665a2b 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl @@ -5,7 +5,7 @@ * $License$ */ -#version 120 + uniform samplerCube environmentMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl index 37e33059a6..887d4130e7 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl @@ -5,35 +5,9 @@ * $/LicenseInfo$ */ -#version 120 -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; -uniform sampler2D tex7; -varying float vary_texture_index; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - case 7: return texture2D(tex7, texcoord); - } - - return vec4(0,0,0,0); -} +vec4 diffuseLookup(vec2 texcoord); vec3 fullbrightAtmosTransport(vec3 light); vec4 applyWaterFog(vec4 color); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl index 3d46c8d874..1234682ae9 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl index 787eeb7af6..149cf791f5 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl index 9f438f513f..300fcac092 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl @@ -5,35 +5,10 @@ * $/LicenseInfo$ */ -#version 120 -uniform samplerCube environmentMap; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; - -varying float vary_texture_index; -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - } - - return vec4(0,0,0,0); -} +uniform samplerCube environmentMap; vec3 scaleSoftClip(vec3 light); vec3 atmosLighting(vec3 light); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl index 212eacd6ea..e877c0abb1 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform samplerCube environmentMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl index 5e11f6585c..07572fa915 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl @@ -5,35 +5,10 @@ * $/LicenseInfo$ */ -#version 120 -uniform samplerCube environmentMap; -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; - -varying float vary_texture_index; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - } - return vec4(0,0,0,0); -} +uniform samplerCube environmentMap; vec3 atmosLighting(vec3 light); vec4 applyWaterFog(vec4 color); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl index cb8a24da60..3904179427 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl index ad1dc4da77..3384f64d07 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // All lights, no specular highlights diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl index a0f6e019ef..10c770fcc2 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // All lights, no specular highlights diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl index 022544a917..61341a9f1f 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl @@ -5,35 +5,7 @@ * $/LicenseInfo$ */ -#version 120 -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; -uniform sampler2D tex7; - -varying float vary_texture_index; - -vec4 diffuseLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - case 7: return texture2D(tex7, texcoord); - } - - return vec4(0,0,0,0); -} vec3 atmosLighting(vec3 light); vec4 applyWaterFog(vec4 color); diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl index dc16f2d5cd..ba850b61d0 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl index fde32ed035..8df2e6f222 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da); vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol); diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl index 8fe49e3be0..3d43a1813a 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l); float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight); diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl index e2145e1956..f49e74406f 100644 --- a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl +++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl index c4a3611a29..3076fa3260 100644 --- a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl +++ b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl index 436c193c5d..49992d3535 100644 --- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl +++ b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl index 50d2beee57..5e02391767 100644 --- a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl +++ b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl index 77d15fba9a..21a0812c1b 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ////////////////////////////////////////////////////////// // The fragment shader for the terrain atmospherics diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl index 8c5b864cbe..ab4cf4806d 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // Output variables vec3 getSunlitColor(); diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl index 8d365c15ca..b61b0bb396 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // varying param funcs void setSunlitColor(vec3 v); diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl index cf9ef30632..3a6585bb33 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_PositionEye; diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl index 398f1556a0..0f6e231ca6 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec3 vary_PositionEye; diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl index 13207997b2..20f907a006 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ///////////////////////////////////////////////////////////////////////// // The fragment shader for the sky diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl index 267ef36d4d..3eac63076c 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ////////////////////////////////////////////////////////////////////////// // The vertex shader for creating the atmospheric sky diff --git a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl index a658edd21f..6570dcb608 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec4 gamma; diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl index 77ca4868a6..d14c638130 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + ///////////////////////////////////////////////////////////////////////// // The fragment shader for the sky diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl index 03bca8f27e..1ea00f723a 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + // SKY //////////////////////////////////////////////////////////////////////// // The vertex shader for creating the atmospheric sky diff --git a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl index 7f1ad4d5b4..28381482c1 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl @@ -5,8 +5,6 @@ * $/LicenseInfo$ */ -#version 120 - ////////////////////////////////////////////////////////// // The fragment shader for the terrain atmospherics ////////////////////////////////////////////////////////// diff --git a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl index a003e2a1f1..3d970d252c 100644 --- a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl +++ b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); mat4 getSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl index fc370ef367..498fee7c66 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2DRect giLightMap; diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl index ae57227fe5..eebe930666 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl index 951e3e97ae..9896f8dafe 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl index b2f8b2c633..df4c6b3e0a 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl index 19c4e07b8b..7e20d71529 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giV.glsl index 8dc1410ea5..e86f2896da 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/giV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl index 5f3bf68b24..980def6443 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl index a24eda35dc..9afeac6ddf 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl index ab99a88971..6d4c20f68c 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl index 12983baa94..876f65ee3a 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl index f037754708..fc65881680 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl index ae57227fe5..eebe930666 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + varying vec2 vary_fragcoord; uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index ce32f66000..d38d33cc21 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + #extension GL_ARB_texture_rectangle : enable diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl index 8f0bcca76b..745cc01992 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform vec2 screen_res; diff --git a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl index c54d9a1e3e..de7e038402 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + uniform sampler2D diffuseMap; diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl index 04533fdce1..92347a5b4a 100644 --- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da); vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol); diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl index 73bc18b866..24bbc0a1a1 100644 --- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl @@ -5,7 +5,7 @@ * $/LicenseInfo$ */ -#version 120 + float calcDirectionalLight(vec3 n, vec3 l); float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight); diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index b8b12018d2..d92d9e92a1 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -191,7 +191,7 @@ void LLDrawPool::renderPostDeferred(S32 pass) //virtual void LLDrawPool::endRenderPass( S32 pass ) { - for (U32 i = 1; i < 8; i++) + for (U32 i = 1; i < gGLManager.mNumTextureImageUnits; i++) { //dummy cleanup of any currently bound textures if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) { @@ -199,6 +199,8 @@ void LLDrawPool::endRenderPass( S32 pass ) gGL.getTexUnit(i)->disable(); } } + + gGL.getTexUnit(0)->activate(); } //virtual @@ -491,6 +493,7 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL ba if (params.mTextureMatrix) { tex_setup = true; + gGL.getTexUnit(0)->activate(); glMatrixMode(GL_TEXTURE); glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix); gPipeline.mTextureMatrixOps++; diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index 9b73b2f9b6..6963fea26b 100644 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp @@ -171,8 +171,9 @@ void LLDrawPoolSimple::beginRenderPass(S32 pass) void LLDrawPoolSimple::endRenderPass(S32 pass) { LLFastTimer t(FTM_RENDER_SIMPLE); + stop_glerror(); LLRenderPass::endRenderPass(pass); - + stop_glerror(); if (mVertexShaderLevel > 0) { simple_shader->unbind(); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index e60b3f4543..fb92fabaeb 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -720,32 +720,35 @@ BOOL LLViewerShaderMgr::loadBasicShaders() shaders.clear(); shaders.reserve(13); - shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) ); - shaders.push_back( make_pair( "windlight/gammaF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT]) ); - shaders.push_back( make_pair( "windlight/atmosphericsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) ); - shaders.push_back( make_pair( "windlight/transportF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) ); - shaders.push_back( make_pair( "environment/waterFogF.glsl", mVertexShaderLevel[SHADER_WATER] ) ); - shaders.push_back( make_pair( "lighting/lightF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightShinyNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightShinyNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightShinyWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); - shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + S32 ch = gGLManager.mNumTextureImageUnits-1; + + std::vector<S32> index_channels; + index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/gammaF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT]) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/transportF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "environment/waterFogF.glsl", mVertexShaderLevel[SHADER_WATER] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightFullbrightNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightFullbrightWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightShinyNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightFullbrightShinyNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightShinyWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(-1); shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterNonIndexedF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightFullbrightF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightFullbrightWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightFullbrightShinyF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); + index_channels.push_back(ch); shaders.push_back( make_pair( "lighting/lightFullbrightShinyWaterF.glsl", mVertexShaderLevel[SHADER_LIGHTING] ) ); for (U32 i = 0; i < shaders.size(); i++) { // Note usage of GL_FRAGMENT_SHADER_ARB - if (loadShaderFile(shaders[i].first, shaders[i].second, GL_FRAGMENT_SHADER_ARB) == 0) + if (loadShaderFile(shaders[i].first, shaders[i].second, GL_FRAGMENT_SHADER_ARB, index_channels[i]) == 0) { return FALSE; } @@ -976,46 +979,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects() } -void setup_indexed_texture(LLGLSLShader& shader) -{ - shader.bind(); - shader.uniform1i("tex0", 0); - shader.uniform1i("tex1", 1); - shader.uniform1i("tex2", 2); - shader.uniform1i("tex3", 3); - shader.uniform1i("tex4", 4); - shader.uniform1i("tex5", 5); - shader.uniform1i("tex6", 6); - shader.uniform1i("tex7", 7); - - S32 cur_tex = 8; //adjust any texture channels that might have been overwritten - for (U32 i = 0; i < shader.mTexture.size(); i++) - { - if (shader.mTexture[i] > -1 && shader.mTexture[i] < 7) - { - shader.uniform1i(i, cur_tex); - shader.mTexture[i] = cur_tex++; - } - } - shader.unbind(); -} - -void setup_indexed_texture_with_cubemap(LLGLSLShader& shader) -{ - shader.bind(); - shader.uniform1i("tex0", 0); - shader.uniform1i("tex1", 1); - shader.uniform1i("tex2", 2); - shader.uniform1i("tex3", 3); - shader.uniform1i("tex4", 4); - shader.uniform1i("tex5", 5); - shader.uniform1i("tex6", 6); - shader.uniform1i("environmentMap", 7); - shader.mTexture[LLViewerShaderMgr::ENVIRONMENT_MAP] = 7; - shader.mTexture[LLViewerShaderMgr::DIFFUSE_MAP] = 0; - shader.unbind(); -} - BOOL LLViewerShaderMgr::loadShadersDeferred() { if (mVertexShaderLevel[SHADER_DEFERRED] == 0) @@ -1070,13 +1033,9 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredDiffuseProgram.mShaderFiles.clear(); gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB)); gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits; gDeferredDiffuseProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredDiffuseProgram.createShader(NULL, NULL); - - if (success) - { //force tex0-7 to appropriate texture channels - setup_indexed_texture(gDeferredDiffuseProgram); - } } if (success) @@ -1121,9 +1080,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredSkinnedAlphaProgram.mFeatures.hasGamma = true; gDeferredSkinnedAlphaProgram.mFeatures.hasAtmospherics = true; gDeferredSkinnedAlphaProgram.mFeatures.hasLighting = true; + gDeferredSkinnedAlphaProgram.mFeatures.disableTextureIndex = true; gDeferredSkinnedAlphaProgram.mShaderFiles.clear(); gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredSkinnedAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredSkinnedAlphaProgram.createShader(NULL, NULL); } @@ -1305,15 +1265,21 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAlphaProgram.mFeatures.hasGamma = true; gDeferredAlphaProgram.mFeatures.hasAtmospherics = true; gDeferredAlphaProgram.mFeatures.hasLighting = true; + gDeferredAlphaProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels + if (mVertexShaderLevel[SHADER_DEFERRED] < 1) + { + gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits; + } + else + { //shave off some texture units for shadow maps + gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits - 6; + } + gDeferredAlphaProgram.mShaderFiles.clear(); 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.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredAlphaProgram.createShader(NULL, NULL); - if (success) - { - setup_indexed_texture(gDeferredAlphaProgram); - } } if (success) @@ -1323,6 +1289,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAvatarEyesProgram.mFeatures.hasGamma = true; gDeferredAvatarEyesProgram.mFeatures.hasTransport = true; gDeferredAvatarEyesProgram.mFeatures.isFullbright = true; + gDeferredAvatarEyesProgram.mFeatures.disableTextureIndex = true; gDeferredAvatarEyesProgram.mShaderFiles.clear(); gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/avatarEyesV.glsl", GL_VERTEX_SHADER_ARB)); gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/diffuseF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -1337,16 +1304,12 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredFullbrightProgram.mFeatures.hasGamma = true; gDeferredFullbrightProgram.mFeatures.hasTransport = true; gDeferredFullbrightProgram.mFeatures.isFullbright = true; + gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = 0; gDeferredFullbrightProgram.mShaderFiles.clear(); gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredFullbrightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredFullbrightProgram.createShader(NULL, NULL); - - if (success) - { - setup_indexed_texture(gDeferredFullbrightProgram); - } } if (success) @@ -1453,9 +1416,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAvatarAlphaProgram.mFeatures.hasGamma = true; gDeferredAvatarAlphaProgram.mFeatures.hasAtmospherics = true; gDeferredAvatarAlphaProgram.mFeatures.hasLighting = true; + gDeferredAvatarAlphaProgram.mFeatures.disableTextureIndex = true; gDeferredAvatarAlphaProgram.mShaderFiles.clear(); gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaV.glsl", GL_VERTEX_SHADER_ARB)); - gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB)); + gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); gDeferredAvatarAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; success = gDeferredAvatarAlphaProgram.createShader(&mAvatarAttribs, &mAvatarUniforms); } @@ -1777,16 +1741,12 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectSimpleProgram.mFeatures.hasGamma = true; gObjectSimpleProgram.mFeatures.hasAtmospherics = true; gObjectSimpleProgram.mFeatures.hasLighting = true; + gObjectSimpleProgram.mFeatures.mIndexedTextureChannels = 0; gObjectSimpleProgram.mShaderFiles.clear(); gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); gObjectSimpleProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectSimpleProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectSimpleProgram.createShader(NULL, NULL); - - if (success && batch_textures) - { - setup_indexed_texture(gObjectSimpleProgram); - } } if (success) @@ -1797,17 +1757,13 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectSimpleWaterProgram.mFeatures.hasWaterFog = true; gObjectSimpleWaterProgram.mFeatures.hasAtmospherics = true; gObjectSimpleWaterProgram.mFeatures.hasLighting = true; + gObjectSimpleWaterProgram.mFeatures.mIndexedTextureChannels = 0; gObjectSimpleWaterProgram.mShaderFiles.clear(); gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB)); gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectSimpleWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectSimpleWaterProgram.createShader(NULL, NULL); - - if (success && batch_textures) - { - setup_indexed_texture(gObjectSimpleWaterProgram); - } } if (success) @@ -1817,15 +1773,12 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightProgram.mFeatures.hasGamma = true; gObjectFullbrightProgram.mFeatures.hasTransport = true; gObjectFullbrightProgram.mFeatures.isFullbright = true; + gObjectFullbrightProgram.mFeatures.mIndexedTextureChannels = 0; gObjectFullbrightProgram.mShaderFiles.clear(); gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); gObjectFullbrightProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectFullbrightProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectFullbrightProgram.createShader(NULL, NULL); - if (success && batch_textures) - { - setup_indexed_texture(gObjectFullbrightProgram); - } } if (success) @@ -1835,16 +1788,13 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightWaterProgram.mFeatures.isFullbright = true; gObjectFullbrightWaterProgram.mFeatures.hasWaterFog = true; gObjectFullbrightWaterProgram.mFeatures.hasTransport = true; + gObjectFullbrightWaterProgram.mFeatures.mIndexedTextureChannels = 0; gObjectFullbrightWaterProgram.mShaderFiles.clear(); gObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); gObjectFullbrightWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectFullbrightWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectFullbrightWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectFullbrightWaterProgram.createShader(NULL, NULL); - if (success && batch_textures) - { - setup_indexed_texture(gObjectFullbrightWaterProgram); - } } if (success) @@ -1855,15 +1805,12 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectShinyProgram.mFeatures.hasGamma = true; gObjectShinyProgram.mFeatures.hasAtmospherics = true; gObjectShinyProgram.mFeatures.isShiny = true; + gObjectShinyProgram.mFeatures.mIndexedTextureChannels = 0; gObjectShinyProgram.mShaderFiles.clear(); gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER_ARB)); gObjectShinyProgram.mShaderFiles.push_back(make_pair("objects/shinyF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectShinyProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectShinyProgram.createShader(NULL, &mShinyUniforms); - if (success && batch_textures) - { - setup_indexed_texture_with_cubemap(gObjectShinyProgram); - } } if (success) @@ -1874,16 +1821,13 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectShinyWaterProgram.mFeatures.isShiny = true; gObjectShinyWaterProgram.mFeatures.hasWaterFog = true; gObjectShinyWaterProgram.mFeatures.hasAtmospherics = true; + gObjectShinyWaterProgram.mFeatures.mIndexedTextureChannels = 0; gObjectShinyWaterProgram.mShaderFiles.clear(); gObjectShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/shinyV.glsl", GL_VERTEX_SHADER_ARB)); gObjectShinyWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectShinyWaterProgram.createShader(NULL, &mShinyUniforms); - if (success && batch_textures) - { - setup_indexed_texture_with_cubemap(gObjectShinyWaterProgram); - } } if (success) @@ -1894,15 +1838,12 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightShinyProgram.mFeatures.isShiny = true; gObjectFullbrightShinyProgram.mFeatures.hasGamma = true; gObjectFullbrightShinyProgram.mFeatures.hasTransport = true; + gObjectFullbrightShinyProgram.mFeatures.mIndexedTextureChannels = 0; gObjectFullbrightShinyProgram.mShaderFiles.clear(); gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); gObjectFullbrightShinyProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectFullbrightShinyProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectFullbrightShinyProgram.createShader(NULL, &mShinyUniforms); - if (success && batch_textures) - { - setup_indexed_texture_with_cubemap(gObjectFullbrightShinyProgram); - } } if (success) @@ -1914,16 +1855,13 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightShinyWaterProgram.mFeatures.hasGamma = true; gObjectFullbrightShinyWaterProgram.mFeatures.hasTransport = true; gObjectFullbrightShinyWaterProgram.mFeatures.hasWaterFog = true; + gObjectFullbrightShinyWaterProgram.mFeatures.mIndexedTextureChannels = 0; gObjectFullbrightShinyWaterProgram.mShaderFiles.clear(); gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyV.glsl", GL_VERTEX_SHADER_ARB)); gObjectFullbrightShinyWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightShinyWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectFullbrightShinyWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; gObjectFullbrightShinyWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER; success = gObjectFullbrightShinyWaterProgram.createShader(NULL, &mShinyUniforms); - if (success && batch_textures) - { - setup_indexed_texture_with_cubemap(gObjectFullbrightShinyWaterProgram); - } } if (mVertexShaderLevel[SHADER_AVATAR] > 0) @@ -2103,6 +2041,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar() gAvatarProgram.mFeatures.hasGamma = true; gAvatarProgram.mFeatures.hasAtmospherics = true; gAvatarProgram.mFeatures.hasLighting = true; + gAvatarProgram.mFeatures.disableTextureIndex = true; gAvatarProgram.mShaderFiles.clear(); gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER_ARB)); gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -2118,6 +2057,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar() gAvatarWaterProgram.mFeatures.hasWaterFog = true; gAvatarWaterProgram.mFeatures.hasAtmospherics = true; gAvatarWaterProgram.mFeatures.hasLighting = true; + gAvatarWaterProgram.mFeatures.disableTextureIndex = true; gAvatarWaterProgram.mShaderFiles.clear(); gAvatarWaterProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER_ARB)); gAvatarWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -2138,6 +2078,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar() { gAvatarPickProgram.mName = "Avatar Pick Shader"; gAvatarPickProgram.mFeatures.hasSkinning = true; + gAvatarPickProgram.mFeatures.disableTextureIndex = true; gAvatarPickProgram.mShaderFiles.clear(); gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarV.glsl", GL_VERTEX_SHADER_ARB)); gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarF.glsl", GL_FRAGMENT_SHADER_ARB)); @@ -2154,6 +2095,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar() gAvatarEyeballProgram.mFeatures.hasGamma = true; gAvatarEyeballProgram.mFeatures.hasAtmospherics = true; gAvatarEyeballProgram.mFeatures.hasLighting = true; + gAvatarEyeballProgram.mFeatures.disableTextureIndex = true; gAvatarEyeballProgram.mShaderFiles.clear(); gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballV.glsl", GL_VERTEX_SHADER_ARB)); gAvatarEyeballProgram.mShaderFiles.push_back(make_pair("avatar/eyeballF.glsl", GL_FRAGMENT_SHADER_ARB)); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index ed6edbb65b..125283d474 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4455,6 +4455,14 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: buffer_index = -1; } + S32 texture_index_channels = gGLManager.mNumTextureImageUnits-1; //always reserve one for shiny for now just for simplicity + + if (LLPipeline::sRenderDeferred && distance_sort) + { + texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels; + } + + while (face_iter != faces.end()) { //pull off next face @@ -4521,11 +4529,6 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: else { cur_tex++; - - if (cur_tex >= 7 && facep->getTextureEntry()->getShiny()) - { //entry 7 is reserved for the environment map for shiny faces - break; - } } if (!can_batch_texture(facep)) @@ -4534,8 +4537,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: break; } - if (cur_tex >= 8) - { //cut batches on every 8 textures + if (cur_tex >= texture_index_channels) + { //cut batches when index channels are depleted break; } -- cgit v1.2.3 From e881ee54d0f6cbddcc08bfd30d09232ed891df08 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 31 May 2011 15:34:05 -0500 Subject: Unused variable. --- indra/newview/llviewershadermgr.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index fb92fabaeb..a1cb6d4ea6 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -1570,8 +1570,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() BOOL LLViewerShaderMgr::loadShadersObject() { BOOL success = TRUE; - bool batch_textures = mVertexShaderLevel[SHADER_OBJECT] > 1; - + if (mVertexShaderLevel[SHADER_OBJECT] == 0) { gObjectShinyProgram.unload(); -- cgit v1.2.3 From 244f1a3d01bb52bb679fd826faa15d90d7df3666 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Wed, 1 Jun 2011 12:09:40 -0600 Subject: fix for STORM-1298: Crash on startup of Second Life 2.7.1(231307) --- indra/newview/llappviewer.cpp | 21 ++++++++++++++------- indra/newview/lldrawpoolbump.cpp | 8 ++++++++ indra/newview/llviewertexturelist.cpp | 11 ++++------- indra/newview/llviewertexturelist.h | 1 - indra/newview/llviewerwindow.cpp | 1 + 5 files changed, 27 insertions(+), 15 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a0be252ab2..cbdaff5b46 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -695,6 +695,8 @@ bool LLAppViewer::init() if (!initConfiguration()) return false; + LL_INFOS("InitInfo") << "Configuration initialized." << LL_ENDL ; + // write Google Breakpad minidump files to our log directory std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ""); logdir += gDirUtilp->getDirDelimiter(); @@ -721,6 +723,8 @@ bool LLAppViewer::init() // *NOTE:Mani - LLCurl::initClass is not thread safe. // Called before threads are created. LLCurl::initClass(); + LL_INFOS("InitInfo") << "LLCurl initialized." << LL_ENDL ; + LLMachineID::init(); { @@ -739,7 +743,7 @@ bool LLAppViewer::init() } initThreads(); - LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ; ; + LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ; writeSystemInfo(); @@ -767,10 +771,6 @@ bool LLAppViewer::init() LL_INFOS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL; LL_INFOS("InitInfo") << "libcurl version is: " << LLCurl::getVersionString() << LL_ENDL; - //Note: --bao - //allow to start texture fetching, must be called after initThreads(); - gTextureList.start() ; - // Get the single value from the crash settings file, if it exists std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); gCrashSettings.loadFromFile(crash_settings_filename); @@ -879,6 +879,7 @@ bool LLAppViewer::init() // Early out from user choice. return false; } + LL_INFOS("InitInfo") << "Hardware test initialization done." << LL_ENDL ; // Prepare for out-of-memory situations, during which we will crash on // purpose and save a dump. @@ -1047,6 +1048,8 @@ bool LLAppViewer::init() } LLViewerMedia::initClass(); + LL_INFOS("InitInfo") << "Viewer media initialized." << LL_ENDL ; + LLTextUtil::TextHelpers::iconCallbackCreationFunction = create_text_segment_icon_from_url_match; //EXT-7013 - On windows for some locale (Japanese) standard @@ -2823,6 +2826,8 @@ bool LLAppViewer::initWindow() gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"), gSavedSettings.getBOOL("WindowFullScreen"), ignorePixelDepth); + LL_INFOS("AppInit") << "gViewerwindow created." << LL_ENDL; + // Need to load feature table before cheking to start watchdog. const S32 NEVER_SUBMIT_REPORT = 2; bool use_watchdog = false; @@ -2842,6 +2847,7 @@ bool LLAppViewer::initWindow() { LLWatchdog::getInstance()->init(watchdog_killer_callback); } + LL_INFOS("AppInit") << "watchdog setting is done." << LL_ENDL; LLNotificationsUI::LLNotificationManager::getInstance(); @@ -2864,7 +2870,8 @@ bool LLAppViewer::initWindow() gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE ); gPipeline.init(); - + LL_INFOS("AppInit") << "gPipeline Initialized" << LL_ENDL; + stop_glerror(); gViewerWindow->initGLDefaults(); @@ -2903,7 +2910,7 @@ bool LLAppViewer::initWindow() // show viewer window //gViewerWindow->mWindow->show(); - + LL_INFOS("AppInit") << "Window initialization done." << LL_ENDL; return true; } diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 5f89d11391..2f76baaaf7 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -94,6 +94,13 @@ void LLStandardBumpmap::restoreGL() // static void LLStandardBumpmap::addstandard() { + if(!gTextureList.isInitialized()) + { + //Note: loading pre-configuration sometimes triggers this call. + //But it is safe to return here because bump images will be reloaded during initialization later. + return ; + } + // can't assert; we destroyGL and restoreGL a lot during *first* startup, which populates this list already, THEN we explicitly init the list as part of *normal* startup. Sigh. So clear the list every time before we (re-)add the standard bumpmaps. //llassert( LLStandardBumpmap::sStandardBumpmapCount == 0 ); clear(); @@ -891,6 +898,7 @@ void LLBumpImageList::restoreGL() { if(!gTextureList.isInitialized()) { + //safe to return here because bump images will be reloaded during initialization later. return ; } diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index a50361add2..3eeed55cd8 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -88,17 +88,14 @@ LLViewerTextureList::LLViewerTextureList() { } -void LLViewerTextureList::start() -{ +void LLViewerTextureList::init() +{ sRenderThreadID = LLThread::currentID() ; - mInitialized = TRUE ; sNumImages = 0; -} - -void LLViewerTextureList::init() -{ mUpdateStats = TRUE; + mMaxResidentTexMemInMegaBytes = 0; + mMaxTotalTextureMemInMegaBytes = 0 ; // Update how much texture RAM we're allowed to use. updateMaxResidentTexMem(0); // 0 = use current diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index 772f533bbb..d02b6be6b5 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -78,7 +78,6 @@ public: LLViewerTextureList(); ~LLViewerTextureList(); - void start(); void init(); void shutdown(); void dump(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 6fe79c2e85..34d15a597e 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1638,6 +1638,7 @@ LLViewerWindow::LLViewerWindow( gSavedSettings.setBOOL("RenderVBOEnable", FALSE); } LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable"), gSavedSettings.getBOOL("RenderVBOMappingDisable")); + LL_INFOS("RenderInit") << "LLVertexBuffer initialization done." << LL_ENDL ; if (LLFeatureManager::getInstance()->isSafe() || (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion()) -- cgit v1.2.3 From 6992dbc1e32e1d8b803291aa1b87862fd6640c2a Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 1 Jun 2011 23:46:04 -0500 Subject: SH-1682 Use GL_ARB_map_buffer_range to mitigate impact of mapping larger vertex buffer objects. Limit number of textures per batch to 6 (prevents frame stalls on NVIDIA). --- indra/newview/app_settings/settings.xml | 17 ++++- indra/newview/lldrawpool.cpp | 2 +- indra/newview/lldrawpoolsimple.cpp | 27 +------- indra/newview/llface.cpp | 112 ++++++++++++++++++-------------- indra/newview/llspatialpartition.h | 4 +- indra/newview/llviewercontrol.cpp | 1 + indra/newview/llvovolume.cpp | 43 +++++++++--- 7 files changed, 118 insertions(+), 88 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index bed7e4705e..b7ba9e3607 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7126,7 +7126,7 @@ <string>Vector3</string> <key>Value</key> <array> - <real>0.05</real> + <real>0.1</real> <real>0.0</real> <real>0.0</real> </array> @@ -7154,7 +7154,7 @@ <string>Vector3</string> <key>Value</key> <array> - <real>0.25</real> + <real>0.01</real> <real>0.0</real> <real>0.0</real> </array> @@ -7513,6 +7513,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderMaxTextureIndex</key> + <map> + <key>Comment</key> + <string>Maximum texture index to use for indexed texture rendering.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <integer>6</integer> + </map> <key>RenderDebugTextureBind</key> <map> <key>Comment</key> @@ -9011,7 +9022,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>RenderUseStreamVBO</key> <map> diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index d92d9e92a1..f5483d969d 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -191,7 +191,7 @@ void LLDrawPool::renderPostDeferred(S32 pass) //virtual void LLDrawPool::endRenderPass( S32 pass ) { - for (U32 i = 1; i < gGLManager.mNumTextureImageUnits; i++) + for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++) { //dummy cleanup of any currently bound textures if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) { diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index 6963fea26b..5dbb27cabb 100644 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp @@ -71,14 +71,7 @@ void LLDrawPoolGlow::renderPostDeferred(S32 pass) void LLDrawPoolGlow::endPostDeferredPass(S32 pass) { gDeferredFullbrightProgram.unbind(); - for (U32 i = 0; i < 8; i++) - { - if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) - { - gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); - gGL.getTexUnit(i)->disable(); - } - } + LLRenderPass::endRenderPass(pass); } void LLDrawPoolGlow::render(S32 pass) @@ -225,15 +218,6 @@ void LLDrawPoolSimple::endDeferredPass(S32 pass) LLRenderPass::endRenderPass(pass); gDeferredDiffuseProgram.unbind(); - - for (U32 i = 0; i < 8; i++) - { - if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) - { - gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); - gGL.getTexUnit(i)->disable(); - } - } } void LLDrawPoolSimple::renderDeferred(S32 pass) @@ -368,14 +352,7 @@ void LLDrawPoolFullbright::renderPostDeferred(S32 pass) void LLDrawPoolFullbright::endPostDeferredPass(S32 pass) { gDeferredFullbrightProgram.unbind(); - for (U32 i = 0; i < 8; i++) - { - if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) - { - gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); - gGL.getTexUnit(i)->disable(); - } - } + LLRenderPass::endRenderPass(pass); } void LLDrawPoolFullbright::beginRenderPass(S32 pass) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index e30522d380..540ed054e9 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -429,11 +429,11 @@ U16 LLFace::getGeometryAvatar( if (mVertexBuffer.notNull()) { - mVertexBuffer->getVertexStrider (vertices, mGeomIndex); - mVertexBuffer->getNormalStrider (normals, mGeomIndex); - mVertexBuffer->getTexCoord0Strider (tex_coords, mGeomIndex); - mVertexBuffer->getWeightStrider(vertex_weights, mGeomIndex); - mVertexBuffer->getClothWeightStrider(clothing_weights, mGeomIndex); + mVertexBuffer->getVertexStrider (vertices, mGeomIndex, mGeomCount); + mVertexBuffer->getNormalStrider (normals, mGeomIndex, mGeomCount); + mVertexBuffer->getTexCoord0Strider (tex_coords, mGeomIndex, mGeomCount); + mVertexBuffer->getWeightStrider(vertex_weights, mGeomIndex, mGeomCount); + mVertexBuffer->getClothWeightStrider(clothing_weights, mGeomIndex, mGeomCount); } return mGeomIndex; @@ -446,17 +446,17 @@ U16 LLFace::getGeometry(LLStrider<LLVector3> &vertices, LLStrider<LLVector3> &no if (mVertexBuffer.notNull()) { - mVertexBuffer->getVertexStrider(vertices, mGeomIndex); + mVertexBuffer->getVertexStrider(vertices, mGeomIndex, mGeomCount); if (mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL)) { - mVertexBuffer->getNormalStrider(normals, mGeomIndex); + mVertexBuffer->getNormalStrider(normals, mGeomIndex, mGeomCount); } if (mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_TEXCOORD0)) { - mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex); + mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount); } - mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex); + mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount); } return mGeomIndex; @@ -1092,27 +1092,6 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, const LLTextureEntry *tep = mVObjp->getTE(f); const U8 bump_code = tep ? tep->getBumpmap() : 0; - if (rebuild_pos) - { - mVertexBuffer->getVertexStrider(vert, mGeomIndex); - vertices = (LLVector4a*) vert.get(); - } - if (rebuild_normal) - { - mVertexBuffer->getNormalStrider(norm, mGeomIndex); - normals = (LLVector4a*) norm.get(); - } - if (rebuild_binormal) - { - mVertexBuffer->getBinormalStrider(binorm, mGeomIndex); - binormals = (LLVector4a*) binorm.get(); - } - if (rebuild_weights) - { - mVertexBuffer->getWeight4Strider(wght, mGeomIndex); - weights = (LLVector4a*) wght.get(); - } - F32 tcoord_xoffset = 0.f ; F32 tcoord_yoffset = 0.f ; F32 tcoord_xscale = 1.f ; @@ -1121,12 +1100,6 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, if (rebuild_tcoord) { - mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex); - if (bump_code && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_TEXCOORD1)) - { - mVertexBuffer->getTexCoord1Strider(tex_coords2, mGeomIndex); - } - in_atlas = isAtlasInUse() ; if(in_atlas) { @@ -1139,11 +1112,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, tcoord_yscale = tmp->mV[1] ; } } - if (rebuild_color) - { - mVertexBuffer->getColorStrider(colors, mGeomIndex); - } - + BOOL is_static = mDrawablep->isStatic(); BOOL is_global = is_static; @@ -1182,7 +1151,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, // INDICES if (full_rebuild) { - mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex); + mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount, true); + __m128i* dst = (__m128i*) indicesp.get(); __m128i* src = (__m128i*) vf.mIndices; __m128i offset = _mm_set1_epi16(index_offset); @@ -1199,6 +1169,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, { indicesp[i] = vf.mIndices[i]+index_offset; } + + mVertexBuffer->setBuffer(0); } LLMatrix4a mat_normal; @@ -1344,6 +1316,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, if (!in_atlas && !do_bump) { //not in atlas or not bump mapped, might be able to do a cheap update + mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount); + if (texgen != LLTextureEntry::TEX_GEN_PLANAR) { if (!do_tex_mat) @@ -1416,9 +1390,15 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, } } } + + mVertexBuffer->setBuffer(0); } else { //either bump mapped or in atlas, just do the whole expensive loop + mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount, true); + + std::vector<LLVector2> bump_tc; + for (S32 i = 0; i < num_vertices; i++) { LLVector2 tc(vf.mTexCoords[i]); @@ -1549,8 +1529,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, *tex_coords++ = tc; - - if (bump_code && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_TEXCOORD1)) + if (do_bump) + { + bump_tc.push_back(tc); + } + } + + mVertexBuffer->setBuffer(0); + + + if (do_bump) + { + mVertexBuffer->getTexCoord1Strider(tex_coords2, mGeomIndex, mGeomCount, true); + + for (S32 i = 0; i < num_vertices; i++) { LLVector4a tangent; tangent.setCross3(vf.mBinormals[i], vf.mNormals[i]); @@ -1572,16 +1564,22 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, } binormal.normalize3fast(); + LLVector2 tc = bump_tc[i]; tc += LLVector2( bump_s_primary_light_ray.dot3(tangent).getF32(), bump_t_primary_light_ray.dot3(binormal).getF32() ); *tex_coords2++ = tc; - } + } + + mVertexBuffer->setBuffer(0); } } } if (rebuild_pos) { + mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, true); + vertices = (LLVector4a*) vert.get(); + LLMatrix4a mat_vert; mat_vert.loadu(mat_vert_in); @@ -1607,11 +1605,15 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, index_dst += 4; } while (index_dst < index_end); - + + mVertexBuffer->setBuffer(0); } if (rebuild_normal) { + mVertexBuffer->getNormalStrider(norm, mGeomIndex, mGeomCount, true); + normals = (LLVector4a*) norm.get(); + for (S32 i = 0; i < num_vertices; i++) { LLVector4a normal; @@ -1619,10 +1621,15 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, normal.normalize3fast(); normals[i] = normal; } + + mVertexBuffer->setBuffer(0); } if (rebuild_binormal) { + mVertexBuffer->getBinormalStrider(binorm, mGeomIndex, mGeomCount, true); + binormals = (LLVector4a*) binorm.get(); + for (S32 i = 0; i < num_vertices; i++) { LLVector4a binormal; @@ -1630,15 +1637,22 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, binormal.normalize3fast(); binormals[i] = binormal; } + + mVertexBuffer->setBuffer(0); } if (rebuild_weights && vf.mWeights) { + mVertexBuffer->getWeight4Strider(wght, mGeomIndex, mGeomCount, true); + weights = (LLVector4a*) wght.get(); LLVector4a::memcpyNonAliased16((F32*) weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32)); + mVertexBuffer->setBuffer(0); } if (rebuild_color) { + mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount, true); + LLVector4a src; U32 vec[4]; @@ -1657,6 +1671,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, { dst[i] = src; } + + mVertexBuffer->setBuffer(0); } if (rebuild_tcoord) @@ -2073,13 +2089,13 @@ S32 LLFace::getColors(LLStrider<LLColor4U> &colors) } // llassert(mGeomIndex >= 0); - mVertexBuffer->getColorStrider(colors, mGeomIndex); + mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount); return mGeomIndex; } S32 LLFace::getIndices(LLStrider<U16> &indicesp) { - mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex); + mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount); llassert(indicesp[0] != indicesp[1]); return mIndicesIndex; } diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index ae5d4fa463..db8a0c2992 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -209,7 +209,7 @@ public: typedef std::vector<LLPointer<LLDrawInfo> > drawmap_elem_t; typedef std::map<U32, drawmap_elem_t > draw_map_t; typedef std::vector<LLPointer<LLVertexBuffer> > buffer_list_t; - typedef std::map<LLPointer<LLViewerTexture>, buffer_list_t> buffer_texture_map_t; + typedef std::map<LLFace*, buffer_list_t> buffer_texture_map_t; typedef std::map<U32, buffer_texture_map_t> buffer_map_t; typedef LLOctreeListener<LLDrawable> BaseType; @@ -401,7 +401,7 @@ protected: public: bridge_list_t mBridgeList; - buffer_map_t mBufferMap; //used by volume buffers to store unique buffers per texture + buffer_map_t mBufferMap; //used by volume buffers to attempt to reuse vertex buffers F32 mBuilt; OctreeNode* mOctreeNode; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 61200db2b9..87ca80260f 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -591,6 +591,7 @@ void settings_setup_listeners() gSavedSettings.getControl("OctreeMaxNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2)); gSavedSettings.getControl("OctreeAlphaDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); gSavedSettings.getControl("OctreeAttachmentSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); + gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderUseTriStrips")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderAnimateTrees")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 125283d474..58e38ea9b1 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4426,6 +4426,33 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) llassert(!group || !group->isState(LLSpatialGroup::NEW_DRAWINFO)); } +struct CompareBatchBreakerModified +{ + bool operator()(const LLFace* const& lhs, const LLFace* const& rhs) + { + const LLTextureEntry* lte = lhs->getTextureEntry(); + const LLTextureEntry* rte = rhs->getTextureEntry(); + + if (lte->getBumpmap() != rte->getBumpmap()) + { + return lte->getBumpmap() < rte->getBumpmap(); + } + else if (lte->getFullbright() != rte->getFullbright()) + { + return lte->getFullbright() < rte->getFullbright(); + } + else if (lte->getGlow() != rte->getGlow()) + { + return lte->getGlow() < rte->getGlow(); + } + else + { + return lhs->getTexture() < rhs->getTexture(); + } + + } +}; + void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort, BOOL batch_textures) { //calculate maximum number of vertices to store in a single buffer @@ -4435,7 +4462,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: if (!distance_sort) { //sort faces by things that break batches - std::sort(faces.begin(), faces.end(), LLFace::CompareBatchBreaker()); + std::sort(faces.begin(), faces.end(), CompareBatchBreakerModified()); } else { @@ -4462,6 +4489,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels; } + texture_index_channels = llmin(texture_index_channels, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")); + while (face_iter != faces.end()) { @@ -4587,7 +4616,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: //create/delete/resize vertex buffer if needed LLVertexBuffer* buffer = NULL; - LLSpatialGroup::buffer_texture_map_t::iterator found_iter = group->mBufferMap[mask].find(tex); + LLSpatialGroup::buffer_texture_map_t::iterator found_iter = group->mBufferMap[mask].find(*face_iter); if (found_iter != group->mBufferMap[mask].end()) { @@ -4618,7 +4647,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: } } - buffer_map[mask][tex].push_back(buffer); + buffer_map[mask][*face_iter].push_back(buffer); //add face geometry @@ -4649,12 +4678,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: U32 te_idx = facep->getTEOffset(); - if (facep->getGeometryVolume(*volume, te_idx, - vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), index_offset)) - { - buffer->markDirty(facep->getGeomIndex(), facep->getGeomCount(), - facep->getIndicesStart(), facep->getIndicesCount()); - } + facep->getGeometryVolume(*volume, te_idx, + vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), index_offset); } } -- cgit v1.2.3 From d78ecc6c283cfee568a08d739bc6f5eec3b9828f Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 1 Jun 2011 23:54:49 -0500 Subject: SH-812 Fix for rigged meshes not showing up as rigged until LoD switch. --- indra/newview/lldrawpoolavatar.cpp | 2 +- indra/newview/llmeshrepository.cpp | 20 +++++++++++++++++--- indra/newview/llmeshrepository.h | 5 +++-- indra/newview/llvoavatar.cpp | 2 +- indra/newview/llvovolume.cpp | 8 +++----- 5 files changed, 25 insertions(+), 12 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 7c017f5694..870aec4eff 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1456,7 +1456,7 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) continue; } - const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(mesh_id); + const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(mesh_id, vobj); if (!skin) { continue; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index bef2a09e6c..12e0b26fed 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2630,6 +2630,20 @@ void LLMeshRepository::notifyLoadedMeshes() void LLMeshRepository::notifySkinInfoReceived(LLMeshSkinInfo& info) { mSkinMap[info.mMeshID] = info; + + skin_load_map::iterator iter = mLoadingSkins.find(info.mMeshID); + if (iter != mLoadingSkins.end()) + { + for (std::set<LLUUID>::iterator obj_id = iter->second.begin(); obj_id != iter->second.end(); ++obj_id) + { + LLVOVolume* vobj = (LLVOVolume*) gObjectList.findObject(*obj_id); + if (vobj) + { + vobj->notifyMeshLoaded(); + } + } + } + mLoadingSkins.erase(info.mMeshID); } @@ -2745,7 +2759,7 @@ U32 LLMeshRepository::getResourceCost(const LLUUID& mesh_id) return mThread->getResourceCost(mesh_id); } -const LLMeshSkinInfo* LLMeshRepository::getSkinInfo(const LLUUID& mesh_id) +const LLMeshSkinInfo* LLMeshRepository::getSkinInfo(const LLUUID& mesh_id, LLVOVolume* requesting_obj) { if (mesh_id.notNull()) { @@ -2759,12 +2773,12 @@ const LLMeshSkinInfo* LLMeshRepository::getSkinInfo(const LLUUID& mesh_id) { LLMutexLock lock(mMeshMutex); //add volume to list of loading meshes - std::set<LLUUID>::iterator iter = mLoadingSkins.find(mesh_id); + skin_load_map::iterator iter = mLoadingSkins.find(mesh_id); if (iter == mLoadingSkins.end()) { //no request pending for this skin info - mLoadingSkins.insert(mesh_id); mPendingSkinRequests.push(mesh_id); } + mLoadingSkins[mesh_id].insert(requesting_obj->getID()); } } diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 0a6954bade..9b80fc02b3 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -475,7 +475,7 @@ public: static S32 getActualMeshLOD(LLSD& header, S32 lod); U32 calcResourceCost(LLSD& header); U32 getResourceCost(const LLUUID& mesh_params); - const LLMeshSkinInfo* getSkinInfo(const LLUUID& mesh_id); + const LLMeshSkinInfo* getSkinInfo(const LLUUID& mesh_id, LLVOVolume* requesting_obj); LLModel::Decomposition* getDecomposition(const LLUUID& mesh_id); void fetchPhysicsShape(const LLUUID& mesh_id); bool hasPhysicsShape(const LLUUID& mesh_id); @@ -504,7 +504,8 @@ public: std::vector<LLMeshRepoThread::LODRequest> mPendingRequests; //list of mesh ids awaiting skin info - std::set<LLUUID> mLoadingSkins; + typedef std::map<LLUUID, std::set<LLUUID> > skin_load_map; + skin_load_map mLoadingSkins; //list of mesh ids that need to send skin info fetch requests std::queue<LLUUID> mPendingSkinRequests; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index dc355362ce..77bbf994e9 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -6004,7 +6004,7 @@ void LLVOAvatar::cleanupAttachedMesh( LLViewerObject* pVO ) LLVOVolume* pVObj = pVO->mDrawable->getVOVolume(); if ( pVObj ) { - const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( pVObj->getVolume()->getParams().getSculptID() ); + const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( pVObj->getVolume()->getParams().getSculptID(), pVObj ); if ( pSkinData ) { const int jointCnt = pSkinData->mJointNames.size(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 125283d474..6e84884dee 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1096,8 +1096,6 @@ void LLVOVolume::updateSculptTexture() } - - void LLVOVolume::notifyMeshLoaded() { mSculptChanged = TRUE; @@ -3534,7 +3532,7 @@ void LLVOVolume::updateRiggedVolume() LLVolume* volume = getVolume(); - const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(volume->getParams().getSculptID()); + const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(volume->getParams().getSculptID(), this); if (!skin) { @@ -3986,7 +3984,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) bool rigged = vobj->isAttachment() && vobj->isMesh() && - gMeshRepo.getSkinInfo(vobj->getVolume()->getParams().getSculptID()); + gMeshRepo.getSkinInfo(vobj->getVolume()->getParams().getSculptID(), vobj); bool bake_sunlight = LLPipeline::sBakeSunlight && drawablep->isStatic(); @@ -4028,7 +4026,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) if ( pAvatarVO ) { LLUUID currentId = vobj->getVolume()->getParams().getSculptID(); - const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( currentId ); + const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( currentId, vobj ); if ( pSkinData ) { -- cgit v1.2.3 From faef58a9b91ecbbffd93fa90347f1b8bd5856902 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 2 Jun 2011 01:36:28 -0500 Subject: SH-1666 Remove "Mesh" stitching type from sculpt combo box. --- indra/newview/llpanelobject.cpp | 14 -------------- indra/newview/skins/default/xui/en/floater_tools.xml | 6 +----- 2 files changed, 1 insertion(+), 19 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 34a92cd0ac..52917ff20b 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -1740,25 +1740,11 @@ void LLPanelObject::refresh() mRootObject = NULL; } - bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") && - gAgent.getRegion() && - !gAgent.getRegion()->getCapability("GetMesh").empty(); - F32 max_scale = get_default_max_prim_scale(LLPickInfo::isFlora(mObject)); getChild<LLSpinCtrl>("Scale X")->setMaxValue(max_scale); getChild<LLSpinCtrl>("Scale Y")->setMaxValue(max_scale); getChild<LLSpinCtrl>("Scale Z")->setMaxValue(max_scale); - - BOOL found = mCtrlSculptType->itemExists("Mesh"); - if (enable_mesh && !found) - { - mCtrlSculptType->add("Mesh"); - } - else if (!enable_mesh && found) - { - mCtrlSculptType->remove("Mesh"); - } } diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 40bf7bfed7..f5f6b990d1 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2098,11 +2098,7 @@ even though the user gets a free copy. label="Cylinder" name="Cylinder" value="Cylinder" /> - <combo_box.item - label="Mesh" - name="Mesh" - value="Mesh" /> - </combo_box> + </combo_box> </panel> <panel border="false" -- cgit v1.2.3 From 71658a024e03ef11b2531cfc7205c9ef7f72c99b Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Thu, 2 Jun 2011 12:05:45 -0600 Subject: fix for SH-1691: [crashhunters] crash at LLVolumeImplFlexible::doFlexibleUpdate() [secondlife-bin llflexibleobject.cpp] --- indra/newview/llflexibleobject.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index 3d1650d2f5..32a533570a 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -366,7 +366,7 @@ void LLVolumeImplFlexible::doFlexibleUpdate() LLFastTimer ftm(FTM_DO_FLEXIBLE_UPDATE); LLVolume* volume = mVO->getVolume(); LLPath *path = &volume->getPath(); - if ((mSimulateRes == 0 || !mInitialized) && mVO->mDrawable->isVisible()) // if its uninitialized but not visible, what then? - Nyx + if ((mSimulateRes == 0 || !mInitialized) && mVO->mDrawable->isVisible()) { mVO->markForUpdate(TRUE); if (!doIdleUpdate(gAgent, *LLWorld::getInstance(), 0.0)) @@ -375,7 +375,11 @@ void LLVolumeImplFlexible::doFlexibleUpdate() } } - llassert_always(mInitialized); + if(!mInitialized) + { + //the object is not visible + return ; + } S32 num_sections = 1 << mSimulateRes; -- cgit v1.2.3 From de5f93ca52f207380baca6895b499cb7fcffead8 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 2 Jun 2011 22:58:57 -0500 Subject: SH-1732 Add streaming cost calculation for mesh objects. --- indra/newview/llvovolume.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index c917a5fd9d..39e555f781 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3096,16 +3096,28 @@ U32 LLVOVolume::getRenderCost(std::set<LLUUID> &textures) const F32 LLVOVolume::getStreamingCost(S32* bytes, S32* visible_bytes) { + F32 radius = getScale().length(); + if (isMesh()) { LLSD& header = gMeshRepo.getMeshHeader(getVolume()->getParams().getSculptID()); - F32 radius = getScale().length(); - return LLMeshRepository::getStreamingCost(header, radius, bytes, visible_bytes, mLOD); } - - return 0.f; + else + { + LLVolume* volume = getVolume(); + S32 counts[4]; + LLVolume::getLoDTriangleCounts(volume->getParams(), counts); + + LLSD header; + header["lowest_lod"]["size"] = counts[0] * 10; + header["low_lod"]["size"] = counts[1] * 10; + header["medium_lod"]["size"] = counts[2] * 10; + header["high_lod"]["size"] = counts[3] * 10; + + return LLMeshRepository::getStreamingCost(header, radius); + } } U32 LLVOVolume::getTriangleCount() -- cgit v1.2.3 From b0a04b08f7b3cf4040b9708125a548e646b990f7 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Fri, 3 Jun 2011 00:13:50 -0500 Subject: SH-1744 Add havok's degenerate triangle check to importer. Highlight degenerate triangles in physics mesh and block upload when degenerate triangles are present. --- indra/newview/llfloatermodelpreview.cpp | 160 +++++++++++++++++++++++++++++++- indra/newview/llmeshrepository.cpp | 6 +- 2 files changed, 161 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2a3bd37129..b715f326a0 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -178,6 +178,80 @@ std::string lod_label_name[NUM_LOD+1] = "I went off the end of the lod_label_name array. Me so smart." }; + +#define LL_DEGENERACY_TOLERANCE 1e-7f + +inline F32 dot3fpu(const LLVector4a& a, const LLVector4a& b) +{ + volatile F32 p0 = a[0] * b[0]; + volatile F32 p1 = a[1] * b[1]; + volatile F32 p2 = a[2] * b[2]; + return p0 + p1 + p2; +} + +bool ll_is_degenerate(const LLVector4a& a, const LLVector4a& b, const LLVector4a& c, F32 tolerance = LL_DEGENERACY_TOLERANCE) +{ + // small area check + { + LLVector4a edge1; edge1.setSub( a, b ); + LLVector4a edge2; edge2.setSub( a, c ); + ////////////////////////////////////////////////////////////////////////// + /// Linden Modified + ////////////////////////////////////////////////////////////////////////// + + // If no one edge is more than 10x longer than any other edge, we weaken + // the tolerance by a factor of 1e-4f. + + LLVector4a edge3; edge3.setSub( c, b ); + const F32 len1sq = edge1.dot3(edge1).getF32(); + const F32 len2sq = edge2.dot3(edge2).getF32(); + const F32 len3sq = edge3.dot3(edge3).getF32(); + bool abOK = (len1sq <= 100.f * len2sq) && (len1sq <= 100.f * len3sq); + bool acOK = (len2sq <= 100.f * len1sq) && (len1sq <= 100.f * len3sq); + bool cbOK = (len3sq <= 100.f * len1sq) && (len1sq <= 100.f * len2sq); + if ( abOK && acOK && cbOK ) + { + tolerance *= 1e-4f; + } + + ////////////////////////////////////////////////////////////////////////// + /// End Modified + ////////////////////////////////////////////////////////////////////////// + + LLVector4a cross; cross.setCross3( edge1, edge2 ); + + LLVector4a edge1b; edge1b.setSub( b, a ); + LLVector4a edge2b; edge2b.setSub( b, c ); + LLVector4a crossb; crossb.setCross3( edge1b, edge2b ); + + if ( ( cross.dot3(cross).getF32() < tolerance ) || ( crossb.dot3(crossb).getF32() < tolerance )) + { + return true; + } + } + + // point triangle distance check + { + LLVector4a Q; Q.setSub(a, b); + LLVector4a R; R.setSub(c, b); + + const F32 QQ = dot3fpu(Q, Q); + const F32 RR = dot3fpu(R, R); + const F32 QR = dot3fpu(R, Q); + + volatile F32 QQRR = QQ * RR; + volatile F32 QRQR = QR * QR; + F32 Det = (QQRR - QRQR); + + if( Det == 0.0f ) + { + return true; + } + } + + return false; +} + bool validate_face(const LLVolumeFace& face) { for (U32 i = 0; i < face.mNumIndices; ++i) @@ -189,6 +263,31 @@ bool validate_face(const LLVolumeFace& face) } } + if (face.mNumIndices % 3 != 0 || face.mNumIndices == 0) + { + llwarns << "Face has invalid number of indices." << llendl; + return false; + } + + /*const LLVector4a scale(0.5f); + + for (U32 i = 0; i < face.mNumIndices; i+=3) + { + U16 idx1 = face.mIndices[i]; + U16 idx2 = face.mIndices[i+1]; + U16 idx3 = face.mIndices[i+2]; + + LLVector4a v1; v1.setMul(face.mPositions[idx1], scale); + LLVector4a v2; v2.setMul(face.mPositions[idx2], scale); + LLVector4a v3; v3.setMul(face.mPositions[idx3], scale); + + if (ll_is_degenerate(v1,v2,v3)) + { + llwarns << "Degenerate face found!" << llendl; + return false; + } + }*/ + return true; } @@ -3752,7 +3851,35 @@ void LLModelPreview::updateStatusMessages() mMaxTriangleLimit = total_tris[LLModel::LOD_HIGH]; } + bool has_degenerate = false; + {//check for degenerate triangles in physics mesh + U32 lod = LLModel::LOD_PHYSICS; + const LLVector4a scale(0.5f); + for (U32 i = 0; i < mModel[lod].size() && !has_degenerate; ++i) + { //for each model in the lod + if (mModel[lod][i]->mPhysics.mHull.empty()) + { //no decomp exists + S32 cur_submeshes = mModel[lod][i]->getNumVolumeFaces(); + for (S32 j = 0; j < cur_submeshes && !has_degenerate; ++j) + { //for each submesh (face), add triangles and vertices to current total + const LLVolumeFace& face = mModel[lod][i]->getVolumeFace(j); + for (S32 k = 0; k < face.mNumIndices && !has_degenerate; ) + { + LLVector4a v1; v1.setMul(face.mPositions[face.mIndices[k++]], scale); + LLVector4a v2; v2.setMul(face.mPositions[face.mIndices[k++]], scale); + LLVector4a v3; v3.setMul(face.mPositions[face.mIndices[k++]], scale); + + if (ll_is_degenerate(v1,v2,v3)) + { + has_degenerate = true; + } + } + } + } + } + } + mFMP->childSetTextArg("submeshes_info", "[SUBMESHES]", llformat("%d", total_submeshes[LLModel::LOD_HIGH])); std::string mesh_status_na = mFMP->getString("mesh_status_na"); @@ -3853,7 +3980,10 @@ void LLModelPreview::updateStatusMessages() for (U32 j = 0; upload_ok && j < mdl->mPhysics.mHull.size(); ++j) { - upload_ok = upload_ok && mdl->mPhysics.mHull[i].size() <= 256; + if (mdl->mPhysics.mHull[j].size() > 256) + { + upload_ok = false; + } } } @@ -3876,7 +4006,7 @@ void LLModelPreview::updateStatusMessages() } } - if ( upload_ok && !errorStateFromLoader && skinAndRigOk ) + if ( upload_ok && !errorStateFromLoader && skinAndRigOk && !has_degenerate) { mFMP->childEnable("ok_btn"); } @@ -4666,6 +4796,32 @@ BOOL LLModelPreview::render() glLineWidth(3.f); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); + + { //show degenerate triangles + LLStrider<LLVector3> pos_strider; + buffer->getVertexStrider(pos_strider, 0); + LLVector4a* pos = (LLVector4a*) pos_strider.get(); + + LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS); + LLGLDisable cull(GL_CULL_FACE); + LLStrider<U16> idx; + buffer->getIndexStrider(idx, 0); + + glColor4f(1.f,0.f,0.f,1.f); + const LLVector4a scale(0.5f); + for (U32 i = 0; i < buffer->getNumIndices(); i += 3) + { + LLVector4a v1; v1.setMul(pos[*idx++], scale); + LLVector4a v2; v2.setMul(pos[*idx++], scale); + LLVector4a v3; v3.setMul(pos[*idx++], scale); + + if (ll_is_degenerate(v1,v2,v3)) + { + buffer->draw(LLRender::TRIANGLES, 3, i); + } + } + } + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glLineWidth(1.f); } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 4464d299ed..4a8c644dbc 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1399,14 +1399,14 @@ BOOL LLMeshUploadThread::isDiscarded() void LLMeshUploadThread::run() { - if (gSavedSettings.getBOOL("MeshUseWholeModelUpload")) + //if (gSavedSettings.getBOOL("MeshUseWholeModelUpload")) { doWholeModelUpload(); } - else + /*else { doIterativeUpload(); - } + }*/ } void dumpLLSDToFile(const LLSD& content, std::string filename) -- cgit v1.2.3 From 75bdb77c245109f7d72bb8fb034184b4d26cff50 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Fri, 3 Jun 2011 10:55:28 -0600 Subject: more fix for STORM-1298: Crash on startup of Second Life 2.7.1(231307) --- indra/newview/llviewertexturelist.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 1ffae7ce83..a1d9434d44 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -281,6 +281,8 @@ void LLViewerTextureList::shutdown() mUUIDMap.clear(); mImageList.clear(); + + mInitialized = FALSE ; //prevent loading textures again. } void LLViewerTextureList::dump() @@ -328,6 +330,11 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string& LLGLenum primary_format, const LLUUID& force_id) { + if(!mInitialized) + { + return NULL ; + } + std::string full_path = gDirUtilp->findSkinnedFilename("textures", filename); if (full_path.empty()) { @@ -348,6 +355,11 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromUrl(const std::string& LLGLenum primary_format, const LLUUID& force_id) { + if(!mInitialized) + { + return NULL ; + } + // generate UUID based on hash of filename LLUUID new_id; if (force_id.notNull()) @@ -407,6 +419,11 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id, LLGLenum primary_format, LLHost request_from_host) { + if(!mInitialized) + { + return NULL ; + } + // Return the image with ID image_id // If the image is not found, creates new image and // enqueues a request for transmission -- cgit v1.2.3 From cc7a041bfe908faa1a256d13d35cb1ad17358f60 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Fri, 3 Jun 2011 14:41:08 -0400 Subject: Fix for Storm-956 crashes viewer when connected to non-LL grids --- indra/newview/llviewermessage.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3832be727f..49188e46c6 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -6483,10 +6483,14 @@ void process_script_dialog(LLMessageSystem* msg, void**) LLSD payload; LLUUID object_id; - LLUUID owner_id; - msg->getUUID("Data", "ObjectID", object_id); - msg->getUUID("OwnerData", "OwnerID", owner_id); + +// For compability with OS grids first check for presence of extended packet before fetching data. + LLUUID owner_id; + if (gMessageSystem->getNumberOfBlocks("OwnerData") > 0) + { + msg->getUUID("OwnerData", "OwnerID", owner_id); + } if (LLMuteList::getInstance()->isMuted(object_id) || LLMuteList::getInstance()->isMuted(owner_id)) { -- cgit v1.2.3 From 325c2b216907b84b02b425103b011a556222b474 Mon Sep 17 00:00:00 2001 From: Don Kjer <don@lindenlab.com> Date: Mon, 6 Jun 2011 21:27:29 +0000 Subject: Removed the old mesh asset upload pipeline. Fixed a problem with spamming MissingString MacLocale warnings. Reviewed by Dave --- indra/newview/llfloatermodelpreview.cpp | 2 +- indra/newview/llmeshrepository.cpp | 265 +------------------------------- indra/newview/llmeshrepository.h | 5 - indra/newview/llviewermenufile.cpp | 73 +-------- indra/newview/llviewermenufile.h | 17 -- indra/newview/llviewerregion.cpp | 4 +- 6 files changed, 5 insertions(+), 361 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index f21d60dd03..675edd7643 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1399,7 +1399,7 @@ bool LLModelLoader::doLoadModel() if(model->getStatus() != LLModel::NO_ERRORS) { setLoadState(ERROR_PARSING + model->getStatus()) ; - return true ; //abort + return false; //abort } if (model.notNull() && validate_model(model)) diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index d8024b362e..a4dcd3cd52 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -507,6 +507,7 @@ public: llinfos << "completed" << llendl; mThread->mPendingUploads--; dumpLLSDToFile(content,make_dump_name("whole_model_fee_response_",dump_num)); + llinfos << "LLWholeModelFeeResponder content: " << content << llendl; if (isGoodStatus(status)) { mThread->mWholeModelUploadURL = content["uploader"].asString(); @@ -1302,8 +1303,6 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, mOrigin = gAgent.getPositionAgent(); mHost = gAgent.getRegionHost(); - mUploadObjectAssetCapability = gAgent.getRegion()->getCapability("UploadObjectAsset"); - mNewInventoryCapability = gAgent.getRegion()->getCapability("NewFileAgentInventoryVariablePrice"); mWholeModelFeeCapability = gAgent.getRegion()->getCapability("NewFileAgentInventory"); mOrigin += gAgent.getAtAxis() * scale.magVec(); @@ -1393,14 +1392,7 @@ BOOL LLMeshUploadThread::isDiscarded() void LLMeshUploadThread::run() { - //if (gSavedSettings.getBOOL("MeshUseWholeModelUpload")) - { - doWholeModelUpload(); - } - /*else - { - doIterativeUpload(); - }*/ + doWholeModelUpload(); } void dumpLLSDToFile(const LLSD& content, std::string filename) @@ -1670,163 +1662,6 @@ void LLMeshUploadThread::doWholeModelUpload() mFinished = true; } -void LLMeshUploadThread::doIterativeUpload() -{ - if(isDiscarded()) - { - mFinished = true; - return ; - } - - mCurlRequest = new LLCurlRequest(); - - std::set<LLViewerTexture* > textures; - - //populate upload queue with relevant models - for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter) - { - LLMeshUploadData data; - data.mBaseModel = iter->first; - - LLModelInstance& instance = *(iter->second.begin()); - - for (S32 i = 0; i < 5; i++) - { - data.mModel[i] = instance.mLOD[i]; - } - - uploadModel(data); - - if (mUploadTextures) - { - for (std::vector<LLImportMaterial>::iterator material_iter = instance.mMaterial.begin(); - material_iter != instance.mMaterial.end(); ++material_iter) - { - - if (textures.find(material_iter->mDiffuseMap.get()) == textures.end()) - { - textures.insert(material_iter->mDiffuseMap.get()); - - LLTextureUploadData data(material_iter->mDiffuseMap.get(), material_iter->mDiffuseMapLabel); - uploadTexture(data); - } - } - } - - //queue up models for hull generation - LLModel* physics = data.mModel[LLModel::LOD_PHYSICS]; - if (physics == NULL) - { //no physics model available, use high lod - physics = data.mModel[LLModel::LOD_HIGH]; - } - - DecompRequest* request = new DecompRequest(physics, data.mBaseModel, this); - gMeshRepo.mDecompThread->submitRequest(request); - } - - while (!mPhysicsComplete) - { - apr_sleep(100); - } - - //upload textures - bool done = false; - do - { - if (!mTextureQ.empty()) - { - sendCostRequest(mTextureQ.front()); - mTextureQ.pop(); - } - - if (!mConfirmedTextureQ.empty()) - { - doUploadTexture(mConfirmedTextureQ.front()); - mConfirmedTextureQ.pop(); - } - - mCurlRequest->process(); - - done = mTextureQ.empty() && mConfirmedTextureQ.empty(); - } - while (!done || mCurlRequest->getQueued() > 0); - - LLSD object_asset; - object_asset["objects"] = LLSD::emptyArray(); - - done = false; - do - { - static S32 count = 0; - static F32 last_hundred = gFrameTimeSeconds; - if (gFrameTimeSeconds - last_hundred > 1.f) - { - last_hundred = gFrameTimeSeconds; - count = 0; - } - - //how many requests to push before calling process - const S32 PUSH_PER_PROCESS = 32; - - S32 tcount = llmin(count+PUSH_PER_PROCESS, 100); - - while (!mUploadQ.empty() && count < tcount) - { //send any pending upload requests - mMutex->lock(); - LLMeshUploadData data = mUploadQ.front(); - mUploadQ.pop(); - mMutex->unlock(); - sendCostRequest(data); - count++; - } - - tcount = llmin(count+PUSH_PER_PROCESS, 100); - - while (!mConfirmedQ.empty() && count < tcount) - { //process any meshes that have been confirmed for upload - LLMeshUploadData& data = mConfirmedQ.front(); - doUploadModel(data); - mConfirmedQ.pop(); - count++; - } - - tcount = llmin(count+PUSH_PER_PROCESS, 100); - - while (!mInstanceQ.empty() && count < tcount && !isDiscarded()) - { //create any objects waiting for upload - count++; - object_asset["objects"].append(createObject(mInstanceQ.front())); - mInstanceQ.pop(); - } - - mCurlRequest->process(); - - done = isDiscarded() || (mInstanceQ.empty() && mConfirmedQ.empty() && mUploadQ.empty()); - } - while (!done || mCurlRequest->getQueued() > 0); - - delete mCurlRequest; - mCurlRequest = NULL; - - // now upload the object asset - std::string url = mUploadObjectAssetCapability; - - if (object_asset["objects"][0].has("permissions")) - { //copy permissions from first available object to be used for coalesced object - object_asset["permissions"] = object_asset["objects"][0]["permissions"]; - } - - if(!isDiscarded()) - { - mPendingUploads++; - LLHTTPClient::post(url, object_asset, new LLModelObjectUploadResponder(this,object_asset)); - } - else - { - mFinished = true; - } -} - void LLMeshUploadThread::uploadModel(LLMeshUploadData& data) { //called from arbitrary thread { @@ -2937,102 +2772,6 @@ S32 LLMeshRepository::getMeshSize(const LLUUID& mesh_id, S32 lod) } -void LLMeshUploadThread::sendCostRequest(LLMeshUploadData& data) -{ - if(isDiscarded()) - { - return ; - } - - //write model file to memory buffer - std::stringstream ostr; - - LLModel::Decomposition& decomp = - data.mModel[LLModel::LOD_PHYSICS].notNull() ? - data.mModel[LLModel::LOD_PHYSICS]->mPhysics : - data.mBaseModel->mPhysics; - - LLSD header = LLModel::writeModel( - ostr, - data.mModel[LLModel::LOD_PHYSICS], - data.mModel[LLModel::LOD_HIGH], - data.mModel[LLModel::LOD_MEDIUM], - data.mModel[LLModel::LOD_LOW], - data.mModel[LLModel::LOD_IMPOSTOR], - decomp, - mUploadSkin, - mUploadJoints, - true); - - std::string desc = data.mBaseModel->mLabel; - - // Grab the total vertex count of the model - // along with other information for the "asset_resources" map - // to send to the server. - LLSD asset_resources = LLSD::emptyMap(); - - - std::string url = mNewInventoryCapability; - - if (!url.empty()) - { - LLSD body = generate_new_resource_upload_capability_body( - LLAssetType::AT_MESH, - desc, - desc, - LLFolderType::FT_MESH, - LLInventoryType::IT_MESH, - LLFloaterPerms::getNextOwnerPerms(), - LLFloaterPerms::getGroupPerms(), - LLFloaterPerms::getEveryonePerms()); - - body["asset_resources"] = asset_resources; - - mPendingConfirmations++; - LLCurlRequest::headers_t headers; - - data.mPostData = body; - - mCurlRequest->post(url, headers, body, new LLMeshCostResponder(data, this)); - } -} - -void LLMeshUploadThread::sendCostRequest(LLTextureUploadData& data) -{ - if(isDiscarded()) - { - return ; - } - - if (data.mTexture && data.mTexture->getDiscardLevel() >= 0) - { - LLSD asset_resources = LLSD::emptyMap(); - - std::string url = mNewInventoryCapability; - - if (!url.empty()) - { - LLSD body = generate_new_resource_upload_capability_body( - LLAssetType::AT_TEXTURE, - data.mLabel, - data.mLabel, - LLFolderType::FT_TEXTURE, - LLInventoryType::IT_TEXTURE, - LLFloaterPerms::getNextOwnerPerms(), - LLFloaterPerms::getGroupPerms(), - LLFloaterPerms::getEveryonePerms()); - - body["asset_resources"] = asset_resources; - - mPendingConfirmations++; - LLCurlRequest::headers_t headers; - - data.mPostData = body; - mCurlRequest->post(url, headers, body, new LLTextureCostResponder(data, this)); - } - } -} - void LLMeshUploadThread::doUploadModel(LLMeshUploadData& data) { diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 9b80fc02b3..a0c3989cf5 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -393,8 +393,6 @@ public: BOOL mDiscarded ; LLHost mHost; - std::string mUploadObjectAssetCapability; - std::string mNewInventoryCapability; std::string mWholeModelFeeCapability; std::string mWholeModelUploadURL; @@ -413,12 +411,10 @@ public: void uploadTexture(LLTextureUploadData& data); void doUploadTexture(LLTextureUploadData& data); - void sendCostRequest(LLTextureUploadData& data); void priceResult(LLTextureUploadData& data, const LLSD& content); void onTextureUploaded(LLTextureUploadData& data); void uploadModel(LLMeshUploadData& data); - void sendCostRequest(LLMeshUploadData& data); void doUploadModel(LLMeshUploadData& data); void onModelUploaded(LLMeshUploadData& data); void createObjects(LLMeshUploadData& data); @@ -432,7 +428,6 @@ public: BOOL isDiscarded(); void doWholeModelUpload(); - void doIterativeUpload(); void wholeModelToLLSD(LLSD& dest, bool include_textures); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 37640ad0d4..b424f4952d 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -109,6 +109,7 @@ class LLMeshUploadVisible : public view_listener_t { return gSavedSettings.getBOOL("MeshEnabled") && LLViewerParcelMgr::getInstance()->allowAgentBuild() && + // mesh *TODO: Use SimulatorFeatures cap to get this info instead. !gAgent.getRegion()->getCapability("ObjectAdd").empty(); } }; @@ -1203,78 +1204,6 @@ void upload_new_resource( } } -BOOL upload_new_variable_price_resource( - const LLTransactionID &tid, - LLAssetType::EType asset_type, - std::string name, - std::string desc, - LLFolderType::EType destination_folder_type, - LLInventoryType::EType inv_type, - U32 next_owner_perms, - U32 group_perms, - U32 everyone_perms, - const std::string& display_name, - const LLSD& asset_resources) -{ - LLAssetID uuid = - upload_new_resource_prep( - tid, - asset_type, - inv_type, - name, - display_name, - desc); - - llinfos << "*** Uploading: " << llendl; - llinfos << "Type: " << LLAssetType::lookup(asset_type) << llendl; - llinfos << "UUID: " << uuid << llendl; - llinfos << "Name: " << name << llendl; - llinfos << "Desc: " << desc << llendl; - lldebugs << "Folder: " - << gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? (LLFolderType::EType)asset_type : destination_folder_type) << llendl; - lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl; - - std::string url = gAgent.getRegion()->getCapability( - "NewFileAgentInventoryVariablePrice"); - - if ( !url.empty() ) - { - lldebugs - << "New Agent Inventory variable price upload" << llendl; - - // Each of the two capabilities has similar data, so - // let's reuse that code - - LLSD body; - - body = generate_new_resource_upload_capability_body( - asset_type, - name, - desc, - destination_folder_type, - inv_type, - next_owner_perms, - group_perms, - everyone_perms); - - body["asset_resources"] = asset_resources; - - LLHTTPClient::post( - url, - body, - new LLNewAgentInventoryVariablePriceResponder( - uuid, - asset_type, - body)); - - return TRUE; - } - else - { - return FALSE; - } -} - LLAssetID generate_asset_id_for_new_upload(const LLTransactionID& tid) { if ( gDisconnected ) diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h index 1597821504..3136358b83 100644 --- a/indra/newview/llviewermenufile.h +++ b/indra/newview/llviewermenufile.h @@ -68,23 +68,6 @@ void upload_new_resource( S32 expected_upload_cost, void *userdata); -// TODO* : Move all uploads to use this new function -// since at some point, that upload path will be deprecated and no longer -// used - -// We make a new function here to ensure that previous code is not broken -BOOL upload_new_variable_price_resource( - const LLTransactionID& tid, - LLAssetType::EType type, - std::string name, - std::string desc, - LLFolderType::EType destination_folder_type, - LLInventoryType::EType inv_type, - U32 next_owner_perms, - U32 group_perms, - U32 everyone_perms, - const std::string& display_name, - const LLSD& asset_resources); LLAssetID generate_asset_id_for_new_upload(const LLTransactionID& tid); void increase_new_upload_stats(LLAssetType::EType asset_type); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index c4ca5d37ce..b0ec5811a5 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1510,9 +1510,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("LandResources"); capabilityNames.append("MapLayer"); capabilityNames.append("MapLayerGod"); - capabilityNames.append("NewAccountingEnabled"); capabilityNames.append("NewFileAgentInventory"); - capabilityNames.append("NewFileAgentInventoryVariablePrice"); + // mesh *TODO: Use SimulatorFeatures cap to get this info instead. capabilityNames.append("ObjectAdd"); capabilityNames.append("ParcelPropertiesUpdate"); capabilityNames.append("ParcelMediaURLFilterList"); @@ -1544,7 +1543,6 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("UpdateNotecardTaskInventory"); capabilityNames.append("UpdateScriptTask"); capabilityNames.append("UploadBakedTexture"); - capabilityNames.append("UploadObjectAsset"); capabilityNames.append("ViewerMetrics"); capabilityNames.append("ViewerStartAuction"); capabilityNames.append("ViewerStats"); -- cgit v1.2.3 From b3fbb12f155ae1acc6b4d258d1c383d5d8e47964 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Mon, 6 Jun 2011 19:12:52 -0500 Subject: SH-1589 Fix for some meshes showing up in non mesh enabled regions. --- indra/newview/lldrawpoolavatar.cpp | 10 +--------- indra/newview/llmeshrepository.cpp | 11 ++--------- indra/newview/llviewerregion.cpp | 12 ++++++++++++ indra/newview/llviewerregion.h | 3 +++ indra/newview/llvovolume.cpp | 2 +- 5 files changed, 19 insertions(+), 19 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 870aec4eff..9f790d03fe 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -459,14 +459,6 @@ S32 LLDrawPoolAvatar::getNumPasses() { return 10; } - if (LLPipeline::sImpostorRender) - { - return 1; - } - else - { - return 3; - } } @@ -1419,7 +1411,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) { - if (avatar->isSelf() && !gAgent.needsRenderAvatar()) + if (avatar->isSelf() && !gAgent.needsRenderAvatar() || !gMeshRepo.meshRezEnabled()) { return; } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index ff9f0e1663..bfaddf9cde 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2379,7 +2379,6 @@ void LLMeshRepository::notifyLoadedMeshes() if (gAgent.getRegion()->getName() != region_name && gAgent.getRegion()->capabilitiesReceived()) { region_name = gAgent.getRegion()->getName(); - mGetMeshCapability = gAgent.getRegion()->getCapability("GetMesh"); } } @@ -3725,10 +3724,7 @@ bool LLMeshRepository::meshUploadEnabled() LLViewerParcelMgr::getInstance()->allowAgentBuild() && region) { - LLSD sim_features; - region->getSimulatorFeatures(sim_features); - return (sim_features.has("MeshUploadEnabled") && - sim_features["MeshUploadEnabled"].asBoolean()); + return region->meshUploadEnabled(); } return false; } @@ -3739,10 +3735,7 @@ bool LLMeshRepository::meshRezEnabled() if(gSavedSettings.getBOOL("MeshEnabled") && region) { - LLSD sim_features; - region->getSimulatorFeatures(sim_features); - return (sim_features.has("MeshRezEnabled") && - sim_features["MeshRezEnabled"].asBoolean()); + return region->meshRezEnabled(); } return false; } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 80207d6568..a370e83410 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1716,4 +1716,16 @@ std::string LLViewerRegion::getDescription() const return stringize(*this); } +bool LLViewerRegion::meshUploadEnabled() const +{ + return (mSimulatorFeatures.has("MeshUploadEnabled") && + mSimulatorFeatures["MeshUploadEnabled"].asBoolean()); +} + +bool LLViewerRegion::meshRezEnabled() const +{ + return (mSimulatorFeatures.has("MeshRezEnabled") && + mSimulatorFeatures["MeshRezEnabled"].asBoolean()); +} + diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index d936277231..3811b989e7 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -276,6 +276,9 @@ public: void getInfo(LLSD& info); + bool meshRezEnabled() const; + bool meshUploadEnabled() const; + void getSimulatorFeatures(LLSD& info); void setSimulatorFeatures(const LLSD& info); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 39e555f781..d978167f50 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3983,7 +3983,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) LLVOVolume* vobj = drawablep->getVOVolume(); - if (vobj->getVolume() && vobj->getVolume()->isTetrahedron()) + if (vobj->getVolume() && vobj->getVolume()->isTetrahedron() || (vobj->isMesh() && !gMeshRepo.meshRezEnabled())) { continue; } -- cgit v1.2.3 From faf9693be3f34cd1ef28e21ae1bd2bc466221c4e Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 7 Jun 2011 00:10:24 -0500 Subject: Make basehull assert even more forgiving (only error out on 10% over bounds). --- indra/newview/llviewerregion.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index a370e83410..1dd92cd926 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1716,16 +1716,16 @@ std::string LLViewerRegion::getDescription() const return stringize(*this); } -bool LLViewerRegion::meshUploadEnabled() const -{ - return (mSimulatorFeatures.has("MeshUploadEnabled") && - mSimulatorFeatures["MeshUploadEnabled"].asBoolean()); -} - -bool LLViewerRegion::meshRezEnabled() const -{ - return (mSimulatorFeatures.has("MeshRezEnabled") && - mSimulatorFeatures["MeshRezEnabled"].asBoolean()); -} +bool LLViewerRegion::meshUploadEnabled() const +{ + return (mSimulatorFeatures.has("MeshUploadEnabled") && + mSimulatorFeatures["MeshUploadEnabled"].asBoolean()); +} + +bool LLViewerRegion::meshRezEnabled() const +{ + return (mSimulatorFeatures.has("MeshRezEnabled") && + mSimulatorFeatures["MeshRezEnabled"].asBoolean()); +} -- cgit v1.2.3 From 81af06c95490a54e69b6bbf01ae2ef98adb66a02 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 7 Jun 2011 00:22:49 -0500 Subject: Fix for crash on clicking cancel while a model is still loading. --- indra/newview/llfloatermodelpreview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 675edd7643..1f6199ffb2 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -2787,7 +2787,7 @@ LLModelPreview::~LLModelPreview() { if (mModelLoader) { - delete mModelLoader; + mModelLoader->mPreview = NULL; mModelLoader = NULL; } //*HACK : *TODO : turn this back on when we understand why this crashes -- cgit v1.2.3 From eb85820797cb4321657a0ce0b160af806e15b05a Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 7 Jun 2011 15:28:49 -0500 Subject: SH-1595 Make rigged attachment selection more reliable (never selectable when not in edit mode, always accurately selectable while in edit mode). --- indra/newview/llspatialpartition.cpp | 25 +++++++++++- indra/newview/llvoavatar.cpp | 79 ++++++++++++++++++++++++++++++++++++ indra/newview/llvoavatar.h | 8 ++++ indra/newview/llvovolume.cpp | 3 +- 4 files changed, 113 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 7f91f9a952..d96fa087b1 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -35,6 +35,7 @@ #include "llvolumeoctree.h" #include "llviewercamera.h" #include "llface.h" +#include "llfloatertools.h" #include "llviewercontrol.h" #include "llviewerregion.h" #include "llcamera.h" @@ -4272,7 +4273,29 @@ public: if (vobj) { LLVector3 intersection; - if (vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal)) + bool skip_check = false; + if (vobj->isAvatar()) + { + LLVOAvatar* avatar = (LLVOAvatar*) vobj; + if (avatar->isSelf() && LLFloater::isVisible(gFloaterTools)) + { + LLViewerObject* hit = avatar->lineSegmentIntersectRiggedAttachments(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal); + if (hit) + { + mEnd = intersection; + if (mIntersection) + { + *mIntersection = intersection; + } + + mHit = hit->mDrawable; + skip_check = true; + } + + } + } + + if (!skip_check && vobj->lineSegmentIntersect(mStart, mEnd, -1, mPickTransparent, mFaceHit, &intersection, mTexCoord, mNormal, mBinormal)) { mEnd = intersection; // shorten ray so we only find CLOSER hits if (mIntersection) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 77bbf994e9..1b53348b43 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -56,6 +56,7 @@ #include "lleditingmotion.h" #include "llemote.h" //#include "llfirstuse.h" +#include "llfloatertools.h" #include "llheadrotmotion.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" @@ -1541,7 +1542,35 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector3& start, const LLVector3& e return TRUE; } } + + if (isSelf()) + { + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); + ++iter) + { + LLViewerJointAttachment* attachment = iter->second; + + for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin(); + attachment_iter != attachment->mAttachedObjects.end(); + ++attachment_iter) + { + LLViewerObject* attached_object = (*attachment_iter); + + if (attached_object && !attached_object->isDead() && attachment->getValid()) + { + LLDrawable* drawable = attached_object->mDrawable; + if (drawable->isState(LLDrawable::RIGGED)) + { //regenerate octree for rigged attachment + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_RIGGED, TRUE); + } + } + } + } + } } + + LLVector3 position; if (mNameText.notNull() && mNameText->lineSegmentIntersect(start, end, position)) @@ -1557,6 +1586,56 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector3& start, const LLVector3& e return FALSE; } +LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector3& start, const LLVector3& end, + S32 face, + BOOL pick_transparent, + S32* face_hit, + LLVector3* intersection, + LLVector2* tex_coord, + LLVector3* normal, + LLVector3* bi_normal) +{ + if (isSelf() && !gAgent.needsRenderAvatar()) + { + return NULL; + } + + LLViewerObject* hit = NULL; + + if (lineSegmentBoundingBox(start, end)) + { + LLVector3 local_end = end; + LLVector3 local_intersection; + + for (attachment_map_t::iterator iter = mAttachmentPoints.begin(); + iter != mAttachmentPoints.end(); + ++iter) + { + LLViewerJointAttachment* attachment = iter->second; + + for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin(); + attachment_iter != attachment->mAttachedObjects.end(); + ++attachment_iter) + { + LLViewerObject* attached_object = (*attachment_iter); + + if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, face_hit, &local_intersection, tex_coord, normal, bi_normal)) + { + local_end = local_intersection; + if (intersection) + { + *intersection = local_intersection; + } + + hit = attached_object; + } + } + } + } + + return hit; +} + //----------------------------------------------------------------------------- // parseSkeletonFile() //----------------------------------------------------------------------------- diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 295799fd24..03c0498a2a 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -145,6 +145,14 @@ public: LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point LLVector3* normal = NULL, // return the surface normal at the intersection point LLVector3* bi_normal = NULL); // return the surface bi-normal at the intersection point + LLViewerObject* lineSegmentIntersectRiggedAttachments(const LLVector3& start, const LLVector3& end, + S32 face = -1, // which face to check, -1 = ALL_SIDES + BOOL pick_transparent = FALSE, + S32* face_hit = NULL, // which face was hit + LLVector3* intersection = NULL, // return the intersection point + LLVector2* tex_coord = NULL, // return the texture coordinates of the intersection point + LLVector3* normal = NULL, // return the surface normal at the intersection point + LLVector3* bi_normal = NULL); // return the surface bi-normal at the intersection point //-------------------------------------------------------------------- // LLCharacter interface and related diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 39e555f781..6de334eb82 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3365,7 +3365,8 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& e { if (LLFloater::isVisible(gFloaterTools) && getAvatar()->isSelf()) { - gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_RIGGED, TRUE); + updateRiggedVolume(); + genBBoxes(FALSE); volume = mRiggedVolume; transform = false; } -- cgit v1.2.3 From 9134ec0197cd53ad6a0690c2cbfda406c7d9dbcb Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Tue, 7 Jun 2011 16:43:38 -0400 Subject: STORM-899 'No attachments worn' text on blank 'Attachments' accordion remains in English for all locales --- indra/newview/llcofwearables.cpp | 8 +++++--- indra/newview/llcofwearables.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 9a30979b9b..254c0adef1 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -296,7 +296,7 @@ LLCOFWearables::~LLCOFWearables() // virtual BOOL LLCOFWearables::postBuild() { - mAttachments = getChild<LLFlatListViewEx>("list_attachments"); + mAttachments = getChild<LLFlatListView>("list_attachments"); mClothing = getChild<LLFlatListView>("list_clothing"); mBodyParts = getChild<LLFlatListView>("list_body_parts"); @@ -317,8 +317,6 @@ BOOL LLCOFWearables::postBuild() mAttachments->setComparator(&WEARABLE_NAME_COMPARATOR); mBodyParts->setComparator(&WEARABLE_NAME_COMPARATOR); - mAttachments->setNoItemsMsg(getString("no_attachments")); - mClothingTab = getChild<LLAccordionCtrlTab>("tab_clothing"); mClothingTab->setDropDownStateChangedCallback(boost::bind(&LLCOFWearables::onAccordionTabStateChanged, this, _1, _2)); @@ -500,6 +498,10 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel mAttachments->sort(); mAttachments->notify(REARRANGE); //notifying the parent about the list's size change (cause items were added with rearrange=false) } + else + { + mAttachments->setNoItemsCommentText(LLTrans::getString("no_attachments")); + } if (mBodyParts->size()) { diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index 271e36e87d..1f8d6d0c94 100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h @@ -106,7 +106,7 @@ protected: void onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu); - LLFlatListViewEx* mAttachments; + LLFlatListView* mAttachments; LLFlatListView* mClothing; LLFlatListView* mBodyParts; -- cgit v1.2.3 From dbd619508ba45292c2cebe096494c28e74941643 Mon Sep 17 00:00:00 2001 From: prep linden <prep@lindenlab.com> Date: Tue, 7 Jun 2011 16:53:29 -0400 Subject: Fix for importer crashes, sh-1698. Added checks for handling bad elements in the dae. --- indra/newview/llfloatermodelpreview.h | 3 --- indra/newview/skins/default/xui/en/floater_model_preview.xml | 1 + indra/newview/skins/default/xui/en/floater_model_wizard.xml | 3 ++- 3 files changed, 3 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index ed7cbe6d1e..7d7464577a 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -311,9 +311,6 @@ public: void setHasPivot( bool val ) { mHasPivot = val; } void setModelPivot( const LLVector3& pivot ) { mModelPivot = pivot; } - //Sets the current avatars joints to new positions - //Makes in world go to shit, however - void changeAvatarsJointPositions( LLModel* pModel ); //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); void critiqueJointToNodeMappingFromScene( void ); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 4677d014b8..9d46e1eec5 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -7,6 +7,7 @@ <string name="status_reading_file">Loading...</string> <string name="status_generating_meshes">Generating Meshes...</string> <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="bad_element">Error: element is invalid</string> <string name="high">High</string> <string name="medium">Medium</string> <string name="low">Low</string> diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 47b2e5fd79..3dd16f8eb1 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1021,7 +1021,8 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se <string name="status_idle">Idle</string> <string name="status_reading_file">Loading...</string> <string name="status_generating_meshes">Generating Meshes...</string> - <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="bad_element">Error: element is invalid</string> <string name="high">High</string> <string name="medium">Medium</string> <string name="low">Low</string> -- cgit v1.2.3 From d6730fddf6d8e711ca5af6e72a92734a70f86209 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 00:16:02 -0500 Subject: don't use quota accounting manager --- indra/newview/llfloatertools.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 0f11d05175..0d798afdcc 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -424,6 +424,7 @@ void LLFloaterTools::refresh() // Refresh object and prim count labels LLLocale locale(LLLocale::USER_LOCALE); +#if 0 if (gMeshRepo.meshRezEnabled()) { std::string obj_count_string; @@ -448,6 +449,7 @@ void LLFloaterTools::refresh() getChildView("RenderingCost")->setEnabled(have_selection && sShowObjectCost); } else +#endif { // Get the number of objects selected std::string root_object_count_string; -- cgit v1.2.3 From edc6ca726be6862d9e070b4ee1bfd706f8040b16 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 00:35:14 -0500 Subject: SH-1648 Fix for spot shadows being offset by sunlight vector when SSAO enabled. --- indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 6dbcc479e1..d53850b489 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -234,7 +234,7 @@ void main() gl_FragColor[0] = shadow; gl_FragColor[1] = calcAmbientOcclusion(pos, norm); - spos.xyz = shadow_pos+offset*spot_shadow_offset; + spos.xyz = shadow_pos+norm*spot_shadow_offset; //spotlight shadow 1 vec4 lpos = shadow_matrix[4]*spos; -- cgit v1.2.3 From 9b1c284d4cb678c0a7800505ac5fa3ab3e6ba095 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 01:08:09 -0500 Subject: SH-1678 Fix for busted fullbright shiny. --- .../shaders/class1/deferred/fullbrightF.glsl | 33 ++-------------------- indra/newview/lldrawpoolbump.cpp | 6 ++++ indra/newview/llviewershadermgr.cpp | 3 +- 3 files changed, 10 insertions(+), 32 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 029f282d7c..5e6c5ebec8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -9,34 +9,6 @@ #extension GL_ARB_texture_rectangle : enable -varying float vary_texture_index; - -uniform sampler2D tex0; -uniform sampler2D tex1; -uniform sampler2D tex2; -uniform sampler2D tex3; -uniform sampler2D tex4; -uniform sampler2D tex5; -uniform sampler2D tex6; -uniform sampler2D tex7; - -vec4 textureLookup(vec2 texcoord) -{ - switch (int(vary_texture_index+0.25)) - { - case 0: return texture2D(tex0, texcoord); - case 1: return texture2D(tex1, texcoord); - case 2: return texture2D(tex2, texcoord); - case 3: return texture2D(tex3, texcoord); - case 4: return texture2D(tex4, texcoord); - case 5: return texture2D(tex5, texcoord); - case 6: return texture2D(tex6, texcoord); - case 7: return texture2D(tex7, texcoord); - } - - return vec4(0,0,0,0); -} - vec3 fullbrightAtmosTransport(vec3 light); vec3 fullbrightScaleSoftClip(vec3 light); @@ -45,12 +17,13 @@ void main() { float shadow = 1.0; - vec4 color = textureLookup(gl_TexCoord[0].xy)*gl_Color; + vec4 color = diffuseLookup(gl_TexCoord[0].xy)*gl_Color; color.rgb = fullbrightAtmosTransport(color.rgb); color.rgb = fullbrightScaleSoftClip(color.rgb); - gl_FragColor = color; + //gl_FragColor = color; + gl_FragColor = vec4(1,0,1,1); } diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 8985d3680e..813b3820ee 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -537,6 +537,12 @@ void LLDrawPoolBump::beginFullbrightShiny() gGL.getTexUnit(cube_channel)->bind(cube_map); gGL.getTexUnit(0)->activate(); } + + if (mVertexShaderLevel > 1) + { //indexed texture rendering, channel 0 is always diffuse + diffuse_channel = 0; + } + mShiny = TRUE; } diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index a1cb6d4ea6..e3ed2d0649 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -1303,8 +1303,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredFullbrightProgram.mFeatures.calculatesAtmospherics = true; gDeferredFullbrightProgram.mFeatures.hasGamma = true; gDeferredFullbrightProgram.mFeatures.hasTransport = true; - gDeferredFullbrightProgram.mFeatures.isFullbright = true; - gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = 0; + gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits; gDeferredFullbrightProgram.mShaderFiles.clear(); gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB)); gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB)); -- cgit v1.2.3 From 280caa290253d92cc8f5f283c340d79639a9b178 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 02:06:51 -0500 Subject: SH-1679 Fix for anti-aliasing not being on by default for appropriate cards. --- indra/newview/featuretable.txt | 7 ++++++- indra/newview/featuretable_linux.txt | 7 ++++++- indra/newview/featuretable_mac.txt | 7 ++++++- indra/newview/featuretable_xp.txt | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 25dd2ffe78..1d29c5b597 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 27 +version 28 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -64,6 +64,7 @@ RenderDeferredSSAO 1 1 RenderShadowDetail 1 2 WatchdogDisabled 1 1 RenderUseStreamVBO 1 1 +RenderFSAASamples 1 16 // // Low Graphics Settings @@ -95,6 +96,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // Mid Graphics Settings @@ -124,6 +126,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // High Graphics Settings (purty) @@ -153,6 +156,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 4 // // Ultra graphics (REALLY PURTY!) @@ -181,6 +185,7 @@ WLSkyDetail 1 128 RenderDeferred 1 1 RenderDeferredSSAO 1 1 RenderShadowDetail 1 2 +RenderFSAASamples 1 8 // // Class Unknown Hardware (unknown) diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 058bdcc730..9daa5a5b29 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -1,4 +1,4 @@ -version 23 +version 24 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -62,6 +62,7 @@ RenderShaderLightingMaxLevel 1 3 RenderDeferred 1 1 RenderDeferredSSAO 1 1 RenderShadowDetail 1 2 +RenderFSAASamples 1 16 // // Low Graphics Settings @@ -93,6 +94,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // Mid Graphics Settings @@ -122,6 +124,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // High Graphics Settings (purty) @@ -151,6 +154,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 4 // // Ultra graphics (REALLY PURTY!) @@ -180,6 +184,7 @@ WLSkyDetail 1 128 RenderDeferred 1 1 RenderDeferredSSAO 1 1 RenderShadowDetail 1 2 +RenderFSAASamples 1 8 // // Class Unknown Hardware (unknown) diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 8b8340bd71..d7b4128ca2 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -1,4 +1,4 @@ -version 24 +version 25 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -64,6 +64,7 @@ RenderDeferredSSAO 1 1 RenderShadowDetail 1 2 WatchdogDisabled 1 1 RenderUseStreamVBO 1 1 +RenderFSAASamples 1 16 // // Low Graphics Settings @@ -95,6 +96,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // Mid Graphics Settings @@ -124,6 +126,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // High Graphics Settings (purty) @@ -153,6 +156,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 2 +RenderFSAASamples 1 4 // // Ultra graphics (REALLY PURTY!) @@ -182,6 +186,7 @@ WLSkyDetail 1 128 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 2 +RenderFSAASamples 1 8 // // Class Unknown Hardware (unknown) diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index 65a6f59bbe..0a23b4d6a6 100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt @@ -1,4 +1,4 @@ -version 27 +version 28 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -64,6 +64,7 @@ RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 WatchdogDisabled 1 1 RenderUseStreamVBO 1 1 +RenderFSAASamples 1 16 // // Low Graphics Settings @@ -95,6 +96,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // Mid Graphics Settings @@ -124,6 +126,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderFSAASamples 1 0 // // High Graphics Settings (purty) @@ -153,6 +156,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 2 +RenderFSAASamples 1 4 // // Ultra graphics (REALLY PURTY!) @@ -182,6 +186,7 @@ WLSkyDetail 1 128 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 2 +RenderFSAASamples 1 8 // // Class Unknown Hardware (unknown) -- cgit v1.2.3 From 0c3de98056bde49a18c40469b3d3e3a43be3d209 Mon Sep 17 00:00:00 2001 From: paul_productengine <none@none> Date: Wed, 8 Jun 2011 18:23:31 +0300 Subject: SH-1588 FIXED (Build tools does not specify units for prim density value) - Changed label of the Density spinner - Added ability to LLSpinCtrl to set wrap property form XML --- indra/newview/skins/default/xui/en/floater_tools.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index f5f6b990d1..7441b2cd9c 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2457,8 +2457,9 @@ even though the user gets a free copy. height="19" increment="0.1" initial_value="0" - label="Density" + label="Density in 100 kg/m^3" label_width="70" + label_wrap="true" layout="topleft" left_delta="0" max_val="22587" @@ -2479,7 +2480,7 @@ even though the user gets a free copy. max_val="1" min_val="0" name="Physics Restitution" - top_pad="4" + top_pad="8" width="132" /> </panel> <panel -- cgit v1.2.3 From cd7de2dfe7b837a7000e05606793cbbaec4d475e Mon Sep 17 00:00:00 2001 From: prep <prep@lindenlab.com> Date: Wed, 8 Jun 2011 15:29:52 -0400 Subject: Fix for sh-815: Added support for verifying a controllers skin weight count against the geometries vertex count --- indra/newview/llfloatermodelpreview.cpp | 106 +++ indra/newview/llfloatermodelpreview.h | 868 +++++++++++---------- .../skins/default/xui/en/floater_model_preview.xml | 1 + .../skins/default/xui/en/floater_model_wizard.xml | 1 + 4 files changed, 546 insertions(+), 430 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 8be5c427fe..75fa7b9d1f 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -598,6 +598,11 @@ void LLFloaterModelPreview::draw() childSetTextArg("status", "[STATUS]", getString(LLModel::getStatusString(mModelPreview->getLoadState() - LLModelLoader::ERROR_PARSING))); } else + if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_PARSING ) + { + childSetTextArg("status", "[STATUS]", getString("status_parse_error")); + } + else { childSetTextArg("status", "[STATUS]", getString("status_idle")); } @@ -1250,6 +1255,23 @@ bool LLModelLoader::doLoadModel() return false; } + //Verify some basic properties of the dae + //1. Basic validity check on controller + U32 controllerCount = (int) db->getElementCount( NULL, "controller" ); + bool result = false; + for ( int i=0; i<controllerCount; ++i ) + { + domController* pController = NULL; + db->getElement( (daeElement**) &pController, i , NULL, "controller" ); + result = mPreview->verifyController( pController ); + if (!result) + { + setLoadState( ERROR_PARSING ); + return true; + } + } + + //get unit scale mTransform.setIdentity(); @@ -2178,6 +2200,90 @@ bool LLModelLoader::isNodeAJoint( domNode* pNode ) return false; } +//----------------------------------------------------------------------------- +// verifyCount +//----------------------------------------------------------------------------- +bool LLModelPreview::verifyCount( int expected, int result ) +{ + if ( expected != result ) + { + llinfos<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<llendl; + return false; + } + return true; +} +//----------------------------------------------------------------------------- +// verifyController +//----------------------------------------------------------------------------- +bool LLModelPreview::verifyController( domController* pController ) +{ + + bool result = true; + + domSkin* pSkin = pController->getSkin(); + + if ( pSkin ) + { + xsAnyURI & uri = pSkin->getSource(); + domElement* pElement = uri.getElement(); + + if ( !pElement ) + { + llinfos<<"Can't resolve skin source"<<llendl; + return false; + } + + daeString type_str = pElement->getTypeName(); + if ( stricmp(type_str, "geometry") == 0 ) + { + //Skin is reference directly by geometry and get the vertex count from skin + domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); + U32 vertexWeightsCount = pVertexWeights->getCount(); + domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); + domMesh* pMesh = pGeometry->getMesh(); + + if ( pMesh ) + { + //Get vertex count from geometry + domVertices* pVertices = pMesh->getVertices(); + if ( !pVertices ) + { + llinfos<<"No vertices!"<<llendl; + return false; + } + + if ( pVertices ) + { + xsAnyURI src = pVertices->getInput_array()[0]->getSource(); + domSource* pSource = (domSource*) (domElement*) src.getElement(); + U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); + result = verifyCount( verticesCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + } + } + + U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); + result = verifyCount( vcountCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + + domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); + U32 sum = 0; + for (size_t i=0; i<vcountCount; i++) + { + sum += pVertexWeights->getVcount()->getValue()[i]; + } + result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); + } + } + + return result; +} //----------------------------------------------------------------------------- // extractTranslation() diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 7d7464577a..a328bfb4dd 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -1,430 +1,438 @@ -/** - * @file llfloatermodelpreview.h - * @brief LLFloaterModelPreview class definition - * - * $LicenseInfo:firstyear=2004&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERMODELPREVIEW_H -#define LL_LLFLOATERMODELPREVIEW_H - -#include "llfloaternamedesc.h" - -#include "lldynamictexture.h" -#include "llfloatermodelwizard.h" -#include "llquaternion.h" -#include "llmeshrepository.h" -#include "llmodel.h" -#include "llthread.h" -#include "llviewermenufile.h" - -class LLComboBox; -class LLJoint; -class LLViewerJointMesh; -class LLVOAvatar; -class LLTextBox; -class LLVertexBuffer; -class LLModelPreview; -class LLFloaterModelPreview; -class daeElement; -class domProfile_COMMON; -class domInstance_geometry; -class domNode; -class domTranslate; -class LLMenuButton; -class LLToggleableMenu; - -typedef std::map<std::string, LLMatrix4> JointTransformMap; -typedef std::map<std::string, LLMatrix4>:: iterator JointTransformMapIt; - -const S32 NUM_LOD = 4; - -class LLModelLoader : public LLThread -{ -public: - typedef enum - { - STARTING = 0, - READING_FILE, - CREATING_FACES, - GENERATING_VERTEX_BUFFERS, - GENERATING_LOD, - DONE, - ERROR_PARSING //basically loading failed - } eLoadState; - - U32 mState; - std::string mFilename; - S32 mLod; - LLModelPreview* mPreview; - LLMatrix4 mTransform; - BOOL mFirstTransform; - LLVector3 mExtents[2]; - bool mTrySLM; - - std::map<daeElement*, LLPointer<LLModel> > mModel; - - typedef std::vector<LLPointer<LLModel> > model_list; - model_list mModelList; - - typedef std::vector<LLModelInstance> model_instance_list; - - typedef std::map<LLMatrix4, model_instance_list > scene; - - scene mScene; - - typedef std::queue<LLPointer<LLModel> > model_queue; - - //queue of models that need a physics rep - model_queue mPhysicsQ; - - LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap, - std::deque<std::string>& jointsFromNodes ); - ~LLModelLoader() ; - - virtual void run(); - bool doLoadModel(); - bool loadFromSLM(const std::string& filename); - void loadModelCallback(); - - void loadTextures() ; //called in the main thread. - void processElement(daeElement* element); - std::vector<LLImportMaterial> getMaterials(LLModel* model, domInstance_geometry* instance_geo); - LLImportMaterial profileToMaterial(domProfile_COMMON* material); - std::string getElementLabel(daeElement *element); - LLColor4 getDaeColor(daeElement* element); - - daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); - - bool isNodeAJoint( domNode* pNode ); - void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); - void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); - void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); - - void setLoadState(U32 state); - - void buildJointToNodeMappingFromScene( daeElement* pRoot ); - void processJointToNodeMapping( domNode* pNode ); - - - //map of avatar joints as named in COLLADA assets to internal joint names - std::map<std::string, std::string> mJointMap; - JointTransformMap& mJointList; - std::deque<std::string>& mJointsFromNode; - -private: - static std::list<LLModelLoader*> sActiveLoaderList; - static bool isAlive(LLModelLoader* loader) ; -}; - -class LLFloaterModelPreview : public LLFloater -{ -public: - - class DecompRequest : public LLPhysicsDecomp::Request - { - public: - S32 mContinue; - LLPointer<LLModel> mModel; - - DecompRequest(const std::string& stage, LLModel* mdl); - virtual S32 statusCallback(const char* status, S32 p1, S32 p2); - virtual void completed(); - - }; - static LLFloaterModelPreview* sInstance; - - LLFloaterModelPreview(const LLSD& key); - virtual ~LLFloaterModelPreview(); - - virtual BOOL postBuild(); - - BOOL handleMouseDown(S32 x, S32 y, MASK mask); - BOOL handleMouseUp(S32 x, S32 y, MASK mask); - BOOL handleHover(S32 x, S32 y, MASK mask); - BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); - - static void onMouseCaptureLostModelPreview(LLMouseHandler*); - static void setUploadAmount(S32 amount) { sUploadAmount = amount; } - - void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost); - - static void onBrowseLOD(void* data); - - static void onReset(void* data); - - static void onUpload(void* data); - - static void onClearMaterials(void* data); - - static void refresh(LLUICtrl* ctrl, void* data); - - void updateResourceCost(); - - void loadModel(S32 lod); - - void onViewOptionChecked(const LLSD& userdata); - bool isViewOptionChecked(const LLSD& userdata); - bool isViewOptionEnabled(const LLSD& userdata); - void setViewOptionEnabled(const std::string& option, bool enabled); - void enableViewOption(const std::string& option); - void disableViewOption(const std::string& option); - -protected: - friend class LLModelPreview; - friend class LLMeshFilePicker; - friend class LLPhysicsDecomp; - - static void onImportScaleCommit(LLUICtrl*, void*); - static void onPelvisOffsetCommit(LLUICtrl*, void*); - static void onUploadJointsCommit(LLUICtrl*,void*); - static void onUploadSkinCommit(LLUICtrl*,void*); - - static void onPhysicsLoadRadioCommit(LLUICtrl*,void *data); - - static void onPreviewLODCommit(LLUICtrl*,void*); - - static void onGenerateNormalsCommit(LLUICtrl*,void*); - - static void onAutoFillCommit(LLUICtrl*,void*); - static void onLODParamCommit(LLUICtrl*,void*); - static void onLODParamCommitTriangleLimit(LLUICtrl*,void*); - - static void onExplodeCommit(LLUICtrl*, void*); - - static void onPhysicsParamCommit(LLUICtrl* ctrl, void* userdata); - static void onPhysicsStageExecute(LLUICtrl* ctrl, void* userdata); - static void onCancel(LLUICtrl* ctrl, void* userdata); - static void onPhysicsStageCancel(LLUICtrl* ctrl, void* userdata); - - static void onPhysicsBrowse(LLUICtrl* ctrl, void* userdata); - static void onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata); - static void onPhysicsOptimize(LLUICtrl* ctrl, void* userdata); - static void onPhysicsDecomposeBack(LLUICtrl* ctrl, void* userdata); - static void onPhysicsSimplifyBack(LLUICtrl* ctrl, void* userdata); - - void draw(); - - void initDecompControls(); - - void setStatusMessage(const std::string& msg); - - LLModelPreview* mModelPreview; - - LLPhysicsDecomp::decomp_params mDecompParams; - - S32 mLastMouseX; - S32 mLastMouseY; - LLRect mPreviewRect; - U32 mGLName; - static S32 sUploadAmount; - - std::set<LLPointer<DecompRequest> > mCurRequest; - std::string mStatusMessage; - - //use "disabled" as false by default - std::map<std::string, bool> mViewOptionDisabled; - - //store which lod mode each LOD is using - // 0 - load from file - // 1 - auto generate - // 2 - None - S32 mLODMode[4]; - - LLMenuButton* mViewOptionMenuButton; - LLToggleableMenu* mViewOptionMenu; - LLMutex* mStatusLock; - -}; - -class LLMeshFilePicker : public LLFilePickerThread -{ -public: - LLMeshFilePicker(LLModelPreview* mp, S32 lod); - virtual void notify(const std::string& filename); - -private: - LLModelPreview* mMP; - S32 mLOD; -}; - - -class LLModelPreview : public LLViewerDynamicTexture, public LLMutex -{ - typedef boost::signals2::signal<void (F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)> details_signal_t; - typedef boost::signals2::signal<void (void)> model_loaded_signal_t; - -public: - LLModelPreview(S32 width, S32 height, LLFloater* fmp); - virtual ~LLModelPreview(); - - void resetPreviewTarget(); - void setPreviewTarget(F32 distance); - void setTexture(U32 name) { mTextureName = name; } - - void setPhysicsFromLOD(S32 lod); - BOOL render(); - void update(); - void genBuffers(S32 lod, bool skinned); - void clearBuffers(); - void refresh(); - void rotate(F32 yaw_radians, F32 pitch_radians); - void zoom(F32 zoom_amt); - void pan(F32 right, F32 up); - virtual BOOL needsRender() { return mNeedsUpdate; } - void setPreviewLOD(S32 lod); - void clearModel(S32 lod); - void loadModel(std::string filename, S32 lod); - void loadModelCallback(S32 lod); - void genLODs(S32 which_lod = -1, U32 decimation = 3, bool enforce_tri_limit = false); - void generateNormals(); - void clearMaterials(); - U32 calcResourceCost(); - void rebuildUploadData(); - void saveUploadData(bool save_skinweights, bool save_joint_poisitions); - void saveUploadData(const std::string& filename, bool save_skinweights, bool save_joint_poisitions); - void clearIncompatible(S32 lod); - void updateStatusMessages(); - void clearGLODGroup(); - void onLODParamCommit(bool enforce_tri_limit); - - const bool getModelPivot( void ) const { return mHasPivot; } - void setHasPivot( bool val ) { mHasPivot = val; } - void setModelPivot( const LLVector3& pivot ) { mModelPivot = pivot; } - - //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) - void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); - void critiqueJointToNodeMappingFromScene( void ); - //Is a rig valid so that it can be used as a criteria for allowing for uploading of joint positions - //Accessors for joint position upload friendly rigs - const bool isRigValidForJointPositionUpload( void ) const { return mRigValidJointUpload; } - void setRigValidForJointPositionUpload( bool rigValid ) { mRigValidJointUpload = rigValid; } - bool isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ); - //Determines if a rig is a legacy from the joint list - bool isRigLegacy( const std::vector<std::string> &jointListFromAsset ); - //Accessors for the legacy rigs - const bool isLegacyRigValid( void ) const { return mLegacyRigValid; } - void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } - - static void textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata ); - - boost::signals2::connection setDetailsCallback( const details_signal_t::slot_type& cb ){ return mDetailsSignal.connect(cb); } - boost::signals2::connection setModelLoadedCallback( const model_loaded_signal_t::slot_type& cb ){ return mModelLoadedSignal.connect(cb); } - - void setLoadState( U32 state ) { mLoadState = state; } - U32 getLoadState() { return mLoadState; } - //setRestJointFlag: If an asset comes through that changes the joints, we want the reset to persist - void setResetJointFlag( bool state ) { if ( !mResetJoints ) mResetJoints = state; } - const bool getResetJointFlag( void ) const { return mResetJoints; } - void setRigWithSceneParity( bool state ) { mRigParityWithScene = state; } - const bool getRigWithSceneParity( void ) const { return mRigParityWithScene; } - - LLVector3 getTranslationForJointOffset( std::string joint ); - - void createPreviewAvatar( void ); - LLVOAvatar* getPreviewAvatar( void ) { return mPreviewAvatar; } - - protected: - friend class LLModelLoader; - friend class LLFloaterModelPreview; - friend class LLFloaterModelWizard; - friend class LLFloaterModelPreview::DecompRequest; - friend class LLFloaterModelWizard::DecompRequest; - friend class LLPhysicsDecomp; - - LLFloater* mFMP; - - BOOL mNeedsUpdate; - bool mDirty; - bool mGenLOD; - U32 mTextureName; - F32 mCameraDistance; - F32 mCameraYaw; - F32 mCameraPitch; - F32 mCameraZoom; - LLVector3 mCameraOffset; - LLVector3 mPreviewTarget; - LLVector3 mPreviewScale; - S32 mPreviewLOD; - U32 mResourceCost; - std::string mLODFile[LLModel::NUM_LODS]; - bool mLoading; - U32 mLoadState; - bool mResetJoints; - bool mRigParityWithScene; - - std::map<std::string, bool> mViewOption; - - //GLOD object parameters (must rebuild object if these change) - bool mLODFrozen; - F32 mBuildShareTolerance; - U32 mBuildQueueMode; - U32 mBuildOperator; - U32 mBuildBorderMode; - U32 mRequestedLoDMode[LLModel::NUM_LODS]; - S32 mRequestedTriangleCount[LLModel::NUM_LODS]; - F32 mRequestedErrorThreshold[LLModel::NUM_LODS]; - U32 mRequestedBuildOperator[LLModel::NUM_LODS]; - U32 mRequestedQueueMode[LLModel::NUM_LODS]; - U32 mRequestedBorderMode[LLModel::NUM_LODS]; - F32 mRequestedShareTolerance[LLModel::NUM_LODS]; - F32 mRequestedCreaseAngle[LLModel::NUM_LODS]; - - LLModelLoader* mModelLoader; - - LLModelLoader::scene mScene[LLModel::NUM_LODS]; - LLModelLoader::scene mBaseScene; - - LLModelLoader::model_list mModel[LLModel::NUM_LODS]; - LLModelLoader::model_list mBaseModel; - - U32 mGroup; - std::map<LLPointer<LLModel>, U32> mObject; - U32 mMaxTriangleLimit; - - LLMeshUploadThread::instance_list mUploadData; - std::set<LLViewerFetchedTexture* > mTextureSet; - - //map of vertex buffers to models (one vertex buffer in vector per face in model - std::map<LLModel*, std::vector<LLPointer<LLVertexBuffer> > > mVertexBuffer[LLModel::NUM_LODS+1]; - - details_signal_t mDetailsSignal; - model_loaded_signal_t mModelLoadedSignal; - - LLVector3 mModelPivot; - bool mHasPivot; - - float mPelvisZOffset; - - bool mRigValidJointUpload; - bool mLegacyRigValid; - - bool mLastJointUpdate; - - std::deque<std::string> mMasterJointList; - std::deque<std::string> mMasterLegacyJointList; - std::deque<std::string> mJointsFromNode; - JointTransformMap mJointTransformMap; - LLPointer<LLVOAvatar> mPreviewAvatar; -}; - -#endif // LL_LLFLOATERMODELPREVIEW_H +/** + * @file llfloatermodelpreview.h + * @brief LLFloaterModelPreview class definition + * + * $LicenseInfo:firstyear=2004&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATERMODELPREVIEW_H +#define LL_LLFLOATERMODELPREVIEW_H + +#include "llfloaternamedesc.h" + +#include "lldynamictexture.h" +#include "llfloatermodelwizard.h" +#include "llquaternion.h" +#include "llmeshrepository.h" +#include "llmodel.h" +#include "llthread.h" +#include "llviewermenufile.h" + +class LLComboBox; +class LLJoint; +class LLViewerJointMesh; +class LLVOAvatar; +class LLTextBox; +class LLVertexBuffer; +class LLModelPreview; +class LLFloaterModelPreview; +class daeElement; +class domProfile_COMMON; +class domInstance_geometry; +class domNode; +class domTranslate; +class domController; +class LLMenuButton; +class LLToggleableMenu; + +typedef std::map<std::string, LLMatrix4> JointTransformMap; +typedef std::map<std::string, LLMatrix4>:: iterator JointTransformMapIt; + +const S32 NUM_LOD = 4; + +class LLModelLoader : public LLThread +{ +public: + typedef enum + { + STARTING = 0, + READING_FILE, + CREATING_FACES, + GENERATING_VERTEX_BUFFERS, + GENERATING_LOD, + DONE, + ERROR_PARSING //basically loading failed + } eLoadState; + + U32 mState; + std::string mFilename; + S32 mLod; + LLModelPreview* mPreview; + LLMatrix4 mTransform; + BOOL mFirstTransform; + LLVector3 mExtents[2]; + bool mTrySLM; + + std::map<daeElement*, LLPointer<LLModel> > mModel; + + typedef std::vector<LLPointer<LLModel> > model_list; + model_list mModelList; + + typedef std::vector<LLModelInstance> model_instance_list; + + typedef std::map<LLMatrix4, model_instance_list > scene; + + scene mScene; + + typedef std::queue<LLPointer<LLModel> > model_queue; + + //queue of models that need a physics rep + model_queue mPhysicsQ; + + LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap, + std::deque<std::string>& jointsFromNodes ); + ~LLModelLoader() ; + + virtual void run(); + bool doLoadModel(); + bool loadFromSLM(const std::string& filename); + void loadModelCallback(); + + void loadTextures() ; //called in the main thread. + void processElement(daeElement* element); + std::vector<LLImportMaterial> getMaterials(LLModel* model, domInstance_geometry* instance_geo); + LLImportMaterial profileToMaterial(domProfile_COMMON* material); + std::string getElementLabel(daeElement *element); + LLColor4 getDaeColor(daeElement* element); + + daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); + + bool isNodeAJoint( domNode* pNode ); + void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); + void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); + void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); + + void setLoadState(U32 state); + + void buildJointToNodeMappingFromScene( daeElement* pRoot ); + void processJointToNodeMapping( domNode* pNode ); + + + //map of avatar joints as named in COLLADA assets to internal joint names + std::map<std::string, std::string> mJointMap; + JointTransformMap& mJointList; + std::deque<std::string>& mJointsFromNode; + +private: + static std::list<LLModelLoader*> sActiveLoaderList; + static bool isAlive(LLModelLoader* loader) ; +}; + +class LLFloaterModelPreview : public LLFloater +{ +public: + + class DecompRequest : public LLPhysicsDecomp::Request + { + public: + S32 mContinue; + LLPointer<LLModel> mModel; + + DecompRequest(const std::string& stage, LLModel* mdl); + virtual S32 statusCallback(const char* status, S32 p1, S32 p2); + virtual void completed(); + + }; + static LLFloaterModelPreview* sInstance; + + LLFloaterModelPreview(const LLSD& key); + virtual ~LLFloaterModelPreview(); + + virtual BOOL postBuild(); + + BOOL handleMouseDown(S32 x, S32 y, MASK mask); + BOOL handleMouseUp(S32 x, S32 y, MASK mask); + BOOL handleHover(S32 x, S32 y, MASK mask); + BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); + + static void onMouseCaptureLostModelPreview(LLMouseHandler*); + static void setUploadAmount(S32 amount) { sUploadAmount = amount; } + + void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost); + + static void onBrowseLOD(void* data); + + static void onReset(void* data); + + static void onUpload(void* data); + + static void onClearMaterials(void* data); + + static void refresh(LLUICtrl* ctrl, void* data); + + void updateResourceCost(); + + void loadModel(S32 lod); + + void onViewOptionChecked(const LLSD& userdata); + bool isViewOptionChecked(const LLSD& userdata); + bool isViewOptionEnabled(const LLSD& userdata); + void setViewOptionEnabled(const std::string& option, bool enabled); + void enableViewOption(const std::string& option); + void disableViewOption(const std::string& option); + +protected: + friend class LLModelPreview; + friend class LLMeshFilePicker; + friend class LLPhysicsDecomp; + + static void onImportScaleCommit(LLUICtrl*, void*); + static void onPelvisOffsetCommit(LLUICtrl*, void*); + static void onUploadJointsCommit(LLUICtrl*,void*); + static void onUploadSkinCommit(LLUICtrl*,void*); + + static void onPhysicsLoadRadioCommit(LLUICtrl*,void *data); + + static void onPreviewLODCommit(LLUICtrl*,void*); + + static void onGenerateNormalsCommit(LLUICtrl*,void*); + + static void onAutoFillCommit(LLUICtrl*,void*); + static void onLODParamCommit(LLUICtrl*,void*); + static void onLODParamCommitTriangleLimit(LLUICtrl*,void*); + + static void onExplodeCommit(LLUICtrl*, void*); + + static void onPhysicsParamCommit(LLUICtrl* ctrl, void* userdata); + static void onPhysicsStageExecute(LLUICtrl* ctrl, void* userdata); + static void onCancel(LLUICtrl* ctrl, void* userdata); + static void onPhysicsStageCancel(LLUICtrl* ctrl, void* userdata); + + static void onPhysicsBrowse(LLUICtrl* ctrl, void* userdata); + static void onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata); + static void onPhysicsOptimize(LLUICtrl* ctrl, void* userdata); + static void onPhysicsDecomposeBack(LLUICtrl* ctrl, void* userdata); + static void onPhysicsSimplifyBack(LLUICtrl* ctrl, void* userdata); + + void draw(); + + void initDecompControls(); + + void setStatusMessage(const std::string& msg); + + LLModelPreview* mModelPreview; + + LLPhysicsDecomp::decomp_params mDecompParams; + + S32 mLastMouseX; + S32 mLastMouseY; + LLRect mPreviewRect; + U32 mGLName; + static S32 sUploadAmount; + + std::set<LLPointer<DecompRequest> > mCurRequest; + std::string mStatusMessage; + + //use "disabled" as false by default + std::map<std::string, bool> mViewOptionDisabled; + + //store which lod mode each LOD is using + // 0 - load from file + // 1 - auto generate + // 2 - None + S32 mLODMode[4]; + + LLMenuButton* mViewOptionMenuButton; + LLToggleableMenu* mViewOptionMenu; + LLMutex* mStatusLock; + +}; + +class LLMeshFilePicker : public LLFilePickerThread +{ +public: + LLMeshFilePicker(LLModelPreview* mp, S32 lod); + virtual void notify(const std::string& filename); + +private: + LLModelPreview* mMP; + S32 mLOD; +}; + + +class LLModelPreview : public LLViewerDynamicTexture, public LLMutex +{ + typedef boost::signals2::signal<void (F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)> details_signal_t; + typedef boost::signals2::signal<void (void)> model_loaded_signal_t; + +public: + LLModelPreview(S32 width, S32 height, LLFloater* fmp); + virtual ~LLModelPreview(); + + void resetPreviewTarget(); + void setPreviewTarget(F32 distance); + void setTexture(U32 name) { mTextureName = name; } + + void setPhysicsFromLOD(S32 lod); + BOOL render(); + void update(); + void genBuffers(S32 lod, bool skinned); + void clearBuffers(); + void refresh(); + void rotate(F32 yaw_radians, F32 pitch_radians); + void zoom(F32 zoom_amt); + void pan(F32 right, F32 up); + virtual BOOL needsRender() { return mNeedsUpdate; } + void setPreviewLOD(S32 lod); + void clearModel(S32 lod); + void loadModel(std::string filename, S32 lod); + void loadModelCallback(S32 lod); + void genLODs(S32 which_lod = -1, U32 decimation = 3, bool enforce_tri_limit = false); + void generateNormals(); + void clearMaterials(); + U32 calcResourceCost(); + void rebuildUploadData(); + void saveUploadData(bool save_skinweights, bool save_joint_poisitions); + void saveUploadData(const std::string& filename, bool save_skinweights, bool save_joint_poisitions); + void clearIncompatible(S32 lod); + void updateStatusMessages(); + void clearGLODGroup(); + void onLODParamCommit(bool enforce_tri_limit); + + const bool getModelPivot( void ) const { return mHasPivot; } + void setHasPivot( bool val ) { mHasPivot = val; } + void setModelPivot( const LLVector3& pivot ) { mModelPivot = pivot; } + + //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) + void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); + void critiqueJointToNodeMappingFromScene( void ); + //Is a rig valid so that it can be used as a criteria for allowing for uploading of joint positions + //Accessors for joint position upload friendly rigs + const bool isRigValidForJointPositionUpload( void ) const { return mRigValidJointUpload; } + void setRigValidForJointPositionUpload( bool rigValid ) { mRigValidJointUpload = rigValid; } + bool isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ); + //Determines if a rig is a legacy from the joint list + bool isRigLegacy( const std::vector<std::string> &jointListFromAsset ); + //Accessors for the legacy rigs + const bool isLegacyRigValid( void ) const { return mLegacyRigValid; } + void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } + //Verify that a controller matches vertex counts + bool verifyController( domController* pController ); + + static void textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata ); + + boost::signals2::connection setDetailsCallback( const details_signal_t::slot_type& cb ){ return mDetailsSignal.connect(cb); } + boost::signals2::connection setModelLoadedCallback( const model_loaded_signal_t::slot_type& cb ){ return mModelLoadedSignal.connect(cb); } + + void setLoadState( U32 state ) { mLoadState = state; } + U32 getLoadState() { return mLoadState; } + //setRestJointFlag: If an asset comes through that changes the joints, we want the reset to persist + void setResetJointFlag( bool state ) { if ( !mResetJoints ) mResetJoints = state; } + const bool getResetJointFlag( void ) const { return mResetJoints; } + void setRigWithSceneParity( bool state ) { mRigParityWithScene = state; } + const bool getRigWithSceneParity( void ) const { return mRigParityWithScene; } + + LLVector3 getTranslationForJointOffset( std::string joint ); + +private: + //Utility function for controller vertex compare + bool verifyCount( int expected, int result ); + //Creates the dummy avatar for the preview window + void createPreviewAvatar( void ); + //Accessor for the dummy avatar + LLVOAvatar* getPreviewAvatar( void ) { return mPreviewAvatar; } + + protected: + friend class LLModelLoader; + friend class LLFloaterModelPreview; + friend class LLFloaterModelWizard; + friend class LLFloaterModelPreview::DecompRequest; + friend class LLFloaterModelWizard::DecompRequest; + friend class LLPhysicsDecomp; + + LLFloater* mFMP; + + BOOL mNeedsUpdate; + bool mDirty; + bool mGenLOD; + U32 mTextureName; + F32 mCameraDistance; + F32 mCameraYaw; + F32 mCameraPitch; + F32 mCameraZoom; + LLVector3 mCameraOffset; + LLVector3 mPreviewTarget; + LLVector3 mPreviewScale; + S32 mPreviewLOD; + U32 mResourceCost; + std::string mLODFile[LLModel::NUM_LODS]; + bool mLoading; + U32 mLoadState; + bool mResetJoints; + bool mRigParityWithScene; + + std::map<std::string, bool> mViewOption; + + //GLOD object parameters (must rebuild object if these change) + bool mLODFrozen; + F32 mBuildShareTolerance; + U32 mBuildQueueMode; + U32 mBuildOperator; + U32 mBuildBorderMode; + U32 mRequestedLoDMode[LLModel::NUM_LODS]; + S32 mRequestedTriangleCount[LLModel::NUM_LODS]; + F32 mRequestedErrorThreshold[LLModel::NUM_LODS]; + U32 mRequestedBuildOperator[LLModel::NUM_LODS]; + U32 mRequestedQueueMode[LLModel::NUM_LODS]; + U32 mRequestedBorderMode[LLModel::NUM_LODS]; + F32 mRequestedShareTolerance[LLModel::NUM_LODS]; + F32 mRequestedCreaseAngle[LLModel::NUM_LODS]; + + LLModelLoader* mModelLoader; + + LLModelLoader::scene mScene[LLModel::NUM_LODS]; + LLModelLoader::scene mBaseScene; + + LLModelLoader::model_list mModel[LLModel::NUM_LODS]; + LLModelLoader::model_list mBaseModel; + + U32 mGroup; + std::map<LLPointer<LLModel>, U32> mObject; + U32 mMaxTriangleLimit; + + LLMeshUploadThread::instance_list mUploadData; + std::set<LLViewerFetchedTexture* > mTextureSet; + + //map of vertex buffers to models (one vertex buffer in vector per face in model + std::map<LLModel*, std::vector<LLPointer<LLVertexBuffer> > > mVertexBuffer[LLModel::NUM_LODS+1]; + + details_signal_t mDetailsSignal; + model_loaded_signal_t mModelLoadedSignal; + + LLVector3 mModelPivot; + bool mHasPivot; + + float mPelvisZOffset; + + bool mRigValidJointUpload; + bool mLegacyRigValid; + + bool mLastJointUpdate; + + std::deque<std::string> mMasterJointList; + std::deque<std::string> mMasterLegacyJointList; + std::deque<std::string> mJointsFromNode; + JointTransformMap mJointTransformMap; + LLPointer<LLVOAvatar> mPreviewAvatar; +}; + +#endif // LL_LLFLOATERMODELPREVIEW_H diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 9d46e1eec5..f58595b3c5 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -4,6 +4,7 @@ name="Model Preview" title="Upload Model" width="620"> <string name="status_idle">Idle</string> + <string name="status_parse_error">Dae parsing issue - see log for details.</string> <string name="status_reading_file">Loading...</string> <string name="status_generating_meshes">Generating Meshes...</string> <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 3dd16f8eb1..8603682e3a 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1019,6 +1019,7 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se <spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> <string name="status_idle">Idle</string> + <string name="status_parse_error">Dae parsing issue - see log for details.</string> <string name="status_reading_file">Loading...</string> <string name="status_generating_meshes">Generating Meshes...</string> <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> -- cgit v1.2.3 From d9dfa9b8707b3bf68d7c5cd03a6ca738be7f891f Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 14:31:22 -0500 Subject: SH-1777 Fix for "Prim" physics shape type not showing up on meshes with convex decompositions. --- indra/newview/llmeshrepository.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 29904c579c..3545b5128a 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2716,7 +2716,18 @@ void LLMeshRepository::buildHull(const LLVolumeParams& params, S32 detail) bool LLMeshRepository::hasPhysicsShape(const LLUUID& mesh_id) { LLSD mesh = mThread->getMeshHeader(mesh_id); - return mesh.has("physics_mesh") && mesh["physics_mesh"].has("size") && (mesh["physics_mesh"]["size"].asInteger() > 0); + if (mesh.has("physics_mesh") && mesh["physics_mesh"].has("size") && (mesh["physics_mesh"]["size"].asInteger() > 0)) + { + return true; + } + + LLModel::Decomposition* decomp = getDecomposition(mesh_id); + if (decomp && !decomp->mHull.empty()) + { + return true; + } + + return false; } LLSD& LLMeshRepository::getMeshHeader(const LLUUID& mesh_id) -- cgit v1.2.3 From 7d49f7af5843ae812617dd979fc61ad8ec0cd3c4 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 15:31:10 -0500 Subject: SH-1785 Fix for hud attachments not rendering properly with indexed texture rendering. --- indra/newview/llviewerdisplay.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 5dadd2c33b..f725f0fe86 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -996,8 +996,7 @@ void render_hud_attachments() S32 use_occlusion = LLPipeline::sUseOcclusion; LLPipeline::sUseOcclusion = 0; - LLPipeline::sDisableShaders = TRUE; - + //cull, sort, and render hud objects static LLCullResult result; LLSpatialGroup::sNoDelete = TRUE; @@ -1037,7 +1036,6 @@ void render_hud_attachments() gPipeline.toggleRenderDebugFeature((void*) LLPipeline::RENDER_DEBUG_FEATURE_UI); } LLPipeline::sUseOcclusion = use_occlusion; - LLPipeline::sDisableShaders = FALSE; } glMatrixMode(GL_PROJECTION); glPopMatrix(); -- cgit v1.2.3 From e1e75360b7fd006893072d6665e98fd43744ef56 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 13:46:41 -0700 Subject: sync with viewer-development --- .../skins/default/xui/fr/floater_postcard.xml | 72 +++++----- .../default/xui/pt/floater_preview_gesture.xml | 148 ++++++++++----------- 2 files changed, 110 insertions(+), 110 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml index 948a3b973d..e65dfb09b4 100644 --- a/indra/newview/skins/default/xui/fr/floater_postcard.xml +++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml @@ -1,36 +1,36 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="ENVOYER LA PHOTO PAR E-MAIL"> - <text name="to_label"> - E-mail du destinataire : - </text> - <text name="from_label"> - Votre e-mail : - </text> - <text name="name_label"> - Votre nom : - </text> - <text name="subject_label"> - Objet : - </text> - <line_editor label="Saisir ici votre objet" name="subject_form"/> - <text name="msg_label"> - Message : - </text> - <text_editor name="msg_form"> - Saisir ici votre message - </text_editor> - <text name="fine_print"> - Si le destinataire s'inscrit sur [SECOND_LIFE], vous recevrez un bonus. - </text> - <button label="Annuler" name="cancel_btn"/> - <button label="Envoyer" name="send_btn"/> - <string name="default_subject"> - Carte postale de [SECOND_LIFE]. - </string> - <string name="default_message"> - Ouvrez-moi ! - </string> - <string name="upload_message"> - Envoi en cours... - </string> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="ENVOYER LA PHOTO PAR E-MAIL"> + <text name="to_label"> + E-mail du destinataire : + </text> + <text name="from_label"> + Votre e-mail : + </text> + <text name="name_label"> + Votre nom : + </text> + <text name="subject_label"> + Objet : + </text> + <line_editor label="Saisir ici votre objet" name="subject_form"/> + <text name="msg_label"> + Message : + </text> + <text_editor name="msg_form"> + Saisir ici votre message + </text_editor> + <text name="fine_print"> + Si le destinataire s'inscrit sur [SECOND_LIFE], vous recevrez un bonus. + </text> + <button label="Annuler" name="cancel_btn"/> + <button label="Envoyer" name="send_btn"/> + <string name="default_subject"> + Carte postale de [SECOND_LIFE]. + </string> + <string name="default_message"> + Ouvrez-moi ! + </string> + <string name="upload_message"> + Envoi en cours... + </string> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml index b134dfeefa..089694608b 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml @@ -1,74 +1,74 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gesture_preview"> - <floater.string name="step_anim"> - Executar animação: - </floater.string> - <floater.string name="step_sound"> - Executar som: - </floater.string> - <floater.string name="step_chat"> - Executar bate-papo: - </floater.string> - <floater.string name="step_wait"> - Pausa - </floater.string> - <floater.string name="stop_txt"> - Parar - </floater.string> - <floater.string name="preview_txt"> - Prévia - </floater.string> - <floater.string name="none_text"> - -- Nenhum -- - </floater.string> - <floater.string name="Title"> - Gesto: [NAME] - </floater.string> - <text name="desc_label"> - Descrição: - </text> - <text name="trigger_label"> - Gatilho: - </text> - <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"> - Trocar por: - </text> - <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"/> - <text name="key_label"> - Atalho: - </text> - <combo_box label="Nenhum" name="modifier_combo" width="68"/> - <combo_box label="Nenhum" name="key_combo" width="48"/> - <text name="library_label"> - Biblioteca: - </text> - <scroll_list name="library_list"> - <scroll_list.rows name="action_animation" value="Animação"/> - <scroll_list.rows name="action_sound" value="Som"/> - <scroll_list.rows name="action_chat" value="Bate-papo"/> - <scroll_list.rows name="action_wait" value="Espere"/> - </scroll_list> - <button label="Incluir" name="add_btn"/> - <text name="steps_label"> - Passos: - </text> - <button label="P/ cima" name="up_btn" /> - <button label="P/ baixo" name="down_btn"/> - <button label="Remover" name="delete_btn"/> - <text name="options_text"> - (opções) - </text> - <radio_group name="animation_trigger_type"> - <radio_item label="Iniciar" name="start"/> - <radio_item label="Parar" name="stop"/> - </radio_group> - <check_box label="até que as animações estejam concluídas" name="wait_anim_check"/> - <check_box label="segundos:" name="wait_time_check"/> - <line_editor name="wait_time_editor"/> - <text name="help_label"> - Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo. - </text> - <check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> - <button label="Prévia" name="preview_btn"/> - <button label="Salvar" name="save_btn"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="gesture_preview"> + <floater.string name="step_anim"> + Executar animação: + </floater.string> + <floater.string name="step_sound"> + Executar som: + </floater.string> + <floater.string name="step_chat"> + Executar bate-papo: + </floater.string> + <floater.string name="step_wait"> + Pausa + </floater.string> + <floater.string name="stop_txt"> + Parar + </floater.string> + <floater.string name="preview_txt"> + Prévia + </floater.string> + <floater.string name="none_text"> + -- Nenhum -- + </floater.string> + <floater.string name="Title"> + Gesto: [NAME] + </floater.string> + <text name="desc_label"> + Descrição: + </text> + <text name="trigger_label"> + Gatilho: + </text> + <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"> + Trocar por: + </text> + <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituído por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"/> + <text name="key_label"> + Atalho: + </text> + <combo_box label="Nenhum" name="modifier_combo" width="68"/> + <combo_box label="Nenhum" name="key_combo" width="48"/> + <text name="library_label"> + Biblioteca: + </text> + <scroll_list name="library_list"> + <scroll_list.rows name="action_animation" value="Animação"/> + <scroll_list.rows name="action_sound" value="Som"/> + <scroll_list.rows name="action_chat" value="Bate-papo"/> + <scroll_list.rows name="action_wait" value="Espere"/> + </scroll_list> + <button label="Incluir" name="add_btn"/> + <text name="steps_label"> + Passos: + </text> + <button label="P/ cima" name="up_btn" /> + <button label="P/ baixo" name="down_btn"/> + <button label="Remover" name="delete_btn"/> + <text name="options_text"> + (opções) + </text> + <radio_group name="animation_trigger_type"> + <radio_item label="Iniciar" name="start"/> + <radio_item label="Parar" name="stop"/> + </radio_group> + <check_box label="até que as animações estejam concluídas" name="wait_anim_check"/> + <check_box label="segundos:" name="wait_time_check"/> + <line_editor name="wait_time_editor"/> + <text name="help_label"> + Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo. + </text> + <check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> + <button label="Prévia" name="preview_btn"/> + <button label="Salvar" name="save_btn"/> +</floater> -- cgit v1.2.3 From bceb65bb37c22f5f31947834f7b427a2cadd216e Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 13:52:54 -0700 Subject: WIP INTL-46 Traditional Chinese translation update --- indra/newview/skins/default/xui/zh/floater_aaa.xml | 4 +- .../newview/skins/default/xui/zh/floater_about.xml | 2 +- .../skins/default/xui/zh/floater_about_land.xml | 30 +-- .../default/xui/zh/floater_animation_preview.xml | 2 +- .../default/xui/zh/floater_avatar_textures.xml | 4 +- .../skins/default/xui/zh/floater_bulk_perms.xml | 12 +- .../skins/default/xui/zh/floater_buy_contents.xml | 2 +- .../skins/default/xui/zh/floater_buy_land.xml | 2 +- .../skins/default/xui/zh/floater_choose_group.xml | 4 +- .../skins/default/xui/zh/floater_color_picker.xml | 10 +- .../default/xui/zh/floater_day_cycle_options.xml | 4 +- .../skins/default/xui/zh/floater_gesture.xml | 4 +- .../skins/default/xui/zh/floater_god_tools.xml | 8 +- .../default/xui/zh/floater_hardware_settings.xml | 2 +- .../skins/default/xui/zh/floater_help_browser.xml | 2 +- indra/newview/skins/default/xui/zh/floater_hud.xml | 2 +- .../skins/default/xui/zh/floater_im_container.xml | 2 +- .../skins/default/xui/zh/floater_image_preview.xml | 4 +- .../skins/default/xui/zh/floater_incoming_call.xml | 6 +- .../skins/default/xui/zh/floater_inspect.xml | 4 +- .../skins/default/xui/zh/floater_inventory.xml | 4 +- .../xui/zh/floater_inventory_item_properties.xml | 8 +- .../xui/zh/floater_inventory_view_finder.xml | 10 +- .../skins/default/xui/zh/floater_joystick.xml | 4 +- .../skins/default/xui/zh/floater_lagmeter.xml | 52 ++-- .../skins/default/xui/zh/floater_land_holdings.xml | 4 +- .../skins/default/xui/zh/floater_moveview.xml | 20 +- .../skins/default/xui/zh/floater_notification.xml | 4 +- .../xui/zh/floater_notifications_console.xml | 6 +- .../skins/default/xui/zh/floater_openobject.xml | 4 +- .../default/xui/zh/floater_outfit_save_as.xml | 5 +- .../skins/default/xui/zh/floater_outgoing_call.xml | 2 +- .../default/xui/zh/floater_preview_gesture.xml | 4 +- .../default/xui/zh/floater_preview_notecard.xml | 2 +- .../default/xui/zh/floater_preview_texture.xml | 6 +- .../skins/default/xui/zh/floater_report_abuse.xml | 26 +- .../skins/default/xui/zh/floater_sell_land.xml | 8 +- .../skins/default/xui/zh/floater_snapshot.xml | 18 +- .../newview/skins/default/xui/zh/floater_stats.xml | 4 +- .../skins/default/xui/zh/floater_texture_ctrl.xml | 4 +- .../newview/skins/default/xui/zh/floater_tools.xml | 18 +- .../default/xui/zh/floater_voice_controls.xml | 2 +- .../newview/skins/default/xui/zh/floater_water.xml | 6 +- .../default/xui/zh/floater_windlight_options.xml | 2 +- .../skins/default/xui/zh/floater_window_size.xml | 10 +- .../skins/default/xui/zh/floater_world_map.xml | 20 +- .../skins/default/xui/zh/inspect_avatar.xml | 2 +- .../newview/skins/default/xui/zh/inspect_group.xml | 4 +- .../skins/default/xui/zh/menu_attachment_other.xml | 14 +- .../skins/default/xui/zh/menu_attachment_self.xml | 16 +- .../skins/default/xui/zh/menu_avatar_icon.xml | 4 +- .../skins/default/xui/zh/menu_avatar_other.xml | 10 +- .../skins/default/xui/zh/menu_avatar_self.xml | 18 +- .../newview/skins/default/xui/zh/menu_cof_gear.xml | 4 +- indra/newview/skins/default/xui/zh/menu_edit.xml | 4 +- .../skins/default/xui/zh/menu_favorites.xml | 6 +- .../skins/default/xui/zh/menu_gesture_gear.xml | 2 +- .../skins/default/xui/zh/menu_imchiclet_group.xml | 2 +- .../skins/default/xui/zh/menu_imchiclet_p2p.xml | 2 +- .../default/xui/zh/menu_inspect_avatar_gear.xml | 12 +- .../default/xui/zh/menu_inspect_object_gear.xml | 2 +- .../default/xui/zh/menu_inspect_self_gear.xml | 18 +- .../skins/default/xui/zh/menu_inventory.xml | 18 +- .../skins/default/xui/zh/menu_inventory_add.xml | 2 +- .../default/xui/zh/menu_inventory_gear_default.xml | 4 +- .../newview/skins/default/xui/zh/menu_landmark.xml | 2 +- indra/newview/skins/default/xui/zh/menu_login.xml | 12 +- indra/newview/skins/default/xui/zh/menu_navbar.xml | 2 +- .../skins/default/xui/zh/menu_nearby_chat.xml | 2 +- indra/newview/skins/default/xui/zh/menu_object.xml | 4 +- .../skins/default/xui/zh/menu_object_icon.xml | 2 +- .../skins/default/xui/zh/menu_outfit_gear.xml | 16 +- .../skins/default/xui/zh/menu_outfit_tab.xml | 12 +- .../skins/default/xui/zh/menu_participant_list.xml | 4 +- .../skins/default/xui/zh/menu_people_groups.xml | 2 +- .../xui/zh/menu_people_groups_view_sort.xml | 2 +- .../skins/default/xui/zh/menu_people_nearby.xml | 4 +- .../xui/zh/menu_people_nearby_multiselect.xml | 2 +- .../xui/zh/menu_people_recent_view_sort.xml | 4 +- indra/newview/skins/default/xui/zh/menu_picks.xml | 2 +- indra/newview/skins/default/xui/zh/menu_place.xml | 2 +- .../skins/default/xui/zh/menu_place_add_button.xml | 2 +- .../default/xui/zh/menu_places_gear_folder.xml | 4 +- .../default/xui/zh/menu_places_gear_landmark.xml | 12 +- .../skins/default/xui/zh/menu_profile_overflow.xml | 2 +- indra/newview/skins/default/xui/zh/menu_slurl.xml | 4 +- .../default/xui/zh/menu_teleport_history_gear.xml | 2 +- .../default/xui/zh/menu_teleport_history_item.xml | 2 +- .../skins/default/xui/zh/menu_topinfobar.xml | 2 +- .../skins/default/xui/zh/menu_url_agent.xml | 2 +- .../skins/default/xui/zh/menu_url_group.xml | 6 +- .../skins/default/xui/zh/menu_url_inventory.xml | 6 +- .../newview/skins/default/xui/zh/menu_url_map.xml | 4 +- .../skins/default/xui/zh/menu_url_objectim.xml | 6 +- .../skins/default/xui/zh/menu_url_parcel.xml | 2 +- .../skins/default/xui/zh/menu_url_slapp.xml | 2 +- .../skins/default/xui/zh/menu_url_slurl.xml | 6 +- .../skins/default/xui/zh/menu_url_teleport.xml | 4 +- indra/newview/skins/default/xui/zh/menu_viewer.xml | 74 +++--- .../default/xui/zh/menu_wearable_list_item.xml | 4 +- .../skins/default/xui/zh/menu_wearing_gear.xml | 2 +- .../skins/default/xui/zh/menu_wearing_tab.xml | 2 +- indra/newview/skins/default/xui/zh/mime_types.xml | 24 +- .../skins/default/xui/zh/mime_types_linux.xml | 24 +- .../skins/default/xui/zh/mime_types_mac.xml | 24 +- .../newview/skins/default/xui/zh/notifications.xml | 116 ++++----- .../default/xui/zh/panel_active_object_row.xml | 2 +- .../default/xui/zh/panel_adhoc_control_panel.xml | 4 +- .../default/xui/zh/panel_avatar_list_item.xml | 10 +- .../default/xui/zh/panel_block_list_sidetray.xml | 2 +- .../skins/default/xui/zh/panel_bottomtray.xml | 2 +- .../skins/default/xui/zh/panel_classified_info.xml | 4 +- .../default/xui/zh/panel_clothing_list_item.xml | 4 +- .../skins/default/xui/zh/panel_cof_wearables.xml | 4 +- .../xui/zh/panel_deletable_wearable_list_item.xml | 2 +- .../xui/zh/panel_dummy_clothing_list_item.xml | 2 +- .../skins/default/xui/zh/panel_edit_gloves.xml | 2 +- .../skins/default/xui/zh/panel_edit_hair.xml | 2 +- .../skins/default/xui/zh/panel_edit_jacket.xml | 4 +- .../skins/default/xui/zh/panel_edit_pants.xml | 2 +- .../skins/default/xui/zh/panel_edit_profile.xml | 10 +- .../skins/default/xui/zh/panel_edit_shirt.xml | 2 +- .../skins/default/xui/zh/panel_edit_shoes.xml | 2 +- .../skins/default/xui/zh/panel_edit_skirt.xml | 2 +- .../skins/default/xui/zh/panel_edit_socks.xml | 2 +- .../skins/default/xui/zh/panel_edit_underpants.xml | 2 +- .../skins/default/xui/zh/panel_edit_undershirt.xml | 2 +- .../skins/default/xui/zh/panel_edit_wearable.xml | 2 +- .../default/xui/zh/panel_group_control_panel.xml | 2 +- .../skins/default/xui/zh/panel_group_general.xml | 4 +- .../default/xui/zh/panel_group_info_sidetray.xml | 2 +- .../skins/default/xui/zh/panel_group_invite.xml | 2 +- .../default/xui/zh/panel_group_land_money.xml | 2 +- .../skins/default/xui/zh/panel_group_list_item.xml | 2 +- .../skins/default/xui/zh/panel_group_notices.xml | 2 +- .../skins/default/xui/zh/panel_group_roles.xml | 2 +- .../default/xui/zh/panel_im_control_panel.xml | 10 +- .../skins/default/xui/zh/panel_landmark_info.xml | 12 +- .../skins/default/xui/zh/panel_landmarks.xml | 8 +- .../skins/default/xui/zh/panel_main_inventory.xml | 16 +- indra/newview/skins/default/xui/zh/panel_me.xml | 4 +- .../xui/zh/panel_media_settings_general.xml | 2 +- .../xui/zh/panel_media_settings_permissions.xml | 2 +- .../skins/default/xui/zh/panel_my_profile.xml | 4 +- .../skins/default/xui/zh/panel_navigation_bar.xml | 8 +- indra/newview/skins/default/xui/zh/panel_notes.xml | 12 +- .../default/xui/zh/panel_online_status_toast.xml | 2 +- .../skins/default/xui/zh/panel_outfit_edit.xml | 22 +- .../default/xui/zh/panel_outfits_inventory.xml | 4 +- .../zh/panel_outfits_inventory_gear_default.xml | 8 +- .../skins/default/xui/zh/panel_outfits_list.xml | 4 +- .../newview/skins/default/xui/zh/panel_people.xml | 28 +- .../skins/default/xui/zh/panel_pick_info.xml | 2 +- indra/newview/skins/default/xui/zh/panel_picks.xml | 2 +- .../skins/default/xui/zh/panel_place_profile.xml | 14 +- .../newview/skins/default/xui/zh/panel_places.xml | 16 +- .../default/xui/zh/panel_preferences_chat.xml | 4 +- .../default/xui/zh/panel_preferences_colors.xml | 2 +- .../default/xui/zh/panel_preferences_general.xml | 2 +- .../default/xui/zh/panel_preferences_graphics1.xml | 4 +- .../default/xui/zh/panel_preferences_move.xml | 2 +- .../default/xui/zh/panel_preferences_privacy.xml | 10 +- .../newview/skins/default/xui/zh/panel_profile.xml | 12 +- .../skins/default/xui/zh/panel_profile_view.xml | 2 +- .../skins/default/xui/zh/panel_region_debug.xml | 2 +- .../skins/default/xui/zh/panel_region_estate.xml | 8 +- .../skins/default/xui/zh/panel_region_general.xml | 8 +- .../skins/default/xui/zh/panel_region_texture.xml | 4 +- .../skins/default/xui/zh/panel_script_ed.xml | 16 +- .../xui/zh/panel_script_limits_my_avatar.xml | 6 +- .../xui/zh/panel_script_limits_region_memory.xml | 2 +- .../skins/default/xui/zh/panel_side_tray.xml | 10 +- .../default/xui/zh/panel_side_tray_tab_caption.xml | 6 +- .../default/xui/zh/panel_stand_stop_flying.xml | 4 +- .../skins/default/xui/zh/panel_status_bar.xml | 6 +- .../default/xui/zh/panel_teleport_history.xml | 6 +- .../newview/skins/default/xui/zh/role_actions.xml | 2 +- .../skins/default/xui/zh/sidepanel_appearance.xml | 14 +- .../skins/default/xui/zh/sidepanel_inventory.xml | 6 +- .../skins/default/xui/zh/sidepanel_item_info.xml | 16 +- .../skins/default/xui/zh/sidepanel_task_info.xml | 8 +- indra/newview/skins/default/xui/zh/strings.xml | 286 ++++++++++----------- .../skins/default/xui/zh/teleport_strings.xml | 16 +- 183 files changed, 825 insertions(+), 826 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/zh/floater_aaa.xml b/indra/newview/skins/default/xui/zh/floater_aaa.xml index c62fc8b5d1..0d110c0456 100644 --- a/indra/newview/skins/default/xui/zh/floater_aaa.xml +++ b/indra/newview/skins/default/xui/zh/floater_aaa.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Test Floater" title="TEST FLOATER"> +<floater name="Test Floater" title="測試浮動視窗"> <string name="test_the_vlt"> This string CHANGE2 is extracted. </string> <string name="testing_eli"> - Just a test. changes. + 這只是測試 - 變更。 </string> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml index 825fe13e92..229297e39b 100644 --- a/indra/newview/skins/default/xui/zh/floater_about.xml +++ b/indra/newview/skins/default/xui/zh/floater_about.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="ABOUT [CAPITALIZED_APP_NAME]"> +<floater name="floater_about" title="關於 [CAPITALIZED_APP_NAME]"> <floater.string name="AboutHeader"> [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml index 4e5c4f96f0..c0c5494c91 100644 --- a/indra/newview/skins/default/xui/zh/floater_about_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml @@ -42,10 +42,10 @@ You must approve your purchase to modify this land. </panel.string> <panel.string name="group_owned_text"> - (Group Owned) + (社團所擁有) </panel.string> <panel.string name="profile_text"> - Profile + 檔案 </panel.string> <panel.string name="info_text"> 資訊 @@ -87,7 +87,7 @@ 擁有者: </text> <text name="Group:"> - Group: + 社團: </text> <button label="設定" name="Set..."/> <check_box label="Allow Deed to Group" name="check deed" tool_tip="A group officer can deed this land to the group, so it will be supported by the group's land allocation."/> @@ -274,7 +274,7 @@ <name_list.columns label="Most Recent" name="mostrecent"/> </name_list> </panel> - <panel label="OPTIONS" name="land_options_panel"> + <panel label="選項" name="land_options_panel"> <panel.string name="search_enabled_tooltip"> Let people see this parcel in search results </panel.string> @@ -310,22 +310,22 @@ Only large parcels can be listed in search. Allow other Residents to: </text> <check_box label="Edit Terrain" name="edit land check" tool_tip="If checked, anyone can terraform your land. It is best to leave this unchecked, as you can always edit your own land."/> - <check_box label="Fly" name="check fly" tool_tip="If checked, Residents can fly on your land. If unchecked, they can only fly into and over your land."/> + <check_box label="飛行" name="check fly" tool_tip="If checked, Residents can fly on your land. If unchecked, they can only fly into and over your land."/> <text name="allow_label2"> - Build: + 建造: </text> <check_box label="Everyone" name="edit objects check"/> - <check_box label="Group" name="edit group objects check"/> + <check_box label="社團" name="edit group objects check"/> <text name="allow_label3"> Object Entry: </text> <check_box label="Everyone" name="all object entry check"/> - <check_box label="Group" name="group object entry check"/> + <check_box label="社團" name="group object entry check"/> <text name="allow_label4"> Run Scripts: </text> <check_box label="Everyone" name="check other scripts"/> - <check_box label="Group" name="check group scripts"/> + <check_box label="社團" name="check group scripts"/> <text name="land_options_label"> Land Options: </text> @@ -374,7 +374,7 @@ Only large parcels can be listed in search. <button label="設定" label_selected="設定" name="Set" tool_tip="Sets the landing point where visitors arrive. Sets to your avatar's location inside this parcel."/> <button label="清除" label_selected="清除" name="Clear" tool_tip="清除登陸點"/> <text name="Teleport Routing: "> - Teleport Routing: + 瞬間傳送路徑: </text> <combo_box name="landing type" tool_tip="Teleport Routing -- select how to handle teleports onto your land"> <combo_box.item label="Blocked" name="Blocked"/> @@ -388,7 +388,7 @@ Only large parcels can be listed in search. </text> <combo_box name="media type" tool_tip="Specify if the URL is a movie, web page, or other media"/> <text name="at URL:"> - Home Page: + 首頁: </text> <button label="設定" name="set_media_url"/> <text name="Description:"> @@ -396,15 +396,15 @@ Only large parcels can be listed in search. </text> <line_editor name="url_description" tool_tip="Text displayed next to play/load button"/> <text name="Media texture:"> - Replace Texture: + 取代材質: </text> <texture_picker name="media texture" tool_tip="點擊以挑選圖片"/> <text name="replace_texture_help"> Objects using this texture will show the movie or web page after you click the play arrow. Select the thumbnail to choose a different texture. </text> - <check_box label="Auto scale" name="media_auto_scale" tool_tip="Checking this option will scale the content for this parcel automatically. It may be slightly slower and lower quality visually but no other texture scaling or alignment will be required."/> + <check_box label="自動縮放" name="media_auto_scale" tool_tip="Checking this option will scale the content for this parcel automatically. It may be slightly slower and lower quality visually but no other texture scaling or alignment will be required."/> <text name="media_size" tool_tip="Size to render Web media, leave 0 for default."> - Size: + 尺寸: </text> <spinner name="media_size_width" tool_tip="Size to render Web media, leave 0 for default."/> <spinner name="media_size_height" tool_tip="Size to render Web media, leave 0 for default."/> @@ -453,7 +453,7 @@ Only large parcels can be listed in search. <check_box label="Sell passes to:" name="PassCheck" tool_tip="Allows temporary access to this parcel"/> <combo_box name="pass_combo"> <combo_box.item label="Anyone" name="Anyone"/> - <combo_box.item label="Group" name="Group"/> + <combo_box.item label="社團" name="Group"/> </combo_box> <spinner label="Price in L$:" name="PriceSpin"/> <spinner label="Hours of access:" name="HoursSpin"/> diff --git a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml index 0f1feaa843..bcb5606b60 100644 --- a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml @@ -169,7 +169,7 @@ Maximum animation length is [MAX_LENGTH] seconds. <item label="Standing" name="Standing" value="Standing"/> <item label="Walking" name="Walking" value="Walking"/> <item label="Sitting" name="Sitting" value="Sitting"/> - <item label="Flying" name="Flying" value="Flying"/> + <item label="飛行" name="Flying" value="飛行"/> </combo_box> <spinner label="淡入(秒)" name="ease_in_time" tool_tip="Amount of time (in seconds) over which animations blends in"/> <spinner label="淡出(秒)" name="ease_out_time" tool_tip="Amount of time (in seconds) over which animations blends out"/> diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml index f895fa2e9d..fb17c0bb8a 100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatar_texture_debug" title="AVATAR TEXTURES"> +<floater name="avatar_texture_debug" title="化身材質"> <floater.string name="InvalidAvatar"> INVALID AVATAR </floater.string> @@ -23,7 +23,7 @@ Textures <texture_picker label="Head Alpha" name="head_alpha"/> <texture_picker label="Head Tattoo" name="head_tattoo"/> <texture_picker label="眼睛" name="eyes-baked"/> - <texture_picker label="Eye" name="eyes_iris"/> + <texture_picker label="眼睛" name="eyes_iris"/> <texture_picker label="Eyes Alpha" name="eyes_alpha"/> <texture_picker label="Upper Body" name="upper-baked"/> <texture_picker label="Upper BodyPaint" name="upper_bodypaint"/> 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 98fa6804ba..ffdd957f91 100644 --- a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml @@ -13,21 +13,21 @@ Finished permission change requests. </floater.string> <icon name="icon_animation" tool_tip="Animation"/> - <icon name="icon_bodypart" tool_tip="Body Parts"/> - <icon name="icon_clothing" tool_tip="Clothing"/> - <icon name="icon_gesture" tool_tip="Gestures"/> + <icon name="icon_bodypart" tool_tip="身體部位"/> + <icon name="icon_clothing" tool_tip="服裝"/> + <icon name="icon_gesture" tool_tip="姿勢"/> <icon name="icon_notecard" tool_tip="Notecards"/> <icon name="icon_object" tool_tip="Objects"/> <icon name="icon_script" tool_tip="Scripts"/> <icon name="icon_sound" tool_tip="Sounds"/> - <icon name="icon_texture" tool_tip="Textures"/> - <button label="√ All" name="check_all"/> + <icon name="icon_texture" tool_tip="材質"/> + <button label="√ 全部" name="check_all"/> <button label="清除" label_selected="無" name="check_none"/> <text name="newperms"> New Content Permissions </text> <text name="GroupLabel"> - Group: + 社團: </text> <check_box label="分享" name="share_with_group"/> <text name="AnyoneLabel"> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml index de3c0aa075..a00f069e6c 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml @@ -15,7 +15,7 @@ <text name="buy_text"> Buy for L$[AMOUNT] from [NAME]? </text> - <check_box label="Wear clothing now" name="wear_check"/> + <check_box label="立即穿上服裝" name="wear_check"/> <button label="購買" label_selected="購買" name="buy_btn"/> <button label="取銷" label_selected="取銷" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/indra/newview/skins/default/xui/zh/floater_buy_land.xml index d665a16639..a75d33136d 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_land.xml @@ -171,7 +171,7 @@ supports [AMOUNT2] objects Scotopteryx 138,204 </text> <text name="info_size_label"> - Size: + 尺寸: </text> <text name="info_size"> 1024 m² diff --git a/indra/newview/skins/default/xui/zh/floater_choose_group.xml b/indra/newview/skins/default/xui/zh/floater_choose_group.xml index ec67f8d4fa..dea0a7c318 100644 --- a/indra/newview/skins/default/xui/zh/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/zh/floater_choose_group.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="groups" title="GROUPS"> +<floater name="groups" title="社團"> <text name="groupdesc"> - Choose a group: + 選擇一個社團: </text> <button label="確定" label_selected="確定" name="OK"/> <button label="取銷" label_selected="取銷" name="Cancel"/> diff --git a/indra/newview/skins/default/xui/zh/floater_color_picker.xml b/indra/newview/skins/default/xui/zh/floater_color_picker.xml index df9c780cbf..f6f2f0187d 100644 --- a/indra/newview/skins/default/xui/zh/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/zh/floater_color_picker.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="COLOR PICKER"> +<floater name="ColorPicker" title="顏色挑選器"> <text name="r_val_text"> - Red: + 紅色: </text> <text name="g_val_text"> - Green: + 綠色: </text> <text name="b_val_text"> - Blue: + 藍色: </text> <text name="h_val_text"> Hue: @@ -22,7 +22,7 @@ <button label="確定" label_selected="確定" name="select_btn"/> <button label="取銷" label_selected="取銷" name="cancel_btn"/> <text name="Current color:"> - Current color: + 目前顏色: </text> <text name="(Drag below to save.)"> (Drag below to save) diff --git a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml index c6ab787625..8adc094fca 100644 --- a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Day Cycle Floater" title="DAY CYCLE EDITOR"> +<floater name="Day Cycle Floater" title="日循環編輯器"> <tab_container name="Day Cycle Tabs"> - <panel label="Day Cycle" name="Day Cycle"> + <panel label="日循環" name="Day Cycle"> <multi_slider initial_value="0" name="WLTimeSlider"/> <multi_slider initial_value="0" name="WLDayCycleKeys"/> <text name="WL12am"> diff --git a/indra/newview/skins/default/xui/zh/floater_gesture.xml b/indra/newview/skins/default/xui/zh/floater_gesture.xml index 22e7451d13..901770586a 100644 --- a/indra/newview/skins/default/xui/zh/floater_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_gesture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Places" name="gestures" title="GESTURES"> +<floater label="Places" name="gestures" title="姿勢"> <floater.string name="loading"> 載入中... </floater.string> @@ -15,7 +15,7 @@ <scroll_list.columns label="Key" name="shortcut"/> </scroll_list> <panel label="bottom_panel" name="bottom_panel"> - <menu_button name="gear_btn" tool_tip="More options"/> + <menu_button name="gear_btn" tool_tip="更多選項"/> <button name="new_gesture_btn" tool_tip="Make new gesture"/> <button name="activate_btn" tool_tip="Activate/Deactivate selected gesture"/> <button name="del_btn" tool_tip="Delete this gesture"/> diff --git a/indra/newview/skins/default/xui/zh/floater_god_tools.xml b/indra/newview/skins/default/xui/zh/floater_god_tools.xml index b01d346a64..a501a4257a 100644 --- a/indra/newview/skins/default/xui/zh/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_god_tools.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="godtools floater" title="GOD TOOLS"> <tab_container name="GodTools Tabs"> - <panel label="Grid" name="grid"> + <panel label="網格" name="grid"> <button label="Flush This Region's Map Visibility Caches" label_selected="Flush This Region's Map Visibility Caches" name="Flush This Region's Map Visibility Caches"/> </panel> <panel label="地區" name="region"> @@ -27,7 +27,7 @@ </text> <line_editor name="parentestate" tool_tip="This is the parent estate for this region"/> <text name="Grid Pos: "> - Grid Pos: + 網格位置: </text> <line_editor name="gridposx" tool_tip="This is the grid x position for this region"/> <line_editor name="gridposy" tool_tip="This is the grid y position for this region"/> @@ -43,9 +43,9 @@ <button label="Refresh" label_selected="Refresh" name="Refresh" tool_tip="Click here to refresh the above information"/> <button label="套用" label_selected="套用" name="Apply" tool_tip="Click here to apply any changes from above"/> <button label="選擇地區" label_selected="選擇地區" name="Select Region" tool_tip="Select the whole region with the land tool"/> - <button label="Autosave now" label_selected="Autosave now" name="Autosave now" tool_tip="Save gzipped state to autosave directory"/> + <button label="立即自動儲存" label_selected="立即自動儲存" name="Autosave now" tool_tip="Save gzipped state to autosave directory"/> </panel> - <panel label="Objects" name="objects"> + <panel label="物件" name="objects"> <panel.string name="no_target"> (no target) </panel.string> diff --git a/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml b/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml index 75403a79dd..1465dcb256 100644 --- a/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/zh/floater_hardware_settings.xml @@ -25,7 +25,7 @@ Enable VBO: </text> <check_box initial_value="true" label="Enable OpenGL Vertex Buffer Objects" name="vbo" tool_tip="Enabling this on modern hardware gives a performance gain. However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled."/> - <slider label="Texture Memory (MB):" name="GraphicsCardTextureMemory" tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry."/> + <slider label="材質記憶體(MB):" name="GraphicsCardTextureMemory" tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry."/> <spinner label="Fog Distance Ratio:" name="fog"/> <button label="確定" label_selected="確定" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_help_browser.xml b/indra/newview/skins/default/xui/zh/floater_help_browser.xml index 957c37bd63..e605d5f19c 100644 --- a/indra/newview/skins/default/xui/zh/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/zh/floater_help_browser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_help_browser" title="HELP BROWSER"> +<floater name="floater_help_browser" title="幫助瀏覽器"> <floater.string name="loading_text"> 載入中... </floater.string> diff --git a/indra/newview/skins/default/xui/zh/floater_hud.xml b/indra/newview/skins/default/xui/zh/floater_hud.xml index e458913452..a788961e95 100644 --- a/indra/newview/skins/default/xui/zh/floater_hud.xml +++ b/indra/newview/skins/default/xui/zh/floater_hud.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_hud" title="TUTORIAL"/> +<floater name="floater_hud" title="教學"/> diff --git a/indra/newview/skins/default/xui/zh/floater_im_container.xml b/indra/newview/skins/default/xui/zh/floater_im_container.xml index 5ea073365e..2d66c659fe 100644 --- a/indra/newview/skins/default/xui/zh/floater_im_container.xml +++ b/indra/newview/skins/default/xui/zh/floater_im_container.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="floater_im_box" title="CONVERSATIONS"/> +<multi_floater name="floater_im_box" title="交談"/> diff --git a/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/indra/newview/skins/default/xui/zh/floater_image_preview.xml index 92d5c3df73..98e4e5c2cd 100644 --- a/indra/newview/skins/default/xui/zh/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_image_preview.xml @@ -9,7 +9,7 @@ <text name="preview_label"> Preview image as: </text> - <combo_box label="Clothing Type" name="clothing_type_combo"> + <combo_box label="服裝類型" name="clothing_type_combo"> <item label="Image" name="Image" value="Image"/> <item label="Hair" name="Hair" value="Hair"/> <item label="Female Head" name="FemaleHead" value="Female Head"/> @@ -28,5 +28,5 @@ Try saving image as 24 bit Targa (.tga). </text> <check_box label="Use lossless compression" name="lossless_check"/> <button label="取銷" name="cancel_btn"/> - <button label="Upload (L$[AMOUNT])" name="ok_btn"/> + <button label="上傳(L$[AMOUNT])" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml index 9ca08c06b1..4f678dbd9d 100644 --- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="incoming call" title="Incoming call"> +<floater name="incoming call" title="來電"> <floater.string name="lifetime"> 5 </floater.string> @@ -10,7 +10,7 @@ anonymous </floater.string> <floater.string name="VoiceInviteP2P"> - is calling. + 通話中。 </floater.string> <floater.string name="VoiceInviteAdHoc"> has joined a Voice Chat call with a conference chat. @@ -29,5 +29,5 @@ </text> <button label="接受" label_selected="接受" name="Accept"/> <button label="Reject" label_selected="Reject" name="Reject"/> - <button label="Start IM" name="Start IM"/> + <button label="開始 IM" name="Start IM"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_inspect.xml b/indra/newview/skins/default/xui/zh/floater_inspect.xml index 7f23bba37a..295538f797 100644 --- a/indra/newview/skins/default/xui/zh/floater_inspect.xml +++ b/indra/newview/skins/default/xui/zh/floater_inspect.xml @@ -9,6 +9,6 @@ <scroll_list.columns label="Creator Name" name="creator_name"/> <scroll_list.columns label="Creation Date" name="creation_date"/> </scroll_list> - <button label="See Owner Profile..." name="button owner" tool_tip="See profile of the highlighted object's owner"/> - <button label="See Creator Profile..." name="button creator" tool_tip="See profile of the highlighted object's original creator"/> + <button label="察看擁有者檔案..." name="button owner" tool_tip="See profile of the highlighted object's owner"/> + <button label="察看創造者檔案..." name="button creator" tool_tip="See profile of the highlighted object's original creator"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_inventory.xml b/indra/newview/skins/default/xui/zh/floater_inventory.xml index 93cd681126..da4619c964 100644 --- a/indra/newview/skins/default/xui/zh/floater_inventory.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory" title="MY INVENTORY"> - <panel label="Inventory Panel" name="Inventory Panel"/> +<floater name="Inventory" title="我的收納區"> + <panel label="收納區面板" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml index 4fac10df81..fcd702b16d 100644 --- a/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="INVENTORY ITEM PROPERTIES"> +<floater name="item properties" title="收納區物品屬性"> <floater.string name="unknown"> (未知) </floater.string> @@ -24,11 +24,11 @@ <text name="LabelCreatorTitle"> 創造者: </text> - <button label="Profile..." name="BtnCreator"/> + <button label="檔案..." name="BtnCreator"/> <text name="LabelOwnerTitle"> 擁有者: </text> - <button label="Profile..." name="BtnOwner"/> + <button label="檔案..." name="BtnOwner"/> <text name="LabelAcquiredTitle"> Acquired: </text> @@ -46,7 +46,7 @@ </text> <check_box label="覆製" name="CheckEveryoneCopy"/> <text name="GroupLabel"> - Group: + 社團: </text> <check_box label="分享" name="CheckShareWithGroup"/> <text name="NextOwnerLabel"> diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml index 41ea8dc593..a442eb9cbc 100644 --- a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS"> +<floater name="Inventory Finder" title="最近_收納區_物品"> <check_box label="Animation" name="check_animation"/> <check_box label="Calling Cards" name="check_calling_card"/> - <check_box label="Clothing" name="check_clothing"/> - <check_box label="Gestures" name="check_gesture"/> - <check_box label="Landmarks" name="check_landmark"/> + <check_box label="服裝" name="check_clothing"/> + <check_box label="姿勢" name="check_gesture"/> + <check_box label="地標" name="check_landmark"/> <check_box label="Notecards" name="check_notecard"/> <check_box label="Objects" name="check_object"/> <check_box label="Scripts" name="check_script"/> <check_box label="Sounds" name="check_sound"/> - <check_box label="Textures" name="check_texture"/> + <check_box label="材質" name="check_texture"/> <check_box label="Snapshots" name="check_snapshot"/> <button label="全部" label_selected="全部" name="All"/> <button label="無" label_selected="無" name="None"/> diff --git a/indra/newview/skins/default/xui/zh/floater_joystick.xml b/indra/newview/skins/default/xui/zh/floater_joystick.xml index 91f2bc6d81..83bd4e2bca 100644 --- a/indra/newview/skins/default/xui/zh/floater_joystick.xml +++ b/indra/newview/skins/default/xui/zh/floater_joystick.xml @@ -17,8 +17,8 @@ <text name="Control Modes:"> Control Modes: </text> - <check_box label="Avatar" name="JoystickAvatarEnabled"/> - <check_box label="Build" name="JoystickBuildEnabled"/> + <check_box label="化身" name="JoystickAvatarEnabled"/> + <check_box label="建造" name="JoystickBuildEnabled"/> <check_box label="Flycam" name="JoystickFlycamEnabled"/> <stat_view label="Joystick Monitor" name="axis_view"> <stat_bar label="Axis 0" name="axis0"/> diff --git a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml index 4ff6c45b17..261ba8ebc3 100644 --- a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="LAG METER"> +<floater name="floater_lagmeter" title="LAG 測量器"> <floater.string name="max_title_msg"> - Lag Meter + Lag 測量器 </floater.string> <floater.string name="max_width_px"> 360 @@ -13,7 +13,7 @@ 90 </floater.string> <floater.string name="client_text_msg"> - Client + 客戶端 </floater.string> <floater.string name="client_frame_rate_critical_fps"> 10 @@ -31,7 +31,7 @@ Client frame rate between [CLIENT_FRAME_RATE_CRITICAL] and [CLIENT_FRAME_RATE_WARNING] </floater.string> <floater.string name="client_frame_time_normal_msg"> - Normal + 正常 </floater.string> <floater.string name="client_draw_distance_cause_msg"> Possible cause: Draw distance set too high @@ -46,7 +46,7 @@ Possible cause: Too many complex objects in scene </floater.string> <floater.string name="network_text_msg"> - Network + 網路 </floater.string> <floater.string name="network_packet_loss_critical_pct"> 10 @@ -61,7 +61,7 @@ Connection is dropping [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% of packets </floater.string> <floater.string name="network_performance_normal_msg"> - Normal + 正常 </floater.string> <floater.string name="network_ping_critical_ms"> 600 @@ -82,7 +82,7 @@ Possible bad connection or file-sharing app. </floater.string> <floater.string name="server_text_msg"> - Server + 伺服器 </floater.string> <floater.string name="server_frame_rate_critical_fps"> 20 @@ -94,31 +94,31 @@ 20 </floater.string> <floater.string name="server_frame_time_critical_msg"> - Simulator framerate below [SERVER_FRAME_RATE_CRITICAL] + 模擬器 framerate 低於 [SERVER_FRAME_RATE_CRITICAL] </floater.string> <floater.string name="server_frame_time_warning_msg"> - Simulator framerate between [SERVER_FRAME_RATE_CRITICAL] and [SERVER_FRAME_RATE_WARNING] + 模擬器 framerate 介於 [SERVER_FRAME_RATE_CRITICAL] 與 [SERVER_FRAME_RATE_WARNING] 之間 </floater.string> <floater.string name="server_frame_time_normal_msg"> - Normal + 正常 </floater.string> <floater.string name="server_physics_cause_msg"> - Possible Cause: Too many physical objects + 可能原因:太多物理物件 </floater.string> <floater.string name="server_scripts_cause_msg"> - Possible Cause: Too many scripted objects + 可能原因:太多腳本物件 </floater.string> <floater.string name="server_net_cause_msg"> - Possible Cause: Too much network traffic + 可能原因:太多網路流量 </floater.string> <floater.string name="server_agent_cause_msg"> - Possible Cause: Too many moving people in region + 可能原因:地區有太多移動的人 </floater.string> <floater.string name="server_images_cause_msg"> - Possible Cause: Too many image calculations + 可能原因:太多影像計算 </floater.string> <floater.string name="server_generic_cause_msg"> - Possible Cause: Simulator load too heavy + 可能原因:模擬器負載過重 </floater.string> <floater.string name="smaller_label"> >> @@ -126,26 +126,26 @@ <floater.string name="bigger_label"> << </floater.string> - <button name="client_lagmeter" tool_tip="Client lag status"/> + <button name="client_lagmeter" tool_tip="客戶端 lag 狀態"/> <text name="client"> - Client + 客戶端 </text> <text name="client_text"> - Normal + 正常 </text> - <button name="network_lagmeter" tool_tip="Network lag status"/> + <button name="network_lagmeter" tool_tip="網路 lag 狀態"/> <text name="network"> - Network + 網路 </text> <text name="network_text"> - Normal + 正常 </text> - <button name="server_lagmeter" tool_tip="Server lag status"/> + <button name="server_lagmeter" tool_tip="伺服器 lag 狀態"/> <text name="server"> - Server + 伺服器 </text> <text name="server_text"> - Normal + 正常 </text> - <button label=">>" name="minimize" tool_tip="Toggle floater size"/> + <button label=">>" name="minimize" tool_tip="切換浮動視窗尺寸"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_land_holdings.xml b/indra/newview/skins/default/xui/zh/floater_land_holdings.xml index de551f8c96..3d9d391a21 100644 --- a/indra/newview/skins/default/xui/zh/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/zh/floater_land_holdings.xml @@ -9,13 +9,13 @@ <scroll_list.columns label="Type" name="type"/> <scroll_list.columns label="Area" name="area"/> </scroll_list> - <button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport to the center of this land."/> + <button label="瞬間傳送" label_selected="瞬間傳送" name="Teleport" tool_tip="Teleport to the center of this land."/> <button label="地圖" label_selected="地圖" name="Show on Map" tool_tip="Show this land on the world map"/> <text name="contrib_label"> Contributions to your groups: </text> <scroll_list name="grant list"> - <scroll_list.columns label="Group" name="group"/> + <scroll_list.columns label="社團" name="group"/> <scroll_list.columns label="Area" name="area"/> </scroll_list> <text name="allowed_label"> diff --git a/indra/newview/skins/default/xui/zh/floater_moveview.xml b/indra/newview/skins/default/xui/zh/floater_moveview.xml index 1866592d84..3e44f458e7 100644 --- a/indra/newview/skins/default/xui/zh/floater_moveview.xml +++ b/indra/newview/skins/default/xui/zh/floater_moveview.xml @@ -25,22 +25,22 @@ Run right (press Shift + Right Arrow or D) </string> <string name="fly_forward_tooltip"> - Fly Forward (press Up Arrow or W) + 向前飛(按下向上箭頭或 W 鍵) </string> <string name="fly_back_tooltip"> - Fly Backwards (press Down Arrow or S) + 向後飛(按下向下箭頭或 S 鍵) </string> <string name="fly_left_tooltip"> - Fly left (press Shift + Left Arrow or A) + 向左飛(按下 Shift 加上左方向鍵或者是按 A 鍵) </string> <string name="fly_right_tooltip"> - Fly right (press Shift + Right Arrow or D) + 向右飛(按下 Shift 加上右方向鍵或者是按 D 鍵) </string> <string name="fly_up_tooltip"> - Fly up (press E) + 向上飛(按下 E 鍵) </string> <string name="fly_down_tooltip"> - Fly down (press C) + 向下飛(按下 C 鍵) </string> <string name="jump_tooltip"> Jump (press E) @@ -55,7 +55,7 @@ Run </string> <string name="fly_title"> - Fly + 飛行 </string> <panel name="panel_actions"> <button name="turn left btn" tool_tip="Turn left (press Left Arrow or A)"/> @@ -64,12 +64,12 @@ <joystick_slide name="move right btn" tool_tip="Walk right (press Shift + Right Arrow or D)"/> <joystick_turn name="forward btn" tool_tip="Walk forward (press up arrow or W)"/> <joystick_turn name="backward btn" tool_tip="Walk backward (press down arrow or S)"/> - <button name="move up btn" tool_tip="Fly up (press E)"/> - <button name="move down btn" tool_tip="Fly down (press C)"/> + <button name="move up btn" tool_tip="向上飛(按下 E 鍵)"/> + <button name="move down btn" tool_tip="向下飛(按下 C 建)"/> </panel> <panel name="panel_modes"> <button label="" name="mode_walk_btn" tool_tip="Walking mode"/> <button label="" name="mode_run_btn" tool_tip="Running mode"/> - <button label="" name="mode_fly_btn" tool_tip="Flying mode"/> + <button label="" name="mode_fly_btn" tool_tip="飛行模式"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_notification.xml b/indra/newview/skins/default/xui/zh/floater_notification.xml index 65102216d2..1e0e207fb0 100644 --- a/indra/newview/skins/default/xui/zh/floater_notification.xml +++ b/indra/newview/skins/default/xui/zh/floater_notification.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification" title="NOTIFICATIONS CONSOLE"> +<floater name="notification" title="通知控制台"> <text_editor name="payload"> 載入中... </text_editor> - <combo_box label="Response" name="response"/> + <combo_box label="回應" name="response"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_notifications_console.xml b/indra/newview/skins/default/xui/zh/floater_notifications_console.xml index 4e92aa69e0..3478761b0b 100644 --- a/indra/newview/skins/default/xui/zh/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/zh/floater_notifications_console.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notifications_console" title="NOTIFICATIONS CONSOLE"> - <combo_box label="Select notification type" name="notification_types"/> - <button label="Add" name="add_notification"/> +<floater name="notifications_console" title="通知控制台"> + <combo_box label="選擇通知類型" name="notification_types"/> + <button label="添加" name="add_notification"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_openobject.xml b/indra/newview/skins/default/xui/zh/floater_openobject.xml index 0739e01833..024ef0b102 100644 --- a/indra/newview/skins/default/xui/zh/floater_openobject.xml +++ b/indra/newview/skins/default/xui/zh/floater_openobject.xml @@ -3,6 +3,6 @@ <text name="object_name"> [DESC]: </text> - <button label="Copy To Inventory" label_selected="Copy To Inventory" name="copy_to_inventory_button"/> - <button label="Copy And Wear" label_selected="Copy And Wear" name="copy_and_wear_button"/> + <button label="覆製到收納區" label_selected="覆製到收納區" name="copy_to_inventory_button"/> + <button label="覆製且穿上" label_selected="覆製且穿上" name="copy_and_wear_button"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml index 63c9d6c950..feb68f2b0f 100644 --- a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml @@ -1,10 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Save Outfit"> +<floater name="modal container" title="儲存裝扮"> <button label="儲存" label_selected="儲存" name="Save"/> <button label="取銷" label_selected="取銷" name="Cancel"/> <text name="Save item as:"> - Save what I'm wearing -as a new Outfit: + 儲存我正在穿的為新裝扮: </text> <line_editor name="name ed"> [DESC] (new) diff --git a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml index a871f821e3..0cc7bbcfe0 100644 --- a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml @@ -10,7 +10,7 @@ anonymous </floater.string> <floater.string name="VoiceInviteP2P"> - is calling. + 通話中。 </floater.string> <floater.string name="VoiceInviteAdHoc"> has joined a Voice Chat call with a conference chat. diff --git a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml index fe64f75777..52e6a9d8e4 100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml @@ -54,9 +54,9 @@ </text> <button label="Up" name="up_btn"/> <button label="Down" name="down_btn"/> - <button label="Remove" name="delete_btn"/> + <button label="移除" name="delete_btn"/> <text name="options_text"> - (options) + (選項) </text> <radio_group name="animation_trigger_type"> <radio_item label="Start" name="start"/> diff --git a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml index a3eaa559e0..08d56be302 100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="NOTECARD:"> +<floater name="preview notecard" title="記事卡:"> <floater.string name="no_object"> Unable to find object containing this notecard. </floater.string> diff --git a/indra/newview/skins/default/xui/zh/floater_preview_texture.xml b/indra/newview/skins/default/xui/zh/floater_preview_texture.xml index 53fb7ef2f1..02e26cea24 100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_texture.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_texture"> <floater.string name="Title"> - Texture: [NAME] + 材質:[NAME] </floater.string> <floater.string name="Copy"> - Copy To Inventory + 覆製到收納區 </floater.string> <text name="desc txt"> 描述: @@ -22,7 +22,7 @@ <combo_item name="1:1" tool_tip="Group insignia or Real World profile"> 1:1 </combo_item> - <combo_item name="4:3" tool_tip="[SECOND_LIFE] profile"> + <combo_item name="4:3" tool_tip="[SECOND_LIFE] 檔案"> 4:3 </combo_item> <combo_item name="10:7" tool_tip="Classifieds and search listings, landmarks"> diff --git a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml index c745051c8b..da89cd80ad 100644 --- a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_report_abuse" title="REPORT ABUSE"> +<floater name="floater_report_abuse" title="舉報濫用"> <floater.string name="Screenshot"> - Screenshot + 快照 </floater.string> - <check_box label="Use this screenshot" name="screen_check"/> + <check_box label="使用這張快照" name="screen_check"/> <text name="reporter_title"> - Reporter: + 舉報者: </text> <text name="sim_title"> 地區: @@ -24,13 +24,13 @@ </text> <button name="pick_btn" tool_tip="Object Picker - Identify an object as the subject of this report"/> <text name="object_name_label"> - Object: + 物件: </text> <text name="owner_name_label"> 擁有者: </text> <combo_box name="category_combo" tool_tip="Category -- select the category that best describes this report"> - <combo_box.item label="Select category" name="Select_category"/> + <combo_box.item label="選擇類別" name="Select_category"/> <combo_box.item label="Age > Age play" name="Age__Age_play"/> <combo_box.item label="Age > Adult Resident on Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> <combo_box.item label="Age > Underage Resident outside of Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> @@ -68,20 +68,20 @@ <combo_box.item label="Land > Encroachment > Particles" name="Land__Encroachment__Particles"/> <combo_box.item label="Land > Encroachment > Trees/plants" name="Land__Encroachment__Trees_plants"/> <combo_box.item label="Wagering/gambling" name="Wagering_gambling"/> - <combo_box.item label="Other" name="Other"/> + <combo_box.item label="其他" name="Other"/> </combo_box> <text name="abuser_name_title"> - Abuser name: + 濫用者名稱: </text> - <button label="Choose" name="select_abuser" tool_tip="Select the name of the abuser from a list"/> + <button label="選擇" name="select_abuser" tool_tip="Select the name of the abuser from a list"/> <text name="abuser_name_title2"> - Location of Abuse: + 濫用位置: </text> <text name="sum_title"> - Summary: + 摘要: </text> <text name="dscr_title"> - Details: + 細節: </text> <text name="bug_aviso"> Please be as specific as possible @@ -89,6 +89,6 @@ <text name="incomplete_title"> * Incomplete reports won't be investigated </text> - <button label="Report Abuse" label_selected="Report Abuse" name="send_btn"/> + <button label="舉報濫用" label_selected="舉報濫用" name="send_btn"/> <button label="取銷" label_selected="取銷" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_sell_land.xml b/indra/newview/skins/default/xui/zh/floater_sell_land.xml index 12d4ed606d..2d3f5066bc 100644 --- a/indra/newview/skins/default/xui/zh/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_sell_land.xml @@ -9,7 +9,7 @@ 地段名稱 </text> <text name="info_size_label"> - Size: + 尺寸: </text> <text name="info_size"> [AREA] m² @@ -39,11 +39,11 @@ Choose whether to sell to anyone or a particular buyer. </text> <combo_box name="sell_to"> - <combo_box.item label="- Select one -" name="--selectone--"/> + <combo_box.item label="- 選擇一個 -" name="--selectone--"/> <combo_box.item label="任何人" name="Anyone"/> <combo_box.item label="Specific person:" name="Specificuser:"/> </combo_box> - <button label="Select" name="sell_to_select_agent"/> + <button label="選擇" name="sell_to_select_agent"/> <text name="sell_objects_label"> 3. Sell the objects with the land? </text> @@ -54,7 +54,7 @@ <radio_item label="No, keep ownership of objects" name="no"/> <radio_item label="Yes, sell objects with land" name="yes"/> </radio_group> - <button label="Show Objects" name="show_objects"/> + <button label="顯示物件" name="show_objects"/> <text name="nag_message_label"> REMEMBER: All sales are final. </text> diff --git a/indra/newview/skins/default/xui/zh/floater_snapshot.xml b/indra/newview/skins/default/xui/zh/floater_snapshot.xml index 80b9d69a79..b4216cf5b2 100644 --- a/indra/newview/skins/default/xui/zh/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/zh/floater_snapshot.xml @@ -5,7 +5,7 @@ </floater.string> <radio_group label="Snapshot type" name="snapshot_type_radio"> <radio_item label="Email" name="postcard"/> - <radio_item label="My inventory (L$[AMOUNT])" name="texture"/> + <radio_item label="我的收納區(L$[AMOUNT])" name="texture"/> <radio_item label="Save to my computer" name="local"/> </radio_group> <text name="file_size_label"> @@ -17,31 +17,31 @@ <flyout_button.item label="儲存" name="save_item"/> <flyout_button.item label="另存..." name="saveas_item"/> </flyout_button> - <button label="More" name="more_btn" tool_tip="Advanced options"/> - <button label="Less" name="less_btn" tool_tip="Advanced options"/> + <button label="更多" name="more_btn" tool_tip="進階選項"/> + <button label="更少" name="less_btn" tool_tip="進階選項"/> <button label="取銷" name="discard_btn"/> <text name="type_label2"> - Size + 尺寸 </text> <text name="format_label"> Format </text> <combo_box label="Resolution" name="postcard_size_combo"> - <combo_box.item label="Current Window" name="CurrentWindow"/> + <combo_box.item label="目前視窗" name="CurrentWindow"/> <combo_box.item label="640x480" name="640x480"/> <combo_box.item label="800x600" name="800x600"/> <combo_box.item label="1024x768" name="1024x768"/> - <combo_box.item label="Custom" name="Custom"/> + <combo_box.item label="自訂" name="Custom"/> </combo_box> <combo_box label="Resolution" name="texture_size_combo"> - <combo_box.item label="Current Window" name="CurrentWindow"/> + <combo_box.item label="目前視窗" name="CurrentWindow"/> <combo_box.item label="Small (128x128)" name="Small(128x128)"/> <combo_box.item label="Medium (256x256)" name="Medium(256x256)"/> <combo_box.item label="Large (512x512)" name="Large(512x512)"/> - <combo_box.item label="Custom" name="Custom"/> + <combo_box.item label="自訂" name="Custom"/> </combo_box> <combo_box label="Resolution" name="local_size_combo"> - <combo_box.item label="Current Window" name="CurrentWindow"/> + <combo_box.item label="目前視窗" name="CurrentWindow"/> <combo_box.item label="320x240" name="320x240"/> <combo_box.item label="640x480" name="640x480"/> <combo_box.item label="800x600" name="800x600"/> diff --git a/indra/newview/skins/default/xui/zh/floater_stats.xml b/indra/newview/skins/default/xui/zh/floater_stats.xml index 6b6276e88f..54c5ba5cc0 100644 --- a/indra/newview/skins/default/xui/zh/floater_stats.xml +++ b/indra/newview/skins/default/xui/zh/floater_stats.xml @@ -15,7 +15,7 @@ <stat_bar label="Total Objects" name="objs"/> <stat_bar label="New Objects" name="newobjs"/> </stat_view> - <stat_view label="Texture" name="texture"> + <stat_view label="材質" name="texture"> <stat_bar label="Count" name="numimagesstat"/> <stat_bar label="Raw Count" name="numrawimagesstat"/> <stat_bar label="GL Mem" name="gltexmemstat"/> @@ -27,7 +27,7 @@ <stat_bar label="Packets In" name="packetsinstat"/> <stat_bar label="Packets Out" name="packetsoutstat"/> <stat_bar label="Objects" name="objectkbitstat"/> - <stat_bar label="Texture" name="texturekbitstat"/> + <stat_bar label="材質" name="texturekbitstat"/> <stat_bar label="Asset" name="assetkbitstat"/> <stat_bar label="Layers" name="layerskbitstat"/> <stat_bar label="Actual In" name="actualinkbitstat"/> diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml index 4c6dffea76..aaf6ecd7cf 100644 --- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml @@ -10,13 +10,13 @@ Multiple textures </text> <text name="unknown"> - Size: [DIMENSIONS] + 尺寸:[DIMENSIONS] </text> <button label="預設" label_selected="預設" name="Default"/> <button label="無" label_selected="無" name="None"/> <button label="Blank" label_selected="Blank" name="Blank"/> <check_box initial_value="true" label="立即套用" name="apply_immediate_check"/> - <filter_editor label="Filter Textures" name="inventory search editor"/> + <filter_editor label="材質過濾器" name="inventory search editor"/> <check_box initial_value="false" label="顯示資料夾" name="show_folders_check"/> <button label="確定" label_selected="確定" name="Select"/> <button label="取銷" label_selected="取銷" name="Cancel"/> diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml index b0d3d69230..feee659736 100644 --- a/indra/newview/skins/default/xui/zh/floater_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_tools.xml @@ -73,7 +73,7 @@ <text label="Stretch Both Sides" name="checkbox uniform label"> Stretch Both Sides </text> - <check_box initial_value="true" label="Stretch Textures" name="checkbox stretch textures"/> + <check_box initial_value="true" label="伸展材質" name="checkbox stretch textures"/> <check_box initial_value="true" label="貼齊格線" name="checkbox snap to grid"/> <combo_box name="combobox grid mode" tool_tip="Choose the type of grid ruler for positioning the object"> <combo_box.item label="World grid" name="World"/> @@ -113,7 +113,7 @@ Bulldozer: </text> <text name="Dozer Size:"> - Size + 尺寸 </text> <slider_bar initial_value="2.0" name="slider brush size"/> <text name="Strength:"> @@ -178,7 +178,7 @@ 擁有者: </text> <text name="Group:"> - Group: + 社團: </text> <name_box initial_value="載入中..." name="Group Name Proxy"/> <button name="button set group" tool_tip="Choose a group to share this object's permissions"/> @@ -250,7 +250,7 @@ <spinner label="Y" name="Pos Y"/> <spinner label="Z" name="Pos Z"/> <text name="label size"> - Size (meters) + 尺寸(公尺) </text> <spinner label="X" name="Scale X"/> <spinner label="Y" name="Scale Y"/> @@ -309,7 +309,7 @@ Taper </text> <text name="scale_hole"> - Hole Size + 洞尺寸 </text> <spinner label="X" name="Taper Scale X"/> <spinner label="Y" name="Taper Scale Y"/> @@ -380,14 +380,14 @@ <spinner label="Falloff" name="Light Falloff"/> <spinner label="Ambiance" name="Light Ambiance"/> </panel> - <panel label="Texture" name="Texture"> + <panel label="材質" name="Texture"> <panel.string name="string repeats per meter"> Repeats Per Meter </panel.string> <panel.string name="string repeats per face"> Repeats Per Face </panel.string> - <texture_picker label="Texture" name="texture control" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="texture control" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color" name="colorswatch" tool_tip="Click to open color picker"/> <text name="color trans"> Transparency % @@ -447,7 +447,7 @@ <spinner label="Repeats / Meter" name="rptctrl"/> <button label="套用" label_selected="套用" name="button apply"/> <text name="tex offset"> - Texture Offset + 材質位移 </text> <spinner label="Horizontal (U)" name="TexOffsetU"/> <spinner label="Vertical (V)" name="TexOffsetV"/> @@ -456,7 +456,7 @@ Media </text> <button name="add_media" tool_tip="Add Media"/> - <button name="delete_media" tool_tip="Delete this media texture"/> + <button name="delete_media" tool_tip="刪除這個媒體材質"/> <button name="edit_media" tool_tip="Edit this Media"/> <button label="Align" label_selected="Align Media" name="button align" tool_tip="Align media texture (must load first)"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml index d4a76555cb..4d650eaaee 100644 --- a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml @@ -17,7 +17,7 @@ </string> <layout_stack name="my_call_stack"> <layout_panel name="my_panel"> - <text name="user_text" value="My Avatar:"/> + <text name="user_text" value="我的化身:"/> </layout_panel> <layout_panel name="leave_call_panel"> <layout_stack name="voice_effect_and_leave_call_stack"> diff --git a/indra/newview/skins/default/xui/zh/floater_water.xml b/indra/newview/skins/default/xui/zh/floater_water.xml index 2e0fcd13a8..8e790f8dad 100644 --- a/indra/newview/skins/default/xui/zh/floater_water.xml +++ b/indra/newview/skins/default/xui/zh/floater_water.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Water Floater" title="ADVANCED WATER EDITOR"> +<floater name="Water Floater" title="進階水文編輯器"> <floater.string name="WLDefaultWaterNames"> Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez </floater.string> <text name="KeyFramePresetsText"> Water Presets: </text> - <button label="New" label_selected="New" name="WaterNewPreset"/> + <button label="新增" label_selected="新增" name="WaterNewPreset"/> <button label="儲存" label_selected="儲存" name="WaterSavePreset"/> <button label="刪除" label_selected="刪除" name="WaterDeletePreset"/> <tab_container name="Water Tabs"> @@ -63,7 +63,7 @@ Y </text> <text name="BHText3"> - Normal Map + 正常地圖 </text> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/zh/floater_windlight_options.xml b/indra/newview/skins/default/xui/zh/floater_windlight_options.xml index 2b202a9e6c..d292386323 100644 --- a/indra/newview/skins/default/xui/zh/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/zh/floater_windlight_options.xml @@ -99,7 +99,7 @@ Sun Glow </text> <slider label="Focus" name="WLGlowB"/> - <slider label="Size" name="WLGlowR"/> + <slider label="尺寸" name="WLGlowR"/> <text name="SceneGammaText"> Scene Gamma </text> diff --git a/indra/newview/skins/default/xui/zh/floater_window_size.xml b/indra/newview/skins/default/xui/zh/floater_window_size.xml index 34b969c2dc..167d4cb858 100644 --- a/indra/newview/skins/default/xui/zh/floater_window_size.xml +++ b/indra/newview/skins/default/xui/zh/floater_window_size.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="window_size" title="WINDOW SIZE"> +<floater name="window_size" title="視窗尺寸大小"> <string name="resolution_format"> [RES_X] x [RES_Y] </string> <text name="windowsize_text"> - Set window size: + 設定視窗尺寸大小: </text> <combo_box name="window_size_combo" tool_tip="width x height"> - <combo_box.item label="1000 x 700 (default)" name="item0"/> + <combo_box.item label="1000 x 700 (預設)" name="item0"/> <combo_box.item label="1024 x 768" name="item1"/> - <combo_box.item label="1280 x 720 (720p)" name="item2"/> - <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> + <combo_box.item label="1280 x 720 (720p)" name="item2"/> + <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> </combo_box> <button label="設定" name="set_btn"/> <button label="取銷" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/zh/floater_world_map.xml b/indra/newview/skins/default/xui/zh/floater_world_map.xml index e149285ab2..47038e3b3d 100644 --- a/indra/newview/skins/default/xui/zh/floater_world_map.xml +++ b/indra/newview/skins/default/xui/zh/floater_world_map.xml @@ -25,9 +25,9 @@ <text name="by_owner_label"> by owner </text> - <button name="Go Home" tool_tip="Teleport to my home location"/> + <button name="Go Home" tool_tip="瞬間傳送到我的家位置"/> <text name="Home_label"> - Home + 家 </text> <text name="events_label"> Events: @@ -45,24 +45,24 @@ </panel> <panel name="layout_panel_3"> <text name="find_on_map_label"> - Find on Map + 在地圖上發現 </text> </panel> <panel name="layout_panel_4"> - <combo_box label="Online Friends" name="friend combo" tool_tip="Show friends on map"> - <combo_box.item label="My Friends Online" name="item1"/> + <combo_box label="線上的朋友" name="friend combo" tool_tip="顯示朋友在地圖上"> + <combo_box.item label="我線上的朋友" name="item1"/> </combo_box> - <combo_box label="My Landmarks" name="landmark combo" tool_tip="Landmark to show on map"> - <combo_box.item label="My Landmarks" name="item1"/> + <combo_box label="我的地標" name="landmark combo" tool_tip="將地標位置顯示在地圖上"> + <combo_box.item label="我的地標" name="item1"/> </combo_box> - <search_editor label="Regions by Name" name="location" tool_tip="Type the name of a region"/> + <search_editor label="Regions by Name" name="location" tool_tip="輸入一個地區的名稱"/> <button label="Find" name="DoSearch" tool_tip="Search for region"/> <button name="Clear" tool_tip="Clear tracking lines and reset map"/> <text name="events_label"> 位置: </text> - <button label="Teleport" name="Teleport" tool_tip="Teleport to selected location"/> - <button label="Copy SLurl" name="copy_slurl" tool_tip="Copies current location as SLurl to be used on the web."/> + <button label="瞬間傳送" name="Teleport" tool_tip="瞬間傳送到所選的位置"/> + <button label="覆製 SLurl" name="copy_slurl" tool_tip="Copies current location as SLurl to be used on the web."/> <button label="Show Selection" name="Show Destination" tool_tip="Center map on selected location"/> </panel> <panel name="layout_panel_5"> diff --git a/indra/newview/skins/default/xui/zh/inspect_avatar.xml b/indra/newview/skins/default/xui/zh/inspect_avatar.xml index df450937fd..02e81983a6 100644 --- a/indra/newview/skins/default/xui/zh/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/zh/inspect_avatar.xml @@ -17,7 +17,7 @@ <slider name="volume_slider" tool_tip="Voice volume" value="0.5"/> <button label="加為朋友" name="add_friend_btn"/> <button label="IM" name="im_btn"/> - <button label="Profile" name="view_profile_btn"/> + <button label="檔案" name="view_profile_btn"/> <panel name="moderator_panel"> <button label="Disable Voice" name="disable_voice"/> <button label="Enable Voice" name="enable_voice"/> diff --git a/indra/newview/skins/default/xui/zh/inspect_group.xml b/indra/newview/skins/default/xui/zh/inspect_group.xml index 72e5eade9c..01649496bc 100644 --- a/indra/newview/skins/default/xui/zh/inspect_group.xml +++ b/indra/newview/skins/default/xui/zh/inspect_group.xml @@ -5,7 +5,7 @@ --> <floater name="inspect_group"> <string name="PrivateGroup"> - Private group + 私人社團 </string> <string name="FreeToJoin"> Free to join @@ -28,5 +28,5 @@ Fear the moose! Fear it! And the mongoose too! </text> <button label="Join" name="join_btn"/> <button label="Leave" name="leave_btn"/> - <button label="View Profile" name="view_profile_btn"/> + <button label="察看檔案" name="view_profile_btn"/> </floater> 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 b674ed2763..aa803cc49d 100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml @@ -1,17 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- *NOTE: See also menu_avatar_other.xml --> <context_menu name="Avatar Pie"> - <menu_item_call label="View Profile" name="Profile..."/> + <menu_item_call label="察看檔案" name="Profile..."/> <menu_item_call label="加為朋友" name="Add Friend"/> <menu_item_call label="IM" name="Send IM..."/> - <menu_item_call label="Call" name="Call"/> - <menu_item_call label="Invite to Group" name="Invite..."/> - <menu_item_call label="Block" name="Avatar Mute"/> - <menu_item_call label="Report" name="abuse"/> + <menu_item_call label="通話" name="Call"/> + <menu_item_call label="邀請加入社團" name="Invite..."/> + <menu_item_call label="封鎖" name="Avatar Mute"/> + <menu_item_call label="回報" name="abuse"/> <menu_item_call label="Freeze" name="Freeze..."/> <menu_item_call label="Eject" name="Eject..."/> - <menu_item_call label="Debug Textures" name="Debug..."/> + <menu_item_call label="材質除錯" name="Debug..."/> <menu_item_call label="Zoom In" name="Zoom In"/> <menu_item_call label="Pay" name="Pay..."/> - <menu_item_call label="Object Profile" name="Object Inspect"/> + <menu_item_call label="物件檔案" name="Object Inspect"/> </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 2089f8d58a..e3a791cde5 100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_self.xml @@ -5,12 +5,12 @@ <menu_item_call label="卸下" name="Detach"/> <menu_item_call label="坐下" name="Sit Down Here"/> <menu_item_call label="起立" name="Stand Up"/> - <menu_item_call label="My Appearance" name="Change Outfit"/> - <menu_item_call label="Edit My Outfit" name="Edit Outfit"/> - <menu_item_call label="Edit My Shape" name="Edit My Shape"/> - <menu_item_call label="My Friends" name="Friends..."/> - <menu_item_call label="My Groups" name="Groups..."/> - <menu_item_call label="My Profile" name="Profile..."/> - <menu_item_call label="Debug Textures" name="Debug..."/> - <menu_item_call label="Drop" name="Drop"/> + <menu_item_call label="我的外觀" name="Change Outfit"/> + <menu_item_call label="編輯我的裝扮" name="Edit Outfit"/> + <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="我的朋友" name="Friends..."/> + <menu_item_call label="我的社團" name="Groups..."/> + <menu_item_call label="我的檔案" name="Profile..."/> + <menu_item_call label="材質除錯" name="Debug..."/> + <menu_item_call label="丟棄" name="Drop"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml index cce8fa3ca6..1da583b3d0 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Avatar Icon Menu"> - <menu_item_call label="View Profile" name="Show Profile"/> - <menu_item_call label="Send IM..." name="Send IM"/> + <menu_item_call label="察看檔案" name="Show Profile"/> + <menu_item_call label="送出 IM..." name="Send IM"/> <menu_item_call label="加為朋友..." name="Add Friend"/> <menu_item_call label="Remove Friend..." name="Remove Friend"/> </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 db22646ced..281d357fd3 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- *NOTE: See also menu_attachment_other.xml --> <context_menu name="Avatar Pie"> - <menu_item_call label="View Profile" name="Profile..."/> + <menu_item_call label="察看檔案" name="Profile..."/> <menu_item_call label="加為朋友" name="Add Friend"/> <menu_item_call label="IM" name="Send IM..."/> - <menu_item_call label="Call" name="Call"/> - <menu_item_call label="Invite to Group" name="Invite..."/> + <menu_item_call label="通話" name="Call"/> + <menu_item_call label="邀請加入社團" name="Invite..."/> <menu_item_call label="Block" name="Avatar Mute"/> - <menu_item_call label="Report" name="abuse"/> + <menu_item_call label="回報" name="abuse"/> <menu_item_call label="Freeze" name="Freeze..."/> <menu_item_call label="Eject" name="Eject..."/> - <menu_item_call label="Debug Textures" name="Debug..."/> + <menu_item_call label="材質除錯" name="Debug..."/> <menu_item_call label="Zoom In" name="Zoom In"/> <menu_item_call label="Pay" name="Pay..."/> </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 bccae5b547..646edcf563 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_self.xml @@ -3,7 +3,7 @@ <menu_item_call label="坐下" name="Sit Down Here"/> <menu_item_call label="起立" name="Stand Up"/> <context_menu label="脫下" name="Take Off >"> - <context_menu label="Clothes" name="Clothes >"> + <context_menu label="衣服" name="Clothes >"> <menu_item_call label="襯衫" name="Shirt"/> <menu_item_call label="褲子" name="Pants"/> <menu_item_call label="裙子" name="Skirt"/> @@ -16,17 +16,17 @@ <menu_item_call label="刺青" name="Self Tattoo"/> <menu_item_call label="Physics" name="Self Physics"/> <menu_item_call label="Alpha" name="Self Alpha"/> - <menu_item_call label="All Clothes" name="All Clothes"/> + <menu_item_call label="全部衣服" name="All Clothes"/> </context_menu> <context_menu label="HUD" name="Object Detach HUD"/> <context_menu label="卸下" name="Object Detach"/> <menu_item_call label="全部卸下" name="Detach All"/> </context_menu> - <menu_item_call label="My Appearance" name="Chenge Outfit"/> - <menu_item_call label="Edit My Outfit" name="Edit Outfit"/> - <menu_item_call label="Edit My Shape" name="Edit My Shape"/> - <menu_item_call label="My Friends" name="Friends..."/> - <menu_item_call label="My Groups" name="Groups..."/> - <menu_item_call label="My Profile" name="Profile..."/> - <menu_item_call label="Debug Textures" name="Debug..."/> + <menu_item_call label="我的外觀" name="Chenge Outfit"/> + <menu_item_call label="編輯我裝扮" name="Edit Outfit"/> + <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="我的朋友" name="Friends..."/> + <menu_item_call label="我的社團" name="Groups..."/> + <menu_item_call label="我的檔案" name="Profile..."/> + <menu_item_call label="材質除錯" name="Debug..."/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml index 7314676c6c..cd069f9601 100644 --- a/indra/newview/skins/default/xui/zh/menu_cof_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_cof_gear.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="Gear COF"> - <menu label="New Clothes" name="COF.Gear.New_Clothes"/> - <menu label="New Body Parts" name="COF.Geear.New_Body_Parts"/> + <menu label="新衣服" name="COF.Gear.New_Clothes"/> + <menu label="新身體部位" name="COF.Geear.New_Body_Parts"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_edit.xml b/indra/newview/skins/default/xui/zh/menu_edit.xml index 1e645acc7a..5c5c225c59 100644 --- a/indra/newview/skins/default/xui/zh/menu_edit.xml +++ b/indra/newview/skins/default/xui/zh/menu_edit.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu label="編輯" name="Edit"> <menu_item_call label="復原" name="Undo"/> - <menu_item_call label="Redo" name="Redo"/> + <menu_item_call label="重做" name="Redo"/> <menu_item_call label="剪下" name="Cut"/> <menu_item_call label="覆製" name="Copy"/> <menu_item_call label="貼上" name="Paste"/> <menu_item_call label="刪除" name="Delete"/> <menu_item_call label="覆製貼上" name="Duplicate"/> <menu_item_call label="全選" name="Select All"/> - <menu_item_call label="Deselect" name="Deselect"/> + <menu_item_call label="取銷選擇" name="Deselect"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_favorites.xml b/indra/newview/skins/default/xui/zh/menu_favorites.xml index 042f5c3a93..c60bebd3dc 100644 --- a/indra/newview/skins/default/xui/zh/menu_favorites.xml +++ b/indra/newview/skins/default/xui/zh/menu_favorites.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="Teleport" name="Teleport To Landmark"/> - <menu_item_call label="View/Edit Landmark" name="Landmark Open"/> - <menu_item_call label="Copy SLurl" name="Copy slurl"/> + <menu_item_call label="瞬間傳送" name="Teleport To Landmark"/> + <menu_item_call label="察看 / 編輯 地標" name="Landmark Open"/> + <menu_item_call label="覆製 SLurl" name="Copy slurl"/> <menu_item_call label="顯示在地圖上" name="Show On Map"/> <menu_item_call label="覆製" name="Landmark Copy"/> <menu_item_call label="貼上" name="Landmark Paste"/> diff --git a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml index 488d80bfad..8e30a15562 100644 --- a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml @@ -4,6 +4,6 @@ <menu_item_call label="覆製" name="copy_gesture"/> <menu_item_call label="貼上" name="paste"/> <menu_item_call label="Copy UUID" name="copy_uuid"/> - <menu_item_call label="Save to current outfit" name="save_to_outfit"/> + <menu_item_call label="儲存到目前裝扮" name="save_to_outfit"/> <menu_item_call label="編輯" name="edit_gesture"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml index 7ca805278a..c208a146d2 100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet Group Menu"> - <menu_item_call label="Group Info" name="Show Profile"/> + <menu_item_call label="社團資訊" name="Show Profile"/> <menu_item_call label="Show Session" name="Chat"/> <menu_item_call label="End Session" name="End Session"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml index d9254f7aff..dc933518c0 100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet P2P Menu"> - <menu_item_call label="View Profile" name="Show Profile"/> + <menu_item_call label="察看檔案" name="Show Profile"/> <menu_item_call label="加為朋友" name="Add Friend"/> <menu_item_call label="Show Session" name="Send IM"/> <menu_item_call label="End Session" name="End Session"/> diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml index 2ed6cfad89..6d8fbba503 100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> <toggleable_menu name="Gear Menu"> - <menu_item_call label="View Profile" name="view_profile"/> + <menu_item_call label="察看檔案" name="view_profile"/> <menu_item_call label="加為朋友" name="add_friend"/> <menu_item_call label="IM" name="im"/> - <menu_item_call label="Call" name="call"/> - <menu_item_call label="Teleport" name="teleport"/> + <menu_item_call label="通話" name="call"/> + <menu_item_call label="瞬間傳送" name="teleport"/> <menu_item_call label="Invite to Group" name="invite_to_group"/> <menu_item_call label="Block" name="block"/> <menu_item_call label="Unblock" name="unblock"/> - <menu_item_call label="Report" name="report"/> + <menu_item_call label="回報" name="report"/> <menu_item_call label="Freeze" name="freeze"/> <menu_item_call label="Eject" name="eject"/> - <menu_item_call label="Kick" name="kick"/> + <menu_item_call label="踢除" name="kick"/> <menu_item_call label="CSR" name="csr"/> - <menu_item_call label="Debug Textures" name="debug"/> + <menu_item_call label="材質除錯" name="debug"/> <menu_item_call label="Find On Map" name="find_on_map"/> <menu_item_call label="Zoom In" name="zoom_in"/> <menu_item_call label="Pay" name="pay"/> diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml index 41ea648803..dab95fcadc 100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml @@ -10,7 +10,7 @@ <menu_item_call label="編輯" name="edit"/> <menu_item_call label="Wear" name="wear"/> <menu_item_call label="Add" name="add"/> - <menu_item_call label="Report" name="report"/> + <menu_item_call label="回報" name="report"/> <menu_item_call label="Block" name="block"/> <menu_item_call label="Zoom In" name="zoom_in"/> <menu_item_call label="Remove" name="remove"/> diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml index c88826708e..2d7da70bfc 100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_self_gear.xml @@ -3,7 +3,7 @@ <menu_item_call label="坐下" name="Sit Down Here"/> <menu_item_call label="起立" name="Stand Up"/> <context_menu label="脫下" name="Take Off >"> - <context_menu label="Clothes" name="Clothes >"> + <context_menu label="衣服" name="Clothes >"> <menu_item_call label="襯衫" name="Shirt"/> <menu_item_call label="褲子" name="Pants"/> <menu_item_call label="裙子" name="Skirt"/> @@ -15,17 +15,17 @@ <menu_item_call label="內褲" name="Self Underpants"/> <menu_item_call label="刺青" name="Self Tattoo"/> <menu_item_call label="Alpha" name="Self Alpha"/> - <menu_item_call label="All Clothes" name="All Clothes"/> + <menu_item_call label="全部衣服" name="All Clothes"/> </context_menu> <context_menu label="HUD" name="Object Detach HUD"/> <context_menu label="卸下" name="Object Detach"/> <menu_item_call label="全部卸下" name="Detach All"/> </context_menu> - <menu_item_call label="Change Outfit" name="Chenge Outfit"/> - <menu_item_call label="Edit My Outfit" name="Edit Outfit"/> - <menu_item_call label="Edit My Shape" name="Edit My Shape"/> - <menu_item_call label="My Friends" name="Friends..."/> - <menu_item_call label="My Groups" name="Groups..."/> - <menu_item_call label="My Profile" name="Profile..."/> - <menu_item_call label="Debug Textures" name="Debug..."/> + <menu_item_call label="變更裝扮" name="Chenge Outfit"/> + <menu_item_call label="編輯我的裝扮" name="Edit Outfit"/> + <menu_item_call label="編輯我的體形" name="Edit My Shape"/> + <menu_item_call label="我的朋友" name="Friends..."/> + <menu_item_call label="我的社團" name="Groups..."/> + <menu_item_call label="我的檔案" name="Profile..."/> + <menu_item_call label="材質除錯" name="Debug..."/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml index 086a89fc33..fd8f73e4ea 100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml @@ -13,7 +13,7 @@ <menu_item_call label="New Script" name="New Script"/> <menu_item_call label="New Notecard" name="New Note"/> <menu_item_call label="New Gesture" name="New Gesture"/> - <menu label="New Clothes" name="New Clothes"> + <menu label="新衣服" name="New Clothes"> <menu_item_call label="新襯衫" name="New Shirt"/> <menu_item_call label="新褲子" name="New Pants"/> <menu_item_call label="新鞋子" name="New Shoes"/> @@ -24,10 +24,10 @@ <menu_item_call label="新內衣" name="New Undershirt"/> <menu_item_call label="新內褲" name="New Underpants"/> <menu_item_call label="New Alpha Mask" name="New Alpha Mask"/> - <menu_item_call label="New Tattoo" name="New Tattoo"/> + <menu_item_call label="新刺青" name="New Tattoo"/> <menu_item_call label="New Physics" name="New Physics"/> </menu> - <menu label="New Body Parts" name="New Body Parts"> + <menu label="新身體部位" name="New Body Parts"> <menu_item_call label="New Shape" name="New Shape"/> <menu_item_call label="New Skin" name="New Skin"/> <menu_item_call label="New Hair" name="New Hair"/> @@ -45,12 +45,12 @@ <menu_item_call label="內褲" name="Underpants"/> <menu_item_call label="內衣" name="Undershirt"/> </menu> - <menu_item_call label="Teleport" name="Landmark Open"/> + <menu_item_call label="瞬間傳送" name="Landmark Open"/> <menu_item_call label="Open" name="Animation Open"/> <menu_item_call label="Open" name="Sound Open"/> - <menu_item_call label="Replace Current Outfit" name="Replace Outfit"/> - <menu_item_call label="Add To Current Outfit" name="Add To Outfit"/> - <menu_item_call label="Remove From Current Outfit" name="Remove From Outfit"/> + <menu_item_call label="取代目前的裝扮" name="Replace Outfit"/> + <menu_item_call label="添加到目前裝扮" name="Add To Outfit"/> + <menu_item_call label="由目前的裝扮移除" name="Remove From Outfit"/> <menu_item_call label="Find Original" name="Find Original"/> <menu_item_call label="Purge Item" name="Purge Item"/> <menu_item_call label="Restore Item" name="Restore Item"/> @@ -67,7 +67,7 @@ <menu_item_call label="刪除系統資料夾" name="Delete System Folder"/> <menu_item_call label="Start Conference Chat" name="Conference Chat Folder"/> <menu_item_call label="Play" name="Sound Play"/> - <menu_item_call label="About Landmark" name="About Landmark"/> + <menu_item_call label="添加地標" name="About Landmark"/> <menu_item_call label="Play Inworld" name="Animation Play"/> <menu_item_call label="Play Locally" name="Animation Audition"/> <menu_item_call label="Send Instant Message" name="Send Instant Message"/> @@ -83,5 +83,5 @@ <menu_item_call label="編輯" name="Wearable Edit"/> <menu_item_call label="Add" name="Wearable Add"/> <menu_item_call label="脫下" name="Take Off"/> - <menu_item_call label="--no options--" name="--no options--"/> + <menu_item_call label="-- 無選項 --" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_add.xml b/indra/newview/skins/default/xui/zh/menu_inventory_add.xml index 1cfba8e989..9199608200 100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory_add.xml @@ -25,7 +25,7 @@ <menu_item_call label="新刺青" name="New Tattoo"/> <menu_item_call label="New Physics" name="New Physics"/> </menu> - <menu label="New Body Parts" name="New Body Parts"> + <menu label="新身體部位" name="New Body Parts"> <menu_item_call label="新體形" name="New Shape"/> <menu_item_call label="新皮膚" name="New Skin"/> <menu_item_call label="新頭髮" name="New Hair"/> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml index 8b0fd8c014..8c938222e7 100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_gear_default"> - <menu_item_call label="New Inventory Window" name="new_window"/> + <menu_item_call label="新收納區視窗" name="new_window"/> <menu_item_check label="依名稱排序" name="sort_by_name"/> <menu_item_check label="依最近排序" name="sort_by_recent"/> <menu_item_check label="Sort Folders Always by Name" name="sort_folders_by_name"/> @@ -9,7 +9,7 @@ <menu_item_call label="Reset Filters" name="reset_filters"/> <menu_item_call label="關閉全部資料夾" name="close_folders"/> <menu_item_call label="Empty Lost and Found" name="empty_lostnfound"/> - <menu_item_call label="Save Texture As" name="Save Texture As"/> + <menu_item_call label="儲存材質為" name="Save Texture As"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="Find Original" name="Find Original"/> <menu_item_call label="Find All Links" name="Find All Links"/> diff --git a/indra/newview/skins/default/xui/zh/menu_landmark.xml b/indra/newview/skins/default/xui/zh/menu_landmark.xml index f91b479fb6..97b115151e 100644 --- a/indra/newview/skins/default/xui/zh/menu_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_landmark.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="landmark_overflow_menu"> - <menu_item_call label="Copy SLurl" name="copy"/> + <menu_item_call label="覆製 SLurl" name="copy"/> <menu_item_call label="刪除" name="delete"/> <menu_item_call label="Create Pick" name="pick"/> <menu_item_call label="Add to Favorites Bar" name="add_to_favbar"/> diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index 056c11e69d..436e86cb74 100644 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml @@ -1,20 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> - <menu label="Me" name="File"> + <menu label="自己" name="File"> <menu_item_call label="Preferences" name="Preferences..."/> <menu_item_call label="Exit [APP_NAME]" name="Quit"/> </menu> - <menu label="Help" name="Help"> - <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> - <menu_item_call label="About [APP_NAME]" name="About Second Life"/> + <menu label="幫助" name="Help"> + <menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/> + <menu_item_call label="關於 [APP_NAME]" name="About Second Life"/> </menu> - <menu_item_check label="Show Debug Menu" name="Show Debug Menu"/> + <menu_item_check label="顯示除錯選單" name="Show Debug Menu"/> <menu label="除錯" name="Debug"> <menu_item_call label="Show Debug Settings" name="Debug Settings"/> <menu_item_call label="UI/Color Settings" name="UI/Color Settings"/> <menu_item_call label="XUI Preview Tool" name="UI Preview Tool"/> <menu label="UI Tests" name="UI Tests"/> - <menu_item_call label="Set Window Size..." name="Set Window Size..."/> + <menu_item_call label="設定視窗尺寸大小..." name="Set Window Size..."/> <menu_item_call label="Show TOS" name="TOS"/> <menu_item_call label="Show Critical Message" name="Critical"/> <menu_item_call label="Media Browser Test" name="Web Browser Test"/> diff --git a/indra/newview/skins/default/xui/zh/menu_navbar.xml b/indra/newview/skins/default/xui/zh/menu_navbar.xml index 66b5fbe58d..69df4929f2 100644 --- a/indra/newview/skins/default/xui/zh/menu_navbar.xml +++ b/indra/newview/skins/default/xui/zh/menu_navbar.xml @@ -2,7 +2,7 @@ <menu name="Navbar Menu"> <menu_item_check label="顯示座標" name="Show Coordinates"/> <menu_item_check label="顯示地段屬性" name="Show Parcel Properties"/> - <menu_item_call label="Landmark" name="Landmark"/> + <menu_item_call label="地標" name="Landmark"/> <menu_item_call label="剪下" name="Cut"/> <menu_item_call label="覆製" name="Copy"/> <menu_item_call label="貼上" name="Paste"/> diff --git a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml index 6e525cccd5..7d8997fafe 100644 --- a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml @@ -5,5 +5,5 @@ <menu_item_check label="Show Buddy Icons" name="show_buddy_icons"/> <menu_item_check label="Show Names" name="show_names"/> <menu_item_check label="Show Icons and Names" name="show_icons_and_names"/> - <menu_item_call label="Font Size" name="font_size"/> + <menu_item_call label="字型尺寸" name="font_size"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_object.xml b/indra/newview/skins/default/xui/zh/menu_object.xml index 6107318a0e..869c5f66fe 100644 --- a/indra/newview/skins/default/xui/zh/menu_object.xml +++ b/indra/newview/skins/default/xui/zh/menu_object.xml @@ -6,7 +6,7 @@ <menu_item_call label="Open" name="Open"/> <menu_item_call label="Sit Here" name="Object Sit"/> <menu_item_call label="起立" name="Object Stand Up"/> - <menu_item_call label="Object Profile" name="Object Inspect"/> + <menu_item_call label="物件檔案" name="Object Inspect"/> <menu_item_call label="Zoom In" name="Zoom In"/> <context_menu label="Put On" name="Put On"> <menu_item_call label="Wear" name="Wear"/> @@ -15,7 +15,7 @@ <context_menu label="Attach HUD" name="Object Attach HUD"/> </context_menu> <context_menu label="Manage" name="Remove"> - <menu_item_call label="Report Abuse" name="Report Abuse..."/> + <menu_item_call label="舉報濫用" name="Report Abuse..."/> <menu_item_call label="Block" name="Object Mute"/> <menu_item_call label="Return" name="Return..."/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_object_icon.xml b/indra/newview/skins/default/xui/zh/menu_object_icon.xml index 7cf6289bd1..d27e75b830 100644 --- a/indra/newview/skins/default/xui/zh/menu_object_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_object_icon.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Object Icon Menu"> - <menu_item_call label="Object Profile..." name="Object Profile"/> + <menu_item_call label="物件檔案..." name="Object Profile"/> <menu_item_call label="Block..." name="Block"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml index 6befd163b3..169dbf2187 100644 --- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="Gear Outfit"> - <menu_item_call label="Wear - Replace Current Outfit" name="wear"/> - <menu_item_call label="Wear - Add to Current Outfit" name="wear_add"/> - <menu_item_call label="Take Off - Remove from Current Outfit" name="take_off"/> - <menu label="New Clothes" name="New Clothes"> + <menu_item_call label="穿上 - 取代目前裝扮" name="wear"/> + <menu_item_call label="穿上 - 添加到目前裝扮" name="wear_add"/> + <menu_item_call label="脫下 - 由目前裝扮移除" name="take_off"/> + <menu label="新衣服" name="New Clothes"> <menu_item_call label="新襯衫" name="New Shirt"/> <menu_item_call label="新褲子" name="New Pants"/> <menu_item_call label="新鞋子" name="New Shoes"/> @@ -15,14 +15,14 @@ <menu_item_call label="新內褲" name="New Underpants"/> <menu_item_call label="New Alpha" name="New Alpha"/> <menu_item_call label="New Physics" name="New Physics"/> - <menu_item_call label="New Tattoo" name="New Tattoo"/> + <menu_item_call label="新刺青" name="New Tattoo"/> </menu> - <menu label="New Body Parts" name="New Body Parts"> + <menu label="新身體部位" name="New Body Parts"> <menu_item_call label="New Shape" name="New Shape"/> <menu_item_call label="New Skin" name="New Skin"/> <menu_item_call label="New Hair" name="New Hair"/> <menu_item_call label="New Eyes" name="New Eyes"/> </menu> - <menu_item_call label="Rename Outfit" name="rename"/> - <menu_item_call label="Delete Outfit" name="delete_outfit"/> + <menu_item_call label="裝扮更名" name="rename"/> + <menu_item_call label="刪除裝扮" name="delete_outfit"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml b/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml index 9254aadf56..a4614710f4 100644 --- a/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_outfit_tab.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Outfit"> - <menu_item_call label="Wear - Replace Current Outfit" name="wear_replace"/> - <menu_item_call label="Wear - Add to Current Outfit" name="wear_add"/> - <menu_item_call label="Take Off - Remove from Current Outfit" name="take_off"/> - <menu_item_call label="Edit Outfit" name="edit"/> - <menu_item_call label="Rename Outfit" name="rename"/> - <menu_item_call label="Delete Outfit" name="delete"/> + <menu_item_call label="穿上 - 取代目前裝扮" name="wear_replace"/> + <menu_item_call label="穿上 - 添加到目前裝扮" name="wear_add"/> + <menu_item_call label="脫下 - 由目前裝扮移除" name="take_off"/> + <menu_item_call label="編輯裝扮" name="edit"/> + <menu_item_call label="裝扮更名" name="rename"/> + <menu_item_call label="刪除裝扮" name="delete"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_participant_list.xml b/indra/newview/skins/default/xui/zh/menu_participant_list.xml index c487c35588..7b6f6f954e 100644 --- a/indra/newview/skins/default/xui/zh/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/zh/menu_participant_list.xml @@ -2,10 +2,10 @@ <context_menu name="Participant List Context Menu"> <menu_item_check label="依名稱排序" name="SortByName"/> <menu_item_check label="Sort by Recent Speakers" name="SortByRecentSpeakers"/> - <menu_item_call label="View Profile" name="View Profile"/> + <menu_item_call label="察看檔案" name="View Profile"/> <menu_item_call label="加為朋友" name="Add Friend"/> <menu_item_call label="IM" name="IM"/> - <menu_item_call label="Call" name="Call"/> + <menu_item_call label="通話" name="Call"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="Pay" name="Pay"/> <menu_item_check label="View People Icons" name="View Icons"/> diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups.xml b/indra/newview/skins/default/xui/zh/menu_people_groups.xml index c2d7182a6c..1d78c1de0a 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_groups.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_groups.xml @@ -2,7 +2,7 @@ <menu name="menu_group_plus"> <menu_item_call label="察看資訊" name="View Info"/> <menu_item_call label="聊天" name="Chat"/> - <menu_item_call label="Call" name="Call"/> + <menu_item_call label="通話" name="Call"/> <menu_item_call label="Activate" name="Activate"/> <menu_item_call label="Leave" name="Leave"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml index 2c84a858af..06247ab249 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_group_plus"> <menu_item_check label="Display Group Icons" name="Display Group Icons"/> - <menu_item_call label="Leave Selected Group" name="Leave Selected Group"/> + <menu_item_call label="脫離所選擇的社團" name="Leave Selected Group"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml index 2ca0ad6a89..73b754e059 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Avatar Context Menu"> - <menu_item_call label="View Profile" name="View Profile"/> + <menu_item_call label="察看檔案" name="View Profile"/> <menu_item_call label="加為朋友" name="Add Friend"/> <menu_item_call label="Remove Friend" name="Remove Friend"/> <menu_item_call label="IM" name="IM"/> - <menu_item_call label="Call" name="Call"/> + <menu_item_call label="通話" name="Call"/> <menu_item_call label="地圖" name="Map"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="Pay" name="Pay"/> diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml index a71609170b..4ffbcaff83 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml @@ -3,7 +3,7 @@ <menu_item_call label="加為朋友" name="Add Friends"/> <menu_item_call label="移除朋友" name="Remove Friend"/> <menu_item_call label="IM" name="IM"/> - <menu_item_call label="Call" name="Call"/> + <menu_item_call label="通話" name="Call"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="Pay" name="Pay"/> <menu_item_call label="Offer Teleport" name="teleport"/> diff --git a/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml index 5a4729abde..5b6e7335d6 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_recent_view_sort.xml @@ -2,6 +2,6 @@ <toggleable_menu name="menu_group_plus"> <menu_item_check label="依最近排序" name="sort_most"/> <menu_item_check label="依名稱排序" name="sort_name"/> - <menu_item_check label="View People Icons" name="view_icons"/> - <menu_item_call label="Show Blocked Residents & Objects" name="show_blocked_list"/> + <menu_item_check label="察看人群圖示" name="view_icons"/> + <menu_item_call label="顯示被封鎖的居民與物件" name="show_blocked_list"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_picks.xml b/indra/newview/skins/default/xui/zh/menu_picks.xml index 3c78e9f920..2e88ac2d39 100644 --- a/indra/newview/skins/default/xui/zh/menu_picks.xml +++ b/indra/newview/skins/default/xui/zh/menu_picks.xml @@ -2,7 +2,7 @@ <context_menu name="Picks"> <menu_item_call label="資訊" name="pick_info"/> <menu_item_call label="編輯" name="pick_edit"/> - <menu_item_call label="Teleport" name="pick_teleport"/> + <menu_item_call label="瞬間傳送" name="pick_teleport"/> <menu_item_call label="地圖" name="pick_map"/> <menu_item_call label="刪除" name="pick_delete"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_place.xml b/indra/newview/skins/default/xui/zh/menu_place.xml index 63e44d808c..6ffdf329df 100644 --- a/indra/newview/skins/default/xui/zh/menu_place.xml +++ b/indra/newview/skins/default/xui/zh/menu_place.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="place_overflow_menu"> - <menu_item_call label="Make a Landmark" name="landmark"/> + <menu_item_call label="製作一個地標" name="landmark"/> <menu_item_call label="Create Pick" name="pick"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_place_add_button.xml b/indra/newview/skins/default/xui/zh/menu_place_add_button.xml index e86fe7367e..d0b9438cfc 100644 --- a/indra/newview/skins/default/xui/zh/menu_place_add_button.xml +++ b/indra/newview/skins/default/xui/zh/menu_place_add_button.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_folder_gear"> <menu_item_call label="Add Folder" name="add_folder"/> - <menu_item_call label="Add Landmark" name="add_landmark"/> + <menu_item_call label="添加地標" name="add_landmark"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml index e9658f72a2..7f1d091f44 100644 --- a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_folder_gear"> - <menu_item_call label="Add Landmark" name="add_landmark"/> - <menu_item_call label="Add Folder" name="add_folder"/> + <menu_item_call label="添加地標" name="add_landmark"/> + <menu_item_call label="添加資料夾" name="add_folder"/> <menu_item_call label="Restore Item" name="restore_item"/> <menu_item_call label="剪下" name="cut"/> <menu_item_call label="覆製" name="copy_folder"/> diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml index 66247d3fe6..8578751a28 100644 --- a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_ladmark_gear"> - <menu_item_call label="Teleport" name="teleport"/> + <menu_item_call label="瞬間傳送" name="teleport"/> <menu_item_call label="更多資訊" name="more_info"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> - <menu_item_call label="Add Landmark" name="add_landmark"/> - <menu_item_call label="Add Folder" name="add_folder"/> - <menu_item_call label="Restore Item" name="restore_item"/> + <menu_item_call label="添加地標" name="add_landmark"/> + <menu_item_call label="添加資料夾" name="add_folder"/> + <menu_item_call label="還原物品" name="restore_item"/> <menu_item_call label="剪下" name="cut"/> - <menu_item_call label="Copy Landmark" name="copy_landmark"/> - <menu_item_call label="Copy SLurl" name="copy_slurl"/> + <menu_item_call label="覆製地標" name="copy_landmark"/> + <menu_item_call label="覆製 SLurl" name="copy_slurl"/> <menu_item_call label="貼上" name="paste"/> <menu_item_call label="更名" name="rename"/> <menu_item_call label="刪除" name="delete"/> diff --git a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml index 9c52ddfd18..2c5e3153bf 100644 --- a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml @@ -5,7 +5,7 @@ <menu_item_call label="分享" name="share"/> <menu_item_call label="Block" name="block"/> <menu_item_call label="Unblock" name="unblock"/> - <menu_item_call label="Kick" name="kick"/> + <menu_item_call label="踢除" name="kick"/> <menu_item_call label="Freeze" name="freeze"/> <menu_item_call label="Unfreeze" name="unfreeze"/> <menu_item_call label="CSR" name="csr"/> diff --git a/indra/newview/skins/default/xui/zh/menu_slurl.xml b/indra/newview/skins/default/xui/zh/menu_slurl.xml index 7291239383..2cea18105a 100644 --- a/indra/newview/skins/default/xui/zh/menu_slurl.xml +++ b/indra/newview/skins/default/xui/zh/menu_slurl.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="About URL" name="about_url"/> - <menu_item_call label="Teleport to URL" name="teleport_to_url"/> + <menu_item_call label="關於 URL" name="about_url"/> + <menu_item_call label="瞬間傳送到 URL" name="teleport_to_url"/> <menu_item_call label="地圖" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml index 12989ea59c..d188840588 100644 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_gear.xml @@ -2,5 +2,5 @@ <toggleable_menu name="Teleport History Gear Context Menu"> <menu_item_call label="展開全部資料夾" name="Expand all folders"/> <menu_item_call label="摺疊全部資料夾" name="Collapse all folders"/> - <menu_item_call label="Clear Teleport History" name="Clear Teleport History"/> + <menu_item_call label="清除瞬間傳送歷史紀錄" name="Clear Teleport History"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml index 4d1aa5f74a..c636e108ad 100644 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_item.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Teleport History Item Context Menu"> - <menu_item_call label="Teleport" name="Teleport"/> + <menu_item_call label="瞬間傳送" name="Teleport"/> <menu_item_call label="更多資訊" name="More Information"/> <menu_item_call label="覆製到剪貼簿" name="CopyToClipboard"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_topinfobar.xml b/indra/newview/skins/default/xui/zh/menu_topinfobar.xml index dc3981a4d8..debaafaa10 100644 --- a/indra/newview/skins/default/xui/zh/menu_topinfobar.xml +++ b/indra/newview/skins/default/xui/zh/menu_topinfobar.xml @@ -2,6 +2,6 @@ <menu name="menu_topinfobar"> <menu_item_check label="顯示座標" name="Show Coordinates"/> <menu_item_check label="顯示地段屬性" name="Show Parcel Properties"/> - <menu_item_call label="Landmark" name="Landmark"/> + <menu_item_call label="地標" name="Landmark"/> <menu_item_call label="覆製" name="Copy"/> </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 9f56edb959..3b667d429c 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml @@ -2,5 +2,5 @@ <context_menu name="Url Popup"> <menu_item_call label="Show Resident Profile" name="show_agent"/> <menu_item_call label="覆製名稱到剪貼簿" name="url_copy_label"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_group.xml b/indra/newview/skins/default/xui/zh/menu_url_group.xml index c574090a4a..2cbdd602cb 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_group.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_group.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="Show Group Information" name="show_group"/> - <menu_item_call label="Copy Group to clipboard" name="url_copy_label"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="顯示社團資訊" name="show_group"/> + <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_inventory.xml b/indra/newview/skins/default/xui/zh/menu_url_inventory.xml index 1e56aa1a47..8eaea68c6f 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_inventory.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="Show Inventory Item" name="show_item"/> - <menu_item_call label="Copy Name to clipboard" name="url_copy_label"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="顯示收納區物品" name="show_item"/> + <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_map.xml b/indra/newview/skins/default/xui/zh/menu_url_map.xml index fc8922318f..fbda20fd2f 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_map.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_map.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="顯示在地圖上" name="show_on_map"/> - <menu_item_call label="Teleport to Location" name="teleport_to_location"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="瞬間傳送到位置" name="teleport_to_location"/> + <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 8ad8e4ba84..d2f0b81a9d 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_objectim.xml @@ -2,7 +2,7 @@ <context_menu name="Url Popup"> <menu_item_call label="Show Object Information" name="show_object"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> - <menu_item_call label="Teleport to Object Location" name="teleport_to_object"/> - <menu_item_call label="Copy Object Name to clipboard" name="url_copy_label"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="瞬間傳送到物件位置" name="teleport_to_object"/> + <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_parcel.xml b/indra/newview/skins/default/xui/zh/menu_url_parcel.xml index d011ba8208..330c28238f 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_parcel.xml @@ -2,5 +2,5 @@ <context_menu name="Url Popup"> <menu_item_call label="顯示地段資訊" name="show_parcel"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_slapp.xml b/indra/newview/skins/default/xui/zh/menu_url_slapp.xml index 10d7c9cba0..afc15ce13c 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_slapp.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_slapp.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Run This Command" name="run_slapp"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_slurl.xml b/indra/newview/skins/default/xui/zh/menu_url_slurl.xml index cf4ff9f8ee..2fb247f250 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_slurl.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="Show Place Information" name="show_place"/> + <menu_item_call label="顯示地點資訊" name="show_place"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> - <menu_item_call label="Teleport to Location" name="teleport_to_location"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="瞬間傳送到位置" name="teleport_to_location"/> + <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_url_teleport.xml b/indra/newview/skins/default/xui/zh/menu_url_teleport.xml index c103582487..e3e4b4716d 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_teleport.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="Teleport to this Location" name="teleport"/> + <menu_item_call label="瞬間傳送到這個位置" name="teleport"/> <menu_item_call label="顯示在地圖上" name="show_on_map"/> - <menu_item_call label="Copy SLurl to clipboard" name="url_copy"/> + <menu_item_call label="覆製 SLurl 到剪貼簿" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index 3b1f7820af..6f6ca064c8 100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -20,8 +20,8 @@ <menu_item_call label="離開" name="Set Away"/> <menu_item_call label="忙碌" name="Set Busy"/> </menu> - <menu_item_call label="Request Admin Status" name="Request Admin Options"/> - <menu_item_call label="Leave Admin Status" name="Leave Admin Options"/> + <menu_item_call label="要求 Admin 狀態" name="Request Admin Options"/> + <menu_item_call label="離開 Admin 狀態" name="Leave Admin Options"/> <menu_item_call label="結束離開 [APP_NAME]" name="Quit"/> </menu> <menu label="溝通" name="Communicate"> @@ -35,9 +35,9 @@ <menu_item_check label="世界地圖" name="World Map"/> <menu_item_check label="搜尋" name="Search"/> <menu_item_call label="拍攝快照" name="Take Snapshot"/> - <menu_item_call label="Landmark This Place" name="Create Landmark Here"/> - <menu label="Place Profile" name="Land"> - <menu_item_call label="Place Profile" name="Place Profile"/> + <menu_item_call label="將此處記下地標" name="Create Landmark Here"/> + <menu label="地點檔案" name="Land"> + <menu_item_call label="地點檔案" name="Place Profile"/> <menu_item_call label="關於土地" name="About Land"/> <menu_item_call label="地區 / 領地" name="Region/Estate"/> </menu> @@ -85,11 +85,11 @@ </menu> <menu_item_call label="聚焦於所選部位" name="Focus on Selection"/> <menu_item_call label="Zoom to Selection" name="Zoom to Selection"/> - <menu label="Object" name="Object"> + <menu label="物件" name="Object"> <menu_item_call label="購買" name="Menu Object Buy"/> - <menu_item_call label="Take" name="Menu Object Take"/> + <menu_item_call label="取得" name="Menu Object Take"/> <menu_item_call label="取得副本" name="Take Copy"/> - <menu_item_call label="Save Back to My Inventory" name="Save Object Back to My Inventory"/> + <menu_item_call label="回存到我的收納區" name="Save Object Back to My Inventory"/> <menu_item_call label="Save Back to Object Contents" name="Save Object Back to Object Contents"/> <menu_item_call label="退回物件" name="Return Object back to Owner"/> </menu> @@ -100,10 +100,10 @@ <menu_item_call label="Set Scripts to Running" name="Set Scripts to Running"/> <menu_item_call label="Set Scripts to Not Running" name="Set Scripts to Not Running"/> </menu> - <menu label="Options" name="Options"> - <menu_item_check label="Show Advanced Permissions" name="DebugPermissions"/> - <menu_item_check label="Select Only My Objects" name="Select Only My Objects"/> - <menu_item_check label="Select Only Movable Objects" name="Select Only Movable Objects"/> + <menu label="選項" name="Options"> + <menu_item_check label="顯示進階權限" name="DebugPermissions"/> + <menu_item_check label="只選取我的物件" name="Select Only My Objects"/> + <menu_item_check label="只選取可移動的物件" name="Select Only Movable Objects"/> <menu_item_check label="Select By Surrounding" name="Select By Surrounding"/> <menu_item_check label="Show Selection Outlines" name="Show Selection Outlines"/> <menu_item_check label="Show Hidden Selection" name="Show Hidden Selection"/> @@ -112,9 +112,9 @@ <menu_item_check label="貼齊格線" name="Snap to Grid"/> <menu_item_call label="Snap Object XY to Grid" name="Snap Object XY to Grid"/> <menu_item_call label="Use Selection for Grid" name="Use Selection for Grid"/> - <menu_item_call label="Grid Options" name="Grid Options"/> + <menu_item_call label="格線選項" name="Grid Options"/> </menu> - <menu label="Upload" name="Upload"> + <menu label="上傳" name="Upload"> <menu_item_call label="Image (L$[COST])..." name="Upload Image"/> <menu_item_call label="Sound (L$[COST])..." name="Upload Sound"/> <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> @@ -122,19 +122,19 @@ <menu_item_call label="Set Default Upload Permissions" name="perm prefs"/> </menu> <menu_item_call label="復原" name="Undo"/> - <menu_item_call label="Redo" name="Redo"/> + <menu_item_call label="重做" name="Redo"/> </menu> - <menu label="Help" name="Help"> - <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> - <menu_item_check label="Enable Hints" name="Enable Hints"/> - <menu_item_call label="Report Abuse" name="Report Abuse"/> - <menu_item_call label="Report Bug" name="Report Bug"/> - <menu_item_call label="About [APP_NAME]" name="About Second Life"/> + <menu label="幫助" name="Help"> + <menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/> + <menu_item_check label="啟用提示" name="Enable Hints"/> + <menu_item_call label="舉報濫用" name="Report Abuse"/> + <menu_item_call label="回報臭蟲" name="Report Bug"/> + <menu_item_call label="關於 [APP_NAME]" name="About Second Life"/> </menu> - <menu label="Advanced" name="Advanced"> + <menu label="進階" name="Advanced"> <menu_item_call label="Rebake Textures" name="Rebake Texture"/> - <menu_item_call label="Set UI Size to Default" name="Set UI Size to Default"/> - <menu_item_call label="Set Window Size..." name="Set Window Size..."/> + <menu_item_call label="設定使用者界面大小至預設值" name="Set UI Size to Default"/> + <menu_item_call label="設定視窗尺寸大小..." name="Set Window Size..."/> <menu_item_check label="Limit Select Distance" name="Limit Select Distance"/> <menu_item_check label="Disable Camera Constraints" name="Disable Camera Distance"/> <menu_item_check label="High-res Snapshot" name="HighResSnapshot"/> @@ -185,7 +185,7 @@ <menu_item_call label="Image (L$[COST])..." name="Upload Image"/> <menu_item_check label="Search" name="Search"/> <menu_item_call label="Release Keys" name="Release Keys"/> - <menu_item_call label="Set UI Size to Default" name="Set UI Size to Default"/> + <menu_item_call label="設定使用者界面大小至預設值" name="Set UI Size to Default"/> <menu_item_check label="Show Advanced Menu - legacy shortcut" name="Show Advanced Menu - legacy shortcut"/> <menu_item_call label="關閉視窗" name="Close Window"/> <menu_item_call label="關閉全部視窗" name="Close All Windows"/> @@ -210,10 +210,10 @@ </menu> <menu label="開發" name="Develop"> <menu label="Consoles" name="Consoles"> - <menu_item_check label="Texture Console" name="Texture Console"/> + <menu_item_check label="材質控制台" name="Texture Console"/> <menu_item_check label="Debug Console" name="Debug Console"/> <menu_item_call label="Notifications Console" name="Notifications"/> - <menu_item_check label="Texture Size Console" name="Texture Size"/> + <menu_item_check label="材質尺寸控制台" name="Texture Size"/> <menu_item_check label="Texture Category Console" name="Texture Category"/> <menu_item_check label="Fast Timers" name="Fast Timers"/> <menu_item_check label="記憶體" name="Memory"/> @@ -228,7 +228,7 @@ <menu label="顯示資訊" name="Display Info"> <menu_item_check label="Show Time" name="Show Time"/> <menu_item_check label="Show Render Info" name="Show Render Info"/> - <menu_item_check label="Show Texture Info" name="Show Texture Info"/> + <menu_item_check label="顯示材質資訊" name="Show Texture Info"/> <menu_item_check label="Show Matrices" name="Show Matrices"/> <menu_item_check label="Show Color Under Cursor" name="Show Color Under Cursor"/> <menu_item_check label="顯示記憶體" name="Show Memory"/> @@ -316,7 +316,7 @@ <menu_item_call label="Media Browser Test" name="Web Browser Test"/> <menu_item_call label="Web Content Browser" name="Web Content Browser"/> <menu_item_call label="Dump SelectMgr" name="Dump SelectMgr"/> - <menu_item_call label="Dump Inventory" name="Dump Inventory"/> + <menu_item_call label="傾印收納區" name="Dump Inventory"/> <menu_item_call label="Dump Timers" name="Dump Timers"/> <menu_item_call label="Dump Focus Holder" name="Dump Focus Holder"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> @@ -335,7 +335,7 @@ <menu_item_call label="Reload Color Settings" name="Reload Color Settings"/> <menu_item_call label="Show Font Test" name="Show Font Test"/> <menu_item_check label="Show XUI Names" name="Show XUI Names"/> - <menu_item_call label="Send Test IMs" name="Send Test IMs"/> + <menu_item_call label="送出測試 IMs" name="Send Test IMs"/> <menu_item_call label="Flush Names Caches" name="Flush Names Caches"/> </menu> <menu label="Avatar" name="Character"> @@ -369,7 +369,7 @@ <menu_item_call label="Debug Avatar Textures" name="Debug Avatar Textures"/> <menu_item_call label="Dump Local Textures" name="Dump Local Textures"/> </menu> - <menu_item_check label="HTTP Textures" name="HTTP Textures"/> + <menu_item_check label="HTTP 材質" name="HTTP Textures"/> <menu_item_call label="Compress Images" name="Compress Images"/> <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> <menu_item_check label="Console Window on next Run" name="Console Window"/> @@ -400,7 +400,7 @@ <menu label="Admin" name="Deprecated"> <menu label="Attach Object" name="Attach Object"/> <menu label="Detach Object" name="Detach Object"/> - <menu label="Take Off Clothing" name="Take Off Clothing"> + <menu label="脫下服裝" name="Take Off Clothing"> <menu_item_call label="襯衫" name="Shirt"/> <menu_item_call label="褲子" name="Pants"/> <menu_item_call label="鞋子" name="Shoes"/> @@ -413,15 +413,15 @@ <menu_item_call label="Alpha" name="Alpha"/> <menu_item_call label="Tattoo" name="Tattoo"/> <menu_item_call label="Physics" name="Physics"/> - <menu_item_call label="All Clothes" name="All Clothes"/> + <menu_item_call label="全部衣服" name="All Clothes"/> </menu> - <menu label="Help" name="Help"> - <menu_item_call label="Official Linden Blog" name="Official Linden Blog"/> + <menu label="幫助" name="Help"> + <menu_item_call label="林登官方部落格" name="Official Linden Blog"/> <menu_item_call label="Scripting Portal" name="Scripting Portal"/> - <menu label="Bug Reporting" name="Bug Reporting"> + <menu label="臭蟲回報" name="Bug Reporting"> <menu_item_call label="Public Issue Tracker" name="Public Issue Tracker"/> <menu_item_call label="Public Issue Tracker Help" name="Publc Issue Tracker Help"/> - <menu_item_call label="Bug Reporting 101" name="Bug Reporing 101"/> + <menu_item_call label="臭蟲回報 101" name="Bug Reporing 101"/> <menu_item_call label="Security Issues" name="Security Issues"/> <menu_item_call label="QA Wiki" name="QA Wiki"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml index 97f18f0936..c5c1f661fb 100644 --- a/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearable_list_item.xml @@ -9,6 +9,6 @@ <context_menu label="Attach to HUD" name="wearable_attach_to_hud"/> <menu_item_call label="脫下" name="take_off"/> <menu_item_call label="編輯" name="edit"/> - <menu_item_call label="Item Profile" name="object_profile"/> - <menu_item_call label="Show Original" name="show_original"/> + <menu_item_call label="物品檔案" name="object_profile"/> + <menu_item_call label="顯示原件" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml index ebf9b80d27..d9f4acb27b 100644 --- a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="Gear Wearing"> - <menu_item_call label="Edit Outfit" name="edit"/> + <menu_item_call label="編輯裝扮" name="edit"/> <menu_item_call label="脫下" name="takeoff"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml index 5e82cb087f..c7d2853995 100644 --- a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml @@ -2,5 +2,5 @@ <context_menu name="Wearing"> <menu_item_call label="脫下" name="take_off"/> <menu_item_call label="卸下" name="detach"/> - <menu_item_call label="Edit Outfit" name="edit"/> + <menu_item_call label="編輯裝扮" name="edit"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml index 1c9b68da1a..ecc14867b8 100644 --- a/indra/newview/skins/default/xui/zh/mime_types.xml +++ b/indra/newview/skins/default/xui/zh/mime_types.xml @@ -13,13 +13,13 @@ </widgetset> <widgetset name="movie"> <label name="movie_label"> - Movie + 影片 </label> <tooltip name="movie_tooltip"> - There is a movie to play here + 沒有影片可以播放 </tooltip> <playtip name="movie_playtip"> - Play movie + 播放影片 </playtip> </widgetset> <widgetset name="image"> @@ -76,7 +76,7 @@ </mimetype> <mimetype name="video/vnd.secondlife.qt.legacy"> <label name="vnd.secondlife.qt.legacy_label"> - Movie (QuickTime) + 影片(QuickTime) </label> </mimetype> <mimetype name="application/javascript"> @@ -111,7 +111,7 @@ </mimetype> <mimetype name="application/xhtml+xml"> <label name="application/xhtml+xml_label"> - Web Page (XHTML) + 選項(XHTML) </label> </mimetype> <mimetype name="application/x-director"> @@ -171,7 +171,7 @@ </mimetype> <mimetype name="text/html"> <label name="text/html_label"> - Web Page + 選項 </label> </mimetype> <mimetype name="text/plain"> @@ -186,32 +186,32 @@ </mimetype> <mimetype name="video/mpeg"> <label name="video/mpeg_label"> - Movie (MPEG) + 影片(MPEG) </label> </mimetype> <mimetype name="video/mp4"> <label name="video/mp4_label"> - Movie (MP4) + 影片(MP4) </label> </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> - Movie (QuickTime) + 影片(QuickTime) </label> </mimetype> <mimetype name="video/x-ms-asf"> <label name="video/x-ms-asf_label"> - Movie (Windows Media ASF) + 影片(Windows Media ASF) </label> </mimetype> <mimetype name="video/x-ms-wmv"> <label name="video/x-ms-wmv_label"> - Movie (Windows Media WMV) + 影片(Windows Media WMV) </label> </mimetype> <mimetype name="video/x-msvideo"> <label name="video/x-msvideo_label"> - Movie (AVI) + 影片(AVI) </label> </mimetype> </mimetypes> diff --git a/indra/newview/skins/default/xui/zh/mime_types_linux.xml b/indra/newview/skins/default/xui/zh/mime_types_linux.xml index 1c9b68da1a..ecc14867b8 100644 --- a/indra/newview/skins/default/xui/zh/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/zh/mime_types_linux.xml @@ -13,13 +13,13 @@ </widgetset> <widgetset name="movie"> <label name="movie_label"> - Movie + 影片 </label> <tooltip name="movie_tooltip"> - There is a movie to play here + 沒有影片可以播放 </tooltip> <playtip name="movie_playtip"> - Play movie + 播放影片 </playtip> </widgetset> <widgetset name="image"> @@ -76,7 +76,7 @@ </mimetype> <mimetype name="video/vnd.secondlife.qt.legacy"> <label name="vnd.secondlife.qt.legacy_label"> - Movie (QuickTime) + 影片(QuickTime) </label> </mimetype> <mimetype name="application/javascript"> @@ -111,7 +111,7 @@ </mimetype> <mimetype name="application/xhtml+xml"> <label name="application/xhtml+xml_label"> - Web Page (XHTML) + 選項(XHTML) </label> </mimetype> <mimetype name="application/x-director"> @@ -171,7 +171,7 @@ </mimetype> <mimetype name="text/html"> <label name="text/html_label"> - Web Page + 選項 </label> </mimetype> <mimetype name="text/plain"> @@ -186,32 +186,32 @@ </mimetype> <mimetype name="video/mpeg"> <label name="video/mpeg_label"> - Movie (MPEG) + 影片(MPEG) </label> </mimetype> <mimetype name="video/mp4"> <label name="video/mp4_label"> - Movie (MP4) + 影片(MP4) </label> </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> - Movie (QuickTime) + 影片(QuickTime) </label> </mimetype> <mimetype name="video/x-ms-asf"> <label name="video/x-ms-asf_label"> - Movie (Windows Media ASF) + 影片(Windows Media ASF) </label> </mimetype> <mimetype name="video/x-ms-wmv"> <label name="video/x-ms-wmv_label"> - Movie (Windows Media WMV) + 影片(Windows Media WMV) </label> </mimetype> <mimetype name="video/x-msvideo"> <label name="video/x-msvideo_label"> - Movie (AVI) + 影片(AVI) </label> </mimetype> </mimetypes> diff --git a/indra/newview/skins/default/xui/zh/mime_types_mac.xml b/indra/newview/skins/default/xui/zh/mime_types_mac.xml index b6c8784759..51f242a1c2 100644 --- a/indra/newview/skins/default/xui/zh/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/zh/mime_types_mac.xml @@ -5,7 +5,7 @@ 網頁內容 </label> <tooltip name="web_tooltip"> - This location has Web content + 這個位置有網頁內容 </tooltip> <playtip name="web_playtip"> 顯示網頁內容 @@ -13,13 +13,13 @@ </widgetset> <widgetset name="movie"> <label name="movie_label"> - Movie + 影片 </label> <tooltip name="movie_tooltip"> - There is a movie to play here + 沒有影片可以播放 </tooltip> <playtip name="movie_playtip"> - Play movie + 播放影片 </playtip> </widgetset> <widgetset name="image"> @@ -76,7 +76,7 @@ </mimetype> <mimetype name="video/vnd.secondlife.qt.legacy"> <label name="vnd.secondlife.qt.legacy_label"> - Movie (QuickTime) + 影片 (QuickTime) </label> </mimetype> <mimetype name="application/javascript"> @@ -111,7 +111,7 @@ </mimetype> <mimetype name="application/xhtml+xml"> <label name="application/xhtml+xml_label"> - Web Page (XHTML) + 網頁(XHTML) </label> </mimetype> <mimetype name="application/x-director"> @@ -186,32 +186,32 @@ </mimetype> <mimetype name="video/mpeg"> <label name="video/mpeg_label"> - Movie (MPEG) + 影片(MPEG) </label> </mimetype> <mimetype name="video/mp4"> <label name="video/mp4_label"> - Movie (MP4) + 影片(MP4) </label> </mimetype> <mimetype name="video/quicktime"> <label name="video/quicktime_label"> - Movie (QuickTime) + 影片(QuickTime) </label> </mimetype> <mimetype name="video/x-ms-asf"> <label name="video/x-ms-asf_label"> - Movie (Windows Media ASF) + 影片(Windows Media ASF) </label> </mimetype> <mimetype name="video/x-ms-wmv"> <label name="video/x-ms-wmv_label"> - Movie (Windows Media WMV) + 影片(Windows Media WMV) </label> </mimetype> <mimetype name="video/x-msvideo"> <label name="video/x-msvideo_label"> - Movie (AVI) + 影片(AVI) </label> </mimetype> </mimetypes> diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 8b26c70430..7652c1a1d0 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -102,7 +102,7 @@ Make sure your Internet connection is working properly. Please select only one object and try again. </notification> <notification name="SaveClothingBodyChanges"> - Save all changes to clothing/body parts? + 儲存全部服裝或身體部位的變更? <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="不要儲存" yestext="全部儲存"/> </notification> <notification name="FriendsAndGroupsOnly"> @@ -356,11 +356,11 @@ Are you sure you want to continue? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="DeleteOutfits"> - Delete the selected outfit? + 刪除所選擇的裝扮? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="PromptGoToEventsPage"> - Go to the [SECOND_LIFE] events web page? + 前往 [SECOND_LIFE] 事件網頁? <url name="url"> http://secondlife.com/events/ </url> @@ -389,7 +389,7 @@ Note: This will clear the cache. Changing language will take effect after you restart [APP_NAME]. </notification> <notification name="GoToAuctionPage"> - Go to the [SECOND_LIFE] web page to see auction details or make a bid? + 前往 [SECOND_LIFE] 網頁去察看拍賣細節或下標? <url name="url"> http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] </url> @@ -485,10 +485,10 @@ and will lose it from your inventory if you give it away. Do you really want to <usetemplate name="okcancelbuttons" notext="否" yestext="是"/> </notification> <notification name="CannotGiveItem"> - Unable to give inventory item. + 無法給予收納區物品。 </notification> <notification name="TransactionCancelled"> - Transaction cancelled. + 交易已取銷。 </notification> <notification name="TooManyItems"> Cannot give more than 42 items in a single inventory transfer. @@ -643,14 +643,14 @@ Expected [VALIDS] Please try again later. </notification> <notification name="LandmarkCreated"> - You have added "[LANDMARK_NAME]" to your [FOLDER_NAME] folder. + 你已經添加 "[LANDMARK_NAME]" 到你的 [FOLDER_NAME] 資料夾。 </notification> <notification name="LandmarkAlreadyExists"> - You already have a landmark for this location. + 你已經有這個位置的地標。 <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="CannotCreateLandmarkNotOwner"> - You cannot create a landmark here because the owner of the land doesn't allow it. + 你不能創造地標,因為地主並不允許你這樣做。 </notification> <notification name="CannotRecompileSelectObjectsNoScripts"> Not able to perform 'recompilation'. @@ -696,7 +696,7 @@ Searched for: [FINALQUERY] Your search terms were too short so no search was performed. </notification> <notification name="CouldNotTeleportReason"> - Teleport failed. + 瞬間傳送失敗。 [REASON] </notification> <notification name="invalid_tport"> @@ -735,7 +735,7 @@ If you continue to get this message, please check the [SUPPORT_SITE]. Unable to find teleport destination. The destination may be temporarily unavailable or no longer exists. Please try again in a few minutes. </notification> <notification name="no_inventory_host"> - The inventory system is currently unavailable. + 收納區功能目前無法使用。 </notification> <notification name="CannotSetLandOwnerNothingSelected"> Unable to set land owner: @@ -895,8 +895,8 @@ Join land? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="ConfirmItemCopy"> - Copy this item to your inventory? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Copy"/> + 覆製這個物品到你的收納區? + <usetemplate name="okcancelbuttons" notext="取銷" yestext="覆製"/> </notification> <notification name="ResolutionSwitchFail"> Failed to switch resolution to [RESX] by [RESY] @@ -929,24 +929,24 @@ You do not have permission to buy land for your active group. Offer friendship to [NAME]? <form name="form"> <input name="message"> - Would you be my friend? + 你願意成為我的朋友嗎? </input> <button name="Offer" text="確定"/> <button name="Cancel" text="取銷"/> </form> </notification> - <notification label="Save Outfit" name="SaveOutfitAs"> - Save what I'm wearing as a new Outfit: + <notification label="儲存裝扮" name="SaveOutfitAs"> + 儲存我正在穿的為新裝扮: <form name="form"> <input name="message"> - [DESC] (new) + [DESC] (新) </input> <button name="OK" text="確定"/> <button name="Cancel" text="取銷"/> </form> </notification> <notification label="Save Wearable" name="SaveWearableAs"> - Save item to my inventory as: + 儲存物品到我的收納區為: <form name="form"> <input name="message"> [DESC] (新) @@ -955,8 +955,8 @@ Offer friendship to [NAME]? <button name="Cancel" text="取銷"/> </form> </notification> - <notification label="Rename Outfit" name="RenameOutfit"> - New outfit name: + <notification label="裝扮更名" name="RenameOutfit"> + 新裝扮名稱: <form name="form"> <input name="new_name"> [NAME] @@ -970,7 +970,7 @@ Offer friendship to [NAME]? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="RemoveMultipleFromFriends"> - Do you want to remove multiple friends from your Friends list? + 你確定要由朋友清單中移除多個朋友嗎? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="GodDeleteAllScriptedPublicObjectsByUser"> @@ -1118,14 +1118,14 @@ You have been moved into a nearby region. You may want to set a new home location. </notification> <notification name="ClothingLoading"> - Your clothing is still downloading. -You can use [SECOND_LIFE] normally and other people will see you correctly. + 你的服裝仍在下載中。 +你可以正常使用 [SECOND_LIFE],而且其他人看到你也是正常的。 <form name="form"> - <ignore name="ignore" text="Clothing is taking a long time to download"/> + <ignore name="ignore" text="服裝花太多時間下載"/> </form> </notification> <notification name="FirstRun"> - [APP_NAME] installation is complete. + [APP_NAME] 安裝完成。 If this is your first time using [SECOND_LIFE], you will need to create an account before you can log in. Return to [http://join.secondlife.com secondlife.com] to create a new account? @@ -1140,8 +1140,8 @@ You can either check your Internet connection and try again in a few minutes, cl </url> <form name="form"> <button name="OK" text="確定"/> - <button name="Help" text="Help"/> - <button name="Teleport" text="Teleport"/> + <button name="Help" text="幫助"/> + <button name="Teleport" text="瞬間傳送"/> </form> </notification> <notification name="WelcomeChooseSex"> @@ -1212,7 +1212,7 @@ Please select only one object and try again. <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="KickUsersFromRegion"> - Teleport all Residents in this region home? + 確定要強制瞬間傳送這地區所有居民回家? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="EstateObjectReturn"> @@ -1232,7 +1232,7 @@ Terrain texture [TEXTURE_NUM] is too large at [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]. Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image then click "Apply" again. </notification> <notification name="RawUploadStarted"> - Upload started. It may take up to two minutes, depending on your connection speed. + 上傳開始。將會花費約兩分鐘,這取決於你的連線速度。 </notification> <notification name="ConfirmBakeTerrain"> Do you really want to bake the current terrain, make it the center for terrain raise/lower limits and the default for the 'Revert' tool? @@ -1259,7 +1259,7 @@ Exceeds the [MAX_AGENTS] [LIST_TYPE] limit by [NUM_EXCESS]. Can't add estate owner to estate 'Banned Resident' list. </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> - Can't change appearance until clothing and shape are loaded. + 無法變更外觀,直到服裝與體形下載完畢。 </notification> <notification name="ClassifiedMustBeAlphanumeric"> The name of your classified must start with a letter from A to Z or a number. No punctuation is allowed. @@ -1351,7 +1351,7 @@ http://secondlife.com/download. You may download this update from http://www.secondlife.com/downloads or you can install it now. - <usetemplate name="okcancelbuttons" notext="Quit Second Life" yestext="Download and install now"/> + <usetemplate name="okcancelbuttons" notext="Quit Second Life" yestext="立即下載及安裝"/> </notification> <notification name="DownloadBackgroundTip"> We have downloaded an update to your [APP_NAME] installation. @@ -1397,7 +1397,7 @@ We must restart [APP_NAME] to install the update. </notification> <notification name="WebLaunchPublicIssue"> Visit the [SECOND_LIFE] Public Issue Tracker, where you can report bugs and other issues. - <usetemplate ignoretext="Launch my browser to use the Public Issue Tracker" name="okcancelignore" notext="取銷" yestext="Go to page"/> + <usetemplate ignoretext="Launch my browser to use the Public Issue Tracker" name="okcancelignore" notext="取銷" yestext="前往頁面"/> </notification> <notification name="WebLaunchSupportWiki"> Go to the Official Linden Blog, for the latest news and information. @@ -1423,8 +1423,8 @@ Leave Group? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="ConfirmKick"> - Do you REALLY want to kick all Residents off the grid? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Kick All Residents"/> + 你確定要踢除這網格內的全部居民? + <usetemplate name="okcancelbuttons" notext="取銷" yestext="踢除全部居民"/> </notification> <notification name="MuteLinden"> Sorry, you cannot block a Linden. @@ -1464,7 +1464,7 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="KickUser"> - Kick this Resident with what message? + 踢除這個居民並留給他什麼訊息? <form name="form"> <input name="message"> An administrator has logged you off. @@ -1547,7 +1547,7 @@ Please try again later. Offer a teleport to your location with the following message? <form name="form"> <input name="message"> - Join me in [REGION] + 加入我到 [REGION] </input> <button name="OK" text="確定"/> <button name="Cancel" text="取銷"/> @@ -1565,19 +1565,19 @@ Please try again later. </notification> <notification name="TeleportFromLandmark"> Are you sure you want to teleport to <nolink>[LOCATION]</nolink>? - <usetemplate ignoretext="Confirm that I want to teleport to a landmark" name="okcancelignore" notext="取銷" yestext="Teleport"/> + <usetemplate ignoretext="Confirm that I want to teleport to a landmark" name="okcancelignore" notext="取銷" yestext="瞬間傳送"/> </notification> <notification name="TeleportToPick"> - Teleport to [PICK]? + 瞬間傳送到 [PICK]? <usetemplate ignoretext="Confirm that I want to teleport to a location in Picks" name="okcancelignore" notext="取銷" yestext="Teleport"/> </notification> <notification name="TeleportToClassified"> - Teleport to [CLASSIFIED]? - <usetemplate ignoretext="Confirm that I want to teleport to a location in Classifieds" name="okcancelignore" notext="取銷" yestext="Teleport"/> + 瞬間傳送到 [CLASSIFIED]? + <usetemplate ignoretext="Confirm that I want to teleport to a location in Classifieds" name="okcancelignore" notext="取銷" yestext="瞬間傳送"/> </notification> <notification name="TeleportToHistoryEntry"> - Teleport to [HISTORY_ENTRY]? - <usetemplate ignoretext="Confirm that I want to teleport to a history location" name="okcancelignore" notext="取銷" yestext="Teleport"/> + 瞬間傳送到 [HISTORY_ENTRY]? + <usetemplate ignoretext="Confirm that I want to teleport to a history location" name="okcancelignore" notext="取銷" yestext="瞬間傳送"/> </notification> <notification label="Message everyone in your Estate" name="MessageEstate"> Type a short announcement which will be sent to everyone currently in your estate. @@ -1633,8 +1633,8 @@ It will change thousands of regions and make the spaceserver hiccup. Remove estate manager for this estate only or for [ALL_ESTATES]? <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> - <notification label="Confirm Kick" name="EstateKickUser"> - Kick [EVIL_USER] from this estate? + <notification label="確認踢除" name="EstateKickUser"> + 將 [EVIL_USER] 由這領地踢除? <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> </notification> <notification name="EstateChangeCovenant"> @@ -1946,8 +1946,8 @@ Linden Lab Do you want to replace it with the selected object? <form name="form"> <ignore name="ignore" text="Replace an existing attachment with the selected item"/> - <button ignore="Replace Automatically" name="Yes" text="確定"/> - <button ignore="Never Replace" name="No" text="取銷"/> + <button ignore="自動取代" name="Yes" text="確定"/> + <button ignore="絕不取代" name="No" text="取銷"/> </form> </notification> <notification label="Busy Mode Warning" name="BusyModePay"> @@ -1990,7 +1990,7 @@ Would you like to leave Busy Mode before completing this transaction? Link to this from a web page to give others easy access to this location, or try it out yourself by pasting it into the address bar of any web browser. <form name="form"> - <ignore name="ignore" text="SLurl is copied to my clipboard"/> + <ignore name="ignore" text="SLurl 已經覆製到我的剪貼簿。"/> </form> </notification> <notification name="WLSavePresetAlert"> @@ -2063,8 +2063,8 @@ Link to this from a web page to give others easy access to this location, or try <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="AutoWearNewClothing"> - Would you like to automatically wear the clothing you are about to create? - <usetemplate ignoretext="Wear the clothing I create while editing My Appearance" name="okcancelignore" notext="否" yestext="是"/> + 你要自動穿上你所創造的服裝嗎? + <usetemplate ignoretext="編輯外觀時能穿上我所創造的服裝" name="okcancelignore" notext="否" yestext="是"/> </notification> <notification name="NotAgeVerified"> You must be age-verified to visit this area. Do you want to go to the [SECOND_LIFE] website and verify your age? @@ -2122,7 +2122,7 @@ Link to this from a web page to give others easy access to this location, or try (Takes about 5 minutes.) </notification> <notification name="UploadPayment"> - You paid L$[AMOUNT] to upload. + 你支付 L$[AMOUNT] 上傳。 </notification> <notification name="UploadWebSnapshotDone"> Web site snapshot upload done. @@ -2140,10 +2140,10 @@ Link to this from a web page to give others easy access to this location, or try Unable to load gesture [NAME]. </notification> <notification name="LandmarkMissing"> - Landmark is missing from database. + 資料庫中的地標遺失。 </notification> <notification name="UnableToLoadLandmark"> - Unable to load landmark. Please try again. + 無法載入地標,請再試一次。 </notification> <notification name="CapsKeyOn"> Your Caps Lock key is on. @@ -2374,7 +2374,7 @@ Please go to the Knowledge Base for details on accessing areas with this maturit Could not teleport closer to destination. </notification> <notification name="TPCancelled"> - Teleport cancelled. + 瞬間傳送已取銷。 </notification> <notification name="FullRegionTryAgain"> The region you are attempting to enter is currently full. @@ -2452,7 +2452,7 @@ Please try again in a few moments. [MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon> <form name="form"> - <button name="Teleport" text="Teleport"/> + <button name="Teleport" text="瞬間傳送"/> <button name="Cancel" text="取銷"/> </form> </notification> @@ -2519,7 +2519,7 @@ If you stay in this region you will be logged out. If you stay in this region you will be logged out. </notification> <notification name="LoadWebPage"> - Load web page [URL]? + 載入網頁 [URL]? [MESSAGE] @@ -2697,7 +2697,7 @@ Click Accept to join the chat or Decline to decline the invitation. Click Block An error has occurred while trying to connect to voice chat for [VOICE_CHANNEL_NAME]. Please try again later. </notification> <notification name="UnsupportedCommandSLURL"> - The SLurl you clicked on is not supported. + 你所點擊的 SLurl 位置並不被支援。 </notification> <notification name="BlockedSLURL"> A SLurl was received from an untrusted browser and has been blocked for your security. @@ -2823,7 +2823,7 @@ You locally updated a [RESOLUTION] baked texture for '[BODYREGION]' af </notification> <notification name="ConfirmLeaveCall"> Are you sure you want to leave this call? - <usetemplate ignoretext="Confirm before I leave call" name="okcancelignore" notext="否" yestext="是"/> + <usetemplate ignoretext="我結束通話前進行確認" name="okcancelignore" notext="否" yestext="是"/> </notification> <notification name="ConfirmMuteAll"> You have selected to mute all participants in a group call. @@ -2868,7 +2868,7 @@ Click and drag anywhere on the world to rotate your view <notification label="View" name="HintView"> To change your camera view, use the Orbit and Pan controls. Reset your view by pressing Escape or walking. </notification> - <notification label="Inventory" name="HintInventory"> + <notification label="收納區" name="HintInventory"> Check your inventory to find items. Newest items can be easily found in the Recent tab. </notification> <notification label="You've got Linden Dollars!" name="HintLindenDollar"> diff --git a/indra/newview/skins/default/xui/zh/panel_active_object_row.xml b/indra/newview/skins/default/xui/zh/panel_active_object_row.xml index 0905cc30b6..42a4aa9e85 100644 --- a/indra/newview/skins/default/xui/zh/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/zh/panel_active_object_row.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_activeim_row"> <text name="object_name"> - Unnamed Object + 未命名物件 </text> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml index 641d0eba93..c9e47984e2 100644 --- a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml @@ -2,13 +2,13 @@ <panel name="panel_im_control_panel"> <layout_stack name="vertical_stack"> <layout_panel name="call_btn_panel"> - <button label="Call" name="call_btn"/> + <button label="通話" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="Leave Call" name="end_call_btn"/> </layout_panel> <layout_panel name="voice_ctrls_btn_panel"> - <button label="Voice Controls" name="voice_ctrls_btn"/> + <button label="語音控制" name="voice_ctrls_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml index e7a94eafa8..23b76eea9b 100644 --- a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml @@ -23,9 +23,9 @@ </string> <text name="avatar_name" value="(loading)"/> <text name="last_interaction" value="0s"/> - <icon name="permission_edit_theirs_icon" tool_tip="You can edit this friend's objects"/> - <icon name="permission_edit_mine_icon" tool_tip="This friend can edit, delete or take your objects"/> - <icon name="permission_map_icon" tool_tip="This friend can locate you on the map"/> - <icon name="permission_online_icon" tool_tip="This friend can see when you're online"/> - <button name="profile_btn" tool_tip="View profile"/> + <icon name="permission_edit_theirs_icon" tool_tip="你不能編輯這位朋友的物件"/> + <icon name="permission_edit_mine_icon" tool_tip="這位朋友能編輯、刪除或取得你的物件"/> + <icon name="permission_map_icon" tool_tip="這位朋友能在地圖上找到你的位置"/> + <icon name="permission_online_icon" tool_tip="這位朋友當你上線能看到訊息"/> + <button name="profile_btn" tool_tip="察看檔案"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml index d8327683dd..9ef4258f0b 100644 --- a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="block_list_panel"> <text name="title_text"> - Block List + 封鎖清單 </text> <scroll_list name="blocked" tool_tip="List of currently blocked Residents"/> <button label="Block person" name="Block resident..." tool_tip="Pick a Resident to block"/> diff --git a/indra/newview/skins/default/xui/zh/panel_bottomtray.xml b/indra/newview/skins/default/xui/zh/panel_bottomtray.xml index 4e7f261e63..4c0174559e 100644 --- a/indra/newview/skins/default/xui/zh/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/zh/panel_bottomtray.xml @@ -40,7 +40,7 @@ </layout_panel> <layout_panel name="notification_well_panel"> <chiclet_notification name="notification_well"> - <button name="Unread" tool_tip="Notifications"/> + <button name="Unread" tool_tip="通知"/> </chiclet_notification> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/zh/panel_classified_info.xml b/indra/newview/skins/default/xui/zh/panel_classified_info.xml index 6ddfbdaf4f..94edb7ab71 100644 --- a/indra/newview/skins/default/xui/zh/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_classified_info.xml @@ -10,7 +10,7 @@ L$[PRICE] </panel.string> <panel.string name="click_through_text_fmt"> - [TELEPORT] teleport, [MAP] map, [PROFILE] profile + [TELEPORT] 瞬間傳送,[MAP] 地圖,[PROFILE] 檔案 </panel.string> <panel.string name="date_fmt"> [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt] @@ -54,7 +54,7 @@ <panel name="buttons"> <layout_stack name="layout_stack1"> <layout_panel name="layout_panel1"> - <button label="Teleport" name="teleport_btn"/> + <button label="瞬間傳送" name="teleport_btn"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> <button label="地圖" name="show_on_map_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml b/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml index eba6fa7c29..1185336a2d 100644 --- a/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_clothing_list_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="wearable_item"> - <button name="btn_delete" tool_tip="Remove from outfit"/> + <button name="btn_delete" tool_tip="由裝扮移除"/> <text name="item_name" value="..."/> - <panel name="btn_lock" tool_tip="You don't have permission to edit"/> + <panel name="btn_lock" tool_tip="你並沒有權限去編輯"/> <panel name="btn_edit_panel"> <button name="btn_edit" tool_tip="Edit this wearable"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml b/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml index 9e63b9a3a8..309ab1c0d4 100644 --- a/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/zh/panel_cof_wearables.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="cof_wearables"> <accordion name="cof_wearables_accordion"> - <accordion_tab name="tab_clothing" title="Clothing"/> + <accordion_tab name="tab_clothing" title="服裝"/> <accordion_tab name="tab_attachments" title="Attachments"/> - <accordion_tab name="tab_body_parts" title="Body Parts"/> + <accordion_tab name="tab_body_parts" title="身體部位"/> </accordion> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml b/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml index 59bff5f3e9..a9e65419c2 100644 --- a/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_deletable_wearable_list_item.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="deletable_wearable_item"> - <button name="btn_delete" tool_tip="Remove from outfit"/> + <button name="btn_delete" tool_tip="由裝扮移除"/> <text name="item_name" value="..."/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml b/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml index 6558eda253..6377bf4135 100644 --- a/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_dummy_clothing_list_item.xml @@ -2,6 +2,6 @@ <panel name="dummy_clothing_item"> <text name="item_name" value="..."/> <panel name="btn_add_panel"> - <button name="btn_add" tool_tip="Add more items of this type"/> + <button name="btn_add" tool_tip="添加更多物品到這個類型"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml index c664880898..9c542366bc 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_gloves_panel"> <panel name="avatar_gloves_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml index 0709ad4e67..0578fe9ef1 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_hair_panel"> <panel name="avatar_hair_color_panel"> - <texture_picker label="Texture" name="Texture" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Texture" tool_tip="點擊以挑選圖片"/> </panel> <panel name="accordion_panel"> <accordion name="wearable_accordion"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml index 388fee9eb3..df85f7deb2 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_jacket_panel"> <panel name="avatar_jacket_color_panel"> - <texture_picker label="Upper Texture" name="Upper Fabric" tool_tip="點擊以挑選圖片"/> - <texture_picker label="Lower Texture" name="Lower Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="上半身材質" name="Upper Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="下半身材質" name="Lower Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml index d21c118195..b453fdc758 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_pants_panel"> <panel name="avatar_pants_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml index 24ed9b9acb..7fb8392836 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Profile Edit" name="edit_profile_panel"> +<panel label="檔案編輯" name="edit_profile_panel"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] @@ -37,17 +37,17 @@ <icon label="" name="2nd_life_edit_icon" tool_tip="Click to select an image"/> </panel> <panel name="first_life_image_panel"> - <text name="real_world_photo_title_text" value="Real World:"/> + <text name="real_world_photo_title_text" value="真實世界:"/> </panel> <icon label="" name="real_world_edit_icon" tool_tip="Click to select an image"/> <text name="title_homepage_text"> - Homepage: + 首頁: </text> <line_editor name="homepage_edit" value="http://"/> <text name="title_acc_status_text" value="My Account:"/> <text_editor name="acc_status_text" value="Resident. No payment info on file."/> <text name="my_account_link" value="[[URL] Go to My Dashboard]"/> - <text name="title_partner_text" value="My Partner:"/> + <text name="title_partner_text" value="我的配偶:"/> <panel name="partner_data_panel"> <text initial_value="(retrieving)" name="partner_text"/> </panel> @@ -58,7 +58,7 @@ <panel name="profile_me_buttons_panel"> <layout_stack name="bottom_panel_ls"> <layout_panel name="save_changes_btn_lp"> - <button label="Save Changes" name="save_btn"/> + <button label="儲存變更" name="save_btn"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> <button label="取銷" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml index 44b93504d1..321fb68756 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shirt_panel"> <panel name="avatar_shirt_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml index d1ba9625f1..7bf923b4ca 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shoes_panel"> <panel name="avatar_shoes_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml index 303aa80e11..096a83c871 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_skirt_panel"> <panel name="avatar_skirt_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml index 1e61a65788..dab132bad2 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_socks_panel"> <panel name="avatar_socks_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml index 47d5db4fca..82ab70bafc 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_underpants_panel"> <panel name="avatar_underpants_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml index cbfdcaae8e..b284668777 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_undershirt_panel"> <panel name="avatar_undershirt_color_panel"> - <texture_picker label="Texture" name="Fabric" tool_tip="點擊以挑選圖片"/> + <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open Color Picker"/> </panel> <panel name="accordion_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml index d68767d4d2..21b5c1c698 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml @@ -96,7 +96,7 @@ <string name="physics_desc_text"> Physics: </string> - <labeled_back_button label="儲存" name="back_btn" tool_tip="Return to Edit Outfit"/> + <labeled_back_button label="儲存" name="back_btn" tool_tip="回到編輯裝扮"/> <text name="edit_wearable_title" value="Editing Shape"/> <panel label="襯衫" name="wearable_type_panel"> <text name="description_text" value="Shape:"/> diff --git a/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml index 9ba578c1a1..1e3c18f522 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_control_panel.xml @@ -2,7 +2,7 @@ <panel name="panel_im_control_panel"> <layout_stack name="vertical_stack"> <layout_panel name="group_info_btn_panel"> - <button label="Group Profile" name="group_info_btn"/> + <button label="社團檔案" name="group_info_btn"/> </layout_panel> <layout_panel name="call_btn_panel"> <button label="Call Group" name="call_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml index c65b139cb5..2873d4cabb 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_general.xml @@ -37,10 +37,10 @@ Hover your mouse over the options for more help. </text> <combo_box name="active_title" tool_tip="Sets the title that appears in your avatar's name tag when this group is active."/> <check_box label="Receive group notices" name="receive_notices" tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you."/> - <check_box label="Show in my profile" name="list_groups_in_profile" tool_tip="Sets whether you want to show this group in your profile"/> + <check_box label="顯示在我的檔案中" name="list_groups_in_profile" tool_tip="Sets whether you want to show this group in your profile"/> <panel name="preferences_container"> <text name="group_settngs_label"> - Group + 社團 </text> <check_box label="Anyone can join" name="open_enrollement" tool_tip="Sets whether this group allows new members to join without being invited."/> <check_box label="Cost to join" name="check_enrollment_fee" tool_tip="Sets whether to require an enrollment fee to join the group"/> diff --git a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml index 90797e1473..4c65d2484c 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Group Profile" name="GroupInfo"> +<panel label="社團檔案" name="GroupInfo"> <panel.string name="default_needs_apply_text"> There are unsaved changes </panel.string> diff --git a/indra/newview/skins/default/xui/zh/panel_group_invite.xml b/indra/newview/skins/default/xui/zh/panel_group_invite.xml index 576760f747..c9b17b5d67 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_invite.xml @@ -22,6 +22,6 @@ <button label="Send Invitations" name="ok_button"/> <button label="取銷" name="cancel_button"/> <string name="GroupInvitation"> - Group Invitation + 社團邀請 </string> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml index 08a5e711d1..71f139a3e6 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml @@ -58,7 +58,7 @@ More land credits are needed to support land in use </text> <text name="group_money_heading"> - Group L$ + 社團 L$ </text> </panel> <tab_container name="group_money_tab_container"> diff --git a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml index 147c4859c6..175293cdf7 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_list_item.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="group_list_item"> <text name="group_name" value="未知"/> - <button name="profile_btn" tool_tip="View profile"/> + <button name="profile_btn" tool_tip="察看檔案"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_notices.xml b/indra/newview/skins/default/xui/zh/panel_group_notices.xml index a007c86063..b4d7e3608e 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_notices.xml @@ -38,7 +38,7 @@ Maximum 200 per group daily <text name="string"> Drag and drop item here to attach it: </text> - <button label="Inventory" name="open_inventory" tool_tip="Open Inventory"/> + <button label="收納區" name="open_inventory" tool_tip="開啟收納區"/> <button name="remove_attachment" tool_tip="Remove attachment from your notification"/> <button label="Send" label_selected="Send" name="send_notice"/> <group_drop_target name="drop_target" tool_tip="Drag an inventory item onto this target box to send it with this notice. You must have permission to copy and transfer the item in order to attach it."/> diff --git a/indra/newview/skins/default/xui/zh/panel_group_roles.xml b/indra/newview/skins/default/xui/zh/panel_group_roles.xml index 2b15f4813a..91f0f4125f 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_roles.xml @@ -64,7 +64,7 @@ things in this group. There's a broad variety of Abilities. </panel> <panel name="roles_footer"> <text name="static"> - Role Name + 角色名稱 </text> <text name="static3"> Role Title diff --git a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml index 8fdecad420..881f8eac0b 100644 --- a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml @@ -2,13 +2,13 @@ <panel name="panel_im_control_panel"> <layout_stack name="button_stack"> <layout_panel name="view_profile_btn_panel"> - <button label="Profile" name="view_profile_btn"/> + <button label="檔案" name="view_profile_btn"/> </layout_panel> <layout_panel name="add_friend_btn_panel"> <button label="加為朋友" name="add_friend_btn"/> </layout_panel> <layout_panel name="teleport_btn_panel"> - <button label="Teleport" name="teleport_btn" tool_tip="Offer to teleport this person"/> + <button label="瞬間傳送" name="teleport_btn" tool_tip="Offer to teleport this person"/> </layout_panel> <layout_panel name="share_btn_panel"> <button label="分享" name="share_btn"/> @@ -17,13 +17,13 @@ <button label="Pay" name="pay_btn"/> </layout_panel> <layout_panel name="call_btn_panel"> - <button label="Call" name="call_btn"/> + <button label="通話" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> - <button label="End Call" name="end_call_btn"/> + <button label="結束通話" name="end_call_btn"/> </layout_panel> <layout_panel name="voice_ctrls_btn_panel"> - <button label="Voice Controls" name="voice_ctrls_btn"/> + <button label="語音控制" name="voice_ctrls_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml index 16119f9e2c..d86ba7bc7c 100644 --- a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="landmark_info"> - <string name="title_create_landmark" value="Create Landmark"/> - <string name="title_edit_landmark" value="Edit Landmark"/> - <string name="title_landmark" value="Landmark"/> + <string name="title_create_landmark" value="創造地標"/> + <string name="title_edit_landmark" value="編輯地標"/> + <string name="title_landmark" value="地標"/> <string name="not_available" value="(N\A)"/> <string name="unknown" value="(未知)"/> <string name="public" value="(公開)"/> @@ -19,7 +19,7 @@ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </string> <button name="back_btn" tool_tip="Back"/> - <text name="title" value="Place Profile"/> + <text name="title" value="地點檔案"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> <text name="region_title" value="SampleRegion"/> @@ -29,12 +29,12 @@ <panel name="landmark_info_panel"> <text name="owner_label" value="擁有者:"/> <text name="creator_label" value="創造者:"/> - <text name="created_label" value="Created:"/> + <text name="created_label" value="創造於:"/> </panel> <panel name="landmark_edit_panel"> <text name="title_label" value="Title:"/> <text name="notes_label" value="My notes:"/> - <text name="folder_label" value="Landmark location:"/> + <text name="folder_label" value="地標位置:"/> </panel> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/zh/panel_landmarks.xml b/indra/newview/skins/default/xui/zh/panel_landmarks.xml index 45f8edc355..0ea3ea2226 100644 --- a/indra/newview/skins/default/xui/zh/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/zh/panel_landmarks.xml @@ -2,8 +2,8 @@ <panel name="Landmarks"> <accordion name="landmarks_accordion"> <accordion_tab name="tab_favorites" title="Favorites bar"/> - <accordion_tab name="tab_landmarks" title="My Landmarks"/> - <accordion_tab name="tab_inventory" title="My Inventory"/> + <accordion_tab name="tab_landmarks" title="我的地標"/> + <accordion_tab name="tab_inventory" title="我的收納區"/> <accordion_tab name="tab_library" title="Library"/> </accordion> <panel name="bottom_panel"> @@ -12,10 +12,10 @@ <menu_button name="options_gear_btn" tool_tip="Show additional options"/> </layout_panel> <layout_panel name="add_btn_panel"> - <button name="add_btn" tool_tip="Add new landmark"/> + <button name="add_btn" tool_tip="添加新地標"/> </layout_panel> <layout_panel name="trash_btn_panel"> - <dnd_button name="trash_btn" tool_tip="Remove selected landmark"/> + <dnd_button name="trash_btn" tool_tip="移除所選擇的地標"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml index 2533b90203..f7dada226f 100644 --- a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml @@ -4,25 +4,25 @@ Fetching [ITEM_COUNT] Items... [FILTER] </panel.string> <panel.string name="ItemcountCompleted"> - [ITEM_COUNT] Items [FILTER] + [ITEM_COUNT] 物品 [FILTER] </panel.string> <text name="ItemcountText"> - Items: + 物品: </text> - <filter_editor label="Filter Inventory" name="inventory search editor"/> + <filter_editor label="收納區過濾器" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="MY INVENTORY" name="All Items"/> - <recent_inventory_panel label="RECENT" name="Recent Items"/> + <inventory_panel label="我的收納區" name="All Items"/> + <recent_inventory_panel label="最近" name="Recent Items"/> </tab_container> <layout_stack name="bottom_panel"> <layout_panel name="options_gear_btn_panel"> - <menu_button name="options_gear_btn" tool_tip="Show additional options"/> + <menu_button name="options_gear_btn" tool_tip="顯示額外選項"/> </layout_panel> <layout_panel name="add_btn_panel"> - <button name="add_btn" tool_tip="Add new item"/> + <button name="add_btn" tool_tip="添加新物品"/> </layout_panel> <layout_panel name="trash_btn_panel"> - <dnd_button name="trash_btn" tool_tip="Remove selected item"/> + <dnd_button name="trash_btn" tool_tip="移除所選擇的物品"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_me.xml b/indra/newview/skins/default/xui/zh/panel_me.xml index 7a176a92c6..abdbfd7429 100644 --- a/indra/newview/skins/default/xui/zh/panel_me.xml +++ b/indra/newview/skins/default/xui/zh/panel_me.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="My Profile" name="panel_me"> +<panel label="我的檔案" name="panel_me"> <tab_container name="tabs"> - <panel label="MY PROFILE" name="panel_profile"/> + <panel label="我的檔案" name="panel_profile"/> <panel label="MY PICKS" name="panel_picks"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml index 9e72dc9daf..f3163e3c19 100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml @@ -24,7 +24,7 @@ </text> <check_box initial_value="false" label="Auto Scale Media on Face of Object" name="auto_scale"/> <text name="size_label"> - Size: + 尺寸: </text> <text name="X_label"> X diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml index b682ffda7d..be9711c8a6 100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml @@ -17,7 +17,7 @@ <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_owner_interact"/> <check_box initial_value="false" label="Show Control Bar" name="perms_owner_control"/> <text name="group_label"> - Group: + 社團: </text> <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_group_interact"/> <check_box initial_value="false" label="Show Control Bar" name="perms_group_control"/> diff --git a/indra/newview/skins/default/xui/zh/panel_my_profile.xml b/indra/newview/skins/default/xui/zh/panel_my_profile.xml index f36608efb5..e26ccdef73 100644 --- a/indra/newview/skins/default/xui/zh/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_my_profile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Profile" name="panel_profile"> +<panel label="檔案" name="panel_profile"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] @@ -33,7 +33,7 @@ <text name="name_descr_text"> Display Name </text> - <button label="Profile" name="see_profile_btn" tool_tip="See profile for this avatar"/> + <button label="檔案" name="see_profile_btn" tool_tip="察看這位化身的檔案"/> </panel> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml index c4bcf605e3..26e03c9b3b 100644 --- a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml @@ -3,10 +3,10 @@ <panel name="navigation_panel"> <pull_button name="back_btn" tool_tip="Go back to previous location"/> <pull_button name="forward_btn" tool_tip="Go forward one location"/> - <button name="home_btn" tool_tip="Teleport to my home location"/> - <location_input label="Location" name="location_combo"/> - <search_combo_box label="Search" name="search_combo_box" tool_tip="Search"> - <combo_editor label="Search [SECOND_LIFE]" name="search_combo_editor"/> + <button name="home_btn" tool_tip="瞬間傳送到我家的位置"/> + <location_input label="位置" name="location_combo"/> + <search_combo_box label="搜尋" name="search_combo_box" tool_tip="搜尋"> + <combo_editor label="搜尋 [SECOND_LIFE]" name="search_combo_editor"/> </search_combo_box> </panel> <favorites_bar name="favorite" tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"> diff --git a/indra/newview/skins/default/xui/zh/panel_notes.xml b/indra/newview/skins/default/xui/zh/panel_notes.xml index 12182b521e..cf804b517d 100644 --- a/indra/newview/skins/default/xui/zh/panel_notes.xml +++ b/indra/newview/skins/default/xui/zh/panel_notes.xml @@ -5,10 +5,10 @@ <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="My private notes:"/> - <text name="status_message2" value="Allow this person to:"/> - <check_box label="See my online status" name="status_check"/> - <check_box label="See me on the map" name="map_check"/> - <check_box label="Edit, delete or take my objects" name="objects_check"/> + <text name="status_message2" value="允許這個人可以:"/> + <check_box label="看到我上線狀態" name="status_check"/> + <check_box label="在地圖上看見我" name="map_check"/> + <check_box label="邊輯,刪除或取下我的物件" name="objects_check"/> </panel> </scroll_container> </layout_panel> @@ -21,13 +21,13 @@ <button label="IM" name="im" tool_tip="Open instant message session"/> </layout_panel> <layout_panel name="call_btn_lp"> - <button label="Call" name="call" tool_tip="Call this Resident"/> + <button label="通話" name="call" tool_tip="與這位居民通話"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> <button label="地圖" name="show_on_map_btn" tool_tip="Show the Resident on the map"/> </layout_panel> <layout_panel name="teleport_btn_lp"> - <button label="Teleport" name="teleport" tool_tip="Offer teleport"/> + <button label="瞬間傳送" name="teleport" tool_tip="Offer teleport"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml b/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml index fdc489f375..a5d3afccb9 100644 --- a/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml +++ b/indra/newview/skins/default/xui/zh/panel_online_status_toast.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> +<panel label="朋友_上線_狀態" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml index 97e423b8cc..6ceaf447a7 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- Side tray Outfit Edit panel --> <panel name="outfit_edit"> - <string name="No Outfit" value="No Outfit"/> - <string name="unsaved_changes" value="Unsaved Changes"/> - <string name="now_editing" value="Now Editing"/> + <string name="No Outfit" value="無裝扮"/> + <string name="unsaved_changes" value="變更未儲存"/> + <string name="now_editing" value="現在編輯中"/> <panel.string name="not_available"> (N\A) </panel.string> @@ -11,15 +11,15 @@ (未知) </panel.string> <string name="Filter.All" value="全部"/> - <string name="Filter.Clothes/Body" value="Clothes/Body"/> - <string name="Filter.Objects" value="Objects"/> - <string name="Filter.Clothing" value="Clothing"/> - <string name="Filter.Bodyparts" value="Body parts"/> + <string name="Filter.Clothes/Body" value="衣服 / 身體"/> + <string name="Filter.Objects" value="物件"/> + <string name="Filter.Clothing" value="服裝"/> + <string name="Filter.Bodyparts" value="身體部位"/> <string name="replace_body_part" value="Click to replace your existing shape"/> - <text name="title" value="Edit Outfit"/> + <text name="title" value="編輯裝扮"/> <panel name="header_panel"> <panel name="outfit_name_and_status"> - <text name="status" value="Now editing..."/> + <text name="status" value="現在編輯中..."/> <text name="curr_outfit_name" value="[Current Outfit]"/> </panel> </panel> @@ -27,10 +27,10 @@ <layout_panel name="outfit_wearables_panel"> <layout_stack name="filter_panels"> <layout_panel name="add_button_and_combobox"> - <button label="Add More..." name="show_add_wearables_btn" tool_tip="Open/Close"/> + <button label="Add More..." name="show_add_wearables_btn" tool_tip="開啟 / 關閉"/> </layout_panel> <layout_panel name="filter_panel"> - <filter_editor label="Filter Inventory Wearables" name="look_item_filter"/> + <filter_editor label="收納區可穿著過濾器" name="look_item_filter"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml index 486b81e024..dfd81a85cc 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Things" name="Outfits"> <panel.string name="wear_outfit_tooltip"> - Wear selected outfit + 穿上所選擇的裝扮 </panel.string> <panel.string name="wear_items_tooltip"> Wear selected items </panel.string> <tab_container name="appearance_tabs"> - <panel label="MY OUTFITS" name="outfitslist_tab"/> + <panel label="我的裝扮" name="outfitslist_tab"/> <panel label="WEARING" name="cof_tab"/> </tab_container> <panel name="bottom_panel"> diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml index af417a79ef..92ec774f9b 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_inventory_gear_default.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="Replace Current Outfit" name="wear"/> - <menu_item_call label="Remove From Current Outfit" name="remove"/> + <menu_item_call label="取代目前的裝扮" name="wear"/> + <menu_item_call label="由目前的裝扮移除" name="remove"/> <menu_item_call label="更名" name="rename"/> - <menu_item_call label="Remove Link" name="remove_link"/> - <menu_item_call label="Delete Outfit" name="delete"/> + <menu_item_call label="移除聯結" name="remove_link"/> + <menu_item_call label="刪除裝扮" name="delete"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_list.xml b/indra/newview/skins/default/xui/zh/panel_outfits_list.xml index 36770c52c7..a4b041469b 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfits_list.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> <panel name="bottom_panel"> - <menu_button name="options_gear_btn" tool_tip="Show additional options"/> - <button name="trash_btn" tool_tip="Delete selected outfit"/> + <menu_button name="options_gear_btn" tool_tip="顯示額外選項"/> + <button name="trash_btn" tool_tip="刪除所選擇的裝扮"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml index 49c36614db..a1fec08940 100644 --- a/indra/newview/skins/default/xui/zh/panel_people.xml +++ b/indra/newview/skins/default/xui/zh/panel_people.xml @@ -5,8 +5,8 @@ <string name="no_filtered_recent_people" value="Didn't find what you're looking for? Try [secondlife:///app/search/people/[SEARCH_TERM] Search]."/> <string name="no_one_near" value="No one nearby. Looking for people to hang out with? Try [secondlife:///app/search/people Search] or the [secondlife:///app/worldmap World Map]."/> <string name="no_one_filtered_near" value="Didn't find what you're looking for? Try [secondlife:///app/search/people/[SEARCH_TERM] Search]."/> - <string name="no_friends_online" value="No friends online"/> - <string name="no_friends" value="No friends"/> + <string name="no_friends_online" value="無朋友上線"/> + <string name="no_friends" value="無朋友"/> <string name="no_friends_msg"> Find friends using [secondlife:///app/search/people Search] or right-click on a Resident to add them as a friend. Looking for people to hang out with? Try the [secondlife:///app/worldmap World Map]. @@ -22,13 +22,13 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M <string name="AltMiniMapToolTipMsg" value="[REGION](Double-click to teleport, shift-drag to pan)"/> <filter_editor label="Filter" name="filter_input"/> <tab_container name="tabs"> - <panel label="NEARBY" name="nearby_panel"> + <panel label="附近" name="nearby_panel"> <panel label="bottom_panel" name="bottom_panel"> - <menu_button name="nearby_view_sort_btn" tool_tip="Options"/> + <menu_button name="nearby_view_sort_btn" tool_tip="選項"/> <button name="add_friend_btn" tool_tip="Add selected Resident to your friends List"/> </panel> </panel> - <panel label="MY FRIENDS" name="friends_panel"> + <panel label="我的朋友" name="friends_panel"> <accordion name="friends_accordion"> <accordion_tab name="tab_online" title="上線"/> <accordion_tab name="tab_all" title="全部"/> @@ -36,7 +36,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M <panel label="bottom_panel" name="bottom_panel"> <layout_stack name="bottom_panel"> <layout_panel name="options_gear_btn_panel"> - <menu_button name="friends_viewsort_btn" tool_tip="Show additional options"/> + <menu_button name="friends_viewsort_btn" tool_tip="顯示額外選項"/> </layout_panel> <layout_panel name="add_btn_panel"> <button name="add_btn" tool_tip="Offer friendship to a Resident"/> @@ -47,16 +47,16 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M </layout_stack> </panel> </panel> - <panel label="MY GROUPS" name="groups_panel"> + <panel label="我的社團" name="groups_panel"> <panel label="bottom_panel" name="bottom_panel"> - <menu_button name="groups_viewsort_btn" tool_tip="Options"/> + <menu_button name="groups_viewsort_btn" tool_tip="選項"/> <button name="plus_btn" tool_tip="Join group/Create new group"/> <button name="activate_btn" tool_tip="Activate selected group"/> </panel> </panel> <panel label="RECENT" name="recent_panel"> <panel label="bottom_panel" name="bottom_panel"> - <menu_button name="recent_viewsort_btn" tool_tip="Options"/> + <menu_button name="recent_viewsort_btn" tool_tip="選項"/> <button name="add_friend_btn" tool_tip="Add selected Resident to your friends List"/> </panel> </panel> @@ -64,24 +64,24 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M <panel name="button_bar"> <layout_stack name="bottom_bar_ls"> <layout_panel name="view_profile_btn_lp"> - <button label="Profile" name="view_profile_btn" tool_tip="Show picture, groups, and other Residents information"/> + <button label="檔案" name="view_profile_btn" tool_tip="Show picture, groups, and other Residents information"/> </layout_panel> <layout_panel name="chat_btn_lp"> <button label="IM" name="im_btn" tool_tip="Open instant message session"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="Call" name="call_btn" tool_tip="Call this Resident"/> + <button label="通話" name="call_btn" tool_tip="Call this Resident"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="分享" name="share_btn" tool_tip="Share an inventory item"/> + <button label="分享" name="share_btn" tool_tip="分享一個收納區物品"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="Teleport" name="teleport_btn" tool_tip="Offer teleport"/> + <button label="瞬間傳送" name="teleport_btn" tool_tip="Offer teleport"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls1"> <layout_panel name="group_info_btn_lp"> - <button label="Group Profile" name="group_info_btn" tool_tip="Show group information"/> + <button label="社團檔案" name="group_info_btn" tool_tip="顯示社團資訊"/> </layout_panel> <layout_panel name="chat_btn_lp"> <button label="Group Chat" name="chat_btn" tool_tip="Open chat session"/> diff --git a/indra/newview/skins/default/xui/zh/panel_pick_info.xml b/indra/newview/skins/default/xui/zh/panel_pick_info.xml index 75ecdb99a5..44ae5703c6 100644 --- a/indra/newview/skins/default/xui/zh/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_pick_info.xml @@ -11,7 +11,7 @@ <panel name="buttons"> <layout_stack name="layout_stack1"> <layout_panel name="layout_panel1"> - <button label="Teleport" name="teleport_btn"/> + <button label="瞬間傳送" name="teleport_btn"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> <button label="地圖" name="show_on_map_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_picks.xml b/indra/newview/skins/default/xui/zh/panel_picks.xml index 28a47ed003..3b356967f9 100644 --- a/indra/newview/skins/default/xui/zh/panel_picks.xml +++ b/indra/newview/skins/default/xui/zh/panel_picks.xml @@ -19,7 +19,7 @@ <button label="資訊" name="info_btn" tool_tip="Show pick information"/> </layout_panel> <layout_panel name="teleport_btn_lp"> - <button label="Teleport" name="teleport_btn" tool_tip="Teleport to the corresponding area"/> + <button label="瞬間傳送" name="teleport_btn" tool_tip="Teleport to the corresponding area"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> <button label="地圖" name="show_on_map_btn" tool_tip="Show the corresponding area on the World Map"/> diff --git a/indra/newview/skins/default/xui/zh/panel_place_profile.xml b/indra/newview/skins/default/xui/zh/panel_place_profile.xml index cef56eb907..b0919c9151 100644 --- a/indra/newview/skins/default/xui/zh/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_place_profile.xml @@ -5,18 +5,18 @@ <string name="anyone" value="Anyone"/> <string name="available" value="available"/> <string name="allocated" value="allocated"/> - <string name="title_place" value="Place Profile"/> - <string name="title_teleport_history" value="Teleport History"/> + <string name="title_place" value="地點檔案"/> + <string name="title_teleport_history" value="瞬間傳送歷史紀錄"/> <string name="not_available" value="(N\A)"/> <string name="unknown" value="(未知)"/> <string name="public" value="(公開)"/> <string name="none_text" value="(無)"/> <string name="sale_pending_text" value="(Sale Pending)"/> - <string name="group_owned_text" value="(Group Owned)"/> + <string name="group_owned_text" value="(社團所擁有)"/> <string name="price_text" value="L$"/> <string name="area_text" value="m²"/> <string name="all_residents_text" value="全部居民"/> - <string name="group_text" value="Group"/> + <string name="group_text" value="社團"/> <string name="can_resell"> Purchased land in this region may be resold. </string> @@ -42,7 +42,7 @@ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </string> <button name="back_btn" tool_tip="Back"/> - <text name="title" value="Place Profile"/> + <text name="title" value="地點檔案"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> <text name="region_title" value="SampleRegion"/> @@ -58,7 +58,7 @@ <text name="rating_value" value="未知"/> <text name="voice_label" value="Voice:"/> <text name="voice_value" value="On"/> - <text name="fly_label" value="Fly:"/> + <text name="fly_label" value="飛行:"/> <text name="fly_value" value="On"/> <text name="push_label" value="Push:"/> <text name="push_value" value="Off"/> @@ -81,7 +81,7 @@ <text name="region_rating" value="Adult"/> <text name="region_owner_label" value="擁有者:"/> <text name="region_owner" value="moose Van Moose extra long name moose"/> - <text name="region_group_label" value="Group:"/> + <text name="region_group_label" value="社團:"/> <text name="region_group"> The Mighty Moose of mooseville soundvillemoose </text> diff --git a/indra/newview/skins/default/xui/zh/panel_places.xml b/indra/newview/skins/default/xui/zh/panel_places.xml index 9a038c8b04..10524bc5f0 100644 --- a/indra/newview/skins/default/xui/zh/panel_places.xml +++ b/indra/newview/skins/default/xui/zh/panel_places.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Places" name="places panel"> - <string name="landmarks_tab_title" value="MY LANDMARKS"/> - <string name="teleport_history_tab_title" value="TELEPORT HISTORY"/> - <filter_editor label="Filter My Places" name="Filter"/> +<panel label="地點" name="places panel"> + <string name="landmarks_tab_title" value="我的地標"/> + <string name="teleport_history_tab_title" value="瞬間傳送歷史紀錄"/> + <filter_editor label="我的地點過濾器" name="Filter"/> <panel name="button_panel"> <layout_stack name="bottom_bar_ls0"> <layout_panel name="lp1"> <layout_stack name="bottom_bar_ls1"> <layout_panel name="teleport_btn_lp"> - <button label="Teleport" name="teleport_btn" tool_tip="Teleport to the selected area"/> + <button label="瞬間傳送" name="teleport_btn" tool_tip="瞬間傳送到所選擇的區域"/> </layout_panel> <layout_panel name="chat_btn_lp"> <button label="地圖" name="map_btn" tool_tip="Show the corresponding area on the World Map"/> @@ -18,15 +18,15 @@ <layout_panel name="lp2"> <layout_stack name="bottom_bar_ls3"> <layout_panel name="edit_btn_lp"> - <button label="編輯" name="edit_btn" tool_tip="Edit landmark information"/> + <button label="編輯" name="edit_btn" tool_tip="編輯地標資訊"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <menu_button name="overflow_btn" tool_tip="Show additional options"/> + <menu_button name="overflow_btn" tool_tip="顯示額外選項"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> <layout_panel name="profile_btn_lp"> - <button label="Profile" name="profile_btn" tool_tip="Show place profile"/> + <button label="檔案" name="profile_btn" tool_tip="顯示地點檔案"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_close_ls3"> 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 cad8d75470..34b0e3800f 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml @@ -13,7 +13,7 @@ <check_box label="Enable plain text IM and chat history" name="plain_text_chat_history"/> <check_box label="聊天泡泡" name="bubble_text_chat"/> <text name="show_ims_in_label"> - Show IMs in: + 顯示 IMs 於: </text> <text name="requires_restart_label"> (須重新啟動) @@ -26,7 +26,7 @@ Enable incoming chat popups: </text> <check_box label="Group Chats" name="EnableGroupChatPopups" tool_tip="Check to see popups when a Group Chat message arrives"/> - <check_box label="IM Chats" name="EnableIMChatPopups" tool_tip="Check to see popups when an instant message arrives"/> + <check_box label="IM 聊天" name="EnableIMChatPopups" tool_tip="Check to see popups when an instant message arrives"/> <spinner label="Nearby chat toasts life time:" name="nearby_toasts_lifetime"/> <spinner label="Nearby chat toasts fading time:" name="nearby_toasts_fadingtime"/> <text name="translate_chb_label"> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml b/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml index 261622d136..8d92eadd20 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml @@ -34,7 +34,7 @@ <color_swatch name="background" tool_tip="挑選名稱標籤顏色"/> <slider label="不透明度:" name="bubble_chat_opacity" tool_tip="挑選名稱標籤不透明度"/> <text name="floater_opacity"> - Floater Opacity: + 浮動視窗不透明度: </text> <slider label="啟用:" name="active"/> <slider label="停用:" name="inactive"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml index 32b3508af5..e53d2a8c06 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml @@ -46,7 +46,7 @@ <check_box label="My name" name="show_my_name_checkbox1"/> <check_box label="Usernames" name="show_slids" tool_tip="Show username, like bobsmith123"/> <check_box label="Group titles" name="show_all_title_checkbox1" tool_tip="Show group titles, like Officer or Member"/> - <check_box label="Highlight friends" name="show_friends" tool_tip="Highlight the name tags of your friends"/> + <check_box label="高亮顯示朋友" name="show_friends" tool_tip="高亮顯示你朋友的名稱標籤"/> <check_box label="View Display Names" name="display_names_check" tool_tip="Check to use display names in chat, IM, name tags, etc."/> <text name="inworld_typing_rg_label"> Pressing letter keys: 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 642edff336..68e149d866 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml @@ -35,8 +35,8 @@ <combo_box name="Reflections"> <combo_box.item label="Minimal" name="0"/> <combo_box.item label="Terrain and trees" name="1"/> - <combo_box.item label="All static objects" name="2"/> - <combo_box.item label="All avatars and objects" name="3"/> + <combo_box.item label="全部靜態物件" name="2"/> + <combo_box.item label="全部化身與物件" name="3"/> <combo_box.item label="Everything" name="4"/> </combo_box> <slider label="Avatar Physics:" name="AvatarPhysicsDetail"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml index acd0a54ebf..ff582d774b 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml @@ -17,7 +17,7 @@ <check_box label="Tap-tap-hold to run" name="tap_tap_hold_to_run"/> <check_box label="Double-Click to:" name="double_click_chkbox"/> <radio_group name="double_click_action"> - <radio_item label="Teleport" name="radio_teleport"/> + <radio_item label="瞬間傳送" name="radio_teleport"/> <radio_item label="Auto-pilot" name="radio_autopilot"/> </radio_group> <button label="其他設備" name="joystick_setup_button"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml index 847798e7a0..e0e0911872 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="溝通" name="im"> <panel.string name="log_in_to_change"> - log in to change + 登入以改變 </panel.string> <button label="清除歷史紀錄" name="clear_cache" tool_tip="清除登入圖像、最後位置、瞬間傳送紀錄、網頁及材質快取"/> <text name="cache_size_label_l"> @@ -9,14 +9,14 @@ </text> <check_box label="將我顯示在搜尋的結果中" name="online_searchresults"/> <check_box label="只有我的朋友和社團知道我在線上" name="online_visibility"/> - <check_box label="Only friends and groups can call or IM me" name="voice_call_friends_only_check"/> - <check_box label="Switch off microphone when ending calls" name="auto_disengage_mic_check"/> - <check_box label="Show my Favorite Landmarks at Login (via 'Start At' drop-down menu)" name="favorites_on_login_check"/> + <check_box label="只有我的朋友和社團可以 IM 或與我通話。" name="voice_call_friends_only_check"/> + <check_box label="當通話結束時關閉麥克風" name="auto_disengage_mic_check"/> + <check_box label="登入時顯示我最愛的地標位置(經由 '開始於' 的下拉式選單)" name="favorites_on_login_check"/> <text name="Logs:"> 聊天紀錄: </text> <check_box label="儲存附近的聊天紀錄到我的電腦" name="log_nearby_chat"/> - <check_box label="Save IM logs on my computer" name="log_instant_messages"/> + <check_box label="儲存 IM 紀錄到我的電腦中" name="log_instant_messages"/> <check_box label="添加時間戳記到聊天紀錄的每一行" name="show_timestamps_check_im"/> <check_box label="添加時間戳記到紀錄檔檔名。" name="logfile_name_datestamp"/> <text name="log_path_desc"> diff --git a/indra/newview/skins/default/xui/zh/panel_profile.xml b/indra/newview/skins/default/xui/zh/panel_profile.xml index 88cd3a0e16..fafbf855de 100644 --- a/indra/newview/skins/default/xui/zh/panel_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_profile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Profile" name="panel_profile"> +<panel label="檔案" name="panel_profile"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] @@ -30,15 +30,15 @@ <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> </panel> <panel name="first_life_image_panel"> - <text name="title_rw_descr_text" value="Real World:"/> + <text name="title_rw_descr_text" value="真實世界:"/> </panel> <text name="title_member_text" value="Resident Since:"/> <text name="title_acc_status_text" value="Account Status:"/> - <text name="title_partner_text" value="Partner:"/> + <text name="title_partner_text" value="配偶:"/> <panel name="partner_data_panel"> <text initial_value="(retrieving)" name="partner_text"/> </panel> - <text name="title_groups_text" value="Groups:"/> + <text name="title_groups_text" value="社團:"/> </panel> </scroll_container> </layout_panel> @@ -53,10 +53,10 @@ <button label="IM" name="im" tool_tip="Open instant message session"/> </layout_panel> <layout_panel name="call_btn_lp"> - <button label="Call" name="call" tool_tip="Call this Resident"/> + <button label="通話" name="call" tool_tip="與這位居民通話"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="Teleport" name="teleport" tool_tip="Offer teleport"/> + <button label="瞬間傳送" name="teleport" tool_tip="Offer teleport"/> </layout_panel> <layout_panel name="overflow_btn_lp"> <menu_button label="▼" name="overflow_btn" tool_tip="Pay money to or share inventory with the Resident"/> diff --git a/indra/newview/skins/default/xui/zh/panel_profile_view.xml b/indra/newview/skins/default/xui/zh/panel_profile_view.xml index 0f30d5dcbe..a8d7c8d6d1 100644 --- a/indra/newview/skins/default/xui/zh/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/zh/panel_profile_view.xml @@ -13,7 +13,7 @@ <button name="copy_to_clipboard" tool_tip="覆製到剪貼簿"/> <text name="user_label" value="Username:"/> <tab_container name="tabs"> - <panel label="PROFILE" name="panel_profile"/> + <panel label="檔案" name="panel_profile"/> <panel label="PICKS" name="panel_picks"/> <panel label="NOTES & PRIVACY" name="panel_notes"/> </tab_container> diff --git a/indra/newview/skins/default/xui/zh/panel_region_debug.xml b/indra/newview/skins/default/xui/zh/panel_region_debug.xml index 892b743f57..dee3e3045f 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_debug.xml @@ -21,7 +21,7 @@ </line_editor> <button label="Choose" name="choose_avatar_btn"/> <text name="options_text_lbl"> - Options: + 選項: </text> <check_box label="With scripts" name="return_scripts" tool_tip="Return only objects which have scripts"/> <check_box label="On someone else's land" name="return_other_land" tool_tip="Return only objects which are on land belonging to someone else"/> diff --git a/indra/newview/skins/default/xui/zh/panel_region_estate.xml b/indra/newview/skins/default/xui/zh/panel_region_estate.xml index 687135bf65..c1e43cef48 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_estate.xml @@ -24,11 +24,11 @@ </text> <check_box label="Payment Information on File" name="limit_payment" tool_tip="Ban unidentified Residents"/> <check_box label="年齡驗證" name="limit_age_verified" tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."/> - <check_box label="Allow Voice Chat" name="voice_chat_check"/> - <check_box label="Allow Direct Teleport" name="allow_direct_teleport"/> + <check_box label="允許語音聊天" name="voice_chat_check"/> + <check_box label="允許直接瞬間傳送" name="allow_direct_teleport"/> <button label="套用" name="apply_btn"/> - <button label="Send Message To Estate..." name="message_estate_btn"/> - <button label="Kick Resident from Estate..." name="kick_user_from_estate_btn"/> + <button label="瞬間傳送訊息到領地..." name="message_estate_btn"/> + <button label="由領地將居民踢除..." name="kick_user_from_estate_btn"/> <text name="estate_manager_label"> 領地管理員: </text> diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml index ce69ec59c4..f2ccb6e1cf 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml @@ -36,8 +36,8 @@ <icons_combo_box.item label="一般" name="PG" value="13"/> </icons_combo_box> <button label="套用" name="apply_btn"/> - <button label="Teleport Home One Resident..." name="kick_btn"/> - <button label="Teleport Home All Residents..." name="kick_all_btn"/> - <button label="Send Message To Region..." name="im_btn"/> - <button label="Manage Telehub..." name="manage_telehub_btn"/> + <button label="強制瞬間傳送一位居民回家..." name="kick_btn"/> + <button label="強制瞬間傳送所有居民回家..." name="kick_all_btn"/> + <button label="傳送訊息到地區..." name="im_btn"/> + <button label="管理瞬間傳送中心..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_texture.xml b/indra/newview/skins/default/xui/zh/panel_region_texture.xml index 42d70fddb8..7b6152121f 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_texture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Ground Textures" name="Textures"> +<panel label="地面材質" name="Textures"> <text name="region_text_lbl"> 地區: </text> @@ -7,7 +7,7 @@ 未知 </text> <text name="detail_texture_text"> - Terrain Textures (requires 512x512, 24 bit .tga files) + 地形材質(須 512x512,24 位元 .tga 檔格式) </text> <text name="height_text_lbl"> 1 (Low) 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 b0f1bdb337..03b845a76c 100644 --- a/indra/newview/skins/default/xui/zh/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_ed.xml @@ -19,29 +19,29 @@ Select an editor by setting the environment variable LL_SCRIPT_EDITOR or the ExternalEditor setting. </panel.string> <menu_bar name="script_menu"> - <menu label="File" name="File"> + <menu label="檔案" name="File"> <menu_item_call label="儲存" name="Save"/> - <menu_item_call label="Revert All Changes" name="Revert All Changes"/> + <menu_item_call label="還原全部變更" name="Revert All Changes"/> </menu> <menu label="編輯" name="Edit"> <menu_item_call label="復原" name="Undo"/> - <menu_item_call label="Redo" name="Redo"/> + <menu_item_call label="重做" name="Redo"/> <menu_item_call label="剪下" name="Cut"/> <menu_item_call label="覆製" name="Copy"/> <menu_item_call label="貼上" name="Paste"/> <menu_item_call label="全選" name="Select All"/> - <menu_item_call label="Deselect" name="Deselect"/> + <menu_item_call label="取銷選擇" name="Deselect"/> <menu_item_call label="搜尋 / 取代..." name="Search / Replace..."/> </menu> - <menu label="Help" name="Help"> - <menu_item_call label="Help..." name="Help..."/> - <menu_item_call label="Keyword Help..." name="Keyword Help..."/> + <menu label="幫助" name="Help"> + <menu_item_call label="幫助..." name="Help..."/> + <menu_item_call label="關鍵字幫助..." name="Keyword Help..."/> </menu> </menu_bar> <text_editor name="Script Editor"> 載入中... </text_editor> - <combo_box label="Insert..." name="Insert..."/> + <combo_box label="插入..." name="Insert..."/> <button label="儲存" label_selected="儲存" name="Save_btn"/> <button label="編輯..." name="Edit_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml index 5276466117..32cc2f9a5d 100644 --- a/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_limits_my_avatar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="MY AVATAR" name="script_limits_my_avatar_panel"> +<panel label="我的化身" name="script_limits_my_avatar_panel"> <text name="script_memory"> Avatar Script Usage </text> @@ -7,10 +7,10 @@ 載入中... </text> <scroll_list name="scripts_list"> - <scroll_list.columns label="Size (kb)" name="size"/> + <scroll_list.columns label="尺寸(kb)" name="size"/> <scroll_list.columns label="URLs" name="urls"/> <scroll_list.columns label="物件名稱" name="name"/> - <scroll_list.columns label="Location" name="location"/> + <scroll_list.columns label="位置" name="location"/> </scroll_list> <button label="Refresh List" name="refresh_list_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml index 1dc8278db1..cbb40e52de 100644 --- a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml @@ -7,7 +7,7 @@ 載入中... </text> <scroll_list name="scripts_list"> - <scroll_list.columns label="Size (kb)" name="size"/> + <scroll_list.columns label="尺寸(kb)" name="size"/> <scroll_list.columns label="URLs" name="urls"/> <scroll_list.columns label="物件名稱" name="name"/> <scroll_list.columns label="Object Owner" name="owner"/> diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray.xml b/indra/newview/skins/default/xui/zh/panel_side_tray.xml index d99450b5be..d0169b7c2d 100644 --- a/indra/newview/skins/default/xui/zh/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/zh/panel_side_tray.xml @@ -6,24 +6,24 @@ <sidetray_tab description="首頁。" name="sidebar_home" tab_title="首頁"> <panel label="首頁" name="panel_home"/> </sidetray_tab> - <sidetray_tab description="Edit your public profile and Picks." name="sidebar_me" tab_title="My Profile"> + <sidetray_tab description="Edit your public profile and Picks." name="sidebar_me" tab_title="我的檔案"> <panel_container name="panel_container"> <panel label="自己" name="panel_me"/> </panel_container> </sidetray_tab> <sidetray_tab description="Find your friends, contacts and people nearby." name="sidebar_people" tab_title="People"> <panel_container name="panel_container"> - <panel label="Group Profile" name="panel_group_info_sidetray"/> + <panel label="社團檔案" name="panel_group_info_sidetray"/> <panel label="Blocked Residents & Objects" name="panel_block_list_sidetray"/> </panel_container> </sidetray_tab> <sidetray_tab description="Find places to go and places you've visited before." label="Places" name="sidebar_places" tab_title="Places"> <panel label="Places" name="panel_places"/> </sidetray_tab> - <sidetray_tab description="Browse your inventory." name="sidebar_inventory" tab_title="My Inventory"> - <panel label="Edit Inventory" name="sidepanel_inventory"/> + <sidetray_tab description="瀏覽你的收納區。" name="sidebar_inventory" tab_title="我的收納區"> + <panel label="編輯收納區" name="sidepanel_inventory"/> </sidetray_tab> - <sidetray_tab description="Change your appearance and current look." name="sidebar_appearance" tab_title="My Appearance"> + <sidetray_tab description="變更你的外觀與目前樣貌。" name="sidebar_appearance" tab_title="我的外觀"> <panel label="Edit Appearance" name="sidepanel_appearance"/> </sidetray_tab> </side_tray> diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml index 822b2b5894..cdd79da30c 100644 --- a/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/zh/panel_side_tray_tab_caption.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="sidetray_tab_panel"> <text name="sidetray_tab_title" value="側邊欄"/> - <button name="undock" tool_tip="Undock"/> - <button name="dock" tool_tip="Dock"/> - <button name="show_help" tool_tip="Show Help"/> + <button name="undock" tool_tip="不停泊固定"/> + <button name="dock" tool_tip="停泊固定"/> + <button name="show_help" tool_tip="顯示幫助"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml index 279a9869a8..1dd3acef5d 100644 --- a/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml +++ b/indra/newview/skins/default/xui/zh/panel_stand_stop_flying.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml--> <panel name="panel_stand_stop_flying"> - <button label="Stand" name="stand_btn" tool_tip="Click here to stand up."/> - <button label="Stop Flying" name="stop_fly_btn" tool_tip="Stop flying"/> + <button label="站立" name="stand_btn" tool_tip="點擊此處起立。"/> + <button label="停止飛行" name="stop_fly_btn" tool_tip="停止飛行"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_status_bar.xml b/indra/newview/skins/default/xui/zh/panel_status_bar.xml index 65740f1b6d..9a59d627d0 100644 --- a/indra/newview/skins/default/xui/zh/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_status_bar.xml @@ -17,11 +17,11 @@ </panel.string> <panel name="balance_bg"> <text name="balance" tool_tip="Click to refresh your L$ balance" value="L$20"/> - <button label="購買 L$" name="buyL" tool_tip="Click to buy more L$"/> + <button label="購買 L$" name="buyL" tool_tip="點擊以購買更多 L$"/> </panel> - <text name="TimeText" tool_tip="Current time (Pacific)"> + <text name="TimeText" tool_tip="目前時區(太平洋)"> 24:00 AM PST </text> - <button name="media_toggle_btn" tool_tip="Start/Stop All Media (Music, Video, Web pages)"/> + <button name="media_toggle_btn" tool_tip="開始 / 停止全部媒體(音樂、影片、網頁)"/> <button name="volume_btn" tool_tip="Global Volume Control"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml index 872a4584bf..6c81ede76c 100644 --- a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Teleport History"> <accordion name="history_accordion"> - <no_matched_tabs_text name="no_matched_teleports_msg" value="Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search]."/> - <no_visible_tabs_text name="no_teleports_msg" value="Teleport history is empty. Try [secondlife:///app/search/places/ Search]."/> + <no_matched_tabs_text name="no_matched_teleports_msg" value="沒有發現你要找的嗎?試試 [secondlife:///app/search/places/[SEARCH_TERM] 搜尋]。"/> + <no_visible_tabs_text name="no_teleports_msg" value="瞬間傳送紀錄是空白的。試試 [secondlife:///app/search/places/ 搜尋]。"/> <accordion_tab name="today" title="今天"/> <accordion_tab name="yesterday" title="昨天"/> <accordion_tab name="2_days_ago" title="前天"/> @@ -14,6 +14,6 @@ <accordion_tab name="6_months_and_older" title="半年前或更久"/> </accordion> <panel name="bottom_panel"> - <menu_button name="gear_btn" tool_tip="Show additional options"/> + <menu_button name="gear_btn" tool_tip="顯示額外選項"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml index 196f8c7a6a..91015bb8b0 100644 --- a/indra/newview/skins/default/xui/zh/role_actions.xml +++ b/indra/newview/skins/default/xui/zh/role_actions.xml @@ -37,7 +37,7 @@ <action description="Always allow 'Edit Terrain'" longdescription="Members in a Role with this Ability can edit terrain on a group-owned parcel, even if it's turned off in About Land > Options tab." name="land allow edit land" value="23"/> <action description="Always allow 'Fly'" longdescription="Members in a Role with this Ability can fly on a group-owned parcel, even if it's turned off in About Land > Options tab." name="land allow fly" value="24"/> <action description="Always allow 'Create Objects'" longdescription="Members in a Role with this Ability can create objects on a group-owned parcel, even if it's turned off in About Land > Options tab." name="land allow create" value="25"/> - <action description="Always allow 'Create Landmark'" longdescription="Members in a Role with this Ability can landmark a group-owned parcel, even if it's turned off in About Land > Options tab." name="land allow landmark" value="26"/> + <action description="總是允許 '創造地標'" longdescription="Members in a Role with this Ability can landmark a group-owned parcel, even if it's turned off in About Land > Options tab." name="land allow landmark" value="26"/> <action description="Allow 'Set Home to Here' on group land" longdescription="Members in a Role with this Ability can use World menu > Landmarks > Set Home to Here on a parcel deeded to this group." name="land allow set home" value="28"/> <action description="Allow 'Event Hosting' on group land" longdescription="Members in a Role with this Ability can select group owned parcels as venus when hosting an event." name="land allow host event" value="41"/> </action_set> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml index 1832886135..6f8f19b26d 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Outfits" name="appearance panel"> - <string name="No Outfit" value="No Outfit"/> - <string name="Unsaved Changes" value="Unsaved changes"/> - <string name="Now Wearing" value="Now wearing..."/> - <string name="Changing outfits" value="Changing outfits"/> +<panel label="裝扮" name="appearance panel"> + <string name="No Outfit" value="無裝扮"/> + <string name="Unsaved Changes" value="變更未儲存"/> + <string name="Now Wearing" value="現在穿上..."/> + <string name="Changing outfits" value="變更裝扮"/> <panel name="panel_currentlook"> <button label="E" name="editappearance_btn"/> <button label="O" name="openoutfit_btn"/> @@ -13,7 +13,7 @@ <text name="currentlook_name"> MyOutfit With a really Long Name like MOOSE </text> - <button label="" name="edit_outfit_btn" tool_tip="Edit this outfit"/> + <button label="" name="edit_outfit_btn" tool_tip="編輯這裝扮"/> </panel> - <filter_editor label="Filter Outfits" name="Filter"/> + <filter_editor label="裝扮過濾器" name="Filter"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml index 4230d60c45..4cc16ed250 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml @@ -4,16 +4,16 @@ <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> - <button label="Profile" name="info_btn" tool_tip="Show object profile"/> + <button label="檔案" name="info_btn" tool_tip="顯示物件檔案"/> </layout_panel> <layout_panel name="share_btn_lp"> <button label="分享" name="share_btn" tool_tip="Share an inventory item"/> </layout_panel> <layout_panel name="shop_btn_lp"> <button label="Shop" name="shop_btn" tool_tip="Open Marketplace webpage"/> - <button label="Wear" name="wear_btn" tool_tip="Wear seleceted outfit"/> + <button label="Wear" name="wear_btn" tool_tip="穿上所選擇的裝扮"/> <button label="Play" name="play_btn"/> - <button label="Teleport" name="teleport_btn" tool_tip="Teleport to the selected area"/> + <button label="瞬間傳送" name="teleport_btn" tool_tip="瞬間傳送到所選的區域"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml index d1332ddb7c..15437e3624 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="item properties" title="Item Profile"> +<panel name="item properties" title="物品檔案"> <panel.string name="unknown"> (未知) </panel.string> @@ -16,13 +16,13 @@ [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </panel.string> <panel.string name="origin_inventory"> - (Inventory) + (收納區) </panel.string> <panel.string name="origin_inworld"> (Inworld) </panel.string> - <text name="title" value="Item Profile"/> - <text name="origin" value="(Inventory)"/> + <text name="title" value="物品檔案"/> + <text name="origin" value="(收納區)"/> <scroll_container name="item_profile_scroll"> <panel label="" name="item_profile"> <text name="LabelItemNameTitle"> @@ -38,7 +38,7 @@ 擁有者: </text> <text name="LabelAcquiredTitle"> - Acquired: + 取得於: </text> <panel name="perms_inv"> <text name="perm_modify"> @@ -52,7 +52,7 @@ </text> <check_box label="覆製" name="CheckEveryoneCopy"/> <text name="GroupLabel"> - Group: + 社團: </text> <check_box label="分享" name="CheckShareWithGroup" tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."/> <text name="NextOwnerLabel"> @@ -64,8 +64,8 @@ </panel> <check_box label="出售" name="CheckPurchase"/> <combo_box name="combobox sale copy"> - <combo_box.item label="Copy" name="Copy"/> - <combo_box.item label="Original" name="Original"/> + <combo_box.item label="副本" name="Copy"/> + <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="價格: L$" name="Edit Cost"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml index 14d67d52b8..a011e29184 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="object properties" title="Object Profile"> +<panel name="object properties" title="物件檔案"> <panel.string name="text deed continued"> Deed </panel.string> @@ -36,7 +36,7 @@ <panel.string name="Sale Mixed"> Mixed Sale </panel.string> - <text name="title" value="Object Profile"/> + <text name="title" value="物件檔案"/> <text name="where" value="(Inworld)"/> <panel label="" name="properties_panel"> <text name="Name:"> @@ -52,7 +52,7 @@ 擁有者: </text> <text name="Group_label"> - Group: + 社團: </text> <button name="button set group" tool_tip="Choose a group to share this object's permissions"/> <name_box initial_value="載入中..." name="Group Name Proxy"/> @@ -77,7 +77,7 @@ <check_box label="覆製" name="checkbox allow everyone copy"/> <check_box label="移動" name="checkbox allow everyone move"/> <text name="GroupLabel"> - Group: + 社團: </text> <check_box label="分享" name="checkbox share with group" tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."/> <text name="NextOwnerLabel"> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index aa94035b94..c3f669c686 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -20,22 +20,22 @@ Second Life Support Portal </string> <string name="StartupDetectingHardware"> - Detecting hardware... + 硬體偵測中... </string> <string name="StartupLoading"> - Loading [APP_NAME]... + [APP_NAME] 載入中... </string> <string name="StartupClearingCache"> - Clearing cache... + 快取清除中... </string> <string name="StartupInitializingTextureCache"> - Initializing Texture Cache... + 材質快取初始化中... </string> <string name="StartupInitializingVFS"> - Initializing VFS... + VFS 初始化中... </string> <string name="ProgressRestoring"> - Restoring... + 回存中... </string> <string name="ProgressChangingResolution"> Changing Resolution... @@ -92,13 +92,13 @@ QuickTime initialized successfully. </string> <string name="LoginWaitingForRegionHandshake"> - Waiting for region handshake... + 地區交握等待中... </string> <string name="LoginConnectingToRegion"> - Connecting to region... + 地區聯結中... </string> <string name="LoginDownloadingClothing"> - Downloading clothing... + 服裝下載中... </string> <string name="InvalidCertificate"> The server returned an invalid or corrupt certificate. Please contact the Grid administrator. @@ -122,7 +122,7 @@ Network Error: Could not establish connection, please check your network connection. </string> <string name="LoginFailed"> - Login failed. + 登入失敗。 </string> <string name="Quit"> Quit @@ -137,13 +137,13 @@ Saving your settings... </string> <string name="LoggingOut"> - Logging out... + 登出中... </string> <string name="ShuttingDown"> - Shutting down... + 關閉中... </string> <string name="YouHaveBeenDisconnected"> - You have been disconnected from the region you were in. + 你已經被所在的地區中斷聯結。 </string> <string name="SentToInvalidRegion"> You were sent to an invalid region. @@ -164,7 +164,7 @@ Public </string> <string name="TooltipIsGroup"> - (Group) + (社團) </string> <string name="TooltipForSaleL$"> 出售: L$[AMOUNT] @@ -182,7 +182,7 @@ Not Safe </string> <string name="TooltipFlagNoFly"> - No Fly + 禁止飛行 </string> <string name="TooltipFlagGroupScripts"> Group Scripts @@ -198,7 +198,7 @@ </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipHttpUrl"> - Click to view this web page + 點擊以察看這個網頁 </string> <string name="TooltipSLURL"> Click to view this location's information @@ -216,7 +216,7 @@ Click to unmute this Resident </string> <string name="TooltipAgentIM"> - Click to IM this Resident + 點擊開始 IM 這位居民 </string> <string name="TooltipAgentPay"> Click to Pay this Resident @@ -253,7 +253,7 @@ </string> <string name="CurrentURL" value="CurrentURL: [CurrentURL]"/> <string name="SLurlLabelTeleport"> - Teleport to + 瞬間傳送到 </string> <string name="SLurlLabelShowOnMap"> Show Map for @@ -274,13 +274,13 @@ Offer Teleport to </string> <string name="SLappAgentRequestFriend"> - Friend Request + 交友要求 </string> <string name="BUTTON_CLOSE_DARWIN"> - Close (⌘W) + 關閉(⌘W) </string> <string name="BUTTON_CLOSE_WIN"> - Close (Ctrl+W) + 關閉(Ctrl+W) </string> <string name="BUTTON_CLOSE_CHROME"> 關閉 @@ -289,22 +289,22 @@ Restore </string> <string name="BUTTON_MINIMIZE"> - Minimize + 最小化 </string> <string name="BUTTON_TEAR_OFF"> - Tear Off + 脫下 </string> <string name="BUTTON_DOCK"> Dock </string> <string name="BUTTON_HELP"> - Show Help + 顯示幫助 </string> <string name="Searching"> - Searching... + 搜尋中... </string> <string name="NoneFound"> - None found. + 未發現。 </string> <string name="RetrievingData"> Retrieving... @@ -364,7 +364,7 @@ Unknown status </string> <string name="texture"> - texture + 材質 </string> <string name="sound"> sound @@ -373,13 +373,13 @@ calling card </string> <string name="landmark"> - landmark + 地標 </string> <string name="legacy script"> legacy script </string> <string name="clothing"> - clothing + 服裝 </string> <string name="object"> object @@ -400,7 +400,7 @@ LSL bytecode </string> <string name="tga texture"> - tga texture + tga 材質 </string> <string name="body part"> body part @@ -772,7 +772,7 @@ Mainland / Full Region </string> <string name="all_files"> - All Files + 全部檔案 </string> <string name="sound_files"> Sounds @@ -796,7 +796,7 @@ Bitmap Images </string> <string name="avi_movie_file"> - AVI Movie File + AVI 影片檔案 </string> <string name="xaf_animation_file"> XAF Anim File @@ -922,16 +922,16 @@ invalid </string> <string name="create_new_shape"> - Create new shape + 創造新體形 </string> <string name="create_new_skin"> - Create new skin + 創造新皮膚 </string> <string name="create_new_hair"> - Create new hair + 創造新頭髮 </string> <string name="create_new_eyes"> - Create new eyes + 創耖新眼睛 </string> <string name="create_new_shirt"> Create new shirt @@ -964,7 +964,7 @@ Create new alpha </string> <string name="create_new_tattoo"> - Create new tattoo + 創造新刺青 </string> <string name="create_new_physics"> Create new physics @@ -982,10 +982,10 @@ 確定 </string> <string name="GroupNotifyGroupNotice"> - Group Notice + 社團通知 </string> <string name="GroupNotifyGroupNotices"> - Group Notices + 社團通知 </string> <string name="GroupNotifySentBy"> Sent by @@ -1060,7 +1060,7 @@ <string name="link" value="(link)"/> <string name="broken_link" value="(broken_link)"/> <string name="LoadingContents"> - Loading contents... + 內容載入中... </string> <string name="NoContents"> No contents @@ -1073,31 +1073,31 @@ <string name="PermNo"> 否 </string> - <string name="Chat Message" value="Chat :"/> - <string name="Sound" value="Sound :"/> - <string name="Wait" value="--- Wait :"/> - <string name="AnimFlagStop" value="Stop Animation :"/> - <string name="AnimFlagStart" value="Start Animation :"/> + <string name="Chat Message" value="聊天:"/> + <string name="Sound" value="聲音:"/> + <string name="Wait" value="--- 等待:"/> + <string name="AnimFlagStop" value="停止動作:"/> + <string name="AnimFlagStart" value="開始動作:"/> <string name="Wave" value="Wave"/> <string name="GestureActionNone" value="無"/> <string name="HelloAvatar" value="Hello, avatar!"/> <string name="ViewAllGestures" value="察看全部 >>"/> - <string name="GetMoreGestures" value="Get More >>"/> - <string name="Animations" value="Animations,"/> + <string name="GetMoreGestures" value="取得更多 >>"/> + <string name="Animations" value="動作,"/> <string name="Calling Cards" value="Calling Cards,"/> - <string name="Clothing" value="Clothing,"/> - <string name="Gestures" value="Gestures,"/> - <string name="Landmarks" value="Landmarks,"/> - <string name="Notecards" value="Notecards,"/> - <string name="Objects" value="Objects,"/> - <string name="Scripts" value="Scripts,"/> - <string name="Sounds" value="Sounds,"/> - <string name="Textures" value="Textures,"/> + <string name="Clothing" value="服裝,"/> + <string name="Gestures" value="姿勢,"/> + <string name="Landmarks" value="地標,"/> + <string name="Notecards" value="記事卡,"/> + <string name="Objects" value="物件,"/> + <string name="Scripts" value="腳本,"/> + <string name="Sounds" value="聲音,"/> + <string name="Textures" value="材質,"/> <string name="Snapshots" value="Snapshots,"/> <string name="No Filters" value="No"/> - <string name="Since Logoff" value="- Since Logoff"/> + <string name="Since Logoff" value="- 自上次登出"/> <string name="InvFolder My Inventory"> - My Inventory + 我的收納區 </string> <string name="InvFolder My Favorites"> My Favorites @@ -1106,46 +1106,46 @@ Library </string> <string name="InvFolder Textures"> - Textures + 材質 </string> <string name="InvFolder Sounds"> - Sounds + 聲音 </string> <string name="InvFolder Calling Cards"> Calling Cards </string> <string name="InvFolder Landmarks"> - Landmarks + 地標 </string> <string name="InvFolder Scripts"> - Scripts + 腳本 </string> <string name="InvFolder Clothing"> - Clothing + 服裝 </string> <string name="InvFolder Objects"> - Objects + 物件 </string> <string name="InvFolder Notecards"> - Notecards + 記事卡 </string> <string name="InvFolder New Folder"> 新資料夾 </string> <string name="InvFolder Inventory"> - Inventory + 收納區 </string> <string name="InvFolder Uncompressed Images"> Uncompressed Images </string> <string name="InvFolder Body Parts"> - Body Parts + 身體部位 </string> <string name="InvFolder Trash"> - Trash + 垃圾桶 </string> <string name="InvFolder Photo Album"> - Photo Album + 相簿 </string> <string name="InvFolder Lost And Found"> Lost And Found @@ -1154,10 +1154,10 @@ Uncompressed Sounds </string> <string name="InvFolder Animations"> - Animations + 動作 </string> <string name="InvFolder Gestures"> - Gestures + 姿勢 </string> <string name="InvFolder Favorite"> Favorites @@ -1166,19 +1166,19 @@ Favorites </string> <string name="InvFolder Current Outfit"> - Current Outfit + 目前裝扮 </string> <string name="InvFolder Initial Outfits"> - Initial Outfits + 初始裝扮 </string> <string name="InvFolder My Outfits"> - My Outfits + 我的裝扮 </string> <string name="InvFolder Accessories"> Accessories </string> <string name="InvFolder Friends"> - Friends + 朋友 </string> <string name="InvFolder All"> 全部 @@ -1250,25 +1250,25 @@ Pelvis </string> <string name="Mouth"> - Mouth + 嘴 </string> <string name="Chin"> Chin </string> <string name="Left Ear"> - Left Ear + 左耳 </string> <string name="Right Ear"> - Right Ear + 右耳 </string> <string name="Left Eyeball"> - Left Eyeball + 左眼球 </string> <string name="Right Eyeball"> - Right Eyeball + 右眼球 </string> <string name="Nose"> - Nose + 鼻子 </string> <string name="R Upper Arm"> R Upper Arm @@ -1328,43 +1328,43 @@ [AGEDAYS] old </string> <string name="TodayOld"> - Joined today + 今日剛加入 </string> <string name="AgeYearsA"> - [COUNT] year + [COUNT] 年 </string> <string name="AgeYearsB"> - [COUNT] years + [COUNT] 年 </string> <string name="AgeYearsC"> - [COUNT] years + [COUNT] 年 </string> <string name="AgeMonthsA"> - [COUNT] month + [COUNT] 月 </string> <string name="AgeMonthsB"> - [COUNT] months + [COUNT] 月 </string> <string name="AgeMonthsC"> - [COUNT] months + [COUNT] 月 </string> <string name="AgeWeeksA"> - [COUNT] week + [COUNT] 週 </string> <string name="AgeWeeksB"> - [COUNT] weeks + [COUNT] 週 </string> <string name="AgeWeeksC"> - [COUNT] weeks + [COUNT] 週 </string> <string name="AgeDaysA"> - [COUNT] day + [COUNT] 天 </string> <string name="AgeDaysB"> - [COUNT] days + [COUNT] 天 </string> <string name="AgeDaysC"> - [COUNT] days + [COUNT] 天 </string> <string name="GroupMembersA"> [COUNT] member @@ -1486,14 +1486,14 @@ <string name="GroupsNone"> 無 </string> - <string name="Group" value="(group)"/> + <string name="Group" value="(社團)"/> <string name="Unknown"> (未知) </string> - <string name="SummaryForTheWeek" value="Summary for this week, beginning on "/> - <string name="NextStipendDay" value=". The next stipend day is "/> + <string name="SummaryForTheWeek" value="Summary for this week, beginning on"/> + <string name="NextStipendDay" value="The next stipend day is"/> <string name="GroupIndividualShare" value="Group Individual Share"/> - <string name="GroupColumn" value="Group"/> + <string name="GroupColumn" value="社團"/> <string name="Balance"> Balance </string> @@ -1522,10 +1522,10 @@ error </string> <string name="RegionInfoAllEstatesOwnedBy"> - all estates owned by [OWNER] + [OWNER] 所擁有的的全部領地 </string> <string name="RegionInfoAllEstatesYouOwn"> - all estates that you own + 你所擁有的全部領地 </string> <string name="RegionInfoAllEstatesYouManage"> all estates that you manage for [OWNER] @@ -1618,13 +1618,13 @@ Right Ear </string> <string name="ATTACH_LEYE"> - Left Eye + 左眼 </string> <string name="ATTACH_REYE"> - Right Eye + 右眼 </string> <string name="ATTACH_NOSE"> - Nose + 鼻子 </string> <string name="ATTACH_RUARM"> Right Upper Arm @@ -1711,16 +1711,16 @@ The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed. Your message will still be shown in their IM panel for later viewing. </string> <string name="MuteByName"> - (By name) + (由名稱) </string> <string name="MuteAgent"> - (Resident) + (居民) </string> <string name="MuteObject"> - (Object) + (物件) </string> <string name="MuteGroup"> - (Group) + (社團) </string> <string name="MuteExternal"> (External) @@ -1733,12 +1733,12 @@ </string> <string name="covenant_last_modified" value="Last Modified:"/> <string name="none_text" value="(無)"/> - <string name="never_text" value="(never)"/> + <string name="never_text" value="(絕不)"/> <string name="GroupOwned"> - Group Owned + 社團所擁有 </string> <string name="Public"> - Public + 公開 </string> <string name="ClassifiedClicksTxt"> Clicks: [TELEPORT] teleport, [MAP] map, [PROFILE] profile @@ -1822,14 +1822,14 @@ 取銷 </string> <string name="UploadingCosts"> - Uploading [NAME] costs L$ [AMOUNT] + 花費 L$ [AMOUNT] 上傳 [NAME] </string> <string name="BuyingCosts"> - Buying this costs L$ [AMOUNT] + 花費 L$ [AMOUNT] 購買這個 </string> <string name="UnknownFileExtension"> - Unknown file extension .%s -Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh + 未知的副檔名 .%s +預期為 .wav, .tga, .bmp, .jpg, .jpeg, or .bvh 類型 </string> <string name="MuteObject2"> Block @@ -1844,10 +1844,10 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh Unblock </string> <string name="AddLandmarkNavBarMenu"> - Add to My Landmarks... + 添加到我的地標... </string> <string name="EditLandmarkNavBarMenu"> - Edit my Landmark... + 編輯我的地標... </string> <string name="accel-mac-control"> ⌃ @@ -1871,10 +1871,10 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh Shift+ </string> <string name="FileSaved"> - File Saved + 檔案已儲存 </string> <string name="Receiving"> - Receiving + 接收中 </string> <string name="AM"> AM @@ -1994,7 +1994,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh Any </string> <string name="You"> - You + 你 </string> <string name=":"> : @@ -2128,7 +2128,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. 5 O'Clock Shadow </string> <string name="All White"> - All White + 全白 </string> <string name="Anime Eyes"> Anime Eyes @@ -3544,16 +3544,16 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Wrinkles </string> <string name="LocationCtrlAddLandmarkTooltip"> - Add to My Landmarks + 添加到我的地標 </string> <string name="LocationCtrlEditLandmarkTooltip"> - Edit my Landmark + 編輯我的地標 </string> <string name="LocationCtrlInfoBtnTooltip"> - See more info about the current location + 察看更多關於目前位置的資訊 </string> <string name="LocationCtrlComboBtnTooltip"> - My location history + 我的位置歷史紀錄 </string> <string name="LocationCtrlForSaleTooltip"> 購買這塊土地 @@ -3562,7 +3562,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Voice not available here </string> <string name="LocationCtrlFlyTooltip"> - Flying not allowed + 不允許飛行 </string> <string name="LocationCtrlPushTooltip"> No pushing @@ -3664,7 +3664,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. [NAME] started a voice call </string> <string name="ringing-im"> - Joining voice call... + 加入語音通話... </string> <string name="connected-im"> Connected, click Leave Call to hang up @@ -3808,7 +3808,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Giving L$ [AMOUNT] </string> <string name="uploading_costs"> - Uploading costs L$ [AMOUNT] + 上傳花費 L$ [AMOUNT] </string> <string name="this_costs"> This costs L$ [AMOUNT] @@ -3832,21 +3832,21 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Online </string> <string name="uploading_abuse_report"> - Uploading... + 上傳中... -Abuse Report +舉報濫用 </string> <string name="New Shape"> - New Shape + 新體形 </string> <string name="New Skin"> - New Skin + 新皮膚 </string> <string name="New Hair"> - New Hair + 新頭髮 </string> <string name="New Eyes"> - New Eyes + 新眼睛 </string> <string name="New Shirt"> 新襯衫 @@ -3879,7 +3879,7 @@ Abuse Report New Alpha </string> <string name="New Tattoo"> - New Tattoo + 新刺青 </string> <string name="New Physics"> New Physics @@ -3888,37 +3888,37 @@ Abuse Report Invalid Wearable </string> <string name="New Gesture"> - New Gesture + 新姿勢 </string> <string name="New Script"> - New Script + 新腳本 </string> <string name="New Note"> - New Note + 新記事卡 </string> <string name="New Folder"> 新資料夾 </string> <string name="Contents"> - Contents + 內容 </string> <string name="Gesture"> Gesture </string> <string name="Male Gestures"> - Male Gestures + 男性姿勢 </string> <string name="Female Gestures"> - Female Gestures + 女性姿勢 </string> <string name="Other Gestures"> - Other Gestures + 其他姿勢 </string> <string name="Speech Gestures"> - Speech Gestures + 演說姿勢 </string> <string name="Common Gestures"> - Common Gestures + 一般姿勢 </string> <string name="Male - Excuse me"> Male - Excuse me @@ -4093,7 +4093,7 @@ Abuse Report Delete selected item? </string> <string name="EmptyOutfitText"> - There are no items in this outfit + 沒有任何物品在這個裝扮內 </string> <string name="ExternalEditorNotSet"> Select an editor using the ExternalEditor setting. diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml index 33640f5fee..9702832f44 100644 --- a/indra/newview/skins/default/xui/zh/teleport_strings.xml +++ b/indra/newview/skins/default/xui/zh/teleport_strings.xml @@ -39,7 +39,7 @@ Try again in a moment. Unable to find teleport destination. The destination may be temporarily unavailable or no longer exists. Please try again in a few minutes. </message> <message name="no_inventory_host"> - The inventory system is currently unavailable. + 收納區功能目前無法使用。 </message> </message_set> <message_set name="progress"> @@ -53,28 +53,28 @@ Try again in a moment. Relaying to destination. </message> <message name="sending_home"> - Sending home location request. + 傳送家位置的要求。 </message> <message name="sending_landmark"> - Sending landmark location request. + 地標位置要求瞬間傳送中。 </message> <message name="completing"> - Completing teleport. + 瞬間傳送完成。 </message> <message name="completed_from"> - Teleport completed from [T_SLURL] + 由 [T_SLURL] 瞬間傳送完成。 </message> <message name="resolving"> - Resolving destination. + 目的地解決中。 </message> <message name="contacting"> - Contacting new region. + 聯繫到新的地區。 </message> <message name="arriving"> 抵達中... </message> <message name="requesting"> - Requesting Teleport... + 瞬間傳送要求中... </message> </message_set> </teleport_messages> -- cgit v1.2.3 From 3317c7f71424b70b701d4bba8db704b56e47b13c Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 14:18:27 -0700 Subject: FIX VWR-24121 en_xui_change --- indra/newview/skins/default/xui/en/floater_sell_land.xml | 3 ++- indra/newview/skins/default/xui/pl/floater_sell_land.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml index 38b305db7e..52de9ddd47 100644 --- a/indra/newview/skins/default/xui/en/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml @@ -177,7 +177,8 @@ font="SansSerif" height="16" left="30" - name="sell_objects_label"> + name="sell_objects_label" + width="266"> 3. Sell the objects with the land? </text> <text diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml index 528e5a416b..2201c4b0ad 100644 --- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml @@ -44,7 +44,7 @@ <combo_box.item label="Wybrany Kupiec:" name="Specificuser:"/> </combo_box> <button label="Wybierz" name="sell_to_select_agent"/> - <text name="sell_objects_label"> + <text name="sell_objects_label" font="SansSerifSmall"> 3. Obiekty sprzedawane razem z posiadłością? </text> <text name="sell_objects_text"> -- cgit v1.2.3 From 7c60637dfc9dcc2f597cd077bef4ff52ab7ed852 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 14:20:33 -0700 Subject: FIX VWR-25797 --- indra/newview/skins/minimal/xui/es/floater_camera.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/minimal/xui/es/floater_camera.xml b/indra/newview/skins/minimal/xui/es/floater_camera.xml index ccf3d4bf91..87177e285c 100644 --- a/indra/newview/skins/minimal/xui/es/floater_camera.xml +++ b/indra/newview/skins/minimal/xui/es/floater_camera.xml @@ -13,7 +13,7 @@ Modos de cámara </floater.string> <floater.string name="pan_mode_title"> - Orbital - Zoom - Panóramica + Orbital - Zoom - Panorámica </floater.string> <floater.string name="presets_mode_title"> Vistas predefinidas @@ -59,7 +59,7 @@ </panel> <panel name="buttons"> <button label="" name="presets_btn" tool_tip="Vistas predefinidas"/> - <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panóramica"/> + <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panorámica"/> <button label="" name="avatarview_btn" tool_tip="Modos de cámara"/> </panel> </floater> -- cgit v1.2.3 From 776353b4a6ced013a9406a6177d4cbc18177ccef Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Wed, 8 Jun 2011 15:25:59 -0600 Subject: fix for SH-1651 and SH-1652: Viewer Crash in Display:RenderUI when uploading skpfile.dae model with High LOD selected as Physics shape --- indra/newview/llfloatermodelpreview.cpp | 49 +------------------ indra/newview/llfloatermodelwizard.cpp | 49 +------------------ indra/newview/llmeshrepository.cpp | 86 ++++++++++++++++++++++----------- indra/newview/llmeshrepository.h | 1 + 4 files changed, 60 insertions(+), 125 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 1f6199ffb2..d56bc9cd10 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -5144,54 +5144,7 @@ LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LL mParams = sInstance->mDecompParams; //copy out positions and indices - if (mdl) - { - U16 index_offset = 0; - U16 tri[3] ; - - mPositions.clear(); - mIndices.clear(); - mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; - mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; - - //queue up vertex positions and indices - for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) - { - const LLVolumeFace& face = mdl->getVolumeFace(i); - if (mPositions.size() + face.mNumVertices > 65535) - { - continue; - } - - for (U32 j = 0; j < face.mNumVertices; ++j) - { - mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); - for(U32 k = 0 ; k < 3 ; k++) - { - mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; - mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; - } - } - - updateTriangleAreaThreshold() ; - - for (U32 j = 0; j+2 < face.mNumIndices; j += 3) - { - tri[0] = face.mIndices[j] + index_offset ; - tri[1] = face.mIndices[j + 1] + index_offset ; - tri[2] = face.mIndices[j + 2] + index_offset ; - - if(isValidTriangle(tri[0], tri[1], tri[2])) - { - mIndices.push_back(tri[0]); - mIndices.push_back(tri[1]); - mIndices.push_back(tri[2]); - } - } - - index_offset += face.mNumVertices; - } - } + assignData(mdl) ; } void LLFloaterModelPreview::setStatusMessage(const std::string& msg) diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp index e44737f39e..0cd66fbdc2 100644 --- a/indra/newview/llfloatermodelwizard.cpp +++ b/indra/newview/llfloatermodelwizard.cpp @@ -438,54 +438,7 @@ LLFloaterModelWizard::DecompRequest::DecompRequest(const std::string& stage, LLM mParams = sInstance->mDecompParams; //copy out positions and indices - if (mdl) - { - U16 index_offset = 0; - U16 tri[3] ; - - mPositions.clear(); - mIndices.clear(); - mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; - mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; - - //queue up vertex positions and indices - for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) - { - const LLVolumeFace& face = mdl->getVolumeFace(i); - if (mPositions.size() + face.mNumVertices > 65535) - { - continue; - } - - for (U32 j = 0; j < face.mNumVertices; ++j) - { - mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); - for(U32 k = 0 ; k < 3 ; k++) - { - mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; - mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; - } - } - - updateTriangleAreaThreshold() ; - - for (U32 j = 0; j+2 < face.mNumIndices; j += 3) - { - tri[0] = face.mIndices[j] + index_offset ; - tri[1] = face.mIndices[j + 1] + index_offset ; - tri[2] = face.mIndices[j + 2] + index_offset ; - - if(isValidTriangle(tri[0], tri[1], tri[2])) - { - mIndices.push_back(tri[0]); - mIndices.push_back(tri[1]); - mIndices.push_back(tri[2]); - } - } - - index_offset += face.mNumVertices; - } - } + assignData(mdl) ; } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 29904c579c..0b10024663 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1323,35 +1323,7 @@ LLMeshUploadThread::DecompRequest::DecompRequest(LLModel* mdl, LLModel* base_mod mThread = thread; //copy out positions and indices - if (mdl) - { - U16 index_offset = 0; - - mPositions.clear(); - mIndices.clear(); - - //queue up vertex positions and indices - for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) - { - const LLVolumeFace& face = mdl->getVolumeFace(i); - if (mPositions.size() + face.mNumVertices > 65535) - { - continue; - } - - for (U32 j = 0; j < face.mNumVertices; ++j) - { - mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); - } - - for (U32 j = 0; j < face.mNumIndices; ++j) - { - mIndices.push_back(face.mIndices[j]+index_offset); - } - - index_offset += face.mNumVertices; - } - } + assignData(mdl) ; mThread->mFinalDecomp = this; mThread->mPhysicsComplete = false; @@ -3599,6 +3571,62 @@ void LLPhysicsDecomp::run() mDone = true; } +void LLPhysicsDecomp::Request::assignData(LLModel* mdl) +{ + if (!mdl) + { + return ; + } + + U16 index_offset = 0; + U16 tri[3] ; + + mPositions.clear(); + mIndices.clear(); + mBBox[1] = LLVector3(F32_MIN, F32_MIN, F32_MIN) ; + mBBox[0] = LLVector3(F32_MAX, F32_MAX, F32_MAX) ; + + //queue up vertex positions and indices + for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) + { + const LLVolumeFace& face = mdl->getVolumeFace(i); + if (mPositions.size() + face.mNumVertices > 65535) + { + continue; + } + + for (U32 j = 0; j < face.mNumVertices; ++j) + { + mPositions.push_back(LLVector3(face.mPositions[j].getF32ptr())); + for(U32 k = 0 ; k < 3 ; k++) + { + mBBox[0].mV[k] = llmin(mBBox[0].mV[k], mPositions[j].mV[k]) ; + mBBox[1].mV[k] = llmax(mBBox[1].mV[k], mPositions[j].mV[k]) ; + } + } + + updateTriangleAreaThreshold() ; + + for (U32 j = 0; j+2 < face.mNumIndices; j += 3) + { + tri[0] = face.mIndices[j] + index_offset ; + tri[1] = face.mIndices[j + 1] + index_offset ; + tri[2] = face.mIndices[j + 2] + index_offset ; + + if(isValidTriangle(tri[0], tri[1], tri[2])) + { + mIndices.push_back(tri[0]); + mIndices.push_back(tri[1]); + mIndices.push_back(tri[2]); + } + } + + index_offset += face.mNumVertices; + } + + return ; +} + void LLPhysicsDecomp::Request::updateTriangleAreaThreshold() { F32 range = mBBox[1].mV[0] - mBBox[0].mV[0] ; diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index d5b06cc66f..adf60c7e03 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -166,6 +166,7 @@ public: LLVector3 mBBox[2] ; F32 mTriangleAreaThreshold ; + void assignData(LLModel* mdl) ; void updateTriangleAreaThreshold() ; bool isValidTriangle(U16 idx1, U16 idx2, U16 idx3) ; }; -- cgit v1.2.3 From 9ef509daa41e40bd1da252207ee57207524b65fb Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 14:32:38 -0700 Subject: WIP INTL-50 translation of Viewer Set24, Basic Set3, for ES, IT, JA --- .../newview/skins/default/xui/es/floater_about.xml | 44 ++-- .../skins/default/xui/es/floater_buy_contents.xml | 2 +- .../default/xui/es/floater_import_collada.xml | 23 ++ .../xui/es/floater_inventory_view_finder.xml | 5 +- .../skins/default/xui/es/floater_model_preview.xml | 231 ++++++++++++++++++++ .../skins/default/xui/es/floater_model_wizard.xml | 241 +++++++++++++++++++++ .../default/xui/es/floater_price_for_listing.xml | 18 ++ .../skins/default/xui/es/floater_sound_devices.xml | 7 + .../newview/skins/default/xui/es/floater_tools.xml | 48 +++- .../skins/default/xui/es/menu_inventory_add.xml | 2 + .../xui/es/menu_model_import_gear_default.xml | 8 + indra/newview/skins/default/xui/es/menu_viewer.xml | 12 +- .../newview/skins/default/xui/es/notifications.xml | 45 +++- .../default/xui/es/panel_preferences_colors.xml | 3 + .../default/xui/es/panel_preferences_graphics1.xml | 14 +- .../skins/default/xui/es/panel_region_general.xml | 1 + .../skins/default/xui/es/panel_sound_devices.xml | 19 ++ indra/newview/skins/default/xui/es/strings.xml | 142 ++++++++++++ .../newview/skins/default/xui/it/floater_about.xml | 44 ++-- .../skins/default/xui/it/floater_buy_contents.xml | 2 +- .../default/xui/it/floater_import_collada.xml | 23 ++ .../xui/it/floater_inventory_view_finder.xml | 1 + .../skins/default/xui/it/floater_model_preview.xml | 231 ++++++++++++++++++++ .../skins/default/xui/it/floater_model_wizard.xml | 241 +++++++++++++++++++++ .../default/xui/it/floater_price_for_listing.xml | 18 ++ .../skins/default/xui/it/floater_sound_devices.xml | 7 + .../newview/skins/default/xui/it/floater_tools.xml | 48 +++- .../skins/default/xui/it/menu_inventory_add.xml | 2 + .../xui/it/menu_model_import_gear_default.xml | 8 + indra/newview/skins/default/xui/it/menu_viewer.xml | 12 +- .../newview/skins/default/xui/it/notifications.xml | 45 +++- .../default/xui/it/panel_preferences_colors.xml | 3 + .../default/xui/it/panel_preferences_graphics1.xml | 12 + .../skins/default/xui/it/panel_region_general.xml | 1 + .../skins/default/xui/it/panel_sound_devices.xml | 19 ++ indra/newview/skins/default/xui/it/strings.xml | 142 ++++++++++++ .../newview/skins/default/xui/ja/floater_about.xml | 44 ++-- .../skins/default/xui/ja/floater_buy_contents.xml | 2 +- .../default/xui/ja/floater_import_collada.xml | 23 ++ .../xui/ja/floater_inventory_view_finder.xml | 1 + .../skins/default/xui/ja/floater_model_preview.xml | 231 ++++++++++++++++++++ .../skins/default/xui/ja/floater_model_wizard.xml | 241 +++++++++++++++++++++ .../default/xui/ja/floater_price_for_listing.xml | 18 ++ .../skins/default/xui/ja/floater_sound_devices.xml | 7 + .../newview/skins/default/xui/ja/floater_tools.xml | 48 +++- .../skins/default/xui/ja/menu_inventory_add.xml | 2 + .../xui/ja/menu_model_import_gear_default.xml | 8 + indra/newview/skins/default/xui/ja/menu_viewer.xml | 13 +- .../newview/skins/default/xui/ja/notifications.xml | 45 +++- .../default/xui/ja/panel_preferences_colors.xml | 3 + .../default/xui/ja/panel_preferences_graphics1.xml | 12 + .../skins/default/xui/ja/panel_region_general.xml | 1 + .../skins/default/xui/ja/panel_sound_devices.xml | 19 ++ indra/newview/skins/default/xui/ja/strings.xml | 142 ++++++++++++ .../skins/minimal/xui/es/menu_attachment_other.xml | 2 +- .../skins/minimal/xui/es/menu_avatar_other.xml | 2 +- .../minimal/xui/es/menu_inspect_avatar_gear.xml | 1 + .../minimal/xui/es/panel_adhoc_control_panel.xml | 11 + .../skins/minimal/xui/es/panel_bottomtray.xml | 24 +- .../minimal/xui/es/panel_im_control_panel.xml | 2 +- .../newview/skins/minimal/xui/es/panel_people.xml | 3 + .../skins/minimal/xui/it/panel_bottomtray.xml | 24 +- .../minimal/xui/it/panel_im_control_panel.xml | 2 +- .../skins/minimal/xui/ja/panel_bottomtray.xml | 24 +- 64 files changed, 2545 insertions(+), 134 deletions(-) create mode 100644 indra/newview/skins/default/xui/es/floater_import_collada.xml create mode 100644 indra/newview/skins/default/xui/es/floater_model_preview.xml create mode 100644 indra/newview/skins/default/xui/es/floater_model_wizard.xml create mode 100644 indra/newview/skins/default/xui/es/floater_price_for_listing.xml create mode 100644 indra/newview/skins/default/xui/es/floater_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml create mode 100644 indra/newview/skins/default/xui/es/panel_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/it/floater_import_collada.xml create mode 100644 indra/newview/skins/default/xui/it/floater_model_preview.xml create mode 100644 indra/newview/skins/default/xui/it/floater_model_wizard.xml create mode 100644 indra/newview/skins/default/xui/it/floater_price_for_listing.xml create mode 100644 indra/newview/skins/default/xui/it/floater_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml create mode 100644 indra/newview/skins/default/xui/it/panel_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_import_collada.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_model_preview.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_model_wizard.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_price_for_listing.xml create mode 100644 indra/newview/skins/default/xui/ja/floater_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml create mode 100644 indra/newview/skins/default/xui/ja/panel_sound_devices.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index bb845e1ee0..125eb79d04 100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -56,26 +56,32 @@ Gracias a estos Residentes por ayudarnos a estar seguros de que, con todo, esta <panel label="Licencias" name="licenses_panel"> <text_editor name="credits_editor"> 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - All rights reserved. See licenses.txt for details. +APR Copyright (C) 2000-2004 The Apache Software Foundation +Collada DOM Copyright 2005 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. +expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). +GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University y David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2001, Xiphophorus +OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. +PCRE Copyright (c) 1997-2008 University of Cambridge +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2002 Jean-loup Gailly y Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. - Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) +El visor de Second Life utiliza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (y los propietarios de las licencias). Reservados todos los derechos. Consulta www.havok.com si deseas obtener más información. + +Reservados todos los derechos. Consulta las licencias en .txt si deseas obtener más información. + +Codificación de sonido del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) </text_editor> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/es/floater_buy_contents.xml b/indra/newview/skins/default/xui/es/floater_buy_contents.xml index 98604ad5f4..3563d4bd0f 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_contents.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_buy_contents" title="COMPRAR LOS CONTENIDOS"> <text name="contains_text"> - [NAME] contiene: + <nolink>[NOMBRE]</nolink> contiene: </text> <text name="buy_text"> ¿Comprar por [AMOUNT] L$ a [NAME]? diff --git a/indra/newview/skins/default/xui/es/floater_import_collada.xml b/indra/newview/skins/default/xui/es/floater_import_collada.xml new file mode 100644 index 0000000000..7e9a00797a --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_import_collada.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Import Collada" title="Importar escena"> + <text name="mesh count"> + Redes: [RECUENTO] + </text> + <text name="texture count"> + Texturas: [RECUENTO] + </text> + <text name="status"> + Estado: [ESTADO] + </text> + <button label="Cancelar" name="cancel"/> + <button label="OK" name="ok"/> + <string name="status_idle"> + Inactivo + </string> + <string name="status_uploading"> + Cargando [NOMBRE] + </string> + <string name="status_creating"> + Creando objeto [NOMBRE] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml index c9d639d8cf..6004034504 100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml @@ -5,6 +5,7 @@ <check_box label="Ropa" name="check_clothing"/> <check_box label="Gestos" name="check_gesture"/> <check_box label="Hitos" name="check_landmark"/> + <check_box label="Redes" name="check_mesh"/> <check_box label="Notas" name="check_notecard"/> <check_box label="Objetos" name="check_object"/> <check_box label="Scripts" name="check_script"/> @@ -14,11 +15,11 @@ <button label="Todos" label_selected="Todo" name="All"/> <button label="Ninguno" label_selected="Nada" name="None"/> <check_box label="Mostrar siempre las carpetas" name="check_show_empty"/> - <check_box label="Desde el fin de sesión" name="check_since_logoff" bottom_delta="-36"/> + <check_box bottom_delta="-36" label="Desde el fin de sesión" name="check_since_logoff"/> <text name="- OR -"> - o - </text> <spinner label="horas atrás" name="spin_hours_ago"/> <spinner label="días atrás" name="spin_days_ago"/> - <button label="Cerrar" label_selected="Cerrar" name="Close" bottom_delta="-30"/> + <button bottom_delta="-30" label="Cerrar" label_selected="Cerrar" name="Close"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml new file mode 100644 index 0000000000..6208db75f9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Preview" title="Cargar modelo"> + <string name="status_idle"> + Inactivo + </string> + <string name="status_reading_file"> + Cargando... + </string> + <string name="status_generating_meshes"> + Generando redes... + </string> + <string name="status_vertex_number_overflow"> + Error: El número de intersección es superior a 65534. Cancelado. + </string> + <string name="high"> + Alto + </string> + <string name="medium"> + Media + </string> + <string name="low"> + Bajo + </string> + <string name="lowest"> + Mínimo + </string> + <string name="mesh_status_good"> + Factúralo. + </string> + <string name="mesh_status_na"> + N/A + </string> + <string name="mesh_status_none"> + Ninguno + </string> + <string name="mesh_status_submesh_mismatch"> + Los niveles de detalle poseen un número distinto de caras a las que se pueden aplicar texturas. + </string> + <string name="mesh_status_mesh_mismatch"> + Los niveles de detalle poseen un número distinto de ejemplos de red. + </string> + <string name="mesh_status_too_many_vertices"> + El nivel de detalle posee demasiadas intersecciones. + </string> + <string name="mesh_status_missing_lod"> + Falta un nivel de detalle requerido. + </string> + <string name="layer_all"> + Todo + </string> + <string name="decomposing"> + Analizando... + </string> + <string name="simplifying"> + Simplificando... + </string> + <text name="name_label"> + Nombre: + </text> + <text name="lod_label"> + Vista previa: + </text> + <combo_box name="preview_lod_combo" tool_tip="Nivel de detalle disponible en la vista previa"> + <combo_item name="high"> + Nivel de detalle: Alto + </combo_item> + <combo_item name="medium"> + Nivel de detalle: Media + </combo_item> + <combo_item name="low"> + Nivel de detalle: Bajo + </combo_item> + <combo_item name="lowest"> + Nivel de detalle: Mínimo + </combo_item> + </combo_box> + <panel> + <text name="streaming cost"> + Coste de recursos: [COSTE] + </text> + <text name="physics cost"> + Coste físico: [COSTE] + </text> + <text name="upload fee"> + Cuota de carga: N/A + </text> + </panel> + <text name="status"> + [ESTADO] + </text> + <button label="Valores predeterminados" name="reset_btn" tool_tip="Restablecer valores predeterminados"/> + <button label="Subir" name="ok_btn" tool_tip="Cargar al simulador"/> + <button label="Cancelar" name="cancel_btn"/> + <tab_container name="import_tab"> + <panel label="Nivel de detalle" name="lod_panel"> + <text name="lod_table_header"> + Seleccionar nivel de detalle: + </text> + <text name="high_label" value="Alto"/> + <text name="high_triangles" value="0"/> + <text name="high_vertices" value="0"/> + <text name="medium_label" value="Media"/> + <text name="medium_triangles" value="0"/> + <text name="medium_vertices" value="0"/> + <text name="low_label" value="Bajo"/> + <text name="low_triangles" value="0"/> + <text name="low_vertices" value="0"/> + <text name="lowest_label" value="Mínimo"/> + <text name="lowest_triangles" value="0"/> + <text name="lowest_vertices" value="0"/> + <text name="lod_table_footer"> + Nivel de detalle: [DETALLE] + </text> + <radio_group name="lod_file_or_limit" value="lod_from_file"> + <radio_item label="Cargar desde el archivo" name="lod_from_file"/> + <radio_item label="Generar automáticamente" name="lod_auto_generate"/> + <radio_item label="Ninguno" name="lod_none"/> + </radio_group> + <button label="Examinar..." name="lod_browse"/> + <combo_box name="lod_mode"> + <combo_item name="triangle_limit"> + Límite de triángulo + </combo_item> + <combo_item name="error_threshold"> + Margen de error + </combo_item> + </combo_box> + <text name="build_operator_text"> + Crear operador: + </text> + <text name="queue_mode_text"> + Modo de cola: + </text> + <combo_box name="build_operator"> + <combo_item name="edge_collapse"> + Cerrar bordes + </combo_item> + <combo_item name="half_edge_collapse"> + Cerrar la mitad de los bordes + </combo_item> + </combo_box> + <combo_box name="queue_mode"> + <combo_item name="greedy"> + Egoísta + </combo_item> + <combo_item name="lazy"> + Vago + </combo_item> + <combo_item name="independent"> + Independiente + </combo_item> + </combo_box> + <text name="border_mode_text"> + Modo de borde: + </text> + <text name="share_tolderance_text"> + Tolerancia de uso compartido: + </text> + <combo_box name="border_mode"> + <combo_item name="border_unlock"> + Desbloquear + </combo_item> + <combo_item name="border_lock"> + Lock + </combo_item> + </combo_box> + <text name="crease_label"> + Ángulo de marca: + </text> + <spinner name="crease_angle" value="75"/> + </panel> + <panel label="Física" name="physics_panel"> + <panel name="physics geometry"> + <radio_group name="physics_load_radio" value="physics_load_from_file"> + <radio_item label="Archivo:" name="physics_load_from_file"/> + <radio_item label="Utilizar nivel de detalle:" name="physics_use_lod"/> + </radio_group> + <combo_box name="physics_lod_combo" tool_tip="Nivel de detalle para forma física"> + <combo_item name="physics_lowest"> + Mínimo + </combo_item> + <combo_item name="physics_low"> + Bajo + </combo_item> + <combo_item name="physics_medium"> + Media + </combo_item> + <combo_item name="physics_high"> + Alto + </combo_item> + </combo_box> + <button label="Examinar..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <slider label="Leve:" name="Smooth"/> + <check_box label="Cerrar agujeros (lento)" name="Close Holes (Slow)"/> + <button label="Analizar" name="Decompose"/> + <button label="Cancelar" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <slider label="Pases:" name="Combine Quality"/> + <slider label="Escala de detalle:" name="Detail Scale"/> + <slider label="Retener:" name="Retain%"/> + <button label="Simplificar" name="Simplify"/> + <button label="Cancelar" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <slider label="Ampliación de vista previa:" name="physics_explode"/> + <text name="physics_triangles"> + Triángulos: [TRIÁNGULOS] + </text> + <text name="physics_points"> + Intersecciones: [PUNTOS] + </text> + <text name="physics_hulls"> + Aspecto exterior: [ASPECTO EXTERIOR] + </text> + </panel> + </panel> + <panel label="Modificadores" name="modifiers_panel"> + <spinner name="import_scale" value="1.0"/> + <text name="import_dimensions"> + [X] x [Y] x [Z] m + </text> + <check_box label="Texturas" name="upload_textures"/> + <check_box label="Peso de la piel" name="upload_skin"/> + <check_box label="Posturas de las articulaciones" name="upload_joints"/> + <spinner name="pelvis_offset" value="0.0"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_model_wizard.xml b/indra/newview/skins/default/xui/es/floater_model_wizard.xml new file mode 100644 index 0000000000..019c2d3829 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_model_wizard.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Wizard" title="CARGAR ASISTENTE DE MODELO"> + <button label="5. Subir" name="upload_btn"/> + <button label="4. Revisar" name="review_btn"/> + <button label="3. Física" name="physics2_btn"/> + <button label="3. Física" name="physics_btn"/> + <button label="2. Optimizar" name="optimize_btn"/> + <button label="1. Seleccionar archivo" name="choose_file_btn"/> + <panel name="choose_file_panel"> + <panel name="header_panel"> + <text name="header_text"> + Cargar modelo + </text> + </panel> + <text name="description"> + Este asistente te ayudará a importar modelos de redes en Second Life. En primer lugar, especifica un archivo que contenga el modelo que desees importar. Second Life es compatible con los archivos de COLLADA (.dae). + </text> + <panel name="content"> + <text name="Cache location"> + Nombre del archivo: + </text> + <button label="Examinar..." label_selected="Examinar..." name="browse"/> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="optimize_panel"> + <panel name="header_panel"> + <text name="header_text"> + Optimizar + </text> + </panel> + <text name="description"> + Este asistente ha optimizado tu modelo con el fin de mejorar el rendimiento. Puedes ajustar los resultados del proceso de optimización a continuación o hacer clic en Siguiente para continuar. + </text> + <panel name="content"> + <text name="high_detail_text"> + Generar nivel de detalle: Alto + </text> + <text name="medium_detail_text"> + Generar nivel de detalle: Media + </text> + <text name="low_detail_text"> + Generar nivel de detalle: Bajo + </text> + <text name="lowest_detail_text"> + Generar nivel de detalle: Mínimo + </text> + </panel> + <panel name="content2"> + <text name="lod_label"> + Vista previa de modelo: + </text> + <combo_box name="preview_lod_combo2" tool_tip="Nivel de detalle disponible en la vista previa"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Media + </combo_item> + <combo_item name="low"> + Bajo + </combo_item> + <combo_item name="lowest"> + Mínimo + </combo_item> + </combo_box> + <text name="streaming cost"> + Coste de recursos: [COSTE] + </text> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="physics_panel"> + <panel name="header_panel"> + <text name="header_text"> + Física + </text> + </panel> + <text name="description"> + El asistente creará una forma física, que determinará la manera en la que el objeto interactúa con otros objetos y avatares. Selecciona con el controlador deslizante el nivel de detalle más adecuado en función del uso del objeto: + </text> + <panel name="content"> + <text name="streaming cost"> + Coste de recursos: [COSTE] + </text> + </panel> + </panel> + <panel name="physics2_panel"> + <panel name="header_panel"> + <text name="header_text"> + Física + </text> + </panel> + <text name="description"> + Obtén una vista previa de la forma física a continuación y haz clic en Siguiente para continuar. Para modificar la forma física, haz clic en el botón Atrás. + </text> + <panel name="content"> + <text name="lod_label"> + Vista previa de modelo: + </text> + <combo_box name="preview_lod_combo3" tool_tip="Nivel de detalle disponible en la vista previa"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Media + </combo_item> + <combo_item name="low"> + Bajo + </combo_item> + <combo_item name="lowest"> + Mínimo + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + <text name="streaming cost"> + Coste de recursos: [COSTE] + </text> + </panel> + </panel> + <panel name="review_panel"> + <panel name="header_panel"> + <text name="header_text"> + Revisar + </text> + </panel> + <text name="description"> + Revisa los detalles que aparecen más abajo y, a continuación, haz clic. Selecciona la opción de carga para cargar el modelo. Se realizará el cargo en tu saldo de L$ cuando hagas clic en Cargar. + </text> + <panel name="content"> + <text name="lod_label"> + Vista previa de modelo: + </text> + <combo_box name="preview_lod_combo" tool_tip="Nivel de detalle disponible en la vista previa"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Media + </combo_item> + <combo_item name="low"> + Bajo + </combo_item> + <combo_item name="lowest"> + Mínimo + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + <text name="streaming cost"> + Coste de recursos: [COSTE] + </text> + <text name="physics cost"> + Coste físico: [COSTE] + </text> + </panel> + <panel name="upload_panel"> + <panel name="header_panel"> + <text name="header_text"> + Carga completa. + </text> + </panel> + <text name="description"> + ¡Felicidades! Tu modelo se ha cargado correctamente. Encontrarás el modelo en la carpeta Objetos del inventario. + </text> + </panel> + <button label="<< Atrás" name="back"/> + <button label="Siguiente >>" name="next"/> + <button label="Subir" name="upload" tool_tip="Cargar al simulador"/> + <button label="Cancelar" name="cancel"/> + <button label="Cerrar" name="close"/> + <spinner name="import_scale" value="1.0"/> + <string name="status_idle"> + Inactivo + </string> + <string name="status_reading_file"> + Cargando... + </string> + <string name="status_generating_meshes"> + Generando redes... + </string> + <string name="status_vertex_number_overflow"> + Error: El número de intersección es superior a 65534. Cancelado. + </string> + <string name="high"> + Alto + </string> + <string name="medium"> + Media + </string> + <string name="low"> + Bajo + </string> + <string name="lowest"> + Mínimo + </string> + <string name="mesh_status_good"> + Factúralo. + </string> + <string name="mesh_status_na"> + N/A + </string> + <string name="mesh_status_none"> + Ninguno + </string> + <string name="mesh_status_submesh_mismatch"> + Los niveles de detalle poseen un número distinto de caras a las que se pueden aplicar texturas. + </string> + <string name="mesh_status_mesh_mismatch"> + Los niveles de detalle poseen un número distinto de ejemplos de red. + </string> + <string name="mesh_status_too_many_vertices"> + El nivel de detalle posee demasiadas intersecciones. + </string> + <string name="mesh_status_missing_lod"> + Falta un nivel de detalle requerido. + </string> + <string name="layer_all"> + Todo + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_price_for_listing.xml b/indra/newview/skins/default/xui/es/floater_price_for_listing.xml new file mode 100644 index 0000000000..8d6cdc86c0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_price_for_listing.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="price_for_listing" title="PUBLICAR UN ANUNCIO CLASIFICADO"> + <text name="explanation_text"> + Tu anuncio clasificado se mostrará durante una semana a partir del día en que se publicó. + +La posición de tu anuncio en la lista de clasificados depende de cuánto elijas pagar. + +Los anuncios mejor pagados van al principio de la lista, y aparecen más arriba en las búsquedas. + </text> + <text name="price_text"> + Precio por el anuncio: + </text> + <text name="price_symbol"> + L$ + </text> + <button label="OK" name="set_price_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml new file mode 100644 index 0000000000..a5ffbd517a --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_sound_devices.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_sound_devices" title="Dispositivos de sonido"> + <text name="voice_label"> + Chat de voz + </text> + <check_box label="Activados" name="enable_voice"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index 13be47f700..9d29bc40bf 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -125,6 +125,18 @@ <text left="134" name="prim_count"> Primitivas: [COUNT] </text> + <text name="linked_set_count"> + Conjuntos con enlaces: [RECUENTO] + </text> + <text name="linked_set_cost" tool_tip="Coste de los conjuntos con enlaces actualmente seleccionados como [prims], [complejidad física]"> + Coste: [COSTE] / [FÍSICO] + </text> + <text name="object_count"> + Objetos: [RECUENTO] + </text> + <text name="object_cost" tool_tip="Coste de los objetos actualmente seleccionados como [prims] / [complejidad física]"> + Coste: [COSTE] / [FÍSICO] + </text> <tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" width="288"> <panel label="General" name="General"> <panel.string name="text deed continued"> @@ -269,15 +281,6 @@ <combo_box.item label="Cono truncado" name="Ring"/> <combo_box.item label="Sculpted" name="Sculpted"/> </combo_box> - <combo_box name="material"> - <combo_box.item label="Piedra" name="Stone"/> - <combo_box.item label="Metal" name="Metal"/> - <combo_box.item label="Vidrio" name="Glass"/> - <combo_box.item label="Madera" name="Wood"/> - <combo_box.item label="Carne" name="Flesh"/> - <combo_box.item label="Plástico" name="Plastic"/> - <combo_box.item label="Goma" name="Rubber"/> - </combo_box> <text name="text cut"> Corte (inicio/fin) </text> @@ -350,9 +353,19 @@ <combo_box.item label="Toroide" name="Torus"/> <combo_box.item label="Plano" name="Plane"/> <combo_box.item label="Cilindro" name="Cylinder"/> + <combo_box.item label="Red" name="Mesh"/> </combo_box> </panel> <panel label="Caracter." name="Features"> + <panel.string name="None"> + Ninguno + </panel.string> + <panel.string name="Prim"> + Prim + </panel.string> + <panel.string name="Convex Hull"> + Apariencia convexa + </panel.string> <text name="select_single"> Selecciona un sólo prim para editarlo. </text> @@ -377,6 +390,23 @@ <spinner label="Visión" name="Light Focus"/> <spinner label="Atenuación" name="Light Falloff"/> <spinner label="Ambiental" name="Light Ambiance"/> + <text name="label physicsshapetype"> + Tipo de forma física: + </text> + <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Selecciona el tipo de forma física"/> + <combo_box name="material"> + <combo_box.item label="Piedra" name="Stone"/> + <combo_box.item label="Metal" name="Metal"/> + <combo_box.item label="Cristal" name="Glass"/> + <combo_box.item label="Madera" name="Wood"/> + <combo_box.item label="Carne" name="Flesh"/> + <combo_box.item label="Plástico" name="Plastic"/> + <combo_box.item label="Goma" name="Rubber"/> + </combo_box> + <spinner label="Gravedad" name="Physics Gravity"/> + <spinner label="Fricción" name="Physics Friction"/> + <spinner label="Densidad" name="Physics Density"/> + <spinner label="Reemplazo" name="Physics Restitution"/> </panel> <panel label="Textura" name="Texture"> <panel.string name="string repeats per meter"> diff --git a/indra/newview/skins/default/xui/es/menu_inventory_add.xml b/indra/newview/skins/default/xui/es/menu_inventory_add.xml index 615a1a09b7..f17cfe4ceb 100644 --- a/indra/newview/skins/default/xui/es/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory_add.xml @@ -4,6 +4,8 @@ <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modelo..." name="Upload Model"/> + <menu_item_call label="Asistente de modelo..." name="Upload Model Wizard"/> <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/> <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml new file mode 100644 index 0000000000..0d4f1314c9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_model_import_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="model_menu_gear_default"> + <menu_item_check label="Mostrar bordes" name="show_edges"/> + <menu_item_check label="Mostrar aspectos físicos" name="show_physics"/> + <menu_item_check label="Mostrar texturas" name="show_textures"/> + <menu_item_check label="Mostrar peso de la piel" name="show_skin_weight"/> + <menu_item_check label="Mostrar posturas de las articulaciones" name="show_joint_positions"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 1c45d36813..0824e386d5 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -120,6 +120,8 @@ <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modelo..." name="Upload Model"/> + <menu_item_call label="Asistente de modelo..." name="Upload Model Wizard"/> <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/> </menu> <menu_item_call label="Deshacer" name="Undo"/> @@ -159,7 +161,7 @@ <menu_item_check label="Alfa" name="Alpha"/> <menu_item_check label="Árbol" name="Tree"/> <menu_item_check label="Avatares" name="Character"/> - <menu_item_check label="Superficie del terreno" name="SurfacePath"/> + <menu_item_check label="Parche de superficie" name="Surface Patch"/> <menu_item_check label="Cielo" name="Sky"/> <menu_item_check label="Agua" name="Water"/> <menu_item_check label="Terreno" name="Ground"/> @@ -217,6 +219,7 @@ <menu_item_check label="Texture Category Console" name="Texture Category"/> <menu_item_check label="Fast Timers" name="Fast Timers"/> <menu_item_check label="Memory" name="Memory"/> + <menu_item_check label="Datos de la escena" name="Scene Statistics"/> <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/> <menu_item_check label="Camera" name="Camera"/> <menu_item_check label="Wind" name="Wind"/> @@ -224,6 +227,7 @@ </menu> <menu label="Show Info" name="Display Info"> <menu_item_check label="Show Time" name="Show Time"/> + <menu_item_check label="Mostrar coste de carga" name="Show Upload Cost"/> <menu_item_check label="Show Render Info" name="Show Render Info"/> <menu_item_check label="Mostrar información de textura" name="Show Texture Info"/> <menu_item_check label="Show Color Under Cursor" name="Show Color Under Cursor"/> @@ -246,7 +250,12 @@ <menu_item_check label="Frame Test" name="Frame Test"/> </menu> <menu label="Render Metadata" name="Render Metadata"> + <menu_item_check label="Normales" name="Normals"/> + <menu_item_check label="Formas del físico" name="Physics Shapes"/> <menu_item_check label="Actualizar el tipo" name="Update Type"/> + <menu_item_check label="Información sobre el nivel de detalle" name="LOD Info"/> + <menu_item_check label="Crear cola" name="Build Queue"/> + <menu_item_check label="Esculpir" name="Sculpt"/> </menu> <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> @@ -312,6 +321,7 @@ <menu_item_call label="Debug Avatar Textures" name="Debug Avatar Textures"/> </menu> <menu_item_check label="HTTP Textures" name="HTTP Textures"/> + <menu_item_check label="Inventario HTTP" name="HTTP Inventory"/> <menu_item_check label="Console Window on next Run" name="Console Window"/> <menu_item_call label="Request Admin Status" name="Request Admin Options"/> <menu_item_call label="Leave Admin Status" name="Leave Admin Options"/> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index ce9273ab50..9674f73241 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -2166,6 +2166,12 @@ Esto puede influir en tu contraseña. <notification name="RezItemNoPermissions"> No tienes permisos suficientes para renderizar el objeto. </notification> + <notification name="IMAcrossParentEstates"> + No se pueden enviar mensajes instantáneos entre propiedades principales. + </notification> + <notification name="TransferInventoryAcrossParentEstates"> + No se puede transferir el inventario entre propiedades principales. + </notification> <notification name="UnableToLoadNotecard"> En este momento no se puede cargar la nota. </notification> @@ -2738,6 +2744,10 @@ Por tu seguridad, serán bloqueadas durante unos segundos. Un moderador ha silenciado tu voz. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="UploadCostConfirmation"> + Esta carga te costará [PRECIO] L$. ¿Deseas continuar? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Subir"/> + </notification> <notification name="ConfirmClearTeleportHistory"> ¿Estás seguro de que quieres borrar tu historial de teleportes? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -2749,6 +2759,9 @@ Se mostrará cuando haya suficiente espacio. <notification name="ShareNotification"> Selecciona los residentes con quienes deseas compartir. </notification> + <notification name="MeshUploadError"> + No se ha cargado [ETIQUETA]: [MENSAJE] [IDENTIFICADOR] [IDENTIFICADOR_FALTA_VALIDEZ] + </notification> <notification name="ShareItemsConfirmation"> ¿Estás seguro de que quieres compartir los elementos siguientes? @@ -2765,6 +2778,19 @@ Con los siguientes residentes: <notification name="DeedToGroupFail"> Error de transferencia a grupo. </notification> + <notification name="ReleaseLandThrottled"> + La parcela [NOMBRE_PARCELA] no se puede abandonar en este momento. + </notification> + <notification name="ReleasedLandWithReclaim"> + Ya está disponible la parcela [NOMBRE_PARCELA] de [ÁREA] m². + +Dispondrás de [PERÍODO_DE_RECLAMACIÓN] horas para reclamar la cantidad de 0 L$ antes de que se ponga en venta. + </notification> + <notification name="ReleasedLandNoReclaim"> + Ya está disponible la parcela [NOMBRE_PARCELA] de [ÁREA] m². + +Ya está en venta. + </notification> <notification name="AvatarRezNotification"> ( [EXISTENCE] segundos vivo) El avatar '[NAME]' tardó [TIME] segundos en dejar de aparecer como nube. @@ -2902,6 +2928,10 @@ Al ocultar el botón Hablar se desactiva la función de voz. La creación y edición de grupos sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión. <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> </notification> + <notification label="" name="NoPlaceInfo"> + La opción de consulta del perfil del lugar solo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión. + <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> + </notification> <notification label="" name="NoPicks"> La creación y edición de Destacados sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión. <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> @@ -2922,9 +2952,18 @@ Al ocultar el botón Hablar se desactiva la función de voz. El pago a otros residentes sólo está disponible en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo? <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> </notification> - <global name="UnsupportedCPU"> - - La velocidad de tu CPU no cumple los requerimientos mínimos. - </global> + <notification label="" name="NoInventory"> + La opción de consulta del inventario solo está disponible en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo? + <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> + </notification> + <notification label="" name="NoAppearance"> + El editor de apariencia solo está disponible en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo? + <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> + </notification> + <notification label="" name="NoSearch"> + Las búsquedas solo están disponibles en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo? + <usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/> + </notification> <global name="UnsupportedGLRequirements"> Parece que no tienes el hardware apropiado para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples ('multitexture support'). Si la tienes, comprueba que tienes los últimos 'drivers' para tu tarjeta gráfica, así como los últimos parches y 'service packs' para tu sistema operativo. diff --git a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml index a7fb2d9af8..dfb6fc7d80 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml @@ -22,6 +22,9 @@ <text name="text_box5"> Errores </text> + <text name="text_box10"> + Directo + </text> <text name="text_box7"> Propietario </text> 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 ac40587033..281b871fed 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -27,8 +27,20 @@ </text> <check_box initial_value="verdadero" label="Agua transparente" name="TransparentWater"/> <check_box initial_value="true" label="Efecto de relieve y brillo" name="BumpShiny"/> + <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="Oclusión del ambiente" name="UseSSAO"/> + <check_box initial_value="verdadero" label="Profundidad del campo" name="UseDoF"/> + <text name="shadows_label"> + Sombras: + </text> + <combo_box name="ShadowDetail"> + <combo_box.item label="Ninguno" name="0"/> + <combo_box.item label="Sol/luna" name="1"/> + <combo_box.item label="Sol/luna + proyectores" name="2"/> + </combo_box> <text name="reflection_label"> Reflejos en el agua: </text> @@ -86,7 +98,7 @@ <check_box initial_value="true" label="Avatares simulados" name="AvatarImpostors"/> <check_box initial_value="true" label="Renderizado por hardware" name="AvatarVertexProgram"/> <check_box initial_value="true" label="Ropas del avatar" name="AvatarCloth"/> - <text name="TerrainDetailText" left="402"> + <text left="402" name="TerrainDetailText"> Detalle del terreno: </text> <radio_group name="TerrainDetailRadio"> diff --git a/indra/newview/skins/default/xui/es/panel_region_general.xml b/indra/newview/skins/default/xui/es/panel_region_general.xml index fe7f51c74e..453d1fe43c 100644 --- a/indra/newview/skins/default/xui/es/panel_region_general.xml +++ b/indra/newview/skins/default/xui/es/panel_region_general.xml @@ -25,6 +25,7 @@ <check_box label="Permitir la reventa del terreno" name="allow_land_resell_check"/> <check_box label="Permitir unir/dividir el terreno" name="allow_parcel_changes_check"/> <check_box label="Bloquear el mostrar el terreno en la búsqueda" name="block_parcel_search_check" tool_tip="Permitir que la gente vea esta región y sus parcelas en los resultados de la búsqueda."/> + <check_box label="Permitir objetos de red" name="mesh_rez_enabled_check" tool_tip="Permitir que los usuarios creen objetos de red en esta región"/> <spinner label="Nº máximo de avatares" label_width="120" name="agent_limit_spin" width="180"/> <spinner label="Plus de objetos" label_width="120" name="object_bonus_spin" width="180"/> <text label="Calificación" name="access_text"> diff --git a/indra/newview/skins/default/xui/es/panel_sound_devices.xml b/indra/newview/skins/default/xui/es/panel_sound_devices.xml new file mode 100644 index 0000000000..acf5c68cda --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_sound_devices.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel label="Configuración del dispositivo" name="device_settings_panel"> + <panel.string name="default_text"> + Por defecto + </panel.string> + <text name="Input"> + Entrada + </text> + <text name="My volume label"> + Mi volumen: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia el volumen usando este deslizable"/> + <text name="wait_text"> + Por favor, espera + </text> + <text name="Output"> + Salida + </text> +</panel> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index a869c079ef..3731b6b57c 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -118,6 +118,139 @@ <string name="create_account_url"> http://join.secondlife.com/index.php?lang=es-ES </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. + +Si deseas obtener más información, consulta las preguntas frecuentes que aparecen a continuación: +http://secondlife.com/viewer-access-faq + </string> + <string name="LoginIntermediateOptionalUpdateAvailable"> + Actualización opcional del visor disponible: [VERSIÓN] + </string> + <string name="LoginFailedRequiredUpdate"> + Actualización necesaria del visor: [VERSIÓN] + </string> + <string name="LoginFailedAlreadyLoggedIn"> + El agente ya ha iniciado sesión. + </string> + <string name="LoginFailedAuthenticationFailed"> + Lo sentimos. No ha sido posible iniciar sesión. +Comprueba si has introducido correctamente + * El nombre de usuario (como juangarcia12 o estrella.polar) + * Contraseña +Asimismo, asegúrate de que la tecla Mayús esté desactivada. + </string> + <string name="LoginFailedPasswordChanged"> + Como precaución de seguridad, se ha modificado tu contraseña. +Dirígete a la página de tu cuenta en http://secondlife.com/password +y responde a la pregunta de seguridad para restablecer la contraseña. +Lamentamos las molestias. + </string> + <string name="LoginFailedPasswordReset"> + Hemos realizado unos cambios en nuestro sistema, por lo que deberás restablecer la contraseña. +Dirígete a la página de tu cuenta en http://secondlife.com/password +y responde a la pregunta de seguridad para restablecer la contraseña. +Lamentamos las molestias. + </string> + <string name="LoginFailedEmployeesOnly"> + Second Life no está disponible temporalmente debido a tareas de mantenimiento. +Actualmente, solo se permite iniciar sesión a los empleados. +Consulta www.secondlife.com/status si deseas obtener actualizaciones. + </string> + <string name="LoginFailedPremiumOnly"> + Se ha restringido de manera temporal el inicio de sesión en Second Life con el fin de garantizar una experiencia óptima a nuestros residentes. + +Aquellos usuarios que dispongan de cuentas gratuitas no podrán acceder a Second Life durante este período de tiempo, ya que el propósito de esta medida es obtener espacio suficiente para los residentes que hayan pagado por acceder a Second Life. + </string> + <string name="LoginFailedComputerProhibited"> + No se puede acceder a Second Life desde este ordenador. +Si crees que se trata de un error, ponte en contacto con +support@secondlife.com. + </string> + <string name="LoginFailedAcountSuspended"> + No se podrá acceder a tu cuenta hasta las +[HORA] (horario de la costa del Pacífico). + </string> + <string name="LoginFailedAccountDisabled"> + En este momento no podemos completar la solicitud. +Si deseas obtener asistencia, ponte en contacto con el departamento de soporte de Second Life a través de la página http://secondlife.com/support. +Si no puedes cambiar la contraseña, llama al número (866) 476-9763. + </string> + <string name="LoginFailedTransformError"> + Se han detectado datos incorrectos en el inicio de sesión. +Ponte en contacto con support@secondlife.com. + </string> + <string name="LoginFailedAccountMaintenance"> + Se están realizando tareas rutinarias de mantenimiento en tu cuenta. +No se podrá acceder a tu cuenta hasta las +[HORA] (horario de la costa del Pacífico). +Si crees que se trata de un error, ponte en contacto con support@secondlife.com. + </string> + <string name="LoginFailedPendingLogoutFault"> + La solicitud de cierre de sesión ha obtenido como resultado un error del simulador. + </string> + <string name="LoginFailedPendingLogout"> + El sistema está cerrando tu sesión en estos momentos. +Tu cuenta no estará disponible hasta las +[HORA] (horario de la costa del Pacífico). + </string> + <string name="LoginFailedUnableToCreateSession"> + No se ha podido crear una sesión válida. + </string> + <string name="LoginFailedUnableToConnectToSimulator"> + No se ha podido establecer la conexión con un simulador. + </string> + <string name="LoginFailedRestrictedHours"> + Tu cuenta solo puede acceder a Second Life +entre las [INICIO] y las [FIN] (horario de la costa del Pacífico). +Inténtalo de nuevo durante ese horario. +Si crees que se trata de un error, ponte en contacto con support@secondlife.com. + </string> + <string name="LoginFailedIncorrectParameters"> + Parámetros incorrectos. +Si crees que se trata de un error, ponte en contacto con support@secondlife.com. + </string> + <string name="LoginFailedFirstNameNotAlphanumeric"> + El parámetro correspondiente al nombre debe contener caracteres alfanuméricos. +Si crees que se trata de un error, ponte en contacto con support@secondlife.com. + </string> + <string name="LoginFailedLastNameNotAlphanumeric"> + El parámetro correspondiente al apellido debe contener caracteres alfanuméricos. +Si crees que se trata de un error, ponte en contacto con support@secondlife.com. + </string> + <string name="LogoutFailedRegionGoingOffline"> + La región se está desconectando. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LogoutFailedAgentNotInRegion"> + El agente no se encuentra en la región. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LogoutFailedPendingLogin"> + A esta región ya se ha accedido en otra sesión. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LogoutFailedLoggingOut"> + Se ha salido de la región en la sesión anterior. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LogoutFailedStillLoggingOut"> + La región aún está cerrando la sesión anterior. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LogoutSucceeded"> + Se ha salido de la región en la última sesión. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LogoutFailedLogoutBegun"> + La región ha comenzado el proceso de cierre de sesión. +Intenta iniciar sesión de nuevo en unos instantes. + </string> + <string name="LoginFailedLoggingOutSession"> + El sistema ha comenzado a cerrar la última sesión. +Intenta iniciar sesión de nuevo en unos instantes. + </string> <string name="AgentLostConnection"> Esta región puede estar teniendo problemas. Por favor, comprueba tu conexión a Internet. </string> @@ -426,6 +559,9 @@ <string name="symbolic folder link"> enlace de la carpeta </string> + <string name="mesh"> + red + </string> <string name="AvatarAway"> Ausente </string> @@ -1153,6 +1289,9 @@ <string name="InvFolder Accessories"> Accesorios </string> + <string name="InvFolder Meshes"> + Redes + </string> <string name="InvFolder Friends"> Amigos </string> @@ -3663,6 +3802,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> Se ha agotado el tiempo del inicio de sesión </string> + <string name="Home position set."> + Posición inicial establecida. + </string> <string name="voice_morphing_url"> http://secondlife.com/landing/voicemorphing </string> diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index 140f7bdc14..214ae96373 100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -56,26 +56,32 @@ Si ringraziano i seguenti residenti per aver contribuito a rendere questa versio <panel label="Licenze" name="licenses_panel"> <text_editor name="credits_editor"> 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - Tutti i diritti riservati. Leggi licenses.txt per maggiori dettagli. +APR Copyright (C) 2000-2004 The Apache Software Foundation +Collada DOM Copyright 2005 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. +expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). +GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2001, Xiphophorus +OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. +PCRE Copyright (c) 1997-2008 University of Cambridge +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. - Chat vocale Codifica audio: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) +Il Viewer Second Life utilizza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e licenziatari). Tutti i diritti riservati. Per informazioni dettagliate, vedere www.havok.com. + +Tutti i diritti riservati. Per informazioni dettagliate, vedere licenses.txt. + +Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) </text_editor> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/it/floater_buy_contents.xml b/indra/newview/skins/default/xui/it/floater_buy_contents.xml index a54751e629..84ed85e362 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_contents.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_buy_contents" title="COMPRA I CONTENUTI"> <text name="contains_text"> - [NAME] contiene: + <nolink>[NAME]</nolink> contiene: </text> <text name="buy_text"> Compra per [AMOUNT]L$ da [NAME]? diff --git a/indra/newview/skins/default/xui/it/floater_import_collada.xml b/indra/newview/skins/default/xui/it/floater_import_collada.xml new file mode 100644 index 0000000000..eb4d0c0fdb --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_import_collada.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Import Collada" title="Importa scena"> + <text name="mesh count"> + Reticoli: [COUNT] + </text> + <text name="texture count"> + Texture: [COUNT] + </text> + <text name="status"> + Stato: [STATUS] + </text> + <button label="Annulla" name="cancel"/> + <button label="OK" name="ok"/> + <string name="status_idle"> + Pausa + </string> + <string name="status_uploading"> + Caricamento in corso [NAME] + </string> + <string name="status_creating"> + Creazione oggetto [NAME] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml index 49130285f2..cf790ee62e 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml @@ -5,6 +5,7 @@ <check_box label="Abiti" name="check_clothing"/> <check_box label="Gesture" name="check_gesture"/> <check_box label="Landmark" name="check_landmark"/> + <check_box label="Reticoli" name="check_mesh"/> <check_box label="Notecard" name="check_notecard"/> <check_box label="Oggetti" name="check_object"/> <check_box label="Script" name="check_script"/> diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml new file mode 100644 index 0000000000..a17b8b36c2 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Preview" title="Carica modello"> + <string name="status_idle"> + Pausa + </string> + <string name="status_reading_file"> + Caricamento in corso... + </string> + <string name="status_generating_meshes"> + Generazione reticoli... + </string> + <string name="status_vertex_number_overflow"> + Errore: numero di vertici maggiore di 65534, annullato. + </string> + <string name="high"> + Alto + </string> + <string name="medium"> + Medio + </string> + <string name="low"> + Basso + </string> + <string name="lowest"> + Bassissimo + </string> + <string name="mesh_status_good"> + Invia! + </string> + <string name="mesh_status_na"> + N/D + </string> + <string name="mesh_status_none"> + Nessuno + </string> + <string name="mesh_status_submesh_mismatch"> + Ai vari livelli del dettaglio corrispondono numeri diversi di faccette con texture. + </string> + <string name="mesh_status_mesh_mismatch"> + Ai vari livelli del dettaglio corrispondono numeri diversi istanze di reticoli. + </string> + <string name="mesh_status_too_many_vertices"> + Troppi vertici per il livello di dettaglio. + </string> + <string name="mesh_status_missing_lod"> + Livello di dettaglio minimo mancante. + </string> + <string name="layer_all"> + Tutto + </string> + <string name="decomposing"> + Analisi in corso... + </string> + <string name="simplifying"> + Semplificazione in corso... + </string> + <text name="name_label"> + Nome: + </text> + <text name="lod_label"> + Anteprima: + </text> + <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering"> + <combo_item name="high"> + Livello di dettaglio: Alto + </combo_item> + <combo_item name="medium"> + Livello di dettaglio: Medio + </combo_item> + <combo_item name="low"> + Livello di dettaglio: Basso + </combo_item> + <combo_item name="lowest"> + Livello di dettaglio: Bassissimo + </combo_item> + </combo_box> + <panel> + <text name="streaming cost"> + Costo risorsa: [COST] + </text> + <text name="physics cost"> + Costo fisica: [COST] + </text> + <text name="upload fee"> + Costo caricamento: N/D + </text> + </panel> + <text name="status"> + [STATUS] + </text> + <button label="Predefiniti" name="reset_btn" tool_tip="Ripristina predefiniti"/> + <button label="Carica sul server" name="ok_btn" tool_tip="Carica al simulatore"/> + <button label="Annulla" name="cancel_btn"/> + <tab_container name="import_tab"> + <panel label="Livello di dettaglio" name="lod_panel"> + <text name="lod_table_header"> + Seleziona livello di dettaglio: + </text> + <text name="high_label" value="Alto"/> + <text name="high_triangles" value="0"/> + <text name="high_vertices" value="0"/> + <text name="medium_label" value="Medio"/> + <text name="medium_triangles" value="0"/> + <text name="medium_vertices" value="0"/> + <text name="low_label" value="Basso"/> + <text name="low_triangles" value="0"/> + <text name="low_vertices" value="0"/> + <text name="lowest_label" value="Bassissimo"/> + <text name="lowest_triangles" value="0"/> + <text name="lowest_vertices" value="0"/> + <text name="lod_table_footer"> + Livello di dettaglio: [DETAIL] + </text> + <radio_group name="lod_file_or_limit" value="lod_from_file"> + <radio_item label="Carica da file" name="lod_from_file"/> + <radio_item label="Genera automaticamente" name="lod_auto_generate"/> + <radio_item label="Nessuno" name="lod_none"/> + </radio_group> + <button label="Sfoglia..." name="lod_browse"/> + <combo_box name="lod_mode"> + <combo_item name="triangle_limit"> + Limite triangoli + </combo_item> + <combo_item name="error_threshold"> + Limite errori + </combo_item> + </combo_box> + <text name="build_operator_text"> + Operatore costruzione: + </text> + <text name="queue_mode_text"> + Modalità di coda: + </text> + <combo_box name="build_operator"> + <combo_item name="edge_collapse"> + Collassa bordo + </combo_item> + <combo_item name="half_edge_collapse"> + Collassa mezzo bordo + </combo_item> + </combo_box> + <combo_box name="queue_mode"> + <combo_item name="greedy"> + Ingordo + </combo_item> + <combo_item name="lazy"> + Pigro + </combo_item> + <combo_item name="independent"> + Indipendente + </combo_item> + </combo_box> + <text name="border_mode_text"> + Modalità bordo: + </text> + <text name="share_tolderance_text"> + Tolleranza condivisione: + </text> + <combo_box name="border_mode"> + <combo_item name="border_unlock"> + Sblocca + </combo_item> + <combo_item name="border_lock"> + Blocca + </combo_item> + </combo_box> + <text name="crease_label"> + Angolo piega: + </text> + <spinner name="crease_angle" value="75"/> + </panel> + <panel label="Fisica" name="physics_panel"> + <panel name="physics geometry"> + <radio_group name="physics_load_radio" value="physics_load_from_file"> + <radio_item label="File:" name="physics_load_from_file"/> + <radio_item label="Usa livello di dettaglio:" name="physics_use_lod"/> + </radio_group> + <combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica"> + <combo_item name="physics_lowest"> + Bassissimo + </combo_item> + <combo_item name="physics_low"> + Basso + </combo_item> + <combo_item name="physics_medium"> + Medio + </combo_item> + <combo_item name="physics_high"> + Alto + </combo_item> + </combo_box> + <button label="Sfoglia..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <slider label="Liscia:" name="Smooth"/> + <check_box label="Chiudi fori (lento)" name="Close Holes (Slow)"/> + <button label="Analizza" name="Decompose"/> + <button label="Annulla" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <slider label="Passaggi:" name="Combine Quality"/> + <slider label="Scala dettagli:" name="Detail Scale"/> + <slider label="Mantieni:" name="Retain%"/> + <button label="Semplifica" name="Simplify"/> + <button label="Annulla" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <slider label="Ampiezza anteprima:" name="physics_explode"/> + <text name="physics_triangles"> + Triangoli: [TRIANGLES] + </text> + <text name="physics_points"> + Vertici: [POINTS] + </text> + <text name="physics_hulls"> + Inviluppi: [HULLS] + </text> + </panel> + </panel> + <panel label="Modificatori" name="modifiers_panel"> + <spinner name="import_scale" value="1.0"/> + <text name="import_dimensions"> + [X] x [Y] x [Z] m + </text> + <check_box label="Texture" name="upload_textures"/> + <check_box label="Peso pelle" name="upload_skin"/> + <check_box label="Posizioni giunti" name="upload_joints"/> + <spinner name="pelvis_offset" value="0.0"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_model_wizard.xml b/indra/newview/skins/default/xui/it/floater_model_wizard.xml new file mode 100644 index 0000000000..b17f731089 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_model_wizard.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Wizard" title="PROCEDURA GUIDATA CARICA MODELLO"> + <button label="5. Carica sul server" name="upload_btn"/> + <button label="4. Rivedi" name="review_btn"/> + <button label="3. Fisica" name="physics2_btn"/> + <button label="3. Fisica" name="physics_btn"/> + <button label="2. Ottimizza" name="optimize_btn"/> + <button label="1. Seleziona file" name="choose_file_btn"/> + <panel name="choose_file_panel"> + <panel name="header_panel"> + <text name="header_text"> + Carica modello + </text> + </panel> + <text name="description"> + Questa procedura guidata permette di importare modelli di reticoli in Second Life. Specificare prima un file che contiene il modello da importare. Second Life supporta file COLLADA (.dae). + </text> + <panel name="content"> + <text name="Cache location"> + Nome file: + </text> + <button label="Sfoglia..." label_selected="Sfoglia..." name="browse"/> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="optimize_panel"> + <panel name="header_panel"> + <text name="header_text"> + Ottimizza + </text> + </panel> + <text name="description"> + Questa procedura guidata ha ottimizzato il modello per migliorare le prestazioni. Si possono variare i risultati dell'ottimizzazione in basso o fare clic su Avanti per continuare. + </text> + <panel name="content"> + <text name="high_detail_text"> + Genera livello di dettaglio: Alto + </text> + <text name="medium_detail_text"> + Genera livello di dettaglio: Medio + </text> + <text name="low_detail_text"> + Genera livello di dettaglio: Basso + </text> + <text name="lowest_detail_text"> + Genera livello di dettaglio: Bassissimo + </text> + </panel> + <panel name="content2"> + <text name="lod_label"> + Anteprima modello: + </text> + <combo_box name="preview_lod_combo2" tool_tip="Livello di dettaglio per anteprima rendering"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Medio + </combo_item> + <combo_item name="low"> + Basso + </combo_item> + <combo_item name="lowest"> + Bassissimo + </combo_item> + </combo_box> + <text name="streaming cost"> + Costo risorsa: [COST] + </text> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="physics_panel"> + <panel name="header_panel"> + <text name="header_text"> + Fisica + </text> + </panel> + <text name="description"> + La procedura guidata permette di creare una forma fisica che determina come l'oggetto interagisce con altri oggetti e avatar. Impostare il comando a scorrimento sul livello di dettaglio appropriato per l'uso dell'oggetto: + </text> + <panel name="content"> + <text name="streaming cost"> + Costo risorsa: [COST] + </text> + </panel> + </panel> + <panel name="physics2_panel"> + <panel name="header_panel"> + <text name="header_text"> + Fisica + </text> + </panel> + <text name="description"> + Visualizza in anteprima la forma fisica in basso, quindi fai clic su Avanti per continuare. Per modificare la forma fisica, fare clic su Indietro. + </text> + <panel name="content"> + <text name="lod_label"> + Anteprima modello: + </text> + <combo_box name="preview_lod_combo3" tool_tip="Livello di dettaglio per anteprima rendering"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Medio + </combo_item> + <combo_item name="low"> + Basso + </combo_item> + <combo_item name="lowest"> + Bassissimo + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + <text name="streaming cost"> + Costo risorsa: [COST] + </text> + </panel> + </panel> + <panel name="review_panel"> + <panel name="header_panel"> + <text name="header_text"> + Rivedi + </text> + </panel> + <text name="description"> + Rivedere i dettagli in basso, quindi fare clic su Carica per caricare il modello. Il tuo saldo in L$ verrà addebitato quando fai clic su Carica. + </text> + <panel name="content"> + <text name="lod_label"> + Anteprima modello: + </text> + <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Medio + </combo_item> + <combo_item name="low"> + Basso + </combo_item> + <combo_item name="lowest"> + Bassissimo + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + <text name="streaming cost"> + Costo risorsa: [COST] + </text> + <text name="physics cost"> + Costo fisica: [COST] + </text> + </panel> + <panel name="upload_panel"> + <panel name="header_panel"> + <text name="header_text"> + Caricamento completato. + </text> + </panel> + <text name="description"> + Congratulazioni. Il modello è stato caricato correttamente e ora puoi trovarlo nella cartella Oggetti nel tuo inventario. + </text> + </panel> + <button label="<< Indietro" name="back"/> + <button label="Avanti >>" name="next"/> + <button label="Carica" name="upload" tool_tip="Carica al simulatore"/> + <button label="Annulla" name="cancel"/> + <button label="Chiudi" name="close"/> + <spinner name="import_scale" value="1.0"/> + <string name="status_idle"> + Pausa + </string> + <string name="status_reading_file"> + Caricamento in corso... + </string> + <string name="status_generating_meshes"> + Generazione reticoli... + </string> + <string name="status_vertex_number_overflow"> + Errore: numero di vertici maggiore di 65534, annullato. + </string> + <string name="high"> + Alto + </string> + <string name="medium"> + Medio + </string> + <string name="low"> + Basso + </string> + <string name="lowest"> + Bassissimo + </string> + <string name="mesh_status_good"> + Invia! + </string> + <string name="mesh_status_na"> + N/D + </string> + <string name="mesh_status_none"> + Nessuno + </string> + <string name="mesh_status_submesh_mismatch"> + Ai vari livelli del dettaglio corrispondono numeri diversi di faccette con texture. + </string> + <string name="mesh_status_mesh_mismatch"> + Ai vari livelli del dettaglio corrispondono numeri diversi istanze di reticoli. + </string> + <string name="mesh_status_too_many_vertices"> + Troppi vertici per il livello di dettaglio. + </string> + <string name="mesh_status_missing_lod"> + Livello di dettaglio minimo mancante. + </string> + <string name="layer_all"> + Tutto + </string> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_price_for_listing.xml b/indra/newview/skins/default/xui/it/floater_price_for_listing.xml new file mode 100644 index 0000000000..06c838a981 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_price_for_listing.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="price_for_listing" title="PUBBLICA L'ANNUNCIO PUBBLICITARIO"> + <text name="explanation_text"> + La tua inserzione sarà visibile per una settimana dal giorno della sua pubblicazione. + +La posizione del tuo annuncio nella lista delle inserzioni è determinata dalla somma pagata. + +Le inserzioni con un pagamento più alto saranno più visibili nella lista dei risultati della ricerca. + </text> + <text name="price_text"> + Prezzo per inserzione: + </text> + <text name="price_symbol"> + L$ + </text> + <button label="OK" name="set_price_btn"/> + <button label="Annulla" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml new file mode 100644 index 0000000000..df4b8f4878 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_sound_devices.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_sound_devices" title="Dispositivi sonori"> + <text name="voice_label"> + Chat vocale + </text> + <check_box label="Abilitato" name="enable_voice"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index 52b5566006..23e01a3943 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -126,6 +126,18 @@ <text name="prim_count"> Prim: [COUNT] </text> + <text name="linked_set_count"> + Set collegati: [COUNT] + </text> + <text name="linked_set_cost" tool_tip="Costo dei set collegati attualmente selezionati come [prim],[complessità fisica]"> + Costo: [COST] / [PHYSICS] + </text> + <text name="object_count"> + Oggetti: [COUNT] + </text> + <text name="object_cost" tool_tip="Costo degli oggetti attualmente selezionati come [prim] / [complessità fisica]"> + Costo: [COST] / [PHYSICS] + </text> <tab_container name="Object Info Tabs"> <panel label="Generale" name="General"> <panel.string name="text deed continued"> @@ -276,15 +288,6 @@ <combo_box.item label="Anello" name="Ring"/> <combo_box.item label="Sculpted" name="Sculpted"/> </combo_box> - <combo_box name="material"> - <combo_box.item label="Pietra" name="Stone"/> - <combo_box.item label="Metallo" name="Metal"/> - <combo_box.item label="Vetro" name="Glass"/> - <combo_box.item label="Legno" name="Wood"/> - <combo_box.item label="Carne" name="Flesh"/> - <combo_box.item label="Plastica" name="Plastic"/> - <combo_box.item label="Gomma" name="Rubber"/> - </combo_box> <text left_delta="-10" name="text cut" width="170"> Riduci una sezione (inizio/fine) </text> @@ -357,9 +360,19 @@ <combo_box.item label="Toroidale" name="Torus"/> <combo_box.item label="Piana" name="Plane"/> <combo_box.item label="Cilindrica" name="Cylinder"/> + <combo_box.item label="Reticolo" name="Mesh"/> </combo_box> </panel> <panel label="Caratteristiche" name="Features"> + <panel.string name="None"> + Nessuno + </panel.string> + <panel.string name="Prim"> + Prim + </panel.string> + <panel.string name="Convex Hull"> + Inviluppo convesso + </panel.string> <text name="select_single"> Seleziona solo un prim per modificarne le caratteristiche. </text> @@ -384,6 +397,23 @@ <spinner label="Centro focale" name="Light Focus"/> <spinner label="Attenuazione" name="Light Falloff"/> <spinner label="Atmosfera" name="Light Ambiance"/> + <text name="label physicsshapetype"> + Tipo di forma fisica: + </text> + <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Selezionare il tipo di forma fisica"/> + <combo_box name="material"> + <combo_box.item label="Pietra" name="Stone"/> + <combo_box.item label="Metallo" name="Metal"/> + <combo_box.item label="Vetro" name="Glass"/> + <combo_box.item label="Legno" name="Wood"/> + <combo_box.item label="Carne" name="Flesh"/> + <combo_box.item label="Plastica" name="Plastic"/> + <combo_box.item label="Gomma" name="Rubber"/> + </combo_box> + <spinner label="Gravità" name="Physics Gravity"/> + <spinner label="Frizione" name="Physics Friction"/> + <spinner label="Densità" name="Physics Density"/> + <spinner label="Restituzione" name="Physics Restitution"/> </panel> <panel label="Texture" name="Texture"> <panel.string name="string repeats per meter"> diff --git a/indra/newview/skins/default/xui/it/menu_inventory_add.xml b/indra/newview/skins/default/xui/it/menu_inventory_add.xml index a2535ce48d..62da61cd6b 100644 --- a/indra/newview/skins/default/xui/it/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory_add.xml @@ -4,6 +4,8 @@ <menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/> <menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/> <menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/> + <menu_item_call label="Modella..." name="Upload Model"/> + <menu_item_call label="Procedura guidata modellazione..." name="Upload Model Wizard"/> <menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/> <menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml new file mode 100644 index 0000000000..5012e6450f --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_model_import_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="model_menu_gear_default"> + <menu_item_check label="Mostra bordi" name="show_edges"/> + <menu_item_check label="Mostra fisica" name="show_physics"/> + <menu_item_check label="Mostra texture" name="show_textures"/> + <menu_item_check label="Mostra peso pelle" name="show_skin_weight"/> + <menu_item_check label="Mostra posizioni giunti" name="show_joint_positions"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 6599810a67..e4df0630d9 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -120,6 +120,8 @@ <menu_item_call label="Immagine ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Suono ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animazione ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modella..." name="Upload Model"/> + <menu_item_call label="Procedura guidata modellazione..." name="Upload Model Wizard"/> <menu_item_call label="In blocco ([COST] L$ per file)..." name="Bulk Upload"/> </menu> <menu_item_call label="Annulla" name="Undo"/> @@ -159,7 +161,7 @@ <menu_item_check label="Alpha (Trasparenza)" name="Alpha"/> <menu_item_check label="Albero" name="Tree"/> <menu_item_check label="Avatar" name="Character"/> - <menu_item_check label="Superficie" name="SurfacePath"/> + <menu_item_check label="Superficie chiusa" name="Surface Patch"/> <menu_item_check label="Cielo" name="Sky"/> <menu_item_check label="Acqua" name="Water"/> <menu_item_check label="Suolo" name="Ground"/> @@ -217,6 +219,7 @@ <menu_item_check label="Console categoria texture" name="Texture Category"/> <menu_item_check label="Timer veloci" name="Fast Timers"/> <menu_item_check label="Memoria" name="Memory"/> + <menu_item_check label="Statistiche scena" name="Scene Statistics"/> <menu_item_call label="Informazioni regione sulla console di debug" name="Region Info to Debug Console"/> <menu_item_check label="Fotocamera" name="Camera"/> <menu_item_check label="Vento" name="Wind"/> @@ -224,6 +227,7 @@ </menu> <menu label="Mostra informazioni" name="Display Info"> <menu_item_check label="Mostra orario" name="Show Time"/> + <menu_item_check label="Mostra costo di caricamento" name="Show Upload Cost"/> <menu_item_check label="Mostra informazioni di rendering" name="Show Render Info"/> <menu_item_check label="Mostra info sulla texture" name="Show Texture Info"/> <menu_item_check label="Mostra colore sotto il cursore" name="Show Color Under Cursor"/> @@ -246,7 +250,12 @@ <menu_item_check label="Test frame" name="Frame Test"/> </menu> <menu label="Render Metadata" name="Render Metadata"> + <menu_item_check label="Normali" name="Normals"/> + <menu_item_check label="Forme fisica" name="Physics Shapes"/> <menu_item_check label="Aggiorna tipo" name="Update Type"/> + <menu_item_check label="Info livello dettaglio" name="LOD Info"/> + <menu_item_check label="Crea coda" name="Build Queue"/> + <menu_item_check label="Scolpisci" name="Sculpt"/> </menu> <menu label="Rendering" name="Rendering"> <menu_item_check label="Assi" name="Axes"/> @@ -312,6 +321,7 @@ <menu_item_call label="Debug texture dell'avatar" name="Debug Avatar Textures"/> </menu> <menu_item_check label="Texture HTTP" name="HTTP Textures"/> + <menu_item_check label="Inventario HTTP" name="HTTP Inventory"/> <menu_item_check label="Finestra Console al prossimo lancio" name="Console Window"/> <menu_item_call label="Richiedi diritti Admin" name="Request Admin Options"/> <menu_item_call label="Lascia stato Admin" name="Leave Admin Options"/> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 6619260670..f50051c004 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -2163,6 +2163,12 @@ Questo potrebbe incidere sulla tua password. <notification name="RezItemNoPermissions"> Permessi insufficienti per creare un oggetto. </notification> + <notification name="IMAcrossParentEstates"> + Impossibile inviare IM tra proprietà principali diverse. + </notification> + <notification name="TransferInventoryAcrossParentEstates"> + Impossibile trasferire l'inventario tra proprietà principali diverse. + </notification> <notification name="UnableToLoadNotecard"> Impossibile caricare la notecard in questo momento. </notification> @@ -2736,6 +2742,10 @@ Per sicurezza, verranno bloccati per alcuni secondi. La tua voce è stata interrotta dal moderatore. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="UploadCostConfirmation"> + Questo caricamento costerà L$[PRICE]. Continuare con il caricamento? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Carica"/> + </notification> <notification name="ConfirmClearTeleportHistory"> Sei sicuro di volere cancellare la cronologia dei tuoi teleport? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -2747,6 +2757,9 @@ Il pulsante verrà visualizzato quando lo spazio sarà sufficiente. <notification name="ShareNotification"> Scegli i residenti con i quali condividere. </notification> + <notification name="MeshUploadError"> + [LABEL] non è stato caricato: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + </notification> <notification name="ShareItemsConfirmation"> Sei sicuro di volere condividere gli oggetti @@ -2763,6 +2776,19 @@ Con i seguenti residenti? <notification name="DeedToGroupFail"> Cessione al gruppo non riuscita. </notification> + <notification name="ReleaseLandThrottled"> + Il lotto [PARCEL_NAME] non può essere abbandonato in questo momento. + </notification> + <notification name="ReleasedLandWithReclaim"> + Il lotto di [AREA] m² '[PARCEL_NAME]' è stato rilasciato. + +Hai [RECLAIM_PERIOD] ore per riprendere possesso per L$0 prima che venga messo in vendita a chiunque altro. + </notification> + <notification name="ReleasedLandNoReclaim"> + Il lotto di [AREA] m² '[PARCEL_NAME]' è stato rilasciato. + +Ora è disponibile per l'acquisto da parte di chiunque. + </notification> <notification name="AvatarRezNotification"> ( in esistenza da [EXISTENCE] secondi ) Nuvola avatar '[NAME]' dileguata dopo [TIME] secondi. @@ -2903,6 +2929,10 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale La creazione e la modifica dei gruppi sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità. <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> </notification> + <notification label="" name="NoPlaceInfo"> + La visualizzazione del profilo del luogo è disponibile solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità. + <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> + </notification> <notification label="" name="NoPicks"> La creazione e la modifica dei luoghi preferiti sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità. <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> @@ -2923,9 +2953,18 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale Il pagamento ad altri residenti è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità? <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> </notification> - <global name="UnsupportedCPU"> - - La velocità della tua CPU non soddisfa i requisiti minimi. - </global> + <notification label="" name="NoInventory"> + La visualizzazione dell'inventario è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità? + <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> + </notification> + <notification label="" name="NoAppearance"> + L'editor dell'aspetto è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità? + <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> + </notification> + <notification label="" name="NoSearch"> + La ricerca è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità? + <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> + </notification> <global name="UnsupportedGLRequirements"> Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo. diff --git a/indra/newview/skins/default/xui/it/panel_preferences_colors.xml b/indra/newview/skins/default/xui/it/panel_preferences_colors.xml index 167de5d028..016970d9a3 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_colors.xml @@ -22,6 +22,9 @@ <text name="text_box5"> Errori </text> + <text name="text_box10"> + Diretto + </text> <text name="text_box7"> Proprietario </text> 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 7d21b8ccc7..1f2b97af45 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml @@ -27,8 +27,20 @@ </text> <check_box initial_value="vero" label="Acqua trasparente" name="TransparentWater"/> <check_box initial_value="true" label="Piccoli rilievi e scintillii" name="BumpShiny"/> + <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="Occlusione ambientale" name="UseSSAO"/> + <check_box initial_value="true" label="Profondità di campo" name="UseDoF"/> + <text name="shadows_label"> + Ombre: + </text> + <combo_box name="ShadowDetail"> + <combo_box.item label="Nessuno" name="0"/> + <combo_box.item label="Sole/Luna" name="1"/> + <combo_box.item label="Sole/Luna + Proiettori" name="2"/> + </combo_box> <text name="reflection_label"> Riflessi nell’acqua: </text> diff --git a/indra/newview/skins/default/xui/it/panel_region_general.xml b/indra/newview/skins/default/xui/it/panel_region_general.xml index 6ca5dd878e..c550e005ae 100644 --- a/indra/newview/skins/default/xui/it/panel_region_general.xml +++ b/indra/newview/skins/default/xui/it/panel_region_general.xml @@ -25,6 +25,7 @@ <check_box label="Abilita la rivendita del terreno" name="allow_land_resell_check"/> <check_box label="Abilita unione/suddivisione del terreno" name="allow_parcel_changes_check"/> <check_box label="Proibisci che il terreno appaia nelle ricerche" name="block_parcel_search_check" tool_tip="Permetti che le persone vedano questa regione e le sue suddivisioni nei risultati delle ricerche"/> + <check_box label="Consenti oggetti con reticolo" name="mesh_rez_enabled_check" tool_tip="Permetti alle persone di rezzare oggetti con reticolo su questa regione"/> <spinner label="Limite massimo di avatar" label_width="135" name="agent_limit_spin" width="190"/> <spinner label="Bonus di oggetti" label_width="135" name="object_bonus_spin" width="190"/> <text label="Maturità" name="access_text" width="120"> diff --git a/indra/newview/skins/default/xui/it/panel_sound_devices.xml b/indra/newview/skins/default/xui/it/panel_sound_devices.xml new file mode 100644 index 0000000000..8e7f0c8dc5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_sound_devices.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel label="Impostazioni dispositivo" name="device_settings_panel"> + <panel.string name="default_text"> + Predefinito + </panel.string> + <text name="Input"> + Input + </text> + <text name="My volume label"> + Il mio volume: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia il volume utilizzando questa barra"/> + <text name="wait_text"> + Attendi + </text> + <text name="Output"> + Output + </text> +</panel> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 1513ddb8a5..cbe8ef24c4 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -124,6 +124,139 @@ <string name="create_account_url"> http://join.secondlife.com/index.php?lang=it-IT </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. + +Per maggiori informazioni, consulta le domande frequenti alla pagina seguente: +http://secondlife.com/viewer-access-faq + </string> + <string name="LoginIntermediateOptionalUpdateAvailable"> + Disponibile aggiornamento facoltativo viewer: [VERSION] + </string> + <string name="LoginFailedRequiredUpdate"> + Aggernamento viewer richiesto: [VERSION] + </string> + <string name="LoginFailedAlreadyLoggedIn"> + Questo agente ha già eseguito il login. + </string> + <string name="LoginFailedAuthenticationFailed"> + Siamo spiacenti. Il tentativo di accesso non è riuscito. +Verifica di avere inserito correttamente + * Nome utente (come robby12 o Stella Soleggiato) + * Password +Verifica anche che il blocco delle maiuscole non sia attivato. + </string> + <string name="LoginFailedPasswordChanged"> + Come misura precauzionale, la tua password è stata cambiata. +Visita la pagina del tuo account a http://secondlife.com/password +e rispondi alla domanda di sicurezza per reimpostare la password. +Ci scusiamo per l'inconveniente. + </string> + <string name="LoginFailedPasswordReset"> + Abbiamo effettuato delle modifiche al sistema che richiedono di reimpostare la password. +Visita la pagina del tuo account a http://secondlife.com/password +e rispondi alla domanda di sicurezza per reimpostare la password. +Ci scusiamo per l'inconveniente. + </string> + <string name="LoginFailedEmployeesOnly"> + Second Life è chiuso temporaneamente per manutenzione. +Al momento, solo i dipendenti possono eseguire l'accesso. +Visita www.secondlife.com/status per aggiornamenti. + </string> + <string name="LoginFailedPremiumOnly"> + L'accesso a Second Life è temporaneamente limitato per garantire che chi è nel mondo virtuale abbia la migliore esperienza possibile. + +Le persona con account gratuiti non potrenno accedere a Second Life durante questo periodo, per lasciare spazio alle persone che hanno pagato per Second Life. + </string> + <string name="LoginFailedComputerProhibited"> + Non si può accedere a Second Life da questo computer. +Se ritieni che si tratta di un errore, contatta +support@secondlife.com. + </string> + <string name="LoginFailedAcountSuspended"> + Il tuo account non è accessibile fino alle +[TIME] fuso orario del Pacifico. + </string> + <string name="LoginFailedAccountDisabled"> + Non siamo attualmente in grado di completare la tua richiesta. +Contatta l'assistenza Second Life alla pagina http://secondlife.com/support. +Se non sei in grado di cambiare la password, chiama (866) 476-9763. + </string> + <string name="LoginFailedTransformError"> + Dati incompatibili rilevati durante l'accesso. +Contattare support@secondlife.com. + </string> + <string name="LoginFailedAccountMaintenance"> + Il tuo account è in fase di leggera manutenzione. +Il tuo account non è accessibile fino alle +[TIME] fuso orario del Pacifico. +Se ritieni che si tratta di un errore, contatta support@secondlife.com. + </string> + <string name="LoginFailedPendingLogoutFault"> + Errore del simulatore in seguito alla richiesta di logout. + </string> + <string name="LoginFailedPendingLogout"> + Il sistema sta eseguendo il logout in questo momento. +Il tuo account non sarà disponibile fino alle +[TIME] fuso orario del Pacifico. + </string> + <string name="LoginFailedUnableToCreateSession"> + Non è possibile creare una sessione valida. + </string> + <string name="LoginFailedUnableToConnectToSimulator"> + Non è possibile collegarsi a un simulatore. + </string> + <string name="LoginFailedRestrictedHours"> + Il tuo account può accedere a Second Life solo +tra le [START] e le [END] fuso orario del Pacifico. +Torna durante quell'orario. +Se ritieni che si tratta di un errore, contatta support@secondlife.com. + </string> + <string name="LoginFailedIncorrectParameters"> + Parametri errati. +Se ritieni che si tratta di un errore, contatta support@secondlife.com. + </string> + <string name="LoginFailedFirstNameNotAlphanumeric"> + Il parametro Nome deve includere solo caratteri alfanumerici. +Se ritieni che si tratta di un errore, contatta support@secondlife.com. + </string> + <string name="LoginFailedLastNameNotAlphanumeric"> + Il parametro Cognome deve includere solo caratteri alfanumerici. +Se ritieni che si tratta di un errore, contatta support@secondlife.com. + </string> + <string name="LogoutFailedRegionGoingOffline"> + La regione sta passando allo stato non in linea. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LogoutFailedAgentNotInRegion"> + L'agente non è nella regione. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LogoutFailedPendingLogin"> + La regione ha eseguito l'accesso in un'altre sessione. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LogoutFailedLoggingOut"> + La regione stava eseguendo il logout della sessione precedente. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LogoutFailedStillLoggingOut"> + La regione sta ancora eseguendo il logout della sessione precedente. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LogoutSucceeded"> + La regione ha eseguito il logout dell'ultima sessione. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LogoutFailedLogoutBegun"> + La regione ha iniziato la procedura di logout. +Prova ad accedere nuovamente tra un minuto. + </string> + <string name="LoginFailedLoggingOutSession"> + Il sistema ha iniziato il logout dell'ultima sessione. +Prova ad accedere nuovamente tra un minuto. + </string> <string name="AgentLostConnection"> Questa regione sta avendo problemi. Verifica la tua connessione a Internet. </string> @@ -432,6 +565,9 @@ <string name="symbolic folder link"> link alla cartella </string> + <string name="mesh"> + reticolo + </string> <string name="AvatarAway"> Assente </string> @@ -1159,6 +1295,9 @@ <string name="InvFolder Accessories"> Accessori </string> + <string name="InvFolder Meshes"> + Reticoli + </string> <string name="InvFolder Friends"> Amici </string> @@ -3666,6 +3805,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> Sessione di inizializzazione scaduta </string> + <string name="Home position set."> + Posizione di base impostata. + </string> <string name="voice_morphing_url"> http://secondlife.com/landing/voicemorphing </string> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index 61fedede35..56708001c2 100644 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -56,26 +56,32 @@ Qt Webkit バージョン: [QT_WEBKIT_VERSION] <panel label="ライセンス" name="licenses_panel"> <text_editor name="credits_editor"> 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South - Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - 無断転写、複製、転載を禁じます。 詳細はlicenses.txtを参照してください。 +APR Copyright (C) 2000-2004 The Apache Software Foundation +Collada DOM Copyright 2005 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. +expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). +GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2001, Xiphophorus +OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. +PCRE Copyright (c) 1997-2008 University of Cambridge +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. - Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) +Second Life ビューワでは Havok (TM) Physics が使用されています。(c)Copyright 1999-2010 Havok.com Inc. (and its Licensors).無断複写・複製・転載を禁じます。詳細については www.havok.com をご参照ください。 + +無断複写・複製・転載を禁じます。詳細については licenses.txt をご参照ください。 + +ボイスチャットのオーディオコーディング:Polycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C) </text_editor> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml index ed17736eb3..7e4932c78f 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater min_width="340" name="floater_buy_contents" title="中身の購入" width="340"> <text name="contains_text" width="320"> - [NAME] の中身: + <nolink>[NAME]</nolink> に含まれるもの: </text> <scroll_list name="item_list" width="310"/> <text name="buy_text" width="320"> diff --git a/indra/newview/skins/default/xui/ja/floater_import_collada.xml b/indra/newview/skins/default/xui/ja/floater_import_collada.xml new file mode 100644 index 0000000000..65edafb169 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_import_collada.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Import Collada" title="風景のインポート"> + <text name="mesh count"> + メッシュ: [COUNT] + </text> + <text name="texture count"> + テクスチャ: [COUNT] + </text> + <text name="status"> + ステータス: [STATUS] + </text> + <button label="取り消し" name="cancel"/> + <button label="OK" name="ok"/> + <string name="status_idle"> + 待機状態 + </string> + <string name="status_uploading"> + [NAME]をアップロード中 + </string> + <string name="status_creating"> + オブジェクト[NAME]を作成中 + </string> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml index 47a63e5e20..47d57da031 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml @@ -5,6 +5,7 @@ <check_box label="服" name="check_clothing"/> <check_box label="ジェスチャー" name="check_gesture"/> <check_box label="ランドマーク" name="check_landmark"/> + <check_box label="メッシュ" name="check_mesh"/> <check_box label="ノートカード" name="check_notecard"/> <check_box label="オブジェクト" name="check_object"/> <check_box label="スクリプト" name="check_script"/> diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml new file mode 100644 index 0000000000..5eb141a28c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Preview" title="モデルをアップロード"> + <string name="status_idle"> + 待機状態 + </string> + <string name="status_reading_file"> + ローディング... + </string> + <string name="status_generating_meshes"> + メッシュを作成中 + </string> + <string name="status_vertex_number_overflow"> + エラー:頂点の数が65534を超過したので中止されました。 + </string> + <string name="high"> + 高 + </string> + <string name="medium"> + 中 + </string> + <string name="low"> + 低 + </string> + <string name="lowest"> + 最低 + </string> + <string name="mesh_status_good"> + 発送 + </string> + <string name="mesh_status_na"> + 該当なし + </string> + <string name="mesh_status_none"> + なし + </string> + <string name="mesh_status_submesh_mismatch"> + テクスチャ編集可能な面の数は描画詳細度に応じて異なります。 + </string> + <string name="mesh_status_mesh_mismatch"> + メッシュインスタンスの数は描画詳細度に応じて異なります。 + </string> + <string name="mesh_status_too_many_vertices"> + 描画詳細度に対して頂点の数が多すぎます。 + </string> + <string name="mesh_status_missing_lod"> + 必要な描画詳細度が見つかりません。 + </string> + <string name="layer_all"> + 全て + </string> + <string name="decomposing"> + 分析中 + </string> + <string name="simplifying"> + 単純化 + </string> + <text name="name_label"> + 名前: + </text> + <text name="lod_label"> + プレビュー: + </text> + <combo_box name="preview_lod_combo" tool_tip="プレビュー表示のLOD設定"> + <combo_item name="high"> + 描画詳細度:高 + </combo_item> + <combo_item name="medium"> + 描画詳細度:中 + </combo_item> + <combo_item name="low"> + 描画詳細度:低 + </combo_item> + <combo_item name="lowest"> + 描画詳細度:最低 + </combo_item> + </combo_box> + <panel> + <text name="streaming cost"> + リソース料金: [COST] + </text> + <text name="physics cost"> + 物理効果料金: [COST] + </text> + <text name="upload fee"> + アップロード手数料:該当なし + </text> + </panel> + <text name="status"> + [STATUS] + </text> + <button label="デフォルト" name="reset_btn" tool_tip="デフォルトにリセット"/> + <button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/> + <button label="取り消し" name="cancel_btn"/> + <tab_container name="import_tab"> + <panel label="描画詳細度" name="lod_panel"> + <text name="lod_table_header"> + 描画詳細度を選択: + </text> + <text name="high_label" value="高"/> + <text name="high_triangles" value="0"/> + <text name="high_vertices" value="0"/> + <text name="medium_label" value="中"/> + <text name="medium_triangles" value="0"/> + <text name="medium_vertices" value="0"/> + <text name="low_label" value="低"/> + <text name="low_triangles" value="0"/> + <text name="low_vertices" value="0"/> + <text name="lowest_label" value="最低"/> + <text name="lowest_triangles" value="0"/> + <text name="lowest_vertices" value="0"/> + <text name="lod_table_footer"> + 描画詳細度: [DETAIL] + </text> + <radio_group name="lod_file_or_limit" value="lod_from_file"> + <radio_item label="ファイルからロード" name="lod_from_file"/> + <radio_item label="自動作成" name="lod_auto_generate"/> + <radio_item label="なし" name="lod_none"/> + </radio_group> + <button label="参照" name="lod_browse"/> + <combo_box name="lod_mode"> + <combo_item name="triangle_limit"> + 三角形の限度数 + </combo_item> + <combo_item name="error_threshold"> + エラーしきい値 + </combo_item> + </combo_box> + <text name="build_operator_text"> + 制作演算子: + </text> + <text name="queue_mode_text"> + キューモード: + </text> + <combo_box name="build_operator"> + <combo_item name="edge_collapse"> + 稜の完全複合 + </combo_item> + <combo_item name="half_edge_collapse"> + 稜の半複合 + </combo_item> + </combo_box> + <combo_box name="queue_mode"> + <combo_item name="greedy"> + グリーディ + </combo_item> + <combo_item name="lazy"> + レイジー + </combo_item> + <combo_item name="independent"> + インディペンデント + </combo_item> + </combo_box> + <text name="border_mode_text"> + 境界線モード: + </text> + <text name="share_tolderance_text"> + 共有誤差: + </text> + <combo_box name="border_mode"> + <combo_item name="border_unlock"> + ロック解除 + </combo_item> + <combo_item name="border_lock"> + ロック + </combo_item> + </combo_box> + <text name="crease_label"> + 折れ角度: + </text> + <spinner name="crease_angle" value="75"/> + </panel> + <panel label="物理効果" name="physics_panel"> + <panel name="physics geometry"> + <radio_group name="physics_load_radio" value="physics_load_from_file"> + <radio_item label="ファイル:" name="physics_load_from_file"/> + <radio_item label="次の描画詳細度を使用:" name="physics_use_lod"/> + </radio_group> + <combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD"> + <combo_item name="physics_lowest"> + 最低 + </combo_item> + <combo_item name="physics_low"> + 低 + </combo_item> + <combo_item name="physics_medium"> + 中 + </combo_item> + <combo_item name="physics_high"> + 高 + </combo_item> + </combo_box> + <button label="参照" name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <slider label="滑らかさ:" name="Smooth"/> + <check_box label="穴を閉じる(スロー)" name="Close Holes (Slow)"/> + <button label="分析" name="Decompose"/> + <button label="取り消し" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <slider label="パス:" name="Combine Quality"/> + <slider label="詳細度:" name="Detail Scale"/> + <slider label="維持率:" name="Retain%"/> + <button label="単純化" name="Simplify"/> + <button label="取り消し" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <slider label="プレビュースプレッド:" name="physics_explode"/> + <text name="physics_triangles"> + 三角形: [TRIANGLES] + </text> + <text name="physics_points"> + 頂点: [POINTS] + </text> + <text name="physics_hulls"> + 外殻構造: [HULLS] + </text> + </panel> + </panel> + <panel label="修飾子" name="modifiers_panel"> + <spinner name="import_scale" value="1.0"/> + <text name="import_dimensions"> + [X] x [Y] x [Z] m + </text> + <check_box label="テクスチャ" name="upload_textures"/> + <check_box label="スキンの重さ" name="upload_skin"/> + <check_box label="ジョイントポジション" name="upload_joints"/> + <spinner name="pelvis_offset" value="0.0"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml new file mode 100644 index 0000000000..a785172f20 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Wizard" title="モデルウィザードをアップロード"> + <button label="5. アップロード" name="upload_btn"/> + <button label="4. 確認" name="review_btn"/> + <button label="3. 物理効果" name="physics2_btn"/> + <button label="3. 物理効果" name="physics_btn"/> + <button label="2. 最適化" name="optimize_btn"/> + <button label="1. ファイルを選択" name="choose_file_btn"/> + <panel name="choose_file_panel"> + <panel name="header_panel"> + <text name="header_text"> + モデルをアップロード + </text> + </panel> + <text name="description"> + このウィザードを使うと、メッシュモデルを簡単にSecond Lifeにインポートできます。まず、インポートするモデルを含むファイルを指定します。Second Life は COLLADA (.dae) ファイルをサポートします。 + </text> + <panel name="content"> + <text name="Cache location"> + ファイル名: + </text> + <button label="参照" label_selected="参照" name="browse"/> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="optimize_panel"> + <panel name="header_panel"> + <text name="header_text"> + 最適化 + </text> + </panel> + <text name="description"> + ウィザードがモデルを最適化し、パフォーマンスを改善しました。以下で最適化プロセスの結果を変更するか、「次へ」をクリックして続けます。 + </text> + <panel name="content"> + <text name="high_detail_text"> + 次の描画詳細度を作成:高 + </text> + <text name="medium_detail_text"> + 次の描画詳細度を作成:中 + </text> + <text name="low_detail_text"> + 次の描画詳細度を作成:低 + </text> + <text name="lowest_detail_text"> + 次の描画詳細度を作成:最低 + </text> + </panel> + <panel name="content2"> + <text name="lod_label"> + モデルのプレビュー: + </text> + <combo_box name="preview_lod_combo2" tool_tip="プレビュー表示のLOD設定"> + <combo_item name="high"> + 高 + </combo_item> + <combo_item name="medium"> + 中 + </combo_item> + <combo_item name="low"> + 低 + </combo_item> + <combo_item name="lowest"> + 最低 + </combo_item> + </combo_box> + <text name="streaming cost"> + リソース料金: [COST] + </text> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="physics_panel"> + <panel name="header_panel"> + <text name="header_text"> + 物理効果 + </text> + </panel> + <text name="description"> + ウィザードが作成する実像によって、オブジェクトが他のオブジェクトやアバターとどのようにインタラクションするかが決まります。オブジェクトの用途に最適な描画詳細度にスライダーを設定してください: + </text> + <panel name="content"> + <text name="streaming cost"> + リソース料金: [COST] + </text> + </panel> + </panel> + <panel name="physics2_panel"> + <panel name="header_panel"> + <text name="header_text"> + 物理効果 + </text> + </panel> + <text name="description"> + 下の実像をプレビューし、「次へ」をクリックして続けます。実像を修正するには「戻る」ボタンをクリックします。 + </text> + <panel name="content"> + <text name="lod_label"> + モデルのプレビュー: + </text> + <combo_box name="preview_lod_combo3" tool_tip="プレビュー表示のLOD設定"> + <combo_item name="high"> + 高 + </combo_item> + <combo_item name="medium"> + 中 + </combo_item> + <combo_item name="low"> + 低 + </combo_item> + <combo_item name="lowest"> + 最低 + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + <text name="streaming cost"> + リソース料金: [COST] + </text> + </panel> + </panel> + <panel name="review_panel"> + <panel name="header_panel"> + <text name="header_text"> + 確認 + </text> + </panel> + <text name="description"> + 以下の詳細を確認してから、「アップロード」をクリックするとモデルがアップロードされます。「アップロード」をクリックした際に、料金があなたの L$ 残高から差し引かれます。 + </text> + <panel name="content"> + <text name="lod_label"> + モデルのプレビュー: + </text> + <combo_box name="preview_lod_combo" tool_tip="プレビュー表示のLOD設定"> + <combo_item name="high"> + 高 + </combo_item> + <combo_item name="medium"> + 中 + </combo_item> + <combo_item name="low"> + 低 + </combo_item> + <combo_item name="lowest"> + 最低 + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + <text name="streaming cost"> + リソース料金: [COST] + </text> + <text name="physics cost"> + 物理効果料金: [COST] + </text> + </panel> + <panel name="upload_panel"> + <panel name="header_panel"> + <text name="header_text"> + アップロード完了! + </text> + </panel> + <text name="description"> + おめでとうございます!モデルがアップロードされました。アップロードされたモデルは、持ち物の「オブジェクト」フォルダにあります。 + </text> + </panel> + <button label="<< 戻る" name="back"/> + <button label="次へ>>" name="next"/> + <button label="アップロード" name="upload" tool_tip="シミュレーターにアップロード"/> + <button label="取り消し" name="cancel"/> + <button label="閉じる" name="close"/> + <spinner name="import_scale" value="1.0"/> + <string name="status_idle"> + 待機状態 + </string> + <string name="status_reading_file"> + ローディング... + </string> + <string name="status_generating_meshes"> + メッシュを作成中 + </string> + <string name="status_vertex_number_overflow"> + エラー:頂点の数が65534を超過したので中止されました。 + </string> + <string name="high"> + 高 + </string> + <string name="medium"> + 中 + </string> + <string name="low"> + 低 + </string> + <string name="lowest"> + 最低 + </string> + <string name="mesh_status_good"> + 発送 + </string> + <string name="mesh_status_na"> + 該当なし + </string> + <string name="mesh_status_none"> + なし + </string> + <string name="mesh_status_submesh_mismatch"> + テクスチャ編集可能な面の数は描画詳細度に応じて異なります。 + </string> + <string name="mesh_status_mesh_mismatch"> + メッシュインスタンスの数は描画詳細度に応じて異なります。 + </string> + <string name="mesh_status_too_many_vertices"> + 描画詳細度に対して頂点の数が多すぎます。 + </string> + <string name="mesh_status_missing_lod"> + 必要な描画詳細度が見つかりません。 + </string> + <string name="layer_all"> + 全て + </string> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml b/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml new file mode 100644 index 0000000000..10a46247a7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_price_for_listing.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="price_for_listing" title="クラシファイド広告の掲載"> + <text name="explanation_text"> + あなたのクラシファイド広告は、公開された日から1週間有効です。 + +クラシファイドリストのあなたの広告の位置は、広告費をいくら支払うかで決まります。 + +最高金額を支払った広告がリストのトップに載り、検索で上位に表示されます。 + </text> + <text name="price_text"> + 広告費: + </text> + <text name="price_symbol"> + L$ + </text> + <button label="OK" name="set_price_btn"/> + <button label="取り消し" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_sound_devices.xml b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml new file mode 100644 index 0000000000..28d2388bed --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_sound_devices.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_sound_devices" title="サウンドデバイス"> + <text name="voice_label"> + ボイスチャット + </text> + <check_box label="有効" name="enable_voice"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index 211d1c3714..0b14f92ae7 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -125,6 +125,18 @@ <text name="prim_count"> プリム: [COUNT] </text> + <text name="linked_set_count"> + リンクセット:[COUNT] + </text> + <text name="linked_set_cost" tool_tip="[prims] / [physics complexity] として現在選択されているリンクセットのコスト"> + 料金: [COST] / [PHYSICS] + </text> + <text name="object_count"> + オブジェクト: [COUNT] + </text> + <text name="object_cost" tool_tip="[prims] / [physics complexity] として現在選択されているオブジェクトのコスト"> + 料金: [COST] / [PHYSICS] + </text> <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30"> <panel label="一般" name="General"> <panel.string name="text deed continued"> @@ -275,15 +287,6 @@ <combo_box.item label="リング" name="Ring"/> <combo_box.item label="スカルプト" name="Sculpted"/> </combo_box> - <combo_box name="material"> - <combo_box.item label="石材" name="Stone"/> - <combo_box.item label="金属" name="Metal"/> - <combo_box.item label="ガラス" name="Glass"/> - <combo_box.item label="木材" name="Wood"/> - <combo_box.item label="肌" name="Flesh"/> - <combo_box.item label="プラスチック" name="Plastic"/> - <combo_box.item label="ゴム" name="Rubber"/> - </combo_box> <text name="text cut"> パスカット(始点と終点) </text> @@ -356,9 +359,19 @@ <combo_box.item label="トーラス" name="Torus"/> <combo_box.item label="平面" name="Plane"/> <combo_box.item label="シリンダー" name="Cylinder"/> + <combo_box.item label="メッシュ" name="Mesh"/> </combo_box> </panel> <panel label="特徴" name="Features"> + <panel.string name="None"> + なし + </panel.string> + <panel.string name="Prim"> + プリム + </panel.string> + <panel.string name="Convex Hull"> + 凸状の外殻構造 + </panel.string> <text name="select_single"> プリムを 1 つだけ選択して編集してください </text> @@ -383,6 +396,23 @@ <spinner label="焦点" name="Light Focus"/> <spinner label="弱まる" label_width="72" name="Light Falloff" width="135"/> <spinner label="環境" name="Light Ambiance"/> + <text name="label physicsshapetype"> + 実像の種類: + </text> + <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="実像の種類を選択"/> + <combo_box name="material"> + <combo_box.item label="石" name="Stone"/> + <combo_box.item label="金属" name="Metal"/> + <combo_box.item label="ガラス" name="Glass"/> + <combo_box.item label="木" name="Wood"/> + <combo_box.item label="肌" name="Flesh"/> + <combo_box.item label="プラスチック" name="Plastic"/> + <combo_box.item label="ゴム" name="Rubber"/> + </combo_box> + <spinner label="重力" name="Physics Gravity"/> + <spinner label="摩擦" name="Physics Friction"/> + <spinner label="密度" name="Physics Density"/> + <spinner label="復元" name="Physics Restitution"/> </panel> <panel label="材質" name="Texture"> <panel.string name="string repeats per meter"> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index 6c754e5d08..ae5ddbb78f 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -4,6 +4,8 @@ <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/> <menu_item_call label="サウンド (L$[COST] )..." name="Upload Sound"/> <menu_item_call label="アニメーション (L$ [COST] )..." name="Upload Animation"/> + <menu_item_call label="モデル" name="Upload Model"/> + <menu_item_call label="モデルウィザード" name="Upload Model Wizard"/> <menu_item_call label="一括 (ファイルにつき L$[COST] )..." name="Bulk Upload"/> <menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml new file mode 100644 index 0000000000..43f86e84bf --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_model_import_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="model_menu_gear_default"> + <menu_item_check label="稜を表示" name="show_edges"/> + <menu_item_check label="物理効果を表示" name="show_physics"/> + <menu_item_check label="テクスチャを表示" name="show_textures"/> + <menu_item_check label="スキンの重さを表示" name="show_skin_weight"/> + <menu_item_check label="ジョイントポジションを表示" name="show_joint_positions"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index b8efc20049..ec9db02522 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -120,6 +120,8 @@ <menu_item_call label="画像(L$[COST])..." name="Upload Image"/> <menu_item_call label="サウンド(L$[COST])..." name="Upload Sound"/> <menu_item_call label="アニメーション(L$[COST])..." name="Upload Animation"/> + <menu_item_call label="モデル" name="Upload Model"/> + <menu_item_call label="モデルウィザード" name="Upload Model Wizard"/> <menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/> </menu> <menu_item_call label="元に戻す" name="Undo"/> @@ -159,7 +161,7 @@ <menu_item_check label="アルファ" name="Alpha"/> <menu_item_check label="木" name="Tree"/> <menu_item_check label="アバター" name="Character"/> - <menu_item_check label="地表" name="SurfacePath"/> + <menu_item_check label="サーフェスパッチ" name="Surface Patch"/> <menu_item_check label="空" name="Sky"/> <menu_item_check label="水" name="Water"/> <menu_item_check label="地面" name="Ground"/> @@ -218,6 +220,7 @@ <menu_item_check label="テクスチャカテゴリのコンソール" name="Texture Category"/> <menu_item_check label="ファーストタイマー" name="Fast Timers"/> <menu_item_check label="メモリ" name="Memory"/> + <menu_item_check label="風景の統計" name="Scene Statistics"/> <menu_item_call label="リージョン情報をデバッグコンソールへ" name="Region Info to Debug Console"/> <menu_item_call label="グループ情報をデバッグコンソールへ" name="Group Info to Debug Console"/> <menu_item_call label="性能情報をデバッグコンソールへ" name="Capabilities Info to Debug Console"/> @@ -228,6 +231,7 @@ </menu> <menu label="情報を表示" name="Display Info"> <menu_item_check label="時間を表示する" name="Show Time"/> + <menu_item_check label="アップロード代金を表示" name="Show Upload Cost"/> <menu_item_check label="描画情報を表示する" name="Show Render Info"/> <menu_item_check label="テクスチャ情報を表示" name="Show Texture Info"/> <menu_item_check label="マトリックスを表示する" name="Show Matrices"/> @@ -253,8 +257,10 @@ </menu> <menu label="メタデータのレンダー" name="Render Metadata"> <menu_item_check label="バウンディングボックス" name="Bounding Boxes"/> + <menu_item_check label="普通" name="Normals"/> <menu_item_check label="オクトリー" name="Octree"/> <menu_item_check label="シャドウ円錐" name="Shadow Frusta"/> + <menu_item_check label="実像" name="Physics Shapes"/> <menu_item_check label="オクルージョン" name="Occlusion"/> <menu_item_check label="バッチの描画" name="Render Batches"/> <menu_item_check label="タイプを更新" name="Update Type"/> @@ -262,9 +268,12 @@ <menu_item_check label="テクスチャ優先度" name="Texture Priority"/> <menu_item_check label="テクスチャの範囲" name="Texture Area"/> <menu_item_check label="側面" name="Face Area"/> + <menu_item_check label="LOD 情報" name="LOD Info"/> + <menu_item_check label="制作キュー" name="Build Queue"/> <menu_item_check label="光" name="Lights"/> <menu_item_check label="骨組みの衝突判定" name="Collision Skeleton"/> <menu_item_check label="レイキャスト" name="Raycast"/> + <menu_item_check label="スカルプト" name="Sculpt"/> </menu> <menu label="レンダリング" name="Rendering"> <menu_item_check label="軸" name="Axes"/> @@ -272,7 +281,6 @@ <menu_item_call label="選択したテクスチャ情報基底" name="Selected Texture Info Basis"/> <menu_item_check label="ワイヤーフレーム" name="Wireframe"/> <menu_item_check label="オブジェクト間オクルージョン" name="Object-Object Occlusion"/> - <menu_item_check label="フレームバッファオブジェクト" name="Framebuffer Objects"/> <menu_item_check label="光と影" name="Lighting and Shadows"/> <menu_item_check label="太陽・月・プロジェクタからの影" name="Shadows from Sun/Moon/Projectors"/> <menu_item_check label="SSAO と影の平滑化" name="SSAO and Shadow Smoothing"/> @@ -371,6 +379,7 @@ <menu_item_call label="ローカルテクスチャをダンプ" name="Dump Local Textures"/> </menu> <menu_item_check label="HTTP Texture" name="HTTP Textures"/> + <menu_item_check label="HTTP 持ち物" name="HTTP Inventory"/> <menu_item_call label="圧縮画像" name="Compress Images"/> <menu_item_check label="デバッグ用のミニダンプを出力する" name="Output Debug Minidump"/> <menu_item_check label="次回の起動時にコンソールウィンドウを表示する" name="Console Window"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index f93e032ffc..d63ca84035 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -2205,6 +2205,12 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ <notification name="RezItemNoPermissions"> オブジェクトを Rez するには権限が不足しています。 </notification> + <notification name="IMAcrossParentEstates"> + 親エステート間では IM を送信できません。 + </notification> + <notification name="TransferInventoryAcrossParentEstates"> + 親エステート間で持ち物を移動することはできません。 + </notification> <notification name="UnableToLoadNotecard"> ノートカードを読み込めません。あとで再度お試しください。 </notification> @@ -2780,6 +2786,10 @@ M キーを押して変更します。 モデレーターがあなたのボイスをミュートしました。 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="UploadCostConfirmation"> + このアップロードは L$[PRICE] のコストがかかります。アップロードを続けますか? + <usetemplate name="okcancelbuttons" notext="取り消し" yestext="アップロード"/> + </notification> <notification name="ConfirmClearTeleportHistory"> テレポート履歴を削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> @@ -2791,6 +2801,9 @@ M キーを押して変更します。 <notification name="ShareNotification"> 共有する住人を選択します。 </notification> + <notification name="MeshUploadError"> + [LABEL] をアップロードできませんでした: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + </notification> <notification name="ShareItemsConfirmation"> 次のアイテムを共有しますか? @@ -2807,6 +2820,19 @@ M キーを押して変更します。 <notification name="DeedToGroupFail"> グループへの譲渡に失敗しました。 </notification> + <notification name="ReleaseLandThrottled"> + 区画「[PARCEL_NAME]」は現在放棄できません。 + </notification> + <notification name="ReleasedLandWithReclaim"> + [AREA] m² の区画「[PARCEL_NAME]」が公開されました。 + +同区画が他の住人に売り出される前の [RECLAIM_PERIOD] 時間内であれば無償で土地を取り戻すことができます。 + </notification> + <notification name="ReleasedLandNoReclaim"> + [AREA] m² の区画「[PARCEL_NAME]」が公開されました。 + +一般に公開されたので、今なら誰でも購入可能です。 + </notification> <notification name="AvatarRezNotification"> (作成後[EXISTENCE]秒経過) '[NAME]'というアバターは[TIME]秒後に姿を現わしました。 @@ -2947,6 +2973,10 @@ M キーを押して変更します。 グループの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。 <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> </notification> + <notification label="" name="NoPlaceInfo"> + 場所のプロフィールの表示はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。 + <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> + </notification> <notification label="" name="NoPicks"> ピックの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。 <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> @@ -2967,9 +2997,18 @@ M キーを押して変更します。 他の住人への支払いはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか? <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> </notification> - <global name="UnsupportedCPU"> - - あなたの CPU の速度は必須動作環境の条件を満たしていません。 - </global> + <notification label="" name="NoInventory"> + 持ち物の表示はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか? + <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> + </notification> + <notification label="" name="NoAppearance"> + 容姿エディターはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか? + <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> + </notification> + <notification label="" name="NoSearch"> + 検索はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか? + <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> + </notification> <global name="UnsupportedGLRequirements"> [APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。 diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml index e1dea89ca0..9f6abf8fcb 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_colors.xml @@ -22,6 +22,9 @@ <text name="text_box5"> エラー </text> + <text name="text_box10"> + ダイレクト + </text> <text name="text_box7"> 所有者 </text> 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 b4430fa39d..1786b4befc 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml @@ -27,8 +27,20 @@ </text> <check_box initial_value="true" label="透明な水" name="TransparentWater"/> <check_box initial_value="true" label="バンプマッピングと光沢" name="BumpShiny"/> + <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="UseSSAO"/> + <check_box initial_value="true" label="フィールドの遠近感" name="UseDoF"/> + <text name="shadows_label"> + 影: + </text> + <combo_box name="ShadowDetail"> + <combo_box.item label="なし" name="0"/> + <combo_box.item label="太陽/月" name="1"/> + <combo_box.item label="太陽/月・プロジェクタ" name="2"/> + </combo_box> <text name="reflection_label"> 水の反射: </text> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index 54ec24773f..65148cf1ee 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -25,6 +25,7 @@ <check_box label="土地の再販を許可" name="allow_land_resell_check"/> <check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/> <check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/> + <check_box label="メッシュオブジェクトを許可" name="mesh_rez_enabled_check" tool_tip="このリージョンでメッシュオブジェクトの Rez を許可する"/> <spinner label="アバター数上限" name="agent_limit_spin"/> <spinner label="物体ボーナス" name="object_bonus_spin"/> <text label="成人指定" name="access_text"> diff --git a/indra/newview/skins/default/xui/ja/panel_sound_devices.xml b/indra/newview/skins/default/xui/ja/panel_sound_devices.xml new file mode 100644 index 0000000000..da103a2d60 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_sound_devices.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel label="機器の設定" name="device_settings_panel"> + <panel.string name="default_text"> + デフォルト + </panel.string> + <text name="Input"> + 入力 + </text> + <text name="My volume label"> + 私の音量: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="スライダーを使って音量を調節します"/> + <text name="wait_text"> + しばらくお待ちください。 + </text> + <text name="Output"> + 出力 + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index cb248b8b4f..a6691fb764 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -130,6 +130,139 @@ <string name="create_account_url"> http://join.secondlife.com/index.php?lang=ja-JP </string> + <string name="LoginFailedViewerNotPermitted"> + お使いの古いビューワでは Second Life にアクセスできません。以下のページから新しいビューワをダウンロードしてください: +http://secondlife.com/download + +詳細については、FAQ を参照してください: +http://secondlife.com/viewer-access-faq + </string> + <string name="LoginIntermediateOptionalUpdateAvailable"> + ビューワアップデート(オプション)があります: [VERSION] + </string> + <string name="LoginFailedRequiredUpdate"> + ビューワアップデート(必須): [VERSION] + </string> + <string name="LoginFailedAlreadyLoggedIn"> + このエージェントは既にログインされています。 + </string> + <string name="LoginFailedAuthenticationFailed"> + 申し訳ありませんが、ログインできませんでした。 +以下の情報が正しく入力されたことを確認してください: +* ユーザー名(bobsmith12 または steller.sunshine など) +* パスワード +また、Caps Lock キーが有効になっていないこともお確かめください。 + </string> + <string name="LoginFailedPasswordChanged"> + セキュリティ上の理由により、あなたのパスワードは変更されました。 +アカウントページ(http://secondlife.com/password)に移動し、 +秘密の質問に答えて、パスワードをリセットしてください。 +ご迷惑をおかけして申し訳ございません。 + </string> + <string name="LoginFailedPasswordReset"> + 弊社はシステムを若干変更しました。お手数ですが、パスワードのリセットをお願いします。 +アカウントページ(http://secondlife.com/password)に移動し、 +秘密の質問に答えて、パスワードをリセットしてください。 +ご迷惑をおかけして申し訳ございません。 + </string> + <string name="LoginFailedEmployeesOnly"> + Second Life はメンテナンスのため、一時的にご利用いただけません。 +従業員以外にはログインをご遠慮いただいています。 +最新の状況については www.secondlife.com/status でお確かめください。 + </string> + <string name="LoginFailedPremiumOnly"> + 既にログインしているユーザーに最上のインワールド体験を提供するため、Second Life へのログインは一時的に制限されています。 + +申し訳ございませんが、有料アカウントのユーザーを優先するために、現時点のところ無料アカウントのユーザーには Second Life へのアクセスをご遠慮いただいています。 + </string> + <string name="LoginFailedComputerProhibited"> + このパソコンからは Second Life にアクセスできません。 +システムのエラーだと思われる場合は、 +support@secondlife.com にお問い合わせください。 + </string> + <string name="LoginFailedAcountSuspended"> + あなたのアカウントは +太平洋時間の [TIME] までご利用いただけません。 + </string> + <string name="LoginFailedAccountDisabled"> + 現在リクエストを完了することができません。 +Second Life のサポート(http://secondlife.com/support)にお問い合わせください。 +パスワードを変更できない場合には、(866) 476-9763 に電話でお問い合わせください。 + </string> + <string name="LoginFailedTransformError"> + ログイン時にデータの不一致が見つかりました。 +support@secondlife.com にお問い合わせください。 + </string> + <string name="LoginFailedAccountMaintenance"> + 現在アカウントのメインテナンスが行われています。 +あなたのアカウントは +太平洋時間の [TIME] までご利用いただけません。 +システムのエラーだと思われる場合は、support@secondlife.com にお問い合わせください。 + </string> + <string name="LoginFailedPendingLogoutFault"> + ログアウトをリスクエストしたら、シミュレーターから「fault」が返されました。 + </string> + <string name="LoginFailedPendingLogout"> + システムによるログアウトが実行されました。 +あなたのアカウントは +太平洋時間の [TIME] までご利用いただけません。 + </string> + <string name="LoginFailedUnableToCreateSession"> + 有効なセッションを生成できません。 + </string> + <string name="LoginFailedUnableToConnectToSimulator"> + シミュレーターに接続できませんでした。 + </string> + <string name="LoginFailedRestrictedHours"> + あなたの Second Life アカウントにアクセスできるのは、 +太平洋時間の [START] ~ [END] の間に限られます。 +有効な時間帯に再度お試しください。 +システムのエラーだと思われる場合は、support@secondlife.com にお問い合わせください。 + </string> + <string name="LoginFailedIncorrectParameters"> + パラメーターが正しくありません。 +システムのエラーだと思われる場合は、support@secondlife.com にお問い合わせください。 + </string> + <string name="LoginFailedFirstNameNotAlphanumeric"> + ファーストネームのパラメーターは英数字です。 +システムのエラーだと思われる場合は、support@secondlife.com にお問い合わせください。 + </string> + <string name="LoginFailedLastNameNotAlphanumeric"> + ラストネームのパラメーターは英数字です。 +システムのエラーだと思われる場合は、support@secondlife.com にお問い合わせください。 + </string> + <string name="LogoutFailedRegionGoingOffline"> + リージョンはオフライン中です。 +しばらくしてから再度お試しください。 + </string> + <string name="LogoutFailedAgentNotInRegion"> + エージェントがリージョンに不在です。 +しばらくしてから再度お試しください。 + </string> + <string name="LogoutFailedPendingLogin"> + このリージョンでは別のセッションがログインされていました。 +しばらくしてから再度お試しください。 + </string> + <string name="LogoutFailedLoggingOut"> + このリージョンでは前のセッションがログアウトされました。 +しばらくしてから再度お試しください。 + </string> + <string name="LogoutFailedStillLoggingOut"> + このリージョンでは現在も前のセッションのログアウトが処理されています。 +しばらくしてから再度お試しください。 + </string> + <string name="LogoutSucceeded"> + リージョンでは前のセッションがログアウトされました。 +しばらくしてから再度お試しください。 + </string> + <string name="LogoutFailedLogoutBegun"> + リージョンではログアウトプロセスが開始されました。 +しばらくしてから再度お試しください。 + </string> + <string name="LoginFailedLoggingOutSession"> + あなたの前のセッションはシステムによってログアウトされています。 +しばらくしてから再度お試しください。 + </string> <string name="AgentLostConnection"> このリージョンに不都合が発生している可能性があります。 ご使用のインターネット接続をご確認ください。 </string> @@ -441,6 +574,9 @@ <string name="symbolic folder link"> フォルダのリンク </string> + <string name="mesh"> + メッシュ + </string> <string name="AvatarEditingAppearance"> (容姿の編集中) </string> @@ -1180,6 +1316,9 @@ <string name="InvFolder Accessories"> アクセサリ </string> + <string name="InvFolder Meshes"> + メッシュ + </string> <string name="InvFolder Friends"> フレンド </string> @@ -3762,6 +3901,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="session_initialization_timed_out_error"> セッションの初期化がタイムアウトしました </string> + <string name="Home position set."> + 家の配置の設定。 + </string> <string name="voice_morphing_url"> http://secondlife.com/landing/voicemorphing </string> diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml index 00bdb74881..b8ae93afd2 100644 --- a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml +++ b/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml @@ -4,7 +4,7 @@ <menu_item_call label="Ver el perfil" name="Profile..."/> <menu_item_call label="Añadir como amigo" name="Add Friend"/> <menu_item_call label="MI" name="Send IM..."/> - <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Llamar" name="Call"/> <menu_item_call label="Invitar al grupo" name="Invite..."/> <menu_item_call label="Ignorar" name="Avatar Mute"/> <menu_item_call label="Denunciar" name="abuse"/> diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml index 7df2d7c4e0..5fb3e51575 100644 --- a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml +++ b/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml @@ -4,7 +4,7 @@ <menu_item_call label="Ver el perfil" name="Profile..."/> <menu_item_call label="Añadir como amigo" name="Add Friend"/> <menu_item_call label="MI" name="Send IM..."/> - <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Llamar" name="Call"/> <menu_item_call label="Invitar al grupo" name="Invite..."/> <menu_item_call label="Ignorar" name="Avatar Mute"/> <menu_item_call label="Denunciar" name="abuse"/> diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml index b4b964d096..728637de78 100644 --- a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml @@ -3,6 +3,7 @@ <menu_item_call label="Ver el perfil" name="view_profile"/> <menu_item_call label="Añadir como amigo" name="add_friend"/> <menu_item_call label="MI" name="im"/> + <menu_item_call label="Llamar" name="call"/> <menu_item_call label="Teleportar" name="teleport"/> <menu_item_call label="Ignorar" name="block"/> <menu_item_call label="Designorar" name="unblock"/> diff --git a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..254cf58437 --- /dev/null +++ b/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Llamar" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Colgar" name="end_call_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml index f782d66ae7..0989a3d0a1 100644 --- a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml @@ -4,26 +4,32 @@ <string name="SpeakBtnToolTip" value="Activa/Desactiva el micrófono"/> <string name="VoiceControlBtnToolTip" value="Muestra/Oculta el panel del control de voz"/> <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <button label="Hablar" name="speak_btn" tool_tip="Activar y desactivar tu micrófono"/> + </layout_panel> + <layout_panel name="speak_flyout_panel"> + <button label="" name="flyout_btn" tool_tip="Cambiar tus preferencias de sonido"/> + </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Muestra/Oculta los gestos"/> + <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Hacer que tu avatar realice distintas acciones"/> </layout_panel> <layout_panel name="cam_panel"> - <bottomtray_button label="Visión" name="camera_btn" tool_tip="Muestra/Oculta los controles de la cámara"/> + <bottomtray_button label="Visión" name="camera_btn" tool_tip="Controlar el ángulo de tu cámara"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Destinos" name="destination_btn" tool_tip="Muestra la ventana de gente"/> + <layout_panel name="destinations_panel"> + <bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar por Second Life"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Mi avatar" name="avatar_btn"/> + <layout_panel name="avatar_panel"> + <bottomtray_button label="Mi avatar" name="avatar_btn" tool_tip="Cambiar tu aspecto"/> </layout_panel> <layout_panel name="people_panel"> - <bottomtray_button label="Gente" name="show_people_button" tool_tip="Muestra la ventana de gente"/> + <bottomtray_button label="Gente" name="show_people_button" tool_tip="Encontrar a gente en Second Life"/> </layout_panel> <layout_panel name="profile_panel"> - <bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Muestra la ventana del perfil"/> + <bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Consultar y editar tu perfil"/> </layout_panel> <layout_panel name="howto_panel"> - <bottomtray_button label="Indicaciones" name="show_help_btn" tool_tip="Abrir los temas sobre indicaciones de Second Life"/> + <bottomtray_button label="Indicaciones" name="show_help_btn" tool_tip="Ver la información de ayuda de Second Life"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml index 7d4db6a630..1be6997813 100644 --- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml @@ -8,7 +8,7 @@ <button label="Añadir como amigo" name="add_friend_btn"/> </layout_panel> <layout_panel name="teleport_btn_panel"> - <button label="Teleportarme" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/> + <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/> </layout_panel> <layout_panel name="share_btn_panel"> <button label="Compartir" name="share_btn"/> diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml index 7d3157ef45..1e1c3411ae 100644 --- a/indra/newview/skins/minimal/xui/es/panel_people.xml +++ b/indra/newview/skins/minimal/xui/es/panel_people.xml @@ -52,6 +52,9 @@ <layout_panel name="chat_btn_lp"> <button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/> </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/> + </layout_panel> <layout_panel name="chat_btn_lp"> <button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/> </layout_panel> diff --git a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml index 0eb0d0ee22..ab9b175f16 100644 --- a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml @@ -4,26 +4,32 @@ <string name="SpeakBtnToolTip" value="Accende o spegne il microfono"/> <string name="VoiceControlBtnToolTip" value="Mostra o nasconde il pannello di regolazione voce"/> <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <button label="Parla" name="speak_btn" tool_tip="Accendi e spegni il microfono"/> + </layout_panel> + <layout_panel name="speak_flyout_panel"> + <button label="" name="flyout_btn" tool_tip="Cambia le preferenze per i suoni"/> + </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Gesture" name="Gesture" tool_tip="Mostra o nasconde le gesture"/> + <gesture_combo_list label="Gesture" name="Gesture" tool_tip="Fai fare qualcosa al tuo avatar"/> </layout_panel> <layout_panel name="cam_panel"> - <bottomtray_button label="Visuale" name="camera_btn" tool_tip="Mostra o nasconde le regolazioni della visuale"/> + <bottomtray_button label="Visuale" name="camera_btn" tool_tip="Controlla l'angolo di visualizzazione"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Destinazioni" name="destination_btn" tool_tip="Mostra finestra persone"/> + <layout_panel name="destinations_panel"> + <bottomtray_button label="Destinazioni" name="destination_btn" tool_tip="Viaggia in Second Life"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Il mio avatar" name="avatar_btn"/> + <layout_panel name="avatar_panel"> + <bottomtray_button label="Il mio avatar" name="avatar_btn" tool_tip="Cambia il tuo aspetto"/> </layout_panel> <layout_panel name="people_panel"> - <bottomtray_button label="Persone" name="show_people_button" tool_tip="Mostra finestra persone"/> + <bottomtray_button label="Persone" name="show_people_button" tool_tip="Trova persone in Second Life"/> </layout_panel> <layout_panel name="profile_panel"> - <bottomtray_button label="Profilo" name="show_profile_btn" tool_tip="Mostra finestra profilo"/> + <bottomtray_button label="Profilo" name="show_profile_btn" tool_tip="Visualizza e modifica il tuo profilo"/> </layout_panel> <layout_panel name="howto_panel"> - <bottomtray_button label="Istruzioni" name="show_help_btn" tool_tip="Apri le Istruzioni Second Life"/> + <bottomtray_button label="Istruzioni" name="show_help_btn" tool_tip="Visualizza le informazioni della guida di Second Life"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml index 76b28eab24..756db84c1c 100644 --- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml @@ -5,7 +5,7 @@ <button label="Profilo" name="view_profile_btn"/> </layout_panel> <layout_panel name="add_friend_btn_panel"> - <button label="Aggiungi amico" name="add_friend_btn"/> + <button label="Aggiungi come amico" name="add_friend_btn"/> </layout_panel> <layout_panel name="teleport_btn_panel"> <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport a questa persona"/> diff --git a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml index fe81ec47f8..13be2cea0a 100644 --- a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml @@ -4,26 +4,32 @@ <string name="SpeakBtnToolTip" value="マイクのオン・オフ"/> <string name="VoiceControlBtnToolTip" value="ボイスコントロールパネルの表示・非表示"/> <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <button label="話す" name="speak_btn" tool_tip="マイクのオン・オフを切り替える"/> + </layout_panel> + <layout_panel name="speak_flyout_panel"> + <button label="" name="flyout_btn" tool_tip="サウンド環境設定を変更する"/> + </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/> + <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="アバターの動作を起こす"/> </layout_panel> <layout_panel name="cam_panel"> - <bottomtray_button label="視界" name="camera_btn" tool_tip="カメラコントロールの表示・非表示"/> + <bottomtray_button label="視界" name="camera_btn" tool_tip="カメラの角度をコントロール"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="行き先" name="destination_btn" tool_tip="人ウインドウを表示"/> + <layout_panel name="destinations_panel"> + <bottomtray_button label="行き先" name="destination_btn" tool_tip="Second Life 内を旅行する"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="マイ アバター" name="avatar_btn"/> + <layout_panel name="avatar_panel"> + <bottomtray_button label="マイ アバター" name="avatar_btn" tool_tip="容姿を変更する"/> </layout_panel> <layout_panel name="people_panel"> - <bottomtray_button label="人" name="show_people_button" tool_tip="人ウインドウを表示"/> + <bottomtray_button label="人" name="show_people_button" tool_tip="Second Life で人を探す"/> </layout_panel> <layout_panel name="profile_panel"> - <bottomtray_button label="プロフィール" name="show_profile_btn" tool_tip="プロフィールウインドウを表示"/> + <bottomtray_button label="プロフィール" name="show_profile_btn" tool_tip="プロフィールを表示・編集"/> </layout_panel> <layout_panel name="howto_panel"> - <bottomtray_button label="ハウツー" name="show_help_btn" tool_tip="Second Lifeのハウツートピックを開く"/> + <bottomtray_button label="ハウツー" name="show_help_btn" tool_tip="Second Life のヘルプ情報を見る"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> -- cgit v1.2.3 From 3c86f16c5284c08c17abced3bab8d84ed4d586b6 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 16:32:21 -0700 Subject: WIP VWR-24123 --- .../skins/default/xui/de/floater_about_land.xml | 8 +++--- .../skins/default/xui/es/floater_about_land.xml | 8 +++--- .../skins/default/xui/it/floater_about_land.xml | 32 +++++++++++----------- .../skins/default/xui/nl/floater_about_land.xml | 2 +- .../skins/default/xui/pt/floater_about_land.xml | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index 2d8459479a..f1e42232c8 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -103,17 +103,17 @@ Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²) </text> <text name="SalePending"/> - <button bottom="-222" label="Land verkaufen" label_selected="Land verkaufen..." name="Sell Land..."/> + <button label="Land verkaufen" label_selected="Land verkaufen..." name="Sell Land..."/> <text name="For sale to"> Zum Verkauf an: [BUYER] </text> - <text left_delta="-50" name="Sell with landowners objects in parcel." width="240"> + <text name="Sell with landowners objects in parcel."> Objekte sind im Verkauf eingeschlossen </text> - <text name="Selling with no objects in parcel." width="260"> + <text name="Selling with no objects in parcel."> Objekte sind im Verkauf nicht eingeschlossen </text> - <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/> + <button label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/> <text name="Claimed:"> Gekauft am: </text> diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml index c3f4310103..f911e7486b 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -107,13 +107,13 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <text name="For sale to"> En venta a: [BUYER] </text> - <text name="Sell with landowners objects in parcel." width="216"> - Los objetos se incluyen en la venta. + <text name="Sell with landowners objects in parcel."> + Objetos incluidos en la venta </text> - <text name="Selling with no objects in parcel." width="216"> + <text name="Selling with no objects in parcel."> Los objetos no se incluyen en la venta. </text> - <button bottom="-245" font="SansSerifSmall" label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" left="275" name="Cancel Land Sale"/> + <button label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" name="Cancel Land Sale"/> <text name="Claimed:"> Reclamada: </text> diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index b713bb8143..a96433d7aa 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -75,64 +75,64 @@ Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezz <text name="LandType"> Tipo: </text> - <text left="119" name="LandTypeText"> + <text name="LandTypeText"> Mainland / Homestead </text> <text name="ContentRating" width="115"> Categoria di accesso: </text> - <text left="119" name="ContentRatingText"> + <text name="ContentRatingText"> Adulti </text> <text name="Owner:"> Proprietario: </text> - <text left="119" name="OwnerText" width="227"/> + <text name="OwnerText" width="227"/> <text name="Group:"> Gruppo: </text> - <text left="119" name="GroupText" width="227"/> + <text name="GroupText" width="227"/> <button label="Imposta" name="Set..."/> - <check_box label="Permetti cessione al gruppo" left="119" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà supportata dalle terre del gruppo."/> + <check_box label="Permetti cessione al gruppo" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà supportata dalle terre del gruppo."/> <button label="Cedi" name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/> - <check_box label="Il proprietario fa un contributo con la cessione" left="119" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/> + <check_box label="Il proprietario fa un contributo con la cessione" name="check contrib" tool_tip="Quando la terra è ceduta al gruppo, il proprietario precedente contribuisce con abbastanza allocazione di terra per supportarlo."/> <text name="For Sale:"> In vendita: </text> - <text left="119" name="Not for sale."> + <text name="Not for sale."> Non in vendita. </text> - <text left="119" name="For Sale: Price L$[PRICE]."> + <text name="For Sale: Price L$[PRICE]."> Prezzo: [PRICE]L$ ([PRICE_PER_SQM]L$/m²). </text> - <text left="119" name="SalePending" width="321"/> + <text name="SalePending" width="321"/> <button bottom="-242" label="Vendi la terra..." label_selected="Vendi la terra..." name="Sell Land..."/> - <text left="119" name="For sale to"> + <text name="For sale to"> In vendita a: [BUYER] </text> - <text left="119" name="Sell with landowners objects in parcel." width="240"> + <text name="Sell with landowners objects in parcel."> Gli oggetti sono inclusi nella vendita. </text> - <text left="119" name="Selling with no objects in parcel." width="240"> + <text name="Selling with no objects in parcel."> Gli oggetti non sono inclusi nella vendita. </text> - <button bottom="-242" font="SansSerifSmall" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" left="275" name="Cancel Land Sale" width="165"/> + <button font="SansSerifSmall" label="Annulla la vendita del terreno" label_selected="Annulla la vendita del terreno" name="Cancel Land Sale"/> <text name="Claimed:" width="115"> Presa in possesso il: </text> - <text left="119" name="DateClaimText"> + <text name="DateClaimText"> Tue Aug 15 13:47:25 2006 </text> <text name="PriceLabel"> Area: </text> - <text left="119" name="PriceText" width="140"> + <text name="PriceText" width="140"> 4048 m² </text> <text name="Traffic:"> Traffico: </text> - <text left="119" name="DwellText" width="140"> + <text name="DwellText" width="140"> 0 </text> <button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/> diff --git a/indra/newview/skins/default/xui/nl/floater_about_land.xml b/indra/newview/skins/default/xui/nl/floater_about_land.xml index d51ea1c0f8..f336e53e05 100644 --- a/indra/newview/skins/default/xui/nl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/nl/floater_about_land.xml @@ -49,7 +49,7 @@ <text name="Sell with landowners objects in parcel."> Objecten opgenomen in verkoop </text> - <text name="Selling with no objects in parcel." width="196"> + <text name="Selling with no objects in parcel."> Objecten niet opgenomen in verkoop </text> <button label="Annuleer landverkoop" label_selected="Annuleer landverkoop" name="Cancel Land Sale"/> diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml index 7761c79864..e48cac7d1f 100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -113,7 +113,7 @@ Vá para o menu Mundo > Sobre o terreno ou selecione outro lote para mostrar <text name="Selling with no objects in parcel."> À venda (objetos não incluídos). </text> - <button label="Cancelar venda do terreno" label_selected="Cancelar venda do terreno" left="275" name="Cancel Land Sale" width="165"/> + <button label="Cancelar venda do terreno" label_selected="Cancelar venda do terreno" name="Cancel Land Sale"/> <text name="Claimed:"> Posse em: </text> -- cgit v1.2.3 From 33a15d638d47161b71a3ce4c5d9e40568be1c4ba Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 16:38:10 -0700 Subject: FIX VWR-24124 --- indra/newview/skins/default/xui/es/floater_about_land.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml index f911e7486b..1c4b965f46 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -133,7 +133,7 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s 0 </text> <button label="Comprar terreno" left="130" name="Buy Land..." width="125"/> - <button label="Información del script" name="Scripts..."/> + <button label="Información de scripts" name="Scripts..."/> <button label="Comprar para el grupo" name="Buy For Group..."/> <button label="Comprar un pase" left="130" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno." width="125"/> <button label="Abandonar el terreno" name="Abandon Land..."/> -- cgit v1.2.3 From 11010d927664bfd0909e72d03ced466ba4d559b6 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 16:43:42 -0700 Subject: FIX VWR-24128 --- indra/newview/skins/default/xui/es/panel_preferences_chat.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') 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 f7bc1f6aad..d8fd43469d 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml @@ -31,7 +31,7 @@ <spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/> <check_box name="translate_chat_checkbox"/> <text name="translate_chb_label"> - Utiliza la herramienta de traducción automática mientras utilizas el chat (mediante Google) + Usar en el chat el traductor automático de Google </text> <text name="translate_language_text"> Traducir el chat al: -- cgit v1.2.3 From 34793b6e59a1119ca68ac528a1591c1c888fac77 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 16:45:35 -0700 Subject: FIX VWR-24906 --- indra/newview/skins/default/xui/es/panel_preferences_advanced.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml index 7c2c9f505e..96e63e6fa0 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml @@ -14,5 +14,5 @@ <check_box label="Permitir el acceso de varios usuarios" name="allow_multiple_viewer_check"/> <check_box label="Mostrar la selección de cuadrícula al iniciar sesión" name="show_grid_selection_check"/> <check_box label="Mostrar el menú Avanzado" name="show_advanced_menu_check"/> - <check_box label="Mostrar el menú Desarrollador" name="show_develop_menu_check"/> + <check_box label="Mostrar el menú Develop" name="show_develop_menu_check"/> </panel> -- cgit v1.2.3 From 73d807bd894e64c653efc6093c408d046e510a5b Mon Sep 17 00:00:00 2001 From: Roxie Linden <roxie@lindenlab.com> Date: Wed, 8 Jun 2011 16:46:29 -0700 Subject: change the color specifier to 'diffuse_color' in the mesh upload blobs --- indra/newview/llmeshrepository.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 6b8b0f5a00..d4198041ec 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1533,7 +1533,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) face_entry["offsett"] = 0.0; face_entry["imagerot"] = 0.0; } - face_entry["colors"] = ll_sd_from_color4(material.mDiffuseColor); + face_entry["diffuse_color"] = ll_sd_from_color4(material.mDiffuseColor); face_entry["fullbright"] = material.mFullbright; instance_entry["face_list"][face_num] = face_entry; } -- cgit v1.2.3 From 30dd30e532d770afc20efe56c55ec5f1c4561aec Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 8 Jun 2011 16:48:57 -0700 Subject: FIX VWR-24909 --- indra/newview/skins/default/xui/es/panel_preferences_colors.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml index dfb6fc7d80..e6e4c13203 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_colors.xml @@ -32,7 +32,7 @@ URLs </text> <text name="bubble_chat"> - Color de fondo de las etiquetas de nombre (también se aplica a los bocadillos del chat): + Color de fondo de la etiqueta del nombre (afectará también a los bocadillos del chat): </text> <color_swatch name="background" tool_tip="Elige el color de las etiquetas de nombre"/> <slider label="Opacidad:" name="bubble_chat_opacity" tool_tip="Elige la opacidad de las etiquetas de nombre"/> -- cgit v1.2.3 From f96f223112b7a50336fe153d2e0408caa9ce3390 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Wed, 8 Jun 2011 17:50:35 -0600 Subject: fix for SH-1561: Enabling show Physics Shape disables glow --- indra/newview/pipeline.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 1489c033e2..4d678117a5 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -773,14 +773,29 @@ void LLPipeline::updateRenderDeferred() //static void LLPipeline::refreshRenderDeferred() { + static BOOL physics_shapes_is_on = FALSE ; + static BOOL render_glow_copy = FALSE ; + if(gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES)) { + if(!physics_shapes_is_on) + { + physics_shapes_is_on = TRUE ; + render_glow_copy = sRenderGlow ; + } + //turn the deferred rendering and glow off when draw physics shapes. sRenderDeferred = FALSE ; sRenderGlow = FALSE ; } else { + if(physics_shapes_is_on) + { + physics_shapes_is_on = FALSE ; + sRenderGlow = render_glow_copy ; + } + updateRenderDeferred() ; } } -- cgit v1.2.3 From 0c6d1f7cf2e821f4ffe3a3bf88c57948eea1e569 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 19:14:49 -0500 Subject: SH-1692 Factor out all (but one) of the bindDeferredShader calls in lldrawpoolalpha. --- indra/newview/lldrawpoolalpha.cpp | 36 ++++++------------------------------ 1 file changed, 6 insertions(+), 30 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 71eee0188c..537f6216c2 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -125,6 +125,9 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass) { simple_shader = &gDeferredAlphaProgram; fullbright_shader = &gObjectFullbrightProgram; + + //prime simple shader (loads shadow relevant uniforms) + gPipeline.bindDeferredShader(*simple_shader); } else { @@ -290,11 +293,6 @@ void LLDrawPoolAlpha::render(S32 pass) gGL.setSceneBlendType(LLRender::BT_ALPHA); } - if (deferred_render && current_shader != NULL) - { - gPipeline.unbindDeferredShader(*current_shader); - } - if (sShowDebugAlpha) { if(gPipeline.canUseWindLightShaders()) @@ -411,29 +409,11 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) if(use_shaders && (current_shader != target_shader)) { llassert(target_shader != NULL); - if (deferred_render && current_shader != NULL) - { - gPipeline.unbindDeferredShader(*current_shader); - diffuse_channel = 0; - } current_shader = target_shader; - if (deferred_render) - { - gPipeline.bindDeferredShader(*current_shader); - diffuse_channel = current_shader->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); - } - else - { - current_shader->bind(); - } + current_shader->bind(); } else if (!use_shaders && current_shader != NULL) { - if (deferred_render) - { - gPipeline.unbindDeferredShader(*current_shader); - diffuse_channel = 0; - } LLGLSLShader::bindNoShader(); current_shader = NULL; } @@ -510,12 +490,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) } } - if (deferred_render && current_shader != NULL) - { - gPipeline.unbindDeferredShader(*current_shader); - LLVertexBuffer::unbind(); - } - + LLVertexBuffer::unbind(); + if (!light_enabled) { gPipeline.enableLightsDynamic(); -- cgit v1.2.3 From 0ee8d6dcb66421d8f12cc79c891cd119c673ae2f Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 19:50:44 -0500 Subject: SH-560 Fix for "Loading..." text remaining in model importer when load fails. --- indra/newview/llfloatermodelpreview.cpp | 162 ++++++++++++++++---------------- 1 file changed, 79 insertions(+), 83 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 46d39db6cd..371579e5c8 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1286,11 +1286,7 @@ void stretch_extents(LLModel* model, LLMatrix4& mat, LLVector3& min, LLVector3& void LLModelLoader::run() { - if (!doLoadModel()) - { - mPreview = NULL; - } - + doLoadModel(); doOnIdleOneTime(boost::bind(&LLModelLoader::loadModelCallback,this)); } @@ -2302,87 +2298,87 @@ bool LLModelLoader::isNodeAJoint( domNode* pNode ) //----------------------------------------------------------------------------- // verifyCount //----------------------------------------------------------------------------- -bool LLModelPreview::verifyCount( int expected, int result ) -{ - if ( expected != result ) - { - llinfos<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<llendl; - return false; - } - return true; -} +bool LLModelPreview::verifyCount( int expected, int result ) +{ + if ( expected != result ) + { + llinfos<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<llendl; + return false; + } + return true; +} //----------------------------------------------------------------------------- // verifyController //----------------------------------------------------------------------------- -bool LLModelPreview::verifyController( domController* pController ) -{ - - bool result = true; - - domSkin* pSkin = pController->getSkin(); - - if ( pSkin ) - { - xsAnyURI & uri = pSkin->getSource(); - domElement* pElement = uri.getElement(); - - if ( !pElement ) - { - llinfos<<"Can't resolve skin source"<<llendl; - return false; - } - - daeString type_str = pElement->getTypeName(); - if ( stricmp(type_str, "geometry") == 0 ) - { - //Skin is reference directly by geometry and get the vertex count from skin - domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); - U32 vertexWeightsCount = pVertexWeights->getCount(); - domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); - domMesh* pMesh = pGeometry->getMesh(); - - if ( pMesh ) - { - //Get vertex count from geometry - domVertices* pVertices = pMesh->getVertices(); - if ( !pVertices ) - { - llinfos<<"No vertices!"<<llendl; - return false; - } - - if ( pVertices ) - { - xsAnyURI src = pVertices->getInput_array()[0]->getSource(); - domSource* pSource = (domSource*) (domElement*) src.getElement(); - U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); - result = verifyCount( verticesCount, vertexWeightsCount ); - if ( !result ) - { - return result; - } - } - } - - U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); - result = verifyCount( vcountCount, vertexWeightsCount ); - if ( !result ) - { - return result; - } - - domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); - U32 sum = 0; - for (size_t i=0; i<vcountCount; i++) - { - sum += pVertexWeights->getVcount()->getValue()[i]; - } - result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); - } - } - - return result; -} +bool LLModelPreview::verifyController( domController* pController ) +{ + + bool result = true; + + domSkin* pSkin = pController->getSkin(); + + if ( pSkin ) + { + xsAnyURI & uri = pSkin->getSource(); + domElement* pElement = uri.getElement(); + + if ( !pElement ) + { + llinfos<<"Can't resolve skin source"<<llendl; + return false; + } + + daeString type_str = pElement->getTypeName(); + if ( stricmp(type_str, "geometry") == 0 ) + { + //Skin is reference directly by geometry and get the vertex count from skin + domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); + U32 vertexWeightsCount = pVertexWeights->getCount(); + domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); + domMesh* pMesh = pGeometry->getMesh(); + + if ( pMesh ) + { + //Get vertex count from geometry + domVertices* pVertices = pMesh->getVertices(); + if ( !pVertices ) + { + llinfos<<"No vertices!"<<llendl; + return false; + } + + if ( pVertices ) + { + xsAnyURI src = pVertices->getInput_array()[0]->getSource(); + domSource* pSource = (domSource*) (domElement*) src.getElement(); + U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); + result = verifyCount( verticesCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + } + } + + U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); + result = verifyCount( vcountCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + + domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); + U32 sum = 0; + for (size_t i=0; i<vcountCount; i++) + { + sum += pVertexWeights->getVcount()->getValue()[i]; + } + result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); + } + } + + return result; +} //----------------------------------------------------------------------------- // extractTranslation() -- cgit v1.2.3 From 66fdaf51350734d4d69ebcea548165decbb6526a Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Wed, 8 Jun 2011 20:44:24 -0500 Subject: Unused variable --- indra/newview/lldrawpoolalpha.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 537f6216c2..8d46133912 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -344,8 +344,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) { BOOL initialized_lighting = FALSE; BOOL light_enabled = TRUE; - S32 diffuse_channel = 0; - + BOOL use_shaders = gPipeline.canUseVertexShaders(); for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i) -- cgit v1.2.3 From 57521d594c5c77048fc3d82358159eb2acbc1c9e Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 9 Jun 2011 00:20:52 -0500 Subject: Fix for accidental checkin of hot pink fullbright. --- indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl index 5e6c5ebec8..d781e08548 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl @@ -23,7 +23,6 @@ void main() color.rgb = fullbrightScaleSoftClip(color.rgb); - //gl_FragColor = color; - gl_FragColor = vec4(1,0,1,1); + gl_FragColor = color; } -- cgit v1.2.3 From cb6d4437b4ccfd1879e41f1508d619d33d36f1e9 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Thu, 9 Jun 2011 10:31:50 -0400 Subject: SH-1773 WIP --- indra/newview/llmeshrepository.cpp | 45 +++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) mode change 100644 => 100755 indra/newview/llmeshrepository.cpp (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp old mode 100644 new mode 100755 index d4198041ec..c90a800a13 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -468,6 +468,48 @@ public: }; +void log_upload_error(const LLSD& content) +{ + if (content.has("error")) + { + const LLSD& err = content["error"]; + llwarns << "mesh upload failed " << err["message"].asString() << " id " << err["identifier"].asString() << llendl; + + if ((err["identifier"].asString() == "NewAgentInventory_InvalidAsset") && + content.has("errors")) + { + const LLSD& err_list = content["errors"]; + for (LLSD::array_const_iterator it = err_list.beginArray(); + it != err_list.endArray(); + ++it) + { + const LLSD& err_entry = *it; + std::string index_info; + std::string texture_index_str = err_entry["TextureIndex"].asString(); + if (!texture_index_str.empty()) + { + index_info += " texture_index: " + texture_index_str; + } + std::string mesh_index_str = err_entry["MeshIndex"].asString(); + if (!mesh_index_str.empty()) + { + index_info += " mesh_index: " + mesh_index_str; + } + llwarns << "mesh err code " << err_entry["error"].asString() + << " message " << err_entry["message"] + << index_info + << llendl; + } + } + } + else + { + llwarns << "bad mesh, no error information available" << llendl; + } + + +} + class LLModelObjectUploadResponder: public LLCurl::Responder { LLSD mObjectAsset; @@ -516,10 +558,11 @@ public: else { llinfos << "upload failed" << llendl; + log_upload_error(content); mThread->mWholeModelUploadURL = ""; } - } + }; class LLWholeModelUploadResponder: public LLCurl::Responder -- cgit v1.2.3 From 557c9be005b89663f227ecf4aa0fec9505a5da41 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Thu, 9 Jun 2011 12:52:44 -0400 Subject: SH-1773 WIP --- indra/newview/llmeshrepository.cpp | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index c90a800a13..7568f3659b 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -468,15 +468,16 @@ public: }; -void log_upload_error(const LLSD& content) +void log_upload_error(const LLSD& content,std::string stage) { if (content.has("error")) { const LLSD& err = content["error"]; - llwarns << "mesh upload failed " << err["message"].asString() << " id " << err["identifier"].asString() << llendl; + llwarns << "mesh upload failed, stage " << stage + << " message " << err["message"].asString() << " id " << err["identifier"].asString() + << llendl; - if ((err["identifier"].asString() == "NewAgentInventory_InvalidAsset") && - content.has("errors")) + if (content.has("errors")) { const LLSD& err_list = content["errors"]; for (LLSD::array_const_iterator it = err_list.beginArray(); @@ -553,12 +554,13 @@ public: llinfos << "LLWholeModelFeeResponder content: " << content << llendl; if (isGoodStatus(status)) { + llinfos << "fee request succeeded" << llendl; mThread->mWholeModelUploadURL = content["uploader"].asString(); } else { - llinfos << "upload failed" << llendl; - log_upload_error(content); + llwarns << "fee request failed" << llendl; + log_upload_error(content,"fee"); mThread->mWholeModelUploadURL = ""; } } @@ -581,13 +583,21 @@ public: const LLSD& content) { //assert_main_thread(); - llinfos << "upload completed" << llendl; mThread->mPendingUploads--; dumpLLSDToFile(content,make_dump_name("whole_model_upload_response_",dump_num)); // requested "mesh" asset type isn't actually the type // of the resultant object, fix it up here. - mPostData["asset_type"] = "object"; - gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mPostData,content)); + if (isGoodStatus(status)) + { + llinfos << "upload succeeded" << llendl; + mPostData["asset_type"] = "object"; + gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mPostData,content)); + } + else + { + llwarns << "upload failed" << llendl; + log_upload_error(content,"upload"); + } } }; -- cgit v1.2.3 From 7d9634bfb70a2538cae838bdd7288ecdd6848486 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Thu, 9 Jun 2011 11:11:51 -0700 Subject: WIP INTL-50 FR translation --- .../newview/skins/default/xui/fr/floater_about.xml | 45 ++-- .../skins/default/xui/fr/floater_buy_contents.xml | 2 +- .../default/xui/fr/floater_import_collada.xml | 23 ++ .../xui/fr/floater_inventory_view_finder.xml | 1 + .../skins/default/xui/fr/floater_model_preview.xml | 231 ++++++++++++++++++++ .../skins/default/xui/fr/floater_model_wizard.xml | 241 +++++++++++++++++++++ .../default/xui/fr/floater_price_for_listing.xml | 18 ++ .../skins/default/xui/fr/floater_sound_devices.xml | 7 + .../newview/skins/default/xui/fr/floater_tools.xml | 48 +++- .../skins/default/xui/fr/menu_inventory_add.xml | 2 + .../xui/fr/menu_model_import_gear_default.xml | 8 + indra/newview/skins/default/xui/fr/menu_viewer.xml | 12 +- .../newview/skins/default/xui/fr/notifications.xml | 45 +++- .../default/xui/fr/panel_preferences_colors.xml | 3 + .../default/xui/fr/panel_preferences_graphics1.xml | 12 + .../skins/default/xui/fr/panel_region_general.xml | 1 + .../skins/default/xui/fr/panel_sound_devices.xml | 19 ++ indra/newview/skins/default/xui/fr/strings.xml | 142 ++++++++++++ .../minimal/xui/fr/menu_inspect_avatar_gear.xml | 1 + .../minimal/xui/fr/panel_adhoc_control_panel.xml | 11 + .../skins/minimal/xui/fr/panel_bottomtray.xml | 24 +- .../minimal/xui/fr/panel_im_control_panel.xml | 2 +- .../newview/skins/minimal/xui/fr/panel_people.xml | 3 + 23 files changed, 857 insertions(+), 44 deletions(-) create mode 100644 indra/newview/skins/default/xui/fr/floater_import_collada.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_model_preview.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_model_wizard.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_price_for_listing.xml create mode 100644 indra/newview/skins/default/xui/fr/floater_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml create mode 100644 indra/newview/skins/default/xui/fr/panel_sound_devices.xml create mode 100644 indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index f963a40cd3..e3e3169161 100644 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -56,27 +56,32 @@ Tous nos remerciements aux résidents suivants pour avoir testé cette version ( <panel label="Licences" name="licenses_panel"> <text_editor name="credits_editor"> 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South - Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly et Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. - - Tous droits réservés. Voir licenses.txt pour plus de détails. +APR Copyright (C) 2000-2004 The Apache Software Foundation +Collada DOM Copyright 2005 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. +expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). +GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University et David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2001, Xiphophorus +OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. +PCRE Copyright (c) 1997-2008 University of Cambridge +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2002 Jean-loup Gailly et Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. - Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 - Annex C) +Le client Second Life utilise Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (et ses concédants de licence). Tous droits réservés. Pour plus de détails, consultez le site Web www.havok.com. + +Tous droits réservés. Voir licenses.txt pour plus d'informations. + +Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) </text_editor> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml index 7aa142b13e..0436dc8a91 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_buy_contents" title="ACHETER DES CONTENUS"> <text name="contains_text"> - [NAME] contient : + <nolink>[NAME]</nolink> contient : </text> <text name="buy_text"> Acheter [AMOUNT] L$ à [NAME] ? diff --git a/indra/newview/skins/default/xui/fr/floater_import_collada.xml b/indra/newview/skins/default/xui/fr/floater_import_collada.xml new file mode 100644 index 0000000000..03804c4bd5 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_import_collada.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Import Collada" title="Importation de scène"> + <text name="mesh count"> + Maillages : [COUNT] + </text> + <text name="texture count"> + Textures : [COUNT] + </text> + <text name="status"> + État : [STATUS] + </text> + <button label="Annuler" name="cancel"/> + <button label="OK" name="ok"/> + <string name="status_idle"> + Inactif + </string> + <string name="status_uploading"> + Chargement de [NAME] + </string> + <string name="status_creating"> + Création de l'objet [NAME] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml index 1ee85a77ce..7567817f3a 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml @@ -5,6 +5,7 @@ <check_box label="Habits" name="check_clothing"/> <check_box label="Gestes" name="check_gesture"/> <check_box label="Repères" name="check_landmark"/> + <check_box label="Maillages" name="check_mesh"/> <check_box label="Notes" name="check_notecard"/> <check_box label="Objets" name="check_object"/> <check_box label="Scripts" name="check_script"/> diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml new file mode 100644 index 0000000000..213847bbd0 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Preview" title="Chargement du modèle"> + <string name="status_idle"> + Inactif + </string> + <string name="status_reading_file"> + Chargement... + </string> + <string name="status_generating_meshes"> + Génération des maillages... + </string> + <string name="status_vertex_number_overflow"> + Erreur : valeur de sommet supérieure à 65534. Opération abandonnée. + </string> + <string name="high"> + Élevé + </string> + <string name="medium"> + Moyen + </string> + <string name="low"> + Faible + </string> + <string name="lowest"> + Le plus faible + </string> + <string name="mesh_status_good"> + Bon à publier ! + </string> + <string name="mesh_status_na"> + N/A + </string> + <string name="mesh_status_none"> + Aucun + </string> + <string name="mesh_status_submesh_mismatch"> + Un nombre différent de faces d'application de texture est associé aux niveaux de détail. + </string> + <string name="mesh_status_mesh_mismatch"> + Un nombre différent d'instances de maillage est associé aux niveaux de détail. + </string> + <string name="mesh_status_too_many_vertices"> + Trop de sommets pour le niveau de détail. + </string> + <string name="mesh_status_missing_lod"> + Niveau de détail requis manquant. + </string> + <string name="layer_all"> + Tout + </string> + <string name="decomposing"> + Analyse... + </string> + <string name="simplifying"> + Simplification... + </string> + <text name="name_label"> + Nom : + </text> + <text name="lod_label"> + Aperçu : + </text> + <combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d'aperçu."> + <combo_item name="high"> + Niveau de détail : Élevé + </combo_item> + <combo_item name="medium"> + Niveau de détail : Moyen + </combo_item> + <combo_item name="low"> + Niveau de détail : Faible + </combo_item> + <combo_item name="lowest"> + Niveau de détail : Le plus faible + </combo_item> + </combo_box> + <panel> + <text name="streaming cost"> + Coût de la ressource : [COST] + </text> + <text name="physics cost"> + Coût des propriétés physiques : [COST] + </text> + <text name="upload fee"> + Frais de chargement : N/A + </text> + </panel> + <text name="status"> + [STATUS] + </text> + <button label="Valeurs par défaut" name="reset_btn" tool_tip="Rétablir les valeurs par défaut."/> + <button label="Charger" name="ok_btn" tool_tip="Charger dans le simulateur."/> + <button label="Annuler" name="cancel_btn"/> + <tab_container name="import_tab"> + <panel label="Niveau de détail" name="lod_panel"> + <text name="lod_table_header"> + Sélectionner le niveau de détail : + </text> + <text name="high_label" value="Élevé"/> + <text name="high_triangles" value="0"/> + <text name="high_vertices" value="0"/> + <text name="medium_label" value="Moyen"/> + <text name="medium_triangles" value="0"/> + <text name="medium_vertices" value="0"/> + <text name="low_label" value="Faible"/> + <text name="low_triangles" value="0"/> + <text name="low_vertices" value="0"/> + <text name="lowest_label" value="Le plus faible"/> + <text name="lowest_triangles" value="0"/> + <text name="lowest_vertices" value="0"/> + <text name="lod_table_footer"> + Niveau de détail : [DETAIL] + </text> + <radio_group name="lod_file_or_limit" value="lod_from_file"> + <radio_item label="Charger depuis un fichier" name="lod_from_file"/> + <radio_item label="Générer automatiquement" name="lod_auto_generate"/> + <radio_item label="Aucun" name="lod_none"/> + </radio_group> + <button label="Parcourir..." name="lod_browse"/> + <combo_box name="lod_mode"> + <combo_item name="triangle_limit"> + Limite du triangle + </combo_item> + <combo_item name="error_threshold"> + Seuil d'erreur + </combo_item> + </combo_box> + <text name="build_operator_text"> + Opér. construction : + </text> + <text name="queue_mode_text"> + Mode fil d'attente : + </text> + <combo_box name="build_operator"> + <combo_item name="edge_collapse"> + Fusion (nouveau sommet) + </combo_item> + <combo_item name="half_edge_collapse"> + Fusion (un des sommets) + </combo_item> + </combo_box> + <combo_box name="queue_mode"> + <combo_item name="greedy"> + Glouton + </combo_item> + <combo_item name="lazy"> + Paresseux + </combo_item> + <combo_item name="independent"> + Indépendant + </combo_item> + </combo_box> + <text name="border_mode_text"> + Mode bord : + </text> + <text name="share_tolderance_text"> + Tolérance partage : + </text> + <combo_box name="border_mode"> + <combo_item name="border_unlock"> + Déverrouiller + </combo_item> + <combo_item name="border_lock"> + Verrouiller + </combo_item> + </combo_box> + <text name="crease_label"> + Angle pli : + </text> + <spinner name="crease_angle" value="75"/> + </panel> + <panel label="Propriétés physiques" name="physics_panel"> + <panel name="physics geometry"> + <radio_group name="physics_load_radio" value="physics_load_from_file"> + <radio_item label="Fichier :" name="physics_load_from_file"/> + <radio_item label="Utiliser le niveau de détail :" name="physics_use_lod"/> + </radio_group> + <combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme physique."> + <combo_item name="physics_lowest"> + Le plus faible + </combo_item> + <combo_item name="physics_low"> + Faible + </combo_item> + <combo_item name="physics_medium"> + Moyen + </combo_item> + <combo_item name="physics_high"> + Élevé + </combo_item> + </combo_box> + <button label="Parcourir..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <slider label="Lissage :" name="Smooth"/> + <check_box label="Fermer les trous (lent)" name="Close Holes (Slow)"/> + <button label="Analyser" name="Decompose"/> + <button label="Annuler" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <slider label="Passes :" name="Combine Quality"/> + <slider label="Échelle de détail :" name="Detail Scale"/> + <slider label="Retenue :" name="Retain%"/> + <button label="Simplifier" name="Simplify"/> + <button label="Annuler" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <slider label="Décomposition de l'aperçu :" name="physics_explode"/> + <text name="physics_triangles"> + Triangles : [TRIANGLES] + </text> + <text name="physics_points"> + Sommets : [POINTS] + </text> + <text name="physics_hulls"> + Enveloppes : [HULLS] + </text> + </panel> + </panel> + <panel label="Modificateurs" name="modifiers_panel"> + <spinner name="import_scale" value="1.0"/> + <text name="import_dimensions"> + [X] x [Y] x [Z] m + </text> + <check_box label="Textures" name="upload_textures"/> + <check_box label="Pondération de la peau" name="upload_skin"/> + <check_box label="Position des articulations" name="upload_joints"/> + <spinner name="pelvis_offset" value="0.0"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml new file mode 100644 index 0000000000..bb64361959 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Wizard" title="ASSISTANT DE CHARGEMENT DE MODÈLE"> + <button label="5. Chargement" name="upload_btn"/> + <button label="4. Vérification" name="review_btn"/> + <button label="3. Propriétés physiques" name="physics2_btn"/> + <button label="3. Propriétés physiques" name="physics_btn"/> + <button label="2. Optimisation" name="optimize_btn"/> + <button label="1. Sélection du fichier" name="choose_file_btn"/> + <panel name="choose_file_panel"> + <panel name="header_panel"> + <text name="header_text"> + Charger le modèle + </text> + </panel> + <text name="description"> + Cet Assistant vous aidera à importer des modèles de maillage dans Second Life. Commencez par spécifier un fichier contenant le modèle à importer. Second Life prend en charge les fichiers COLLADA (.dae). + </text> + <panel name="content"> + <text name="Cache location"> + Nom du fichier : + </text> + <button label="Parcourir..." label_selected="Parcourir..." name="browse"/> + <text name="dimensions"> + X : Y : Z : + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="optimize_panel"> + <panel name="header_panel"> + <text name="header_text"> + Optimisation + </text> + </panel> + <text name="description"> + Cet Assistant a optimisé votre modèle afin d'améliorer les performances. Vous pouvez ajuster les résultats du processus d'optimisation ci-dessous ou cliquer sur Suiv. pour continuer. + </text> + <panel name="content"> + <text name="high_detail_text"> + Générer le niveau de détail : Élevé + </text> + <text name="medium_detail_text"> + Générer le niveau de détail : Moyen + </text> + <text name="low_detail_text"> + Générer le niveau de détail : Faible + </text> + <text name="lowest_detail_text"> + Générer le niveau de détail : Le plus faible + </text> + </panel> + <panel name="content2"> + <text name="lod_label"> + Aperçu du modèle : + </text> + <combo_box name="preview_lod_combo2" tool_tip="Niveau de détail à afficher en rendu d'aperçu."> + <combo_item name="high"> + Élevé + </combo_item> + <combo_item name="medium"> + Moyen + </combo_item> + <combo_item name="low"> + Faible + </combo_item> + <combo_item name="lowest"> + Le plus faible + </combo_item> + </combo_box> + <text name="streaming cost"> + Coût de la ressource : [COST] + </text> + <text name="dimensions"> + X : Y : Z : + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="physics_panel"> + <panel name="header_panel"> + <text name="header_text"> + Propriétés physiques + </text> + </panel> + <text name="description"> + Cet Assistant créera une forme physique déterminant le mode d'interaction de l'objet avec les autres objets et avatars. Réglez le curseur sur le niveau de détail le plus approprié à l'utilisation de l'objet : + </text> + <panel name="content"> + <text name="streaming cost"> + Coût de la ressource : [COST] + </text> + </panel> + </panel> + <panel name="physics2_panel"> + <panel name="header_panel"> + <text name="header_text"> + Propriétés physiques + </text> + </panel> + <text name="description"> + Prévisualisez la forme physique ci-dessous, puis cliquez sur Suiv. pour continuer. Le bouton Préc. permet de modifier cette forme, le cas échéant. + </text> + <panel name="content"> + <text name="lod_label"> + Aperçu du modèle : + </text> + <combo_box name="preview_lod_combo3" tool_tip="Niveau de détail à afficher en rendu d'aperçu."> + <combo_item name="high"> + Élevé + </combo_item> + <combo_item name="medium"> + Moyen + </combo_item> + <combo_item name="low"> + Faible + </combo_item> + <combo_item name="lowest"> + Le plus faible + </combo_item> + </combo_box> + <text name="dimensions"> + X : Y : Z : + </text> + <text name="dimension_dividers"> + | | + </text> + <text name="streaming cost"> + Coût de la ressource : [COST] + </text> + </panel> + </panel> + <panel name="review_panel"> + <panel name="header_panel"> + <text name="header_text"> + Vérification + </text> + </panel> + <text name="description"> + Vérifiez les détails ci-dessous, puis cliquez sur Charger pour charger le modèle. Votre solde en L$ sera alors débité. + </text> + <panel name="content"> + <text name="lod_label"> + Aperçu du modèle : + </text> + <combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d'aperçu."> + <combo_item name="high"> + Élevé + </combo_item> + <combo_item name="medium"> + Moyen + </combo_item> + <combo_item name="low"> + Faible + </combo_item> + <combo_item name="lowest"> + Le plus faible + </combo_item> + </combo_box> + <text name="dimensions"> + X : Y : Z : + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + <text name="streaming cost"> + Coût de la ressource : [COST] + </text> + <text name="physics cost"> + Coût des propriétés physiques : [COST] + </text> + </panel> + <panel name="upload_panel"> + <panel name="header_panel"> + <text name="header_text"> + Chargement terminé ! + </text> + </panel> + <text name="description"> + Félicitations ! Votre modèle a été chargé. Il se trouve dans le dossier Objets de votre inventaire. + </text> + </panel> + <button label="<< Préc." name="back"/> + <button label="Suiv. >>" name="next"/> + <button label="Charger" name="upload" tool_tip="Charger dans le simulateur."/> + <button label="Annuler" name="cancel"/> + <button label="Fermer" name="close"/> + <spinner name="import_scale" value="1.0"/> + <string name="status_idle"> + Inactif + </string> + <string name="status_reading_file"> + Chargement... + </string> + <string name="status_generating_meshes"> + Génération des maillages... + </string> + <string name="status_vertex_number_overflow"> + Erreur : valeur de sommet supérieure à 65534. Opération abandonnée. + </string> + <string name="high"> + Élevé + </string> + <string name="medium"> + Moyen + </string> + <string name="low"> + Faible + </string> + <string name="lowest"> + Le plus faible + </string> + <string name="mesh_status_good"> + Bon à publier ! + </string> + <string name="mesh_status_na"> + N/A + </string> + <string name="mesh_status_none"> + Aucun + </string> + <string name="mesh_status_submesh_mismatch"> + Un nombre différent de faces d'application de texture est associé aux niveaux de détail. + </string> + <string name="mesh_status_mesh_mismatch"> + Un nombre différent d'instances de maillage est associé aux niveaux de détail. + </string> + <string name="mesh_status_too_many_vertices"> + Trop de sommets pour le niveau de détail. + </string> + <string name="mesh_status_missing_lod"> + Niveau de détail requis manquant. + </string> + <string name="layer_all"> + Tout + </string> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml b/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml new file mode 100644 index 0000000000..a6e598dd2b --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="price_for_listing" title="PUBLIER UNE PETITE ANNONCE"> + <text name="explanation_text"> + Votre petite annonce sera visible pendant une semaine à partir du jour de sa publication. + +La position de votre annonce dans les listes dépend du montant que vous décidez de payer. + +Si vous choisissez de payer plus cher, votre publicité sera plus visible dans les résultats de recherche. + </text> + <text name="price_text"> + Coût de l'annonce : + </text> + <text name="price_symbol"> + L$ + </text> + <button label="OK" name="set_price_btn"/> + <button label="Annuler" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml new file mode 100644 index 0000000000..9e2e4333aa --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_sound_devices" title="Périphériques audio"> + <text name="voice_label"> + Chat vocal + </text> + <check_box label="Activé" name="enable_voice"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index fd72e6ac15..09d77a8d34 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -125,6 +125,18 @@ <text name="prim_count"> Prims : [COUNT] </text> + <text name="linked_set_count"> + Groupes liés : [COUNT] + </text> + <text name="linked_set_cost" tool_tip="Coût des groupes liés actuellement sélectionnés en tant que [prims],[physics complexity]."> + Coût : [COST] / [PHYSICS] + </text> + <text name="object_count"> + Objets : [COUNT] + </text> + <text name="object_cost" tool_tip="Coût des objets actuellement sélectionnés en tant que [prims] / [physics complexity]."> + Coût : [COST] / [PHYSICS] + </text> <tab_container name="Object Info Tabs"> <panel label="Général" name="General"> <panel.string name="text deed continued"> @@ -269,15 +281,6 @@ <combo_box.item label="Anneau" name="Ring"/> <combo_box.item label="Sculptie" name="Sculpted"/> </combo_box> - <combo_box name="material"> - <combo_box.item label="Pierre" name="Stone"/> - <combo_box.item label="Métal" name="Metal"/> - <combo_box.item label="Verre" name="Glass"/> - <combo_box.item label="Bois" name="Wood"/> - <combo_box.item label="Chair" name="Flesh"/> - <combo_box.item label="Plastique" name="Plastic"/> - <combo_box.item label="Caoutchouc" name="Rubber"/> - </combo_box> <text name="text cut"> Découpe du tracé (déb./fin) </text> @@ -350,9 +353,19 @@ <combo_box.item label="Tore" name="Torus"/> <combo_box.item label="Plan" name="Plane"/> <combo_box.item label="Cylindre" name="Cylinder"/> + <combo_box.item label="Maillage" name="Mesh"/> </combo_box> </panel> <panel label="Attributs" name="Features"> + <panel.string name="None"> + Aucun + </panel.string> + <panel.string name="Prim"> + Prim + </panel.string> + <panel.string name="Convex Hull"> + Enveloppe convexe + </panel.string> <text name="select_single"> Choisir une prim pour changer les attributs. </text> @@ -377,6 +390,23 @@ <spinner label="Point central" name="Light Focus"/> <spinner label="Atténuation" name="Light Falloff"/> <spinner label="Ambiance" name="Light Ambiance"/> + <text name="label physicsshapetype"> + Type de forme physique : + </text> + <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Choisir un type de forme physique."/> + <combo_box name="material"> + <combo_box.item label="Pierre" name="Stone"/> + <combo_box.item label="Métal" name="Metal"/> + <combo_box.item label="Verre" name="Glass"/> + <combo_box.item label="Bois" name="Wood"/> + <combo_box.item label="Chair" name="Flesh"/> + <combo_box.item label="Plastique" name="Plastic"/> + <combo_box.item label="Caoutchouc" name="Rubber"/> + </combo_box> + <spinner label="Gravité" name="Physics Gravity"/> + <spinner label="Friction" name="Physics Friction"/> + <spinner label="Densité" name="Physics Density"/> + <spinner label="Restitution" name="Physics Restitution"/> </panel> <panel label="Texture" name="Texture"> <panel.string name="string repeats per meter"> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_add.xml b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml index 5d2b554dc3..1076af44d9 100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml @@ -4,6 +4,8 @@ <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modèle..." name="Upload Model"/> + <menu_item_call label="Assistant Modèle..." name="Upload Model Wizard"/> <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> <menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml new file mode 100644 index 0000000000..af6bfcd028 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_model_import_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="model_menu_gear_default"> + <menu_item_check label="Afficher les arêtes" name="show_edges"/> + <menu_item_check label="Afficher les propriétés physiques" name="show_physics"/> + <menu_item_check label="Afficher les textures" name="show_textures"/> + <menu_item_check label="Afficher la pondération de la peau" name="show_skin_weight"/> + <menu_item_check label="Afficher la position des articulations" name="show_joint_positions"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 1dd6da9d6f..d614cfe00c 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -120,6 +120,8 @@ <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modèle..." name="Upload Model"/> + <menu_item_call label="Assistant Modèle..." name="Upload Model Wizard"/> <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> </menu> <menu_item_call label="Annuler" name="Undo"/> @@ -159,6 +161,7 @@ <menu_item_check label="Alpha" name="Alpha"/> <menu_item_check label="Arbre" name="Tree"/> <menu_item_check label="Avatars" name="Character"/> + <menu_item_check label="Patch de surface" name="Surface Patch"/> <menu_item_check label="Ciel" name="Sky"/> <menu_item_check label="Eau" name="Water"/> <menu_item_check label="Sol" name="Ground"/> @@ -217,6 +220,7 @@ <menu_item_check label="Console des catégories de textures" name="Texture Category"/> <menu_item_check label="Chronos" name="Fast Timers"/> <menu_item_check label="Mémoire" name="Memory"/> + <menu_item_check label="Statistiques de la scène" name="Scene Statistics"/> <menu_item_call label="Infos de région vers la console de débogage" name="Region Info to Debug Console"/> <menu_item_call label="Infos de groupe vers la console de débogage" name="Group Info to Debug Console"/> <menu_item_call label="Infos de capacités vers la console de débogage" name="Capabilities Info to Debug Console"/> @@ -227,6 +231,7 @@ </menu> <menu label="Afficher les infos" name="Display Info"> <menu_item_check label="Afficher l'heure" name="Show Time"/> + <menu_item_check label="Afficher le coût du chargement" name="Show Upload Cost"/> <menu_item_check label="Afficher les infos de rendu" name="Show Render Info"/> <menu_item_check label="Afficher les infos de texture" name="Show Texture Info"/> <menu_item_check label="Afficher les matrices" name="Show Matrices"/> @@ -252,8 +257,10 @@ </menu> <menu label="Métadonnées de rendu" name="Render Metadata"> <menu_item_check label="Cadres" name="Bounding Boxes"/> + <menu_item_check label="Normales" name="Normals"/> <menu_item_check label="Octree" name="Octree"/> <menu_item_check label="Shadow Frusta" name="Shadow Frusta"/> + <menu_item_check label="Formes physiques" name="Physics Shapes"/> <menu_item_check label="Occlusion" name="Occlusion"/> <menu_item_check label="Lots de rendu" name="Render Batches"/> <menu_item_check label="Type de mise à jour" name="Update Type"/> @@ -261,9 +268,12 @@ <menu_item_check label="Priorité de la texture" name="Texture Priority"/> <menu_item_check label="Zone de texture" name="Texture Area"/> <menu_item_check label="Zone de face" name="Face Area"/> + <menu_item_check label="Infos sur le niveau de détail" name="LOD Info"/> + <menu_item_check label="File d'attente pour la construction" name="Build Queue"/> <menu_item_check label="Lumières" name="Lights"/> <menu_item_check label="Squelette de collision" name="Collision Skeleton"/> <menu_item_check label="Rayons" name="Raycast"/> + <menu_item_check label="Sculpture" name="Sculpt"/> </menu> <menu label="Rendu" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> @@ -271,7 +281,6 @@ <menu_item_call label="Base des infos de la texture sélectionnée" name="Selected Texture Info Basis"/> <menu_item_check label="Filaire" name="Wireframe"/> <menu_item_check label="Occlusion objet-objet" name="Object-Object Occlusion"/> - <menu_item_check label="Objets de mémoire vidéo" name="Framebuffer Objects"/> <menu_item_check label="Éclairage et ombres" name="Lighting and Shadows"/> <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"/> @@ -370,6 +379,7 @@ <menu_item_call label="Dump Local Textures" name="Dump Local Textures"/> </menu> <menu_item_check label="Textures HTTP" name="HTTP Textures"/> + <menu_item_check label="Inventaire HTTP" name="HTTP Inventory"/> <menu_item_call label="Compresser les images" name="Compress Images"/> <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> <menu_item_check label="Console Window on next Run" name="Console Window"/> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 78890caabb..6bfab25087 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -2157,6 +2157,12 @@ Cela risque d'impacter votre mot de passe. <notification name="RezItemNoPermissions"> Droits insuffisants pour rezzer l'objet. </notification> + <notification name="IMAcrossParentEstates"> + Impossible d'envoyer d'IM entre domaines parents. + </notification> + <notification name="TransferInventoryAcrossParentEstates"> + Impossible de transférer l'inventaire entre domaines parents. + </notification> <notification name="UnableToLoadNotecard"> Impossible de lire les données de la note actuellement. </notification> @@ -2734,6 +2740,10 @@ Elles vont être bloquées pendant quelques secondes pour votre sécurité. Le modérateur ignore vos paroles. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="UploadCostConfirmation"> + Ce chargement coûtera [PRICE] L$. Continuer ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Charger"/> + </notification> <notification name="ConfirmClearTeleportHistory"> Voulez-vous vraiment supprimer votre historique des téléportations ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> @@ -2745,6 +2755,9 @@ Le bouton sera affiché quand il y aura suffisamment de place. <notification name="ShareNotification"> Sélectionnez les résidents avec lesquels partager l'élément. </notification> + <notification name="MeshUploadError"> + Échec de chargement de [LABEL] : [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + </notification> <notification name="ShareItemsConfirmation"> Voulez-vous vraiment partager les articles suivants : @@ -2761,6 +2774,19 @@ avec les résidents suivants : <notification name="DeedToGroupFail"> Échec de cession au groupe. </notification> + <notification name="ReleaseLandThrottled"> + Impossible d'abandonner la parcelle [PARCEL_NAME] actuellement. + </notification> + <notification name="ReleasedLandWithReclaim"> + La parcelle [PARCEL_NAME] de [AREA] m² a été libérée. + +Vous disposerez d'un délai de récupération à 0 L$ de [RECLAIM_PERIOD] heures avant qu'elle soit mise en vente pour tous. + </notification> + <notification name="ReleasedLandNoReclaim"> + La parcelle [PARCEL_NAME] de [AREA] m² a été libérée. + +Elle est désormais disponible à l'achat auprès de tous. + </notification> <notification name="AvatarRezNotification"> ([EXISTENCE] secondes d'existence) Nuage de l'avatar [NAME] disparu au bout de [TIME] secondes. @@ -2901,6 +2927,10 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou Pour créer et modifier des groupes, vous devez utiliser le mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? Le sélecteur de mode se trouve sur l'écran de connexion. <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> </notification> + <notification label="" name="NoPlaceInfo"> + L'affichage du profil du lieu est uniquement disponible en mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? Le sélecteur de mode se trouve sur l'écran de connexion. + <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> + </notification> <notification label="" name="NoPicks"> Pour créer et modifier des favoris, vous devez utiliser le mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? Le sélecteur de mode se trouve sur l'écran de connexion. <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> @@ -2921,9 +2951,18 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou Pour pouvoir payer d'autres résidents, vous devez utiliser le mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> </notification> - <global name="UnsupportedCPU"> - - Votre processeur ne remplit pas les conditions minimum requises. - </global> + <notification label="" name="NoInventory"> + L'affichage de l'inventaire est uniquement disponible en mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? + <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> + </notification> + <notification label="" name="NoAppearance"> + L'Éditeur d'apparence est uniquement disponible en mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? + <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> + </notification> + <notification label="" name="NoSearch"> + La recherche est uniquement disponible en mode Avancé. Voulez-vous quitter l'application afin de changer de mode ? + <usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/> + </notification> <global name="UnsupportedGLRequirements"> Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d'exploitation. diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml index abdffd232a..e50fd2b6f3 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_colors.xml @@ -22,6 +22,9 @@ <text name="text_box5"> Erreurs </text> + <text name="text_box10"> + Direct + </text> <text name="text_box7"> Propriétaire </text> 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 025a72a1d2..5bf2ef72f5 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -27,8 +27,20 @@ </text> <check_box initial_value="true" label="Eau transparente" name="TransparentWater"/> <check_box initial_value="true" label="Placage de relief et brillance" name="BumpShiny"/> + <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="Occlusion ambiante" name="UseSSAO"/> + <check_box initial_value="true" label="Profondeur de champ" name="UseDoF"/> + <text name="shadows_label"> + Ombres : + </text> + <combo_box name="ShadowDetail"> + <combo_box.item label="Aucune" name="0"/> + <combo_box.item label="Soleil/Lune" name="1"/> + <combo_box.item label="Soleil/Lune + Projecteurs" name="2"/> + </combo_box> <text name="reflection_label"> Reflets dans l'eau : </text> diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml index ada4583648..b5795bebe2 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml @@ -25,6 +25,7 @@ <check_box label="Autoriser la revente" name="allow_land_resell_check"/> <check_box label="Autoriser la fusion/division" name="allow_parcel_changes_check"/> <check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/> + <check_box label="Autoriser les objets de maillage" name="mesh_rez_enabled_check" tool_tip="Laisser les gens rezzer des objets de maillage dans cette région."/> <spinner label="Nombre maximum d'avatars" label_width="160" name="agent_limit_spin" width="240"/> <spinner label="Bonus objet" label_width="160" name="object_bonus_spin" width="240"/> <text label="Maturité" name="access_text"> diff --git a/indra/newview/skins/default/xui/fr/panel_sound_devices.xml b/indra/newview/skins/default/xui/fr/panel_sound_devices.xml new file mode 100644 index 0000000000..a9802312dc --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_sound_devices.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel label="Paramètres du périphérique" name="device_settings_panel"> + <panel.string name="default_text"> + Valeur par défaut + </panel.string> + <text name="Input"> + Entrée + </text> + <text name="My volume label"> + Mon volume : + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Régler le volume avec le curseur."/> + <text name="wait_text"> + Veuillez patienter + </text> + <text name="Output"> + Sortie + </text> +</panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 7e3e9b320d..3ec85551da 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -130,6 +130,139 @@ <string name="create_account_url"> http://join.secondlife.com/index.php?lang=fr-FR </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 + +Pour plus d'informations, consultez la page FAQ ci-dessous : +http://secondlife.com/viewer-access-faq + </string> + <string name="LoginIntermediateOptionalUpdateAvailable"> + Mise à jour facultative du client disponible : [VERSION] + </string> + <string name="LoginFailedRequiredUpdate"> + Mise à jour du client requise : [VERSION] + </string> + <string name="LoginFailedAlreadyLoggedIn"> + L'agent est déjà connecté. + </string> + <string name="LoginFailedAuthenticationFailed"> + Désolé ! La connexion a échoué. +Veuillez vérifier que les éléments ci-dessous ont été correctement saisis : + * Nom d'utilisateur (par exemple, bobsmith12 ou steller.sunshine) + * Mot de passe +Assurez-vous également que la touche Verr. maj n'est pas activée. + </string> + <string name="LoginFailedPasswordChanged"> + Votre mot de passe a été modifié pour des raisons de sécurité. +Veuillez accéder à votre compte à la page http://secondlife.com/password +et répondre à la question de sécurité afin de réinitialiser votre mot de passe. +Nous vous prions de nous excuser pour la gêne occasionnée. + </string> + <string name="LoginFailedPasswordReset"> + Vous allez devoir réinitialiser votre mot de passe suite à quelques changements effectués sur notre système. +Pour cela, accédez à votre compte à la page http://secondlife.com/password +et répondez à la question de sécurité. Votre mot de passe sera réinitialisé. +Nous vous prions de nous excuser pour la gêne occasionnée. + </string> + <string name="LoginFailedEmployeesOnly"> + Second Life est temporairement fermé pour des raisons de maintenance. +Seuls les employés peuvent actuellement y accéder. +Consultez la page www.secondlife.com/status pour plus d'informations. + </string> + <string name="LoginFailedPremiumOnly"> + Les connexions à Second Life sont temporairement limitées afin de s'assurer que l'expérience des utilisateurs présents dans le monde virtuel soit optimale. + +Les personnes disposant de comptes gratuits ne pourront pas accéder à Second Life pendant ce temps afin de permettre à celles qui ont payé pour pouvoir utiliser Second Life puissent le faire. + </string> + <string name="LoginFailedComputerProhibited"> + Impossible d'accéder à Second Life depuis cet ordinateur. +Si vous pensez qu'il s'agit d'une erreur, contactez +l'Assistance à l'adresse suivante : support@secondlife.com. + </string> + <string name="LoginFailedAcountSuspended"> + Votre compte est inaccessible jusqu'à +[TIME], heure du Pacifique. + </string> + <string name="LoginFailedAccountDisabled"> + Nous n'avons pas réussi à traiter votre demande. +Pour obtenir de l'aide, veuillez contacter l'Assistance Second Life à la page suivante : http://secondlife.com/support. +Si vous ne parvenez pas à changer de mot de passe, veuillez appeler le (866) 476-9763. + </string> + <string name="LoginFailedTransformError"> + Incohérence des données lors de la connexion. +Veuillez contacter support@secondlife.com. + </string> + <string name="LoginFailedAccountMaintenance"> + Des opérations de maintenance mineures sont actuellement effectuées sur votre compte. +Votre compte est inaccessible jusqu'à +[TIME], heure du Pacifique. +Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com + </string> + <string name="LoginFailedPendingLogoutFault"> + Le simulateur a renvoyé une erreur en réponse à la demande de déconnexion. + </string> + <string name="LoginFailedPendingLogout"> + Le système est en train de vous déconnecter. +Votre compte sera indisponible jusqu'à +[TIME], heure du Pacifique. + </string> + <string name="LoginFailedUnableToCreateSession"> + Impossible de créer de session valide. + </string> + <string name="LoginFailedUnableToConnectToSimulator"> + Impossible de se connecter à un simulateur. + </string> + <string name="LoginFailedRestrictedHours"> + Votre compte permet uniquement d'accéder à Second Life +entre [START] et [END], heure du Pacifique. +Veuillez réessayer au cours de la période indiquée. +Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com + </string> + <string name="LoginFailedIncorrectParameters"> + Paramètres incorrects. +Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com + </string> + <string name="LoginFailedFirstNameNotAlphanumeric"> + Le paramètre Prénom doit être alphanumérique. +Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com + </string> + <string name="LoginFailedLastNameNotAlphanumeric"> + Le paramètre Nom doit être alphanumérique. +Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com + </string> + <string name="LogoutFailedRegionGoingOffline"> + La région est en train d'être mise hors ligne. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LogoutFailedAgentNotInRegion"> + Agent absent de la région. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LogoutFailedPendingLogin"> + Une autre session était en cours d'ouverture au sein de la région. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LogoutFailedLoggingOut"> + La session précédente était en cours de fermeture au sein de la région. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LogoutFailedStillLoggingOut"> + Fermeture de la session précédente toujours en cours pour la région. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LogoutSucceeded"> + Dernière session fermée au sein de la région. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LogoutFailedLogoutBegun"> + Processus de déconnexion commencé pour la région. +Veuillez réessayer de vous connecter dans une minute. + </string> + <string name="LoginFailedLoggingOutSession"> + Le système a commencé à fermer votre dernière session. +Veuillez réessayer de vous connecter dans une minute. + </string> <string name="AgentLostConnection"> Il y a peut-être des problèmes techniques dans cette région. Veuillez vérifier votre connexion Internet. </string> @@ -441,6 +574,9 @@ <string name="symbolic folder link"> lien du dossier </string> + <string name="mesh"> + maillage + </string> <string name="AvatarEditingAppearance"> (Apparence en cours de modification) </string> @@ -1180,6 +1316,9 @@ <string name="InvFolder Accessories"> Accessoires </string> + <string name="InvFolder Meshes"> + Maillages + </string> <string name="InvFolder Friends"> Amis </string> @@ -3762,6 +3901,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> Expiration du délai d'initialisation de la session </string> + <string name="Home position set."> + Emplacement du domicile défini. + </string> <string name="voice_morphing_url"> http://secondlife.com/landing/voicemorphing </string> diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml index 231a175ee5..c3240fa541 100644 --- a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml @@ -3,6 +3,7 @@ <menu_item_call label="Voir le profil" name="view_profile"/> <menu_item_call label="Devenir amis" name="add_friend"/> <menu_item_call label="IM" name="im"/> + <menu_item_call label="Appeler" name="call"/> <menu_item_call label="Téléporter" name="teleport"/> <menu_item_call label="Ignorer" name="block"/> <menu_item_call label="Ne plus ignorer" name="unblock"/> diff --git a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..376a7d2b72 --- /dev/null +++ b/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Appeler" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Quitter l'appel" name="end_call_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml index ef62901e99..094d3e66de 100644 --- a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml @@ -4,26 +4,32 @@ <string name="SpeakBtnToolTip" value="Active/Désactive le micro"/> <string name="VoiceControlBtnToolTip" value="Affiche/Masque le panneau de contrôle de la voix"/> <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <button label="Parler" name="speak_btn" tool_tip="Activer/désactiver le micro."/> + </layout_panel> + <layout_panel name="speak_flyout_panel"> + <button label="" name="flyout_btn" tool_tip="Modifier les préférences audio."/> + </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/> + <gesture_combo_list label="Geste" name="Gesture" tool_tip="Faire faire des gestes à votre avatar."/> </layout_panel> <layout_panel name="cam_panel"> - <bottomtray_button label="Affichage" name="camera_btn" tool_tip="Affiche/Masque le contrôle de la caméra"/> + <bottomtray_button label="Affichage" name="camera_btn" tool_tip="Contrôler l'angle de la caméra."/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Destinations" name="destination_btn" tool_tip="Afficher la fenêtre des personnes."/> + <layout_panel name="destinations_panel"> + <bottomtray_button label="Destinations" name="destination_btn" tool_tip="Voyager à travers Second Life."/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Mon avatar" name="avatar_btn"/> + <layout_panel name="avatar_panel"> + <bottomtray_button label="Mon avatar" name="avatar_btn" tool_tip="Modifier votre apparence."/> </layout_panel> <layout_panel name="people_panel"> - <bottomtray_button label="Personnes" name="show_people_button" tool_tip="Afficher la fenêtre des personnes."/> + <bottomtray_button label="Personnes" name="show_people_button" tool_tip="Trouver des personnes dans Second Life."/> </layout_panel> <layout_panel name="profile_panel"> - <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Afficher la fenêtre de profil."/> + <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Afficher et modifier votre profil."/> </layout_panel> <layout_panel name="howto_panel"> - <bottomtray_button label="Aide rapide" name="show_help_btn" tool_tip="Ouvrir les rubriques d'aide rapide Second Life."/> + <bottomtray_button label="Aide rapide" name="show_help_btn" tool_tip="Afficher des infos d'aide sur Second Life."/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml index 1f2169e22c..fdc5aeca49 100644 --- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml @@ -9,7 +9,7 @@ <button label="Devenir amis" name="add_friend_btn"/> </layout_panel> <layout_panel name="teleport_btn_panel"> - <button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne"/> + <button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne."/> </layout_panel> <layout_panel name="share_btn_panel"> <button label="Partager" name="share_btn"/> diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml index 88409a2a86..72fb4d807f 100644 --- a/indra/newview/skins/minimal/xui/fr/panel_people.xml +++ b/indra/newview/skins/minimal/xui/fr/panel_people.xml @@ -52,6 +52,9 @@ Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouto <layout_panel name="chat_btn_lp"> <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/> </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident."/> + </layout_panel> <layout_panel name="chat_btn_lp"> <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/> </layout_panel> -- cgit v1.2.3 From 7852321e9d81b2a63081b332c054ef2dd3385e71 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Thu, 9 Jun 2011 12:55:05 -0700 Subject: FIX VWR-25067 --- indra/newview/skins/default/xui/fr/floater_sell_land.xml | 2 +- indra/newview/skins/default/xui/ja/floater_sell_land.xml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml index b835cc6d87..c5fb0ea0d4 100644 --- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml @@ -14,7 +14,7 @@ <text name="info_size"> [AREA] m² </text> - <text bottom_delta="-60" name="info_action"> + <text name="info_action"> Pour vendre cette parcelle : </text> <text name="price_label"> diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml index 1e884af5f2..aa368eef11 100644 --- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater height="496" min_height="496" name="sell land" title="土地の販売"> +<floater name="sell land" title="土地の販売"> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <text name="info_parcel_label"> @@ -14,7 +14,7 @@ <text name="info_size"> [AREA] 平方メートル </text> - <text bottom_delta="-57" name="info_action"> + <text name="info_action"> この区画を販売: </text> <text name="price_label"> @@ -29,13 +29,13 @@ <line_editor name="price"> 0 </line_editor> - <text left_delta="106" name="price_per_m" width="230"> + <text name="price_per_m"> (1平方メートルあたり L$[PER_METER]) </text> <text name="sell_to_label"> 2. 特定の人に販売: </text> - <text name="sell_to_text" right="-6"> + <text name="sell_to_text"> 販売先の指定なしか、特定の人に販売するかを選択してください。 </text> <combo_box name="sell_to"> @@ -50,15 +50,15 @@ <text name="sell_objects_text"> 区画上にある、土地所有者の譲渡可能なオブジェクトは、所有権が変更されます。 </text> - <radio_group bottom_delta="-76" height="72" name="sell_objects"> + <radio_group name="sell_objects"> <radio_item label="いいえ、オブジェクトの所有権を保持します" name="no"/> - <radio_item bottom="-56" label="はい、オブジェクトと土地を一緒に販売します" name="yes"/> + <radio_item label="はい、オブジェクトと土地を一緒に販売します" name="yes"/> </radio_group> - <button label="オブジェクトを表示" name="show_objects" width="138"/> + <button label="オブジェクトを表示" name="show_objects"/> <text name="nag_message_label"> 注意: 返品・交換はできません。 </text> - <button bottom="-489" label="土地を販売" name="sell_btn"/> + <button label="土地を販売" name="sell_btn"/> <button label="キャンセル" name="cancel_btn"/> </panel> </scroll_container> -- cgit v1.2.3 From af9412e7402f146611ee2a73833a42bf2a6033c1 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Thu, 9 Jun 2011 12:59:01 -0700 Subject: FIX VWR-25066 --- indra/newview/skins/default/xui/pl/sidepanel_item_info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml index 0c285e6546..9ec3c480b7 100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml @@ -46,7 +46,7 @@ </text> <check_box label="Modyfikuje" name="CheckOwnerModify"/> <check_box label="Kopiuje" name="CheckOwnerCopy"/> - <check_box label="Oddaje/Sprzedaje" name="CheckOwnerTransfer"/> + <check_box label="Oddaje/ Sprzedaje" name="CheckOwnerTransfer"/> <text name="AnyoneLabel"> Każdy: </text> @@ -60,7 +60,7 @@ </text> <check_box label="Modyfikuje" name="CheckNextOwnerModify"/> <check_box label="Kopiuje" name="CheckNextOwnerCopy"/> - <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="Następny właściciel może oddawać lub sprzedawać ten obiekt"/> + <check_box label="Sprzedaje/ Oddaje" name="CheckNextOwnerTransfer" tool_tip="Następny właściciel może oddawać lub sprzedawać ten obiekt"/> </panel> <check_box label="Na sprzedaż" name="CheckPurchase"/> <combo_box name="combobox sale copy"> -- cgit v1.2.3 From 2aaab100fa8c6a66445632045fb5626296b6ad5f Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Thu, 9 Jun 2011 12:59:57 -0700 Subject: FIX VWR-25054 --- indra/newview/skins/default/xui/da/floater_about_land.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index e78924a1ab..46e1eca126 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -312,17 +312,17 @@ Kun større parceller kan vises i søgning. </text> <check_box label="Redigere terræn" name="edit land check" tool_tip="Hvis dette er valg, kan enhver redigere dit land. Det er bedst ikke at vælge her, da det altid er muligt for dig som ejer at ændre terræn på dit eget land."/> <check_box label="Flyve" name="check fly" tool_tip="Hvis valgt, kan beboere flyve på dit land. Hvis ikke valgt kan beboere kun flyve ind på dit land og over dit land."/> - <text left="194" name="allow_label2"> + <text name="allow_label2"> Lave objekter: </text> <check_box label="Alle beboere" name="edit objects check"/> <check_box label="Gruppe" name="edit group objects check"/> - <text left="170" name="allow_label3"> + <text name="allow_label3"> Anbringe objekter: </text> <check_box label="Alle beboere" name="all object entry check"/> <check_box label="Gruppe" name="group object entry check"/> - <text left="200" name="allow_label4"> + <text name="allow_label4"> Køre scripts: </text> <check_box label="Alle beboere" name="check other scripts"/> -- cgit v1.2.3 From 422654e9fd4be8946820cce813f75c669c2ae3ec Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Thu, 9 Jun 2011 13:00:37 -0700 Subject: FIX VWR-25057 --- indra/newview/skins/default/xui/da/floater_env_settings.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/da/floater_env_settings.xml b/indra/newview/skins/default/xui/da/floater_env_settings.xml index 8d9c05500b..a6fbc05734 100644 --- a/indra/newview/skins/default/xui/da/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_env_settings.xml @@ -4,7 +4,8 @@ [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] </floater.string> <text name="EnvTimeText"> - Tid på dagen + Tid på +dagen </text> <text name="EnvTimeText2"> 00:00 @@ -15,11 +16,13 @@ </text> <slider label="" name="EnvCloudSlider"/> <text name="EnvWaterColorText"> - Farve på vand + Farve på +vand </text> <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger"/> <text name="EnvWaterFogText"> - Tåge på vand + Tåge på +vand </text> <slider label="" name="EnvWaterFogSlider"/> <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton"/> -- cgit v1.2.3 From 37a3b0d75392836034955a9d00ac1d8a6db20473 Mon Sep 17 00:00:00 2001 From: Roxie Linden <roxie@lindenlab.com> Date: Thu, 9 Jun 2011 14:30:53 -0700 Subject: Remove ObjectAdd cap, no longer needed --- indra/newview/llmanipscale.cpp | 1 - indra/newview/llviewerregion.cpp | 1 - 2 files changed, 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 0eedabb5de..4eb94dfb8e 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -92,7 +92,6 @@ F32 get_default_max_prim_scale(bool is_flora) // a bit of a hack, but if it's foilage, we don't want to use the // new larger scale which would result in giant trees and grass if (gMeshRepo.meshRezEnabled() && - !gAgent.getRegion()->getCapability("ObjectAdd").empty() && !is_flora) { return DEFAULT_MAX_PRIM_SCALE; diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index f3fb4b82ad..002e0567e4 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1526,7 +1526,6 @@ void LLViewerRegion::setSeedCapability(const std::string& url) capabilityNames.append("MapLayer"); capabilityNames.append("MapLayerGod"); capabilityNames.append("NewFileAgentInventory"); - capabilityNames.append("ObjectAdd"); capabilityNames.append("ParcelPropertiesUpdate"); capabilityNames.append("ParcelMediaURLFilterList"); capabilityNames.append("ParcelNavigateMedia"); -- cgit v1.2.3 From 91fe50ecc7f6e2c38286a456f2cb795fbcc92dd8 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 9 Jun 2011 17:03:53 -0500 Subject: SH-1802 Fix for disappearing meshes under some circuimstances. --- indra/newview/llface.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 540ed054e9..b6566fcbd0 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -693,6 +693,19 @@ static void xform(LLVector2 &tex_coord, F32 cosAng, F32 sinAng, F32 offS, F32 of } +bool less_than_max_mag(const LLVector4a& vec) +{ + LLVector4a MAX_MAG; + MAX_MAG.splat(1024.f*1024.f); + + LLVector4a val; + val.setAbs(vec); + + S32 lt = val.lessThan(MAX_MAG).getGatheredBits() & 0x7; + + return lt == 0x7; +} + BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f, const LLMatrix4& mat_vert_in, const LLMatrix3& mat_normal_in, BOOL global_volume) { @@ -727,6 +740,8 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f, min = face.mExtents[0]; max = face.mExtents[1]; + llassert(less_than_max_mag(min)); + llassert(less_than_max_mag(max)); //min, max are in volume space, convert to drawable render space LLVector4a center; @@ -738,6 +753,9 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f, size.setSub(max, min); size.mul(0.5f); + llassert(less_than_max_mag(min)); + llassert(less_than_max_mag(max)); + if (!global_volume) { //VECTORIZE THIS @@ -775,6 +793,8 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f, newMin = newMax = center; + llassert(less_than_max_mag(center)); + for (U32 i = 0; i < 4; i++) { LLVector4a delta; @@ -786,6 +806,9 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f, newMin.setMin(newMin,min); newMax.setMax(newMax,max); + + llassert(less_than_max_mag(newMin)); + llassert(less_than_max_mag(newMax)); } if (!mDrawablep->isActive()) @@ -794,14 +817,22 @@ BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f, offset.load3(mDrawablep->getRegion()->getOriginAgent().mV); newMin.add(offset); newMax.add(offset); + + llassert(less_than_max_mag(newMin)); + llassert(less_than_max_mag(newMax)); } t.setAdd(newMin, newMax); t.mul(0.5f); + llassert(less_than_max_mag(t)); + //VECTORIZE THIS mCenterLocal.set(t.getF32ptr()); + llassert(less_than_max_mag(newMin)); + llassert(less_than_max_mag(newMax)); + t.setSub(newMax,newMin); mBoundingSphereRadius = t.getLength3().getF32()*0.5f; -- cgit v1.2.3 From 73226014555b028ae2bdec29b8c7d60e6c20c2df Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Thu, 9 Jun 2011 17:07:51 -0600 Subject: partial fix for SH-1804: viewer crashes when uploading "Messerschmitt KR200.dae" eliminated crashing, but still failed to upload it. --- indra/newview/llfloatermodelpreview.cpp | 7 +++++-- indra/newview/llfloatermodelwizard.cpp | 7 +++++-- indra/newview/llmeshrepository.cpp | 5 ++++- indra/newview/llmeshrepository.h | 2 ++ 4 files changed, 16 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 76f3e7fdf4..92ec714c80 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -915,8 +915,11 @@ void LLFloaterModelPreview::onPhysicsStageExecute(LLUICtrl* ctrl, void* data) { LLModel* mdl = sInstance->mModelPreview->mModel[LLModel::LOD_PHYSICS][i]; DecompRequest* request = new DecompRequest(stage, mdl); - sInstance->mCurRequest.insert(request); - gMeshRepo.mDecompThread->submitRequest(request); + if(request->isValid()) + { + sInstance->mCurRequest.insert(request); + gMeshRepo.mDecompThread->submitRequest(request); + } } } diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp index 0cd66fbdc2..707c8288df 100644 --- a/indra/newview/llfloatermodelwizard.cpp +++ b/indra/newview/llfloatermodelwizard.cpp @@ -422,8 +422,11 @@ void LLFloaterModelWizard::executePhysicsStage(std::string stage_name) { LLModel* mdl = sInstance->mModelPreview->mModel[LLModel::LOD_PHYSICS][i]; DecompRequest* request = new DecompRequest(stage_name, mdl); - sInstance->mCurRequest.insert(request); - gMeshRepo.mDecompThread->submitRequest(request); + if(request->isValid()) + { + sInstance->mCurRequest.insert(request); + gMeshRepo.mDecompThread->submitRequest(request); + } } } } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 6b8b0f5a00..8e5d132096 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1587,7 +1587,10 @@ void LLMeshUploadThread::doWholeModelUpload() llassert(physics != NULL); DecompRequest* request = new DecompRequest(physics, data.mBaseModel, this); - gMeshRepo.mDecompThread->submitRequest(request); + if(request->isValid()) + { + gMeshRepo.mDecompThread->submitRequest(request); + } } while (!mPhysicsComplete) diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index adf60c7e03..f237c3a60e 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -161,6 +161,8 @@ public: virtual void setStatusMessage(const std::string& msg); + bool isValid() const {return mPositions.size() > 2 && mIndices.size() > 2 ;} + protected: //internal use LLVector3 mBBox[2] ; -- cgit v1.2.3 From 0d5da61313a40f68382fb6823c6f5d4f3f18f3da Mon Sep 17 00:00:00 2001 From: Don Kjer <don@lindenlab.com> Date: Thu, 9 Jun 2011 16:22:13 -0700 Subject: Added log spam for mesh upload responses --- indra/newview/llmeshrepository.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 111802cd47..2c6d19bfe5 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -585,6 +585,7 @@ public: //assert_main_thread(); mThread->mPendingUploads--; dumpLLSDToFile(content,make_dump_name("whole_model_upload_response_",dump_num)); + llinfos << "LLWholeModelUploadResponder content: " << content << llendl; // requested "mesh" asset type isn't actually the type // of the resultant object, fix it up here. if (isGoodStatus(status)) -- cgit v1.2.3 From ca38d143c2cada5b626ce3cd3962aecf90ba8ea2 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 9 Jun 2011 19:22:17 -0500 Subject: Enable debug logging of capabilities to track down why viewer isn't fetching them correctly sometimes. --- indra/newview/app_settings/logcontrol.xml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index 937c4e4c6a..9f4e89691f 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -20,6 +20,7 @@ <key>tags</key> <array> <string>AppInit</string> + <string>Capabilities</string> <string>SystemInfo</string> <string>TextureCache</string> <string>AppCache</string> @@ -43,6 +44,7 @@ <array> <!-- sample entry for debugging a specific item --> <!-- <string>Voice</string> --> + <string>Capabilities</string> </array> </map> </array> -- cgit v1.2.3 From cf9596c7f97937953c5f28d7ff3eea5df328dd31 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Thu, 9 Jun 2011 19:22:46 -0500 Subject: SH-1804 Make it damn obvious that there are degenerate triangles in the physics shape preview render. --- indra/newview/llfloatermodelpreview.cpp | 132 ++++++++++++++++++++++---------- indra/newview/llmeshrepository.cpp | 17 ++-- 2 files changed, 101 insertions(+), 48 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 409d8bc79a..751e06c743 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -915,11 +915,8 @@ void LLFloaterModelPreview::onPhysicsStageExecute(LLUICtrl* ctrl, void* data) { LLModel* mdl = sInstance->mModelPreview->mModel[LLModel::LOD_PHYSICS][i]; DecompRequest* request = new DecompRequest(stage, mdl); - if(request->isValid()) - { - sInstance->mCurRequest.insert(request); - gMeshRepo.mDecompThread->submitRequest(request); - } + sInstance->mCurRequest.insert(request); + gMeshRepo.mDecompThread->submitRequest(request); } } @@ -4869,39 +4866,43 @@ BOOL LLModelPreview::render() LLModel::Decomposition& physics = model->mPhysics; - if (physics.mMesh.empty()) - { //build vertex buffer for physics mesh - gMeshRepo.buildPhysicsMesh(physics); - } - - if (!physics.mMesh.empty()) - { //render hull instead of mesh + if (!physics.mHull.empty()) + { render_mesh = false; - for (U32 i = 0; i < physics.mMesh.size(); ++i) - { - if (explode > 0.f) + + if (physics.mMesh.empty()) + { //build vertex buffer for physics mesh + gMeshRepo.buildPhysicsMesh(physics); + } + + if (!physics.mMesh.empty()) + { //render hull instead of mesh + for (U32 i = 0; i < physics.mMesh.size(); ++i) { - gGL.pushMatrix(); + if (explode > 0.f) + { + gGL.pushMatrix(); - LLVector3 offset = model->mHullCenter[i]-model->mCenterOfHullCenters; - offset *= explode; + LLVector3 offset = model->mHullCenter[i]-model->mCenterOfHullCenters; + offset *= explode; - gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); - } + gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); + } - static std::vector<LLColor4U> hull_colors; + static std::vector<LLColor4U> hull_colors; - if (i+1 >= hull_colors.size()) - { - hull_colors.push_back(LLColor4U(rand()%128+127, rand()%128+127, rand()%128+127, 255)); - } + if (i+1 >= hull_colors.size()) + { + hull_colors.push_back(LLColor4U(rand()%128+127, rand()%128+127, rand()%128+127, 255)); + } - glColor4ubv(hull_colors[i].mV); - LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals); + glColor4ubv(hull_colors[i].mV); + LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals); - if (explode > 0.f) - { - gGL.popMatrix(); + if (explode > 0.f) + { + gGL.popMatrix(); + } } } } @@ -4927,22 +4928,71 @@ BOOL LLModelPreview::render() glColor3f(1.f, 1.f, 0.f); - glLineWidth(3.f); + glLineWidth(2.f); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0); - { //show degenerate triangles + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glLineWidth(1.f); + } + } + + gGL.popMatrix(); + } + + glLineWidth(3.f); + glPointSize(8.f); + gPipeline.enableLightsFullbright(LLColor4::white); + //show degenerate triangles + LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS); + LLGLDisable cull(GL_CULL_FACE); + glColor4f(1.f,0.f,0.f,1.f); + const LLVector4a scale(0.5f); + + for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) + { + LLModelInstance& instance = *iter; + + LLModel* model = instance.mLOD[LLModel::LOD_PHYSICS]; + + if (!model) + { + continue; + } + + gGL.pushMatrix(); + LLMatrix4 mat = instance.mTransform; + + glMultMatrixf((GLfloat*) mat.mMatrix); + + + LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread; + if (decomp) + { + LLMutexLock(decomp->mMutex); + + LLModel::Decomposition& physics = model->mPhysics; + + if (physics.mHull.empty()) + { + if (mVertexBuffer[LLModel::LOD_PHYSICS].empty()) + { + genBuffers(LLModel::LOD_PHYSICS, false); + } + + for (U32 i = 0; i < mVertexBuffer[LLModel::LOD_PHYSICS][model].size(); ++i) + { + LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i]; + + buffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0); + LLStrider<LLVector3> pos_strider; buffer->getVertexStrider(pos_strider, 0); LLVector4a* pos = (LLVector4a*) pos_strider.get(); - LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS); - LLGLDisable cull(GL_CULL_FACE); LLStrider<U16> idx; buffer->getIndexStrider(idx, 0); - glColor4f(1.f,0.f,0.f,1.f); - const LLVector4a scale(0.5f); for (U32 i = 0; i < buffer->getNumIndices(); i += 3) { LLVector4a v1; v1.setMul(pos[*idx++], scale); @@ -4951,19 +5001,19 @@ BOOL LLModelPreview::render() if (ll_is_degenerate(v1,v2,v3)) { - buffer->draw(LLRender::TRIANGLES, 3, i); + buffer->draw(LLRender::LINE_LOOP, 3, i); + buffer->draw(LLRender::POINTS, 3, i); } } } - - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - glLineWidth(1.f); } } gGL.popMatrix(); } - + glLineWidth(1.f); + glPointSize(1.f); + gPipeline.enableLightsPreview(); gGL.setSceneBlendType(LLRender::BT_ALPHA); } } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 111802cd47..4f220d617e 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -3272,15 +3272,18 @@ void LLPhysicsDecomp::setMeshData(LLCDMeshData& mesh) mesh.mNumTriangles = mCurRequest->mIndices.size()/3; - LLCDResult ret = LLCD_OK; - if (LLConvexDecomposition::getInstance() != NULL) + if (mesh.mNumTriangles > 0 && mesh.mNumVertices > 2) { - ret = LLConvexDecomposition::getInstance()->setMeshData(&mesh); - } + LLCDResult ret = LLCD_OK; + if (LLConvexDecomposition::getInstance() != NULL) + { + ret = LLConvexDecomposition::getInstance()->setMeshData(&mesh); + } - if (ret) - { - llerrs << "Convex Decomposition thread valid but could not set mesh data" << llendl; + if (ret) + { + llerrs << "Convex Decomposition thread valid but could not set mesh data" << llendl; + } } } -- cgit v1.2.3 From dd4e50610147393bb355186e83672a5741b0e299 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Fri, 10 Jun 2011 01:28:53 -0500 Subject: Followup on mapbuffer work -- only use map buffer where map_buffer_range is available, and allow non-buffer-mapping implementation to take advantage of recorded mapped regions. --- indra/newview/featuretable.txt | 10 +++++++++- indra/newview/featuretable_linux.txt | 10 +++++++++- indra/newview/featuretable_mac.txt | 10 +++++++++- indra/newview/featuretable_xp.txt | 10 +++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 1d29c5b597..4da155efda 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 28 +version 29 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -48,6 +48,7 @@ RenderTransparentWater 1 1 RenderTreeLODFactor 1 1.0 RenderUseImpostors 1 1 RenderVBOEnable 1 1 +RenderVBOMappingDisable 1 1 RenderVolumeLODFactor 1 2.0 UseStartScreen 1 1 UseOcclusion 1 1 @@ -187,6 +188,7 @@ RenderDeferredSSAO 1 1 RenderShadowDetail 1 2 RenderFSAASamples 1 8 + // // Class Unknown Hardware (unknown) // @@ -243,6 +245,12 @@ RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 +// +// No GL_ARB_map_buffer_range +// +list NoMapBufferRange +RenderVBOMappingDisable 1 0 + // // "Default" setups for safe, low, medium, high diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 9daa5a5b29..dab73dc3d1 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -1,4 +1,4 @@ -version 24 +version 25 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -48,6 +48,7 @@ RenderTransparentWater 1 1 RenderTreeLODFactor 1 1.0 RenderUseImpostors 1 1 RenderVBOEnable 1 1 +RenderVBOMappingDisable 1 1 RenderVolumeLODFactor 1 2.0 UseStartScreen 1 1 UseOcclusion 1 1 @@ -242,6 +243,13 @@ RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 +// +// No GL_ARB_map_buffer_range +// +list NoMapBufferRange +RenderVBOMappingDisable 1 0 + + // "Default" setups for safe, low, medium, high // diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index d7b4128ca2..a1e25aae08 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -1,4 +1,4 @@ -version 25 +version 26 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -48,6 +48,7 @@ RenderTransparentWater 1 1 RenderTreeLODFactor 1 1.0 RenderUseImpostors 1 1 RenderVBOEnable 1 1 +RenderVBOMappingDisable 1 1 RenderVolumeLODFactor 1 2.0 UseStartScreen 1 1 UseOcclusion 1 1 @@ -244,6 +245,13 @@ RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 +// +// No GL_ARB_map_buffer_range +// +list NoMapBufferRange +RenderVBOMappingDisable 1 0 + + // // "Default" setups for safe, low, medium, high // diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index 0a23b4d6a6..abe4ec9928 100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt @@ -1,4 +1,4 @@ -version 28 +version 29 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -48,6 +48,7 @@ RenderTransparentWater 1 1 RenderTreeLODFactor 1 1.0 RenderUseImpostors 1 1 RenderVBOEnable 1 1 +RenderVBOMappingDisable 1 1 RenderVolumeLODFactor 1 2.0 UseStartScreen 1 1 UseOcclusion 1 1 @@ -244,6 +245,13 @@ RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 +// +// No GL_ARB_map_buffer_range +// +list NoMapBufferRange +RenderVBOMappingDisable 1 0 + + // // "Default" setups for safe, low, medium, high // -- cgit v1.2.3 From fd51f4d17012eb0a53ca9d8c5ccb8c7b4542fc3a Mon Sep 17 00:00:00 2001 From: prep linden <prep@lindenlab.com> Date: Fri, 10 Jun 2011 10:35:55 -0400 Subject: SH-1632 - minor camera and far plane tweak. Also need SH-1665 for full solution (model needs to stay at the origin - currently it translates during scaling). --- indra/newview/llfloatermodelpreview.cpp | 160 ++++++++++++++++---------------- 1 file changed, 80 insertions(+), 80 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 75fa7b9d1f..4e71aa7fa6 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -2203,87 +2203,87 @@ bool LLModelLoader::isNodeAJoint( domNode* pNode ) //----------------------------------------------------------------------------- // verifyCount //----------------------------------------------------------------------------- -bool LLModelPreview::verifyCount( int expected, int result ) -{ - if ( expected != result ) - { - llinfos<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<llendl; - return false; - } - return true; -} +bool LLModelPreview::verifyCount( int expected, int result ) +{ + if ( expected != result ) + { + llinfos<< "Error: (expected/got)"<<expected<<"/"<<result<<"verts"<<llendl; + return false; + } + return true; +} //----------------------------------------------------------------------------- // verifyController //----------------------------------------------------------------------------- -bool LLModelPreview::verifyController( domController* pController ) -{ - - bool result = true; - - domSkin* pSkin = pController->getSkin(); - - if ( pSkin ) - { - xsAnyURI & uri = pSkin->getSource(); - domElement* pElement = uri.getElement(); - - if ( !pElement ) - { - llinfos<<"Can't resolve skin source"<<llendl; - return false; - } - - daeString type_str = pElement->getTypeName(); - if ( stricmp(type_str, "geometry") == 0 ) - { - //Skin is reference directly by geometry and get the vertex count from skin - domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); - U32 vertexWeightsCount = pVertexWeights->getCount(); - domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); - domMesh* pMesh = pGeometry->getMesh(); - - if ( pMesh ) - { - //Get vertex count from geometry - domVertices* pVertices = pMesh->getVertices(); - if ( !pVertices ) - { - llinfos<<"No vertices!"<<llendl; - return false; - } - - if ( pVertices ) - { - xsAnyURI src = pVertices->getInput_array()[0]->getSource(); - domSource* pSource = (domSource*) (domElement*) src.getElement(); - U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); - result = verifyCount( verticesCount, vertexWeightsCount ); - if ( !result ) - { - return result; - } - } - } - - U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); - result = verifyCount( vcountCount, vertexWeightsCount ); - if ( !result ) - { - return result; - } - - domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); - U32 sum = 0; - for (size_t i=0; i<vcountCount; i++) - { - sum += pVertexWeights->getVcount()->getValue()[i]; - } - result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); - } - } - - return result; -} +bool LLModelPreview::verifyController( domController* pController ) +{ + + bool result = true; + + domSkin* pSkin = pController->getSkin(); + + if ( pSkin ) + { + xsAnyURI & uri = pSkin->getSource(); + domElement* pElement = uri.getElement(); + + if ( !pElement ) + { + llinfos<<"Can't resolve skin source"<<llendl; + return false; + } + + daeString type_str = pElement->getTypeName(); + if ( stricmp(type_str, "geometry") == 0 ) + { + //Skin is reference directly by geometry and get the vertex count from skin + domSkin::domVertex_weights* pVertexWeights = pSkin->getVertex_weights(); + U32 vertexWeightsCount = pVertexWeights->getCount(); + domGeometry* pGeometry = (domGeometry*) (domElement*) uri.getElement(); + domMesh* pMesh = pGeometry->getMesh(); + + if ( pMesh ) + { + //Get vertex count from geometry + domVertices* pVertices = pMesh->getVertices(); + if ( !pVertices ) + { + llinfos<<"No vertices!"<<llendl; + return false; + } + + if ( pVertices ) + { + xsAnyURI src = pVertices->getInput_array()[0]->getSource(); + domSource* pSource = (domSource*) (domElement*) src.getElement(); + U32 verticesCount = pSource->getTechnique_common()->getAccessor()->getCount(); + result = verifyCount( verticesCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + } + } + + U32 vcountCount = (U32) pVertexWeights->getVcount()->getValue().getCount(); + result = verifyCount( vcountCount, vertexWeightsCount ); + if ( !result ) + { + return result; + } + + domInputLocalOffset_Array& inputs = pVertexWeights->getInput_array(); + U32 sum = 0; + for (size_t i=0; i<vcountCount; i++) + { + sum += pVertexWeights->getVcount()->getValue()[i]; + } + result = verifyCount( sum * inputs.getCount(), (domInt) pVertexWeights->getV()->getValue().getCount() ); + } + } + + return result; +} //----------------------------------------------------------------------------- // extractTranslation() @@ -3372,7 +3372,7 @@ void LLModelPreview::resetPreviewTarget() mPreviewScale = (mModelLoader->mExtents[1] - mModelLoader->mExtents[0]) * 0.5f; } - setPreviewTarget(mPreviewScale.magVec()*2.f); + setPreviewTarget(mPreviewScale.magVec()*10.f); } void LLModelPreview::generateNormals() @@ -4590,7 +4590,7 @@ BOOL LLModelPreview::render() LLVector3 target_pos = mPreviewTarget+offset; F32 z_near = 0.001f; - F32 z_far = mCameraDistance+mPreviewScale.magVec()+mCameraOffset.magVec(); + F32 z_far = mCameraDistance*10.0f+mPreviewScale.magVec()+mCameraOffset.magVec(); if (skin_weight) { -- cgit v1.2.3 From 99b05f9647353f9bf5a44b1eb424105598d2b725 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Fri, 10 Jun 2011 18:51:22 -0500 Subject: Fix for show object updates not working (and crashing, and behaving badly). --- indra/newview/llviewermessage.cpp | 12 ++---------- indra/newview/llviewerobject.cpp | 26 ++++++++------------------ indra/newview/pipeline.cpp | 36 ++++++++++++++++++++++++++++++++++++ indra/newview/pipeline.h | 16 ++++++++++++++++ 4 files changed, 62 insertions(+), 28 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3832be727f..b4a4aaa329 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -96,7 +96,6 @@ #include "llviewerwindow.h" #include "llvlmanager.h" #include "llvoavatarself.h" -#include "llvotextbubble.h" #include "llworld.h" #include "pipeline.h" #include "llfloaterworldmap.h" @@ -4228,15 +4227,8 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data) // Display green bubble on kill if ( gShowObjectUpdates ) { - LLViewerObject* newobject; - newobject = gObjectList.createObjectViewer(LL_PCODE_LEGACY_TEXT_BUBBLE, objectp->getRegion()); - - LLVOTextBubble* bubble = (LLVOTextBubble*) newobject; - - bubble->mColor.setVec(0.f, 1.f, 0.f, 1.f); - bubble->setScale( 2.0f * bubble->getScale() ); - bubble->setPositionGlobal(objectp->getPositionGlobal()); - gPipeline.addObject(bubble); + LLColor4 color(0.f,1.f,0.f,1.f); + gPipeline.addDebugBlip(objectp->getPositionAgent(), color); } // Do the kill diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 72cdb4b355..be9ff872c0 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -89,7 +89,6 @@ #include "llvopartgroup.h" #include "llvosky.h" #include "llvosurfacepatch.h" -#include "llvotextbubble.h" #include "llvotree.h" #include "llvovolume.h" #include "llvowater.h" @@ -168,8 +167,6 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco // llwarns << "Creating new tree!" << llendl; // res = new LLVOTree(id, pcode, regionp); break; res = NULL; break; - case LL_PCODE_LEGACY_TEXT_BUBBLE: - res = new LLVOTextBubble(id, pcode, regionp); break; case LL_VO_CLOUDS: res = new LLVOClouds(id, pcode, regionp); break; case LL_VO_SURFACE_PATCH: @@ -1973,23 +1970,16 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, if ( gShowObjectUpdates ) { - if (!((mPrimitiveCode == LL_PCODE_LEGACY_AVATAR) && (((LLVOAvatar *) this)->isSelf())) - && mRegionp) + LLColor4 color; + if (update_type == OUT_TERSE_IMPROVED) { - LLViewerObject* object = gObjectList.createObjectViewer(LL_PCODE_LEGACY_TEXT_BUBBLE, mRegionp); - LLVOTextBubble* bubble = (LLVOTextBubble*) object; - - if (update_type == OUT_TERSE_IMPROVED) - { - bubble->mColor.setVec(0.f, 0.f, 1.f, 1.f); - } - else - { - bubble->mColor.setVec(1.f, 0.f, 0.f, 1.f); - } - object->setPositionGlobal(getPositionGlobal()); - gPipeline.addObject(object); + color.setVec(0.f, 0.f, 1.f, 1.f); + } + else + { + color.setVec(1.f, 0.f, 0.f, 1.f); } + gPipeline.addDebugBlip(getPositionAgent(), color); } if ((0.0f == vel_mag_sq) && diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 4d678117a5..f2294335ed 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -4096,6 +4096,37 @@ void LLPipeline::renderDebug() bool hud_only = hasRenderType(LLPipeline::RENDER_TYPE_HUD); + if (!hud_only && !mDebugBlips.empty()) + { //render debug blips + glPointSize(8.f); + LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS); + + gGL.begin(LLRender::POINTS); + for (std::list<DebugBlip>::iterator iter = mDebugBlips.begin(); iter != mDebugBlips.end(); ) + { + DebugBlip& blip = *iter; + + blip.mAge += gFrameIntervalSeconds; + if (blip.mAge > 2.f) + { + mDebugBlips.erase(iter++); + } + else + { + iter++; + } + + blip.mPosition.mV[2] += gFrameIntervalSeconds*2.f; + + gGL.color4fv(blip.mColor.mV); + gGL.vertex3fv(blip.mPosition.mV); + } + gGL.end(); + gGL.flush(); + glPointSize(1.f); + } + + // Debug stuff. for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); iter != LLWorld::getInstance()->getRegionList().end(); ++iter) @@ -9839,4 +9870,9 @@ void LLPipeline::clearRenderTypeMask(U32 type, ...) } } +void LLPipeline::addDebugBlip(const LLVector3& position, const LLColor4& color) +{ + DebugBlip blip(position, color); + mDebugBlips.push_back(blip); +} diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index e967b8c31e..e9da25e544 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -360,6 +360,8 @@ public: static void updateRenderDeferred(); static void refreshRenderDeferred(); + void addDebugBlip(const LLVector3& position, const LLColor4& color); + private: void unloadShaders(); void addToQuickLookup( LLDrawPool* new_poolp ); @@ -730,6 +732,20 @@ public: protected: std::vector<LLFace*> mSelectedFaces; + class DebugBlip + { + public: + LLColor4 mColor; + LLVector3 mPosition; + F32 mAge; + + DebugBlip(const LLVector3& position, const LLColor4& color) + : mColor(color), mPosition(position), mAge(0.f) + { } + }; + + std::list<DebugBlip> mDebugBlips; + LLPointer<LLViewerFetchedTexture> mFaceSelectImagep; U32 mLightMask; -- cgit v1.2.3 From 44f0a1b68118f662e68904eea83a3801b4577070 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Sat, 11 Jun 2011 16:51:01 -0500 Subject: SH-1778 Physics shape display fix up. --- indra/newview/llspatialpartition.cpp | 7 --- indra/newview/pipeline.cpp | 93 +++--------------------------------- 2 files changed, 6 insertions(+), 94 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index d96fa087b1..a5b91729e8 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2969,13 +2969,6 @@ void render_hull(LLModel::PhysicsMesh& mesh, const LLColor4& color, const LLColo void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume) { - if (volume->isSelected()) - { - LLVector3 construct_me(5,5,5); - construct_me.normalize(); - } - - U8 physics_type = volume->getPhysicsShapeType(); if (physics_type == LLViewerObject::PHYSICS_SHAPE_NONE || volume->isFlexible()) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index f2294335ed..ba948bf139 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -773,31 +773,7 @@ void LLPipeline::updateRenderDeferred() //static void LLPipeline::refreshRenderDeferred() { - static BOOL physics_shapes_is_on = FALSE ; - static BOOL render_glow_copy = FALSE ; - - if(gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES)) - { - if(!physics_shapes_is_on) - { - physics_shapes_is_on = TRUE ; - render_glow_copy = sRenderGlow ; - } - - //turn the deferred rendering and glow off when draw physics shapes. - sRenderDeferred = FALSE ; - sRenderGlow = FALSE ; - } - else - { - if(physics_shapes_is_on) - { - physics_shapes_is_on = FALSE ; - sRenderGlow = render_glow_copy ; - } - - updateRenderDeferred() ; - } + updateRenderDeferred(); } void LLPipeline::releaseGLBuffers() @@ -6106,7 +6082,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) { LLMemType mt_ru(LLMemType::MTYPE_PIPELINE_RENDER_BLOOM); if (!(gPipeline.canUseVertexShaders() && - sRenderGlow)) + sRenderGlow) || + (!sRenderDeferred && hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES))) { return; } @@ -6152,67 +6129,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) gGL.setColorMask(true, true); glClearColor(0,0,0,0); - - /*if (for_snapshot) - { - gGL.getTexUnit(0)->bind(&mGlow[1]); - { - //LLGLEnable stencil(GL_STENCIL_TEST); - //glStencilFunc(GL_NOTEQUAL, 255, 0xFFFFFFFF); - //glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - //LLGLDisable blend(GL_BLEND); - - // If the snapshot is constructed from tiles, calculate which - // tile we're in. - - //from LLViewerCamera::setPerpsective - if (zoom_factor > 1.f) - { - int pos_y = subfield / llceil(zoom_factor); - int pos_x = subfield - (pos_y*llceil(zoom_factor)); - F32 size = 1.f/zoom_factor; - - tc1.set(pos_x*size, pos_y*size); - tc2 = tc1 + LLVector2(size,size); - } - else - { - tc2.set(1,1); - } - - LLGLEnable blend(GL_BLEND); - gGL.setSceneBlendType(LLRender::BT_ADD); - - - gGL.begin(LLRender::TRIANGLE_STRIP); - gGL.color4f(1,1,1,1); - gGL.texCoord2f(tc1.mV[0], tc1.mV[1]); - gGL.vertex2f(-1,-1); - - gGL.texCoord2f(tc1.mV[0], tc2.mV[1]); - gGL.vertex2f(-1,1); - - gGL.texCoord2f(tc2.mV[0], tc1.mV[1]); - gGL.vertex2f(1,-1); - - gGL.texCoord2f(tc2.mV[0], tc2.mV[1]); - gGL.vertex2f(1,1); - - gGL.end(); - - gGL.flush(); - gGL.setSceneBlendType(LLRender::BT_ALPHA); - } - - gGL.flush(); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - return; - }*/ - + { { LLFastTimer ftm(FTM_RENDER_BLOOM_FBO); @@ -6568,6 +6485,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES)) { + gGL.setColorMask(true, false); + LLVector2 tc1(0,0); LLVector2 tc2((F32) gViewerWindow->getWorldViewWidthRaw()*2, (F32) gViewerWindow->getWorldViewHeightRaw()*2); -- cgit v1.2.3 From 8746648c4ea43aff03854bab2a5739fbbbe24ea7 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Sat, 11 Jun 2011 17:10:26 -0500 Subject: Fix for under water render going black when deferred rendering and anti-aliasing enabled. --- indra/newview/pipeline.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index ba948bf139..e74bf2a620 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -6257,9 +6257,9 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) LLVertexBuffer::unbind(); - if (LLPipeline::sRenderDeferred && !LLViewerCamera::getInstance()->cameraUnderWater()) + if (LLPipeline::sRenderDeferred) { - bool dof_enabled = true; + bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater(); LLGLSLShader* shader = &gDeferredPostProgram; if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2) @@ -6267,7 +6267,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) shader = &gDeferredGIFinalProgram; dof_enabled = false; } - else if (LLToolMgr::getInstance()->inBuildMode() || !gSavedSettings.getBOOL("RenderDepthOfField")) + else if (!dof_enabled || LLToolMgr::getInstance()->inBuildMode() || !gSavedSettings.getBOOL("RenderDepthOfField")) { //squish focal length when in build mode (or if DoF is disabled) so DoF doesn't make editing objects difficult shader = &gDeferredPostNoDoFProgram; dof_enabled = false; -- cgit v1.2.3 From ac504815137ec01767717e7c1a4c419a995f629c Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Sun, 12 Jun 2011 16:00:33 -0400 Subject: STORM-787 Mute Gestures Button --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llfloaterpreference.cpp | 9 +++++++++ indra/newview/llfloaterpreference.h | 1 + indra/newview/llviewermessage.cpp | 3 +++ .../default/xui/en/panel_preferences_sound.xml | 22 ++++++++++++++++++---- 5 files changed, 42 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index fc7fd2dd8a..9b12b8057f 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3058,6 +3058,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>EnableGestureSounds</key> + <map> + <key>Comment</key> + <string>Play sounds from gestures</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>EnableMouselook</key> <map> <key>Comment</key> diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 60a2f813aa..7848484ac6 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -327,6 +327,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.SelectSkin", boost::bind(&LLFloaterPreference::onSelectSkin, this)); mCommitCallbackRegistrar.add("Pref.VoiceSetKey", boost::bind(&LLFloaterPreference::onClickSetKey, this)); mCommitCallbackRegistrar.add("Pref.VoiceSetMiddleMouse", boost::bind(&LLFloaterPreference::onClickSetMiddleMouse, this)); + mCommitCallbackRegistrar.add("Pref.SetSounds", boost::bind(&LLFloaterPreference::onClickSetSounds, this)); // mCommitCallbackRegistrar.add("Pref.ClickSkipDialogs", boost::bind(&LLFloaterPreference::onClickSkipDialogs, this)); // mCommitCallbackRegistrar.add("Pref.ClickResetDialogs", boost::bind(&LLFloaterPreference::onClickResetDialogs, this)); mCommitCallbackRegistrar.add("Pref.ClickEnablePopup", boost::bind(&LLFloaterPreference::onClickEnablePopup, this)); @@ -1286,6 +1287,14 @@ void LLFloaterPreference::onClickSetMiddleMouse() p2t_line_editor->setValue(advanced_preferences->getString("middle_mouse")); } } + +void LLFloaterPreference::onClickSetSounds() +{ + // Disable Enable gesture sounds checkbox if the master sound is disabled + // or if sound effects are disabled. + getChild<LLCheckBoxCtrl>("gesture_audio_play_btn")->setEnabled(!gSavedSettings.getBOOL("MuteSounds")); +} + /* void LLFloaterPreference::onClickSkipDialogs() { diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index ef92575347..61f2c78640 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -129,6 +129,7 @@ public: void onClickSetKey(); void setKey(KEY key); void onClickSetMiddleMouse(); + void onClickSetSounds(); // void onClickSkipDialogs(); // void onClickResetDialogs(); void onClickEnablePopup(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3832be727f..0aada644f3 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4332,6 +4332,9 @@ void process_sound_trigger(LLMessageSystem *msg, void **) { return; } + + // Don't play sounds from gestures if they are not enabled. + if (!gSavedSettings.getBOOL("EnableGestureSounds")) return; gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global); } diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 91fe6f544c..1bdd2ccefb 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -123,8 +123,8 @@ function="Pref.setControlFalse" parameter="MuteAmbient" /> </slider> - <button - control_name="MuteAmbient" + <button + control_name="MuteAmbient" disabled_control="MuteAudio" follows="top|left" height="16" @@ -157,7 +157,7 @@ function="Pref.setControlFalse" parameter="MuteSounds" /> </slider> - <button + <button control_name="MuteSounds" disabled_control="MuteAudio" follows="top|left" @@ -169,7 +169,10 @@ left_pad="5" name="mute_audio" tab_stop="false" - width="16" /> + width="16"> + <button.commit_callback + function="Pref.SetSounds"/> + </button> <slider control_name="AudioLevelMusic" disabled_control="MuteAudio" @@ -311,6 +314,17 @@ name="enable_voice_check" width="110"/> <!-- --> + <check_box + name="gesture_audio_play_btn" + control_name="EnableGestureSounds" + disabled_control="MuteAudio" + value="true" + follows="left|bottom|right" + height="15" + tool_tip="Check this to hear sounds from gestures" + label="Enable sounds from gestures" + top_pad="1" + left="25"/> <check_box name="media_auto_play_btn" control_name="ParcelMediaAutoPlayEnable" -- cgit v1.2.3 From 8c998c5e8f6fee10e8bb96148db423a4020dd675 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Sun, 12 Jun 2011 19:59:06 -0400 Subject: STORM-787 Mute Gestures Button --- indra/newview/skins/default/xui/en/panel_preferences_sound.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 1bdd2ccefb..baa8d485ef 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -322,7 +322,7 @@ follows="left|bottom|right" height="15" tool_tip="Check this to hear sounds from gestures" - label="Enable sounds from gestures" + label="Play sounds from gestures" top_pad="1" left="25"/> <check_box -- cgit v1.2.3 From f1ec7a821b82df5361864ecfef49ee8cee4ba7d8 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Mon, 13 Jun 2011 15:28:24 -0700 Subject: FIX CT-636 CT-640 DA translation for Set22 and Set1 --- .../skins/default/xui/da/floater_about_land.xml | 4 +- indra/newview/skins/default/xui/da/floater_map.xml | 3 + .../newview/skins/default/xui/da/floater_tools.xml | 2 + .../skins/default/xui/da/menu_attachment_self.xml | 2 +- .../skins/default/xui/da/menu_avatar_self.xml | 2 +- .../skins/default/xui/da/menu_bottomtray.xml | 2 +- .../default/xui/da/menu_inspect_avatar_gear.xml | 6 +- .../default/xui/da/menu_inspect_self_gear.xml | 39 +- .../default/xui/da/menu_inventory_gear_default.xml | 1 + indra/newview/skins/default/xui/da/menu_object.xml | 4 +- .../default/xui/da/menu_places_gear_folder.xml | 5 +- .../default/xui/da/menu_places_gear_landmark.xml | 5 +- indra/newview/skins/default/xui/da/menu_viewer.xml | 8 +- .../newview/skins/default/xui/da/notifications.xml | 50 +- indra/newview/skins/default/xui/da/panel_login.xml | 7 + .../skins/default/xui/da/panel_nearby_media.xml | 2 +- .../newview/skins/default/xui/da/panel_people.xml | 2 + .../default/xui/da/panel_preferences_sound.xml | 4 +- .../newview/skins/default/xui/da/panel_profile.xml | 8 +- .../skins/default/xui/da/panel_script_ed.xml | 3 + indra/newview/skins/default/xui/da/strings.xml | 357 +++- .../skins/minimal/xui/da/floater_camera.xml | 65 + .../skins/minimal/xui/da/floater_help_browser.xml | 9 + .../skins/minimal/xui/da/floater_media_browser.xml | 19 + .../skins/minimal/xui/da/floater_nearby_chat.xml | 4 + .../skins/minimal/xui/da/floater_web_content.xml | 14 + .../skins/minimal/xui/da/inspect_avatar.xml | 24 + .../skins/minimal/xui/da/inspect_object.xml | 41 + .../minimal/xui/da/menu_add_wearable_gear.xml | 6 + .../skins/minimal/xui/da/menu_attachment_other.xml | 17 + .../skins/minimal/xui/da/menu_attachment_self.xml | 16 + .../skins/minimal/xui/da/menu_avatar_icon.xml | 7 + .../skins/minimal/xui/da/menu_avatar_other.xml | 16 + .../skins/minimal/xui/da/menu_avatar_self.xml | 31 + .../skins/minimal/xui/da/menu_bottomtray.xml | 17 + .../skins/minimal/xui/da/menu_cof_attachment.xml | 4 + .../skins/minimal/xui/da/menu_cof_body_part.xml | 5 + .../skins/minimal/xui/da/menu_cof_clothing.xml | 6 + .../newview/skins/minimal/xui/da/menu_cof_gear.xml | 5 + indra/newview/skins/minimal/xui/da/menu_edit.xml | 12 + .../skins/minimal/xui/da/menu_favorites.xml | 10 + .../skins/minimal/xui/da/menu_gesture_gear.xml | 10 + .../skins/minimal/xui/da/menu_group_plus.xml | 5 + .../skins/minimal/xui/da/menu_hide_navbar.xml | 6 + .../skins/minimal/xui/da/menu_im_well_button.xml | 4 + .../skins/minimal/xui/da/menu_imchiclet_adhoc.xml | 4 + .../skins/minimal/xui/da/menu_imchiclet_group.xml | 6 + .../skins/minimal/xui/da/menu_imchiclet_p2p.xml | 7 + .../minimal/xui/da/menu_inspect_avatar_gear.xml | 21 + .../minimal/xui/da/menu_inspect_object_gear.xml | 18 + .../minimal/xui/da/menu_inspect_self_gear.xml | 31 + .../minimal/xui/da/menu_inv_offer_chiclet.xml | 4 + .../skins/minimal/xui/da/menu_inventory.xml | 84 + .../skins/minimal/xui/da/menu_inventory_add.xml | 33 + .../minimal/xui/da/menu_inventory_gear_default.xml | 17 + indra/newview/skins/minimal/xui/da/menu_land.xml | 9 + .../newview/skins/minimal/xui/da/menu_landmark.xml | 7 + indra/newview/skins/minimal/xui/da/menu_login.xml | 24 + .../newview/skins/minimal/xui/da/menu_mini_map.xml | 11 + indra/newview/skins/minimal/xui/da/menu_navbar.xml | 11 + .../skins/minimal/xui/da/menu_nearby_chat.xml | 9 + .../xui/da/menu_notification_well_button.xml | 4 + indra/newview/skins/minimal/xui/da/menu_object.xml | 29 + .../skins/minimal/xui/da/menu_object_icon.xml | 5 + .../skins/minimal/xui/da/menu_outfit_gear.xml | 27 + .../skins/minimal/xui/da/menu_outfit_tab.xml | 9 + .../skins/minimal/xui/da/menu_participant_list.xml | 21 + .../xui/da/menu_people_friends_view_sort.xml | 8 + .../skins/minimal/xui/da/menu_people_groups.xml | 8 + .../xui/da/menu_people_groups_view_sort.xml | 5 + .../skins/minimal/xui/da/menu_people_nearby.xml | 13 + .../xui/da/menu_people_nearby_multiselect.xml | 10 + .../xui/da/menu_people_nearby_view_sort.xml | 8 + .../xui/da/menu_people_recent_view_sort.xml | 7 + indra/newview/skins/minimal/xui/da/menu_picks.xml | 8 + .../skins/minimal/xui/da/menu_picks_plus.xml | 5 + indra/newview/skins/minimal/xui/da/menu_place.xml | 7 + .../skins/minimal/xui/da/menu_place_add_button.xml | 5 + .../minimal/xui/da/menu_places_gear_folder.xml | 16 + .../minimal/xui/da/menu_places_gear_landmark.xml | 19 + .../skins/minimal/xui/da/menu_profile_overflow.xml | 12 + .../skins/minimal/xui/da/menu_save_outfit.xml | 5 + .../skins/minimal/xui/da/menu_script_chiclet.xml | 4 + indra/newview/skins/minimal/xui/da/menu_slurl.xml | 6 + .../minimal/xui/da/menu_teleport_history_gear.xml | 6 + .../minimal/xui/da/menu_teleport_history_item.xml | 6 + .../minimal/xui/da/menu_teleport_history_tab.xml | 5 + .../skins/minimal/xui/da/menu_text_editor.xml | 8 + .../skins/minimal/xui/da/menu_topinfobar.xml | 7 + .../skins/minimal/xui/da/menu_url_agent.xml | 6 + .../skins/minimal/xui/da/menu_url_group.xml | 6 + .../newview/skins/minimal/xui/da/menu_url_http.xml | 7 + .../skins/minimal/xui/da/menu_url_inventory.xml | 6 + .../newview/skins/minimal/xui/da/menu_url_map.xml | 6 + .../skins/minimal/xui/da/menu_url_objectim.xml | 8 + .../skins/minimal/xui/da/menu_url_parcel.xml | 6 + .../skins/minimal/xui/da/menu_url_slapp.xml | 5 + .../skins/minimal/xui/da/menu_url_slurl.xml | 7 + .../skins/minimal/xui/da/menu_url_teleport.xml | 6 + indra/newview/skins/minimal/xui/da/menu_viewer.xml | 14 + .../minimal/xui/da/menu_wearable_list_item.xml | 14 + .../skins/minimal/xui/da/menu_wearing_gear.xml | 5 + .../skins/minimal/xui/da/menu_wearing_tab.xml | 6 + .../newview/skins/minimal/xui/da/notifications.xml | 1833 ++++++++++++++++++++ .../minimal/xui/da/panel_adhoc_control_panel.xml | 14 + .../skins/minimal/xui/da/panel_bottomtray.xml | 39 + .../minimal/xui/da/panel_group_control_panel.xml | 17 + .../minimal/xui/da/panel_im_control_panel.xml | 29 + indra/newview/skins/minimal/xui/da/panel_login.xml | 48 + .../skins/minimal/xui/da/panel_navigation_bar.xml | 18 + .../newview/skins/minimal/xui/da/panel_people.xml | 94 + .../minimal/xui/da/panel_side_tray_tab_caption.xml | 7 + .../skins/minimal/xui/da/panel_status_bar.xml | 33 + 113 files changed, 3625 insertions(+), 47 deletions(-) create mode 100644 indra/newview/skins/minimal/xui/da/floater_camera.xml create mode 100644 indra/newview/skins/minimal/xui/da/floater_help_browser.xml create mode 100644 indra/newview/skins/minimal/xui/da/floater_media_browser.xml create mode 100644 indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml create mode 100644 indra/newview/skins/minimal/xui/da/floater_web_content.xml create mode 100644 indra/newview/skins/minimal/xui/da/inspect_avatar.xml create mode 100644 indra/newview/skins/minimal/xui/da/inspect_object.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_attachment_other.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_attachment_self.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_avatar_other.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_avatar_self.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_bottomtray.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_cof_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_edit.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_favorites.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_group_plus.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_im_well_button.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inventory.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inventory_add.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_land.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_landmark.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_login.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_mini_map.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_navbar.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_object.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_object_icon.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_participant_list.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_groups.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_nearby.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_picks.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_picks_plus.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_place.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_place_add_button.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_save_outfit.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_slurl.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_text_editor.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_topinfobar.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_agent.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_group.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_http.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_inventory.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_map.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_objectim.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_parcel.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_slapp.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_slurl.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_url_teleport.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_viewer.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml create mode 100644 indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml create mode 100644 indra/newview/skins/minimal/xui/da/notifications.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_bottomtray.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_login.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_people.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml create mode 100644 indra/newview/skins/minimal/xui/da/panel_status_bar.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index 46e1eca126..5b9e618666 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -346,6 +346,7 @@ Kun større parceller kan vises i søgning. <combo_box.item label="Parker & natur" name="item9"/> <combo_box.item label="Beboelse" name="item10"/> <combo_box.item label="Indkøb" name="item11"/> + <combo_box.item label="Leje" name="item13"/> <combo_box.item label="Andet" name="item12"/> </combo_box> <combo_box name="land category"> @@ -360,6 +361,7 @@ Kun større parceller kan vises i søgning. <combo_box.item label="Parker & natur" name="item9"/> <combo_box.item label="Beboelse" name="item10"/> <combo_box.item label="Indkøb" name="item11"/> + <combo_box.item label="Leje" name="item13"/> <combo_box.item label="Andet" name="item12"/> </combo_box> <check_box label="Mature indhold" name="MatureCheck" tool_tip=""/> @@ -426,7 +428,7 @@ Kun større parceller kan vises i søgning. (Defineret via estate) </panel.string> <panel.string name="allow_public_access"> - Tillad adgang for alle ([MATURITY]) + Tillad offentlig adgang ([MATURITY]) (Bemærk: Ellers oprettes blokeringslinier) </panel.string> <panel.string name="estate_override"> En eller flere af disse valg er indstillet på estate niveau diff --git a/indra/newview/skins/default/xui/da/floater_map.xml b/indra/newview/skins/default/xui/da/floater_map.xml index 5df9bb5f6e..4912d73ba0 100644 --- a/indra/newview/skins/default/xui/da/floater_map.xml +++ b/indra/newview/skins/default/xui/da/floater_map.xml @@ -3,6 +3,9 @@ <floater.string name="ToolTipMsg"> [REGION](Dobbeltklik for at åbne kort, klik-og-træk for at panorere) </floater.string> + <floater.string name="AltToolTipMsg"> + [REGION](Dobbeltklik for at teleportere, træk for at panorere) + </floater.string> <floater.string name="mini_map_caption"> MINIKORT </floater.string> diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 9e673d0d5b..8264e366c0 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -64,6 +64,8 @@ <radio_item label="Vælg overflade" name="radio select face"/> </radio_group> <check_box label="Redigér lænkede" name="checkbox edit linked parts"/> + <button label="Sammenkæd" name="link_btn"/> + <button label="Adskil" name="unlink_btn"/> <text name="RenderingCost" tool_tip="Hvis beregnede rendering omkostninger for dette objekt"> þ: [COUNT] </text> diff --git a/indra/newview/skins/default/xui/da/menu_attachment_self.xml b/indra/newview/skins/default/xui/da/menu_attachment_self.xml index 1c19435f90..35ba27f9e2 100644 --- a/indra/newview/skins/default/xui/da/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/da/menu_attachment_self.xml @@ -5,7 +5,7 @@ <menu_item_call label="Tag af" name="Detach"/> <menu_item_call label="Sid ned" name="Sit Down Here"/> <menu_item_call label="Stå op" name="Stand Up"/> - <menu_item_call label="Skift sæt" name="Change Outfit"/> + <menu_item_call label="Udseende" name="Change Outfit"/> <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/> <menu_item_call label="Redigér min figur" name="Edit My Shape"/> <menu_item_call label="Venner" name="Friends..."/> diff --git a/indra/newview/skins/default/xui/da/menu_avatar_self.xml b/indra/newview/skins/default/xui/da/menu_avatar_self.xml index 5a05a12b4e..0080f7a59e 100644 --- a/indra/newview/skins/default/xui/da/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/da/menu_avatar_self.xml @@ -21,7 +21,7 @@ <context_menu label="Tag af" name="Object Detach"/> <menu_item_call label="Tag alt af" name="Detach All"/> </context_menu> - <menu_item_call label="Skift sæt" name="Chenge Outfit"/> + <menu_item_call label="Mit udseende" name="Chenge Outfit"/> <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/> <menu_item_call label="Redigér min form" name="Edit My Shape"/> <menu_item_call label="Venner" name="Friends..."/> diff --git a/indra/newview/skins/default/xui/da/menu_bottomtray.xml b/indra/newview/skins/default/xui/da/menu_bottomtray.xml index e979e35a91..9ac296904a 100644 --- a/indra/newview/skins/default/xui/da/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/da/menu_bottomtray.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="hide_camera_move_controls_menu"> + <menu_item_check label="Stemme aktiveret" name="EnableVoiceChat"/> <menu_item_check label="Faste bevægelser" name="ShowGestureButton"/> <menu_item_check label="Bevægelse knap" name="ShowMoveButton"/> <menu_item_check label="Vis knap" name="ShowCameraButton"/> <menu_item_check label="Foto knap" name="ShowSnapshotButton"/> - <menu_item_check label="Sidepanel knap" name="ShowSidebarButton"/> <menu_item_check label="Bygge knap" name="ShowBuildButton"/> <menu_item_check label="Søge knap" name="ShowSearchButton"/> <menu_item_check label="Kort knap" name="ShowWorldMapButton"/> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml index 89111d49f1..8da35adb1b 100644 --- a/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_inspect_avatar_gear.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<menu name="Gear Menu"> +<toggleable_menu name="Gear Menu"> <menu_item_call label="Profil" name="view_profile"/> <menu_item_call label="Tilføj ven" name="add_friend"/> <menu_item_call label="Besked" name="im"/> @@ -11,9 +11,11 @@ <menu_item_call label="Rapportér" name="report"/> <menu_item_call label="Frys" name="freeze"/> <menu_item_call label="Smid ud" name="eject"/> + <menu_item_call label="Spark" name="kick"/> + <menu_item_call label="CSR" name="csr"/> <menu_item_call label="Debug teksturer" name="debug"/> <menu_item_call label="Find på kort" name="find_on_map"/> <menu_item_call label="Zoom ind" name="zoom_in"/> <menu_item_call label="Betal" name="pay"/> <menu_item_call label="Del" name="share"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml index a2ddd116a7..887c6484bc 100644 --- a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml @@ -1,10 +1,31 @@ -<?xml version="1.0" encoding="utf-8"?> -<menu name="Gear Menu"> - <menu_item_call label="Sid ned" name="sit_down_here"/> - <menu_item_call label="Stå op" name="stand_up"/> - <menu_item_call label="Skift sæt" name="change_outfit"/> - <menu_item_call label="Profil" name="my_profile"/> - <menu_item_call label="Venner" name="my_friends"/> - <menu_item_call label="Grupper" name="my_groups"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="Gear Menu"> + <menu_item_call label="Sid ned" name="Sit Down Here"/> + <menu_item_call label="Stå op" name="Stand Up"/> + <context_menu label="Tag af" name="Take Off >"> + <context_menu label="Tøj" name="Clothes >"> + <menu_item_call label="Trøje" name="Shirt"/> + <menu_item_call label="Bukser" name="Pants"/> + <menu_item_call label="Nederdel" name="Skirt"/> + <menu_item_call label="Sko" name="Shoes"/> + <menu_item_call label="Strømper" name="Socks"/> + <menu_item_call label="Jakke" name="Jacket"/> + <menu_item_call label="Handsker" name="Gloves"/> + <menu_item_call label="Undertrøje" name="Self Undershirt"/> + <menu_item_call label="Underbukser" name="Self Underpants"/> + <menu_item_call label="Tatovering" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Alt tøj" name="All Clothes"/> + </context_menu> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Tag af" name="Object Detach"/> + <menu_item_call label="Tag alt af" name="Detach All"/> + </context_menu> + <menu_item_call label="Skift sæt" name="Chenge Outfit"/> + <menu_item_call label="Redigér sæt" name="Edit Outfit"/> + <menu_item_call label="Redigér min figur" name="Edit My Shape"/> + <menu_item_call label="Mine venner" name="Friends..."/> + <menu_item_call label="Mine grupper" name="Groups..."/> + <menu_item_call label="Min profil" name="Profile..."/> <menu_item_call label="Debug teksturer" name="Debug..."/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml index b359d94f07..4809b24463 100644 --- a/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory_gear_default.xml @@ -3,6 +3,7 @@ <menu_item_call label="Nyt vindue" name="new_window"/> <menu_item_check label="Sortér efter navn" name="sort_by_name"/> <menu_item_check label="Sortér efter nyeste" name="sort_by_recent"/> + <menu_item_check label="Sortér altid mapper efter navn" name="sort_folders_by_name"/> <menu_item_check label="Vis System mapper øverst" name="sort_system_folders_to_top"/> <menu_item_call label="Vis filtre" name="show_filters"/> <menu_item_call label="Nulstil filtre" name="reset_filters"/> diff --git a/indra/newview/skins/default/xui/da/menu_object.xml b/indra/newview/skins/default/xui/da/menu_object.xml index bc0cdde86f..ba62ccf90c 100644 --- a/indra/newview/skins/default/xui/da/menu_object.xml +++ b/indra/newview/skins/default/xui/da/menu_object.xml @@ -16,14 +16,14 @@ <context_menu label="Vedhæft" name="Object Attach"/> <context_menu label="Vedhæft HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Fjern" name="Remove"> + <context_menu label="Administrér" name="Remove"> <menu_item_call label="Rapportér misbrug" name="Report Abuse..."/> <menu_item_call label="Blokér" name="Object Mute"/> <menu_item_call label="Returnér" name="Return..."/> - <menu_item_call label="Slet" name="Delete"/> </context_menu> <menu_item_call label="Tag" name="Pie Object Take"/> <menu_item_call label="Tag kopi" name="Take Copy"/> <menu_item_call label="Betal" name="Pay..."/> <menu_item_call label="Køb" name="Buy..."/> + <menu_item_call label="Slet" name="Delete"/> </context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml index 3ee3c02fb1..5f573c2363 100644 --- a/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/da/menu_places_gear_folder.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_folder_gear"> +<toggleable_menu name="menu_folder_gear"> <menu_item_call label="Tilføj landemærke" name="add_landmark"/> <menu_item_call label="Tilføj mappe" name="add_folder"/> + <menu_item_call label="Gendan genstand" name="restore_item"/> <menu_item_call label="Klip" name="cut"/> <menu_item_call label="Kopiér" name="copy_folder"/> <menu_item_call label="Sæt ind" name="paste"/> @@ -12,4 +13,4 @@ <menu_item_call label="Udvid alle mapper" name="expand_all"/> <menu_item_call label="Luk alle mapper" name="collapse_all"/> <menu_item_check label="Sortér efter dato" name="sort_by_date"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml index 21f425c49d..13dbcdd42e 100644 --- a/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_ladmark_gear"> +<toggleable_menu name="menu_ladmark_gear"> <menu_item_call label="Teleportér" name="teleport"/> <menu_item_call label="Mere information" name="more_info"/> <menu_item_call label="Vis på kort" name="show_on_map"/> <menu_item_call label="Tilføj landemærke" name="add_landmark"/> <menu_item_call label="Tilføj mappe" name="add_folder"/> + <menu_item_call label="Gendan genstand" name="restore_item"/> <menu_item_call label="Klip" name="cut"/> <menu_item_call label="Kopiér landemærke" name="copy_landmark"/> <menu_item_call label="Kopiér SLurl" name="copy_slurl"/> @@ -15,4 +16,4 @@ <menu_item_call label="Luk alle mapper" name="collapse_all"/> <menu_item_check label="Sortér efter dato" name="sort_by_date"/> <menu_item_call label="Opret favorit" name="create_pick"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index fc32be9dc9..f59a0622be 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -5,7 +5,7 @@ <menu_item_call label="Mit instrumentpanel" name="Manage My Account"/> <menu_item_call label="Køb L$" name="Buy and Sell L$"/> <menu_item_call label="Profil" name="Profile"/> - <menu_item_call label="Skift sæt" name="ChangeOutfit"/> + <menu_item_call label="Udseende" name="ChangeOutfit"/> <menu_item_check label="Beholdning" name="Inventory"/> <menu_item_check label="Min beholdning" name="ShowSidetrayInventory"/> <menu_item_check label="Mine bevægelser" name="Gestures"/> @@ -33,6 +33,7 @@ <menu label="Verden" name="World"> <menu_item_check label="Mini-kort" name="Mini-Map"/> <menu_item_check label="Verdenskort" name="World Map"/> + <menu_item_check label="Søg" name="Search"/> <menu_item_call label="Foto" name="Take Snapshot"/> <menu_item_call label="Opret landemærke for dette sted" name="Create Landmark Here"/> <menu label="Profil for sted" name="Land"> @@ -222,7 +223,9 @@ <menu label="Vis info" name="Display Info"> <menu_item_check label="Vis tid" name="Show Time"/> <menu_item_check label="Vis gengivelses information" name="Show Render Info"/> + <menu_item_check label="Vis tekstur information" name="Show Texture Info"/> <menu_item_check label="Vis farve under cursor" name="Show Color Under Cursor"/> + <menu_item_check label="Vis memory" name="Show Memory"/> <menu_item_check label="Vis opdateringer på objekter" name="Show Updates"/> </menu> <menu label="Fremtving en fejl" name="Force Errors"> @@ -240,6 +243,9 @@ <menu_item_check label="Tilfældige framerates" name="Randomize Framerate"/> <menu_item_check label="Frame test" name="Frame Test"/> </menu> + <menu label="Render Metadata" name="Render Metadata"> + <menu_item_check label="Opdatér type" name="Update Type"/> + </menu> <menu label="Gengivelse" name="Rendering"> <menu_item_check label="Akser" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 30b54d3eb2..0d2aaf45ce 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -72,9 +72,9 @@ Fejl detaljer: Beskeden kaldet '[_NAME]' blev ikke fundet i notificati <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> - Kunne ikke oprette forbindelse til [SECOND_LIFE_GRID]. -'[DIAGNOSTIC]' -Make sure your Internet connection is working properly. + Kunne ikke tilslutte til [SECOND_LIFE_GRID]. + '[DIAGNOSTIC]' +Check at Internet forbindelsen fungerer korrekt. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MessageTemplateNotFound"> @@ -215,13 +215,6 @@ Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en ko <notification name="InvalidCredentialFormat"> Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen. </notification> - <notification name="AddClassified"> - Annoncer vil vises i 'Annoncer' sektionen i søge biblioteket og på [http://secondlife.com/community/classifieds secondlife.com] i en uge. -Udfyld din annonce og klik på 'Udgiv...' for at tilf'je den til biblioteket. -Du vil blive spurgt om en pris når du klikker på 'Udgiv'. -Jo mere du betaler, jo højere oppe på listen vises annoncen, og den vil også optræde højere oppe når personer søger. - <usetemplate ignoretext="Hvordan man opretter en annonce" name="okcancelignore" notext="Cancel" yestext="OK"/> - </notification> <notification name="DeleteMedia"> Du har valgt at slette media tilknyttet denne overflade. Er du sikker på at du vil fortsætte? @@ -1664,7 +1657,7 @@ Knappen vil blive vist når der er nok plads til den. <nolink>[ITEMS]</nolink> -Med følgende beboere: +Me følgende beboere: [RESIDENTS] <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ok"/> @@ -1756,9 +1749,6 @@ Sluk for alles lyd? <notification label="Undersøg verden" name="HintDestinationGuide"> Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen. </notification> - <notification label="Ændre dit udseende" name="HintAvatarPicker"> - Kunne du tænke dig at prøve et nyt udseende? Klik på knappen nedenfor for at se flere avatarer. - </notification> <notification label="Side panel" name="HintSidePanel"> Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel. </notification> @@ -1796,6 +1786,38 @@ Sluk for alles lyd? <button name="cancel" text="Annullér"/> </form> </notification> + <notification label="" name="ModeChange"> + For at skifte tilstand skal du genstarte programmet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoClassifieds"> + Oprettelse og redigering af annoncer er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoGroupInfo"> + Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoPicks"> + Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoWorldMap"> + Det er kun muligt at se verdenskortet i avanceret tilstand.Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoVoiceCall"> + Stemme kald kan kun benttes i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoAvatarShare"> + Det er kun mulig at dele i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoAvatarPay"> + Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> <global name="UnsupportedGLRequirements"> Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index dc8d9bc432..2e0f726e1a 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -17,6 +17,13 @@ </text> <check_box label="Husk password" name="remember_check"/> <button label="Log på" name="connect_btn"/> + <text name="mode_selection_text"> + Tilstand: + </text> + <combo_box name="mode_combo" tool_tip="Vælg ønsket tilstand. Vælg basis for hurtig og nem udforskning og chat. Vælg avanceret for at få adgang til flere muligheder."> + <combo_box.item label="Basis" name="Basic"/> + <combo_box.item label="Avanceret" name="Advanced"/> + </combo_box> <text name="start_location_text"> Start ved: </text> diff --git a/indra/newview/skins/default/xui/da/panel_nearby_media.xml b/indra/newview/skins/default/xui/da/panel_nearby_media.xml index b4be70a22a..ef8ed3ad07 100644 --- a/indra/newview/skins/default/xui/da/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/da/panel_nearby_media.xml @@ -19,7 +19,7 @@ <button label="Stop alt" name="all_nearby_media_disable_btn" tool_tip="Stop al media tæt på"/> <button label="Start alt" name="all_nearby_media_enable_btn" tool_tip="Tænd al media tæt på"/> <button name="open_prefs_btn" tool_tip="Vis media preferencer"/> - <button label="Mere >>" label_selected="Mindre <<" name="more_btn" tool_tip="Advancerede kontroller"/> + <button label="Mere >>" label_selected="<< Mindre" name="more_btn" tool_tip="Advancerede kontroller"/> <button label="Mere >>" label_selected="Mindre <<" name="less_btn" tool_tip="Advancerede kontroller"/> </panel> <panel name="nearby_media_panel"> diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml index b85a33279a..925492b2d7 100644 --- a/indra/newview/skins/default/xui/da/panel_people.xml +++ b/indra/newview/skins/default/xui/da/panel_people.xml @@ -18,6 +18,8 @@ Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Verd <string name="groups_filter_label" value="Filtrér grupper"/> <string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/> <string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/> + <string name="MiniMapToolTipMsg" value="[REGION](Dobbeltklik for at åbne kort, træk for at panorere)"/> + <string name="AltMiniMapToolTipMsg" value="[REGION](Dobbelt-klik fot at teleportere, træk for at panorere)"/> <filter_editor label="Filtrér" name="filter_input"/> <tab_container name="tabs"> <panel label="TÆT PÅ" name="nearby_panel"> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index 067463be02..0626976cb5 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml @@ -5,7 +5,9 @@ </panel.string> <slider label="Generel" name="System Volume"/> <check_box initial_value="true" name="mute_when_minimized"/> - <text name="mute_chb_label">Sluk lyd når minimeret</text> + <text name="mute_chb_label"> + Sluk lyd når minimeret + </text> <slider label="Knapper" name="UI Volume"/> <slider label="Omgivelser" name="Wind Volume"/> <slider label="Lyd effekter" name="SFX Volume"/> diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml index b8b99a9c21..db85eb23a8 100644 --- a/indra/newview/skins/default/xui/da/panel_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_profile.xml @@ -5,6 +5,12 @@ <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> + <string name="name_text_args"> + [NAME] + </string> + <string name="display_name_text_args"> + [DISPLAY_NAME] + </string> <layout_stack name="layout"> <layout_panel name="profile_stack"> <scroll_container name="profile_scroll"> @@ -19,7 +25,7 @@ <text name="title_acc_status_text" value="Konto status:"/> <text name="title_partner_text" value="Partner:"/> <panel name="partner_data_panel"> - <name_box initial_value="(henter)" name="partner_text"/> + <text initial_value="(henter)" name="partner_text"/> </panel> <text name="title_groups_text" value="Grupper:"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_script_ed.xml b/indra/newview/skins/default/xui/da/panel_script_ed.xml index 8997cab30c..3dec4bf101 100644 --- a/indra/newview/skins/default/xui/da/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/da/panel_script_ed.xml @@ -15,6 +15,9 @@ <panel.string name="Title"> Script: [NAME] </panel.string> + <panel.string name="external_editor_not_set"> + Vælg en editor ved at opsætte miljø-variablen LL_SCRIPT_EDITOR eller opsætning af Ekstern editor. + </panel.string> <menu_bar name="script_menu"> <menu label="Filer" name="File"> <menu_item_call label="Gem" name="Save"/> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index b0b4d1ccc6..afc826d6d7 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -1037,7 +1037,7 @@ </string> <string name="WornOnAttachmentPoint" value=" (båret på [ATTACHMENT_POINT])"/> <string name="ActiveGesture" value="[GESLABEL] (aktiv)"/> - <string name="Chat" value=" Chat : "/> + <string name="Chat Message" value="Chat :"/> <string name="Sound" value=" Lyd : "/> <string name="Wait" value=" --- Vent : "/> <string name="AnimFlagStop" value=" Stop Animation : "/> @@ -1819,12 +1819,6 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="accel-win-shift"> Shift+ </string> - <string name="Esc"> - Esc - </string> - <string name="Home"> - Hjem - </string> <string name="FileSaved"> Fil gemt </string> @@ -1942,6 +1936,9 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="Other"> Andet </string> + <string name="Rental"> + Leje + </string> <string name="Any"> Enhver </string> @@ -3861,7 +3858,7 @@ Krænkelsesanmeldelse <string name="Notices"> Beskeder </string> - <string name="Chat"> + <string name="Chat" value=" Chat : "> Chat </string> <string name="DeleteItems"> @@ -3873,4 +3870,348 @@ Krænkelsesanmeldelse <string name="EmptyOutfitText"> Der er ingen genstande i dette sæt </string> + <string name="ExternalEditorNotSet"> + Vælg en editor via opsætningen for Ekstern editor. + </string> + <string name="ExternalEditorNotFound"> + Kan ikke benytte deb eksterne editor der er angivet. +Prøv at omkrandse stien til editor med anførselstegn. +(f.eks. "/stil til min editor" "%s") + </string> + <string name="ExternalEditorCommandParseError"> + Fejl ved håndtering af kommando til ekstern editor. + </string> + <string name="ExternalEditorFailedToRun"> + Den eksterne editor kunne ikke startes. + </string> + <string name="Esc"> + Esc + </string> + <string name="Space"> + Space + </string> + <string name="Enter"> + Enter + </string> + <string name="Tab"> + Tab + </string> + <string name="Ins"> + Ins + </string> + <string name="Del"> + Del + </string> + <string name="Backsp"> + Backsp + </string> + <string name="Shift"> + Shift + </string> + <string name="Ctrl"> + Ctrl + </string> + <string name="Alt"> + Alt + </string> + <string name="CapsLock"> + CapsLock + </string> + <string name="Home"> + Hjem + </string> + <string name="End"> + End + </string> + <string name="PgUp"> + PgUp + </string> + <string name="PgDn"> + PgDn + </string> + <string name="F1"> + F1 + </string> + <string name="F2"> + F2 + </string> + <string name="F3"> + F3 + </string> + <string name="F4"> + F4 + </string> + <string name="F5"> + F5 + </string> + <string name="F6"> + F6 + </string> + <string name="F7"> + F7 + </string> + <string name="F8"> + F8 + </string> + <string name="F9"> + F9 + </string> + <string name="F10"> + F10 + </string> + <string name="F11"> + F11 + </string> + <string name="F12"> + F12 + </string> + <string name="Add"> + Tilføj + </string> + <string name="Subtract"> + Træk fra + </string> + <string name="Multiply"> + Multiplicer + </string> + <string name="Divide"> + Divider + </string> + <string name="PAD_DIVIDE"> + PAD_DIVIDE + </string> + <string name="PAD_LEFT"> + PAD_LEFT + </string> + <string name="PAD_RIGHT"> + PAD_RIGHT + </string> + <string name="PAD_DOWN"> + PAD_DOWN + </string> + <string name="PAD_UP"> + PAD_UP + </string> + <string name="PAD_HOME"> + PAD_HOME + </string> + <string name="PAD_END"> + PAD_END + </string> + <string name="PAD_PGUP"> + PAD_PGUP + </string> + <string name="PAD_PGDN"> + PAD_PGDN + </string> + <string name="PAD_CENTER"> + PAD_CENTER + </string> + <string name="PAD_INS"> + PAD_INS + </string> + <string name="PAD_DEL"> + PAD_DEL + </string> + <string name="PAD_Enter"> + PAD_Enter + </string> + <string name="PAD_BUTTON0"> + PAD_BUTTON0 + </string> + <string name="PAD_BUTTON1"> + PAD_BUTTON1 + </string> + <string name="PAD_BUTTON2"> + PAD_BUTTON2 + </string> + <string name="PAD_BUTTON3"> + PAD_BUTTON3 + </string> + <string name="PAD_BUTTON4"> + PAD_BUTTON4 + </string> + <string name="PAD_BUTTON5"> + PAD_BUTTON5 + </string> + <string name="PAD_BUTTON6"> + PAD_BUTTON6 + </string> + <string name="PAD_BUTTON7"> + PAD_BUTTON7 + </string> + <string name="PAD_BUTTON8"> + PAD_BUTTON8 + </string> + <string name="PAD_BUTTON9"> + PAD_BUTTON9 + </string> + <string name="PAD_BUTTON10"> + PAD_BUTTON10 + </string> + <string name="PAD_BUTTON11"> + PAD_BUTTON11 + </string> + <string name="PAD_BUTTON12"> + PAD_BUTTON12 + </string> + <string name="PAD_BUTTON13"> + PAD_BUTTON13 + </string> + <string name="PAD_BUTTON14"> + PAD_BUTTON14 + </string> + <string name="PAD_BUTTON15"> + PAD_BUTTON15 + </string> + <string name="-"> + - + </string> + <string name="="> + = + </string> + <string name="`"> + ` + </string> + <string name=";"> + ; + </string> + <string name="["> + [ + </string> + <string name="]"> + ] + </string> + <string name="\"> + \ + </string> + <string name="0"> + 0 + </string> + <string name="1"> + 1 + </string> + <string name="2"> + 2 + </string> + <string name="3"> + 3 + </string> + <string name="4"> + 4 + </string> + <string name="5"> + 5 + </string> + <string name="6"> + 6 + </string> + <string name="7"> + 7 + </string> + <string name="8"> + 8 + </string> + <string name="9"> + 9 + </string> + <string name="A"> + A + </string> + <string name="B"> + B + </string> + <string name="C"> + C + </string> + <string name="D"> + D + </string> + <string name="E"> + E + </string> + <string name="F"> + F + </string> + <string name="G"> + G + </string> + <string name="H"> + H + </string> + <string name="I"> + I + </string> + <string name="J"> + J + </string> + <string name="K"> + K + </string> + <string name="L"> + L + </string> + <string name="M"> + M + </string> + <string name="N"> + N + </string> + <string name="O"> + O + </string> + <string name="P"> + P + </string> + <string name="Q"> + Q + </string> + <string name="R"> + R + </string> + <string name="S"> + S + </string> + <string name="T"> + T + </string> + <string name="U"> + U + </string> + <string name="V"> + V + </string> + <string name="W"> + W + </string> + <string name="X"> + X + </string> + <string name="Y"> + Y + </string> + <string name="Z"> + Z + </string> + <string name="BeaconParticle"> + Viser pejlelys for for partikler (blå) + </string> + <string name="BeaconPhysical"> + Viser pejlelys for fysiske objekter (grøn) + </string> + <string name="BeaconScripted"> + Viser pejlelys for "scriptede" objekter (rød) + </string> + <string name="BeaconScriptedTouch"> + Viser pejlelys for "scriptede" objekter med berøringsfunktion (rød) + </string> + <string name="BeaconSound"> + Viser pejlelys for lyd (gul) + </string> + <string name="BeaconMedia"> + Viser pejlelys for media (hvid) + </string> + <string name="ParticleHiding"> + Skjuler partikler + </string> </strings> diff --git a/indra/newview/skins/minimal/xui/da/floater_camera.xml b/indra/newview/skins/minimal/xui/da/floater_camera.xml new file mode 100644 index 0000000000..5b7ef6db54 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/floater_camera.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="camera_floater" title=""> + <floater.string name="rotate_tooltip"> + Roter kamera omkring fokus + </floater.string> + <floater.string name="zoom_tooltip"> + Zoom kamera mod fokus + </floater.string> + <floater.string name="move_tooltip"> + Flyt kamera op og ned, til venstre og højre + </floater.string> + <floater.string name="camera_modes_title"> + Kamera valg + </floater.string> + <floater.string name="pan_mode_title"> + Kredsløb zoom panorering + </floater.string> + <floater.string name="presets_mode_title"> + Forvalg + </floater.string> + <floater.string name="free_mode_title"> + Se objekt + </floater.string> + <panel name="controls"> + <panel name="preset_views_list"> + <panel_camera_item name="front_view"> + <panel_camera_item.text name="front_view_text"> + Se forfra + </panel_camera_item.text> + </panel_camera_item> + <panel_camera_item name="group_view"> + <panel_camera_item.text name="side_view_text"> + Se fra siden + </panel_camera_item.text> + </panel_camera_item> + <panel_camera_item name="rear_view"> + <panel_camera_item.text name="rear_view_text"> + Se bagfra + </panel_camera_item.text> + </panel_camera_item> + </panel> + <panel name="camera_modes_list"> + <panel_camera_item name="object_view"> + <panel_camera_item.text name="object_view_text"> + Se fra objekt + </panel_camera_item.text> + </panel_camera_item> + <panel_camera_item name="mouselook_view"> + <panel_camera_item.text name="mouselook_view_text"> + Førsteperson + </panel_camera_item.text> + </panel_camera_item> + </panel> + <panel name="zoom" tool_tip="Zoom kamera mod fokus"> + <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera kredser rundt om fokus"/> + <slider_bar name="zoom_slider" tool_tip="Zoom kamera mod fokus"/> + <joystick_track name="cam_track_stick" tool_tip="Flyt kamera op og ned, venstre og højre"/> + </panel> + </panel> + <panel name="buttons"> + <button label="" name="presets_btn" tool_tip="Forvalg"/> + <button label="" name="pan_btn" tool_tip="Kredsløb zoom panorering"/> + <button label="" name="avatarview_btn" tool_tip="Kamera valg"/> + </panel> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml b/indra/newview/skins/minimal/xui/da/floater_help_browser.xml new file mode 100644 index 0000000000..0e2918e4e2 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/floater_help_browser.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="HVORDAN"> + <floater.string name="loading_text"> + Henter... + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="external_controls"/> + </layout_stack> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml new file mode 100644 index 0000000000..d3028c32f9 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="MEDIE VÆLGER"> + <layout_stack name="stack1"> + <layout_panel name="nav_controls"> + <button label="Tilbage" name="back"/> + <button label="Frem" name="forward"/> + <button label="Opdater" name="reload"/> + <button label="Gå til" name="go"/> + </layout_panel> + <layout_panel name="parcel_owner_controls"> + <button label="Send denne side til parcel" name="assign"/> + </layout_panel> + <layout_panel name="external_controls"> + <button label="Åben i min browser" name="open_browser"/> + <check_box label="Åben altid i min browser" name="open_always"/> + <button label="Luk" name="close"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml new file mode 100644 index 0000000000..bd17224259 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="CHAT NÆRVED"> + <check_box label="Oversæt chat (håndteret af Google)" name="translate_chat_checkbox"/> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/floater_web_content.xml b/indra/newview/skins/minimal/xui/da/floater_web_content.xml new file mode 100644 index 0000000000..74092e88ec --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/floater_web_content.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_web_content" title=""> + <layout_stack name="stack1"> + <layout_panel name="nav_controls"> + <button name="back" tool_tip="Navigér tilbage"/> + <button name="forward" tool_tip="Navigér frem"/> + <button name="stop" tool_tip="Stop navigering"/> + <button name="reload" tool_tip="Genindlæs side"/> + <combo_box name="address" tool_tip="Indtast URL her"/> + <icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/> + <button name="popexternal" tool_tip="Åben denne URL i din normale browser"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml b/indra/newview/skins/minimal/xui/da/inspect_avatar.xml new file mode 100644 index 0000000000..dc1ed562eb --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/inspect_avatar.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_avatar"> + <string name="Subtitle"> + [AGE] + </string> + <string name="Details"> + [SL_PROFILE] + </string> + <text name="user_details"> + Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse + </text> + <slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/> + <button label="Tilføj ven" name="add_friend_btn"/> + <button label="IM" name="im_btn"/> + <button label="Profil" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Slå stemme-chat fra" name="disable_voice"/> + <button label="Slå stemme-chat til" name="enable_voice"/> + </panel> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/inspect_object.xml b/indra/newview/skins/minimal/xui/da/inspect_object.xml new file mode 100644 index 0000000000..78ccc5b869 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/inspect_object.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- + Not can_close / no title to avoid window chrome + Single instance - only have one at a time, recycle it each spawn +--> +<floater name="inspect_object"> + <string name="Creator"> + Af [CREATOR] + </string> + <string name="CreatorAndOwner"> + Af [CREATOR] +Owner [OWNER] + </string> + <string name="Price"> + L$[AMOUNT] + </string> + <string name="PriceFree"> + Gratis! + </string> + <string name="Touch"> + Berør + </string> + <string name="Sit"> + Sid + </string> + <text name="object_name" value="Test objekt navn der reelt er to linier og meget lang"/> + <text name="price_text"> + L$30,000 + </text> + <text name="object_description"> + Dette er en meget lang beskrivelse af et objekt udformet så den fylder mindst 80 karakterer i længden eller endda nærmere 120 på dette sted. Man kan aldrig vide.... + </text> + <button label="Køb" name="buy_btn"/> + <button label="Betal" name="pay_btn"/> + <button label="Tag kopi" name="take_free_copy_btn"/> + <button label="Berør" name="touch_btn"/> + <button label="Sid" name="sit_btn"/> + <button label="Åben" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Sikker Browsing"/> + <button label="Mere" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml new file mode 100644 index 0000000000..1e8301dc4c --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Add Wearable Gear Menu"> + <menu_item_check label="Sortér efter nyeste" name="sort_by_most_recent"/> + <menu_item_check label="Sortér efter navn" name="sort_by_name"/> + <menu_item_check label="Sortér efter type" name="sort_by_type"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml new file mode 100644 index 0000000000..ca7b184942 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil" name="Profile..."/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Send besked" name="Send IM..."/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Invitér til gruppe" name="Invite..."/> + <menu_item_call label="Blokér" name="Avatar Mute"/> + <menu_item_call label="Rapportér" name="abuse"/> + <menu_item_call label="Frys" name="Freeze..."/> + <menu_item_call label="Smid ud" name="Eject..."/> + <menu_item_call label="Debug teksturer" name="Debug..."/> + <menu_item_call label="Zoom ind" name="Zoom In"/> + <menu_item_call label="Betal" name="Pay..."/> + <menu_item_call label="Objekt profil" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml new file mode 100644 index 0000000000..35ba27f9e2 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Berør" name="Attachment Object Touch"/> + <menu_item_call label="Redigér" name="Edit..."/> + <menu_item_call label="Tag af" name="Detach"/> + <menu_item_call label="Sid ned" name="Sit Down Here"/> + <menu_item_call label="Stå op" name="Stand Up"/> + <menu_item_call label="Udseende" name="Change Outfit"/> + <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/> + <menu_item_call label="Redigér min figur" name="Edit My Shape"/> + <menu_item_call label="Venner" name="Friends..."/> + <menu_item_call label="Grupper" name="Groups..."/> + <menu_item_call label="Profil" name="Profile..."/> + <menu_item_call label="Debug teksturer" name="Debug..."/> + <menu_item_call label="Smid" name="Drop"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml new file mode 100644 index 0000000000..26b58ce1ab --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Avatar Icon Menu"> + <menu_item_call label="Profil" name="Show Profile"/> + <menu_item_call label="Send besked..." name="Send IM"/> + <menu_item_call label="Tilføj ven..." name="Add Friend"/> + <menu_item_call label="Fjern ven..." name="Remove Friend"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml new file mode 100644 index 0000000000..a778dedf0b --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil" name="Profile..."/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Besked" name="Send IM..."/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Invitér til gruppe" name="Invite..."/> + <menu_item_call label="Blokér" name="Avatar Mute"/> + <menu_item_call label="Rapportér" name="abuse"/> + <menu_item_call label="Frys" name="Freeze..."/> + <menu_item_call label="Smid ud" name="Eject..."/> + <menu_item_call label="Debug Teksturer" name="Debug..."/> + <menu_item_call label="Zoom ind" name="Zoom In"/> + <menu_item_call label="Betal" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml new file mode 100644 index 0000000000..0080f7a59e --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="Sid ned" name="Sit Down Here"/> + <menu_item_call label="Stå op" name="Stand Up"/> + <context_menu label="Tag af" name="Take Off >"> + <context_menu label="Tøj" name="Clothes >"> + <menu_item_call label="Trøje" name="Shirt"/> + <menu_item_call label="Bukser" name="Pants"/> + <menu_item_call label="Nederdel" name="Skirt"/> + <menu_item_call label="Sko" name="Shoes"/> + <menu_item_call label="Strømper" name="Socks"/> + <menu_item_call label="Jakke" name="Jacket"/> + <menu_item_call label="Handsker" name="Gloves"/> + <menu_item_call label="Undertrøje" name="Self Undershirt"/> + <menu_item_call label="Underbukser" name="Self Underpants"/> + <menu_item_call label="Tatovering" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Alt tøj" name="All Clothes"/> + </context_menu> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Tag af" name="Object Detach"/> + <menu_item_call label="Tag alt af" name="Detach All"/> + </context_menu> + <menu_item_call label="Mit udseende" name="Chenge Outfit"/> + <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/> + <menu_item_call label="Redigér min form" name="Edit My Shape"/> + <menu_item_call label="Venner" name="Friends..."/> + <menu_item_call label="Grupper" name="Groups..."/> + <menu_item_call label="Profil" name="Profile..."/> + <menu_item_call label="Debug teksturer" name="Debug..."/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml new file mode 100644 index 0000000000..9ac296904a --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_camera_move_controls_menu"> + <menu_item_check label="Stemme aktiveret" name="EnableVoiceChat"/> + <menu_item_check label="Faste bevægelser" name="ShowGestureButton"/> + <menu_item_check label="Bevægelse knap" name="ShowMoveButton"/> + <menu_item_check label="Vis knap" name="ShowCameraButton"/> + <menu_item_check label="Foto knap" name="ShowSnapshotButton"/> + <menu_item_check label="Bygge knap" name="ShowBuildButton"/> + <menu_item_check label="Søge knap" name="ShowSearchButton"/> + <menu_item_check label="Kort knap" name="ShowWorldMapButton"/> + <menu_item_check label="Mini-Map button" name="ShowMiniMapButton"/> + <menu_item_call label="Klip" name="NearbyChatBar_Cut"/> + <menu_item_call label="Kopiér" name="NearbyChatBar_Copy"/> + <menu_item_call label="Sæt ind" name="NearbyChatBar_Paste"/> + <menu_item_call label="Slet" name="NearbyChatBar_Delete"/> + <menu_item_call label="Vælg alt" name="NearbyChatBar_Select_All"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml new file mode 100644 index 0000000000..9d7fc0f223 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Attachment"> + <menu_item_call label="Tag af" name="detach"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml new file mode 100644 index 0000000000..0e90d5a3ae --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Body"> + <menu_item_call label="Erstat" name="replace"/> + <menu_item_call label="Redigér" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml new file mode 100644 index 0000000000..16c225b7d9 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Clothing"> + <menu_item_call label="Tag af" name="take_off"/> + <menu_item_call label="Redigér" name="edit"/> + <menu_item_call label="Erstat" name="replace"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml new file mode 100644 index 0000000000..f44369fd84 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear COF"> + <menu label="Nyt tøj" name="COF.Gear.New_Clothes"/> + <menu label="Nye kropsdele" name="COF.Geear.New_Body_Parts"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_edit.xml b/indra/newview/skins/minimal/xui/da/menu_edit.xml new file mode 100644 index 0000000000..3752f42b1c --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_edit.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu label="Redigér" name="Edit"> + <menu_item_call label="Fortryd" name="Undo"/> + <menu_item_call label="Gendan" name="Redo"/> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Duplikér" name="Duplicate"/> + <menu_item_call label="Marker alt" name="Select All"/> + <menu_item_call label="Fjern markering" name="Deselect"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_favorites.xml b/indra/newview/skins/minimal/xui/da/menu_favorites.xml new file mode 100644 index 0000000000..a4793e294c --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_favorites.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Teleportér" name="Teleport To Landmark"/> + <menu_item_call label="Vis/ret landemærke" name="Landmark Open"/> + <menu_item_call label="Kopiér SLurl" name="Copy slurl"/> + <menu_item_call label="Vis på kort" name="Show On Map"/> + <menu_item_call label="Kopiér" name="Landmark Copy"/> + <menu_item_call label="Sæt ind" name="Landmark Paste"/> + <menu_item_call label="Slet" name="Delete"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml new file mode 100644 index 0000000000..a9010e99b6 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gesture_gear"> + <menu_item_call label="Tilføj/fjern fra favoritter" name="activate"/> + <menu_item_call label="Kopiér" name="copy_gesture"/> + <menu_item_call label="Sæt ind" name="paste"/> + <menu_item_call label="Kopiér UUID" name="copy_uuid"/> + <menu_item_call label="Gem til nuværende sæt" name="save_to_outfit"/> + <menu_item_call label="Editér" name="edit_gesture"/> + <menu_item_call label="Undersøg" name="inspect"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml b/indra/newview/skins/minimal/xui/da/menu_group_plus.xml new file mode 100644 index 0000000000..97fbec1ed1 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_group_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Meld ind i gruppe..." name="item_join"/> + <menu_item_call label="Ny gruppe..." name="item_new"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml new file mode 100644 index 0000000000..d96a8a8a17 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="hide_navbar_menu"> + <menu_item_check label="Vis navigationsbjælke" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Vis favoritbjælke" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="Vis min lokation bjælke" name="ShowMiniLocationPanel"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml new file mode 100644 index 0000000000..4889230919 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="IM Well Button Context Menu"> + <menu_item_call label="Luk alle" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml new file mode 100644 index 0000000000..f64a6ad455 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="Afslut" name="End Session"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml new file mode 100644 index 0000000000..b89d9a5789 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet Group Menu"> + <menu_item_call label="Gruppe info" name="Show Profile"/> + <menu_item_call label="Vis session" name="Chat"/> + <menu_item_call label="Afslut session" name="End Session"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml new file mode 100644 index 0000000000..6ebc40a8dd --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet P2P Menu"> + <menu_item_call label="Profil" name="Show Profile"/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Vis session" name="Send IM"/> + <menu_item_call label="Afslut session" name="End Session"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml new file mode 100644 index 0000000000..8da35adb1b --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<toggleable_menu name="Gear Menu"> + <menu_item_call label="Profil" name="view_profile"/> + <menu_item_call label="Tilføj ven" name="add_friend"/> + <menu_item_call label="Besked" name="im"/> + <menu_item_call label="Opkald" name="call"/> + <menu_item_call label="Teleportér" name="teleport"/> + <menu_item_call label="Invitér til gruppe" name="invite_to_group"/> + <menu_item_call label="Blokér" name="block"/> + <menu_item_call label="Fjern blokering" name="unblock"/> + <menu_item_call label="Rapportér" name="report"/> + <menu_item_call label="Frys" name="freeze"/> + <menu_item_call label="Smid ud" name="eject"/> + <menu_item_call label="Spark" name="kick"/> + <menu_item_call label="CSR" name="csr"/> + <menu_item_call label="Debug teksturer" name="debug"/> + <menu_item_call label="Find på kort" name="find_on_map"/> + <menu_item_call label="Zoom ind" name="zoom_in"/> + <menu_item_call label="Betal" name="pay"/> + <menu_item_call label="Del" name="share"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml new file mode 100644 index 0000000000..e28842836d --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Berør" name="touch"/> + <menu_item_call label="Sid her" name="sit"/> + <menu_item_call label="betal" name="pay"/> + <menu_item_call label="Køb" name="buy"/> + <menu_item_call label="Tag" name="take"/> + <menu_item_call label="tag kopi" name="take_copy"/> + <menu_item_call label="Åben" name="open"/> + <menu_item_call label="Redigér" name="edit"/> + <menu_item_call label="Tag på" name="wear"/> + <menu_item_call label="Tilføj" name="add"/> + <menu_item_call label="Rapportér" name="report"/> + <menu_item_call label="Blokér" name="block"/> + <menu_item_call label="Zoom ind" name="zoom_in"/> + <menu_item_call label="Fjern" name="remove"/> + <menu_item_call label="Mere info" name="more_info"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml new file mode 100644 index 0000000000..887c6484bc --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="Gear Menu"> + <menu_item_call label="Sid ned" name="Sit Down Here"/> + <menu_item_call label="Stå op" name="Stand Up"/> + <context_menu label="Tag af" name="Take Off >"> + <context_menu label="Tøj" name="Clothes >"> + <menu_item_call label="Trøje" name="Shirt"/> + <menu_item_call label="Bukser" name="Pants"/> + <menu_item_call label="Nederdel" name="Skirt"/> + <menu_item_call label="Sko" name="Shoes"/> + <menu_item_call label="Strømper" name="Socks"/> + <menu_item_call label="Jakke" name="Jacket"/> + <menu_item_call label="Handsker" name="Gloves"/> + <menu_item_call label="Undertrøje" name="Self Undershirt"/> + <menu_item_call label="Underbukser" name="Self Underpants"/> + <menu_item_call label="Tatovering" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Alt tøj" name="All Clothes"/> + </context_menu> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Tag af" name="Object Detach"/> + <menu_item_call label="Tag alt af" name="Detach All"/> + </context_menu> + <menu_item_call label="Skift sæt" name="Chenge Outfit"/> + <menu_item_call label="Redigér sæt" name="Edit Outfit"/> + <menu_item_call label="Redigér min figur" name="Edit My Shape"/> + <menu_item_call label="Mine venner" name="Friends..."/> + <menu_item_call label="Mine grupper" name="Groups..."/> + <menu_item_call label="Min profil" name="Profile..."/> + <menu_item_call label="Debug teksturer" name="Debug..."/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml new file mode 100644 index 0000000000..c3b03232bf --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="InvOfferChiclet Menu"> + <menu_item_call label="Luk" name="Close"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_inventory.xml new file mode 100644 index 0000000000..35551318d1 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inventory.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Køb" name="Task Buy"/> + <menu_item_call label="åben" name="Task Open"/> + <menu_item_call label="Afspil" name="Task Play"/> + <menu_item_call label="Egenskaber" name="Task Properties"/> + <menu_item_call label="Omdøb" name="Task Rename"/> + <menu_item_call label="Slet" name="Task Remove"/> + <menu_item_call label="Tøm papirkurv" name="Empty Trash"/> + <menu_item_call label="Tøm 'Lost and found'" name="Empty Lost And Found"/> + <menu_item_call label="Ny mappe" name="New Folder"/> + <menu_item_call label="Nyt script" name="New Script"/> + <menu_item_call label="Ny note" name="New Note"/> + <menu_item_call label="Ny bevægelse" name="New Gesture"/> + <menu label="Nyt tøj" name="New Clothes"> + <menu_item_call label="Ny trøje" name="New Shirt"/> + <menu_item_call label="Nye bukser" name="New Pants"/> + <menu_item_call label="Nye sko" name="New Shoes"/> + <menu_item_call label="Nye strømper" name="New Socks"/> + <menu_item_call label="Ny jakke" name="New Jacket"/> + <menu_item_call label="Ny nederdel" name="New Skirt"/> + <menu_item_call label="Nye handsker" name="New Gloves"/> + <menu_item_call label="Ny undertrøje" name="New Undershirt"/> + <menu_item_call label="Nye underbukser" name="New Underpants"/> + <menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/> + <menu_item_call label="Ny tatovering" name="New Tattoo"/> + </menu> + <menu label="Nye kropsdele" name="New Body Parts"> + <menu_item_call label="Ny figur" name="New Shape"/> + <menu_item_call label="Nyt hud" name="New Skin"/> + <menu_item_call label="Nyt hår" name="New Hair"/> + <menu_item_call label="Nye øjne" name="New Eyes"/> + </menu> + <menu label="Ændre type" name="Change Type"> + <menu_item_call label="Standard" name="Default"/> + <menu_item_call label="Handsker" name="Gloves"/> + <menu_item_call label="Jakke" name="Jacket"/> + <menu_item_call label="Bukser" name="Pants"/> + <menu_item_call label="Kropsbygning" name="Shape"/> + <menu_item_call label="Sko" name="Shoes"/> + <menu_item_call label="Trøje" name="Shirt"/> + <menu_item_call label="Nederdel" name="Skirt"/> + <menu_item_call label="Underbukser" name="Underpants"/> + <menu_item_call label="Undertrøje" name="Undershirt"/> + </menu> + <menu_item_call label="Teleport" name="Landmark Open"/> + <menu_item_call label="åben" name="Animation Open"/> + <menu_item_call label="åben" name="Sound Open"/> + <menu_item_call label="Erstat påklædning" name="Replace Outfit"/> + <menu_item_call label="Tilføj til påklædning" name="Add To Outfit"/> + <menu_item_call label="Slet ting" name="Purge Item"/> + <menu_item_call label="Genskab ting" name="Restore Item"/> + <menu_item_call label="åben" name="Open"/> + <menu_item_call label="Åben original" name="Open Original"/> + <menu_item_call label="Egenskaber" name="Properties"/> + <menu_item_call label="Omdøb" name="Rename"/> + <menu_item_call label="Kopiér asset UUID" name="Copy Asset UUID"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Indsæt" name="Paste"/> + <menu_item_call label="Sæt ind som link" name="Paste As Link"/> + <menu_item_call label="Slet" name="Remove Link"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Slet systemfolder" name="Delete System Folder"/> + <menu_item_call label="start konference chat" name="Conference Chat Folder"/> + <menu_item_call label="Afspil" name="Sound Play"/> + <menu_item_call label="Om landemærke" name="About Landmark"/> + <menu_item_call label="Afspil i verden" name="Animation Play"/> + <menu_item_call label="Afspil lokalt" name="Animation Audition"/> + <menu_item_call label="Send privat besked (IM)" name="Send Instant Message"/> + <menu_item_call label="Tilbyd teleport..." name="Offer Teleport..."/> + <menu_item_call label="start konference Chat" name="Conference Chat"/> + <menu_item_call label="Aktivér" name="Activate"/> + <menu_item_call label="Deaktivér" name="Deactivate"/> + <menu_item_call label="Gem som" name="Save As"/> + <menu_item_call label="Tag af dig selv" name="Detach From Yourself"/> + <menu_item_call label="Tag på" name="Wearable And Object Wear"/> + <menu label="Vedhæft" name="Attach To"/> + <menu label="Vedhæft til HUD" name="Attach To HUD"/> + <menu_item_call label="Redigér" name="Wearable Edit"/> + <menu_item_call label="Tilføj" name="Wearable Add"/> + <menu_item_call label="Tag af" name="Take Off"/> + <menu_item_call label="--ingen valg--" name="--no options--"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml new file mode 100644 index 0000000000..07f70d7190 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="Hent" name="upload"> + <menu_item_call label="Billede (L$[COST])..." name="Upload Image"/> + <menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Hent mange (L$[COST] pr. fil)..." name="Bulk Upload"/> + <menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/> + </menu> + <menu_item_call label="Ny mappe" name="New Folder"/> + <menu_item_call label="Nyt script" name="New Script"/> + <menu_item_call label="Ny note" name="New Note"/> + <menu_item_call label="Ny bevægelse" name="New Gesture"/> + <menu label="Nyt tøj" name="New Clothes"> + <menu_item_call label="Ny trøje" name="New Shirt"/> + <menu_item_call label="Nye bukser" name="New Pants"/> + <menu_item_call label="Nye sko" name="New Shoes"/> + <menu_item_call label="Nye strømper" name="New Socks"/> + <menu_item_call label="Ny jakke" name="New Jacket"/> + <menu_item_call label="Ny nederdel" name="New Skirt"/> + <menu_item_call label="Nye handsker" name="New Gloves"/> + <menu_item_call label="Ny undertrøje" name="New Undershirt"/> + <menu_item_call label="Nye underbukser" name="New Underpants"/> + <menu_item_call label="Nyt alpha lag" name="New Alpha"/> + <menu_item_call label="Ny tatovering" name="New Tattoo"/> + </menu> + <menu label="Nye kropsdele" name="New Body Parts"> + <menu_item_call label="Ny kropsbygning" name="New Shape"/> + <menu_item_call label="Ny hud" name="New Skin"/> + <menu_item_call label="Nyt hår" name="New Hair"/> + <menu_item_call label="Nye øjne" name="New Eyes"/> + </menu> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml new file mode 100644 index 0000000000..4809b24463 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_gear_default"> + <menu_item_call label="Nyt vindue" name="new_window"/> + <menu_item_check label="Sortér efter navn" name="sort_by_name"/> + <menu_item_check label="Sortér efter nyeste" name="sort_by_recent"/> + <menu_item_check label="Sortér altid mapper efter navn" name="sort_folders_by_name"/> + <menu_item_check label="Vis System mapper øverst" name="sort_system_folders_to_top"/> + <menu_item_call label="Vis filtre" name="show_filters"/> + <menu_item_call label="Nulstil filtre" name="reset_filters"/> + <menu_item_call label="Luk alle mapper" name="close_folders"/> + <menu_item_call label="Tøm "fundne genstande"" name="empty_lostnfound"/> + <menu_item_call label="Gem tekstur som" name="Save Texture As"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Find original" name="Find Original"/> + <menu_item_call label="Find alle links" name="Find All Links"/> + <menu_item_call label="Tøm papirkurv" name="empty_trash"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_land.xml b/indra/newview/skins/minimal/xui/da/menu_land.xml new file mode 100644 index 0000000000..1548f18f89 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="Om land" name="Place Information..."/> + <menu_item_call label="Sid her" name="Sit Here"/> + <menu_item_call label="Køb" name="Land Buy"/> + <menu_item_call label="Køb adgang" name="Land Buy Pass"/> + <menu_item_call label="Byg" name="Create"/> + <menu_item_call label="Tilpas terræn" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_landmark.xml new file mode 100644 index 0000000000..3cf2ffe375 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_landmark.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="landmark_overflow_menu"> + <menu_item_call label="Kopiér SLurl" name="copy"/> + <menu_item_call label="Slet" name="delete"/> + <menu_item_call label="Opret favorit" name="pick"/> + <menu_item_call label="Tilføj til favorit bjælke" name="add_to_favbar"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_login.xml b/indra/newview/skins/minimal/xui/da/menu_login.xml new file mode 100644 index 0000000000..0b7a5040ae --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_login.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Login Menu"> + <menu label="Mig" name="File"> + <menu_item_call label="Indstillinger" name="Preferences..."/> + <menu_item_call label="Afslut [APP_NAME]" name="Quit"/> + </menu> + <menu label="Hjælp" name="Help"> + <menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/> + <menu_item_call label="Om [APP_NAME]" name="About Second Life"/> + </menu> + <menu_item_check label="Vis debug menu" name="Show Debug Menu"/> + <menu label="Debug" name="Debug"> + <menu_item_call label="Vis debug opsætning" name="Debug Settings"/> + <menu_item_call label="UI/farve opsætning" name="UI/Color Settings"/> + <menu label="UI tests" name="UI Tests"/> + <menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/> + <menu_item_call label="Vis betingelser" name="TOS"/> + <menu_item_call label="Vis vigtig besked" name="Critical"/> + <menu_item_call label="Media Browser Test" name="Web Browser Test"/> + <menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/> + <menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/> + <menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/> + </menu> +</menu_bar> diff --git a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml b/indra/newview/skins/minimal/xui/da/menu_mini_map.xml new file mode 100644 index 0000000000..186dbd476a --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_mini_map.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Zoom tæt" name="Zoom Close"/> + <menu_item_call label="Zoom mellem" name="Zoom Medium"/> + <menu_item_call label="Zoom langt" name="Zoom Far"/> + <menu_item_call label="Zoom standard" name="Zoom Default"/> + <menu_item_check label="Rotér kort" name="Rotate Map"/> + <menu_item_check label="Auto centrér" name="Auto Center"/> + <menu_item_call label="Fjern ref." name="Stop Tracking"/> + <menu_item_call label="Verdenskort" name="World Map"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_navbar.xml new file mode 100644 index 0000000000..c04206824a --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_navbar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Navbar Menu"> + <menu_item_check label="Vis koordinater" name="Show Coordinates"/> + <menu_item_check label="Vis oplysninger om parcel" name="Show Parcel Properties"/> + <menu_item_call label="Landemærke" name="Landmark"/> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Vælg alt" name="Select All"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml new file mode 100644 index 0000000000..be532ad406 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="NearBy Chat Menu"> + <menu_item_call label="Vis personer tæt på..." name="nearby_people"/> + <menu_item_check label="Vis blokeret tekst" name="muted_text"/> + <menu_item_check label="Vis venne-ikoner" name="show_buddy_icons"/> + <menu_item_check label="Vis navne" name="show_names"/> + <menu_item_check label="Vis ikoner og navne" name="show_icons_and_names"/> + <menu_item_call label="Font størrelse" name="font_size"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml new file mode 100644 index 0000000000..40b35b5fdd --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Notification Well Button Context Menu"> + <menu_item_call label="Luk alle" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_object.xml b/indra/newview/skins/minimal/xui/da/menu_object.xml new file mode 100644 index 0000000000..ba62ccf90c --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_object.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Berør" name="Object Touch"> + <menu_item_call.on_enable name="EnableTouch" parameter="Berør"/> + </menu_item_call> + <menu_item_call label="Redigér" name="Edit..."/> + <menu_item_call label="Byg" name="Build"/> + <menu_item_call label="Åben" name="Open"/> + <menu_item_call label="Sid her" name="Object Sit"/> + <menu_item_call label="Stå op" name="Object Stand Up"/> + <menu_item_call label="Objekt profil" name="Object Inspect"/> + <menu_item_call label="Zoom In" name="Zoom In"/> + <context_menu label="Tag på" name="Put On"> + <menu_item_call label="Tag på" name="Wear"/> + <menu_item_call label="Tilføj" name="Add"/> + <context_menu label="Vedhæft" name="Object Attach"/> + <context_menu label="Vedhæft HUD" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Administrér" name="Remove"> + <menu_item_call label="Rapportér misbrug" name="Report Abuse..."/> + <menu_item_call label="Blokér" name="Object Mute"/> + <menu_item_call label="Returnér" name="Return..."/> + </context_menu> + <menu_item_call label="Tag" name="Pie Object Take"/> + <menu_item_call label="Tag kopi" name="Take Copy"/> + <menu_item_call label="Betal" name="Pay..."/> + <menu_item_call label="Køb" name="Buy..."/> + <menu_item_call label="Slet" name="Delete"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml b/indra/newview/skins/minimal/xui/da/menu_object_icon.xml new file mode 100644 index 0000000000..08aeb633b6 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_object_icon.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Object Icon Menu"> + <menu_item_call label="Objekt Profil..." name="Object Profile"/> + <menu_item_call label="Blokér..." name="Block"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml new file mode 100644 index 0000000000..8b4c776496 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Outfit"> + <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear"/> + <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/> + <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/> + <menu label="Nyt tøj" name="New Clothes"> + <menu_item_call label="Ny trøje" name="New Shirt"/> + <menu_item_call label="Nye bukser" name="New Pants"/> + <menu_item_call label="Nye sko" name="New Shoes"/> + <menu_item_call label="Nye strømper" name="New Socks"/> + <menu_item_call label="Ny jakke" name="New Jacket"/> + <menu_item_call label="Ny nederdel" name="New Skirt"/> + <menu_item_call label="Nye handsker" name="New Gloves"/> + <menu_item_call label="Ny undertrøje" name="New Undershirt"/> + <menu_item_call label="Nye underbukser" name="New Underpants"/> + <menu_item_call label="Ny alpha" name="New Alpha"/> + <menu_item_call label="Ny tatovering" name="New Tattoo"/> + </menu> + <menu label="Nye kropsdele" name="New Body Parts"> + <menu_item_call label="Ny figur" name="New Shape"/> + <menu_item_call label="Nyt hud" name="New Skin"/> + <menu_item_call label="Nyt hår" name="New Hair"/> + <menu_item_call label="Nye øjne" name="New Eyes"/> + </menu> + <menu_item_call label="Omdøb sæt" name="rename"/> + <menu_item_call label="Slet sæt" name="delete_outfit"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml new file mode 100644 index 0000000000..d6a6f2724f --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit"> + <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear_replace"/> + <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/> + <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/> + <menu_item_call label="Redigér sæt" name="edit"/> + <menu_item_call label="Omdøb sæt" name="rename"/> + <menu_item_call label="Slet sæt" name="delete"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml b/indra/newview/skins/minimal/xui/da/menu_participant_list.xml new file mode 100644 index 0000000000..5951d3ffb9 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_participant_list.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <menu_item_check label="Sortér efter navn" name="SortByName"/> + <menu_item_check label="Sortér efter nylige talere" name="SortByRecentSpeakers"/> + <menu_item_call label="Profil" name="View Profile"/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Send besked" name="IM"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Betal" name="Pay"/> + <menu_item_check label="Se person ikoner" name="View Icons"/> + <menu_item_check label="Blokér stemme" name="Block/Unblock"/> + <menu_item_check label="Blokér tekst" name="MuteText"/> + <context_menu label="Moderator valg" name="Moderator Options"> + <menu_item_check label="Tillad tekst chat" name="AllowTextChat"/> + <menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Fjern slukning for denne deltager" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Sluk lyd for alle" name="ModerateVoiceMute"/> + <menu_item_call label="Tænd lyd for alle" name="ModerateVoiceUnmute"/> + </context_menu> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml new file mode 100644 index 0000000000..32c5e6a6c7 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Sortér efter navn" name="sort_name"/> + <menu_item_check label="Sortér efter status" name="sort_status"/> + <menu_item_check label="Vis person ikoner" name="view_icons"/> + <menu_item_check label="Vis tildelte rettigheder" name="view_permissions"/> + <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups.xml new file mode 100644 index 0000000000..841f58b619 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_groups.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Se info" name="View Info"/> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Aktivér" name="Activate"/> + <menu_item_call label="Forlad" name="Leave"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml new file mode 100644 index 0000000000..0b9a791530 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Vis gruppe ikoner" name="Display Group Icons"/> + <menu_item_call label="Forlad valgte gruppe" name="Leave Selected Group"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml new file mode 100644 index 0000000000..5470c32761 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Profil" name="View Profile"/> + <menu_item_call label="Tilføj ven" name="Add Friend"/> + <menu_item_call label="Fjern ven" name="Remove Friend"/> + <menu_item_call label="Besked" name="IM"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Kort" name="Map"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Betal" name="Pay"/> + <menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/> + <menu_item_call label="Tilbyd teleport" name="teleport"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml new file mode 100644 index 0000000000..9318a0e340 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Tilføj venner" name="Add Friends"/> + <menu_item_call label="Fjern venner" name="Remove Friend"/> + <menu_item_call label="Besked" name="IM"/> + <menu_item_call label="Opkald" name="Call"/> + <menu_item_call label="Del" name="Share"/> + <menu_item_call label="Betal" name="Pay"/> + <menu_item_call label="tilbyd teleport" name="teleport"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml new file mode 100644 index 0000000000..2f35ff3c92 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Sortér efter tidligere talere" name="sort_by_recent_speakers"/> + <menu_item_check label="Sortér efter navn" name="sort_name"/> + <menu_item_check label="Sortér efter afstand" name="sort_distance"/> + <menu_item_check label="Se ikoner for personer" name="view_icons"/> + <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml new file mode 100644 index 0000000000..d081f637f2 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_check label="Sortér efter nyeste" name="sort_most"/> + <menu_item_check label="Sortér efter navn" name="sort_name"/> + <menu_item_check label="Vis person ikoner" name="view_icons"/> + <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_picks.xml b/indra/newview/skins/minimal/xui/da/menu_picks.xml new file mode 100644 index 0000000000..81ee900773 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_picks.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Picks"> + <menu_item_call label="Info" name="pick_info"/> + <menu_item_call label="Redigér" name="pick_edit"/> + <menu_item_call label="Teleportér" name="pick_teleport"/> + <menu_item_call label="Vis på kort" name="pick_map"/> + <menu_item_call label="Slet" name="pick_delete"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml new file mode 100644 index 0000000000..d95071fbbb --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="picks_plus_menu"> + <menu_item_call label="Ny favorit" name="create_pick"/> + <menu_item_call label="Ny annonce" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_place.xml b/indra/newview/skins/minimal/xui/da/menu_place.xml new file mode 100644 index 0000000000..b87964ac14 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_place.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="place_overflow_menu"> + <menu_item_call label="Opret et landemærke" name="landmark"/> + <menu_item_call label="Opret favorit" name="pick"/> + <menu_item_call label="Køb adgang" name="pass"/> + <menu_item_call label="Redigér" name="edit"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml new file mode 100644 index 0000000000..7ad2253550 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_folder_gear"> + <menu_item_call label="Opret mappe" name="add_folder"/> + <menu_item_call label="Tilføj landemærke" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml new file mode 100644 index 0000000000..5f573c2363 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_folder_gear"> + <menu_item_call label="Tilføj landemærke" name="add_landmark"/> + <menu_item_call label="Tilføj mappe" name="add_folder"/> + <menu_item_call label="Gendan genstand" name="restore_item"/> + <menu_item_call label="Klip" name="cut"/> + <menu_item_call label="Kopiér" name="copy_folder"/> + <menu_item_call label="Sæt ind" name="paste"/> + <menu_item_call label="Omdøb" name="rename"/> + <menu_item_call label="Slet" name="delete"/> + <menu_item_call label="Udvid" name="expand"/> + <menu_item_call label="Luk" name="collapse"/> + <menu_item_call label="Udvid alle mapper" name="expand_all"/> + <menu_item_call label="Luk alle mapper" name="collapse_all"/> + <menu_item_check label="Sortér efter dato" name="sort_by_date"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml new file mode 100644 index 0000000000..13dbcdd42e --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="menu_ladmark_gear"> + <menu_item_call label="Teleportér" name="teleport"/> + <menu_item_call label="Mere information" name="more_info"/> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <menu_item_call label="Tilføj landemærke" name="add_landmark"/> + <menu_item_call label="Tilføj mappe" name="add_folder"/> + <menu_item_call label="Gendan genstand" name="restore_item"/> + <menu_item_call label="Klip" name="cut"/> + <menu_item_call label="Kopiér landemærke" name="copy_landmark"/> + <menu_item_call label="Kopiér SLurl" name="copy_slurl"/> + <menu_item_call label="Sæt ind" name="paste"/> + <menu_item_call label="Omdøb" name="rename"/> + <menu_item_call label="Slet" name="delete"/> + <menu_item_call label="Åben alle mapper" name="expand_all"/> + <menu_item_call label="Luk alle mapper" name="collapse_all"/> + <menu_item_check label="Sortér efter dato" name="sort_by_date"/> + <menu_item_call label="Opret favorit" name="create_pick"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml new file mode 100644 index 0000000000..6745007c99 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="Kort" name="show_on_map"/> + <menu_item_call label="Betal" name="pay"/> + <menu_item_call label="Del" name="share"/> + <menu_item_call label="Blokér" name="block"/> + <menu_item_call label="Fjern blokering" name="unblock"/> + <menu_item_call label="Spark" name="kick"/> + <menu_item_call label="Frys" name="freeze"/> + <menu_item_call label="Fjern frys" name="unfreeze"/> + <menu_item_call label="Kundeservicemedarbejder (CSR)" name="csr"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml new file mode 100644 index 0000000000..188229b586 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="save_outfit_menu"> + <menu_item_call label="Gem" name="save_outfit"/> + <menu_item_call label="Gem som" name="save_as_new_outfit"/> +</toggleable_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml new file mode 100644 index 0000000000..cdd3212373 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="ScriptChiclet Menu"> + <menu_item_call label="Luk" name="Close"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_slurl.xml new file mode 100644 index 0000000000..a9302e111e --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_slurl.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Om URL" name="about_url"/> + <menu_item_call label="Teleportér til URL" name="teleport_to_url"/> + <menu_item_call label="Kort" name="show_on_map"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml new file mode 100644 index 0000000000..a1c25fea69 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Teleport History Gear Context Menu"> + <menu_item_call label="Udvid alle mapper" name="Expand all folders"/> + <menu_item_call label="Luk alle mapper" name="Collapse all folders"/> + <menu_item_call label="Nulstil teleport historik" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml new file mode 100644 index 0000000000..dbaec62087 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Teleportér" name="Teleport"/> + <menu_item_call label="Mere information" name="More Information"/> + <menu_item_call label="Kopiér til udklipsholder" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml new file mode 100644 index 0000000000..c4d4bb4b5b --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Teleport History Item Context Menu"> + <menu_item_call label="Åben" name="TabOpen"/> + <menu_item_call label="Luk" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml b/indra/newview/skins/minimal/xui/da/menu_text_editor.xml new file mode 100644 index 0000000000..3ff31ea232 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_text_editor.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Text editor context menu"> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Vælg alt" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml new file mode 100644 index 0000000000..08d1c25d6f --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_topinfobar"> + <menu_item_check label="Vis koordinater" name="Show Coordinates"/> + <menu_item_check label="Vis egenskaber for parcel" name="Show Parcel Properties"/> + <menu_item_call label="Landemærke" name="Landmark"/> + <menu_item_call label="Kopi" name="Copy"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml b/indra/newview/skins/minimal/xui/da/menu_url_agent.xml new file mode 100644 index 0000000000..491586f3b4 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_agent.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis beboer profil" name="show_agent"/> + <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_group.xml b/indra/newview/skins/minimal/xui/da/menu_url_group.xml new file mode 100644 index 0000000000..c776159b0a --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_group.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis gruppeinformation" name="show_group"/> + <menu_item_call label="Kopiér gruppe til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_http.xml b/indra/newview/skins/minimal/xui/da/menu_url_http.xml new file mode 100644 index 0000000000..4398777a39 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_http.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Indlæs" name="url_open"/> + <menu_item_call label="Åben i intern browser" name="url_open_internal"/> + <menu_item_call label="Åben i ekstern browser" name="url_open_external"/> + <menu_item_call label="Kopiér URL til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml new file mode 100644 index 0000000000..9a7de23e06 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis beholdningsgenstand" name="show_item"/> + <menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_map.xml b/indra/newview/skins/minimal/xui/da/menu_url_map.xml new file mode 100644 index 0000000000..ff4a4d5174 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_map.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <menu_item_call label="Teleport til lokation" name="teleport_to_location"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml new file mode 100644 index 0000000000..e27cf84959 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis objekt information" name="show_object"/> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <menu_item_call label="Teleportér til objekt lokation" name="teleport_to_object"/> + <menu_item_call label="Kopiér objekt navn til udklipsholder" name="url_copy_label"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml new file mode 100644 index 0000000000..0f21e14f66 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis information om parcel" name="show_parcel"/> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml new file mode 100644 index 0000000000..dd25db2aa7 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Kør denne kommando" name="run_slapp"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml new file mode 100644 index 0000000000..8d84a138bb --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Vis information" name="show_place"/> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <menu_item_call label="Teleportér til lokation" name="teleport_to_location"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml new file mode 100644 index 0000000000..e0ca7b920d --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Url Popup"> + <menu_item_call label="Teleport" name="teleport"/> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_viewer.xml b/indra/newview/skins/minimal/xui/da/menu_viewer.xml new file mode 100644 index 0000000000..93b247f841 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_viewer.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu_bar name="Main Menu"> + <menu label="Hjælp" name="Help"> + <menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> + </menu> + <menu label="Avanceret" name="Advanced"> + <menu label="Shortcuts" name="Shortcuts"> + <menu_item_check label="Flyv" name="Fly"/> + <menu_item_call label="Luk vindue" name="Close Window"/> + <menu_item_call label="Luk alle vinduer" name="Close All Windows"/> + <menu_item_call label="Nulstil udsyn" name="Reset View"/> + </menu> + </menu> +</menu_bar> diff --git a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml new file mode 100644 index 0000000000..63f4b0b388 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit Wearable Context Menu"> + <menu_item_call label="Erstat" name="wear_replace"/> + <menu_item_call label="Tag på" name="wear_wear"/> + <menu_item_call label="Tilføj" name="wear_add"/> + <menu_item_call label="Tag af" name="take_off_or_detach"/> + <menu_item_call label="Tag af" name="detach"/> + <context_menu label="Vedhæft til" name="wearable_attach_to"/> + <context_menu label="Vedhæft til HUD" name="wearable_attach_to_hud"/> + <menu_item_call label="Tag af" name="take_off"/> + <menu_item_call label="Redigér" name="edit"/> + <menu_item_call label="Genstandsprofil" name="object_profile"/> + <menu_item_call label="Vis original" name="show_original"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml new file mode 100644 index 0000000000..515a15b287 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Wearing"> + <menu_item_call label="Redigér sæt" name="edit"/> + <menu_item_call label="Tag af" name="takeoff"/> +</menu> diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml new file mode 100644 index 0000000000..c0db7b6842 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Wearing"> + <menu_item_call label="Tag af" name="take_off"/> + <menu_item_call label="Tag af" name="detach"/> + <menu_item_call label="Redigér sæt" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/minimal/xui/da/notifications.xml b/indra/newview/skins/minimal/xui/da/notifications.xml new file mode 100644 index 0000000000..0d2aaf45ce --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/notifications.xml @@ -0,0 +1,1833 @@ +<?xml version="1.0" encoding="utf-8"?> +<notifications> + <global name="skipnexttime"> + Vis ikke dette igen + </global> + <global name="alwayschoose"> + Vælg altid dette + </global> + <global name="implicitclosebutton"> + Luk + </global> + <template name="okbutton"> + <form> + <button name="OK_okbutton" text="$yestext"/> + </form> + </template> + <template name="okignore"> + <form> + <button name="OK_okignore" text="$yestext"/> + </form> + </template> + <template name="okcancelbuttons"> + <form> + <button name="OK_okcancelbuttons" text="$yestext"/> + <button name="Cancel_okcancelbuttons" text="$notext"/> + </form> + </template> + <template name="okcancelignore"> + <form> + <button name="OK_okcancelignore" text="$yestext"/> + <button name="Cancel_okcancelignore" text="$notext"/> + </form> + </template> + <template name="okhelpbuttons"> + <form> + <button name="OK_okhelpbuttons" text="$yestext"/> + <button name="Help" text="$helptext"/> + </form> + </template> + <template name="yesnocancelbuttons"> + <form> + <button name="Yes" text="$yestext"/> + <button name="No" text="$notext"/> + <button name="Cancel_yesnocancelbuttons" text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Ukendt notificeringsbesked" name="MissingAlert"> + Din version af [APP_NAME] kan ikke vise den besked den lige modtog. Undersøg venligst at du har den nyester version af klienten installeret. + +Fejl detaljer: Beskeden kaldet '[_NAME]' blev ikke fundet i notifications.xml. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FloaterNotFound"> + Floater error: Kunne ikke finde følgende kontrol: + +[CONTROLS] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TutorialNotFound"> + Der er i øjeblikket ingen tilgængelig guide. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GenericAlert"> + [MESSAGE] + </notification> + <notification name="GenericAlertYesCancel"> + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ja"/> + </notification> + <notification name="BadInstallation"> + Der opstod en fejl ved opdatering af [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LoginFailedNoNetwork"> + Kunne ikke tilslutte til [SECOND_LIFE_GRID]. + '[DIAGNOSTIC]' +Check at Internet forbindelsen fungerer korrekt. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="MessageTemplateNotFound"> + Besked template [PATH] kunne ikke findes. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="WearableSave"> + Gem ændringer til nuværende tøj/krops del? + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem ikke" yestext="Gem"/> + </notification> + <notification name="CompileQueueSaveText"> + Der var problemer med upload af teksten til et script af følgende årsager: [REASON]. Prøv igen senere. + </notification> + <notification name="CompileQueueSaveBytecode"> + Der var problemer med at uploade den kompileret script af følgende årsager: [REASON]. Prøv igen senere. + </notification> + <notification name="WriteAnimationFail"> + Der var et problem med skrivning af animations data. Prøv igen senere. + </notification> + <notification name="UploadAuctionSnapshotFail"> + Der var problemer med at uploade billedet til auktionen af følgende årsager: [REASON] + </notification> + <notification name="UnableToViewContentsMoreThanOne"> + Ude af stand til at se indholdet af mere end ét element ad gangen. +Vælg kun en genstand, og prøv igen. + </notification> + <notification name="SaveClothingBodyChanges"> + Gem alle ændringer til tøj/krops dele? + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem Ikke" yestext="Gem Alt"/> + </notification> + <notification name="FriendsAndGroupsOnly"> + 'Ikke-venner' vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM) + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FavoritesOnLogin"> + Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GrantModifyRights"> + Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed. +Ønsker du at give ændre-rettgheder til [NAME]? + <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification name="GrantModifyRightsMultiple"> + At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage ALLE genstande, du måtte have i verden. Vær MEGET forsigtig når uddeler denne tilladelse. +Ønsker du at ændre rettigheder for de valgte beboere? + <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification name="RevokeModifyRights"> + Ønsker du at tilbagekalder ændre-rettigheder for [NAME]? + <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification name="RevokeModifyRightsMultiple"> + Vil du tilbagekalde rettighederne for de valgte beboere? + <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification name="UnableToCreateGroup"> + Kunne ikke oprette gruppe. +[MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="PanelGroupApply"> + [NEEDS_APPLY_MESSAGE] +[WANT_APPLY_MESSAGE] + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Ignorer Ændringer" yestext="Godkend Ændringer"/> + </notification> + <notification name="MustSpecifyGroupNoticeSubject"> + Du skal angive et emne for at sende en gruppe besked. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AddGroupOwnerWarning"> + Du er ved at tilføje medlemmer til rollen som [ROLE_NAME]. +Medlemmer ikke kan fjernes fra denne rolle. +Medlemmerne skal fratræde sin rolle selv. +Er du sikker på du vil fortsætte? + <usetemplate ignoretext="Bekræft, før jeg tilføjer en ny gruppe ejer" name="okcancelignore" notext="Nej" yestext="Ja"/> + </notification> + <notification name="AssignDangerousActionWarning"> + Du er ved at tilføje muligheden for '[ACTION_NAME]' til +rollen '[ROLE_NAME]'. + +*ADVARSEL* +Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker på, at du ved, hvad du laver, før tildeling af denne evne. + +Add this Ability to '[ROLE_NAME]'? + <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification name="AttachmentDrop"> + Du er ved at smide et vedhæng. + Er du sikker på at du vil fortsætte? + <usetemplate ignoretext="Bekræft før vedhæng smides" name="okcancelignore" notext="Nej" yestext="Ja"/> + </notification> + <notification name="JoinGroupNoCost"> + Du melder dig ind i gruppen [NAME]. +Ønsker du at fortsætte? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Bliv medlem"/> + </notification> + <notification name="JoinGroupCannotAfford"> + Tilmelding til denne gruppe koster L$[COST]. +Du har ikke nok L$ til denne tilmelding. + </notification> + <notification name="CreateGroupCost"> + Oprettelse af denne gruppe vil koste L$100. +Grupper skal have mindst 2 medlemmer, ellers slettes de for altid. +Invitér venligst medlemmer indenfor 48 timer. + <usetemplate canceltext="Annullér" name="okcancelbuttons" notext="Annullér" yestext="Oprete en gruppe for L$100"/> + </notification> + <notification name="ConfirmLandSaleToAnyoneChange"> + ADVARSEL: Ved at vælge 'sælg til enhver' bliver til land tilgængeligt for alle i hele [SECOND_LIFE], også de som ikke er i denne region. + +Det valgte antal [LAND_SIZE] m² land bliver sat til salg. +Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME]. + </notification> + <notification name="MultipleFacesSelected"> + Flere overflader er valgt for øjeblikket. +Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist på overfladerne på objektet. +Hvis media kun skal vises på en overflade, vælg 'Vælg overflade' og klik på den relevante overflade og klik på tilføj. + <usetemplate ignoretext="Media vil blive sat på flere valgte overflader" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> + <notification name="PromptMissingSubjMsg"> + E-mail dette billede med standard emne eller besked? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> + </notification> + <notification name="ErrorUploadingPostcard"> + Der var et problem med at sende billedet på grund af følgende: [REASON] + </notification> + <notification name="MaxAttachmentsOnOutfit"> + Kunne ikke vedhæfte objekt. +Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først. + </notification> + <notification name="MustHaveAccountToLogIn"> + Ups. Noget mangler at blive udfyldt. +Du skal indtaste brugernavnet for din avatar. + +Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en konto nu? + <usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/> + </notification> + <notification name="InvalidCredentialFormat"> + Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen. + </notification> + <notification name="DeleteMedia"> + Du har valgt at slette media tilknyttet denne overflade. +Er du sikker på at du vil fortsætte? + <usetemplate ignoretext="Bekræft før jeg slette media i et objekt" name="okcancelignore" notext="Nej" yestext="Ja"/> + </notification> + <notification name="ClassifiedInsufficientFunds"> + Ikke nok penge til at oprette annonce. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="DeleteAvatarPick"> + Slet favorit <nolink>[PICK]</nolink>? + </notification> + <notification name="DeleteOutfits"> + Slet valgte sæt? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> + </notification> + <notification name="CacheWillClear"> + Cache vil blive tømt ved næste genstart af [APP_NAME]. + </notification> + <notification name="CacheWillBeMoved"> + Cache vil blive fjernet ved næste genstart af [APP_NAME]. +Note: This will clear the cache. + </notification> + <notification name="ChangeConnectionPort"> + Port ændringer vil blive effektueret ved næste genstart af [APP_NAME]. + </notification> + <notification name="ChangeSkin"> + Den nye hud vil blive vist ved næste genstart af [APP_NAME]. + </notification> + <notification name="ChangeLanguage"> + Ændring af sprog vil først have effekt efter genstart af [APP_NAME]. + </notification> + <notification name="StartRegionEmpty"> + Ups, din start region er ikke angivet. +Indtast venligst navn på region i Start lokation feltet eller vælg "Min sidste lokation" eller "Hjem". + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="UnsupportedHardware"> + Din computer opfylder ikke minimumskravene til [APP_NAME]. Du kan risikere nedsat hastighed. Desværre kan [SUPPORT_SITE] ikke tilbyde teknisk support til konfigurationer der ikke er understøttet. + +Besøg [_URL] for yderligere information? + <usetemplate ignoretext="Din computer hardware understøttes ikke" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="UnknownGPU"> + Dit system indeholder et grafikkort som [APP_NAME] ikke kan genkende. +Dette skyldes ofte nyt hardware som endnu ikke er blevet testet med [APP_NAME]. Kortet vil sandsynligvis virke fint, med det kan være nødvendigt at justere grafik opsætningen. +(Mig > Indstillinger > Grafik). + <form name="form"> + <ignore name="ignore" text="Dit grafikkort kunne ikke identificeres"/> + </form> + </notification> + <notification name="DisplaySettingsNoShaders"> + [APP_NAME] gik ned ved inititalisering af grafik drivere. +Grafik kvaliteten sættes til 'lav' for at undgå typiske problemer med drivere. Dette vil slå visse grafik funktioner fra. +Vi anbefaler at opdatere driverne til dit grafikkort. +Grafik kvaliteten kan forbedres i indstillinger > Grafik. + </notification> + <notification name="CannotCopyWarning"> + Du har ikke rettigheder til at kopiere følgende genstande: +[ITEMS] +og du vil miste dem fra din beholdning hvis du forærer dem væk. Er du sikker på at du vil tilbyde disse genstande? + </notification> + <notification name="CannotGiveCategory"> + Du har ikke tilladelse til at videreføre den valgte mappe. + </notification> + <notification name="EjectAvatarFromGroup"> + Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME] + </notification> + <notification name="PromptGoToCurrencyPage"> + [EXTRA] + +Gå til [_URL] for information om køb af L$? + </notification> + <notification name="SoundFileInvalidChunkSize"> + Fejl i WAV fil (chunk size): +[FILE] + </notification> + <notification name="CannotEncodeFile"> + Kunne ikke 'forstå' filen: [FILE] + </notification> + <notification name="CorruptedProtectedDataStore"> + Vi kan ikke udfylde dit brugernavn og password. Dette kan ske hvis du ændrer netværksopsætning + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="DoNotSupportBulkAnimationUpload"> + [APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen. + </notification> + <notification name="LandmarkCreated"> + Du har tilføjet "[LANDMARK_NAME]" til din [FOLDER_NAME] mappe. + </notification> + <notification name="LandmarkAlreadyExists"> + Du har allerede et landemærke for denne lokation. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Ikke muligt at åbne script i objekt uden 'Redigére' rettigheder. + </notification> + <notification name="CouldNotTeleportReason"> + Teleport fejlede. +[REASON] + </notification> + <notification name="invalid_tport"> + Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte. +Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE]. + </notification> + <notification name="invalid_region_handoff"> + Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner. +Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE]. + </notification> + <notification name="blocked_tport"> + Beklager, teleport er blokeret lige nu. Prøv igen senere. +Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem. + </notification> + <notification name="nolandmark_tport"> + Beklager, systemet kunne ikke finde landmærke destinationen. + </notification> + <notification name="timeout_tport"> + Beklager, systemet kunne ikke fuldføre teleport forbindelse. +Prøv igen om lidt. + </notification> + <notification name="noaccess_tport"> + Beklager, du har ikke adgang til denne teleport destination. + </notification> + <notification name="missing_attach_tport"> + Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen. + </notification> + <notification name="too_many_uploads_tport"> + Tekniske problemer hindrer at din teleport kan gennemføres. +Prøv venligst igen om lidt eller vælg et mindre travlt område. + </notification> + <notification name="expired_tport"> + Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt. + </notification> + <notification name="expired_region_handoff"> + Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt. + </notification> + <notification name="no_host"> + Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere. +Prøv evt. igen om lidt. + </notification> + <notification name="no_inventory_host"> + Beholdningssystemet er ikke tilgængelig lige nu. + </notification> + <notification name="ForceOwnerAuctionWarning"> + Denne parcel er sat på auktion. Gennemtving ejerskab vil annullere denne auktion og måske irritere nogen beboere hvis bud allerede er afgivet. +Gennemtving ejerskab? + </notification> + <notification name="CannotBuyLandNoRegion"> + Ikke i stand til at købe land: +Kan ikke finde region som dette land er i. + </notification> + <notification name="CannotCloseFloaterBuyLand"> + Du kan ikke lukke 'Køb land' vinduet før [APP_NAME] har vurderet en pris på denne transaktion. + </notification> + <notification name="CannotDeedLandNoRegion"> + Land kunne ikke dedikeres: +Kunne ikke finde den region land ligger i. + </notification> + <notification name="CannotReleaseLandRegionNotFound"> + Kunne ikke efterlade land: +Kan ikke finde den region landet ligger i. + </notification> + <notification name="CannotDivideLandNoRegion"> + Kunne ikke opdele land: +Kan ikke finde den region landet ligger i. + </notification> + <notification name="CannotJoinLandNoRegion"> + Kunne ikke opdele land: +Kan ikke finde den region landet ligger i. + </notification> + <notification name="CannotSaveToAssetStore"> + Kunne ikke gemme [NAME] i den centrale database. +Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter. + </notification> + <notification name="YouHaveBeenLoggedOut"> + Du er blevet logget af [SECOND_LIFE] + [MESSAGE] + <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB & Chat"/> + </notification> + <notification label="Tilføj ven" name="AddFriendWithMessage"> + Venner kan give tilladelse til at følge hinanden +på Verdenskortet eller modtage status opdateringer. + +Tilbyd venskab til [NAME]? + <form name="form"> + <input name="message"> + Vil du være min ven? + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification label="Gem sæt" name="SaveOutfitAs"> + Gem det som jeg har på som nyt sæt: + <form name="form"> + <input name="message"> + [DESC] (ny) + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification label="Gem" name="SaveWearableAs"> + Gem genstand til beholdning som: + <form name="form"> + <input name="message"> + [DESC] (ny) + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification label="Omdøb sæt" name="RenameOutfit"> + Nyt navn til sæt: + <form name="form"> + <input name="new_name"> + [NAME] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification name="RemoveFromFriends"> + Ønsker du at fjerne [NAME] fra din venneliste? + </notification> + <notification name="ConfirmItemDeleteHasLinks"> + Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere. Det anbefales kraftigt at fjerne lænkninger først. + +Er du sikker på at du vil slette disse genstande? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> + </notification> + <notification name="DeedLandToGroupWithContribution"> + Ved at dedikere denne parcel, vil gruppen skulle have og vedblive med at have nok kreditter til brug af land. +Dedikeringen vil inkludere samtidige bidrag til gruppen fra '[NAME]'. +Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parvel sælges, vil salgsprisen blive delt ligeligt mellem gruppe medlemmerne. + +Dediker disse [AREA] m² land til gruppen '[GROUP_NAME]'? + </notification> + <notification name="ErrorMessage"> + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AvatarMovedDesired"> + Den ønskede lokation er ikke tilgængelig lige nu. +Du er blevet flyttet til en region in nærheden. + </notification> + <notification name="AvatarMovedLast"> + Din sidste lokation er ikke tilgængelig for øjeblikket. +Du er blevet flyttet til en region in nærheden. + </notification> + <notification name="AvatarMovedHome"> + Din hjemme lokation er ikke tilgængelig for øjeblikket. +Du er blevet flyttet til en region in nærheden. +Du kan måske ønske at sætte en ny hjemme lokation. + </notification> + <notification name="ClothingLoading"> + Dit tøj hentes stadig ned. +Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt. + <form name="form"> + <ignore name="ignore" text="Det tager lang tid at hente tøj"/> + </form> + </notification> + <notification name="FirstRun"> + [APP_NAME] installationen er færdig. + +Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge på. +Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto? + </notification> + <notification name="LoginPacketNeverReceived"> + Der er problemer med at koble på. Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID]. + +Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke på Hjælp for at se [SUPPORT_SITE] siden, eller klikke på Teleport for at forsøge at teleportere hjem. + </notification> + <notification name="CantTeleportToGrid"> + Kunne ikke teleportere til [SLURL] da den er på et andet net ([GRID]) end det nuværende net ([CURRENT_GRID]). Luk venligst din klient og prøv igen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="GeneralCertificateError"> + Kunne ikke opnå forbindelse til server. +[REASON] + +Vedrørende: [SUBJECT_NAME_STRING] +Fra: [ISSUER_NAME_STRING] +Valid fra: [VALID_FROM] +Valid til: [VALID_TO] +MD5 Fingerprint: [SHA1_DIGEST] +SHA1 Fingerprint: [MD5_DIGEST] +Key Usage: [KEYUSAGE] +Extended Key Usage: [EXTENDEDKEYUSAGE] +Subject Key Identifier: [SUBJECTKEYIDENTIFIER] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TrustCertificateError"> + Certifikationsmyndighed for denne server er ikke kendt. + +Certifikat information: +Vedrørende: [SUBJECT_NAME_STRING] +Fra: [ISSUER_NAME_STRING] +Valid fra: [VALID_FROM] +Valid til: [VALID_TO] +MD5 Fingerprint: [SHA1_DIGEST] +SHA1 Fingerprint: [MD5_DIGEST] +Key Usage: [KEYUSAGE] +Extended Key Usage: [EXTENDEDKEYUSAGE] +Subject Key Identifier: [SUBJECTKEYIDENTIFIER] + +Ønsker du at stole på denne myndighed? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Stol på"/> + </notification> + <notification name="NotEnoughCurrency"> + [NAME] L$ [PRICE] Du har ikke nok L$ til dette. + </notification> + <notification name="GrantedModifyRights"> + [NAME] har givet dig rettighed til at redigere sine objekter. + </notification> + <notification name="RevokedModifyRights"> + Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet + </notification> + <notification name="BuyOneObjectOnly"> + Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen. + </notification> + <notification name="DownloadWindowsMandatory"> + En ny version af [APP_NAME] er tilgængelig. +[MESSAGE] +Du skal hente denne version for at bruge [APP_NAME]. + </notification> + <notification name="DownloadWindows"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet. + </notification> + <notification name="DownloadWindowsReleaseForDownload"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet. + </notification> + <notification name="DownloadLinuxMandatory"> + En ny version af [APP_NAME] er tilgængelig. +[MESSAGE] +Du skal hente denne version for at kunne benytte [APP_NAME]. + <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Hent"/> + </notification> + <notification name="DownloadLinux"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet. + <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/> + </notification> + <notification name="DownloadLinuxReleaseForDownload"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet. + <usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/> + </notification> + <notification name="DownloadMacMandatory"> + En ny version af [APP_NAME] er tilgængelig. +[MESSAGE] +Du skal hente denne opdatering for at bruge [APP_NAME]. + +Download til dit Program bibliotek? + </notification> + <notification name="DownloadMac"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet. + +Download til dit Program bibliotek? + </notification> + <notification name="DownloadMacReleaseForDownload"> + En opdateret version af [APP_NAME] er tilgængelig. +[MESSAGE] +Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet. + +Download til dit Program bibliotek? + </notification> + <notification name="FailedUpdateInstall"> + Der opstod en fejl ved installation af opdatering. +Hent og installér venligst den nyeste version fra +http://secondlife.com/download. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="FailedRequiredUpdateInstall"> + Vi kunne ikke installere en påkrævet opdatering. +Du kan ikke logge på før [APP_NAME] er blevet opdateret. + +Hent og installer venligst den nyeste klien fra +http://secondlife.com/download. + <usetemplate name="okbutton" yestext="Afslut"/> + </notification> + <notification name="UpdaterServiceNotRunning"> + Dette er en påkrævet opdatering af din Second Life installation. + +Du kan downloade opdateringen fra http://www.secondlife.com/downloads +eller du kan installere den nu. + <usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/> + </notification> + <notification name="DownloadBackgroundTip"> + Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] + <usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> + </notification> + <notification name="DownloadBackgroundDialog"> + Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] + <usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> + </notification> + <notification name="RequiredUpdateDownloadedVerboseDialog"> + Vi har hentet en påkrævet opdatering. +Version [VERSION] + +Du skal genstarte [APP_NAME] for at installere denne opdatering. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RequiredUpdateDownloadedDialog"> + Du skal genstarte [APP_NAME] for at installere opdateringen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="DeedObjectToGroup"> + <usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/> + </notification> + <notification name="WebLaunchExternalTarget"> + Ønsker du at åbne din web browser for at se dette indhold? + <usetemplate ignoretext="Start min browser for at se hjemmesider" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchJoinNow"> + Gå til [http://secondlife.com/account/ Dashboard] for at administrere din konto? + <usetemplate ignoretext="Start min browser for at administrere min konto" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchSecurityIssues"> + <usetemplate ignoretext="Start min browser for at lære hvordan man rapporterer sikkerhedsproblemer" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchQAWiki"> + <usetemplate ignoretext="Start min browser for at se QA Wiki" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchPublicIssue"> + <usetemplate ignoretext="Start min browser for at bruge det Linden Labs sagsstyring" name="okcancelignore" notext="Cancel" yestext="Go to page"/> + </notification> + <notification name="WebLaunchSupportWiki"> + <usetemplate ignoretext="Start min browser for at se bloggen" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLGuide"> + Ønsker du at åbne 'Scripting Guide' for hjælp til scripting? + <usetemplate ignoretext="Start min browser for at se Scripting Guide" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="WebLaunchLSLWiki"> + Ønsker du at besøge LSL portalen for hjælp til scripting? + <usetemplate ignoretext="Start min browser for at besøge LSL Portalen" name="okcancelignore" notext="Cancel" yestext="Go to page"/> + </notification> + <notification name="ReturnToOwner"> + <usetemplate ignoretext="Bekræft før objekter returneres til deres ejere" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="ConfirmKick"> + Er du SIKKER på at du vil sparke alle beboere ud? + <usetemplate name="okcancelbuttons" notext="Cancel" yestext="Spark alle beboere ud"/> + </notification> + <notification name="MuteLinden"> + Beklager, men du kan ikke blokere en Linden. + </notification> + <notification name="CannotStartAuctionAlreadyForSale"> + Du kan ikke starte en auktion på en parcel som allerede er sat til salg. Fjern 'til salg' muligheden hvis du ønsker at starte en auktion. + </notification> + <notification label="Blokering af objekt via navn mislykkedes" name="MuteByNameFailed"> + Du har allerede blokeret dette navn. + </notification> + <notification name="BusyModeSet"> + Sat til 'optaget'. +Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din 'optaget' besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven. + <usetemplate ignoretext="Jeg skrifter min status til 'optaget" name="okignore" yestext="OK"/> + </notification> + <notification name="JoinedTooManyGroupsMember"> + Du er oppe på det maksimale antal grupper. Forlad venligst en anden gruppe inden du melder dig ind i denne, eller afvis tilbuddet. +[NAME] har inviteret dig til en gruppe. + </notification> + <notification name="JoinedTooManyGroups"> + Du er oppe på det maksimale antal grupper. Forlad venligst en gruppe inden du melder dig ind i enndnu en gruppe eller opretter en ny. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="KickUser"> + Spark beboere ud med hvilken besked? + </notification> + <notification name="FreezeUser"> + Frys beboeren med hvilken besked? + </notification> + <notification name="UnFreezeUser"> + Fjern frysning af beboeren med hvilken besked? + </notification> + <notification name="SetDisplayNameSuccess"> + Hej [DISPLAY_NAME]! + +Præcist som i virkeligheden tager det et stykke tid at vænne sig til et nyt navn. Det kan tage flere dage for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] i objekter, scripts, søgninger m.v. + </notification> + <notification name="SetDisplayNameBlocked"> + Beklager, du kan ikke ændre dit visningsnavn. Hvis du mener dette skyldes en fejl, kontakt venligst support. + </notification> + <notification name="SetDisplayNameFailedLength"> + Beklager, mavnet er for langt. Visningsnavne kan ikke indholde mere end [LENGTH] karakterer. + +Prøv venligst med et kortere navn. + </notification> + <notification name="SetDisplayNameFailedGeneric"> + Beklager, vi kunne ikke sætte dit visningsnavn. Prøv venligst igen senere. + </notification> + <notification name="SetDisplayNameMismatch"> + Visningsnavnene du angav matcher ikke. Prøv at taste ind igen. + </notification> + <notification name="AgentDisplayNameUpdateThresholdExceeded"> + Beklager, du er nødt til at vente længere, inden du kan ændre visningsnavn. + +Se mere under http://wiki.secondlife.com/wiki/Setting_your_display_name + +Prøv venligst igen senere. + </notification> + <notification name="AgentDisplayNameSetBlocked"> + Beklager, vi kunne ikke sætte dit valgte navn da det indholder et ikke tilladt ord. + + Prøv med et andet navn. + </notification> + <notification name="AgentDisplayNameSetInvalidUnicode"> + Visningsnavnet du prøver at angive indeholder ugyldige karakterer. + </notification> + <notification name="AgentDisplayNameSetOnlyPunctuation"> + Dit vinsningsnavn skal indeholde andre bogstaver end tegnsætningstegn. + </notification> + <notification name="DisplayNameUpdate"> + [OLD_NAME] ([SLID]) er nu kendt som [NEW_NAME]. + </notification> + <notification name="OfferTeleport"> + Tilbyd en teleport til din position med følgende besked? + <form name="form"> + <input name="message"> + Mød mig i [REGION] + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification name="OfferTeleportFromGod"> + Tilkald beboer til din lokation? + </notification> + <notification name="TeleportFromLandmark"> + Er du sikker på at du vil teleportere til <nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="Bekræft at jeg vil teleportere til et landemærke" name="okcancelignore" notext="Cancel" yestext="Teleport"/> + </notification> + <notification name="TeleportToPick"> + Teleport til [PICK]? + <usetemplate ignoretext="Bekræft at jeg ønsker at teleportere til et sted i favoritter" name="okcancelignore" notext="Annullér" yestext="Teleport"/> + </notification> + <notification name="TeleportToClassified"> + Teleport til [CLASSIFIED]? + <usetemplate ignoretext="Bekræft at du ønsker at teleportere til lokation in annoncer" name="okcancelignore" notext="Annullér" yestext="Teleport"/> + </notification> + <notification name="TeleportToHistoryEntry"> + Teleport til [HISTORY_ENTRY]? + <usetemplate ignoretext="Bekræft at du ønsker at teleportere til en lokation i din historik" name="okcancelignore" notext="Annullér" yestext="Teleport"/> + </notification> + <notification label="Change Linden Estate" name="ChangeLindenEstate"> + Du er i færd med at ændre et Linden ejet estate (mainland, teeen grid, orientation etc.). + +Dette er EKSTREMT FARLIGT da det kan ændre beboernes oplevelse fundamentalt. På mainland vil dette betyde ændring af tusinder af regioner og få spaceserveren til at kløjs i det. + +Fortsæt? + </notification> + <notification name="RegionEntryAccessBlocked"> + Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder. + +Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gå til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="RegionEntryAccessBlocked_KB"> + Du har ikke adgang til denne region på grund af din valgte indholdsrating. + +Gå til 'Knowledge Base' for mere information om indholdsratings. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate ignoretext="Ikke adgang til denne region på grund af begrænsninger i min indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til 'Knowledge Base'"/> + </notification> + <notification name="RegionEntryAccessBlocked_Notify"> + Du har ikke adgang til denne region på grund af din valgte indholdsrating. + </notification> + <notification name="RegionEntryAccessBlocked_Change"> + Du har ikke adgang til denne region på grund af din opsætning af indholdsrating. + +For at få adgang til den ønskede region skal du ændre din indholdsrating. Dette vil give dig ret til at søge og får tilgang til indhold af typen [REGIONMATURITY]. For at omgøre ændringer gå til Mig > Indstillinger > Generelt. + <form name="form"> + <button name="OK" text="Ændre indstillinger"/> + <button name="Cancel" text="Luk"/> + <ignore name="ignore" text="Din valgte indholdsrating forhindrer dig i at kommer til en region"/> + </form> + </notification> + <notification name="PreferredMaturityChanged"> + Din indholdsrating er nu [RATING]. + </notification> + <notification name="LandClaimAccessBlocked"> + Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder. + +Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandClaimAccessBlocked_KB"> + Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling.. + +Gå venligst til 'Knowledge Base' for yderligere information om indholdsrating. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate ignoretext="Du kan ikke kræve dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til 'Knowledge Base'"/> + </notification> + <notification name="LandClaimAccessBlocked_Notify"> + Du kan ikke kræve dette land på grund af din indholdsrating. + </notification> + <notification name="LandClaimAccessBlocked_Change"> + Du kan ikke kræve dette land, på grund af begrænsninger i din opsætning af indholdsrating. + +Du kan klikke på 'Ændre præference' for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig > Indstillinger > Generelt. + <usetemplate ignoretext="Din valgte indholdsrating forhindrer dig i at kræve land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/> + </notification> + <notification name="LandBuyAccessBlocked"> + Du kan ikke købe dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder. + +Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="LandBuyAccessBlocked_KB"> + Du kan ikke købe dette land på grund af din nuværende indholdsrating. + +Gå til 'Knowledge Base' for yderligere detaljer om indholdsrating. + <url name="url"> + https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010 + </url> + <usetemplate ignoretext="Du kan ikke købe dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til 'Knowledge Base'"/> + </notification> + <notification name="LandBuyAccessBlocked_Notify"> + Du kan ikke købe dette land på grund af din nuværende indholdsrating indstilling. + </notification> + <notification name="LandBuyAccessBlocked_Change"> + Du kan ikke købe dette land, på grund af begrænsninger i din opsætning af indholdsrating. + +Du kan klikke på 'Ændre præference' for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig > Indstillinger > Generelt. + <usetemplate ignoretext="Din valgte rating forhindrer dig i at købe land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/> + </notification> + <notification name="TooManyPrimsSelected"> + Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen + </notification> + <notification name="UnableToLoadNotecardAsset"> + Kunne ikke hente notecard indhold. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="SetClassifiedMature"> + Indeholder denne annonce 'Mature' indhold? + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification name="SetGroupMature"> + Indeholder denne gruppe 'Mature' indhold? + <usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/> + </notification> + <notification label="Changed Region Maturity" name="RegionMaturityChange"> + Ratingen for denne region er ændret. +Det kan tage noget tid inden ændringen slår igennem på kortet. + +For at få adgang til voksen regioner, skal beboere være alders-checket, enten via aldersverifikation eller betalingsverifikation. + </notification> + <notification label="Voice Version Mismatch" name="VoiceVersionMismatch"> + Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne få stemme chat til at fungere skal du opdatere [APP_NAME]. + </notification> + <notification name="MoveInventoryFromObject"> + <usetemplate ignoretext="Advar mig før jeg flytter 'ikke-kopiérbare' genstande fra et objekt" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="MoveInventoryFromScriptedObject"> + <usetemplate ignoretext="Advar mig før jeg flytter 'ikke-kopiérbare' genstande, hvor det kan medføre at ødelægge et scriptet objekt" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="ClickActionNotPayable"> + Advarsel: 'Betal objekt' klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et 'money()' event er tilføjet. + <form name="form"> + <ignore name="ignore" text="I set the action 'Pay object' when building an object without a money() script"/> + </form> + </notification> + <notification name="WebLaunchAccountHistory"> + Gå til [http://secondlife.com/account/ Dashboard] for at se konto-historik? + <usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/> + </notification> + <notification name="ConfirmQuit"> + Er du sikker på at du vil afslutte? + <usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/> + </notification> + <notification name="DeleteItems"> + [QUESTION] + <usetemplate ignoretext="Bekræft før sletning af genstande" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> + <notification name="HelpReportAbuseEmailLL"> + Benyt dette værktøj til at rapportere krænkninger af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards]. + +Alle rapporter om krænkninger vil blive undersøgt og behandlet. + </notification> + <notification name="HelpReportAbuseContainsCopyright"> + Kære beboer, + +Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt: + +(1) Krænkelsesproces. Du må sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter. + +(2) DCMA (”Digital Millennium Copyright Act”) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy]. + +Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori 'CopyBot or Permissions Exploit'. + +Mange tak + +Linden Lab + </notification> + <notification label="Replace Existing Attachment" name="ReplaceAttachment"> + <form name="form"> + <ignore name="ignore" text="Erstat et eksisterende vedhæng med den valgte genstand"/> + </form> + </notification> + <notification label="Busy Mode Warning" name="BusyModePay"> + <form name="form"> + <ignore name="ignore" text="Jeg er ved at betale en person eller et objekt mens jeg er 'optaget'"/> + </form> + </notification> + <notification name="ConfirmDeleteProtectedCategory"> + Mappen '[FOLDERNAME]' er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker på at du vil slette den? + <usetemplate ignoretext="Bekræft, inden en system mappe slettes" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> + <notification name="ConfirmEmptyTrash"> + Er du sikker på at du ønsker at tømme papirkurven? + <usetemplate ignoretext="Bekræft før papirkurv i beholdning tømmes" name="okcancelignore" notext="Cancel" yestext="OK"/> + </notification> + <notification name="ConfirmClearBrowserCache"> + Er du sikker på at du ønsker at slette din historik om besøg, web og søgninger? + <usetemplate name="okcancelbuttons" notext="Cancel" yestext="OK"/> + </notification> + <notification name="ConfirmClearCookies"> + Er du sikker på du vil slette alle cookies? + </notification> + <notification name="ConfirmEmptyLostAndFound"> + Er du sikker på at du vil slette indholdet i din 'Fundne genstande'? + <usetemplate ignoretext="Bekræft før sletning af 'Fundne genstande' mappe i beholdning" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="CopySLURL"> + Følgende SLurl er blevet kopieret til din udklipsholder: + [SLURL] + +Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser. + <form name="form"> + <ignore name="ignore" text="SLurl er kopieret til min udklipsholder"/> + </form> + </notification> + <notification name="NewSkyPreset"> + <form name="form"> + <input name="message"> + Ny forudindstilling + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification name="NewWaterPreset"> + <form name="form"> + <input name="message"> + Ny forudindstilling + </input> + <button name="OK" text="OK"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification name="ChatterBoxSessionStartError"> + Ikke i stand til at start chat med [RECIPIENT]. +[REASON] + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="Cannot_Purchase_an_Attachment"> + Du kan ikke købe en genstand mens den er vedhæftet. + </notification> + <notification name="AutoWearNewClothing"> + Vil du automatisk tage det tøj på du er ved at lave? + <usetemplate ignoretext="Tag det tøj på jeg laver, mens jeg ændrer udseende" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="NotAgeVerified"> + Du skal være alders-checket for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden og bekræfte din alder? + +[_URL] + <usetemplate ignoretext="Jeg har ikke bekræftet min alder" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="Cannot enter parcel: no payment info on file"> + Du skal være betalende medlem for at besøge dette område. Ønsker du at gå til [SECOND_LIFE] hjemmesiden for at blive dette? + +[_URL] + <usetemplate ignoretext="Du mangler at være betalende medlem" name="okcancelignore" notext="No" yestext="Yes"/> + </notification> + <notification name="SystemMessageTip"> + [MESSAGE] + </notification> + <notification name="IMSystemMessageTip"> + [MESSAGE] + </notification> + <notification name="Cancelled"> + Annulléret + </notification> + <notification name="CancelledSit"> + Annulléret sid + </notification> + <notification name="CancelledAttach"> + Annulléreret vedhæft + </notification> + <notification name="ReplacedMissingWearable"> + Erstattet manglende tøj/kropsdele med standard. + </notification> + <notification name="FriendOnline"> + [NAME] er logget på + </notification> + <notification name="FriendOffline"> + [NAME] er logget af + </notification> + <notification name="AddSelfFriend"> + Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven. + </notification> + <notification name="UploadingAuctionSnapshot"> + Uploader billeder fra verdenen og www... +(Tager omkring 5 minutter.) + </notification> + <notification name="UploadPayment"> + Du betalte L$[AMOUNT] for at uploade. + </notification> + <notification name="UploadWebSnapshotDone"> + Billeder fra www er uploadet. + </notification> + <notification name="UploadSnapshotDone"> + Billeder fra verdenen er uploadet + </notification> + <notification name="TerrainDownloaded"> + Terrain.raw downloadet + </notification> + <notification name="GestureMissing"> + Bevægelsen [NAME] mangler i databasen. + </notification> + <notification name="UnableToLoadGesture"> + Kunne ikke indlæse læse bevægelse [NAME]. + </notification> + <notification name="LandmarkMissing"> + Landmærke mangler i databasen. + </notification> + <notification name="UnableToLoadLandmark"> + Ikke muligt at indlæse landmærke. Prøv venligst igen. + </notification> + <notification name="CapsKeyOn"> + Din Caps Lock er aktiveret. +Det kan påvirke din indtastning af password. + </notification> + <notification name="NotecardMissing"> + Note mangler i databasen. + </notification> + <notification name="NotecardNoPermissions"> + Du har ikke rettigheder til at se denne note. + </notification> + <notification name="RezItemNoPermissions"> + Utilstrækkelige tilladelser til at danne genstanden. + </notification> + <notification name="UnableToLoadNotecard"> + Ikke muligt at indlæse note. +Prøv venligst igen. + </notification> + <notification name="ScriptMissing"> + Script mangler i databasen. + </notification> + <notification name="ScriptNoPermissions"> + Utilstrækkelige tilladelser til at se script. + </notification> + <notification name="UnableToLoadScript"> + Ikke muligt at indlæse script. Prøv venligst igen. + </notification> + <notification name="IncompleteInventory"> + Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt. + </notification> + <notification name="CannotModifyProtectedCategories"> + Du kan ikke ændre beskyttede kategorier. + </notification> + <notification name="CannotRemoveProtectedCategories"> + Du kan ikke fjerne beskyttede kategorier. + </notification> + <notification name="UnableToBuyWhileDownloading"> + Ikke muligt at købe, imens genstandens data hentes. +Prøv venligst igen. + </notification> + <notification name="UnableToLinkWhileDownloading"> + Ikke muligt at lænke imens genstandens data hentes. +Prøv venligst igen. + </notification> + <notification name="CannotBuyObjectsFromDifferentOwners"> + Du kan kun købe objekter fra én ejer ad gangen. +Vælg venligst et enkelt objekt. + </notification> + <notification name="ObjectNotForSale"> + Dette objekt er ikke til salg. + </notification> + <notification name="EnteringGodMode"> + Starter gud-tilstand, niveau [LEVEL] + </notification> + <notification name="LeavingGodMode"> + Stopper gud-tilstand, niveau [LEVEL] + </notification> + <notification name="CopyFailed"> + Du har ikke rettigheder til at kopiere dette. + </notification> + <notification name="InventoryAccepted"> + [NAME] modtog dit tilbud til hans/hendes beholdning. + </notification> + <notification name="InventoryDeclined"> + [NAME] afviste det du tilbød fra din beholdning. + </notification> + <notification name="ObjectMessage"> + [NAME]: [MESSAGE] + </notification> + <notification name="CallingCardAccepted"> + Dit visitkort blev accepteret. + </notification> + <notification name="CallingCardDeclined"> + Dit visitkort blev afvist. + </notification> + <notification name="TeleportToLandmark"> + Du kan teleportere til lokationer som '[NAME]' ved at åbne Steder panelet til højre på skærmen, og her vælge landemærker fanen. +Klik på et landemærke og vælg den, derefter +Click on any landmark to select it, then click 'Teleport' at the bottom of the panel. +(You can also double-click on the landmark, or right-click it and choose 'Teleport'.) + </notification> + <notification name="TeleportToPerson"> + Du kan kontakte beboere som '[NAME]' ved at åbne Personer panelet til højre på skærmen. +Vælg beboeren fra listen og klik så 'IM' i bundet af panelet. +(Du kan også dobbelt-klikke på navnet i listen, eller højre-klikke og vælge 'IM'). + </notification> + <notification name="CantSelectLandFromMultipleRegions"> + Kan ikke vælge land på tværs af grænser. +Prøv at vælge mindre stykker land. + </notification> + <notification name="SearchWordBanned"> + Visse ord er fjernet fra din søge-sætning på grund af at disse strider mod de generelle 'Community Standards'. + </notification> + <notification name="NoContentToSearch"> + Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult). + </notification> + <notification name="SystemMessage"> + [MESSAGE] + </notification> + <notification name="PaymentReceived"> + [MESSAGE] + </notification> + <notification name="PaymentSent"> + [MESSAGE] + </notification> + <notification name="EventNotification"> + Besked om begivenhed: + +[NAME] +[DATE] + <form name="form"> + <button name="Details" text="Detaljer"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification name="TransferObjectsHighlighted"> + Alle genstande på denne grund, som vil blive overført til køberen af denne grund, er nu oplyst. + +* Træer og græs, der vil blive overført, er ikke fremhævet. + <form name="form"> + <button name="Done" text="Færdig"/> + </form> + </notification> + <notification name="DeactivatedGesturesTrigger"> + Deaktiverede bevægelser med samme udløser: [NAMES] + </notification> + <notification name="NoQuickTime"> + Det ser ikke ud til at Apples QuickTime software er installeret på dit system. +Hvis du ønsker at se streaming media på parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player. + </notification> + <notification name="NoPlugin"> + Ingen Media Plugin blev fundet til at håndtere mime af typen "[MIME_TYPE]". Media af denne type vil ikke være tilgængelig. + </notification> + <notification name="MediaPluginFailed"> + Følgende Media Plugin has fejlede: + [PLUGIN] + +Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved. + <form name="form"> + <ignore name="ignore" text="En Media Plugin kunne ikke afvikles"/> + </form> + </notification> + <notification name="OwnedObjectsReturned"> + De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning. + </notification> + <notification name="OtherObjectsReturned"> + Objekterne på den valgte parcel, ejet af [NAME], er blevet returneret til vedkommendes beholdning. + </notification> + <notification name="OtherObjectsReturned2"> + Objekterne i den valgte parcel, ejet af beboeren '[NAME]', er blevet returneret til deres ejer. + </notification> + <notification name="GroupObjectsReturned"> + Genstandene på det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger. +Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere. +Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet. + </notification> + <notification name="UnOwnedObjectsReturned"> + Genstandene på det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere. + </notification> + <notification name="ServerObjectMessage"> + Besked fra [NAME]: +<nolink>[MSG]</nolink> + </notification> + <notification name="NotSafe"> + Dette land er åbnet for 'skade'. +Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation. + </notification> + <notification name="NoFly"> + Dette sted har ikke aktiveret ret til flyvning. +Du kan ikke flyve her. + </notification> + <notification name="PushRestricted"> + Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land. + </notification> + <notification name="NoVoice"> + Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale. + </notification> + <notification name="NoBuild"> + Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller 'rezze' objekter her. + </notification> + <notification name="ScriptsStopped"> + En administrator har midlertidig stoppet scripts i denne region. + </notification> + <notification name="ScriptsNotRunning"> + Denne region kører ikke nogen scripts. + </notification> + <notification name="NoOutsideScripts"> + Dette sted tillader ikke udefra kommende scripts. + +Ingen scripts vil virke her, udover de som tilhører ejeren af landet. + </notification> + <notification name="ClaimPublicLand"> + Du kan kun kræve land i den region du befinder dig i. + </notification> + <notification name="RegionTPAccessBlocked"> + Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient. + +Gå venligst til 'Knowledge Base' for yderligere detaljer om adgang til områder med denne indholdsrating. + </notification> + <notification name="URBannedFromRegion"> + Du er blokeret i denne region. + </notification> + <notification name="NoTeenGridAccess"> + Du kan ikke tilslutte dig denne 'Teen' region. + </notification> + <notification name="ImproperPaymentStatus"> + Du har ikke de rette betalingsoplysninger til at komme ind i denne region. + </notification> + <notification name="MustGetAgeParcel"> + Du skal være aldersgodkendt for at komme ind på denne parcel. + </notification> + <notification name="NoDestRegion"> + Destinations region ikke fundet. + </notification> + <notification name="NotAllowedInDest"> + Du har ikke adgang til denne destination. + </notification> + <notification name="RegionParcelBan"> + Kan ikke skifte til ny region via en blokeret parcel. Prøv en anden vej ind. + </notification> + <notification name="TelehubRedirect"> + Du er blevet omdirigeret til en telehub. + </notification> + <notification name="CouldntTPCloser"> + Kunne ikke teleportere nærmere til destination. + </notification> + <notification name="TPCancelled"> + Teleport afbrudt. + </notification> + <notification name="FullRegionTryAgain"> + Den region du prøver at komme ind i er fuld for øjeblikket. +Prøv igen om lidt. + </notification> + <notification name="GeneralFailure"> + Generel fejl. + </notification> + <notification name="RoutedWrongRegion"> + Du blev sendt til en forkert region. Prøv igen. + </notification> + <notification name="NoValidAgentID"> + Ikke en gyldig agent ID. + </notification> + <notification name="NoValidSession"> + Ikke noget gyldig sessions-ID + </notification> + <notification name="NoValidCircuit"> + Ingen gyldig kode for kredsløb. + </notification> + <notification name="NoValidTimestamp"> + Ikke et gyldigt klokkeslæt. + </notification> + <notification name="NoPendingConnection"> + Kunne ikke skabe fast forbindelse. + </notification> + <notification name="InternalUsherError"> + Der opstod en intern fejl ved teleportering til din teleport destination.. Der kan være generelle problemer med [SECOND_LIFE] lige nu. + </notification> + <notification name="NoGoodTPDestination"> + Kunne ikke finde et egnet teleport sted i denne region. + </notification> + <notification name="InternalErrorRegionResolver"> + Der opstod en intern fejl ved beregning af globale koordinater for din teleport forespørgsel. Der kan være generelle problemer med [SECOND_LIFE] lige nu. + </notification> + <notification name="NoValidLanding"> + Kunne ikke finde et gyldigt landingspunkt. + </notification> + <notification name="NoValidParcel"> + No valid parcel could be found. + </notification> + <notification name="ObjectGiveItem"> + Et object med navnet <nolink>[OBJECTFROMNAME]</nolink> ejet af [NAME_SLURL] har givet dig denne [OBJECTTYPE]: +[ITEM_SLURL] + <form name="form"> + <button name="Keep" text="Behold"/> + <button name="Discard" text="Smid væk"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="UserGiveItem"> + [NAME_SLURL] har givet dig denne/dette [OBJECTTYPE]: +[ITEM_SLURL] + <form name="form"> + <button name="Show" text="Vis"/> + <button name="Discard" text="Smid væk"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="GodMessage"> + [NAME] + +[MESSAGE] + </notification> + <notification name="JoinGroup"> + [MESSAGE] + <form name="form"> + <button name="Join" text="Indmeld"/> + <button name="Decline" text="Afvis"/> + <button name="Info" text="Information"/> + </form> + </notification> + <notification name="TeleportOffered"> + [NAME_SLURL] har tilbudt en teleport til deres lokation: + +[MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon> + <form name="form"> + <button name="Teleport" text="Teleportér"/> + <button name="Cancel" text="Annullér"/> + </form> + </notification> + <notification name="TeleportOfferSent"> + Tilbud om teleport sendt til [TO_NAME] + </notification> + <notification name="GotoURL"> + [MESSAGE] +[URL] + <form name="form"> + <button name="Later" text="Senere"/> + <button name="GoNow..." text="Gå nu..."/> + </form> + </notification> + <notification name="OfferFriendship"> + [NAME_SLURL] tilbyder venskab. + +[MESSAGE] + +(Som udgangspunkt vil I være i stand til at se hinandens online status.) + <form name="form"> + <button name="Accept" text="Acceptér"/> + <button name="Decline" text="Afvis"/> + </form> + </notification> + <notification name="FriendshipOffered"> + Du har tilbudt venskab til [TO_NAME] + </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME_SLURL] tilbyder venskab. + +(Som udgangspunkt, vil du være i stand til at se den andens online status) + </notification> + <notification name="FriendshipAccepted"> + [NAME] accepterede dit tilbud om venskab. + </notification> + <notification name="FriendshipDeclined"> + [NAME] afviste dit tilbud om venskab. + </notification> + <notification name="FriendshipAcceptedByMe"> + Tilbud om venskab accepteret. + </notification> + <notification name="FriendshipDeclinedByMe"> + Tilbud om venskab afvist. + </notification> + <notification name="OfferCallingCard"> + [NAME] tilbyder sit visitkort. +Dette vil tilføje et bogmærke i din beholdning, så du hurtigt kan sende en personlig besked til denne beboer. + <form name="form"> + <button name="Accept" text="Acceptér"/> + <button name="Decline" text="Afvis"/> + </form> + </notification> + <notification name="RegionRestartMinutes"> + Denne region vil genstarte om [MINUTES] minutter. +Hvis du ikke forlader regionen, vil du blive logget af. + </notification> + <notification name="RegionRestartSeconds"> + Denne region genstartes om [SECONDS] sekunder. +Hvis du ikke forlader regionen, vil du blive logget af. + </notification> + <notification name="LoadWebPage"> + Indlæas websiden [URL]? + +[MESSAGE] + +Fra objekt: <nolink>[OBJECTNAME]</nolink>, ejer: [NAME]? + <form name="form"> + <button name="Gotopage" text="Gå til side"/> + <button name="Cancel" text="Afbryd"/> + </form> + </notification> + <notification name="FailedToFindWearableUnnamed"> + Det lykkedes ikke at finde [TYPE] i databasen. + </notification> + <notification name="FailedToFindWearable"> + Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen. + </notification> + <notification name="InvalidWearable"> + Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på. + </notification> + <notification name="ScriptQuestion"> + '<nolink>[OBJECTNAME]</nolink>', et objekt ved ejet af '[NAME]', ønsker at: + +[QUESTIONS] +Er dette OK? + <form name="form"> + <button name="Yes" text="Ja"/> + <button name="No" text="Nej"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="ScriptQuestionCaution"> + Et objeckt med navn '<nolink>[OBJECTNAME]</nolink>', ejet af '[NAME]' ønsker at: + +[QUESTIONS] +Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise dette ønske. + +Opfyld dette ønske? + <form name="form"> + <button name="Grant" text="Imødekom"/> + <button name="Deny" text="Afvis"/> + <button name="Details" text="Detaljer..."/> + </form> + </notification> + <notification name="ScriptDialog"> + [NAME]'s '<nolink>[TITLE]</nolink>' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorér"/> + </form> + </notification> + <notification name="ScriptDialogGroup"> + [GROUPNAME]'s '<nolink>[TITLE]</nolink>' +[MESSAGE] + <form name="form"> + <button name="Ignore" text="Ignorér"/> + </form> + </notification> + <notification name="BuyLindenDollarSuccess"> + Tak for din betaling! + +Din L$ balance vil blive opdateret når transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I så fald vil beløbet blive krediteret din US$ balance. + +Status for din betaling kan ses i din 'Transaction History' side på din [http://secondlife.com/account/ Dashboard] + </notification> + <notification name="FirstOverrideKeys"> + Dine bevælgelsestaster bliver nu håndteret af et objekt. +Brug piletasterne eller AWSD for at se, hvad de gør. +Nogle genstande (som skydevåben) kræver at du går ind i musevisning for at bruge dem. +Tryk på 'M' for at gåre det. + </notification> + <notification name="FirstSandbox"> + Dette er et sandkasse område. Her kan beboere lære ast bygge. + +De ting du bygger vil blive slettet senere, så glem ikke at højre-klikke og vælge "Tag" for at tage en kopi af din kreation til din beholdning. + </notification> + <notification name="MaxListSelectMessage"> + Du må kun vælge op til [MAX_SELECT] genstande på denne liste. + </notification> + <notification name="VoiceInviteP2P"> + [NAME] inviterer dig til en stemme-chat samtale. +Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen. + <form name="form"> + <button name="Accept" text="Acceptér"/> + <button name="Decline" text="Afvis"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="AutoUnmuteByIM"> + [NAME] har fået sendt en besked og blokering er derfor automatisk blevet fjernet. + </notification> + <notification name="AutoUnmuteByMoney"> + [NAME] har fået givet penge og blokering er derfor automatisk blevet fjernet. + </notification> + <notification name="AutoUnmuteByInventory"> + [NAME] er blevet tilbud noget fra beholdning og blokering er derfor automatisk blevet fjernet. + </notification> + <notification name="VoiceInviteGroup"> + [NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP]. +Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen. + <form name="form"> + <button name="Accept" text="Acceptér"/> + <button name="Decline" text="Afvis"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="VoiceInviteAdHoc"> + [NAME] har sluttet sig til en stemme-chat med en konference chat. +Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen. + <form name="form"> + <button name="Accept" text="Acceptér"/> + <button name="Decline" text="Afvis"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="InviteAdHoc"> + [NAME] inviterer dig til en konference chat. +Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen. + <form name="form"> + <button name="Accept" text="Acceptér"/> + <button name="Decline" text="Afvis"/> + <button name="Mute" text="Blokér"/> + </form> + </notification> + <notification name="VoiceChannelFull"> + Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nået maksiumum kapacitet. Prøv venligst igen senere. + </notification> + <notification name="ProximalVoiceChannelFull"> + Vi beklager. Dette område har nået sin maksimale kapacitet for stemme-chat. Prøv venligst at benytte stemme i et andet område. + </notification> + <notification name="VoiceChannelDisconnected"> + Du er blevet koblet fra [VOICE_CHANNEL_NAME]. Du vil nu blive koblet til almindelig voice-chat. + </notification> + <notification name="VoiceChannelDisconnectedP2P"> + [VOICE_CHANNEL_NAME] har afsluttet samtalen. Du vil nu blive koblet til almindelig voice-chat. + </notification> + <notification name="P2PCallDeclined"> + [VOICE_CHANNEL_NAME] har avist dit opkald. Du vil nu blive koblet til almindelig voice-chat. + </notification> + <notification name="P2PCallNoAnswer"> + [VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald. Du vil nu blive koblet til almindelig voice-chat. + </notification> + <notification name="VoiceChannelJoinFailed"> + Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere. Du vil nu blive koblet til almindelig voice-chat. + </notification> + <notification name="VoiceLoginRetry"> + Vi laver en stemmekanal til dig. Det kan tage op til et minut. + </notification> + <notification name="VoiceEffectsExpired"> + En eller flere af dine stemme "morphs" er udløbet. +[[URL] Click here] for at forny dit abbonnement. + </notification> + <notification name="VoiceEffectsExpiredInUse"> + Den aktive stemme "morph" er udløbet og din normale stemme opsætning er genaktiveret. +[[URL] Click here] for at forny dit abbonnement. + </notification> + <notification name="VoiceEffectsWillExpire"> + En eller flere af dine stemme "morphs" vil udløbe om mindre end [INTERVAL] dage. +[[URL] Click here] for at forny dit abbonnement. + </notification> + <notification name="VoiceEffectsNew"> + Nye stemme "morphs" er tilgængelige! + </notification> + <notification name="Cannot enter parcel: not a group member"> + Kun medlemmer af en bestemt gruppe kan besøge dette område. + </notification> + <notification name="Cannot enter parcel: banned"> + Du kan ikke komme ind på området. Du er blevet udelukket. + </notification> + <notification name="Cannot enter parcel: not on access list"> + Du kan ikke komme ind på området. Du er ikke på adgangslisten. + </notification> + <notification name="VoiceNotAllowed"> + Du har ikke tilladelse til at tilslutte dig stemme-chat på [VOICE_CHANNEL_NAME]. + </notification> + <notification name="VoiceCallGenericError"> + En fejl er opstået under forsøget på at koble sig på stemme chatten [VOICE_CHANNEL_NAME]. Pråv venligst senere. + </notification> + <notification name="UnsupportedCommandSLURL"> + Den SLurl du klikkede på understøttes ikke. + </notification> + <notification name="BlockedSLURL"> + En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige årsager. + </notification> + <notification name="ThrottledSLURL"> + Flere SLurls blev modtaget fra en browser i et kort tidsrum. +De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager. + </notification> + <notification name="IMToast"> + [MESSAGE] + <form name="form"> + <button name="respondbutton" text="Svar"/> + </form> + </notification> + <notification name="ConfirmCloseAll"> + Er du sikker på at du vil lukke alle personlige samtaler (IM)? + <usetemplate ignoretext="Bekræft før du lukker alle IMer" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> + <notification name="AttachmentSaved"> + Vedhæng er blevet gemt. + </notification> + <notification name="UnableToFindHelpTopic"> + Ikke muligt at finde hjælp om dette element. + </notification> + <notification name="ObjectMediaFailure"> + Server fejl: Media opdatering eller "get" fejlede. +'[ERROR]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TextChatIsMutedByModerator"> + Din tekst chat er blevet slukket af moderator. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Din stemme er blevet slukket af moderatoren. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmClearTeleportHistory"> + Er du sikker på at du vil slette teleport historikken? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + Den valgte knap kan ikke vises lige nu. +Knappen vil blive vist når der er nok plads til den. + </notification> + <notification name="ShareNotification"> + Vælg beboere at dele med. + </notification> + <notification name="ShareItemsConfirmation"> + Er du sikker på at du vil dele følgende genstande: + +<nolink>[ITEMS]</nolink> + +Me følgende beboere: + +[RESIDENTS] + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ok"/> + </notification> + <notification name="ItemsShared"> + Genstande er nu delt. + </notification> + <notification name="DeedToGroupFail"> + Dedikering til gruppe fejlede. + </notification> + <notification name="AvatarRezNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' var ikke sky mere, efter [TIME] sekunder. + </notification> + <notification name="AvatarRezSelfBakedDoneNotification"> + ( [EXISTENCE] seconds alive ) +Du blev færdig med at fremvise dit sæt efter [TIME] sekunder. + </notification> + <notification name="AvatarRezSelfBakedUpdateNotification"> + ( [EXISTENCE] seconds alive ) +Du sendte en opdatering af dit udseende efter [TIME] sekunder. +[STATUS] + </notification> + <notification name="AvatarRezCloudNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' blev til "sky". + </notification> + <notification name="AvatarRezArrivedNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' appeared. + </notification> + <notification name="AvatarRezLeftCloudNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' forsvandt efter [TIME] sekunder som "sky". + </notification> + <notification name="AvatarRezEnteredAppearanceNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' skiftede til udseende modus. + </notification> + <notification name="AvatarRezLeftAppearanceNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' har forladt udseende modus. + </notification> + <notification name="NoConnect"> + Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID]. +Check venligst din netværks- og firewallsetup. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="NoVoiceConnect"> + Vi har problemer med at oprette forbindelse til din stemme server: + +[HOSTID] + +Stemme kommunikation vil ikke være tilgængelig. +Check venligst din netværks- og firewall setup. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="AvatarRezLeftNotification"> + ( [EXISTENCE] sekunder i live ) +Avatar '[NAME]' forsvandt helt "uploaded". + </notification> + <notification name="AvatarRezSelfBakedTextureUploadNotification"> + ( [EXISTENCE] sekunder i live ) +Du uploadede en [RESOLUTION] "bagt" tekstur til '[BODYREGION]' efter [TIME] sekunder. + </notification> + <notification name="AvatarRezSelfBakedTextureUpdateNotification"> + ( [EXISTENCE] sekunder i live ) +Du opdaterede en [RESOLUTION] "bagt" tekstur for '[BODYREGION]' efter [TIME] sekunder. + </notification> + <notification name="ConfirmLeaveCall"> + Er du sikker på at du vil forlade dette opkald? + <usetemplate ignoretext="Bekræft før jeg forlader opkald" name="okcancelignore" notext="Nej" yestext="Ja"/> + </notification> + <notification name="ConfirmMuteAll"> + Du har valgt at slukke for lyden for alle deltagere i gruppeopkaldet. +Dette vil også betyde, at alle beboere der slutter sig til opkaldet +vil have lyden slukket - selv efter de har forladt kaldet. + + +Sluk for alles lyd? + <usetemplate ignoretext="Bekræft før jeg slukker for alle deltageres lyd i gruppe-kald" name="okcancelignore" notext="Annullér" yestext="Ok"/> + </notification> + <notification label="Chat" name="HintChat"> + For at deltage i samtalen tast tekst ind i chat feltet nedenfor. + </notification> + <notification label="Stå op" name="HintSit"> + For at rejse dig op og forlad siddeposition, tryk på "Stå op" knappen. + </notification> + <notification label="Undersøg verden" name="HintDestinationGuide"> + Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen. + </notification> + <notification label="Side panel" name="HintSidePanel"> + Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel. + </notification> + <notification label="Flyt" name="HintMove"> + For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur. + </notification> + <notification label="Visningsnavn" name="HintDisplayName"> + Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger. + </notification> + <notification label="Flyt" name="HintMoveArrows"> + For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op + </notification> + <notification label="Se" name="HintView"> + For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå. + </notification> + <notification label="Beholdning" name="HintInventory"> + Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen "Nye ting" + </notification> + <notification label="Der er kommet Linden Dollars" name="HintLindenDollar"> + Her er din nuværende balance af L$. Klik på Køb L$ for at købe flere Linden dollars. + </notification> + <notification name="PopupAttempt"> + En pop-up blev hindret i at blive vist. + <form name="form"> + <ignore name="ignore" text="Tillad alle pop-ups"/> + <button name="open" text="Åben pop-up vindue"/> + </form> + </notification> + <notification name="AuthRequest"> + Hjemmesiden på '<nolink>[HOST_NAME]</nolink>' in realm '[REALM]' kræver et brugernavn og password. + <form name="form"> + <input name="username" text="Brugernavn"/> + <input name="password" text="Password"/> + <button name="ok" text="Send"/> + <button name="cancel" text="Annullér"/> + </form> + </notification> + <notification label="" name="ModeChange"> + For at skifte tilstand skal du genstarte programmet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoClassifieds"> + Oprettelse og redigering af annoncer er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoGroupInfo"> + Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoPicks"> + Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoWorldMap"> + Det er kun muligt at se verdenskortet i avanceret tilstand.Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoVoiceCall"> + Stemme kald kan kun benttes i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoAvatarShare"> + Det er kun mulig at dele i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoAvatarPay"> + Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <global name="UnsupportedGLRequirements"> + Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. + +Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE]. + </global> + <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> + Hvis du selv ejer land, kan du benytte det til hjemme lokation. +Ellers kan du se på verdenskortet og finde steder markeret med "Infohub". + </global> + <global name="You died and have been teleported to your home location"> + Du døde og er blevet teleporteret til din hjemmelokation. + </global> +</notifications> diff --git a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..1953fad31f --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Opkald" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Forlad opkald" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Stemmekontroller" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml new file mode 100644 index 0000000000..53a30136ae --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/> + <string name="SpeakBtnToolTip" value="Slå mikrofon til/fra"/> + <string name="VoiceControlBtnToolTip" value="Vis/skjul stemme kontrolpanel"/> + <layout_stack name="toolbar_stack"> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Skjuler/viser bevægelser"/> + </layout_panel> + <layout_panel name="cam_panel"> + <bottomtray_button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/> + </layout_panel> + <layout_panel name="avatar_and_destinations_panel"> + <radio_group name="avatar_and_destination_btns"> + <radio_item name="destination_btn" value="0"/> + <radio_item name="avatar_btn" value="1"/> + </radio_group> + </layout_panel> + <layout_panel name="people_panel"> + <bottomtray_button label="Personer" name="show_people_button" tool_tip="Vis person-vindue"/> + </layout_panel> + <layout_panel name="profile_panel"> + <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Vis profil vindue"/> + </layout_panel> + <layout_panel name="howto_panel"> + <bottomtray_button label="Hvordan" name="show_help_btn" tool_tip="Åben Second Life "How To topics""/> + </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="Konversationer"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="Notifikationer"/> + </chiclet_notification> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml new file mode 100644 index 0000000000..26fe4f6ebe --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="Gruppe profil" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Opkald gruppe" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Forlad opkald" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Åben stemmekontroller" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml new file mode 100644 index 0000000000..5cecb93d40 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="Profil" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="Tilføj ven" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport til denne person"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Del" name="share_btn"/> + </layout_panel> + <layout_panel name="pay_btn_panel"> + <button label="Betal" name="pay_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Opkald" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Afslut kald" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Stemme kontroller" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_login.xml b/indra/newview/skins/minimal/xui/da/panel_login.xml new file mode 100644 index 0000000000..fdcc550d82 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_login.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_login"> + <panel.string name="create_account_url"> + http://join.secondlife.com/ + </panel.string> + <panel.string name="forgot_password_url"> + http://secondlife.com/account/request.php + </panel.string> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="username_text"> + Brugernavn: + </text> + <combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/> + <text name="password_text"> + Password: + </text> + <check_box label="Husk password" name="remember_check"/> + <button label="Log på" name="connect_btn"/> + <text name="mode_selection_text"> + Tilstand: + </text> + <combo_box name="mode_combo" tool_tip="Vælg ønsket tilstand. Vælg basis for hurtig og nem udforskning og chat. Vælg avanceret for at få adgang til flere muligheder."> + <combo_box.item label="Basis (Standard)" name="Basic"/> + <combo_box.item label="Avanceret" name="Advanced"/> + </combo_box> + <text name="start_location_text"> + Start ved: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Min sidste lokation" name="MyLastLocation"/> + <combo_box.item label="Hjem" name="MyHome"/> + <combo_box.item label="<Indtast regionnavn>" name="Typeregionname"/> + </combo_box> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Opret bruger + </text> + <text name="forgot_password_text"> + Har du glemt brugernavn eller password? + </text> + <text name="login_help"> + Hjælp til login + </text> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml new file mode 100644 index 0000000000..2ee87433a4 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="Gå tilbage til min forrige lokation"/> + <pull_button name="forward_btn" tool_tip="Gå en lokation fremad"/> + <button name="home_btn" tool_tip="Teleport til min hjemme lokation"/> + <location_input label="Lokation" name="location_combo"/> + <search_combo_box label="Søg" name="search_combo_box" tool_tip="Søg"> + <combo_editor label="Søg [SECOND_LIFE]" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!"> + <label name="favorites_bar_label" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!"> + Favoritter + </label> + <chevron_button name=">>" tool_tip="Søg mere af mine favoritter"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml new file mode 100644 index 0000000000..a540025343 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_people.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Personer" name="people_panel"> + <string name="no_recent_people" value="Ingen nylige personer. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/> + <string name="no_filtered_recent_people" value="Ingen nylige personer med det navn."/> + <string name="no_one_near" value="Ingen i nærheden. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/> + <string name="no_one_filtered_near" value="Ingen i nærheden med det navn."/> + <string name="no_friends_online" value="Ingen venner online"/> + <string name="no_friends" value="Ingen venner"/> + <string name="no_friends_msg"> + Højre-klik på en person for at tilføje som ven. +Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor. + </string> + <string name="no_filtered_friends_msg"> + Fandt du ikke hvad du søgte? Prøv destinationsknappen nedenfor. + </string> + <string name="people_filter_label" value="Filtrér personer"/> + <string name="groups_filter_label" value="Filtrér grupper"/> + <string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/> + <string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/> + <string name="MiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at åbne kort, træk for at panorere)"/> + <string name="AltMiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at teleportere, træk for at panorere)"/> + <filter_editor label="Filtrér" name="filter_input"/> + <tab_container name="tabs"> + <panel label="TÆT PÅ" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="nearby_view_sort_btn" tool_tip="Valg"/> + <button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/> + </panel> + </panel> + <panel label="MINE VENNER" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="Online"/> + <accordion_tab name="tab_all" title="Alle"/> + </accordion> + <panel label="bottom_panel" name="bottom_panel"> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <menu_button name="friends_viewsort_btn" tool_tip="Vis flere valg"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Tilbyd venskab til en beboer"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/> + </layout_panel> + </layout_stack> + </panel> + </panel> + <panel label="MINE GRUPPER" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="groups_viewsort_btn" tool_tip="Valg"/> + <button name="plus_btn" tool_tip="Bliv medlem af gruppe/Opret ny gruppe"/> + <button name="activate_btn" tool_tip="Activér valgte gruppe"/> + </panel> + </panel> + <panel label="NYLIGE" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="recent_viewsort_btn" tool_tip="Valg"/> + <button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="view_profile_btn_lp"> + <button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="IM" name="im_btn" tool_tip="Åben session med privat besked (IM)"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Kald" name="call_btn" tool_tip="Opkald til denne beboer"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="group_info_btn_lp"> + <button label="Gruppe profil" name="group_info_btn" tool_tip="Vis gruppe information"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Gruppe chat" name="chat_btn" tool_tip="Åben chat session"/> + </layout_panel> + <layout_panel name="group_call_btn_lp"> + <button label="Gruppe kald" name="group_call_btn" tool_tip="Opkald til denne gruppe"/> + </layout_panel> + </layout_stack> + </panel> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..ce3a1d8b4e --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="sidetray_tab_panel"> + <text name="sidetray_tab_title" value="Side bjælke"/> + <button name="undock" tool_tip="Løsriv"/> + <button name="dock" tool_tip="Fastgør"/> + <button name="show_help" tool_tip="Vis hjælp"/> +</panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml b/indra/newview/skins/minimal/xui/da/panel_status_bar.xml new file mode 100644 index 0000000000..6e7bdfc188 --- /dev/null +++ b/indra/newview/skins/minimal/xui/da/panel_status_bar.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="status"> + <panel.string name="StatBarDaysOfWeek"> + Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag + </panel.string> + <panel.string name="StatBarMonthsOfYear"> + Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December + </panel.string> + <panel.string name="packet_loss_tooltip"> + Packet Loss + </panel.string> + <panel.string name="bandwidth_tooltip"> + Båndbredde + </panel.string> + <panel.string name="time"> + [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] + </panel.string> + <panel.string name="timeTooltip"> + [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] + </panel.string> + <panel.string name="buycurrencylabel"> + L$ [AMT] + </panel.string> + <panel name="balance_bg"> + <text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/> + <button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/> + </panel> + <text name="TimeText" tool_tip="Nuværende tid (Pacific)"> + 24:00 PST + </text> + <button name="media_toggle_btn" tool_tip="Start/Stop Alle medier (musik, video, hjemmesider)"/> + <button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/> +</panel> -- cgit v1.2.3 From 9fe946457098279640e2ffd477866c9878e5f635 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Mon, 13 Jun 2011 15:30:02 -0700 Subject: FIX VWR-25984 --- indra/newview/skins/default/xui/es/notifications.xml | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index 9674f73241..b2131fc038 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -2365,6 +2365,9 @@ Por favor, dirígete a la Base de Conocimientos para más detalles sobre el acce <notification name="ImproperPaymentStatus"> No tienes el estado de pago adecuado para entrar a esta región. </notification> + <notification name="MustGetAgeRgion"> + Debes tener verificada la edad para entrar a esta región + </notification> <notification name="MustGetAgeParcel"> Debes haber verificado tu edad para entrar a esta parcela. </notification> -- cgit v1.2.3 From 0c8b3ea7448a9da069d20fdf3d48a6feec7eb33f Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Mon, 13 Jun 2011 18:35:46 -0400 Subject: STORM-787 Mute Gestures Button--moved check box down 2 lines --- .../default/xui/en/panel_preferences_sound.xml | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index baa8d485ef..1745c1e4b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -314,17 +314,6 @@ name="enable_voice_check" width="110"/> <!-- --> - <check_box - name="gesture_audio_play_btn" - control_name="EnableGestureSounds" - disabled_control="MuteAudio" - value="true" - follows="left|bottom|right" - height="15" - tool_tip="Check this to hear sounds from gestures" - label="Play sounds from gestures" - top_pad="1" - left="25"/> <check_box name="media_auto_play_btn" control_name="ParcelMediaAutoPlayEnable" @@ -346,7 +335,17 @@ label="Play media attached to other avatars" left="25" width="230"/> - + <check_box + name="gesture_audio_play_btn" + control_name="EnableGestureSounds" + disabled_control="MuteAudio" + value="true" + follows="left|bottom|right" + height="15" + tool_tip="Check this to hear sounds from gestures" + label="Play sounds from gestures" + top_pad="1" + left="25"/> <text type="string" length="1" -- cgit v1.2.3 From eb6b75eb906bf91fbd824f75fc4dfed2b3718966 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Mon, 13 Jun 2011 18:46:51 -0400 Subject: SH-1796 FIX --- indra/newview/app_settings/settings.xml | 4 ++-- indra/newview/llmeshrepository.cpp | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) mode change 100644 => 100755 indra/newview/app_settings/settings.xml (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml old mode 100644 new mode 100755 index e323287084..0386ef65c3 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5589,10 +5589,10 @@ <key>Value</key> <real>0</real> </map> - <key>MeshUseWholeModelUpload</key> + <key>MeshUploadLogXML</key> <map> <key>Comment</key> - <string>Upload model in its entirety instead of mesh-by-mesh (new caps)</string> + <string>Verbose XML logging on mesh upload</string> <key>Persist</key> <integer>1</integer> <key>Type</key> diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 9855a641ed..4673289094 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1424,10 +1424,11 @@ void LLMeshUploadThread::run() void dumpLLSDToFile(const LLSD& content, std::string filename) { -#if 1 - std::ofstream of(filename.c_str()); - LLSDSerialize::toPrettyXML(content,of); -#endif + if (gSavedSettings.getBOOL("MeshUploadLogXML")) + { + std::ofstream of(filename.c_str()); + LLSDSerialize::toPrettyXML(content,of); + } } void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) -- cgit v1.2.3 From d6f6b640e473de946467af71cdbda2b88301608f Mon Sep 17 00:00:00 2001 From: Richard Linden <none@none> Date: Mon, 13 Jun 2011 16:05:17 -0700 Subject: EXP-885 FIX v2.7.1 Release Viewer Update Available splash prompts the user to donwload the v2.7.2 Beta Backed out changeset: 3a391669629d --- indra/newview/llpanellogin.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index d0810d0772..27f341b4f6 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -34,7 +34,6 @@ #include "llmd5.h" #include "llsecondlifeurls.h" #include "v4color.h" -#include "llversionviewer.h" #include "llappviewer.h" #include "llbutton.h" @@ -748,20 +747,12 @@ void LLPanelLogin::loadLoginPage() LLVersionInfo::getShortVersion().c_str(), LLVersionInfo::getBuild()); - char* curl_channel ; + char* curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0); char* curl_version = curl_escape(version.c_str(), 0); - if(strcmp(LLVersionInfo::getChannel().c_str(), LL_CHANNEL)) - { - curl_channel = curl_escape(LLVersionInfo::getChannel().c_str(), 0); - } - else //if LL_CHANNEL, direct it to "Second Life Beta Viewer". - { - curl_channel = curl_escape("Second Life Beta Viewer", 0); - } oStr << "&channel=" << curl_channel; oStr << "&version=" << curl_version; - + curl_free(curl_channel); curl_free(curl_version); -- cgit v1.2.3 From 8b1f9529dd4d54a19dbab739ec5af81e95b53b23 Mon Sep 17 00:00:00 2001 From: jenn <jenn@lindenlab.com> Date: Tue, 14 Jun 2011 15:24:48 +0000 Subject: Enabling watchdog timer with timeout of 20. This is in support of a Viewer crash pile-on. It is intended to ship to Beta, then either be reverted or have an increased timeout prior to shipping to release. --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index fc7fd2dd8a..9161519a10 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12406,7 +12406,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>-1</integer> + <integer>20</integer> </map> <key>WaterEditPresets</key> <map> -- cgit v1.2.3 From b4bf02ae5056cf79395c178cca08795a4cddb368 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 14 Jun 2011 12:17:10 -0700 Subject: WIP INTL-46 Traditional Chinese translation update --- .../newview/skins/default/xui/zh/floater_about.xml | 10 +- .../skins/default/xui/zh/floater_about_land.xml | 50 +-- .../default/xui/zh/floater_animation_preview.xml | 2 +- .../skins/default/xui/zh/floater_avatar_picker.xml | 12 +- .../skins/default/xui/zh/floater_bulk_perms.xml | 12 +- .../skins/default/xui/zh/floater_buy_contents.xml | 2 +- .../skins/default/xui/zh/floater_buy_currency.xml | 2 +- .../skins/default/xui/zh/floater_buy_land.xml | 8 +- .../skins/default/xui/zh/floater_buy_object.xml | 2 +- .../skins/default/xui/zh/floater_choose_group.xml | 2 +- .../skins/default/xui/zh/floater_color_picker.xml | 2 +- .../skins/default/xui/zh/floater_display_name.xml | 2 +- .../skins/default/xui/zh/floater_gesture.xml | 2 +- .../skins/default/xui/zh/floater_god_tools.xml | 2 +- .../skins/default/xui/zh/floater_image_preview.xml | 10 +- .../skins/default/xui/zh/floater_joystick.xml | 2 +- .../skins/default/xui/zh/floater_lagmeter.xml | 2 +- .../default/xui/zh/floater_live_lsleditor.xml | 6 +- .../default/xui/zh/floater_media_settings.xml | 2 +- .../skins/default/xui/zh/floater_mute_object.xml | 2 +- .../skins/default/xui/zh/floater_openobject.xml | 2 +- .../default/xui/zh/floater_outfit_save_as.xml | 2 +- .../skins/default/xui/zh/floater_outgoing_call.xml | 2 +- indra/newview/skins/default/xui/zh/floater_pay.xml | 2 +- .../skins/default/xui/zh/floater_pay_object.xml | 4 +- .../skins/default/xui/zh/floater_perm_prefs.xml | 2 +- .../skins/default/xui/zh/floater_postcard.xml | 20 +- .../skins/default/xui/zh/floater_preferences.xml | 20 +- .../default/xui/zh/floater_preview_notecard.xml | 2 +- .../default/xui/zh/floater_publish_classified.xml | 2 +- .../skins/default/xui/zh/floater_report_abuse.xml | 2 +- .../skins/default/xui/zh/floater_script_search.xml | 6 +- .../skins/default/xui/zh/floater_select_key.xml | 2 +- .../skins/default/xui/zh/floater_sell_land.xml | 2 +- .../skins/default/xui/zh/floater_snapshot.xml | 12 +- .../skins/default/xui/zh/floater_sound_preview.xml | 2 +- .../skins/default/xui/zh/floater_sys_well.xml | 4 +- .../skins/default/xui/zh/floater_texture_ctrl.xml | 2 +- .../newview/skins/default/xui/zh/floater_tools.xml | 16 +- indra/newview/skins/default/xui/zh/floater_tos.xml | 2 +- .../skins/default/xui/zh/floater_url_entry.xml | 2 +- .../skins/default/xui/zh/floater_voice_effect.xml | 2 +- .../newview/skins/default/xui/zh/floater_water.xml | 2 +- .../default/xui/zh/floater_whitelist_entry.xml | 2 +- .../default/xui/zh/floater_windlight_options.xml | 4 +- .../skins/default/xui/zh/floater_window_size.xml | 2 +- .../skins/default/xui/zh/menu_attachment_other.xml | 4 +- .../skins/default/xui/zh/menu_avatar_other.xml | 4 +- .../skins/default/xui/zh/menu_bottomtray.xml | 14 +- indra/newview/skins/default/xui/zh/menu_edit.xml | 2 +- .../skins/default/xui/zh/menu_hide_navbar.xml | 6 +- .../skins/default/xui/zh/menu_imchiclet_adhoc.xml | 2 +- .../skins/default/xui/zh/menu_imchiclet_group.xml | 4 +- .../skins/default/xui/zh/menu_imchiclet_p2p.xml | 4 +- .../default/xui/zh/menu_inspect_avatar_gear.xml | 6 +- .../newview/skins/default/xui/zh/menu_landmark.xml | 2 +- indra/newview/skins/default/xui/zh/menu_login.xml | 10 +- .../skins/default/xui/zh/menu_nearby_chat.xml | 2 +- indra/newview/skins/default/xui/zh/menu_object.xml | 24 +- .../skins/default/xui/zh/menu_profile_overflow.xml | 6 +- .../default/xui/zh/menu_teleport_history_tab.xml | 2 +- .../skins/default/xui/zh/menu_url_agent.xml | 2 +- .../skins/default/xui/zh/menu_url_objectim.xml | 2 +- indra/newview/skins/default/xui/zh/menu_viewer.xml | 26 +- indra/newview/skins/default/xui/zh/mime_types.xml | 20 +- .../skins/default/xui/zh/mime_types_linux.xml | 22 +- .../skins/default/xui/zh/mime_types_mac.xml | 20 +- .../newview/skins/default/xui/zh/notifications.xml | 374 ++++++++++----------- .../default/xui/zh/panel_body_parts_list_item.xml | 4 +- .../skins/default/xui/zh/panel_bottomtray.xml | 2 +- .../skins/default/xui/zh/panel_bottomtray_lite.xml | 2 +- .../xui/zh/panel_clothing_list_button_bar.xml | 2 +- .../skins/default/xui/zh/panel_edit_classified.xml | 6 +- .../skins/default/xui/zh/panel_edit_pick.xml | 4 +- .../skins/default/xui/zh/panel_edit_profile.xml | 16 +- .../skins/default/xui/zh/panel_edit_wearable.xml | 8 +- .../skins/default/xui/zh/panel_group_general.xml | 18 +- .../default/xui/zh/panel_group_info_sidetray.xml | 8 +- .../skins/default/xui/zh/panel_group_invite.xml | 4 +- .../skins/default/xui/zh/panel_group_notices.xml | 24 +- .../skins/default/xui/zh/panel_group_roles.xml | 34 +- .../skins/default/xui/zh/panel_landmarks.xml | 2 +- .../xui/zh/panel_media_settings_permissions.xml | 6 +- .../skins/default/xui/zh/panel_navigation_bar.xml | 8 +- indra/newview/skins/default/xui/zh/panel_notes.xml | 2 +- .../newview/skins/default/xui/zh/panel_people.xml | 4 +- .../newview/skins/default/xui/zh/panel_places.xml | 2 +- .../default/xui/zh/panel_preferences_advanced.xml | 2 +- .../default/xui/zh/panel_preferences_chat.xml | 4 +- .../default/xui/zh/panel_preferences_general.xml | 4 +- .../default/xui/zh/panel_preferences_graphics1.xml | 6 +- .../default/xui/zh/panel_preferences_privacy.xml | 2 +- .../default/xui/zh/panel_preferences_sound.xml | 2 +- .../newview/skins/default/xui/zh/panel_profile.xml | 4 +- .../skins/default/xui/zh/panel_profile_view.xml | 4 +- .../skins/default/xui/zh/panel_region_debug.xml | 2 +- .../skins/default/xui/zh/panel_region_estate.xml | 24 +- .../skins/default/xui/zh/panel_region_general.xml | 2 +- .../skins/default/xui/zh/panel_region_terrain.xml | 4 +- .../skins/default/xui/zh/panel_script_ed.xml | 6 +- .../xui/zh/panel_script_limits_region_memory.xml | 10 +- .../skins/default/xui/zh/panel_side_tray.xml | 10 +- .../newview/skins/default/xui/zh/role_actions.xml | 12 +- .../skins/default/xui/zh/sidepanel_item_info.xml | 2 +- .../skins/default/xui/zh/sidepanel_task_info.xml | 2 +- indra/newview/skins/default/xui/zh/strings.xml | 128 +++---- 106 files changed, 600 insertions(+), 600 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml index 229297e39b..58e8c41c38 100644 --- a/indra/newview/skins/default/xui/zh/floater_about.xml +++ b/indra/newview/skins/default/xui/zh/floater_about.xml @@ -13,11 +13,11 @@ [[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] </floater.string> <floater.string name="AboutSystem"> - CPU: [CPU] -Memory: [MEMORY_MB] MB -OS Version: [OS_VERSION] -Graphics Card Vendor: [GRAPHICS_CARD_VENDOR] -Graphics Card: [GRAPHICS_CARD] + CPU:[CPU] +記憶體:[MEMORY_MB] MB +作業系統版本:[OS_VERSION] +顯示卡供應商:[GRAPHICS_CARD_VENDOR] +顯示卡:[GRAPHICS_CARD] </floater.string> <floater.string name="AboutDriver"> Windows Graphics Driver Version: [GRAPHICS_DRIVER_VERSION] diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml index c0c5494c91..a9142b22ad 100644 --- a/indra/newview/skins/default/xui/zh/floater_about_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml @@ -132,10 +132,10 @@ 0 </text> <button label="購買土地" name="Buy Land..."/> - <button label="Script Info" name="Scripts..."/> + <button label="腳本資訊" name="Scripts..."/> <button label="Buy For Group" name="Buy For Group..."/> - <button label="Buy Pass" name="Buy Pass..." tool_tip="A pass gives you temporary access to this land."/> - <button label="Abandon Land" name="Abandon Land..."/> + <button label="購買通行權" name="Buy Pass..." tool_tip="A pass gives you temporary access to this land."/> + <button label="放棄土地" name="Abandon Land..."/> <button label="Reclaim Land" name="Reclaim Land..."/> <button label="Linden Sale" name="Linden Sale..." tool_tip="Land must be owned, set content, and not already for auction."/> </panel> @@ -201,7 +201,7 @@ Land in this region may not be joined/subdivided. </text> </panel> - <panel label="OBJECTS" name="land_objects_panel"> + <panel label="物件" name="land_objects_panel"> <panel.string name="objects_available_text"> [COUNT] out of [MAX] ([AVAILABLE] available) </panel.string> @@ -235,24 +235,24 @@ <text name="owner_objects_text"> [COUNT] </text> - <button label="Show" label_selected="Show" name="ShowOwner"/> - <button label="Return" name="ReturnOwner..." tool_tip="Return objects to their owners."/> + <button label="顯示" label_selected="顯示" name="ShowOwner"/> + <button label="退回" name="ReturnOwner..." tool_tip="Return objects to their owners."/> <text name="Set to group:"> Set to group: </text> <text name="group_objects_text"> [COUNT] </text> - <button label="Show" label_selected="Show" name="ShowGroup"/> - <button label="Return" name="ReturnGroup..." tool_tip="Return objects to their owners."/> + <button label="顯示" label_selected="顯示" name="ShowGroup"/> + <button label="退回" name="ReturnGroup..." tool_tip="Return objects to their owners."/> <text name="Owned by others:"> Owned by others: </text> <text name="other_objects_text"> [COUNT] </text> - <button label="Show" label_selected="Show" name="ShowOther"/> - <button label="Return" name="ReturnOther..." tool_tip="Return objects to their owners."/> + <button label="顯示" label_selected="顯示" name="ShowOther"/> + <button label="退回" name="ReturnOther..." tool_tip="Return objects to their owners."/> <text name="Selected / sat upon:"> Selected / sat upon: </text> @@ -301,10 +301,10 @@ Only large parcels can be listed in search. (無) </panel.string> <panel.string name="push_restrict_text"> - No Pushing + 禁止推撞 </panel.string> <panel.string name="push_restrict_region_text"> - No Pushing (Region Override) + 禁止推撞(地區設定覆蓋) </panel.string> <text name="allow_label"> Allow other Residents to: @@ -314,26 +314,26 @@ Only large parcels can be listed in search. <text name="allow_label2"> 建造: </text> - <check_box label="Everyone" name="edit objects check"/> + <check_box label="任何人" name="edit objects check"/> <check_box label="社團" name="edit group objects check"/> <text name="allow_label3"> Object Entry: </text> - <check_box label="Everyone" name="all object entry check"/> + <check_box label="任何人" name="all object entry check"/> <check_box label="社團" name="group object entry check"/> <text name="allow_label4"> Run Scripts: </text> - <check_box label="Everyone" name="check other scripts"/> + <check_box label="任何人" name="check other scripts"/> <check_box label="社團" name="check group scripts"/> <text name="land_options_label"> Land Options: </text> - <check_box label="Safe (no damage)" name="check safe" tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled."/> - <check_box label="No Pushing" name="PushRestrictCheck" tool_tip="Prevents scripts from pushing. Checking this option may be useful for preventing disruptive behavior on your land."/> - <check_box label="Show Place in Search (L$30/week)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> + <check_box label="安全(無傷害)" name="check safe" tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled."/> + <check_box label="禁止推撞" name="PushRestrictCheck" tool_tip="Prevents scripts from pushing. Checking this option may be useful for preventing disruptive behavior on your land."/> + <check_box label="將地點刊登顯示在搜尋中(L$30 / 每週)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> <combo_box name="land category with adult"> - <combo_box.item label="Any Category" name="item0"/> + <combo_box.item label="任何類別" name="item0"/> <combo_box.item label="Linden Location" name="item1"/> <combo_box.item label="Adult" name="item2"/> <combo_box.item label="Arts & Culture" name="item3"/> @@ -349,7 +349,7 @@ Only large parcels can be listed in search. <combo_box.item label="Other" name="item12"/> </combo_box> <combo_box name="land category"> - <combo_box.item label="Any Category" name="item0"/> + <combo_box.item label="任何類別" name="item0"/> <combo_box.item label="Linden Location" name="item1"/> <combo_box.item label="Arts & Culture" name="item3"/> <combo_box.item label="Business" name="item4"/> @@ -365,11 +365,11 @@ Only large parcels can be listed in search. </combo_box> <check_box label="Moderate Content" name="MatureCheck" tool_tip=" "/> <text name="Snapshot:"> - Snapshot: + 快照: </text> <texture_picker name="snapshot_ctrl" tool_tip="點擊以挑選圖片"/> <text name="landing_point"> - Landing Point: [LANDING] + 登陸點:[LANDING] </text> <button label="設定" label_selected="設定" name="Set" tool_tip="Sets the landing point where visitors arrive. Sets to your avatar's location inside this parcel."/> <button label="清除" label_selected="清除" name="Clear" tool_tip="清除登陸點"/> @@ -409,7 +409,7 @@ Only large parcels can be listed in search. <spinner name="media_size_width" tool_tip="Size to render Web media, leave 0 for default."/> <spinner name="media_size_height" tool_tip="Size to render Web media, leave 0 for default."/> <text name="pixels"> - pixels + 像素 </text> <text name="Options:"> Options: @@ -470,8 +470,8 @@ Only large parcels can be listed in search. Banned Residents </text> <name_list name="BannedList" tool_tip="([LISTED] listed, [MAX] max)"/> - <button label="Add" name="add_banned"/> - <button label="Remove" label_selected="Remove" name="remove_banned"/> + <button label="添加" name="add_banned"/> + <button label="移除" label_selected="移除" name="remove_banned"/> </panel> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml index bcb5606b60..b4d7f71eec 100644 --- a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml @@ -182,5 +182,5 @@ Maximum animation length is [MAX_LENGTH] seconds. We recommend BVH files exported from Poser 4. </text> <button label="上傳(L$[AMOUNT])" name="ok_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml index 2ffcaf5b55..90fd7c029e 100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml @@ -10,23 +10,23 @@ No results </floater.string> <floater.string name="searching"> - Searching... + 搜尋中... </floater.string> <string name="Select"> - Select + 選擇 </string> <string name="Close"> 關閉 </string> <tab_container name="ResidentChooserTabs"> - <panel label="Search" name="SearchPanel"> + <panel label="搜尋" name="SearchPanel"> <text name="InstructSearchResidentName"> Type part of a person's name: </text> <button label="Go" label_selected="Go" name="Find"/> <scroll_list name="SearchResults"> <columns label="名稱" name="name"/> - <columns label="Username" name="username"/> + <columns label="使用者名稱" name="username"/> </scroll_list> </panel> <panel label="Friends" name="FriendsPanel"> @@ -44,10 +44,10 @@ </text> <scroll_list name="NearMe"> <columns label="名稱" name="name"/> - <columns label="Username" name="username"/> + <columns label="使用者名稱" name="username"/> </scroll_list> </panel> </tab_container> <button label="確定" label_selected="確定" name="ok_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> </floater> 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 ffdd957f91..629b0d17d5 100644 --- a/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/zh/floater_bulk_perms.xml @@ -12,14 +12,14 @@ <floater.string name="done_text"> Finished permission change requests. </floater.string> - <icon name="icon_animation" tool_tip="Animation"/> + <icon name="icon_animation" tool_tip="動作"/> <icon name="icon_bodypart" tool_tip="身體部位"/> <icon name="icon_clothing" tool_tip="服裝"/> <icon name="icon_gesture" tool_tip="姿勢"/> - <icon name="icon_notecard" tool_tip="Notecards"/> - <icon name="icon_object" tool_tip="Objects"/> - <icon name="icon_script" tool_tip="Scripts"/> - <icon name="icon_sound" tool_tip="Sounds"/> + <icon name="icon_notecard" tool_tip="記事卡"/> + <icon name="icon_object" tool_tip="物件"/> + <icon name="icon_script" tool_tip="腳本"/> + <icon name="icon_sound" tool_tip="聲音"/> <icon name="icon_texture" tool_tip="材質"/> <button label="√ 全部" name="check_all"/> <button label="清除" label_selected="無" name="check_none"/> @@ -41,5 +41,5 @@ <check_box label="覆製" name="next_owner_copy"/> <check_box initial_value="true" label="轉移" name="next_owner_transfer" tool_tip="Next owner can give away or resell this object"/> <button label="確定" name="apply"/> - <button label="取銷" name="close"/> + <button label="取消" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml index a00f069e6c..44d3394a52 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_contents.xml @@ -17,5 +17,5 @@ </text> <check_box label="立即穿上服裝" name="wear_check"/> <button label="購買" label_selected="購買" name="buy_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml index bebc17a5cc..0c4514600f 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml @@ -58,7 +58,7 @@ You aren't buying enough L$. Please increase the amount. </text> <button label="立即購買" name="buy_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> <text name="info_cannot_buy"> Unable to Buy </text> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/indra/newview/skins/default/xui/zh/floater_buy_land.xml index a75d33136d..023c531692 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_land.xml @@ -71,10 +71,10 @@ Try selecting a smaller area. Your account must be upgraded to own land. </floater.string> <floater.string name="cant_own_land"> - Your account can own land. + 你的帳戶能擁有土地。 </floater.string> <floater.string name="land_holdings"> - You hold [BUYER] m² of land. + 你持有 [BUYER] m² 土地。 </floater.string> <floater.string name="pay_to_for_land"> Pay L$ [AMOUNT] to [SELLER] for this land @@ -190,7 +190,7 @@ sold with objects <text name="error_message"> Something ain't right. </text> - <button label="Go to website" name="error_web"/> + <button label="前往網站" name="error_web"/> <text name="account_action"> Upgrade you to premium membership. </text> @@ -229,5 +229,5 @@ This parcel is 512 m² of land. </text> <check_box label="Remove [AMOUNT] m² of contribution from group." name="remove_contribution"/> <button label="Purchase" name="buy_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_object.xml b/indra/newview/skins/default/xui/zh/floater_buy_object.xml index 559982b6c9..ef8bc183a4 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_object.xml @@ -25,5 +25,5 @@ [NAME]? </text> <button label="購買" label_selected="購買" name="buy_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_choose_group.xml b/indra/newview/skins/default/xui/zh/floater_choose_group.xml index dea0a7c318..9968565bf2 100644 --- a/indra/newview/skins/default/xui/zh/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/zh/floater_choose_group.xml @@ -4,5 +4,5 @@ 選擇一個社團: </text> <button label="確定" label_selected="確定" name="OK"/> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_color_picker.xml b/indra/newview/skins/default/xui/zh/floater_color_picker.xml index f6f2f0187d..a7ac78e419 100644 --- a/indra/newview/skins/default/xui/zh/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/zh/floater_color_picker.xml @@ -20,7 +20,7 @@ </text> <check_box label="立即套用" name="apply_immediate"/> <button label="確定" label_selected="確定" name="select_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> <text name="Current color:"> 目前顏色: </text> diff --git a/indra/newview/skins/default/xui/zh/floater_display_name.xml b/indra/newview/skins/default/xui/zh/floater_display_name.xml index 5a89ecaa82..e12fc21166 100644 --- a/indra/newview/skins/default/xui/zh/floater_display_name.xml +++ b/indra/newview/skins/default/xui/zh/floater_display_name.xml @@ -14,5 +14,5 @@ </text> <button label="儲存" name="save_btn" tool_tip="Save your new Display Name"/> <button label="Reset" name="reset_btn" tool_tip="Make Display Name the same as Username"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_gesture.xml b/indra/newview/skins/default/xui/zh/floater_gesture.xml index 901770586a..2dcb46fb77 100644 --- a/indra/newview/skins/default/xui/zh/floater_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_gesture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Places" name="gestures" title="姿勢"> +<floater label="地點" name="gestures" title="姿勢"> <floater.string name="loading"> 載入中... </floater.string> diff --git a/indra/newview/skins/default/xui/zh/floater_god_tools.xml b/indra/newview/skins/default/xui/zh/floater_god_tools.xml index a501a4257a..86403494e0 100644 --- a/indra/newview/skins/default/xui/zh/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_god_tools.xml @@ -55,7 +55,7 @@ <text name="region name"> Welsh </text> - <check_box label="Disable Scripts" name="disable scripts" tool_tip="Set this to disable all scripts in this region"/> + <check_box label="關閉腳本" name="disable scripts" tool_tip="關閉這個地區現在的全部腳本"/> <check_box label="Disable Collisions" name="disable collisions" tool_tip="Set this to disable non-agent collisions in this region"/> <check_box label="Disable Physics" name="disable physics" tool_tip="Set this to disable all physics in this region"/> <button label="套用" label_selected="套用" name="Apply" tool_tip="Click here to apply any changes from above"/> diff --git a/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/indra/newview/skins/default/xui/zh/floater_image_preview.xml index 98e4e5c2cd..7eef0177ef 100644 --- a/indra/newview/skins/default/xui/zh/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_image_preview.xml @@ -7,10 +7,10 @@ 描述: </text> <text name="preview_label"> - Preview image as: + 預覽圖像為: </text> <combo_box label="服裝類型" name="clothing_type_combo"> - <item label="Image" name="Image" value="Image"/> + <item label="圖像" name="Image" value="圖像"/> <item label="Hair" name="Hair" value="Hair"/> <item label="Female Head" name="FemaleHead" value="Female Head"/> <item label="Female Upper Body" name="FemaleUpperBody" value="Female Upper Body"/> @@ -22,11 +22,11 @@ <item label="Sculpted Prim" name="SculptedPrim" value="Sculpted Prim"/> </combo_box> <text name="bad_image_text"> - Unable to read image. + 無法讀取圖像。 -Try saving image as 24 bit Targa (.tga). +請嘗試儲存圖像為 24 位元 Targa(.tga)格式。 </text> <check_box label="Use lossless compression" name="lossless_check"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> <button label="上傳(L$[AMOUNT])" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_joystick.xml b/indra/newview/skins/default/xui/zh/floater_joystick.xml index 83bd4e2bca..1721f7cd1e 100644 --- a/indra/newview/skins/default/xui/zh/floater_joystick.xml +++ b/indra/newview/skins/default/xui/zh/floater_joystick.xml @@ -75,5 +75,5 @@ </text> <button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/> <button label="確定" label_selected="確定" name="ok_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml index 261ba8ebc3..6e58e7332f 100644 --- a/indra/newview/skins/default/xui/zh/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/zh/floater_lagmeter.xml @@ -115,7 +115,7 @@ 可能原因:地區有太多移動的人 </floater.string> <floater.string name="server_images_cause_msg"> - 可能原因:太多影像計算 + 可能原因:太多圖像計算 </floater.string> <floater.string name="server_generic_cause_msg"> 可能原因:模擬器負載過重 diff --git a/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml index 6c8bd76a8a..e6f6e32352 100644 --- a/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/zh/floater_live_lsleditor.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="SCRIPT: NEW SCRIPT"> +<floater name="script ed float" title="腳本: 新腳本"> <floater.string name="not_allowed"> You can not view or edit this script, since it has been set as "no copy". You need full permissions to view or edit a script inside an object. </floater.string> <floater.string name="script_running"> - Running + 執行中 </floater.string> <floater.string name="Title"> - SCRIPT: [NAME] + 腳本:[NAME] </floater.string> <button label="Reset" label_selected="Reset" name="Reset"/> <check_box initial_value="true" label="Running" name="running"/> diff --git a/indra/newview/skins/default/xui/zh/floater_media_settings.xml b/indra/newview/skins/default/xui/zh/floater_media_settings.xml index 821b93c06f..f42c0af3d9 100644 --- a/indra/newview/skins/default/xui/zh/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/zh/floater_media_settings.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="media_settings" title="MEDIA SETTINGS"> <button label="確定" label_selected="確定" name="OK"/> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> <button label="套用" label_selected="套用" name="Apply"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_mute_object.xml b/indra/newview/skins/default/xui/zh/floater_mute_object.xml index a2a56f769e..7d76f4de08 100644 --- a/indra/newview/skins/default/xui/zh/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_mute_object.xml @@ -10,5 +10,5 @@ * Only blocks object text, not sounds </text> <button label="確定" name="OK"/> - <button label="取銷" name="Cancel"/> + <button label="取消" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_openobject.xml b/indra/newview/skins/default/xui/zh/floater_openobject.xml index 024ef0b102..61ac3cb1fc 100644 --- a/indra/newview/skins/default/xui/zh/floater_openobject.xml +++ b/indra/newview/skins/default/xui/zh/floater_openobject.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="objectcontents" title="OBJECT CONTENTS"> +<floater name="objectcontents" title="物件內容"> <text name="object_name"> [DESC]: </text> diff --git a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml index feb68f2b0f..e33183a0dc 100644 --- a/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/zh/floater_outfit_save_as.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container" title="儲存裝扮"> <button label="儲存" label_selected="儲存" name="Save"/> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> <text name="Save item as:"> 儲存我正在穿的為新裝扮: </text> diff --git a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml index 0cc7bbcfe0..8b15668e3b 100644 --- a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml @@ -36,5 +36,5 @@ <text name="leaving"> Leaving [CURRENT_CHAT]. </text> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay.xml b/indra/newview/skins/default/xui/zh/floater_pay.xml index 9374ac3f3b..eeaaf0ab7d 100644 --- a/indra/newview/skins/default/xui/zh/floater_pay.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay.xml @@ -17,5 +17,5 @@ Or, choose amount: </text> <button label="Pay" label_selected="Pay" name="pay btn"/> - <button label="取銷" label_selected="取銷" name="cancel btn"/> + <button label="取消" label_selected="取消" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay_object.xml b/indra/newview/skins/default/xui/zh/floater_pay_object.xml index fbb6a8ab36..234aa9f7af 100644 --- a/indra/newview/skins/default/xui/zh/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay_object.xml @@ -12,7 +12,7 @@ <text name="object_name_label"> Via object: </text> - <icon name="icon_object" tool_tip="Objects"/> + <icon name="icon_object" tool_tip="物件"/> <text name="object_name_text"> My awesome object with a really damn long name </text> @@ -24,5 +24,5 @@ 或者,選擇一個金額: </text> <button label="Pay" label_selected="Pay" name="pay btn"/> - <button label="取銷" label_selected="取銷" name="cancel btn"/> + <button label="取消" label_selected="取消" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml b/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml index 8d44d474c0..31b8133a18 100644 --- a/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/zh/floater_perm_prefs.xml @@ -11,5 +11,5 @@ <check_box initial_value="true" label="轉售 / 送人" name="next_owner_transfer"/> </panel> <button label="確定" label_selected="確定" name="ok"/> - <button label="取銷" label_selected="取銷" name="cancel"/> + <button label="取消" label_selected="取消" name="cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_postcard.xml b/indra/newview/skins/default/xui/zh/floater_postcard.xml index c85ca93e85..6f6b75f468 100644 --- a/indra/newview/skins/default/xui/zh/floater_postcard.xml +++ b/indra/newview/skins/default/xui/zh/floater_postcard.xml @@ -7,27 +7,27 @@ Check this out! </floater.string> <floater.string name="upload_message"> - Sending... + 傳送中... </floater.string> <text name="to_label"> - Recipient's Email: + 收件人電子郵件地址: </text> <text name="from_label"> - Your Email: + 你的電子郵件地址: </text> <text name="name_label"> - Your Name: + 你的名稱: </text> <text name="subject_label"> - Subject: + 主旨: </text> - <line_editor label="Type your subject here." name="subject_form"/> + <line_editor label="在此輸入你的主旨。" name="subject_form"/> <text name="msg_label"> - Message: + 訓息: </text> <text_editor name="msg_form"> - Type your message here. + 在此輸入你的訊息。 </text_editor> - <button label="取銷" name="cancel_btn"/> - <button label="Send" name="send_btn"/> + <button label="取消" name="cancel_btn"/> + <button label="送出" name="send_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_preferences.xml b/indra/newview/skins/default/xui/zh/floater_preferences.xml index 777425ba30..396a4893e0 100644 --- a/indra/newview/skins/default/xui/zh/floater_preferences.xml +++ b/indra/newview/skins/default/xui/zh/floater_preferences.xml @@ -1,17 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Preferences" title="PREFERENCES"> +<floater name="Preferences" title="偏好設定"> <button label="確定" label_selected="確定" name="OK"/> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> <tab_container name="pref core"> <panel label="一般" name="general"/> - <panel label="Graphics" name="display"/> - <panel label="Sound & Media" name="audio"/> + <panel label="圖形" name="display"/> + <panel label="聲音與媒體" name="audio"/> <panel label="聊天" name="chat"/> - <panel label="Move & View" name="move"/> - <panel label="Notifications" name="msgs"/> - <panel label="Colors" name="colors"/> - <panel label="Privacy" name="im"/> - <panel label="Setup" name="input"/> - <panel label="Advanced" name="advanced1"/> + <panel label="移動與視角" name="move"/> + <panel label="通知" name="msgs"/> + <panel label="顏色" name="colors"/> + <panel label="隱私" name="im"/> + <panel label="設定" name="input"/> + <panel label="進階" name="advanced1"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml index 08d56be302..3c2f913a6d 100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml @@ -7,7 +7,7 @@ You do not have permission to view this notecard. </floater.string> <floater.string name="Title"> - Notecard: [NAME] + 記事卡: [NAME] </floater.string> <text name="desc txt"> 描述: diff --git a/indra/newview/skins/default/xui/zh/floater_publish_classified.xml b/indra/newview/skins/default/xui/zh/floater_publish_classified.xml index 45bbe7b979..acec1efcb0 100644 --- a/indra/newview/skins/default/xui/zh/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/zh/floater_publish_classified.xml @@ -7,5 +7,5 @@ Remember, Classified fees are non-refundable. </text> <spinner label="價格: L$" name="price_for_listing" tool_tip="Price for listing." value="50"/> <button label="Publish" name="publish_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml index da89cd80ad..436f5cdcc5 100644 --- a/indra/newview/skins/default/xui/zh/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/zh/floater_report_abuse.xml @@ -90,5 +90,5 @@ * Incomplete reports won't be investigated </text> <button label="舉報濫用" label_selected="舉報濫用" name="send_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_script_search.xml b/indra/newview/skins/default/xui/zh/floater_script_search.xml index b6671df0e2..400ef4be81 100644 --- a/indra/newview/skins/default/xui/zh/floater_script_search.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_search.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script search" title="SCRIPT SEARCH"> +<floater name="script search" title="腳本搜尋"> <check_box label="Case Insensitive" name="case_text"/> - <button label="Search" label_selected="Search" name="search_btn"/> + <button label="搜尋" label_selected="搜尋" name="search_btn"/> <button label="取代" label_selected="取代" name="replace_btn"/> <button label="全部取代" label_selected="全部取代" name="replace_all_btn"/> <text name="txt"> - Search + 搜尋 </text> <text name="txt2"> 取代 diff --git a/indra/newview/skins/default/xui/zh/floater_select_key.xml b/indra/newview/skins/default/xui/zh/floater_select_key.xml index 1452f744da..c1661635f1 100644 --- a/indra/newview/skins/default/xui/zh/floater_select_key.xml +++ b/indra/newview/skins/default/xui/zh/floater_select_key.xml @@ -3,5 +3,5 @@ <text name="Save item as:"> Press a key to set your Speak button trigger. </text> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_sell_land.xml b/indra/newview/skins/default/xui/zh/floater_sell_land.xml index 2d3f5066bc..b6a929caeb 100644 --- a/indra/newview/skins/default/xui/zh/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_sell_land.xml @@ -59,7 +59,7 @@ REMEMBER: All sales are final. </text> <button label="Set Land For Sale" name="sell_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </panel> </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_snapshot.xml b/indra/newview/skins/default/xui/zh/floater_snapshot.xml index b4216cf5b2..c9a66c1644 100644 --- a/indra/newview/skins/default/xui/zh/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/zh/floater_snapshot.xml @@ -12,14 +12,14 @@ [SIZE] KB </text> <button label="Send" name="send_btn"/> - <button label="Save (L$[AMOUNT])" name="upload_btn"/> - <flyout_button label="儲存" name="save_btn" tool_tip="Save image to a file"> + <button label="儲存(L$[AMOUNT])" name="upload_btn"/> + <flyout_button label="儲存" name="save_btn" tool_tip="儲存圖像到檔案"> <flyout_button.item label="儲存" name="save_item"/> <flyout_button.item label="另存..." name="saveas_item"/> </flyout_button> <button label="更多" name="more_btn" tool_tip="進階選項"/> <button label="更少" name="less_btn" tool_tip="進階選項"/> - <button label="取銷" name="discard_btn"/> + <button label="取消" name="discard_btn"/> <text name="type_label2"> 尺寸 </text> @@ -58,17 +58,17 @@ <spinner label="Width" name="snapshot_width"/> <spinner label="Height" name="snapshot_height"/> <check_box label="Constrain proportions" name="keep_aspect_check"/> - <slider label="Image quality" name="image_quality_slider"/> + <slider label="圖像品質" name="image_quality_slider"/> <text name="layer_type_label"> Capture: </text> - <combo_box label="Image Layers" name="layer_types"> + <combo_box label="圖層" name="layer_types"> <combo_box.item label="Colors" name="Colors"/> <combo_box.item label="Depth" name="Depth"/> </combo_box> <check_box label="Interface" name="ui_check"/> <check_box label="HUDs" name="hud_check"/> <check_box label="Keep open after saving" name="keep_open_check"/> - <check_box label="Freeze frame (fullscreen)" name="freeze_frame_check"/> + <check_box label="凍結框架(全螢幕)" name="freeze_frame_check"/> <check_box label="Auto-refresh" name="auto_snapshot_check"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_sound_preview.xml b/indra/newview/skins/default/xui/zh/floater_sound_preview.xml index 269cd5db08..c942ba1cfb 100644 --- a/indra/newview/skins/default/xui/zh/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_sound_preview.xml @@ -7,5 +7,5 @@ 描述: </text> <button label="上傳(L$[AMOUNT])" name="ok_btn"/> - <button label="取銷" label_selected="取銷" name="cancel_btn"/> + <button label="取消" label_selected="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_sys_well.xml b/indra/newview/skins/default/xui/zh/floater_sys_well.xml index dbdd32974c..fd27e944ac 100644 --- a/indra/newview/skins/default/xui/zh/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/zh/floater_sys_well.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="sys_well_window" title="NOTIFICATIONS"> +<floater name="sys_well_window" title="通知"> <string name="title_im_well_window"> CONVERSATIONS </string> <string name="title_notification_well_window"> - NOTIFICATIONS + 通知 </string> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml index aaf6ecd7cf..fc00b0b4a2 100644 --- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml @@ -19,5 +19,5 @@ <filter_editor label="材質過濾器" name="inventory search editor"/> <check_box initial_value="false" label="顯示資料夾" name="show_folders_check"/> <button label="確定" label_selected="確定" name="Select"/> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml index feee659736..7ba1a0d6c4 100644 --- a/indra/newview/skins/default/xui/zh/floater_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" short_title="BUILD TOOLS"> +<floater name="toolbox floater" short_title="建造工具"> <floater.string name="status_rotate"> Drag colored bands to rotate object </floater.string> @@ -60,7 +60,7 @@ </radio_group> <radio_group name="edit_radio_group"> <radio_item label="移動" name="radio position"/> - <radio_item label="Rotate (Ctrl)" name="radio rotate"/> + <radio_item label="旋轉(Ctrl)" name="radio rotate"/> <radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/> <radio_item label="Select Face" name="radio select face"/> </radio_group> @@ -202,10 +202,10 @@ <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="價格: L$" name="Edit Cost"/> - <check_box label="Show in search" name="search_check" tool_tip="Let people see this object in search results"/> + <check_box label="顯示在搜尋中" name="search_check" tool_tip="Let people see this object in search results"/> <panel name="perms_build"> <text name="perm_modify"> - You can modify this object + 你可以修改這個物件 </text> <text name="Anyone can:"> 任何人: @@ -239,10 +239,10 @@ </panel> </panel> <panel label="Object" name="Object"> - <check_box label="Locked" name="checkbox locked" tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits."/> - <check_box label="Physical" name="Physical Checkbox Ctrl" tool_tip="Allows object to be pushed and affected by gravity"/> - <check_box label="Temporary" name="Temporary Checkbox Ctrl" tool_tip="Causes object to be deleted 1 minute after creation"/> - <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Causes object to not collide with other objects or avatars"/> + <check_box label="鎖定" name="checkbox locked" tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits."/> + <check_box label="物理性" name="Physical Checkbox Ctrl" tool_tip="Allows object to be pushed and affected by gravity"/> + <check_box label="暫時性" name="Temporary Checkbox Ctrl" tool_tip="Causes object to be deleted 1 minute after creation"/> + <check_box label="幻影性" name="Phantom Checkbox Ctrl" tool_tip="Causes object to not collide with other objects or avatars"/> <text name="label position"> Position (meters) </text> diff --git a/indra/newview/skins/default/xui/zh/floater_tos.xml b/indra/newview/skins/default/xui/zh/floater_tos.xml index acc61a7961..5f9e16afe1 100644 --- a/indra/newview/skins/default/xui/zh/floater_tos.xml +++ b/indra/newview/skins/default/xui/zh/floater_tos.xml @@ -7,7 +7,7 @@ data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E </floater.string> <button label="繼續" label_selected="繼續" name="Continue"/> - <button label="取銷" label_selected="取銷" name="Cancel"/> + <button label="取消" label_selected="取消" name="Cancel"/> <check_box label="我同意接受服務條款及隱私政策" name="agree_chk"/> <text name="tos_heading"> 請謹慎閱讀以下的服務條款及隱私政策。要繼續登入到 [SECOND_LIFE],你必須接受這些協議。 diff --git a/indra/newview/skins/default/xui/zh/floater_url_entry.xml b/indra/newview/skins/default/xui/zh/floater_url_entry.xml index 2b4f5ea11d..04945ac83b 100644 --- a/indra/newview/skins/default/xui/zh/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/zh/floater_url_entry.xml @@ -4,7 +4,7 @@ Media URL: </text> <button label="" name="ok_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> <button label="清除" name="clear_btn"/> <text name="loading_label"> 載入中... diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml index b9021d25d9..e45c7c59ac 100644 --- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Places" name="voice_effects" title="語音變聲"> +<floater label="地點" name="voice_effects" title="語音變聲"> <string name="no_voice_effect"> (No Voice Morph) </string> diff --git a/indra/newview/skins/default/xui/zh/floater_water.xml b/indra/newview/skins/default/xui/zh/floater_water.xml index 8e790f8dad..fba0415967 100644 --- a/indra/newview/skins/default/xui/zh/floater_water.xml +++ b/indra/newview/skins/default/xui/zh/floater_water.xml @@ -43,7 +43,7 @@ Blur Multiplier </text> </panel> - <panel label="IMAGE" name="Waves"> + <panel label="圖像" name="Waves"> <text name="BHText"> Big Wave Direction </text> diff --git a/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml index ea360be6c9..36e00049f0 100644 --- a/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/zh/floater_whitelist_entry.xml @@ -5,5 +5,5 @@ </text> <line_editor name="whitelist_entry" tool_tip="Enter a URL or URL pattern to White List"/> <button label="確定" name="ok_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_windlight_options.xml b/indra/newview/skins/default/xui/zh/floater_windlight_options.xml index d292386323..fce851cc90 100644 --- a/indra/newview/skins/default/xui/zh/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/zh/floater_windlight_options.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="WindLight floater" title="ADVANCED SKY EDITOR"> +<floater name="WindLight floater" title="進階天空編輯器"> <floater.string name="WLDefaultSkyNames"> A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor's Delight:Sheer Sensuality </floater.string> <text name="KeyFramePresetsText"> Sky Presets: </text> - <button label="New" label_selected="New" name="WLNewPreset"/> + <button label="新增" label_selected="新增" name="WLNewPreset"/> <button label="儲存" label_selected="儲存" name="WLSavePreset"/> <button label="刪除" label_selected="刪除" name="WLDeletePreset"/> <button label="Day Cycle Editor" label_selected="Day Cycle Editor" name="WLDayCycleMenuButton"/> diff --git a/indra/newview/skins/default/xui/zh/floater_window_size.xml b/indra/newview/skins/default/xui/zh/floater_window_size.xml index 167d4cb858..e47238482f 100644 --- a/indra/newview/skins/default/xui/zh/floater_window_size.xml +++ b/indra/newview/skins/default/xui/zh/floater_window_size.xml @@ -13,5 +13,5 @@ <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> </combo_box> <button label="設定" name="set_btn"/> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </floater> 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 aa803cc49d..cba82e7dce 100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml @@ -8,8 +8,8 @@ <menu_item_call label="邀請加入社團" name="Invite..."/> <menu_item_call label="封鎖" name="Avatar Mute"/> <menu_item_call label="回報" name="abuse"/> - <menu_item_call label="Freeze" name="Freeze..."/> - <menu_item_call label="Eject" name="Eject..."/> + <menu_item_call label="凍結" name="Freeze..."/> + <menu_item_call label="踢出" name="Eject..."/> <menu_item_call label="材質除錯" name="Debug..."/> <menu_item_call label="Zoom In" name="Zoom In"/> <menu_item_call label="Pay" name="Pay..."/> 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 281d357fd3..283367708b 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml @@ -8,8 +8,8 @@ <menu_item_call label="邀請加入社團" name="Invite..."/> <menu_item_call label="Block" name="Avatar Mute"/> <menu_item_call label="回報" name="abuse"/> - <menu_item_call label="Freeze" name="Freeze..."/> - <menu_item_call label="Eject" name="Eject..."/> + <menu_item_call label="凍結" name="Freeze..."/> + <menu_item_call label="踢出" name="Eject..."/> <menu_item_call label="材質除錯" name="Debug..."/> <menu_item_call label="Zoom In" name="Zoom In"/> <menu_item_call label="Pay" name="Pay..."/> diff --git a/indra/newview/skins/default/xui/zh/menu_bottomtray.xml b/indra/newview/skins/default/xui/zh/menu_bottomtray.xml index d55b3afc95..a00aa7cd35 100644 --- a/indra/newview/skins/default/xui/zh/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/zh/menu_bottomtray.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="hide_camera_move_controls_menu"> - <menu_item_check label="Speak Button" name="EnableVoiceChat"/> - <menu_item_check label="Gesture button" name="ShowGestureButton"/> - <menu_item_check label="Move button" name="ShowMoveButton"/> - <menu_item_check label="View button" name="ShowCameraButton"/> - <menu_item_check label="Snapshot button" name="ShowSnapshotButton"/> - <menu_item_check label="Build button" name="ShowBuildButton"/> - <menu_item_check label="Search button" name="ShowSearchButton"/> + <menu_item_check label="講話按鈕" name="EnableVoiceChat"/> + <menu_item_check label="姿勢按鈕" name="ShowGestureButton"/> + <menu_item_check label="移動按鈕" name="ShowMoveButton"/> + <menu_item_check label="視角按鈕" name="ShowCameraButton"/> + <menu_item_check label="快照按鈕" name="ShowSnapshotButton"/> + <menu_item_check label="建造按鈕" name="ShowBuildButton"/> + <menu_item_check label="搜尋按鈕" name="ShowSearchButton"/> <menu_item_check label="地圖按鈕" name="ShowWorldMapButton"/> <menu_item_check label="迷你地圖按鈕" name="ShowMiniMapButton"/> <menu_item_call label="剪下" name="NearbyChatBar_Cut"/> diff --git a/indra/newview/skins/default/xui/zh/menu_edit.xml b/indra/newview/skins/default/xui/zh/menu_edit.xml index 5c5c225c59..d6eb87a6b0 100644 --- a/indra/newview/skins/default/xui/zh/menu_edit.xml +++ b/indra/newview/skins/default/xui/zh/menu_edit.xml @@ -8,5 +8,5 @@ <menu_item_call label="刪除" name="Delete"/> <menu_item_call label="覆製貼上" name="Duplicate"/> <menu_item_call label="全選" name="Select All"/> - <menu_item_call label="取銷選擇" name="Deselect"/> + <menu_item_call label="取消選擇" name="Deselect"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml index f03749533e..dbb8ececaa 100644 --- a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="hide_navbar_menu"> - <menu_item_check label="Show Navigation Bar" name="ShowNavbarNavigationPanel"/> - <menu_item_check label="Show Favorites Bar" name="ShowNavbarFavoritesPanel"/> - <menu_item_check label="Show Mini-Location Bar" name="ShowMiniLocationPanel"/> + <menu_item_check label="顯示導覽列" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="顯示最愛列" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="顯示迷你位置列" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml index 6cf86327be..85417d554e 100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_adhoc.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet AdHoc Menu"> - <menu_item_call label="End Session" name="End Session"/> + <menu_item_call label="結束會話" name="End Session"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml index c208a146d2..2577c582a7 100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_group.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet Group Menu"> <menu_item_call label="社團資訊" name="Show Profile"/> - <menu_item_call label="Show Session" name="Chat"/> - <menu_item_call label="End Session" name="End Session"/> + <menu_item_call label="顯示會話" name="Chat"/> + <menu_item_call label="結束會話" name="End Session"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml index dc933518c0..636bdaae09 100644 --- a/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/zh/menu_imchiclet_p2p.xml @@ -2,6 +2,6 @@ <menu name="IMChiclet P2P Menu"> <menu_item_call label="察看檔案" name="Show Profile"/> <menu_item_call label="加為朋友" name="Add Friend"/> - <menu_item_call label="Show Session" name="Send IM"/> - <menu_item_call label="End Session" name="End Session"/> + <menu_item_call label="顯示會話" name="Send IM"/> + <menu_item_call label="結束會話" name="End Session"/> </menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml index 6d8fbba503..bae7cf3f05 100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml @@ -9,9 +9,9 @@ <menu_item_call label="Block" name="block"/> <menu_item_call label="Unblock" name="unblock"/> <menu_item_call label="回報" name="report"/> - <menu_item_call label="Freeze" name="freeze"/> - <menu_item_call label="Eject" name="eject"/> - <menu_item_call label="踢除" name="kick"/> + <menu_item_call label="凍結" name="freeze"/> + <menu_item_call label="踢出" name="eject"/> + <menu_item_call label="踢出" name="kick"/> <menu_item_call label="CSR" name="csr"/> <menu_item_call label="材質除錯" name="debug"/> <menu_item_call label="Find On Map" name="find_on_map"/> diff --git a/indra/newview/skins/default/xui/zh/menu_landmark.xml b/indra/newview/skins/default/xui/zh/menu_landmark.xml index 97b115151e..5f7657db79 100644 --- a/indra/newview/skins/default/xui/zh/menu_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_landmark.xml @@ -3,5 +3,5 @@ <menu_item_call label="覆製 SLurl" name="copy"/> <menu_item_call label="刪除" name="delete"/> <menu_item_call label="Create Pick" name="pick"/> - <menu_item_call label="Add to Favorites Bar" name="add_to_favbar"/> + <menu_item_call label="添加到最愛列" name="add_to_favbar"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index 436e86cb74..27a0baf560 100644 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> <menu label="自己" name="File"> - <menu_item_call label="Preferences" name="Preferences..."/> - <menu_item_call label="Exit [APP_NAME]" name="Quit"/> + <menu_item_call label="偏好設定" name="Preferences..."/> + <menu_item_call label="結束退出 [APP_NAME]" name="Quit"/> </menu> <menu label="幫助" name="Help"> <menu_item_call label="[SECOND_LIFE] 幫助" name="Second Life Help"/> @@ -10,12 +10,12 @@ </menu> <menu_item_check label="顯示除錯選單" name="Show Debug Menu"/> <menu label="除錯" name="Debug"> - <menu_item_call label="Show Debug Settings" name="Debug Settings"/> + <menu_item_call label="顯示除錯設定" name="Debug Settings"/> <menu_item_call label="UI/Color Settings" name="UI/Color Settings"/> <menu_item_call label="XUI Preview Tool" name="UI Preview Tool"/> - <menu label="UI Tests" name="UI Tests"/> + <menu label="UI 測試" name="UI Tests"/> <menu_item_call label="設定視窗尺寸大小..." name="Set Window Size..."/> - <menu_item_call label="Show TOS" name="TOS"/> + <menu_item_call label="顯示 TOS" name="TOS"/> <menu_item_call label="Show Critical Message" name="Critical"/> <menu_item_call label="Media Browser Test" name="Web Browser Test"/> <menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/> diff --git a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml index 7d8997fafe..cad462eebb 100644 --- a/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml +++ b/indra/newview/skins/default/xui/zh/menu_nearby_chat.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="NearBy Chat Menu"> - <menu_item_call label="Show Nearby People..." name="nearby_people"/> + <menu_item_call label="顯示附近的人..." name="nearby_people"/> <menu_item_check label="Show Blocked Text" name="muted_text"/> <menu_item_check label="Show Buddy Icons" name="show_buddy_icons"/> <menu_item_check label="Show Names" name="show_names"/> diff --git a/indra/newview/skins/default/xui/zh/menu_object.xml b/indra/newview/skins/default/xui/zh/menu_object.xml index 869c5f66fe..ed41a4f0bf 100644 --- a/indra/newview/skins/default/xui/zh/menu_object.xml +++ b/indra/newview/skins/default/xui/zh/menu_object.xml @@ -1,27 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Object Pie"> - <menu_item_call label="Touch" name="Object Touch"/> + <menu_item_call label="觸碰" name="Object Touch"/> <menu_item_call label="編輯" name="Edit..."/> - <menu_item_call label="Build" name="Build"/> - <menu_item_call label="Open" name="Open"/> - <menu_item_call label="Sit Here" name="Object Sit"/> + <menu_item_call label="建造" name="Build"/> + <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="Zoom In" name="Zoom In"/> - <context_menu label="Put On" name="Put On"> - <menu_item_call label="Wear" name="Wear"/> - <menu_item_call label="Add" name="Add"/> + <context_menu label="穿上" name="Put On"> + <menu_item_call label="穿上" name="Wear"/> + <menu_item_call label="添加" name="Add"/> <context_menu label="Attach" name="Object Attach"/> <context_menu label="Attach HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Manage" name="Remove"> + <context_menu label="管理" name="Remove"> <menu_item_call label="舉報濫用" name="Report Abuse..."/> - <menu_item_call label="Block" name="Object Mute"/> - <menu_item_call label="Return" name="Return..."/> + <menu_item_call label="封鎖" name="Object Mute"/> + <menu_item_call label="退回" name="Return..."/> </context_menu> - <menu_item_call label="Take" name="Pie Object Take"/> + <menu_item_call label="取得" name="Pie Object Take"/> <menu_item_call label="取得副本" name="Take Copy"/> - <menu_item_call label="Pay" name="Pay..."/> + <menu_item_call label="支付" name="Pay..."/> <menu_item_call label="購買" name="Buy..."/> <menu_item_call label="刪除" name="Delete"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml index 2c5e3153bf..c06b7dc039 100644 --- a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml @@ -5,8 +5,8 @@ <menu_item_call label="分享" name="share"/> <menu_item_call label="Block" name="block"/> <menu_item_call label="Unblock" name="unblock"/> - <menu_item_call label="踢除" name="kick"/> - <menu_item_call label="Freeze" name="freeze"/> - <menu_item_call label="Unfreeze" name="unfreeze"/> + <menu_item_call label="踢出" name="kick"/> + <menu_item_call label="凍結" name="freeze"/> + <menu_item_call label="解凍" name="unfreeze"/> <menu_item_call label="CSR" name="csr"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml index 423ba64aa7..f9107a96ed 100644 --- a/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml +++ b/indra/newview/skins/default/xui/zh/menu_teleport_history_tab.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Teleport History Item Context Menu"> - <menu_item_call label="Open" name="TabOpen"/> + <menu_item_call label="開啟" name="TabOpen"/> <menu_item_call label="關閉" name="TabClose"/> </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 3b667d429c..592bb6561e 100644 --- a/indra/newview/skins/default/xui/zh/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/zh/menu_url_agent.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="Show Resident Profile" name="show_agent"/> + <menu_item_call label="顯示居民檔案" name="show_agent"/> <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 d2f0b81a9d..b344b21c62 100644 --- 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,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="Show Object Information" name="show_object"/> + <menu_item_call label="顯示物件資訊" name="show_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 6f6ca064c8..e7016dc663 100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -22,7 +22,7 @@ </menu> <menu_item_call label="要求 Admin 狀態" name="Request Admin Options"/> <menu_item_call label="離開 Admin 狀態" name="Leave Admin Options"/> - <menu_item_call label="結束離開 [APP_NAME]" name="Quit"/> + <menu_item_call label="結束退出 [APP_NAME]" name="Quit"/> </menu> <menu label="溝通" name="Communicate"> <menu_item_call label="我的朋友" name="My Friends"/> @@ -75,7 +75,7 @@ <menu_item_call label="土地工具" name="Land"/> </menu> <menu_item_call label="聯結" name="Link"/> - <menu_item_call label="取銷聯結" name="Unlink"/> + <menu_item_call label="取消聯結" name="Unlink"/> <menu_item_check label="編輯聯結部位" name="Edit Linked Parts"/> <menu label="選擇聯結部位" name="Select Linked Parts"> <menu_item_call label="選擇下一部位" name="Select Next Part"/> @@ -93,7 +93,7 @@ <menu_item_call label="Save Back to Object Contents" name="Save Object Back to Object Contents"/> <menu_item_call label="退回物件" name="Return Object back to Owner"/> </menu> - <menu label="Scripts" name="Scripts"> + <menu label="腳本" name="Scripts"> <menu_item_call label="Recompile Scripts (Mono)" name="Mono"/> <menu_item_call label="Recompile Scripts (LSL)" name="LSL"/> <menu_item_call label="Reset Scripts" name="Reset Scripts"/> @@ -115,7 +115,7 @@ <menu_item_call label="格線選項" name="Grid Options"/> </menu> <menu label="上傳" name="Upload"> - <menu_item_call label="Image (L$[COST])..." name="Upload Image"/> + <menu_item_call label="圖像(L$[COST])..." name="Upload Image"/> <menu_item_call label="Sound (L$[COST])..." name="Upload Sound"/> <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> <menu_item_call label="Bulk (L$[COST] per file)..." name="Bulk Upload"/> @@ -137,12 +137,12 @@ <menu_item_call label="設定視窗尺寸大小..." name="Set Window Size..."/> <menu_item_check label="Limit Select Distance" name="Limit Select Distance"/> <menu_item_check label="Disable Camera Constraints" name="Disable Camera Distance"/> - <menu_item_check label="High-res Snapshot" name="HighResSnapshot"/> + <menu_item_check label="高解析度快照" name="HighResSnapshot"/> <menu_item_check label="Quiet Snapshots to Disk" name="QuietSnapshotsToDisk"/> <menu_item_check label="Compress Snapshots to Disk" name="CompressSnapshotsToDisk"/> <menu label="Performance Tools" name="Performance Tools"> <menu_item_call label="Lag Meter" name="Lag Meter"/> - <menu_item_check label="Statistics Bar" name="Statistics Bar"/> + <menu_item_check label="統計列" name="Statistics Bar"/> <menu_item_check label="Show Avatar Rendering Cost" name="Avatar Rendering Cost"/> </menu> <menu label="Highlighting and Visibility" name="Highlighting and Visibility"> @@ -181,10 +181,10 @@ <menu_item_check label="Use Plugin Read Thread" name="Use Plugin Read Thread"/> <menu_item_call label="Clear Group Cache" name="ClearGroupCache"/> <menu_item_check label="Mouse Smoothing" name="Mouse Smoothing"/> - <menu label="Shortcuts" name="Shortcuts"> - <menu_item_call label="Image (L$[COST])..." name="Upload Image"/> - <menu_item_check label="Search" name="Search"/> - <menu_item_call label="Release Keys" name="Release Keys"/> + <menu label="快速鍵" name="Shortcuts"> + <menu_item_call label="圖像(L$[COST])..." name="Upload Image"/> + <menu_item_check label="搜尋" name="Search"/> + <menu_item_call label="釋出按鍵" name="Release Keys"/> <menu_item_call label="設定使用者界面大小至預設值" name="Set UI Size to Default"/> <menu_item_check label="Show Advanced Menu - legacy shortcut" name="Show Advanced Menu - legacy shortcut"/> <menu_item_call label="關閉視窗" name="Close Window"/> @@ -209,10 +209,10 @@ <menu_item_check label="顯示開發選單" name="Debug Mode"/> </menu> <menu label="開發" name="Develop"> - <menu label="Consoles" name="Consoles"> + <menu label="控制台" name="Consoles"> <menu_item_check label="材質控制台" name="Texture Console"/> - <menu_item_check label="Debug Console" name="Debug Console"/> - <menu_item_call label="Notifications Console" name="Notifications"/> + <menu_item_check label="除錯控制台" name="Debug Console"/> + <menu_item_call label="通知控制台" name="Notifications"/> <menu_item_check label="材質尺寸控制台" name="Texture Size"/> <menu_item_check label="Texture Category Console" name="Texture Category"/> <menu_item_check label="Fast Timers" name="Fast Timers"/> diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml index ecc14867b8..d2d1321c2a 100644 --- a/indra/newview/skins/default/xui/zh/mime_types.xml +++ b/indra/newview/skins/default/xui/zh/mime_types.xml @@ -24,7 +24,7 @@ </widgetset> <widgetset name="image"> <label name="image_label"> - Image + 圖像 </label> <tooltip name="image_tooltip"> There is an image at this location @@ -71,7 +71,7 @@ </mimetype> <mimetype name="image/*"> <label name="image2_label"> - Image + 圖像 </label> </mimetype> <mimetype name="video/vnd.secondlife.qt.legacy"> @@ -91,12 +91,12 @@ </mimetype> <mimetype name="application/pdf"> <label name="application/pdf_label"> - PDF Document + PDF 文件 </label> </mimetype> <mimetype name="application/postscript"> <label name="application/postscript_label"> - Postscript Document + Postscript 文件 </label> </mimetype> <mimetype name="application/rtf"> @@ -141,32 +141,32 @@ </mimetype> <mimetype name="image/bmp"> <label name="image/bmp_label"> - Image (BMP) + 圖像(BMP) </label> </mimetype> <mimetype name="image/gif"> <label name="image/gif_label"> - Image (GIF) + 圖像(GIF) </label> </mimetype> <mimetype name="image/jpeg"> <label name="image/jpeg_label"> - Image (JPEG) + 圖像(JPEG) </label> </mimetype> <mimetype name="image/png"> <label name="image/png_label"> - Image (PNG) + 圖像(PNG) </label> </mimetype> <mimetype name="image/svg+xml"> <label name="image/svg+xml_label"> - Image (SVG) + 圖像(SVG) </label> </mimetype> <mimetype name="image/tiff"> <label name="image/tiff_label"> - Image (TIFF) + 圖像(TIFF) </label> </mimetype> <mimetype name="text/html"> diff --git a/indra/newview/skins/default/xui/zh/mime_types_linux.xml b/indra/newview/skins/default/xui/zh/mime_types_linux.xml index ecc14867b8..3498942f9b 100644 --- a/indra/newview/skins/default/xui/zh/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/zh/mime_types_linux.xml @@ -24,7 +24,7 @@ </widgetset> <widgetset name="image"> <label name="image_label"> - Image + 圖像 </label> <tooltip name="image_tooltip"> There is an image at this location @@ -71,7 +71,7 @@ </mimetype> <mimetype name="image/*"> <label name="image2_label"> - Image + 圖像 </label> </mimetype> <mimetype name="video/vnd.secondlife.qt.legacy"> @@ -91,12 +91,12 @@ </mimetype> <mimetype name="application/pdf"> <label name="application/pdf_label"> - PDF Document + PDF 文件 </label> </mimetype> <mimetype name="application/postscript"> <label name="application/postscript_label"> - Postscript Document + Postscript 文件 </label> </mimetype> <mimetype name="application/rtf"> @@ -141,32 +141,32 @@ </mimetype> <mimetype name="image/bmp"> <label name="image/bmp_label"> - Image (BMP) + 圖像(BMP) </label> </mimetype> <mimetype name="image/gif"> <label name="image/gif_label"> - Image (GIF) + 圖像(GIF) </label> </mimetype> <mimetype name="image/jpeg"> <label name="image/jpeg_label"> - Image (JPEG) + 圖像(JPEG) </label> </mimetype> <mimetype name="image/png"> <label name="image/png_label"> - Image (PNG) + 圖像(PNG) </label> </mimetype> <mimetype name="image/svg+xml"> <label name="image/svg+xml_label"> - Image (SVG) + 圖像(SVG) </label> </mimetype> <mimetype name="image/tiff"> <label name="image/tiff_label"> - Image (TIFF) + 圖像(TIFF) </label> </mimetype> <mimetype name="text/html"> @@ -176,7 +176,7 @@ </mimetype> <mimetype name="text/plain"> <label name="text/plain_label"> - Text + 文字 </label> </mimetype> <mimetype name="text/xml"> diff --git a/indra/newview/skins/default/xui/zh/mime_types_mac.xml b/indra/newview/skins/default/xui/zh/mime_types_mac.xml index 51f242a1c2..3f38c528a6 100644 --- a/indra/newview/skins/default/xui/zh/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/zh/mime_types_mac.xml @@ -24,7 +24,7 @@ </widgetset> <widgetset name="image"> <label name="image_label"> - Image + 圖像 </label> <tooltip name="image_tooltip"> There is an image at this location @@ -71,7 +71,7 @@ </mimetype> <mimetype name="image/*"> <label name="image2_label"> - Image + 圖像 </label> </mimetype> <mimetype name="video/vnd.secondlife.qt.legacy"> @@ -91,12 +91,12 @@ </mimetype> <mimetype name="application/pdf"> <label name="application/pdf_label"> - PDF Document + PDF 文件 </label> </mimetype> <mimetype name="application/postscript"> <label name="application/postscript_label"> - Postscript Document + Postscript 文件 </label> </mimetype> <mimetype name="application/rtf"> @@ -141,32 +141,32 @@ </mimetype> <mimetype name="image/bmp"> <label name="image/bmp_label"> - Image (BMP) + 圖像(BMP) </label> </mimetype> <mimetype name="image/gif"> <label name="image/gif_label"> - Image (GIF) + 圖像(GIF) </label> </mimetype> <mimetype name="image/jpeg"> <label name="image/jpeg_label"> - Image (JPEG) + 圖像(JPEG) </label> </mimetype> <mimetype name="image/png"> <label name="image/png_label"> - Image (PNG) + 圖像(PNG) </label> </mimetype> <mimetype name="image/svg+xml"> <label name="image/svg+xml_label"> - Image (SVG) + 圖像(SVG) </label> </mimetype> <mimetype name="image/tiff"> <label name="image/tiff_label"> - Image (TIFF) + 圖像(TIFF) </label> </mimetype> <mimetype name="text/html"> diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 7652c1a1d0..16d4965d5a 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -65,7 +65,7 @@ Error details: The notification called '[_NAME]' was not found in noti </notification> <notification name="GenericAlertYesCancel"> [MESSAGE] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="是"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="是"/> </notification> <notification name="BadInstallation"> An error occurred while updating [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer. @@ -83,7 +83,7 @@ Make sure your Internet connection is working properly. </notification> <notification name="WearableSave"> Save changes to current clothing/body part? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> </notification> <notification name="CompileQueueSaveText"> There was a problem uploading the text for a script due to the following reason: [REASON]. Please try again later. @@ -103,7 +103,7 @@ Please select only one object and try again. </notification> <notification name="SaveClothingBodyChanges"> 儲存全部服裝或身體部位的變更? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="不要儲存" yestext="全部儲存"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="不要儲存" yestext="全部儲存"/> </notification> <notification name="FriendsAndGroupsOnly"> Non-friends won't know that you've choosen to ignore their calls and instant messages. @@ -139,7 +139,7 @@ Do you want to grant modify rights for the selected Residents? <notification name="PanelGroupApply"> [NEEDS_APPLY_MESSAGE] [WANT_APPLY_MESSAGE] - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="忽視變更" yestext="套用變更"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="忽視變更" yestext="套用變更"/> </notification> <notification name="MustSpecifyGroupNoticeSubject"> You must specify a subject to send a group notice. @@ -178,12 +178,12 @@ Add this Ability to '[ROLE_NAME]'? <notification name="JoinGroupCanAfford"> Joining this group costs L$[COST]. Do you wish to proceed? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Join"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="Join"/> </notification> <notification name="JoinGroupNoCost"> You are joining group [NAME]. Do you wish to proceed? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Join"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="Join"/> </notification> <notification name="JoinGroupCannotAfford"> Joining this group costs L$[COST]. @@ -193,11 +193,11 @@ You do not have enough L$ to join this group. Creating this group will cost L$100. Groups need more than one member, or they are deleted forever. Please invite members within 48 hours. - <usetemplate canceltext="取銷" name="okcancelbuttons" notext="取銷" yestext="Create group for L$100"/> + <usetemplate canceltext="取消" name="okcancelbuttons" notext="取消" yestext="Create group for L$100"/> </notification> <notification name="LandBuyPass"> For L$[COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hours. Buy a pass? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="SalePriceRestriction"> Sale price must be set to more than L$0 if selling to anyone. @@ -206,14 +206,14 @@ Please select an individual to sell to if selling for L$0. <notification name="ConfirmLandSaleChange"> The selected [LAND_SIZE] m² land is being set for sale. Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME]. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> ATTENTION: Clicking 'sell to anyone' makes your land available to the entire [SECOND_LIFE] community, even those not in this region. The selected [LAND_SIZE] m² land is being set for sale. Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NAME]. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnObjectsDeededToGroup"> Are you sure you want to return all objects shared with the group '[NAME]' on this parcel of land back to their previous owner's inventory? @@ -221,19 +221,19 @@ Your selling price will be L$[SALE_PRICE] and will be authorized for sale to [NA *WARNING* This will delete the non-transferable objects deeded to the group! Objects: [N] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnObjectsOwnedByUser"> Are you sure you want to return all objects owned by the Resident '[NAME]' on this parcel of land back to their inventory? Objects: [N] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnObjectsOwnedBySelf"> Are you sure you want to return all objects owned by you on this parcel of land back to your inventory? Objects: [N] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnObjectsNotOwnedBySelf"> Are you sure you want to return all objects NOT owned by you on this parcel of land back to their owner's inventory? @@ -242,7 +242,7 @@ Transferable objects deeded to a group will be returned to their previous owners *WARNING* This will delete the non-transferable objects deeded to the group! Objects: [N] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnObjectsNotOwnedByUser"> Are you sure you want to return all objects NOT owned by [NAME] on this parcel of land back to their owner's inventory? @@ -251,21 +251,21 @@ Transferable objects deeded to a group will be returned to their previous owners *WARNING* This will delete the non-transferable objects deeded to the group! Objects: [N] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnAllTopObjects"> Are you sure you want to return all listed objects back to their owner's inventory? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="DisableAllTopObjects"> Are you sure you want to disable all objects in this region? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ReturnObjectsNotOwnedByGroup"> Return the objects on this parcel of land that are NOT shared with the group [NAME] back to their owners? Objects: [N] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="UnableToDisableOutsideScripts"> Can not disable scripts. @@ -276,7 +276,7 @@ Scripts must be allowed to run for weapons to work. Multiple faces are currently selected. If you continue this action, separate instances of media will be set on multiple faces of the object. To place the media on only one face, choose Select Face and click on the desired face of that object then click Add. - <usetemplate ignoretext="Media will be set on multiple selected faces" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Media will be set on multiple selected faces" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="MustBeInParcel"> You must be standing inside the land parcel to set its Landing Point. @@ -289,7 +289,7 @@ To place the media on only one face, choose Select Face and click on the desired </notification> <notification name="PromptMissingSubjMsg"> Email snapshot with the default subject or message? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ErrorProcessingSnapshot"> Error processing snapshot data @@ -328,7 +328,7 @@ You need an account to enter [SECOND_LIFE]. Would you like to create one now? <url name="url"> http://join.secondlife.com/ </url> - <usetemplate name="okcancelbuttons" notext="Try again" yestext="Create a new account"/> + <usetemplate name="okcancelbuttons" notext="再試一次" yestext="創造新帳戶"/> </notification> <notification name="InvalidCredentialFormat"> You need to enter either the Username or both the First and Last name of your avatar into the Username field, then login again. @@ -336,7 +336,7 @@ You need an account to enter [SECOND_LIFE]. Would you like to create one now? <notification name="DeleteClassified"> Delete classified '[NAME]'? There is no reimbursement for fees paid. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="DeleteMedia"> You have selected to delete the media associated with this face. @@ -345,7 +345,7 @@ Are you sure you want to continue? </notification> <notification name="ClassifiedSave"> Save changes to classified [NAME]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> </notification> <notification name="ClassifiedInsufficientFunds"> Insufficient funds to create classified. @@ -353,18 +353,18 @@ Are you sure you want to continue? </notification> <notification name="DeleteAvatarPick"> Delete pick <nolink>[PICK]</nolink>? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="DeleteOutfits"> 刪除所選擇的裝扮? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="PromptGoToEventsPage"> 前往 [SECOND_LIFE] 事件網頁? <url name="url"> http://secondlife.com/events/ </url> - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="SelectProposalToView"> Please select a proposal to view. @@ -393,11 +393,11 @@ Note: This will clear the cache. <url name="url"> http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] </url> - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="SaveChanges"> Save Changes? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="不要儲存" yestext="儲存"/> </notification> <notification name="GestureSaveFailedTooManySteps"> Gesture save failed. @@ -425,7 +425,7 @@ The object may be out of range or may have been deleted. Could not undo all changes in your version of the script. Would you like to load the server's last saved version? (**Warning** This operation cannot be undone.) - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="SaveScriptFailReason"> There was a problem saving a script due to the following reason: [REASON]. Please try re-saving the script later. @@ -459,14 +459,14 @@ Visit [_URL] for more information? <url name="url"> http://www.secondlife.com/corporate/sysreqs.php </url> - <usetemplate ignoretext="My computer hardware is not supported" name="okcancelignore" notext="否" yestext="是"/> + <usetemplate ignoretext="我的電腦硬體並不支援" name="okcancelignore" notext="否" yestext="是"/> </notification> <notification name="UnknownGPU"> Your system contains a graphics card that [APP_NAME] doesn't recognize. This is often the case with new hardware that hasn't been tested yet with [APP_NAME]. It will probably be ok, but you may need to adjust your graphics settings. (Me > Preferences > Graphics). <form name="form"> - <ignore name="ignore" text="My graphics card could not be identified"/> + <ignore name="ignore" text="我的顯示卡無法辨識"/> </form> </notification> <notification name="DisplaySettingsNoShaders"> @@ -476,7 +476,7 @@ We recommend updating your graphics card drivers. Graphics Quality can be raised in Preferences > Graphics. </notification> <notification name="RegionNoTerraforming"> - The region [REGION] does not allow terraforming. + 這個 [REGION] 地區並不允許變更地形。 </notification> <notification name="CannotCopyWarning"> You do not have permission to copy the following items: @@ -488,7 +488,7 @@ and will lose it from your inventory if you give it away. Do you really want to 無法給予收納區物品。 </notification> <notification name="TransactionCancelled"> - 交易已取銷。 + 交易已取消。 </notification> <notification name="TooManyItems"> Cannot give more than 42 items in a single inventory transfer. @@ -505,29 +505,29 @@ Do you really want to give these items? You do not have permission to transfer the selected folder. </notification> <notification name="FreezeAvatar"> - Freeze this avatar? -He or she will temporarily be unable to move, chat, or interact with the world. - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="Unfreeze" yestext="Freeze"/> + 凍結這位化身? +他將暫時無法移動、聊天或這個世界互動。 + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="解凍" yestext="凍結"/> </notification> <notification name="FreezeAvatarFullname"> - Freeze [AVATAR_NAME]? -He or she will temporarily be unable to move, chat, or interact with the world. - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="Unfreeze" yestext="Freeze"/> + 凍結 [AVATAR_NAME]? +他將暫時無法移動、聊天或這個世界互動。 + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="解凍" yestext="凍結"/> </notification> <notification name="EjectAvatarFullname"> - Eject [AVATAR_NAME] from your land? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="Eject and Ban" yestext="Eject"/> + 將 [AVATAR_NAME] 由你的土地踢出? + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="踢出並封鎖" yestext="踢出"/> </notification> <notification name="EjectAvatarNoBan"> - Eject this avatar from your land? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Eject"/> + 將這一位化身由你的土地踢出? + <usetemplate name="okcancelbuttons" notext="取消" yestext="踢出"/> </notification> <notification name="EjectAvatarFullnameNoBan"> - Eject [AVATAR_NAME] from your land? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Eject"/> + 將 [AVATAR_NAME] 由你的土地踢出? + <usetemplate name="okcancelbuttons" notext="取消" yestext="踢出"/> </notification> <notification name="EjectAvatarFromGroup"> - You ejected [AVATAR_NAME] from group [GROUP_NAME] + 你已將 [AVATAR_NAME] 由社團 [GROUP_NAME] 中踢出 </notification> <notification name="AcquireErrorTooManyObjects"> ACQUIRE ERROR: Too many objects selected. @@ -543,7 +543,7 @@ Go to [_URL] for information on purchasing L$? <url name="url"> http://secondlife.com/app/currency/ </url> - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="UnableToLinkObjects"> Unable to link these [COUNT] objects. @@ -747,7 +747,7 @@ No parcel selected. <notification name="ForceOwnerAuctionWarning"> This parcel is up for auction. Forcing ownership will cancel the auction and potentially make some Residents unhappy if bidding has begun. Force ownership? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="CannotContentifyNothingSelected"> Unable to contentify: @@ -840,7 +840,7 @@ Select an entire parcel, or divide your parcel first. Releasing this parcel will remove it from your land holdings, but will not grant any L$. Release this land? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="CannotDivideLandNothingSelected"> Unable to divide land: @@ -857,7 +857,7 @@ Try selecting a part of the parcel. Dividing this land will split this parcel into two and each parcel can have its own settings. Some settings will be reset to defaults after the operation. Divide land? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="CannotDivideLandNoRegion"> Unable to divide land: @@ -888,15 +888,15 @@ Select land across both parcels. You will need to reset the name and options of the new parcel. Join land? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmNotecardSave"> This notecard needs to be saved before the item can be copied or viewed. Save notecard? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmItemCopy"> 覆製這個物品到你的收納區? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="覆製"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="覆製"/> </notification> <notification name="ResolutionSwitchFail"> Failed to switch resolution to [RESX] by [RESY] @@ -917,7 +917,7 @@ This is usually a temporary failure. Please customize and save the wearable agai <notification name="YouHaveBeenLoggedOut"> Darn. You have been logged out of [SECOND_LIFE] [MESSAGE] - <usetemplate name="okcancelbuttons" notext="Quit" yestext="View IM & Chat"/> + <usetemplate name="okcancelbuttons" notext="結束退出" yestext="View IM & Chat"/> </notification> <notification name="OnlyOfficerCanBuyLand"> Unable to buy land for the group: @@ -932,7 +932,7 @@ Offer friendship to [NAME]? 你願意成為我的朋友嗎? </input> <button name="Offer" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification label="儲存裝扮" name="SaveOutfitAs"> @@ -942,7 +942,7 @@ Offer friendship to [NAME]? [DESC] (新) </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification label="Save Wearable" name="SaveWearableAs"> @@ -952,7 +952,7 @@ Offer friendship to [NAME]? [DESC] (新) </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification label="裝扮更名" name="RenameOutfit"> @@ -962,34 +962,34 @@ Offer friendship to [NAME]? [NAME] </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="RemoveFromFriends"> Do you want to remove [NAME] from your Friends List? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="RemoveMultipleFromFriends"> 你確定要由朋友清單中移除多個朋友嗎? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="GodDeleteAllScriptedPublicObjectsByUser"> Are you sure you want to delete all scripted objects owned by ** [AVATAR_NAME] ** on all others land in this sim? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="GodDeleteAllScriptedObjectsByUser"> Are you sure you want to DELETE ALL scripted objects owned by ** [AVATAR_NAME] ** on ALL LAND in this sim? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="GodDeleteAllObjectsByUser"> Are you sure you want to DELETE ALL objects (scripted or not) owned by ** [AVATAR_NAME] ** on ALL LAND in this sim? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BlankClassifiedName"> You must specify a name for your classified. @@ -1003,46 +1003,46 @@ Please enter a higher price. At least one of the items you has link items that point to it. If you delete this item, its links will permanently stop working. It is strongly advised to delete the links first. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteLock"> At least one of the items you have selected is locked. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteNoCopy"> At least one of the items you have selected is not copyable. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> You do not own least one of the items you have selected. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> At least one object is locked. At least one object is not copyable. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteLockNoOwn"> At least one object is locked. You do not own least one object. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> At least one object is not copyable. You do not own least one object. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> At least one object is locked. @@ -1050,20 +1050,20 @@ At least one object is not copyable. You do not own least one object. Are you sure you want to delete these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectTakeLock"> At least one object is locked. Are you sure you want to take these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectTakeNoOwn"> You do not own all of the objects you are taking. If you continue, next owner permissions will be applied and possibly restrict your ability to modify or copy them. Are you sure you want to take these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmObjectTakeLockNoOwn"> At least one object is locked. @@ -1072,7 +1072,7 @@ If you continue, next owner permissions will be applied and possibly restrict yo However, you can take the current selection. Are you sure you want to take these items? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="CantBuyLandAcrossMultipleRegions"> Unable to buy land because selection spans multiple regions. @@ -1084,7 +1084,7 @@ Please select a smaller area and try again. The purchase price of the land is not refunded to the owner. If a deeded parcel is sold, the sale price will be divided evenly among group members. Deed this [AREA] m² of land to the group '[GROUP_NAME]'? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="DeedLandToGroupWithContribution"> By deeding this parcel, the group will be required to have and maintain sufficient land use credits. @@ -1092,7 +1092,7 @@ The deed will include a simultaneous land contribution to the group from '[ The purchase price of the land is not refunded to the owner. If a deeded parcel is sold, the sale price will be divided evenly among group members. Deed this [AREA] m² of land to the group '[GROUP_NAME]'? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="DisplaySetToSafe"> Display settings have been set to safe levels because you have specified the -safe option. @@ -1129,7 +1129,7 @@ You may want to set a new home location. If this is your first time using [SECOND_LIFE], you will need to create an account before you can log in. Return to [http://join.secondlife.com secondlife.com] to create a new account? - <usetemplate name="okcancelbuttons" notext="繼續" yestext="New Account..."/> + <usetemplate name="okcancelbuttons" notext="繼續" yestext="新帳戶..."/> </notification> <notification name="LoginPacketNeverReceived"> We're having trouble connecting. There may be a problem with your Internet connection or the [SECOND_LIFE_GRID]. @@ -1186,7 +1186,7 @@ Extended Key Usage: [EXTENDEDKEYUSAGE] Subject Key Identifier: [SUBJECTKEYIDENTIFIER] Would you like to trust this authority? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Trust"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="Trust"/> </notification> <notification name="NotEnoughCurrency"> [NAME] L$ [PRICE] You don't have enough L$ to do that. @@ -1201,7 +1201,7 @@ Would you like to trust this authority? This will flush the map caches on this region. This is really only useful for debugging. (In production, wait 5 minutes, then everyone's map will update after they relog.) - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BuyOneObjectOnly"> Unable to buy more than one object at a time. Please select only one object and try again. @@ -1209,15 +1209,15 @@ This is really only useful for debugging. <notification name="OnlyCopyContentsOfSingleItem"> Unable to copy the contents of more than one item at a time. Please select only one object and try again. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="KickUsersFromRegion"> 確定要強制瞬間傳送這地區所有居民回家? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="EstateObjectReturn"> Are you sure you want to return objects owned by [USER_NAME]? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="InvalidTerrainBitDepth"> Couldn't set region textures: @@ -1236,7 +1236,7 @@ Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image then click </notification> <notification name="ConfirmBakeTerrain"> Do you really want to bake the current terrain, make it the center for terrain raise/lower limits and the default for the 'Revert' tool? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="MaxAllowedAgentOnRegion"> You can only have [MAX_AGENTS] Allowed Residents. @@ -1250,7 +1250,7 @@ Exceeds the [MAX_AGENTS] [LIST_TYPE] limit by [NUM_EXCESS]. </notification> <notification name="MaxAllowedGroupsOnRegion"> You can only have [MAX_GROUPS] Allowed Groups. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="Bake"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="Bake"/> </notification> <notification name="MaxManagersOnRegion"> You can only have [MAX_MANAGER] Estate Managers. @@ -1276,7 +1276,7 @@ Please set the object for sale and try again. A new version of [APP_NAME] is available. [MESSAGE] You must download this update to use [APP_NAME]. - <usetemplate name="okcancelbuttons" notext="Quit" yestext="下載"/> + <usetemplate name="okcancelbuttons" notext="結束退出" yestext="下載"/> </notification> <notification name="DownloadWindows"> An updated version of [APP_NAME] is available. @@ -1294,7 +1294,7 @@ This update is not required, but we suggest you install it to improve performanc A new version of [APP_NAME] is available. [MESSAGE] You must download this update to use [APP_NAME]. - <usetemplate name="okcancelbuttons" notext="Quit" yestext="下載"/> + <usetemplate name="okcancelbuttons" notext="結束退出" yestext="下載"/> </notification> <notification name="DownloadLinux"> An updated version of [APP_NAME] is available. @@ -1314,7 +1314,7 @@ This update is not required, but we suggest you install it to improve performanc You must download this update to use [APP_NAME]. Download to your Applications folder? - <usetemplate name="okcancelbuttons" notext="Quit" yestext="下載"/> + <usetemplate name="okcancelbuttons" notext="結束退出" yestext="下載"/> </notification> <notification name="DownloadMac"> An updated version of [APP_NAME] is available. @@ -1344,14 +1344,14 @@ You will be unable to log in until [APP_NAME] has been updated. Please download and install the latest viewer from http://secondlife.com/download. - <usetemplate name="okbutton" yestext="Quit"/> + <usetemplate name="okbutton" yestext="結束退出"/> </notification> <notification name="UpdaterServiceNotRunning"> There is a required update for your Second Life Installation. You may download this update from http://www.secondlife.com/downloads or you can install it now. - <usetemplate name="okcancelbuttons" notext="Quit Second Life" yestext="立即下載及安裝"/> + <usetemplate name="okcancelbuttons" notext="結束退出第二人生" yestext="立即下載及安裝"/> </notification> <notification name="DownloadBackgroundTip"> We have downloaded an update to your [APP_NAME] installation. @@ -1377,54 +1377,54 @@ We must restart [APP_NAME] to install the update. <notification name="DeedObjectToGroup"> Deeding this object will cause the group to: * Receive L$ paid into the object - <usetemplate ignoretext="Confirm before I deed an object to a group" name="okcancelignore" notext="取銷" yestext="Deed"/> + <usetemplate ignoretext="Confirm before I deed an object to a group" name="okcancelignore" notext="取消" yestext="Deed"/> </notification> <notification name="WebLaunchExternalTarget"> Do you want to open your Web browser to view this content? - <usetemplate ignoretext="Launch my browser to view a web page" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Launch my browser to view a web page" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="WebLaunchJoinNow"> - Go to your [http://secondlife.com/account/ Dashboard] to manage your account? - <usetemplate ignoretext="Launch my browser to manage my account" name="okcancelignore" notext="取銷" yestext="確定"/> + 前往你的[http://secondlife.com/account/ 塗鴉牆]以進行管理你的帳戶? + <usetemplate ignoretext="啟動我的瀏覽器以管理我的帳戶" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="WebLaunchSecurityIssues"> Visit the [SECOND_LIFE] Wiki for details of how to report a security issue. - <usetemplate ignoretext="Launch my browser to learn how to report a Security Issue" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Launch my browser to learn how to report a Security Issue" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="WebLaunchQAWiki"> Visit the [SECOND_LIFE] QA Wiki. - <usetemplate ignoretext="Launch my browser to view the QA Wiki" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Launch my browser to view the QA Wiki" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="WebLaunchPublicIssue"> Visit the [SECOND_LIFE] Public Issue Tracker, where you can report bugs and other issues. - <usetemplate ignoretext="Launch my browser to use the Public Issue Tracker" name="okcancelignore" notext="取銷" yestext="前往頁面"/> + <usetemplate ignoretext="Launch my browser to use the Public Issue Tracker" name="okcancelignore" notext="取消" yestext="前往頁面"/> </notification> <notification name="WebLaunchSupportWiki"> - Go to the Official Linden Blog, for the latest news and information. - <usetemplate ignoretext="Launch my browser to view the blog" name="okcancelignore" notext="取銷" yestext="確定"/> + 前往林登官方部落格,以取得最新的新聞與資訊。 + <usetemplate ignoretext="Launch my browser to view the blog" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="WebLaunchLSLGuide"> Do you want to open the Scripting Guide for help with scripting? - <usetemplate ignoretext="Launch my browser to view the Scripting Guide" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Launch my browser to view the Scripting Guide" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="WebLaunchLSLWiki"> Do you want to visit the LSL Portal for help with scripting? - <usetemplate ignoretext="Launch my browser to view the LSL Portal" name="okcancelignore" notext="取銷" yestext="Go to page"/> + <usetemplate ignoretext="Launch my browser to view the LSL Portal" name="okcancelignore" notext="取消" yestext="前往頁面"/> </notification> <notification name="ReturnToOwner"> Are you sure you want to return the selected objects to their owners? Transferable deeded objects will be returned to their previous owners. *WARNING* No-transfer deeded objects will be deleted! - <usetemplate ignoretext="Confirm before I return objects to their owners" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Confirm before I return objects to their owners" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="GroupLeaveConfirmMember"> You are currently a member of the group [GROUP]. Leave Group? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmKick"> - 你確定要踢除這網格內的全部居民? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="踢除全部居民"/> + 你確定要踢出這網格內的全部居民? + <usetemplate name="okcancelbuttons" notext="取消" yestext="踢出全部居民"/> </notification> <notification name="MuteLinden"> Sorry, you cannot block a Linden. @@ -1439,7 +1439,7 @@ Leave Group? </notification> <notification name="RemoveItemWarn"> Though permitted, deleting contents may damage the object. Do you want to delete that item? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="CantOfferCallingCard"> Cannot offer a calling card at this time. Please try again in a moment. @@ -1464,13 +1464,13 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="KickUser"> - 踢除這個居民並留給他什麼訊息? + 踢出這個居民並留給他什麼訊息? <form name="form"> <input name="message"> An administrator has logged you off. </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="KickAllUsers"> @@ -1480,27 +1480,27 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo An administrator has logged you off. </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="FreezeUser"> - Freeze this Resident with what message? + 凍結這位居民時同時留下什麼訊息? <form name="form"> <input name="message"> - You have been frozen. You cannot move or chat. An administrator will contact you via instant message (IM). + 你已經被凍結了。你將不能移動或聊天。管理員將會以即時訊息聯繫你(IM)。 </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="UnFreezeUser"> - Unfreeze this Resident with what message? + 將這位居民解凍並同時留下什麼訊息? <form name="form"> <input name="message"> You are no longer frozen. </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="SetDisplayNameSuccess"> @@ -1550,7 +1550,7 @@ Please try again later. 加入我到 [REGION] </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="OfferTeleportFromGod"> @@ -1560,30 +1560,30 @@ Please try again later. Join me in [REGION] </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="TeleportFromLandmark"> Are you sure you want to teleport to <nolink>[LOCATION]</nolink>? - <usetemplate ignoretext="Confirm that I want to teleport to a landmark" name="okcancelignore" notext="取銷" yestext="瞬間傳送"/> + <usetemplate ignoretext="Confirm that I want to teleport to a landmark" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> </notification> <notification name="TeleportToPick"> 瞬間傳送到 [PICK]? - <usetemplate ignoretext="Confirm that I want to teleport to a location in Picks" name="okcancelignore" notext="取銷" yestext="Teleport"/> + <usetemplate ignoretext="Confirm that I want to teleport to a location in Picks" name="okcancelignore" notext="取消" yestext="Teleport"/> </notification> <notification name="TeleportToClassified"> 瞬間傳送到 [CLASSIFIED]? - <usetemplate ignoretext="Confirm that I want to teleport to a location in Classifieds" name="okcancelignore" notext="取銷" yestext="瞬間傳送"/> + <usetemplate ignoretext="Confirm that I want to teleport to a location in Classifieds" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> </notification> <notification name="TeleportToHistoryEntry"> 瞬間傳送到 [HISTORY_ENTRY]? - <usetemplate ignoretext="Confirm that I want to teleport to a history location" name="okcancelignore" notext="取銷" yestext="瞬間傳送"/> + <usetemplate ignoretext="Confirm that I want to teleport to a history location" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> </notification> <notification label="Message everyone in your Estate" name="MessageEstate"> Type a short announcement which will be sent to everyone currently in your estate. <form name="form"> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification label="Change Linden Estate" name="ChangeLindenEstate"> @@ -1592,54 +1592,54 @@ Please try again later. This is EXTREMELY DANGEROUS because it can fundamentally affect the Resident experience. On the mainland, it will change thousands of regions and make the spaceserver hiccup. Proceed? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification label="Change Linden Estate Access" name="ChangeLindenAccess"> You are about to change the access list for a Linden owned estate (mainland, teen grid, orientation, etc.). This is DANGEROUS and should only be done to invoke the hack allowing objects/L$ to be transfered in/out of a grid. It will change thousands of regions and make the spaceserver hiccup. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification label="選擇領地" name="EstateAllowedAgentAdd"> Add to allowed list for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateAllowedAgentRemove"> Remove from allowed list for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateAllowedGroupAdd"> Add to group allowed list for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateAllowedGroupRemove"> Remove from group allowed list for this estate only or [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateBannedAgentAdd"> Deny access for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateBannedAgentRemove"> Remove this Resident from the ban list for access for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateManagerAdd"> Add estate manager for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> <notification label="選擇領地" name="EstateManagerRemove"> Remove estate manager for this estate only or for [ALL_ESTATES]? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="全部領地" yestext="這個領地"/> </notification> - <notification label="確認踢除" name="EstateKickUser"> - 將 [EVIL_USER] 由這領地踢除? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <notification label="確認踢出" name="EstateKickUser"> + 將 [EVIL_USER] 由這領地踢出? + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="EstateChangeCovenant"> Are you sure you want to change the Estate Covenant? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="RegionEntryAccessBlocked"> You are not allowed in that Region due to your maturity Rating. This may be a result of a lack of information validating your age. @@ -1750,25 +1750,25 @@ You can click 'Change Preference' to raise your maturity Rating prefer Remember: Classified ad fees are non-refundable. Publish this classified now for L$[AMOUNT]? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="SetClassifiedMature"> Does this classified contain Moderate content? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="否" yestext="是"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="否" yestext="是"/> </notification> <notification name="SetGroupMature"> Does this group contain Moderate content? - <usetemplate canceltext="取銷" name="yesnocancelbuttons" notext="否" yestext="是"/> + <usetemplate canceltext="取消" name="yesnocancelbuttons" notext="否" yestext="是"/> </notification> <notification label="Confirm restart" name="ConfirmRestart"> Do you really want to restart this region in 2 minutes? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification label="Message everyone in this region" name="MessageRegion"> Type a short announcement which will be sent to everyone in this region. <form name="form"> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification label="Changed Region Maturity" name="RegionMaturityChange"> @@ -1799,7 +1799,7 @@ You will be able to: Modify: [MODIFYPERM] Copy: [COPYPERM] Resell or Give Away: [RESELLPERM] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BuyOriginalNoOwner"> Buy original object for L$[PRICE]? @@ -1808,7 +1808,7 @@ You will be able to: Modify: [MODIFYPERM] Copy: [COPYPERM] Resell or Give Away: [RESELLPERM] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BuyCopy"> Buy a copy from [OWNER] for L$[PRICE]? @@ -1817,7 +1817,7 @@ You will be able to: Modify: [MODIFYPERM] Copy: [COPYPERM] Resell or Give Away: [RESELLPERM] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BuyCopyNoOwner"> Buy a copy for L$[PRICE]? @@ -1826,24 +1826,24 @@ You will be able to: Modify: [MODIFYPERM] Copy: [COPYPERM] Resell or Give Away: [RESELLPERM] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BuyContents"> Buy contents from [OWNER] for L$[PRICE]? They will be copied to your inventory. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BuyContentsNoOwner"> Buy contents for L$[PRICE]? They will be copied to your inventory. - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmPurchase"> This transaction will: [ACTION] Are you sure you want to proceed with this purchase? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmPurchasePassword"> This transaction will: @@ -1853,7 +1853,7 @@ Are you sure you want to proceed with this purchase? Please re-enter your password and click OK. <form name="form"> <button name="ConfirmPurchase" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="SetPickLocation"> @@ -1866,14 +1866,14 @@ You have updated the location of this pick but the other details will retain the These items will be moved to your inventory, not copied. Move the inventory item(s)? - <usetemplate ignoretext="Warn me before I move 'no-copy' items from an object" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Warn me before I move 'no-copy' items from an object" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="MoveInventoryFromScriptedObject"> You have selected 'no copy' inventory items. These items will be moved to your inventory, not copied. Because this object is scripted, moving these items to your inventory may cause the script to malfunction. Move the inventory item(s)? - <usetemplate ignoretext="Warn me before I move 'no-copy' items which might break a scripted object" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Warn me before I move 'no-copy' items which might break a scripted object" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="ClickActionNotPayable"> Warning: The 'Pay object' click action has been set, but it will only work if a script is added with a money() event. @@ -1885,16 +1885,16 @@ Move the inventory item(s)? There are no items in this object that you are allowed to copy. </notification> <notification name="WebLaunchAccountHistory"> - Go to your [http://secondlife.com/account/ Dashboard] to see your account history? - <usetemplate ignoretext="Launch my browser to see my account history" name="okcancelignore" notext="取銷" yestext="Go to page"/> + 前往你的[http://secondlife.com/account/ 塗鴉牆]以察看你的帳戶歷史紀錄? + <usetemplate ignoretext="啟動我的瀏覽器以察看我的帳戶歷史紀錄" name="okcancelignore" notext="取消" yestext="前往頁面"/> </notification> <notification name="ConfirmQuit"> - Are you sure you want to quit? - <usetemplate ignoretext="Confirm before I quit" name="okcancelignore" notext="Don't Quit" yestext="Quit"/> + 你確定你要結束退出? + <usetemplate ignoretext="當我結束退出時進行確認" name="okcancelignore" notext="不結束退出" yestext="結束退出"/> </notification> <notification name="DeleteItems"> [QUESTION] - <usetemplate ignoretext="Confirm before deleting items" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Confirm before deleting items" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="HelpReportAbuseEmailLL"> Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. @@ -1947,7 +1947,7 @@ Do you want to replace it with the selected object? <form name="form"> <ignore name="ignore" text="Replace an existing attachment with the selected item"/> <button ignore="自動取代" name="Yes" text="確定"/> - <button ignore="絕不取代" name="No" text="取銷"/> + <button ignore="絕不取代" name="No" text="取消"/> </form> </notification> <notification label="Busy Mode Warning" name="BusyModePay"> @@ -1957,28 +1957,28 @@ Would you like to leave Busy Mode before completing this transaction? <form name="form"> <ignore name="ignore" text="I am about to pay a person or object while I am in Busy mode"/> <button ignore="Always leave Busy Mode" name="Yes" text="確定"/> - <button ignore="Never leave Busy Mode" name="No" text="取銷"/> + <button ignore="Never leave Busy Mode" name="No" text="取消"/> </form> </notification> <notification name="ConfirmDeleteProtectedCategory"> The folder '[FOLDERNAME]' is a system folder. Deleting system folders can cause instability. Are you sure you want to delete it? - <usetemplate ignoretext="Confirm before I delete a system folder" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Confirm before I delete a system folder" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmEmptyTrash"> Are you sure you want to permanently delete the contents of your Trash? - <usetemplate ignoretext="Confirm before I empty the inventory Trash folder" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Confirm before I empty the inventory Trash folder" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmClearBrowserCache"> Are you sure you want to delete your travel, web, and search history? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ConfirmClearCookies"> Are you sure you want to clear your cookies? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="是"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="是"/> </notification> <notification name="ConfirmClearMediaUrlList"> Are you sure you want to clear your list of saved URLs? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="是"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="是"/> </notification> <notification name="ConfirmEmptyLostAndFound"> Are you sure you want to permanently delete the contents of your Lost And Found? @@ -2018,7 +2018,7 @@ Link to this from a web page to give others easy access to this location, or try New Preset </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="ExistsSkyPresetAlert"> @@ -2031,7 +2031,7 @@ Link to this from a web page to give others easy access to this location, or try New Preset </input> <button name="OK" text="確定"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="ExistsWaterPresetAlert"> @@ -2041,7 +2041,7 @@ Link to this from a web page to give others easy access to this location, or try You cannot edit or delete a default preset. </notification> <notification name="ChatterBoxSessionStartError"> - Unable to start a new chat session with [RECIPIENT]. + 無法開始一個與 [RECIPIENT] 他的新聊天會話。 [REASON] <usetemplate name="okbutton" yestext="確定"/> </notification> @@ -2051,7 +2051,7 @@ Link to this from a web page to give others easy access to this location, or try <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="ForceCloseChatterBoxSession"> - Your chat session with [NAME] must close. + 你與 [NAME] 的聊天會話必須關閉。 [REASON] <usetemplate name="okbutton" yestext="確定"/> </notification> @@ -2255,7 +2255,7 @@ Try selecting a smaller piece of land. [DATE] <form name="form"> <button name="Details" text="Details"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="TransferObjectsHighlighted"> @@ -2374,7 +2374,7 @@ Please go to the Knowledge Base for details on accessing areas with this maturit Could not teleport closer to destination. </notification> <notification name="TPCancelled"> - 瞬間傳送已取銷。 + 瞬間傳送已取消。 </notification> <notification name="FullRegionTryAgain"> The region you are attempting to enter is currently full. @@ -2453,7 +2453,7 @@ Please try again in a few moments. [MESSAGE] - [MATURITY_STR] <icon>[MATURITY_ICON]</icon> <form name="form"> <button name="Teleport" text="瞬間傳送"/> - <button name="Cancel" text="取銷"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="TeleportOfferSent"> @@ -2463,8 +2463,8 @@ Please try again in a few moments. [MESSAGE] [URL] <form name="form"> - <button name="Later" text="Later"/> - <button name="GoNow..." text="Go Now..."/> + <button name="Later" text="稍候"/> + <button name="GoNow..." text="立即前往..."/> </form> </notification> <notification name="OfferFriendship"> @@ -2525,8 +2525,8 @@ If you stay in this region you will be logged out. From object: <nolink>[OBJECTNAME]</nolink>, owner: [NAME]? <form name="form"> - <button name="Gotopage" text="Go to page"/> - <button name="Cancel" text="取銷"/> + <button name="Gotopage" text="前往頁面"/> + <button name="Cancel" text="取消"/> </form> </notification> <notification name="FailedToFindWearableUnnamed"> @@ -2714,7 +2714,7 @@ They will be blocked for a few seconds for your security. </notification> <notification name="ConfirmCloseAll"> Are you sure you want to close all IMs? - <usetemplate ignoretext="Confirm before I close all IMs" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Confirm before I close all IMs" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification name="AttachmentSaved"> Attachment has been saved. @@ -2737,7 +2737,7 @@ They will be blocked for a few seconds for your security. </notification> <notification name="ConfirmClearTeleportHistory"> Are you sure you want to delete your teleport history? - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="BottomTrayButtonCanNotBeShown"> Selected button can not be shown right now. @@ -2754,7 +2754,7 @@ The button will be shown when there is enough space for it. With the following Residents: [RESIDENTS] - <usetemplate name="okcancelbuttons" notext="取銷" yestext="確定"/> + <usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/> </notification> <notification name="ItemsShared"> Items successfully shared. @@ -2831,7 +2831,7 @@ This will also cause all residents that later join the call to be muted, even after you have left the call. Mute everyone? - <usetemplate ignoretext="Confirm before I mute all participants in a group call" name="okcancelignore" notext="取銷" yestext="確定"/> + <usetemplate ignoretext="Confirm before I mute all participants in a group call" name="okcancelignore" notext="取消" yestext="確定"/> </notification> <notification label="聊天" name="HintChat"> To join the conversation, type into the chat field below. @@ -2887,40 +2887,40 @@ Click and drag anywhere on the world to rotate your view <input name="username" text="User Name"/> <input name="password" text="Password"/> <button name="ok" text="Submit"/> - <button name="cancel" text="取銷"/> + <button name="cancel" text="取消"/> </form> </notification> <notification label="" name="ModeChange"> - Changing modes requires you to quit and restart. - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + 改變劉覽器模式要求你必須結束退出並重新啟動。 + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoClassifieds"> Creation and editing of Classifieds is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen. - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoGroupInfo"> Creation and editing of Groups is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen. - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoPicks"> Creation and editing of Picks is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen. - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoWorldMap"> Viewing of the world map is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen. - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoVoiceCall"> Voice calls are only available in Advanced mode. Would you like to logout and change modes? - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoAvatarShare"> Sharing is only available in Advanced mode. Would you like to logout and change modes? - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <notification label="" name="NoAvatarPay"> Paying other residents is only available in Advanced mode. Would you like to logout and change modes? - <usetemplate name="okcancelbuttons" notext="Don't Quit" yestext="Quit"/> + <usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/> </notification> <global name="UnsupportedCPU"> - Your CPU speed does not meet the minimum requirements. @@ -2937,7 +2937,7 @@ If you continue to have problems, please visit the [SUPPORT_SITE]. 510 </global> <global name="UnsupportedGPU"> - - Your graphics card does not meet the minimum requirements. + - 你的顯示卡未達系統最低配備要求。 </global> <global name="UnsupportedRAM"> - Your system memory does not meet the minimum requirements. diff --git a/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml b/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml index 1fb0f210fe..550868e5e5 100644 --- a/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_body_parts_list_item.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="wearable_item"> <text name="item_name" value="..."/> - <panel name="btn_lock" tool_tip="You don't have permission to edit"/> + <panel name="btn_lock" tool_tip="你並沒有權限進行編輯"/> <panel name="btn_edit_panel"> - <button name="btn_edit" tool_tip="Edit this shape"/> + <button name="btn_edit" tool_tip="編輯這個體形"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_bottomtray.xml b/indra/newview/skins/default/xui/zh/panel_bottomtray.xml index 4c0174559e..2b0cd7c0a6 100644 --- a/indra/newview/skins/default/xui/zh/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/zh/panel_bottomtray.xml @@ -10,7 +10,7 @@ </talk_button> </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Gesture" name="Gesture" tool_tip="顯示 / 隱藏 姿勢"/> + <gesture_combo_list label="姿勢" name="Gesture" tool_tip="顯示 / 隱藏 姿勢"/> </layout_panel> <layout_panel name="movement_panel"> <bottomtray_button label="移動" name="movement_btn" tool_tip="顯示 / 隱藏 移動控制"/> diff --git a/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml index 22f3731a6f..9833e9ef8b 100644 --- a/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/zh/panel_bottomtray_lite.xml @@ -2,7 +2,7 @@ <panel name="bottom_tray_lite"> <layout_stack name="toolbar_stack_lite"> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Gesture" name="Gesture" tool_tip="顯示 / 隱藏 姿勢"/> + <gesture_combo_list label="姿勢" name="Gesture" tool_tip="顯示 / 隱藏 姿勢"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml index 7a74f07743..ba63dada76 100644 --- a/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_clothing_list_button_bar.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="clothing_list_button_bar_panel"> - <button label="Add +" name="add_btn"/> + <button label="添加 +" name="add_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_classified.xml b/indra/newview/skins/default/xui/zh/panel_edit_classified.xml index 9478ec49a6..e749d9e3e7 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_classified.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Edit Classified" name="panel_edit_classified"> <panel.string name="location_notice"> - (will update after save) + (儲存後將會更新) </panel.string> <string name="publish_label"> Publish @@ -15,7 +15,7 @@ <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <panel name="snapshot_panel"> - <icon label="" name="edit_icon" tool_tip="Click to select an image"/> + <icon label="" name="edit_icon" tool_tip="點擊以選擇圖像"/> </panel> <text name="Name:"> Title: @@ -47,7 +47,7 @@ <button label="[LABEL]" name="save_changes_btn"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml index 2dd0ed2015..0f1f72ceb9 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml @@ -8,7 +8,7 @@ </text> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <icon label="" name="edit_icon" tool_tip="Click to select an image"/> + <icon label="" name="edit_icon" tool_tip="點擊以選擇圖像"/> <text name="Name:"> Title: </text> @@ -30,7 +30,7 @@ <button label="Save Pick" name="save_changes_btn"/> </layout_panel> <layout_panel name="layout_panel1"> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml index 7fb8392836..2258e51b85 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml @@ -27,31 +27,31 @@ <panel name="scroll_content_panel"> <panel name="data_panel"> <text name="display_name_label" value="Display Name:"/> - <text name="solo_username_label" value="Username:"/> + <text name="solo_username_label" value="使用者名稱:"/> <button name="set_name" tool_tip="Set Display Name"/> - <text name="user_label" value="Username:"/> + <text name="user_label" value="使用者名稱:"/> <panel name="lifes_images_panel"> <panel name="second_life_image_panel"> <text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/> </panel> - <icon label="" name="2nd_life_edit_icon" tool_tip="Click to select an image"/> + <icon label="" name="2nd_life_edit_icon" tool_tip="點擊以選擇圖像"/> </panel> <panel name="first_life_image_panel"> <text name="real_world_photo_title_text" value="真實世界:"/> </panel> - <icon label="" name="real_world_edit_icon" tool_tip="Click to select an image"/> + <icon label="" name="real_world_edit_icon" tool_tip="點擊以選擇圖像"/> <text name="title_homepage_text"> 首頁: </text> <line_editor name="homepage_edit" value="http://"/> - <text name="title_acc_status_text" value="My Account:"/> + <text name="title_acc_status_text" value="我的帳戶:"/> <text_editor name="acc_status_text" value="Resident. No payment info on file."/> - <text name="my_account_link" value="[[URL] Go to My Dashboard]"/> + <text name="my_account_link" value="[[URL] 前往我的塗鴉牆]"/> <text name="title_partner_text" value="我的配偶:"/> <panel name="partner_data_panel"> <text initial_value="(retrieving)" name="partner_text"/> </panel> - <text name="partner_edit_link" value="[[URL] Edit]"/> + <text name="partner_edit_link" value="[[URL] 編輯]"/> </panel> </panel> </scroll_container> @@ -61,7 +61,7 @@ <button label="儲存變更" name="save_btn"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml index 21b5c1c698..d741ed70df 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml @@ -97,15 +97,15 @@ Physics: </string> <labeled_back_button label="儲存" name="back_btn" tool_tip="回到編輯裝扮"/> - <text name="edit_wearable_title" value="Editing Shape"/> + <text name="edit_wearable_title" value="體形編輯中"/> <panel label="襯衫" name="wearable_type_panel"> - <text name="description_text" value="Shape:"/> + <text name="description_text" value="體形:"/> <radio_group name="sex_radio"> <radio_item label="" name="sex_male" tool_tip="男性" value="1"/> - <radio_item label="" name="sex_female" tool_tip="Female" value="0"/> + <radio_item label="" name="sex_female" tool_tip="女性" value="0"/> </radio_group> <icon name="male_icon" tool_tip="男性"/> - <icon name="female_icon" tool_tip="Female"/> + <icon name="female_icon" tool_tip="女性"/> </panel> <panel name="button_panel"> <layout_stack name="button_panel_ls"> diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml index 2873d4cabb..1706541f2b 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_general.xml @@ -25,33 +25,33 @@ Hover your mouse over the options for more help. Group Charter </text_editor> <name_list name="visible_members"> - <name_list.columns label="Member" name="name"/> - <name_list.columns label="Title" name="title"/> - <name_list.columns label="Status" name="status"/> + <name_list.columns label="成員" name="name"/> + <name_list.columns label="頭銜" name="title"/> + <name_list.columns label="狀態" name="status"/> </name_list> <text name="my_group_settngs_label"> 自己 </text> <text name="active_title_label"> - My title: + 我的頭銜: </text> <combo_box name="active_title" tool_tip="Sets the title that appears in your avatar's name tag when this group is active."/> - <check_box label="Receive group notices" name="receive_notices" tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you."/> + <check_box label="接受社團通知" name="receive_notices" tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you."/> <check_box label="顯示在我的檔案中" name="list_groups_in_profile" tool_tip="Sets whether you want to show this group in your profile"/> <panel name="preferences_container"> <text name="group_settngs_label"> 社團 </text> - <check_box label="Anyone can join" name="open_enrollement" tool_tip="Sets whether this group allows new members to join without being invited."/> - <check_box label="Cost to join" name="check_enrollment_fee" tool_tip="Sets whether to require an enrollment fee to join the group"/> + <check_box label="任何人都可以加入" name="open_enrollement" tool_tip="Sets whether this group allows new members to join without being invited."/> + <check_box label="加入費用" name="check_enrollment_fee" tool_tip="Sets whether to require an enrollment fee to join the group"/> <spinner label="L$" name="spin_enrollment_fee" tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked."/> <combo_box name="group_mature_check" tool_tip="Sets whether your group contains information rated as Moderate"> <combo_item name="select_mature"> - - Select maturity rating - + - 選擇內容分級 - </combo_item> <combo_box.item label="Moderate Content" name="mature"/> <combo_box.item label="General Content" name="pg"/> </combo_box> - <check_box initial_value="true" label="Show in search" name="show_in_group_list" tool_tip="Let people see this group in search results"/> + <check_box initial_value="true" label="顯示在搜尋中" name="show_in_group_list" tool_tip="Let people see this group in search results"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml index 4c65d2484c..320645ea5e 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_info_sidetray.xml @@ -20,9 +20,9 @@ <layout_panel name="group_accordions"> <accordion name="groups_accordion"> <accordion_tab name="group_general_tab" title="一般"/> - <accordion_tab name="group_roles_tab" title="Roles"/> - <accordion_tab name="group_notices_tab" title="Notices"/> - <accordion_tab name="group_land_tab" title="Land/Assets"/> + <accordion_tab name="group_roles_tab" title="角色"/> + <accordion_tab name="group_notices_tab" title="通知"/> + <accordion_tab name="group_land_tab" title="土地 / 資產"/> </accordion> </layout_panel> </layout_stack> @@ -35,7 +35,7 @@ </layout_panel> <layout_panel name="btn_apply_lp"> <button label="儲存" label_selected="儲存" name="btn_apply"/> - <button label="Create Group" name="btn_create" tool_tip="Create a new Group"/> + <button label="創造社團" name="btn_create" tool_tip="創造一個新社團"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_invite.xml b/indra/newview/skins/default/xui/zh/panel_group_invite.xml index c9b17b5d67..0a0a1f1941 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_invite.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Invite a Member" name="invite_panel"> +<panel label="邀請一個成員" name="invite_panel"> <panel.string name="confirm_invite_owner_str"> Are you sure you want to invite new owner(s)? This action is permanent! </panel.string> @@ -20,7 +20,7 @@ </text> <combo_box name="role_name" tool_tip="Choose from the list of Roles you are allowed to assign members to"/> <button label="Send Invitations" name="ok_button"/> - <button label="取銷" name="cancel_button"/> + <button label="取消" name="cancel_button"/> <string name="GroupInvitation"> 社團邀請 </string> diff --git a/indra/newview/skins/default/xui/zh/panel_group_notices.xml b/indra/newview/skins/default/xui/zh/panel_group_notices.xml index b4d7e3608e..5fed96dbd9 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_notices.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Notices" name="notices_tab"> +<panel label="通知" name="notices_tab"> <panel.string name="help_text"> Notices let you send a message and an optionally attached item. Notices only go to group members in Roles with the ability to receive Notices. @@ -13,18 +13,18 @@ You can turn off Notices on the General tab. Maximum 200 per group daily </text> <scroll_list name="notice_list"> - <scroll_list.columns label="Subject" name="subject"/> - <scroll_list.columns label="From" name="from"/> - <scroll_list.columns label="Date" name="date"/> + <scroll_list.columns label="主旨" name="subject"/> + <scroll_list.columns label="由" name="from"/> + <scroll_list.columns label="日期" name="date"/> </scroll_list> <text name="notice_list_none_found"> None found </text> - <button label="New Notice" name="create_new_notice" tool_tip="Create a new notice"/> + <button label="新通知" name="create_new_notice" tool_tip="建立一個新通知"/> <button name="refresh_notices" tool_tip="Refresh list of notices"/> - <panel label="Create New Notice" name="panel_create_new_notice"> + <panel label="建立新通知" name="panel_create_new_notice"> <text name="lbl"> - Create a Notice + 建立一個通知 </text> <text name="lbl3"> 主旨: @@ -36,14 +36,14 @@ Maximum 200 per group daily 附件: </text> <text name="string"> - Drag and drop item here to attach it: + 將物品拖曳並丟於此處以添加為附件: </text> <button label="收納區" name="open_inventory" tool_tip="開啟收納區"/> <button name="remove_attachment" tool_tip="Remove attachment from your notification"/> <button label="Send" label_selected="Send" name="send_notice"/> <group_drop_target name="drop_target" tool_tip="Drag an inventory item onto this target box to send it with this notice. You must have permission to copy and transfer the item in order to attach it."/> </panel> - <panel label="View Past Notice" name="panel_view_past_notice"> + <panel label="察看過去的通知" name="panel_view_past_notice"> <text name="lbl"> Archived Notice </text> @@ -51,11 +51,11 @@ Maximum 200 per group daily To send a new notice, click the + button </text> <text name="lbl3"> - Subject: + 主旨: </text> <text name="lbl4"> - Message: + 訊息: </text> - <button label="Open Attachment" name="open_attachment"/> + <button label="開啟附件" name="open_attachment"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_roles.xml b/indra/newview/skins/default/xui/zh/panel_group_roles.xml index 91f0f4125f..8947ab6e45 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_roles.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Members & Roles" name="roles_tab"> +<panel label="成員與角色" name="roles_tab"> <panel.string name="default_needs_apply_text"> There are unsaved changes </panel.string> @@ -7,7 +7,7 @@ Do you want to save your changes? </panel.string> <tab_container name="roles_tab_container"> - <panel label="MEMBERS" name="members_sub_tab" tool_tip="Members"> + <panel label="成員" name="members_sub_tab" tool_tip="成員"> <panel.string name="help_text"> You can add or remove Roles assigned to Members. Select multiple Members by holding the Ctrl key and @@ -16,16 +16,16 @@ clicking on their names. <panel.string name="donation_area"> [AREA] m² </panel.string> - <filter_editor label="Filter Members" name="filter_input"/> + <filter_editor label="成員過濾器" name="filter_input"/> <name_list name="member_list"> - <name_list.columns label="Member" name="name"/> + <name_list.columns label="成員" name="name"/> <name_list.columns label="Donation" name="donated"/> - <name_list.columns label="Status" name="online"/> + <name_list.columns label="狀態" name="online"/> </name_list> - <button label="Invite" name="member_invite"/> - <button label="Eject" name="member_eject"/> + <button label="邀請" name="member_invite"/> + <button label="踢出" name="member_eject"/> </panel> - <panel label="ROLES" name="roles_sub_tab"> + <panel label="角色" name="roles_sub_tab"> <panel.string name="help_text"> Roles have a title and an allowed list of Abilities that Members can perform. Members can belong to @@ -35,21 +35,21 @@ including the Everyone and Owner Roles. <panel.string name="cant_delete_role"> The 'Everyone' and 'Owners' Roles are special and can't be deleted. </panel.string> - <filter_editor label="Filter Roles" name="filter_input"/> + <filter_editor label="角色過濾器" name="filter_input"/> <scroll_list name="role_list"> - <scroll_list.columns label="Role" name="name"/> - <scroll_list.columns label="Title" name="title"/> + <scroll_list.columns label="角色" name="name"/> + <scroll_list.columns label="頭銜" name="title"/> <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="New Role" name="role_create"/> - <button label="Delete Role" name="role_delete"/> + <button label="新角色" name="role_create"/> + <button label="刪除角色" name="role_delete"/> </panel> - <panel label="ABILITIES" name="actions_sub_tab" tool_tip="You can view an Ability's Description and which Roles and Members can execute the Ability."> + <panel label="能力" name="actions_sub_tab" tool_tip="You can view an Ability's Description and which Roles and Members can execute the Ability."> <panel.string name="help_text"> Abilities allow Members in Roles to do specific things in this group. There's a broad variety of Abilities. </panel.string> - <filter_editor label="Filter Abilities" name="filter_input"/> + <filter_editor label="能力過濾器" name="filter_input"/> <scroll_list name="action_list" tool_tip="Select an Ability to view more details"/> </panel> </tab_container> @@ -67,10 +67,10 @@ things in this group. There's a broad variety of Abilities. 角色名稱 </text> <text name="static3"> - Role Title + 角色頭銜 </text> <text name="static2"> - Description + 描述 </text> <text name="static4"> Assigned Members diff --git a/indra/newview/skins/default/xui/zh/panel_landmarks.xml b/indra/newview/skins/default/xui/zh/panel_landmarks.xml index 0ea3ea2226..fa907e3d90 100644 --- a/indra/newview/skins/default/xui/zh/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/zh/panel_landmarks.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Landmarks"> <accordion name="landmarks_accordion"> - <accordion_tab name="tab_favorites" title="Favorites bar"/> + <accordion_tab name="tab_favorites" title="最愛列"/> <accordion_tab name="tab_landmarks" title="我的地標"/> <accordion_tab name="tab_inventory" title="我的收納區"/> <accordion_tab name="tab_library" title="Library"/> diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml index be9711c8a6..6e2d47c09e 100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml @@ -15,15 +15,15 @@ Owner </text> <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_owner_interact"/> - <check_box initial_value="false" label="Show Control Bar" name="perms_owner_control"/> + <check_box initial_value="false" label="顯示控制列" name="perms_owner_control"/> <text name="group_label"> 社團: </text> <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_group_interact"/> - <check_box initial_value="false" label="Show Control Bar" name="perms_group_control"/> + <check_box initial_value="false" label="顯示控制列" name="perms_group_control"/> <text name="anyone_label"> Anyone </text> <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_anyone_interact"/> - <check_box initial_value="false" label="Show Control Bar" name="perms_anyone_control"/> + <check_box initial_value="false" label="顯示控制列" name="perms_anyone_control"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml index 26e03c9b3b..1748d117f4 100644 --- a/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_navigation_bar.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="navigation_bar"> <panel name="navigation_panel"> - <pull_button name="back_btn" tool_tip="Go back to previous location"/> - <pull_button name="forward_btn" tool_tip="Go forward one location"/> + <pull_button name="back_btn" tool_tip="前往上一個位置"/> + <pull_button name="forward_btn" tool_tip="前往下一個位置"/> <button name="home_btn" tool_tip="瞬間傳送到我家的位置"/> <location_input label="位置" name="location_combo"/> <search_combo_box label="搜尋" name="search_combo_box" tool_tip="搜尋"> @@ -11,8 +11,8 @@ </panel> <favorites_bar name="favorite" tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"> <label name="favorites_bar_label" tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"> - Favorites Bar + 最愛列 </label> - <chevron_button name=">>" tool_tip="Show more of My Favorites"/> + <chevron_button name=">>" tool_tip="顯示更多我的最愛"/> </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_notes.xml b/indra/newview/skins/default/xui/zh/panel_notes.xml index cf804b517d..f68fd74d1f 100644 --- a/indra/newview/skins/default/xui/zh/panel_notes.xml +++ b/indra/newview/skins/default/xui/zh/panel_notes.xml @@ -18,7 +18,7 @@ <button label="加為朋友" name="add_friend" tool_tip="Offer friendship to the Resident"/> </layout_panel> <layout_panel name="im_btn_lp"> - <button label="IM" name="im" tool_tip="Open instant message session"/> + <button label="IM" name="im" tool_tip="開啟即時訊息會話"/> </layout_panel> <layout_panel name="call_btn_lp"> <button label="通話" name="call" tool_tip="與這位居民通話"/> diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml index a1fec08940..8da75e334e 100644 --- a/indra/newview/skins/default/xui/zh/panel_people.xml +++ b/indra/newview/skins/default/xui/zh/panel_people.xml @@ -67,7 +67,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M <button label="檔案" name="view_profile_btn" tool_tip="Show picture, groups, and other Residents information"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="IM" name="im_btn" tool_tip="Open instant message session"/> + <button label="IM" name="im_btn" tool_tip="開啟即時訊息會話"/> </layout_panel> <layout_panel name="chat_btn_lp"> <button label="通話" name="call_btn" tool_tip="Call this Resident"/> @@ -84,7 +84,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M <button label="社團檔案" name="group_info_btn" tool_tip="顯示社團資訊"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="Group Chat" name="chat_btn" tool_tip="Open chat session"/> + <button label="Group Chat" name="chat_btn" tool_tip="開啟聊天會話"/> </layout_panel> <layout_panel name="group_call_btn_lp"> <button label="Group Call" name="group_call_btn" tool_tip="Call this group"/> diff --git a/indra/newview/skins/default/xui/zh/panel_places.xml b/indra/newview/skins/default/xui/zh/panel_places.xml index 10524bc5f0..c141201ab2 100644 --- a/indra/newview/skins/default/xui/zh/panel_places.xml +++ b/indra/newview/skins/default/xui/zh/panel_places.xml @@ -41,7 +41,7 @@ <button label="儲存" name="save_btn"/> </layout_panel> <layout_panel name="cancel_btn_lp"> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml index ad137e9dd4..c5dce10d63 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml @@ -9,7 +9,7 @@ <check_box label="顯示腳本錯誤訊息於:" name="show_script_errors"/> <radio_group name="show_location"> <radio_item label="附近的聊天中" name="0"/> - <radio_item label="分開的試窗中" name="1"/> + <radio_item label="分開的視窗中" name="1"/> </radio_group> <check_box label="允許同時執行多個瀏覽器" name="allow_multiple_viewer_check"/> <check_box label="登入時顯示網格選擇" name="show_grid_selection_check"/> 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 34b0e3800f..a39402c858 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml @@ -9,7 +9,7 @@ <radio_item label="大" name="radio3" value="2"/> </radio_group> <check_box initial_value="true" label="聊天時播放打字動作" name="play_typing_animation"/> - <check_box label="Email me IMs when I'm offline" name="send_im_to_email"/> + <check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/> <check_box label="Enable plain text IM and chat history" name="plain_text_chat_history"/> <check_box label="聊天泡泡" name="bubble_text_chat"/> <text name="show_ims_in_label"> @@ -18,7 +18,7 @@ <text name="requires_restart_label"> (須重新啟動) </text> - <radio_group name="chat_window" tool_tip="Show your Instant Messages in separate floaters, or in one floater with many tabs (Requires restart)"> + <radio_group name="chat_window" tool_tip="顯示你的即時訊息在分開的浮動視窗,或是使用很多頁籤的單一浮動視窗(須重新啟動)"> <radio_item label="分開視窗" name="radio" value="0"/> <radio_item label="頁籤" name="radio2" value="1"/> </radio_group> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml index e53d2a8c06..c7299ad8a9 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml @@ -44,8 +44,8 @@ <radio_item label="Show briefly" name="radio3" value="2"/> </radio_group> <check_box label="My name" name="show_my_name_checkbox1"/> - <check_box label="Usernames" name="show_slids" tool_tip="Show username, like bobsmith123"/> - <check_box label="Group titles" name="show_all_title_checkbox1" tool_tip="Show group titles, like Officer or Member"/> + <check_box label="使用者名稱" name="show_slids" tool_tip="Show username, like bobsmith123"/> + <check_box label="社團頭銜" name="show_all_title_checkbox1" tool_tip="Show group titles, like Officer or Member"/> <check_box label="高亮顯示朋友" name="show_friends" tool_tip="高亮顯示你朋友的名稱標籤"/> <check_box label="View Display Names" name="display_names_check" tool_tip="Check to use display names in chat, IM, name tags, etc."/> <text name="inworld_typing_rg_label"> 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 68e149d866..8c728bf779 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Graphics" name="Display panel"> +<panel label="圖形" name="Display panel"> <text name="QualitySpeed"> Quality and speed: </text> @@ -21,7 +21,7 @@ <text name="ShadersPrefText4"> Ultra </text> - <panel label="CustomGraphics" name="CustomGraphics Panel"> + <panel label="自訂圖形" name="CustomGraphics Panel"> <text name="ShadersText"> Shaders: </text> @@ -43,7 +43,7 @@ <text name="AvatarPhysicsDetailText"> Low </text> - <slider label="Draw distance:" name="DrawDistance"/> + <slider label="描繪距離:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m </text> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml index e0e0911872..89a1a48abf 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml @@ -5,7 +5,7 @@ </panel.string> <button label="清除歷史紀錄" name="clear_cache" tool_tip="清除登入圖像、最後位置、瞬間傳送紀錄、網頁及材質快取"/> <text name="cache_size_label_l"> - (位置、圖像、網頁、搜尋的歷使紀錄) + (位置、圖像、網頁、搜尋的歷史紀錄) </text> <check_box label="將我顯示在搜尋的結果中" name="online_searchresults"/> <check_box label="只有我的朋友和社團知道我在線上" name="online_visibility"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml index 0c6d8386e4..2cab05e2ad 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml @@ -53,7 +53,7 @@ </text> <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Change the volume using this slider"/> <text name="wait_text"> - Please wait + 請稍候 </text> <text name="Output"> 輸出 diff --git a/indra/newview/skins/default/xui/zh/panel_profile.xml b/indra/newview/skins/default/xui/zh/panel_profile.xml index fafbf855de..7536311daf 100644 --- a/indra/newview/skins/default/xui/zh/panel_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_profile.xml @@ -33,7 +33,7 @@ <text name="title_rw_descr_text" value="真實世界:"/> </panel> <text name="title_member_text" value="Resident Since:"/> - <text name="title_acc_status_text" value="Account Status:"/> + <text name="title_acc_status_text" value="帳戶狀態:"/> <text name="title_partner_text" value="配偶:"/> <panel name="partner_data_panel"> <text initial_value="(retrieving)" name="partner_text"/> @@ -50,7 +50,7 @@ <button label="加為朋友" name="add_friend" tool_tip="Offer friendship to the Resident"/> </layout_panel> <layout_panel name="im_btn_lp"> - <button label="IM" name="im" tool_tip="Open instant message session"/> + <button label="IM" name="im" tool_tip="開啟即時訊息會話"/> </layout_panel> <layout_panel name="call_btn_lp"> <button label="通話" name="call" tool_tip="與這位居民通話"/> diff --git a/indra/newview/skins/default/xui/zh/panel_profile_view.xml b/indra/newview/skins/default/xui/zh/panel_profile_view.xml index a8d7c8d6d1..ac8c7cad3d 100644 --- a/indra/newview/skins/default/xui/zh/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/zh/panel_profile_view.xml @@ -7,11 +7,11 @@ Offline </string> <text name="display_name_label" value="Display Name:"/> - <text name="solo_username_label" value="Username:"/> + <text name="solo_username_label" value="使用者名稱:"/> <text name="status" value="Online"/> <text name="user_name_small" value="Jack oh look at me this is a super duper long name"/> <button name="copy_to_clipboard" tool_tip="覆製到剪貼簿"/> - <text name="user_label" value="Username:"/> + <text name="user_label" value="使用者名稱:"/> <tab_container name="tabs"> <panel label="檔案" name="panel_profile"/> <panel label="PICKS" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/zh/panel_region_debug.xml b/indra/newview/skins/default/xui/zh/panel_region_debug.xml index dee3e3045f..798831bc84 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_debug.xml @@ -6,7 +6,7 @@ <text name="region_text"> 未知 </text> - <check_box label="Disable Scripts" name="disable_scripts_check" tool_tip="Disable all scripts in this region"/> + <check_box label="關閉腳本" name="disable_scripts_check" tool_tip="關閉這個地區現在的全部腳本"/> <check_box label="Disable Collisions" name="disable_collisions_check" tool_tip="Disable non-avatar collisions in this region"/> <check_box label="Disable Physics" name="disable_physics_check" tool_tip="Disable all physics in this region"/> <button label="套用" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_region_estate.xml b/indra/newview/skins/default/xui/zh/panel_region_estate.xml index c1e43cef48..899191c3f0 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_estate.xml @@ -28,25 +28,25 @@ <check_box label="允許直接瞬間傳送" name="allow_direct_teleport"/> <button label="套用" name="apply_btn"/> <button label="瞬間傳送訊息到領地..." name="message_estate_btn"/> - <button label="由領地將居民踢除..." name="kick_user_from_estate_btn"/> + <button label="由領地將居民踢出..." name="kick_user_from_estate_btn"/> <text name="estate_manager_label"> 領地管理員: </text> - <button label="Remove..." name="remove_estate_manager_btn"/> - <button label="Add..." name="add_estate_manager_btn"/> + <button label="移除..." name="remove_estate_manager_btn"/> + <button label="添加..." name="add_estate_manager_btn"/> <text name="allow_resident_label"> - Allowed Residents: + 允許的居民: </text> - <button label="Remove..." name="remove_allowed_avatar_btn"/> - <button label="Add..." name="add_allowed_avatar_btn"/> + <button label="移除..." name="remove_allowed_avatar_btn"/> + <button label="添加..." name="add_allowed_avatar_btn"/> <text name="allow_group_label"> - Allowed Groups: + 允許的社團: </text> - <button label="Remove..." name="remove_allowed_group_btn"/> - <button label="Add..." name="add_allowed_group_btn"/> + <button label="移除..." name="remove_allowed_group_btn"/> + <button label="添加..." name="add_allowed_group_btn"/> <text name="ban_resident_label"> - Banned Residents: + 被封鎖的居民: </text> - <button label="Remove..." name="remove_banned_avatar_btn"/> - <button label="Add..." name="add_banned_avatar_btn"/> + <button label="移除..." name="remove_banned_avatar_btn"/> + <button label="添加..." name="add_banned_avatar_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml index f2ccb6e1cf..71caaf1144 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml @@ -24,7 +24,7 @@ <check_box label="Restrict Pushing" name="restrict_pushobject"/> <check_box label="Allow Land Resell" name="allow_land_resell_check"/> <check_box label="Allow Land Join/Divide" name="allow_parcel_changes_check"/> - <check_box label="Block Land Show in Search" name="block_parcel_search_check" tool_tip="Let people see this region and its parcels in search results"/> + <check_box label="阻擋土地顯示於搜尋中" name="block_parcel_search_check" tool_tip="Let people see this region and its parcels in search results"/> <spinner label="Agent Limit" name="agent_limit_spin"/> <spinner label="Object Bonus" name="object_bonus_spin"/> <text label="Maturity" name="access_text"> diff --git a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml index 0269c8f734..0622cb4e73 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Terrain" name="Terrain"> +<panel label="地形" name="Terrain"> <text name="region_text_lbl"> 地區: </text> @@ -14,6 +14,6 @@ <slider label="Phase" name="sun_hour_slider"/> <button label="套用" name="apply_btn"/> <button label="Download RAW terrain..." name="download_raw_btn" tool_tip="Available only to estate owners, not managers"/> - <button label="Upload RAW terrain..." name="upload_raw_btn" tool_tip="Available only to estate owners, not managers"/> + <button label="上傳 RAW 地形檔..." name="upload_raw_btn" tool_tip="Available only to estate owners, not managers"/> <button label="Bake Terrain" name="bake_terrain_btn" tool_tip="Set current terrain as mid-point for raise/lower limits"/> </panel> 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 03b845a76c..e42d904f32 100644 --- a/indra/newview/skins/default/xui/zh/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_ed.xml @@ -10,10 +10,10 @@ Public Objects cannot run scripts </panel.string> <panel.string name="script_running"> - Running + 執行中 </panel.string> <panel.string name="Title"> - Script: [NAME] + 腳本:[NAME] </panel.string> <panel.string name="external_editor_not_set"> Select an editor by setting the environment variable LL_SCRIPT_EDITOR or the ExternalEditor setting. @@ -30,7 +30,7 @@ <menu_item_call label="覆製" name="Copy"/> <menu_item_call label="貼上" name="Paste"/> <menu_item_call label="全選" name="Select All"/> - <menu_item_call label="取銷選擇" name="Deselect"/> + <menu_item_call label="取消選擇" name="Deselect"/> <menu_item_call label="搜尋 / 取代..." name="Search / Replace..."/> </menu> <menu label="幫助" name="Help"> diff --git a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml index cbb40e52de..950abbfb4c 100644 --- a/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/zh/panel_script_limits_region_memory.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="REGION MEMORY" name="script_limits_region_memory_panel"> +<panel label="地區記憶體" name="script_limits_region_memory_panel"> <text name="script_memory"> - Parcel Script Memory + 地段腳本記憶體 </text> <text name="loading_text"> 載入中... @@ -10,11 +10,11 @@ <scroll_list.columns label="尺寸(kb)" name="size"/> <scroll_list.columns label="URLs" name="urls"/> <scroll_list.columns label="物件名稱" name="name"/> - <scroll_list.columns label="Object Owner" name="owner"/> + <scroll_list.columns label="物件擁有者" name="owner"/> <scroll_list.columns label="地段" name="parcel"/> - <scroll_list.columns label="Location" name="location"/> + <scroll_list.columns label="位置" name="location"/> </scroll_list> <button label="Refresh List" name="refresh_list_btn"/> <button label="Highlight" name="highlight_btn"/> - <button label="Return" name="return_btn"/> + <button label="退回" name="return_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray.xml b/indra/newview/skins/default/xui/zh/panel_side_tray.xml index d0169b7c2d..85ac4613dd 100644 --- a/indra/newview/skins/default/xui/zh/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/zh/panel_side_tray.xml @@ -2,11 +2,11 @@ <!-- Side tray cannot show background because it is always partially on screen to hold tab buttons. --> <side_tray name="sidebar"> - <sidetray_tab description="Toggle Sidebar." name="sidebar_openclose" tab_title="Toggle Sidebar"/> + <sidetray_tab description="側邊欄切換。" name="sidebar_openclose" tab_title="側邊欄切換"/> <sidetray_tab description="首頁。" name="sidebar_home" tab_title="首頁"> <panel label="首頁" name="panel_home"/> </sidetray_tab> - <sidetray_tab description="Edit your public profile and Picks." name="sidebar_me" tab_title="我的檔案"> + <sidetray_tab description="編輯你的公開檔案及精選。" name="sidebar_me" tab_title="我的檔案"> <panel_container name="panel_container"> <panel label="自己" name="panel_me"/> </panel_container> @@ -17,13 +17,13 @@ <panel label="Blocked Residents & Objects" name="panel_block_list_sidetray"/> </panel_container> </sidetray_tab> - <sidetray_tab description="Find places to go and places you've visited before." label="Places" name="sidebar_places" tab_title="Places"> - <panel label="Places" name="panel_places"/> + <sidetray_tab description="Find places to go and places you've visited before." label="地點" name="sidebar_places" tab_title="地點"> + <panel label="地點" name="panel_places"/> </sidetray_tab> <sidetray_tab description="瀏覽你的收納區。" name="sidebar_inventory" tab_title="我的收納區"> <panel label="編輯收納區" name="sidepanel_inventory"/> </sidetray_tab> <sidetray_tab description="變更你的外觀與目前樣貌。" name="sidebar_appearance" tab_title="我的外觀"> - <panel label="Edit Appearance" name="sidepanel_appearance"/> + <panel label="編輯外觀" name="sidepanel_appearance"/> </sidetray_tab> </side_tray> diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml index 91015bb8b0..534c0f39fc 100644 --- a/indra/newview/skins/default/xui/zh/role_actions.xml +++ b/indra/newview/skins/default/xui/zh/role_actions.xml @@ -2,16 +2,16 @@ <role_actions> <action_set description="These Abilities include powers to add and remove group Members, and allow new Members to join without an invitation." name="Membership"> <action description="Invite People to this Group" longdescription="Invite People to this Group using the 'Invite' button in the Roles section > Members tab." name="member invite" value="1"/> - <action description="Eject Members from this Group" longdescription="Eject Members from this Group using the 'Eject' button in the Roles section > Members tab. An Owner can eject anyone except another Owner. If you're not an Owner, a Member can be ejected from a group if, and only if, they're only in the Everyone Role, and NO other Roles. To remove Members from Roles, you need to have the 'Remove Members from Roles' Ability." name="member eject" value="2"/> + <action description="將會員由這個社團中踢出" longdescription="Eject Members from this Group using the 'Eject' button in the Roles section > Members tab. An Owner can eject anyone except another Owner. If you're not an Owner, a Member can be ejected from a group if, and only if, they're only in the Everyone Role, and NO other Roles. To remove Members from Roles, you need to have the 'Remove Members from Roles' Ability." name="member eject" value="2"/> <action description="Toggle 'Open Enrollment' and change 'Enrollment fee'" longdescription="Toggle 'Open Enrollment' to let new Members join without an invitation, and change the 'Enrollment fee' in the General section." name="member options" value="3"/> </action_set> <action_set description="These Abilities include powers to add, remove, and change group Roles, add and remove Members in Roles, and assign Abilities to Roles." name="Roles"> <action description="Create new Roles" longdescription="Create new Roles in the Roles section > Roles tab." name="role create" value="4"/> - <action description="Delete Roles" longdescription="Delete Roles in the Roles section > Roles tab." name="role delete" value="5"/> + <action description="刪除角色" longdescription="Delete Roles in the Roles section > Roles tab." name="role delete" value="5"/> <action description="Change Role names, titles, descriptions, and whether Role members are publicly revealed" longdescription="Change Role names, titles, descriptions, and whether Role members are publicly revealed. This is done at the bottom of the the Roles section > Roles tab after selecting a Role." name="role properties" value="6"/> <action description="Assign Members to Assigner's Roles" longdescription="Assign Members to Roles in the list of Assigned Roles (Roles section > Members tab). A Member with this Ability can only add Members to a Role that the assigner is already in." name="role assign member limited" value="7"/> <action description="Assign Members to Any Role" longdescription="Assign Members to Any Role in the list of Assigned Roles (Roles section > Members tab). *WARNING* Any Member in a Role with this Ability can assign themselves--and any other non-Owner Member--to Roles that have more powers than they currently have, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability." name="role assign member" value="8"/> - <action description="Remove Members from Roles" longdescription="Remove Members from Roles in the list of Assigned Roles (Roles section > Members tab). Owners can't be removed." name="role remove member" value="9"/> + <action description="由角色中移除成員" longdescription="Remove Members from Roles in the list of Assigned Roles (Roles section > Members tab). Owners can't be removed." name="role remove member" value="9"/> <action description="Assign and Remove Abilities in Roles" longdescription="Assign and Remove Abilities for each Role in the list of Allowed Abilities (Roles section > Roles tab). *WARNING* Any Member in a Role with this Ability can assign themselves--and any other non-Owner Member--all Abilities, potentially elevating themselves to near-Owner power. Be sure you know what you're doing before assigning this Ability." name="role change actions" value="10"/> </action_set> <action_set description="These Abilities include powers to modify this group's identity, such as changing public visibility, charter, and insignia." name="Group Identity"> @@ -45,7 +45,7 @@ <action description="Manage parcel Access lists" longdescription="Manage parcel Access lists in About Land > Access tab." name="land manage allowed" value="29"/> <action description="Manage parcel Ban lists" longdescription="Manage parcel Ban lists in About Land > Access tab." name="land manage banned" value="30"/> <action description="Change parcel 'Sell passes to' settings" longdescription="Change parcel 'Sell passes to' settings in About Land > Access tab." name="land manage passes" value="31"/> - <action description="Eject and freeze Residents on parcels" longdescription="Members in a Role with this Ability can handle an unwelcome Resident on a group-owned parcel by right-clicking them, then selecting 'Eject' or 'Freeze'." name="land admin" value="32"/> + <action description="將地段內的居民踢出及凍結" longdescription="Members in a Role with this Ability can handle an unwelcome Resident on a group-owned parcel by right-clicking them, then selecting 'Eject' or 'Freeze'." name="land admin" value="32"/> </action_set> <action_set description="These Abilities include powers to allow members to return objects and place and move Linden plants. This is useful for Members to clean up litter and do landscaping, but it should also be used with care, because there's no undo for returning objects." name="Parcel Content"> <action description="Return objects owned by group" longdescription="Return objects on group-owned parcels that are owned by the group in About Land > Objects tab." name="land return group owned" value="48"/> @@ -62,8 +62,8 @@ <action description="Pay group liabilities and receive group dividends" longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees." name="accounting accountable" value="40"/> </action_set> <action_set description="These Abilities include powers to allow Members to send, receive, and view group Notices." name="Notices"> - <action description="Send Notices" longdescription="Members in a Role with this Ability can send Notices via the Group > Notices section." name="notices send" value="42"/> - <action description="Receive Notices and view past Notices" longdescription="Members in a Role with this Ability can receive Notices and view past Notices in Group > Notices section." name="notices receive" value="43"/> + <action description="送出通知" longdescription="Members in a Role with this Ability can send Notices via the Group > Notices section." name="notices send" value="42"/> + <action description="接收通知與察看過去通知" longdescription="Members in a Role with this Ability can receive Notices and view past Notices in Group > Notices section." name="notices receive" value="43"/> </action_set> <action_set description="These Abilities include powers to allow or restrict access to group chat sessions and group voice chat." name="Chat"> <action description="Join Group Chat" longdescription="Members in a Role with this Ability can join group chat sessions, for text and voice." name="join group chat" value="16"/> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml index 15437e3624..f28638d93d 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml @@ -71,6 +71,6 @@ </panel> </scroll_container> <panel name="button_panel"> - <button label="取銷" name="cancel_btn"/> + <button label="取消" name="cancel_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml index a011e29184..de5a10ba51 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml @@ -94,7 +94,7 @@ <combo_box.item label="Original" name="Original"/> </combo_box> <spinner label="價格: L$" name="Edit Cost"/> - <check_box label="Show in search" name="search_check" tool_tip="Let people see this object in search results"/> + <check_box label="顯示在搜尋中" name="search_check" tool_tip="Let people see this object in search results"/> <text name="B:"> B: </text> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index c3f669c686..211d91a707 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -59,37 +59,37 @@ Previous login attempt failed. Logging in, attempt [NUMBER] </string> <string name="LoginPrecaching"> - Loading world... + 世界載入中... </string> <string name="LoginInitializingBrowser"> - Initializing embedded web browser... + 內嵌式網頁瀏覽器初始化中... </string> <string name="LoginInitializingMultimedia"> - Initializing multimedia... + 多媒體初始化中... </string> <string name="LoginInitializingFonts"> - Loading fonts... + 字型載入中... </string> <string name="LoginVerifyingCache"> - Verifying cache files (can take 60-90 seconds)... + 驗證快取檔案(約需 60-90 秒左右)... </string> <string name="LoginProcessingResponse"> - Processing Response... + 回應處理中... </string> <string name="LoginInitializingWorld"> - Initializing World... + 世界初始化中... </string> <string name="LoginDecodingImages"> - Decoding images... + 圖像解碼中... </string> <string name="LoginInitializingQuicktime"> - Initializing QuickTime... + QuickTime 初始化中... </string> <string name="LoginQuicktimeNotFound"> - QuickTime not found - unable to initialize. + QuickTime 未發現 - 無法進行初始化。 </string> <string name="LoginQuicktimeOK"> - QuickTime initialized successfully. + QuickTime 已成功初始化。 </string> <string name="LoginWaitingForRegionHandshake"> 地區交握等待中... @@ -125,7 +125,7 @@ 登入失敗。 </string> <string name="Quit"> - Quit + 結束退出 </string> <string name="create_account_url"> http://join.secondlife.com/ @@ -191,7 +191,7 @@ No Scripts </string> <string name="TooltipLand"> - Land: + 土地: </string> <string name="TooltipMustSingleDrop"> Only a single item can be dragged here @@ -382,10 +382,10 @@ 服裝 </string> <string name="object"> - object + 物件 </string> <string name="note card"> - notecard + 記事卡 </string> <string name="folder"> 資料夾 @@ -403,28 +403,28 @@ tga 材質 </string> <string name="body part"> - body part + 身體部位 </string> <string name="snapshot"> - snapshot + 快照 </string> <string name="lost and found"> Lost and Found </string> <string name="targa image"> - targa image + targa 圖像 </string> <string name="trash"> - Trash + 垃圾桶 </string> <string name="jpeg image"> - jpeg image + jpeg 圖像 </string> <string name="animation"> - animation + 動作 </string> <string name="gesture"> - gesture + 姿勢 </string> <string name="simstate"> simstate @@ -439,13 +439,13 @@ folder link </string> <string name="AvatarEditingAppearance"> - (Editing Appearance) + (外觀編輯中) </string> <string name="AvatarAway"> - Away + 離開 </string> <string name="AvatarBusy"> - Busy + 忙碌 </string> <string name="AvatarMuted"> Blocked @@ -781,7 +781,7 @@ Animations </string> <string name="image_files"> - Images + 圖像 </string> <string name="save_file_verb"> Save @@ -790,10 +790,10 @@ Load </string> <string name="targa_image_files"> - Targa Images + Targa 圖像 </string> <string name="bitmap_image_files"> - Bitmap Images + Bitmap 圖像 </string> <string name="avi_movie_file"> AVI 影片檔案 @@ -1367,16 +1367,16 @@ [COUNT] 天 </string> <string name="GroupMembersA"> - [COUNT] member + [COUNT] 成員 </string> <string name="GroupMembersB"> - [COUNT] members + [COUNT] 成員 </string> <string name="GroupMembersC"> - [COUNT] members + [COUNT] 成員 </string> <string name="AcctTypeResident"> - Resident + 居民 </string> <string name="AcctTypeTrial"> Trial @@ -1457,28 +1457,28 @@ reset </string> <string name="RunQueueTitle"> - Set Running Progress + 設定執行中程序 </string> <string name="RunQueueStart"> - set running + 設為執行中 </string> <string name="NotRunQueueTitle"> - Set Not Running Progress + 設定非執行中程序 </string> <string name="NotRunQueueStart"> - set not running + 設為非執行中 </string> <string name="CompileSuccessful"> - Compile successful! + 編譯成功! </string> <string name="CompileSuccessfulSaving"> - Compile successful, saving... + 編譯成功,儲存中... </string> <string name="SaveComplete"> - Save complete. + 儲存完畢。 </string> <string name="ObjectOutOfRange"> - Script (object out of range) + 腳本(物件超出範圍) </string> <string name="GodToolsObjectOwnedBy"> Object [OBJECT] owned by [OWNER] @@ -1537,7 +1537,7 @@ Allowed groups: ([ALLOWEDGROUPS], max [MAXACCESS]) </string> <string name="ScriptLimitsParcelScriptMemory"> - Parcel Script Memory + 地段腳本記憶體 </string> <string name="ScriptLimitsParcelsOwned"> Parcels Listed: [PARCELS] @@ -1819,7 +1819,7 @@ Acquired Items </string> <string name="Cancel"> - 取銷 + 取消 </string> <string name="UploadingCosts"> 花費 L$ [AMOUNT] 上傳 [NAME] @@ -1919,7 +1919,7 @@ Down </string> <string name="Any Category"> - Any Category + 任何類別 </string> <string name="Shopping"> Shopping @@ -3565,7 +3565,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. 不允許飛行 </string> <string name="LocationCtrlPushTooltip"> - No pushing + 禁止推撞 </string> <string name="LocationCtrlBuildTooltip"> Building/dropping objects not allowed @@ -3586,34 +3586,34 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. General Region </string> <string name="UpdaterWindowTitle"> - [APP_NAME] Update + [APP_NAME] 更新 </string> <string name="UpdaterNowUpdating"> - Now updating [APP_NAME]... + [APP_NAME] 現更新中... </string> <string name="UpdaterNowInstalling"> - Installing [APP_NAME]... + [APP_NAME] 安裝中... </string> <string name="UpdaterUpdatingDescriptive"> Your [APP_NAME] Viewer is being updated to the latest release. This may take some time, so please be patient. </string> <string name="UpdaterProgressBarTextWithEllipses"> - Downloading update... + 更新下載中... </string> <string name="UpdaterProgressBarText"> - Downloading update + 更新下載 </string> <string name="UpdaterFailDownloadTitle"> - Failed to download update + 夏載更新失敗 </string> <string name="UpdaterFailUpdateDescriptive"> An error occurred while updating [APP_NAME]. Please download the latest version from www.secondlife.com. </string> <string name="UpdaterFailInstallTitle"> - Failed to install update + 安裝更新失敗 </string> <string name="UpdaterFailStartTitle"> - Failed to start viewer + 啟動瀏覽器失敗 </string> <string name="ItemsComingInTooFastFrom"> [APP_NAME]: Items coming in too fast from [FROM_NAME], automatic preview disabled for [TIME] seconds @@ -3625,7 +3625,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. -- Instant message logging enabled -- </string> <string name="IM_typing_start_string"> - [NAME] is typing... + [NAME] 正在輸入... </string> <string name="Unnamed"> (Unnamed) @@ -3688,13 +3688,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Drag items from inventory here </string> <string name="no_session_message"> - (IM Session Doesn't Exist) + (IM 會話不存在) </string> <string name="only_user_message"> You are the only user in this session. </string> <string name="offline_message"> - [NAME] is offline. + [NAME] 離線。 </string> <string name="invite_message"> Click the [BUTTON NAME] button to accept/connect to this voice chat. @@ -3712,7 +3712,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. You do not have sufficient permissions. </string> <string name="session_does_not_exist_error"> - The session no longer exists + 此會話不再存在 </string> <string name="no_ability_error"> You do not have that ability. @@ -3793,13 +3793,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. for deeding land </string> <string name="to create a group"> - to create a group + 以創造社團 </string> <string name="to join a group"> - to join a group + 以加入社團 </string> <string name="to upload"> - to upload + 以上傳 </string> <string name="to publish a classified ad"> to publish a classified ad @@ -3820,7 +3820,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. This object costs L$ [AMOUNT] </string> <string name="group_role_everyone"> - Everyone + 任何人 </string> <string name="group_role_officers"> Officers @@ -3829,7 +3829,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Owners </string> <string name="group_member_status_online"> - Online + 上線 </string> <string name="uploading_abuse_report"> 上傳中... @@ -4014,7 +4014,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. 無/無 </string> <string name="texture_load_dimensions_error"> - Can't load images larger than [WIDTH]*[HEIGHT] + 無法載入圖像大於 [WIDTH]*[HEIGHT] </string> <string name="words_separator" value=","/> <string name="server_is_down"> @@ -4051,7 +4051,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Membership </string> <string name="Roles"> - Roles + 角色 </string> <string name="Group Identity"> Group Identity @@ -4081,7 +4081,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Accounting </string> <string name="Notices"> - Notices + 通知 </string> <string name="Chat"> 聊天 -- cgit v1.2.3 From 51d6870572c83cec9c2968b68f47dea118cf6fd7 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 14 Jun 2011 12:24:32 -0700 Subject: FIX CT-637 DA translation for Basic Set2 --- .../skins/minimal/xui/da/floater_media_browser.xml | 21 ++++++++++++++++----- .../skins/minimal/xui/da/floater_web_content.xml | 8 ++++---- .../skins/minimal/xui/da/menu_people_nearby.xml | 8 ++++---- .../newview/skins/minimal/xui/da/notifications.xml | 18 ++++++++---------- .../skins/minimal/xui/da/panel_bottomtray.xml | 8 ++++---- .../minimal/xui/da/panel_group_control_panel.xml | 4 ++-- indra/newview/skins/minimal/xui/da/panel_login.xml | 2 +- 7 files changed, 39 insertions(+), 30 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml index d3028c32f9..42fbdeaa9e 100644 --- a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml +++ b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml @@ -1,18 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="MEDIE VÆLGER"> +<floater name="floater_about" title="MEDIA BROWSER"> + <floater.string name="home_page_url"> + http://www.secondlife.com + </floater.string> + <floater.string name="support_page_url"> + http://support.secondlife.com + </floater.string> <layout_stack name="stack1"> <layout_panel name="nav_controls"> <button label="Tilbage" name="back"/> <button label="Frem" name="forward"/> - <button label="Opdater" name="reload"/> - <button label="Gå til" name="go"/> + <button label="Genlæs" name="reload"/> + <button label="Go" name="go"/> + </layout_panel> + <layout_panel name="time_controls"> + <button label="tilbage" name="rewind"/> + <button label="stop" name="stop"/> + <button label="fremad" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> <button label="Send denne side til parcel" name="assign"/> </layout_panel> <layout_panel name="external_controls"> - <button label="Åben i min browser" name="open_browser"/> - <check_box label="Åben altid i min browser" name="open_always"/> + <button label="Åben i min internetbrowser" name="open_browser"/> + <check_box label="Åben altid i min internetbrowser" name="open_always"/> <button label="Luk" name="close"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/da/floater_web_content.xml b/indra/newview/skins/minimal/xui/da/floater_web_content.xml index 74092e88ec..0410f74324 100644 --- a/indra/newview/skins/minimal/xui/da/floater_web_content.xml +++ b/indra/newview/skins/minimal/xui/da/floater_web_content.xml @@ -2,13 +2,13 @@ <floater name="floater_web_content" title=""> <layout_stack name="stack1"> <layout_panel name="nav_controls"> - <button name="back" tool_tip="Navigér tilbage"/> - <button name="forward" tool_tip="Navigér frem"/> - <button name="stop" tool_tip="Stop navigering"/> + <button name="back" tool_tip="Gå bagud"/> + <button name="forward" tool_tip="Gå frem"/> + <button name="stop" tool_tip="Stop"/> <button name="reload" tool_tip="Genindlæs side"/> <combo_box name="address" tool_tip="Indtast URL her"/> <icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/> - <button name="popexternal" tool_tip="Åben denne URL i din normale browser"/> + <button name="popexternal" tool_tip="Åben denne URL i din normale internet browser"/> </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml index 5470c32761..220ab8724f 100644 --- a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml +++ b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Avatar Context Menu"> - <menu_item_call label="Profil" name="View Profile"/> - <menu_item_call label="Tilføj ven" name="Add Friend"/> - <menu_item_call label="Fjern ven" name="Remove Friend"/> - <menu_item_call label="Besked" name="IM"/> + <menu_item_call label="Vis profil" name="View Profile"/> + <menu_item_call label="Tilføj som ven" name="Add Friend"/> + <menu_item_call label="Fjern venskab" name="Remove Friend"/> + <menu_item_call label="IM" name="IM"/> <menu_item_call label="Opkald" name="Call"/> <menu_item_call label="Kort" name="Map"/> <menu_item_call label="Del" name="Share"/> diff --git a/indra/newview/skins/minimal/xui/da/notifications.xml b/indra/newview/skins/minimal/xui/da/notifications.xml index 0d2aaf45ce..e77eeee8df 100644 --- a/indra/newview/skins/minimal/xui/da/notifications.xml +++ b/indra/newview/skins/minimal/xui/da/notifications.xml @@ -1327,21 +1327,19 @@ Prøv igen om lidt. No valid parcel could be found. </notification> <notification name="ObjectGiveItem"> - Et object med navnet <nolink>[OBJECTFROMNAME]</nolink> ejet af [NAME_SLURL] har givet dig denne [OBJECTTYPE]: -[ITEM_SLURL] + Et objekt ved navn <nolink>[OBJECTFROMNAME]</nolink> ejet af [NAME_SLURL] tilbyder dig [ITEM_SLURL]. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. <form name="form"> - <button name="Keep" text="Behold"/> - <button name="Discard" text="Smid væk"/> - <button name="Mute" text="Blokér"/> + <button name="Keep" text="Behold genstand"/> + <button name="Discard" text="Afvis genstand"/> + <button name="Mute" text="Blokér objekt"/> </form> </notification> <notification name="UserGiveItem"> - [NAME_SLURL] har givet dig denne/dette [OBJECTTYPE]: -[ITEM_SLURL] + [NAME_SLURL] tilbyder dig [ITEM_SLURL]. For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. <form name="form"> - <button name="Show" text="Vis"/> - <button name="Discard" text="Smid væk"/> - <button name="Mute" text="Blokér"/> + <button name="Show" text="Behold genstand"/> + <button name="Discard" text="Afvis genstand"/> + <button name="Mute" text="Blokér bruger"/> </form> </notification> <notification name="GodMessage"> diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml index 53a30136ae..d5d8c3cf7f 100644 --- a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml @@ -11,10 +11,10 @@ <bottomtray_button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/> </layout_panel> <layout_panel name="avatar_and_destinations_panel"> - <radio_group name="avatar_and_destination_btns"> - <radio_item name="destination_btn" value="0"/> - <radio_item name="avatar_btn" value="1"/> - </radio_group> + <bottomtray_button label="Destinationer" name="destination_btn" tool_tip="Vis person vindue"/> + </layout_panel> + <layout_panel name="avatar_and_destinations_panel"> + <bottomtray_button label="Min avatar" name="avatar_btn"/> </layout_panel> <layout_panel name="people_panel"> <bottomtray_button label="Personer" name="show_people_button" tool_tip="Vis person-vindue"/> diff --git a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml index 26fe4f6ebe..23a5e79e22 100644 --- a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml +++ b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml @@ -8,10 +8,10 @@ <button label="Opkald gruppe" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> - <button label="Forlad opkald" name="end_call_btn"/> + <button label="Forlad samtale" name="end_call_btn"/> </layout_panel> <layout_panel name="voice_ctrls_btn_panel"> - <button label="Åben stemmekontroller" name="voice_ctrls_btn"/> + <button label="Åben stemme indstillinger" name="voice_ctrls_btn"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_login.xml b/indra/newview/skins/minimal/xui/da/panel_login.xml index fdcc550d82..2e0f726e1a 100644 --- a/indra/newview/skins/minimal/xui/da/panel_login.xml +++ b/indra/newview/skins/minimal/xui/da/panel_login.xml @@ -21,7 +21,7 @@ Tilstand: </text> <combo_box name="mode_combo" tool_tip="Vælg ønsket tilstand. Vælg basis for hurtig og nem udforskning og chat. Vælg avanceret for at få adgang til flere muligheder."> - <combo_box.item label="Basis (Standard)" name="Basic"/> + <combo_box.item label="Basis" name="Basic"/> <combo_box.item label="Avanceret" name="Advanced"/> </combo_box> <text name="start_location_text"> -- cgit v1.2.3 From 9899e2e7dd52924f40092b70a2071a9272d0bb1d Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 14 Jun 2011 12:28:05 -0700 Subject: FIX CT-641 DA translation for Set23 --- .../skins/default/xui/da/floater_beacons.xml | 1 + .../skins/default/xui/da/menu_avatar_self.xml | 1 + .../skins/default/xui/da/menu_bottomtray.xml | 2 +- .../skins/default/xui/da/menu_inventory.xml | 1 + .../skins/default/xui/da/menu_inventory_add.xml | 1 + .../skins/default/xui/da/menu_media_ctrl.xml | 6 + .../skins/default/xui/da/menu_outfit_gear.xml | 5 +- indra/newview/skins/default/xui/da/menu_viewer.xml | 5 + .../newview/skins/default/xui/da/notifications.xml | 17 ++- .../skins/default/xui/da/panel_edit_physics.xml | 14 +++ .../skins/default/xui/da/panel_edit_wearable.xml | 6 + .../default/xui/da/panel_preferences_chat.xml | 4 +- .../default/xui/da/panel_preferences_colors.xml | 14 +-- .../default/xui/da/panel_preferences_graphics1.xml | 6 +- .../default/xui/da/panel_preferences_sound.xml | 2 +- .../default/xui/da/panel_scrolling_param_base.xml | 4 + indra/newview/skins/default/xui/da/strings.xml | 123 +++++++++++++++++++++ 17 files changed, 196 insertions(+), 16 deletions(-) create mode 100644 indra/newview/skins/default/xui/da/menu_media_ctrl.xml create mode 100644 indra/newview/skins/default/xui/da/panel_edit_physics.xml create mode 100644 indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/da/floater_beacons.xml b/indra/newview/skins/default/xui/da/floater_beacons.xml index 8049b072ce..5100a6df1f 100644 --- a/indra/newview/skins/default/xui/da/floater_beacons.xml +++ b/indra/newview/skins/default/xui/da/floater_beacons.xml @@ -17,5 +17,6 @@ <check_box label="Kun berøring" name="touch_only"/> <check_box label="Lydkilder" name="sounds"/> <check_box label="Partikel kilder" name="particles"/> + <check_box label="Medie kilder" name="moapbeacon"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/da/menu_avatar_self.xml b/indra/newview/skins/default/xui/da/menu_avatar_self.xml index 0080f7a59e..4e6b42a744 100644 --- a/indra/newview/skins/default/xui/da/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/da/menu_avatar_self.xml @@ -14,6 +14,7 @@ <menu_item_call label="Undertrøje" name="Self Undershirt"/> <menu_item_call label="Underbukser" name="Self Underpants"/> <menu_item_call label="Tatovering" name="Self Tattoo"/> + <menu_item_call label="Fysik" name="Self Physics"/> <menu_item_call label="Alpha" name="Self Alpha"/> <menu_item_call label="Alt tøj" name="All Clothes"/> </context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_bottomtray.xml b/indra/newview/skins/default/xui/da/menu_bottomtray.xml index 9ac296904a..a0d74db36d 100644 --- a/indra/newview/skins/default/xui/da/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/da/menu_bottomtray.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="hide_camera_move_controls_menu"> - <menu_item_check label="Stemme aktiveret" name="EnableVoiceChat"/> + <menu_item_check label="Tal knap" name="EnableVoiceChat"/> <menu_item_check label="Faste bevægelser" name="ShowGestureButton"/> <menu_item_check label="Bevægelse knap" name="ShowMoveButton"/> <menu_item_check label="Vis knap" name="ShowCameraButton"/> diff --git a/indra/newview/skins/default/xui/da/menu_inventory.xml b/indra/newview/skins/default/xui/da/menu_inventory.xml index 35551318d1..f9bdf36f1f 100644 --- a/indra/newview/skins/default/xui/da/menu_inventory.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory.xml @@ -25,6 +25,7 @@ <menu_item_call label="Nye underbukser" name="New Underpants"/> <menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/> <menu_item_call label="Ny tatovering" name="New Tattoo"/> + <menu_item_call label="Ny fysik" name="New Physics"/> </menu> <menu label="Nye kropsdele" name="New Body Parts"> <menu_item_call label="Ny figur" name="New Shape"/> diff --git a/indra/newview/skins/default/xui/da/menu_inventory_add.xml b/indra/newview/skins/default/xui/da/menu_inventory_add.xml index 07f70d7190..2f953ab9f7 100644 --- a/indra/newview/skins/default/xui/da/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory_add.xml @@ -23,6 +23,7 @@ <menu_item_call label="Nye underbukser" name="New Underpants"/> <menu_item_call label="Nyt alpha lag" name="New Alpha"/> <menu_item_call label="Ny tatovering" name="New Tattoo"/> + <menu_item_call label="Ny fysik" name="New Physics"/> </menu> <menu label="Nye kropsdele" name="New Body Parts"> <menu_item_call label="Ny kropsbygning" name="New Shape"/> diff --git a/indra/newview/skins/default/xui/da/menu_media_ctrl.xml b/indra/newview/skins/default/xui/da/menu_media_ctrl.xml new file mode 100644 index 0000000000..788b1c4b59 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_media_ctrl.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="media ctrl context menu"> + <menu_item_call label="Klip" name="Cut"/> + <menu_item_call label="Kopier" name="Copy"/> + <menu_item_call label="Sæt ind" name="Paste"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_outfit_gear.xml b/indra/newview/skins/default/xui/da/menu_outfit_gear.xml index 8b4c776496..0b0fff3b93 100644 --- a/indra/newview/skins/default/xui/da/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_outfit_gear.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Outfit"> +<toggleable_menu name="Gear Outfit"> <menu_item_call label="Tag på - Erstat nuværende sæt" name="wear"/> <menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/> <menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/> @@ -14,6 +14,7 @@ <menu_item_call label="Ny undertrøje" name="New Undershirt"/> <menu_item_call label="Nye underbukser" name="New Underpants"/> <menu_item_call label="Ny alpha" name="New Alpha"/> + <menu_item_call label="Ny fysik" name="New Physics"/> <menu_item_call label="Ny tatovering" name="New Tattoo"/> </menu> <menu label="Nye kropsdele" name="New Body Parts"> @@ -24,4 +25,4 @@ </menu> <menu_item_call label="Omdøb sæt" name="rename"/> <menu_item_call label="Slet sæt" name="delete_outfit"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index f59a0622be..0c1892e58d 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -334,4 +334,9 @@ </menu> <menu_item_call label=""God Tools"" name="God Tools"/> </menu> + <menu label="Admin" name="Deprecated"> + <menu label="Take Off Clothing" name="Take Off Clothing"> + <menu_item_call label="Fysik" name="Physics"/> + </menu> + </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 0d2aaf45ce..52f0574476 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -1746,6 +1746,13 @@ Sluk for alles lyd? <notification label="Stå op" name="HintSit"> For at rejse dig op og forlad siddeposition, tryk på "Stå op" knappen. </notification> + <notification label="Tal" name="HintSpeak"> + Klik på tal knappen for at tænde og slukke for din mikrofon. + +Klik på den lille pil-op for at se stemme kontrolpanelet. + +Skjules tale knappen, vil stemmechat ikke være mulig. + </notification> <notification label="Undersøg verden" name="HintDestinationGuide"> Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen. </notification> @@ -1755,12 +1762,16 @@ Sluk for alles lyd? <notification label="Flyt" name="HintMove"> For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur. </notification> + <notification label="" name="HintMoveClick"> + 1. Klik for at gå +Klik et hvorsomhelst på jorden for at gå til dette sted. + +2. Klik og træk for at rotere visning +Klik hvorsomhelst i verden for at rotere din visning + </notification> <notification label="Visningsnavn" name="HintDisplayName"> Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger. </notification> - <notification label="Flyt" name="HintMoveArrows"> - For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op - </notification> <notification label="Se" name="HintView"> For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå. </notification> diff --git a/indra/newview/skins/default/xui/da/panel_edit_physics.xml b/indra/newview/skins/default/xui/da/panel_edit_physics.xml new file mode 100644 index 0000000000..16c9b16fa3 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_physics.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_physics_panel"> + <panel label="" name="accordion_panel"> + <accordion name="physics_accordion"> + <accordion_tab name="physics_breasts_updown_tab" title="Bryst fasthed"/> + <accordion_tab name="physics_breasts_inout_tab" title="Kavalergang"/> + <accordion_tab name="physics_breasts_leftright_tab" title="Bryst sving"/> + <accordion_tab name="physics_belly_tab" title="Mave fasthed"/> + <accordion_tab name="physics_butt_tab" title="Bagdel fasthed"/> + <accordion_tab name="physics_butt_leftright_tab" title="Bagdel sving"/> + <accordion_tab name="physics_advanced_tab" title="Avancerede parametre"/> + </accordion> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml index 4b9360f0d1..906870e6d9 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml @@ -45,6 +45,9 @@ <string name="edit_tattoo_title"> Redigerer tatovering </string> + <string name="edit_physics_title"> + Redigering af fysik + </string> <string name="shape_desc_text"> Kropsbygning: </string> @@ -90,6 +93,9 @@ <string name="tattoo_desc_text"> Tatovering: </string> + <string name="physics_desc_text"> + Fysik: + </string> <labeled_back_button label="Gem" name="back_btn" tool_tip="Tilbage til redigering"/> <text name="edit_wearable_title" value="Redigerer kropsbygning"/> <panel label="Trøje" name="wearable_type_panel"> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml index ed499619f6..19c82509cd 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml @@ -30,7 +30,9 @@ <spinner label="Tid før chatvisning forsvinder:" name="nearby_toasts_lifetime"/> <spinner label="Tid før chatvisning forsvinder:" name="nearby_toasts_fadingtime"/> <check_box name="translate_chat_checkbox"/> - <text name="translate_chb_label" >Benyt maskin-oversættelse ved chat (håndteret af Google)</text> + <text name="translate_chb_label"> + Benyt maskinel oversættelse ved chat (håndteret af Google) + </text> <text name="translate_language_text" width="110"> Oversæt chat til : </text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml index b2b00db769..1e024aa647 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Farver" name="colors_panel"> <text name="effects_color_textbox"> - Mine effekter (selektions-stråle): + Mine effekter (selektions pejlelys): </text> - <color_swatch name="effect_color_swatch" tool_tip="Klik for at åbne farve-vælger"/> + <color_swatch name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/> <text name="font_colors"> - Chat bogstavsfarver: + Vælg font farver: </text> <text name="text_box1"> Mig @@ -29,12 +29,12 @@ URL'er </text> <text name="bubble_chat"> - Baggrundsfarve til navne-skilt (berører også Bubble Chat): + Navneskilt baggrundsfarve (påvirker også chat talebobler): </text> - <color_swatch name="background" tool_tip="Vælg farve til navne-skilt"/> - <slider label="Uigennemsigtighed:" name="bubble_chat_opacity" tool_tip="Vælg gennemsigtighed for navneskilt"/> + <color_swatch name="background" tool_tip="Vælg navneskilt farve"/> + <slider label="Gennemsigtighed:" name="bubble_chat_opacity" tool_tip="Vælg navneskilt gennemsigtighed"/> <text name="floater_opacity"> - Vindue uigennemsigtighed: + Floater gennemsigtighed: </text> <slider label="Aktiv:" name="active"/> <slider label="Inaktiv:" name="inactive"/> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml index 15da1f9ec5..d7b4ce3883 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml @@ -40,6 +40,10 @@ <combo_box.item label="Alle avatarer og objekter" name="3"/> <combo_box.item label="Alt" name="4"/> </combo_box> + <slider label="Avatar fysik:" name="AvatarPhysicsDetail"/> + <text name="AvatarPhysicsDetailText"> + Lav + </text> <slider label="Maks. visnings-afstand:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -78,7 +82,7 @@ Lav </text> <text name="AvatarRenderingText"> - Avatar gengivelse + Avatar rendering: </text> <check_box initial_value="true" label="Mini-figurer på lang afstand" name="AvatarImpostors"/> <check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index 0626976cb5..26d2ae4abd 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml @@ -6,7 +6,7 @@ <slider label="Generel" name="System Volume"/> <check_box initial_value="true" name="mute_when_minimized"/> <text name="mute_chb_label"> - Sluk lyd når minimeret + Sluk for lyd når minimeret </text> <slider label="Knapper" name="UI Volume"/> <slider label="Omgivelser" name="Wind Volume"/> diff --git a/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml b/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml new file mode 100644 index 0000000000..fa659040ea --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_scrolling_param_base.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="LLScrollingPanelParamBase"> + <slider label="[DESC]" name="param slider"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index afc826d6d7..7fd8d8a106 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -852,6 +852,9 @@ <string name="tattoo"> Tatovering </string> + <string name="physics"> + Fysik + </string> <string name="invalid"> ugyldig </string> @@ -891,6 +894,9 @@ <string name="tattoo_not_worn"> Tatovering ikke benyttet </string> + <string name="physics_not_worn"> + Ikke noget fysisk båret + </string> <string name="invalid_not_worn"> ugyldig </string> @@ -939,6 +945,9 @@ <string name="create_new_tattoo"> Opret ny tatovering </string> + <string name="create_new_physics"> + Opret ny fysik + </string> <string name="create_new_invalid"> ugyldig </string> @@ -2175,6 +2184,114 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="Bulbous Nose"> Kartoffelnæse </string> + <string name="Breast Physics Mass"> + Bryst fylde + </string> + <string name="Breast Physics Smoothing"> + Brystudjævning + </string> + <string name="Breast Physics Gravity"> + Bryst tyngde + </string> + <string name="Breast Physics Drag"> + Bryst inerti + </string> + <string name="Breast Physics InOut Max Effect"> + Maks. effekt + </string> + <string name="Breast Physics InOut Spring"> + Fjeder + </string> + <string name="Breast Physics InOut Gain"> + Øg + </string> + <string name="Breast Physics InOut Damping"> + Dæmpning + </string> + <string name="Breast Physics UpDown Max Effect"> + Maks. effekt + </string> + <string name="Breast Physics UpDown Spring"> + Fjeder + </string> + <string name="Breast Physics UpDown Gain"> + Øg + </string> + <string name="Breast Physics UpDown Damping"> + Dæmpning + </string> + <string name="Breast Physics LeftRight Max Effect"> + Maks. effekt + </string> + <string name="Breast Physics LeftRight Spring"> + Fjeder + </string> + <string name="Breast Physics LeftRight Gain"> + Øg + </string> + <string name="Breast Physics LeftRight Damping"> + Dæmpning + </string> + <string name="Belly Physics Mass"> + Mave omfang + </string> + <string name="Belly Physics Smoothing"> + maveudjævning + </string> + <string name="Belly Physics Gravity"> + Mave tyngde + </string> + <string name="Belly Physics Drag"> + Mave inerti + </string> + <string name="Belly Physics UpDown Max Effect"> + Maks. effekt + </string> + <string name="Belly Physics UpDown Spring"> + Fjeder + </string> + <string name="Belly Physics UpDown Gain"> + Øg + </string> + <string name="Belly Physics UpDown Damping"> + Dæmpning + </string> + <string name="Butt Physics Mass"> + Bagdel omfang + </string> + <string name="Butt Physics Smoothing"> + Bagdelsudjævning + </string> + <string name="Butt Physics Gravity"> + Bagdel tyngde + </string> + <string name="Butt Physics Drag"> + Bagdel modstand + </string> + <string name="Butt Physics UpDown Max Effect"> + Maks. effekt + </string> + <string name="Butt Physics UpDown Spring"> + Fjeder + </string> + <string name="Butt Physics UpDown Gain"> + Øg + </string> + <string name="Butt Physics UpDown Damping"> + Dæmpning + </string> + <string name="Butt Physics LeftRight Max Effect"> + Maks. effekt + </string> + <string name="Butt Physics LeftRight Spring"> + Fjeder + </string> + <string name="Butt Physics LeftRight Gain"> + Øg + </string> + <string name="Butt Physics LeftRight Damping"> + Dæmpning + </string> <string name="Bushy Eyebrows"> Buskede øjenbryn </string> @@ -2184,6 +2301,9 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="Butt Size"> Størrelse bagdel </string> + <string name="Butt Gravity"> + Bagdel tyngde + </string> <string name="bustle skirt"> Tournure </string> @@ -3659,6 +3779,9 @@ Krænkelsesanmeldelse <string name="New Tattoo"> Ny tatovering </string> + <string name="New Physics"> + Ny fysik + </string> <string name="Invalid Wearable"> Kan ikke tages på </string> -- cgit v1.2.3 From 155cda7e829070b5f4c5f75acbbcef02967aeeef Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 14 Jun 2011 12:33:41 -0700 Subject: WIP CT-648 DA translation for Set24, Basic Set3 --- .../newview/skins/default/xui/da/floater_about.xml | 40 ++-- .../skins/default/xui/da/floater_buy_contents.xml | 2 +- .../default/xui/da/floater_import_collada.xml | 23 ++ .../xui/da/floater_inventory_view_finder.xml | 39 ++-- .../skins/default/xui/da/floater_model_preview.xml | 231 ++++++++++++++++++++ .../skins/default/xui/da/floater_model_wizard.xml | 241 +++++++++++++++++++++ .../default/xui/da/floater_price_for_listing.xml | 18 ++ .../skins/default/xui/da/floater_sound_devices.xml | 7 + .../newview/skins/default/xui/da/floater_tools.xml | 48 +++- .../skins/default/xui/da/menu_inventory_add.xml | 2 + .../xui/da/menu_model_import_gear_default.xml | 8 + indra/newview/skins/default/xui/da/menu_viewer.xml | 12 +- .../newview/skins/default/xui/da/notifications.xml | 42 ++++ .../default/xui/da/panel_preferences_colors.xml | 3 + .../default/xui/da/panel_preferences_graphics1.xml | 12 + .../skins/default/xui/da/panel_region_general.xml | 1 + .../skins/default/xui/da/panel_sound_devices.xml | 19 ++ indra/newview/skins/default/xui/da/strings.xml | 143 ++++++++++++ .../minimal/xui/da/panel_adhoc_control_panel.xml | 2 +- .../skins/minimal/xui/da/panel_bottomtray.xml | 24 +- .../minimal/xui/da/panel_im_control_panel.xml | 2 +- .../newview/skins/minimal/xui/da/panel_people.xml | 2 +- 22 files changed, 862 insertions(+), 59 deletions(-) create mode 100644 indra/newview/skins/default/xui/da/floater_import_collada.xml create mode 100644 indra/newview/skins/default/xui/da/floater_model_preview.xml create mode 100644 indra/newview/skins/default/xui/da/floater_model_wizard.xml create mode 100644 indra/newview/skins/default/xui/da/floater_price_for_listing.xml create mode 100644 indra/newview/skins/default/xui/da/floater_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml create mode 100644 indra/newview/skins/default/xui/da/panel_sound_devices.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 9b1df65d1b..0ccaab73ba 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -56,24 +56,30 @@ Tak til følgende beboere: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Ha <panel label="Licenser" name="licenses_panel"> <text_editor name="credits_editor"> 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion - APR Copyright (C) 2000-2004 The Apache Software Foundation - cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) - DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. - expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. - FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). - GL Copyright (C) 1999-2004 Brian Paul. - Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) - jpeglib Copyright (C) 1991-1998, Thomas G. Lane. - ogg/vorbis Copyright (C) 2001, Xiphophorus - OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. - SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga - SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - xmlrpc-epi Copyright (C) 2000 Epinions, Inc. - zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. - google-perftools Copyright (c) 2005, Google Inc. +APR Copyright (C) 2000-2004 The Apache Software Foundation +Collada DOM Copyright 2005 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. +expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. +FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). +GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University and David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. +Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeglib Copyright (C) 1991-1998, Thomas G. Lane. +ogg/vorbis Copyright (C) 2001, Xiphophorus +OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. +PCRE Copyright (c) 1997-2008 University of Cambridge +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +xmlrpc-epi Copyright (C) 2000 Epinions, Inc. +zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. +google-perftools Copyright (c) 2005, Google Inc. -Alle rettigheder forbeholdes. Se licenses.txt for detaljer. +Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. + +All rights reserved. See licenses.txt for details. Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) </text_editor> diff --git a/indra/newview/skins/default/xui/da/floater_buy_contents.xml b/indra/newview/skins/default/xui/da/floater_buy_contents.xml index c2b2ccc244..085fa2f9cc 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_contents.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_buy_contents" title="KØB INDHOLD"> <text name="contains_text"> - [NAME] indeholder: + <nolink>[NAME]</nolink> contains: </text> <text name="buy_text"> Køb for L$[AMOUNT] fra [NAME]? diff --git a/indra/newview/skins/default/xui/da/floater_import_collada.xml b/indra/newview/skins/default/xui/da/floater_import_collada.xml new file mode 100644 index 0000000000..ebc7c86388 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_import_collada.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Import Collada" title="Import Scene"> + <text name="mesh count"> + Meshes: [COUNT] + </text> + <text name="texture count"> + Textures: [COUNT] + </text> + <text name="status"> + Status: [STATUS] + </text> + <button label="Cancel" name="cancel"/> + <button label="OK" name="ok"/> + <string name="status_idle"> + Idle + </string> + <string name="status_uploading"> + Uploading [NAME] + </string> + <string name="status_creating"> + Creating object [NAME] + </string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml index af2910fe58..655701bb96 100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_view_finder.xml @@ -1,24 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS"> - <check_box label="Animation" name="check_animation" /> - <check_box label="Visitkort" name="check_calling_card" /> - <check_box label="Tøj" name="check_clothing" /> - <check_box label="Bevægelser" name="check_gesture" /> - <check_box label="Landemærke" name="check_landmark" /> - <check_box label="Note" name="check_notecard" /> - <check_box label="Objekter" name="check_object" /> - <check_box label="Scripts" name="check_script" /> - <check_box label="Lyde" name="check_sound" /> - <check_box label="Teksturer" name="check_texture" /> - <check_box label="Foto's" name="check_snapshot" /> - <button label="Alle" label_selected="Alle" name="All" /> - <button label="Ingen" label_selected="Ingen" name="None" /> - <check_box label="Vis altid mapper" name="check_show_empty" /> - <check_box label="Siden sidste logoff" name="check_since_logoff" /> + <check_box label="Animation" name="check_animation"/> + <check_box label="Visitkort" name="check_calling_card"/> + <check_box label="Tøj" name="check_clothing"/> + <check_box label="Bevægelser" name="check_gesture"/> + <check_box label="Landemærke" name="check_landmark"/> + <check_box label="Meshes" name="check_mesh"/> + <check_box label="Note" name="check_notecard"/> + <check_box label="Objekter" name="check_object"/> + <check_box label="Scripts" name="check_script"/> + <check_box label="Lyde" name="check_sound"/> + <check_box label="Teksturer" name="check_texture"/> + <check_box label="Foto's" name="check_snapshot"/> + <button label="Alle" label_selected="Alle" name="All"/> + <button label="Ingen" label_selected="Ingen" name="None"/> + <check_box label="Vis altid mapper" name="check_show_empty"/> + <check_box label="Siden sidste logoff" name="check_since_logoff"/> <text name="- OR -"> - ELLER - </text> - <spinner label="Timer siden" name="spin_hours_ago" /> - <spinner label="Dage siden" name="spin_days_ago" /> - <button label="Luk" label_selected="Luk" name="Close" /> + <spinner label="Timer siden" name="spin_hours_ago"/> + <spinner label="Dage siden" name="spin_days_ago"/> + <button label="Luk" label_selected="Luk" name="Close"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_model_preview.xml b/indra/newview/skins/default/xui/da/floater_model_preview.xml new file mode 100644 index 0000000000..a98c70ff52 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_model_preview.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Preview" title="Upload Model"> + <string name="status_idle"> + Idle + </string> + <string name="status_reading_file"> + Loading... + </string> + <string name="status_generating_meshes"> + Generating Meshes... + </string> + <string name="status_vertex_number_overflow"> + Error: Vertex number is more than 65534, aborted! + </string> + <string name="high"> + High + </string> + <string name="medium"> + Medium + </string> + <string name="low"> + Low + </string> + <string name="lowest"> + Lowest + </string> + <string name="mesh_status_good"> + Ship it! + </string> + <string name="mesh_status_na"> + N/A + </string> + <string name="mesh_status_none"> + None + </string> + <string name="mesh_status_submesh_mismatch"> + Levels of detail have a different number of textureable faces. + </string> + <string name="mesh_status_mesh_mismatch"> + Levels of detail have a different number of mesh instances. + </string> + <string name="mesh_status_too_many_vertices"> + Level of detail has too many vertices. + </string> + <string name="mesh_status_missing_lod"> + Missing required level of detail. + </string> + <string name="layer_all"> + All + </string> + <string name="decomposing"> + Analyzing... + </string> + <string name="simplifying"> + Simplifying... + </string> + <text name="name_label"> + Name: + </text> + <text name="lod_label"> + Preview: + </text> + <combo_box name="preview_lod_combo" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + Level of Detail: High + </combo_item> + <combo_item name="medium"> + Level of Detail: Medium + </combo_item> + <combo_item name="low"> + Level of Detail: Low + </combo_item> + <combo_item name="lowest"> + Level of Detail: Lowest + </combo_item> + </combo_box> + <panel> + <text name="streaming cost"> + Resource Cost: [COST] + </text> + <text name="physics cost"> + Physics Cost: [COST] + </text> + <text name="upload fee"> + Upload Fee: N/A + </text> + </panel> + <text name="status"> + [STATUS] + </text> + <button label="Defaults" name="reset_btn" tool_tip="Reset to defaults"/> + <button label="Upload" name="ok_btn" tool_tip="Upload to simulator"/> + <button label="Cancel" name="cancel_btn"/> + <tab_container name="import_tab"> + <panel label="Level of Detail" name="lod_panel"> + <text name="lod_table_header"> + Select Level of Detail: + </text> + <text name="high_label" value="High"/> + <text name="high_triangles" value="0"/> + <text name="high_vertices" value="0"/> + <text name="medium_label" value="Medium"/> + <text name="medium_triangles" value="0"/> + <text name="medium_vertices" value="0"/> + <text name="low_label" value="Low"/> + <text name="low_triangles" value="0"/> + <text name="low_vertices" value="0"/> + <text name="lowest_label" value="Lowest"/> + <text name="lowest_triangles" value="0"/> + <text name="lowest_vertices" value="0"/> + <text name="lod_table_footer"> + Level of Detail: [DETAIL] + </text> + <radio_group name="lod_file_or_limit" value="lod_from_file"> + <radio_item label="Load from file" name="lod_from_file"/> + <radio_item label="Auto generate" name="lod_auto_generate"/> + <radio_item label="None" name="lod_none"/> + </radio_group> + <button label="Browse..." name="lod_browse"/> + <combo_box name="lod_mode"> + <combo_item name="triangle_limit"> + Triangle Limit + </combo_item> + <combo_item name="error_threshold"> + Error Threshold + </combo_item> + </combo_box> + <text name="build_operator_text"> + Build Operator: + </text> + <text name="queue_mode_text"> + Queue Mode: + </text> + <combo_box name="build_operator"> + <combo_item name="edge_collapse"> + Edge Collapse + </combo_item> + <combo_item name="half_edge_collapse"> + Half Edge Collapse + </combo_item> + </combo_box> + <combo_box name="queue_mode"> + <combo_item name="greedy"> + Greedy + </combo_item> + <combo_item name="lazy"> + Lazy + </combo_item> + <combo_item name="independent"> + Independent + </combo_item> + </combo_box> + <text name="border_mode_text"> + Border Mode: + </text> + <text name="share_tolderance_text"> + Share Tolerance: + </text> + <combo_box name="border_mode"> + <combo_item name="border_unlock"> + Unlock + </combo_item> + <combo_item name="border_lock"> + Lock + </combo_item> + </combo_box> + <text name="crease_label"> + Crease Angle: + </text> + <spinner name="crease_angle" value="75"/> + </panel> + <panel label="Physics" name="physics_panel"> + <panel name="physics geometry"> + <radio_group name="physics_load_radio" value="physics_load_from_file"> + <radio_item label="File:" name="physics_load_from_file"/> + <radio_item label="Use Level of Detail:" name="physics_use_lod"/> + </radio_group> + <combo_box name="physics_lod_combo" tool_tip="LOD to use for physics shape"> + <combo_item name="physics_lowest"> + Lowest + </combo_item> + <combo_item name="physics_low"> + Low + </combo_item> + <combo_item name="physics_medium"> + Medium + </combo_item> + <combo_item name="physics_high"> + High + </combo_item> + </combo_box> + <button label="Browse..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <slider label="Smooth:" name="Smooth"/> + <check_box label="Close Holes (slow)" name="Close Holes (Slow)"/> + <button label="Analyze" name="Decompose"/> + <button label="Cancel" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <slider label="Passes:" name="Combine Quality"/> + <slider label="Detail Scale:" name="Detail Scale"/> + <slider label="Retain:" name="Retain%"/> + <button label="Simplify" name="Simplify"/> + <button label="Cancel" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <slider label="Preview Spread:" name="physics_explode"/> + <text name="physics_triangles"> + Triangles: [TRIANGLES] + </text> + <text name="physics_points"> + Vertices: [POINTS] + </text> + <text name="physics_hulls"> + Hulls: [HULLS] + </text> + </panel> + </panel> + <panel label="Modifiers" name="modifiers_panel"> + <spinner name="import_scale" value="1.0"/> + <text name="import_dimensions"> + [X] x [Y] x [Z] m + </text> + <check_box label="Textures" name="upload_textures"/> + <check_box label="Skin weight" name="upload_skin"/> + <check_box label="Joint positions" name="upload_joints"/> + <spinner name="pelvis_offset" value="0.0"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_model_wizard.xml b/indra/newview/skins/default/xui/da/floater_model_wizard.xml new file mode 100644 index 0000000000..8ad443581a --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_model_wizard.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Wizard" title="UPLOAD MODEL WIZARD"> + <button label="5. Upload" name="upload_btn"/> + <button label="4. Review" name="review_btn"/> + <button label="3. Physics" name="physics2_btn"/> + <button label="3. Physics" name="physics_btn"/> + <button label="2. Optimize" name="optimize_btn"/> + <button label="1. Choose File" name="choose_file_btn"/> + <panel name="choose_file_panel"> + <panel name="header_panel"> + <text name="header_text"> + Upload Model + </text> + </panel> + <text name="description"> + This wizard will help you import mesh models to Second Life. First specify a file containing the model you wish to import. Second Life supports COLLADA (.dae) files. + </text> + <panel name="content"> + <text name="Cache location"> + Filename: + </text> + <button label="Browse..." label_selected="Browse..." name="browse"/> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="optimize_panel"> + <panel name="header_panel"> + <text name="header_text"> + Optimize + </text> + </panel> + <text name="description"> + This wizard has optimized your model to improve performance. You may adjust the results of the optimization process bellow or click Next to continue. + </text> + <panel name="content"> + <text name="high_detail_text"> + Generate Level of Detail: High + </text> + <text name="medium_detail_text"> + Generate Level of Detail: Medium + </text> + <text name="low_detail_text"> + Generate Level of Detail: Low + </text> + <text name="lowest_detail_text"> + Generate Level of Detail: Lowest + </text> + </panel> + <panel name="content2"> + <text name="lod_label"> + Model Preview: + </text> + <combo_box name="preview_lod_combo2" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="low"> + Low + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + </combo_box> + <text name="streaming cost"> + Resource Cost: [COST] + </text> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="physics_panel"> + <panel name="header_panel"> + <text name="header_text"> + Physics + </text> + </panel> + <text name="description"> + The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used: + </text> + <panel name="content"> + <text name="streaming cost"> + Resource Cost: [COST] + </text> + </panel> + </panel> + <panel name="physics2_panel"> + <panel name="header_panel"> + <text name="header_text"> + Physics + </text> + </panel> + <text name="description"> + Preview the physics shape below then click Next to continue. To modify the physics shape, click the Back button. + </text> + <panel name="content"> + <text name="lod_label"> + Model Preview: + </text> + <combo_box name="preview_lod_combo3" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="low"> + Low + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + <text name="streaming cost"> + Resource Cost: [COST] + </text> + </panel> + </panel> + <panel name="review_panel"> + <panel name="header_panel"> + <text name="header_text"> + Review + </text> + </panel> + <text name="description"> + Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload. + </text> + <panel name="content"> + <text name="lod_label"> + Model Preview: + </text> + <combo_box name="preview_lod_combo" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="low"> + Low + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + <text name="streaming cost"> + Resource Cost: [COST] + </text> + <text name="physics cost"> + Physics Cost: [COST] + </text> + </panel> + <panel name="upload_panel"> + <panel name="header_panel"> + <text name="header_text"> + Upload Complete! + </text> + </panel> + <text name="description"> + Congratulations! Your model has been sucessfully uploaded. You will find the model in the Objects folder in your inventory. + </text> + </panel> + <button label="<< Back" name="back"/> + <button label="Next >>" name="next"/> + <button label="Upload" name="upload" tool_tip="Upload to simulator"/> + <button label="Cancel" name="cancel"/> + <button label="Close" name="close"/> + <spinner name="import_scale" value="1.0"/> + <string name="status_idle"> + Idle + </string> + <string name="status_reading_file"> + Loading... + </string> + <string name="status_generating_meshes"> + Generating Meshes... + </string> + <string name="status_vertex_number_overflow"> + Error: Vertex number is more than 65534, aborted! + </string> + <string name="high"> + High + </string> + <string name="medium"> + Medium + </string> + <string name="low"> + Low + </string> + <string name="lowest"> + Lowest + </string> + <string name="mesh_status_good"> + Ship it! + </string> + <string name="mesh_status_na"> + N/A + </string> + <string name="mesh_status_none"> + None + </string> + <string name="mesh_status_submesh_mismatch"> + Levels of detail have a different number of textureable faces. + </string> + <string name="mesh_status_mesh_mismatch"> + Levels of detail have a different number of mesh instances. + </string> + <string name="mesh_status_too_many_vertices"> + Level of detail has too many vertices. + </string> + <string name="mesh_status_missing_lod"> + Missing required level of detail. + </string> + <string name="layer_all"> + All + </string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_price_for_listing.xml b/indra/newview/skins/default/xui/da/floater_price_for_listing.xml new file mode 100644 index 0000000000..b091fa09b5 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_price_for_listing.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="price_for_listing" title="PUBLISH CLASSIFIED AD"> + <text name="explanation_text"> + Din annonce vil løbe en uge fra udgivelsesdatoen. + +Placeringen af din annonce i listerne er afhængig af hvor meget du har valgt at betale. + +De annoncer der betales mest for vises øverst i lister og højere i søgeresultater. + </text> + <text name="price_text"> + Pris for annonce: + </text> + <text name="price_symbol"> + L$ + </text> + <button label="OK" name="set_price_btn"/> + <button label="Annullér" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_sound_devices.xml b/indra/newview/skins/default/xui/da/floater_sound_devices.xml new file mode 100644 index 0000000000..cb4cbba570 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_sound_devices.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_sound_devices" title="Lyd enheder"> + <text name="voice_label"> + Stemme chat + </text> + <check_box label="Aktiveret" name="enable_voice"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 8264e366c0..815bde456e 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -122,6 +122,18 @@ <text name="prim_count"> Prims: [COUNT] </text> + <text name="linked_set_count"> + Lænkede sæt: [COUNT] + </text> + <text name="linked_set_cost" tool_tip="Pris for nuværende valgte lænkede sæt som [prims] / [physics complexity]"> + Pris: [COST] / [PHYSICS] + </text> + <text name="object_count"> + Objekter: [COUNT] + </text> + <text name="object_cost" tool_tip="Pris for nuværende valgte objekter som [prims] / [physics complexity]"> + Pris: [COST] / [PHYSICS] + </text> <tab_container name="Object Info Tabs"> <panel label="Generelt" name="General"> <panel.string name="text deed continued"> @@ -266,15 +278,6 @@ <combo_box.item label="Ring" name="Ring"/> <combo_box.item label="Sculpted" name="Sculpted"/> </combo_box> - <combo_box name="material"> - <combo_box.item label="Sten" name="Stone"/> - <combo_box.item label="Metal" name="Metal"/> - <combo_box.item label="Glas" name="Glass"/> - <combo_box.item label="Træ" name="Wood"/> - <combo_box.item label="Kød" name="Flesh"/> - <combo_box.item label="Plastik" name="Plastic"/> - <combo_box.item label="Gummi" name="Rubber"/> - </combo_box> <text name="text cut"> Snit Z-akse (start/slut) </text> @@ -347,9 +350,19 @@ <combo_box.item label="Kuglering" name="Torus"/> <combo_box.item label="Plan" name="Plane"/> <combo_box.item label="Cylinder" name="Cylinder"/> + <combo_box.item label="Mesh" name="Mesh"/> </combo_box> </panel> <panel label="Features" name="Features"> + <panel.string name="None"> + Ingen + </panel.string> + <panel.string name="Prim"> + Prim + </panel.string> + <panel.string name="Convex Hull"> + Konveks skrog + </panel.string> <text name="select_single"> Vælg kun én prim for at ændre egenskaber. </text> @@ -374,6 +387,23 @@ <spinner label="Fokus" name="Light Focus"/> <spinner label="Udfasning" name="Light Falloff"/> <spinner label="Omgivelser" name="Light Ambiance"/> + <text name="label physicsshapetype"> + Fysisk form type: + </text> + <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Vælg fysisk form type"/> + <combo_box name="material"> + <combo_box.item label="Sten" name="Stone"/> + <combo_box.item label="Metal" name="Metal"/> + <combo_box.item label="Glas" name="Glass"/> + <combo_box.item label="Træ" name="Wood"/> + <combo_box.item label="Kød" name="Flesh"/> + <combo_box.item label="Plastik" name="Plastic"/> + <combo_box.item label="Gummi" name="Rubber"/> + </combo_box> + <spinner label="Tyngde" name="Physics Gravity"/> + <spinner label="Friktion" name="Physics Friction"/> + <spinner label="Tæthed" name="Physics Density"/> + <spinner label="Restitution" name="Physics Restitution"/> </panel> <panel label="Tekstur" name="Texture"> <panel.string name="string repeats per meter"> diff --git a/indra/newview/skins/default/xui/da/menu_inventory_add.xml b/indra/newview/skins/default/xui/da/menu_inventory_add.xml index 2f953ab9f7..eca03d3ee9 100644 --- a/indra/newview/skins/default/xui/da/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory_add.xml @@ -4,6 +4,8 @@ <menu_item_call label="Billede (L$[COST])..." name="Upload Image"/> <menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/> <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Model..." name="Upload Model"/> + <menu_item_call label="Model Wizard..." name="Upload Model Wizard"/> <menu_item_call label="Hent mange (L$[COST] pr. fil)..." name="Bulk Upload"/> <menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml new file mode 100644 index 0000000000..d9626692d5 --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_model_import_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="model_menu_gear_default"> + <menu_item_check label="Show edges" name="show_edges"/> + <menu_item_check label="Show physics" name="show_physics"/> + <menu_item_check label="Show textures" name="show_textures"/> + <menu_item_check label="Show skin weight" name="show_skin_weight"/> + <menu_item_check label="Show joint positions" name="show_joint_positions"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index 0c1892e58d..d352312d15 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -118,6 +118,8 @@ <menu_item_call label="Billede (L$[COST])..." name="Upload Image"/> <menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/> <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Model..." name="Upload Model"/> + <menu_item_call label="Model Wizard..." name="Upload Model Wizard"/> <menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/> </menu> <menu_item_call label="Fortyd" name="Undo"/> @@ -157,7 +159,7 @@ <menu_item_check label="Alpha" name="Alpha"/> <menu_item_check label="Træer" name="Tree"/> <menu_item_check label="Avatarer" name="Character"/> - <menu_item_check label="Overflade" name="SurfacePath"/> + <menu_item_check label="Surface Patch" name="Surface Patch"/> <menu_item_check label="Himmel" name="Sky"/> <menu_item_check label="Vand" name="Water"/> <menu_item_check label="Jord" name="Ground"/> @@ -215,6 +217,7 @@ <menu_item_check label="Konsol med tekstur kategorier" name="Texture Category"/> <menu_item_check label="Hurtig-timere" name="Fast Timers"/> <menu_item_check label="Hukommelse" name="Memory"/> + <menu_item_check label="Scene Statistics" name="Scene Statistics"/> <menu_item_call label="Vis Regionsinfo i debug-konsol" name="Region Info to Debug Console"/> <menu_item_check label="Kamera" name="Camera"/> <menu_item_check label="Vind" name="Wind"/> @@ -222,6 +225,7 @@ </menu> <menu label="Vis info" name="Display Info"> <menu_item_check label="Vis tid" name="Show Time"/> + <menu_item_check label="Show Upload Cost" name="Show Upload Cost"/> <menu_item_check label="Vis gengivelses information" name="Show Render Info"/> <menu_item_check label="Vis tekstur information" name="Show Texture Info"/> <menu_item_check label="Vis farve under cursor" name="Show Color Under Cursor"/> @@ -244,7 +248,12 @@ <menu_item_check label="Frame test" name="Frame Test"/> </menu> <menu label="Render Metadata" name="Render Metadata"> + <menu_item_check label="Normals" name="Normals"/> + <menu_item_check label="Physics Shapes" name="Physics Shapes"/> <menu_item_check label="Opdatér type" name="Update Type"/> + <menu_item_check label="LOD Info" name="LOD Info"/> + <menu_item_check label="Build Queue" name="Build Queue"/> + <menu_item_check label="Sculpt" name="Sculpt"/> </menu> <menu label="Gengivelse" name="Rendering"> <menu_item_check label="Akser" name="Axes"/> @@ -310,6 +319,7 @@ <menu_item_call label="Debug avatar teksturer" name="Debug Avatar Textures"/> </menu> <menu_item_check label="HTTP teksturer" name="HTTP Textures"/> + <menu_item_check label="HTTP Inventory" name="HTTP Inventory"/> <menu_item_check label="Benyt consol vindue ved næste opstart" name="Console Window"/> <menu_item_call label="Anmod om administrator status" name="Request Admin Options"/> <menu_item_call label="Forlad administrationsstatus" name="Leave Admin Options"/> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 52f0574476..4c0fbd280b 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -1071,6 +1071,12 @@ Det kan påvirke din indtastning af password. <notification name="RezItemNoPermissions"> Utilstrækkelige tilladelser til at danne genstanden. </notification> + <notification name="IMAcrossParentEstates"> + Ikke muligt at sende IM over forældre estates. + </notification> + <notification name="TransferInventoryAcrossParentEstates"> + Ikke muligt at overføre din beholdning over forældre parceller. + </notification> <notification name="UnableToLoadNotecard"> Ikke muligt at indlæse note. Prøv venligst igen. @@ -1641,6 +1647,10 @@ De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager. Din stemme er blevet slukket af moderatoren. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="UploadCostConfirmation"> + Dette upload vil koste L$[PRICE], ønsker du at sende? + <usetemplate name="okcancelbuttons" notext="Annullér" yestext="Send"/> + </notification> <notification name="ConfirmClearTeleportHistory"> Er du sikker på at du vil slette teleport historikken? <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> @@ -1652,6 +1662,9 @@ Knappen vil blive vist når der er nok plads til den. <notification name="ShareNotification"> Vælg beboere at dele med. </notification> + <notification name="MeshUploadError"> + [LABEL] kunne ikke sendes: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + </notification> <notification name="ShareItemsConfirmation"> Er du sikker på at du vil dele følgende genstande: @@ -1668,6 +1681,19 @@ Me følgende beboere: <notification name="DeedToGroupFail"> Dedikering til gruppe fejlede. </notification> + <notification name="ReleaseLandThrottled"> + Parcellen [PARCEL_NAME] kan ikke efterlades på nuværende tidspunkt. + </notification> + <notification name="ReleasedLandWithReclaim"> + [AREA] m² parcellen '[PARCEL_NAME]' er blevet frigivet. + +Du har [RECLAIM_PERIOD] timer til at få den tilbage for L$0 før den udbydes til salg til andre beboere. + </notification> + <notification name="ReleasedLandNoReclaim"> + [AREA] m² parcel '[PARCEL_NAME]' er blevet frigivet. + +Parcellen kan nu købes af enhver beboer. + </notification> <notification name="AvatarRezNotification"> ( [EXISTENCE] sekunder i live ) Avatar '[NAME]' var ikke sky mere, efter [TIME] sekunder. @@ -1809,6 +1835,10 @@ Klik hvorsomhelst i verden for at rotere din visning Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> </notification> + <notification label="" name="NoPlaceInfo"> + Det er kun muligt at vise profil for stedet i avanceret opsætning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> <notification label="" name="NoPicks"> Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet. <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> @@ -1829,6 +1859,18 @@ Klik hvorsomhelst i verden for at rotere din visning Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> </notification> + <notification label="" name="NoInventory"> + Det er kun muligt at vise beholdning i avanceret tilstand. Ønsker du at logge ud og logge på i avanceret tilstand. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoAppearance"> + Udseende opsætning er kun tilgængelig i avanceret tilstand. Ønsker du at logge ud og logge på i avanceret tilstand. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> + <notification label="" name="NoSearch"> + Søgning er kun mulig i avanceret tilstand. Ønsker du at logge ud og logge på i avanceret tilstand. + <usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/> + </notification> <global name="UnsupportedGLRequirements"> Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml index 1e024aa647..cc3dc480bc 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml @@ -22,6 +22,9 @@ <text name="text_box5"> Fejl </text> + <text name="text_box10"> + Direkte + </text> <text name="text_box7"> Ejer </text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml index d7b4ce3883..72200a07ad 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml @@ -28,8 +28,20 @@ </text> <check_box initial_value="sand" label="Gennemsigtig vand" name="TransparentWater"/> <check_box initial_value="true" label="Glatte flader og skin" name="BumpShiny"/> + <check_box initial_value="sand" label="Lokale lys" name="LocalLights"/> <check_box initial_value="true" label="Basale flader" name="BasicShaders" tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher."/> <check_box initial_value="true" label="Atmosfæriske flader" name="WindLightUseAtmosShaders"/> + <check_box initial_value="sand" label="Lys og skygger" name="UseLightShaders"/> + <check_box initial_value="sand" label=""Ambient Occlusion"" name="UseSSAO"/> + <check_box initial_value="sand" label="Skarphedsdybde" name="UseDoF"/> + <text name="shadows_label"> + Skygger: + </text> + <combo_box name="ShadowDetail"> + <combo_box.item label="Ingen" name="0"/> + <combo_box.item label="Sol/Måne" name="1"/> + <combo_box.item label="Sol/Måne + Projektorer" name="2"/> + </combo_box> <text name="reflection_label"> Reflektioner i vand: </text> diff --git a/indra/newview/skins/default/xui/da/panel_region_general.xml b/indra/newview/skins/default/xui/da/panel_region_general.xml index 5b5dd411ac..667c88c5b1 100644 --- a/indra/newview/skins/default/xui/da/panel_region_general.xml +++ b/indra/newview/skins/default/xui/da/panel_region_general.xml @@ -25,6 +25,7 @@ <check_box label="Tillad at sælge land" name="allow_land_resell_check"/> <check_box label="Tillad at samle/dele land" name="allow_parcel_changes_check"/> <check_box label="Blokér visning af land i Søgning" name="block_parcel_search_check" tool_tip="Lad beboere se denne region og dens parceller i søgeresultater"/> + <check_box label="Til "mesh" objekter" name="mesh_rez_enabled_check" tool_tip="Lad personer rezze mesh objekter i denne region"/> <spinner label="Max besøgende" name="agent_limit_spin"/> <spinner label="Objekt bonus" name="object_bonus_spin"/> <text label="Indhold" name="access_text"> diff --git a/indra/newview/skins/default/xui/da/panel_sound_devices.xml b/indra/newview/skins/default/xui/da/panel_sound_devices.xml new file mode 100644 index 0000000000..27b7666a1f --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_sound_devices.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel label="Opsætning for udstyr" name="device_settings_panel"> + <panel.string name="default_text"> + Standard + </panel.string> + <text name="Input"> + Input + </text> + <text name="My volume label"> + Min lydstyrke: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Ændre lydstyrke med denne skyder"/> + <text name="wait_text"> + Vent venligst + </text> + <text name="Output"> + Output + </text> +</panel> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 7fd8d8a106..68b861fe92 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -115,6 +115,140 @@ <string name="Quit"> Afslut </string> + <string name="LoginFailedViewerNotPermitted"> + Den klient du benytter kan ikke længere få adgang til Second Life. Besøg venligst denne side for at hente en ny klient: +http://secondlife.com/download + +For mere information, se denne FAQ: +http://secondlife.com/viewer-access-faq + </string> + <string name="LoginIntermediateOptionalUpdateAvailable"> + Valgfri klient opdatering tilgængelig: [VERSION] + </string> + <string name="LoginFailedRequiredUpdate"> + Påkrævet opdatering a klient: [VERSION] + </string> + <string name="LoginFailedAlreadyLoggedIn"> + Din avatar er allerede logget på. + </string> + <string name="LoginFailedAuthenticationFailed"> + Beklager! vi kunne ikke logge dig på. +Undersøg venligst at du har indtastet det rette +Please check to make sure you entered the right + * Brugernavn (like bobsmith12 or steller.sunshine) + * Password +Check også at Caps Lock ikke er aktiveret. + </string> + <string name="LoginFailedPasswordChanged"> + Som en sikkerhedsforanstaltning er dit password blevet ændret. +Går venligst til din konto-side på http://secondlife.com/password +og besvar sikkerhedsspørgsmål for at nulstille dit password. +Vi undskylder besværet. + </string> + <string name="LoginFailedPasswordReset"> + vi har lavet nogle ændringer i vores system og det er nødvendigt at nulstille dit password. +Går venligst til din konto-side på http://secondlife.com/password +og besvar sikkerhedsspørgsmål for at nulstille dit password. +Vi undskylder besværet. + </string> + <string name="LoginFailedEmployeesOnly"> + Second Life er midlertidig lukket ned for vedligeholdelse. +Kun medarbejdere kan logge på for øjeblikket. +Check www.secondlife.com/status for opdateringer. + </string> + <string name="LoginFailedPremiumOnly"> + Second Life har midlertidig begrænset muligheden for log-in for at sikre, at brugere på systemet ikke får dårlige svartider. + + Brugere med gratis-konti vil ikke kunne logge på Second Life på dette tidspunkt. + </string> + <string name="LoginFailedComputerProhibited"> + Second Life kan ikke tilgås fra dennecomputer. +Hvis du mener dette er en fejl, kontakt venligst support@secondlife.com. + </string> + <string name="LoginFailedAcountSuspended"> + Din konto vil ikke være tilgængelig før +[TIME] Pacific Time. + </string> + <string name="LoginFailedAccountDisabled"> + Vi kan desværre ikke behandle forespøgsel lige nu. +Kontakt venligst Second Life supper for assitance via http://secondlife.com/support. +Hvis du ikke kan ændre dit password ring venligst +1 (866) 476-9763. + </string> + <string name="LoginFailedTransformError"> + Data inkonsistens registret ved login. +Kontakt venligst support@secondlife.com. + </string> + <string name="LoginFailedAccountMaintenance"> + Der foretages vedligehold på din konto lige nu. +Din konto vil ikke være tilgængelig før +[TIME] Pacific Time. +Hvis du mener dette er en fejl, kontakt venligst support@secondlife.com. + </string> + <string name="LoginFailedPendingLogoutFault"> + Forespøgsel på logout blev besvaret med en fejl fra simulatoren. + </string> + <string name="LoginFailedPendingLogout"> + Systemet er i gang med at logge dig ud netop nu. +Din konto vil ikke være tilgængelig før +[TIME] Pacific Time. + </string> + <string name="LoginFailedUnableToCreateSession"> + Ikke muligt at oprette gyldig session. + </string> + <string name="LoginFailedUnableToConnectToSimulator"> + Ikke muligt at koble til en simulator. + </string> + <string name="LoginFailedRestrictedHours"> + Din konto kan kun tilgå Second Life +mellem [START] [END] Pacific Time. +Kom venligst tilbage i dette tidsrum. + +Hvis du mener dette er en fejl, kontakt venligst support@secondlife.com. + </string> + <string name="LoginFailedIncorrectParameters"> + Ugyldig parametre. +Hvis du mener dette er en fejl, kontakt venligst support@secondlife.com. + </string> + <string name="LoginFailedFirstNameNotAlphanumeric"> + Fornavn parameter skal være alfanumerisk +Hvis du mener dette er en fejl, kontakt venligst support@secondlife.com. + </string> + <string name="LoginFailedLastNameNotAlphanumeric"> + Efternavn parameter skal være alfanumerisk +Hvis du mener dette er en fejl, kontakt venligst support@secondlife.com. + </string> + <string name="LogoutFailedRegionGoingOffline"> + Regionen er lukket ned. +Prøv at logge på om lidt igen. + </string> + <string name="LogoutFailedAgentNotInRegion"> + Avatar ikke i en region. +Prøv venligst om lidt igen. + </string> + <string name="LogoutFailedPendingLogin"> + The region was logging in another session. +Please try logging in again in a minute. + </string> + <string name="LogoutFailedLoggingOut"> + Region har lukket sidste session ned. +Prøv venligst om lidt igen. + </string> + <string name="LogoutFailedStillLoggingOut"> + Regionen er stadig ved at lukke forrige session ud. +Prøv venligst om lidt igen. + </string> + <string name="LogoutSucceeded"> + Region har lukket sidste session ned. +Prøv venligst om lidt igen. + </string> + <string name="LogoutFailedLogoutBegun"> + Region er i gang med at logge ud. +Prøv venligst om lidt igen. + </string> + <string name="LoginFailedLoggingOutSession"> + Region er i gang med at lukket sidste session ned. +Prøv venligst om lidt igen. + </string> <string name="AgentLostConnection"> Denne region kan have problemer. Tjek venligst din forbindelse til internettet. </string> @@ -423,6 +557,9 @@ <string name="symbolic folder link"> link til mappe </string> + <string name="mesh"> + mesh + </string> <string name="AvatarAway"> Væk </string> @@ -1150,6 +1287,9 @@ <string name="InvFolder Accessories"> Tilbehør </string> + <string name="InvFolder Meshes"> + Meshes + </string> <string name="InvFolder Friends"> Venner </string> @@ -3657,6 +3797,9 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> Initialisering af session er "timed out" </string> + <string name="Home position set."> + Hjemmeposition sat. + </string> <string name="voice_morphing_url"> http://secondlife.com/landing/voicemorphing </string> diff --git a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml index 1953fad31f..14250453eb 100644 --- a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml @@ -5,7 +5,7 @@ <button label="Opkald" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> - <button label="Forlad opkald" name="end_call_btn"/> + <button label="Forlad samtale" name="end_call_btn"/> </layout_panel> <layout_panel name="voice_ctrls_btn_panel"> <button label="Stemmekontroller" name="voice_ctrls_btn"/> diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml index d5d8c3cf7f..bd20ece764 100644 --- a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml @@ -4,26 +4,32 @@ <string name="SpeakBtnToolTip" value="Slå mikrofon til/fra"/> <string name="VoiceControlBtnToolTip" value="Vis/skjul stemme kontrolpanel"/> <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <button label="Tal" name="speak_btn" tool_tip="Tænd og sluk for mikrofon"/> + </layout_panel> + <layout_panel name="speak_flyout_panel"> + <button label="" name="flyout_btn" tool_tip="Ændring af opsætning for lyd"/> + </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Skjuler/viser bevægelser"/> + <gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Lad din avatar gøre ting"/> </layout_panel> <layout_panel name="cam_panel"> - <bottomtray_button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/> + <bottomtray_button label="Vis" name="camera_btn" tool_tip="Kontrollér kameravinkel"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Destinationer" name="destination_btn" tool_tip="Vis person vindue"/> + <layout_panel name="destinations_panel"> + <bottomtray_button label="Destinationer" name="destination_btn" tool_tip="Rejs i Second Life"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Min avatar" name="avatar_btn"/> + <layout_panel name="avatar_panel"> + <bottomtray_button label="Min avatar" name="avatar_btn" tool_tip="Ændre dit udseende"/> </layout_panel> <layout_panel name="people_panel"> - <bottomtray_button label="Personer" name="show_people_button" tool_tip="Vis person-vindue"/> + <bottomtray_button label="Personer" name="show_people_button" tool_tip="Find personer i Second Life"/> </layout_panel> <layout_panel name="profile_panel"> - <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Vis profil vindue"/> + <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Se og rediger din profil"/> </layout_panel> <layout_panel name="howto_panel"> - <bottomtray_button label="Hvordan" name="show_help_btn" tool_tip="Åben Second Life "How To topics""/> + <bottomtray_button label="Hvordan" name="show_help_btn" tool_tip="Vis hjælpeinformation for Second Life"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml index 5cecb93d40..b8a7ec0b34 100644 --- a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml @@ -20,7 +20,7 @@ <button label="Opkald" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> - <button label="Afslut kald" name="end_call_btn"/> + <button label="Afslut samtale" name="end_call_btn"/> </layout_panel> <layout_panel name="voice_ctrls_btn_panel"> <button label="Stemme kontroller" name="voice_ctrls_btn"/> diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml index a540025343..49cd2c71f2 100644 --- a/indra/newview/skins/minimal/xui/da/panel_people.xml +++ b/indra/newview/skins/minimal/xui/da/panel_people.xml @@ -70,7 +70,7 @@ Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor. <button label="IM" name="im_btn" tool_tip="Åben session med privat besked (IM)"/> </layout_panel> <layout_panel name="chat_btn_lp"> - <button label="Kald" name="call_btn" tool_tip="Opkald til denne beboer"/> + <button label="Opkald" name="call_btn" tool_tip="Kald til denne beboer"/> </layout_panel> <layout_panel name="chat_btn_lp"> <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/> -- cgit v1.2.3 From 1fbb85a7cbd56b326fb2e7035002b5a5a9de2020 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Tue, 14 Jun 2011 18:21:21 -0500 Subject: SH-680 Adjust streaming cost scaler to agree with simulator. --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e323287084..ee823cc340 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9143,7 +9143,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>3.0</real> + <real>2.0</real> </map> <key>MeshThreadCount</key> <map> -- cgit v1.2.3 From 5506dca9b9378168ea044d43b3a5c831b5fc35f7 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine <vsavchuk@productengine.com> Date: Wed, 15 Jun 2011 18:39:10 +0300 Subject: STORM-1339 FIXED Making a preventive fix for a crash in LLPanelPlaces::onTeleportButtonClicked(). --- indra/newview/llpanellandmarks.cpp | 2 +- indra/newview/llpanelplaces.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 80f6862169..c2729fa19b 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -299,7 +299,7 @@ void LLLandmarksPanel::onTeleport() } LLFolderViewEventListener* listenerp = current_item->getListener(); - if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) + if (listenerp && listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) { listenerp->openItem(); } diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 46262832dc..1e510a2d7b 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -584,6 +584,13 @@ void LLPanelPlaces::onTeleportButtonClicked() { if (mPlaceInfoType == LANDMARK_INFO_TYPE) { + if (mItem.isNull()) + { + llwarns << "NULL landmark item" << llendl; + llassert(mItem.notNull()); + return; + } + LLSD payload; payload["asset_id"] = mItem->getAssetUUID(); LLSD args; -- cgit v1.2.3 From 1b3f3fa7a66733c733a10963a2cf22477c3190e9 Mon Sep 17 00:00:00 2001 From: prep linden <prep@lindenlab.com> Date: Wed, 15 Jun 2011 13:26:14 -0400 Subject: Fix for sh-1771 and also fixed a bug with a never ending load (with eventual crash) bug when a visual scene is missing. --- indra/newview/llfloatermodelpreview.cpp | 24 +++++++++++++++++++----- indra/newview/llfloatermodelpreview.h | 2 +- 2 files changed, 20 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 866cc39eec..4e35029ce6 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1901,11 +1901,19 @@ bool LLModelLoader::doLoadModel() { llwarns << "document has no visual_scene" << llendl; setLoadState( ERROR_PARSING ); - return false; + return true; } + setLoadState( DONE ); - processElement(scene); + bool badElement = false; + + processElement( scene, badElement ); + + if ( badElement ) + { + setLoadState( ERROR_PARSING ); + } return true; } @@ -2489,7 +2497,7 @@ daeElement* LLModelLoader::getChildFromElement( daeElement* pElement, std::strin return NULL; } -void LLModelLoader::processElement(daeElement* element) +void LLModelLoader::processElement( daeElement* element, bool& badElement ) { LLMatrix4 saved_transform = mTransform; @@ -2589,6 +2597,12 @@ void LLModelLoader::processElement(daeElement* element) } } } + else + { + llinfos<<"Unable to resolve geometry URL."<<llendl; + badElement = true; + } + } domInstance_node* instance_node = daeSafeCast<domInstance_node>(element); @@ -2597,7 +2611,7 @@ void LLModelLoader::processElement(daeElement* element) daeElement* instance = instance_node->getUrl().getElement(); if (instance) { - processElement(instance); + processElement(instance,badElement); } } @@ -2605,7 +2619,7 @@ void LLModelLoader::processElement(daeElement* element) daeTArray< daeSmartRef<daeElement> > children = element->getChildren(); for (S32 i = 0; i < children.getCount(); i++) { - processElement(children[i]); + processElement(children[i],badElement); } domNode* node = daeSafeCast<domNode>(element); diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index a328bfb4dd..8e7189e8c6 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -108,7 +108,7 @@ public: void loadModelCallback(); void loadTextures() ; //called in the main thread. - void processElement(daeElement* element); + void processElement(daeElement* element, bool& badElement); std::vector<LLImportMaterial> getMaterials(LLModel* model, domInstance_geometry* instance_geo); LLImportMaterial profileToMaterial(domProfile_COMMON* material); std::string getElementLabel(daeElement *element); -- cgit v1.2.3 From cd51c7e01a0b5eb51fec514cb5a10540c49c2aef Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Wed, 15 Jun 2011 11:29:55 -0700 Subject: FIX INTL-50 DE translation for Set24 and Basic Set3 --- .../newview/skins/default/xui/de/floater_about.xml | 26 ++- .../skins/default/xui/de/floater_buy_contents.xml | 2 +- .../default/xui/de/floater_import_collada.xml | 23 ++ .../xui/de/floater_inventory_view_finder.xml | 1 + .../skins/default/xui/de/floater_model_preview.xml | 231 ++++++++++++++++++++ .../skins/default/xui/de/floater_model_wizard.xml | 241 +++++++++++++++++++++ .../default/xui/de/floater_price_for_listing.xml | 18 ++ .../skins/default/xui/de/floater_sound_devices.xml | 7 + .../newview/skins/default/xui/de/floater_tools.xml | 48 +++- .../skins/default/xui/de/menu_inventory_add.xml | 2 + .../xui/de/menu_model_import_gear_default.xml | 8 + indra/newview/skins/default/xui/de/menu_viewer.xml | 13 +- .../newview/skins/default/xui/de/notifications.xml | 45 +++- .../default/xui/de/panel_preferences_colors.xml | 3 + .../default/xui/de/panel_preferences_graphics1.xml | 12 + .../skins/default/xui/de/panel_region_general.xml | 1 + .../skins/default/xui/de/panel_sound_devices.xml | 19 ++ indra/newview/skins/default/xui/de/strings.xml | 142 ++++++++++++ .../minimal/xui/de/menu_inspect_avatar_gear.xml | 1 + .../minimal/xui/de/panel_adhoc_control_panel.xml | 11 + .../skins/minimal/xui/de/panel_bottomtray.xml | 24 +- .../minimal/xui/de/panel_im_control_panel.xml | 2 +- .../newview/skins/minimal/xui/de/panel_people.xml | 3 + 23 files changed, 848 insertions(+), 35 deletions(-) create mode 100644 indra/newview/skins/default/xui/de/floater_import_collada.xml create mode 100644 indra/newview/skins/default/xui/de/floater_model_preview.xml create mode 100644 indra/newview/skins/default/xui/de/floater_model_wizard.xml create mode 100644 indra/newview/skins/default/xui/de/floater_price_for_listing.xml create mode 100644 indra/newview/skins/default/xui/de/floater_sound_devices.xml create mode 100644 indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml create mode 100644 indra/newview/skins/default/xui/de/panel_sound_devices.xml create mode 100644 indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index d15ab105c2..578dcd50e5 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -55,27 +55,33 @@ Wir bedanken uns bei folgenden Einwohnern, die uns geholfen haben, dies zur bish </panel> <panel label="Lizenzen" name="licenses_panel"> <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion -APR Copyright (C) 2000-2004 The Apache Software Foundation -cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) + 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion. +APR Copyright (C) 2000-2004 The Apache Software Foundation. +Collada DOM Copyright 2005 Sony Computer Entertainment Inc. +cURL Copyright (C) 1996-2002, Daniel Stenberg (daniel@haxx.se). +DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). GL Copyright (C) 1999-2004 Brian Paul. +GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University sowie David Luebke, Brenden Schubert, University of Virginia. +google-perftools Copyright (c) 2005, Google Inc. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. -jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) +jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW). jpeglib Copyright (C) 1991-1998, Thomas G. Lane. -ogg/vorbis Copyright (C) 2001, Xiphophorus +ogg/vorbis Copyright (C) 2001, Xiphophorus. OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. -SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga -SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) +PCRE Copyright (c) 1997-2008 University of Cambridge. +SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga. +SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com). xmlrpc-epi Copyright (C) 2000 Epinions, Inc. zlib Copyright (C) 1995-2002 Jean-loup Gailly und Mark Adler. google-perftools Copyright (c) 2005, Google Inc. -Alle Rechte vorbehalten. Details siehe licenses.txt. +Second Life Viewer verwendet Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (und Lizenzgeber). Alle Rechte vorbehalten. Details siehe www.havok.com. + +Alle Rechte vorbehalten. Details siehe licenses.txt. -Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) -(ITU-T Empf.G.722.1 Anhang C) +Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) </text_editor> </panel> </tab_container> diff --git a/indra/newview/skins/default/xui/de/floater_buy_contents.xml b/indra/newview/skins/default/xui/de/floater_buy_contents.xml index ccafa11cf4..bd6ace6bda 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_contents.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater min_width="300" name="floater_buy_contents" title="INHALT KAUFEN"> <text name="contains_text"> - [NAME] enthält: + <nolink>[NAME]</nolink> enthält: </text> <text name="buy_text"> [AMOUNT] L$ von [NAME] kaufen? diff --git a/indra/newview/skins/default/xui/de/floater_import_collada.xml b/indra/newview/skins/default/xui/de/floater_import_collada.xml new file mode 100644 index 0000000000..8b1313c7b5 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_import_collada.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Import Collada" title="Szene importieren"> + <text name="mesh count"> + Netze: [COUNT] + </text> + <text name="texture count"> + Texturen: [COUNT] + </text> + <text name="status"> + Status: [STATUS] + </text> + <button label="Abbrechen" name="cancel"/> + <button label="OK" name="ok"/> + <string name="status_idle"> + Inaktiv + </string> + <string name="status_uploading"> + [NAME] wird hochgeladen + </string> + <string name="status_creating"> + Objektname [NAME] wird erstellt + </string> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml index 9cc5b92daf..d63426d684 100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml @@ -5,6 +5,7 @@ <check_box label="Kleidung" name="check_clothing"/> <check_box label="Gesten" name="check_gesture"/> <check_box label="Landmarken" name="check_landmark"/> + <check_box label="Netze" name="check_mesh"/> <check_box label="Notizkarten" name="check_notecard"/> <check_box label="Objekte" name="check_object"/> <check_box label="Skripts" name="check_script"/> diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml new file mode 100644 index 0000000000..83c51132ee --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml @@ -0,0 +1,231 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Preview" title="Modell hochladen"> + <string name="status_idle"> + Inaktiv + </string> + <string name="status_reading_file"> + Laden... + </string> + <string name="status_generating_meshes"> + Netze werden generiert... + </string> + <string name="status_vertex_number_overflow"> + Fehler: Anzahl von Vertices überschreitet 65534. Operation abgebrochen. + </string> + <string name="high"> + Hoch + </string> + <string name="medium"> + Mittel + </string> + <string name="low"> + Niedrig + </string> + <string name="lowest"> + Niedrigste + </string> + <string name="mesh_status_good"> + Ausliefern + </string> + <string name="mesh_status_na"> + -- + </string> + <string name="mesh_status_none"> + Keine + </string> + <string name="mesh_status_submesh_mismatch"> + Detailstufen haben unterschiedliche Anzahl texturfähiger Flächen. + </string> + <string name="mesh_status_mesh_mismatch"> + Detailstufen haben unterschiedliche Anzahl von Netzinstanzen. + </string> + <string name="mesh_status_too_many_vertices"> + Detailstufe hat zu viele Vertices. + </string> + <string name="mesh_status_missing_lod"> + Erforderliche Detailstufe fehlt. + </string> + <string name="layer_all"> + Alle + </string> + <string name="decomposing"> + Analyse läuft... + </string> + <string name="simplifying"> + Vereinfachung läuft... + </string> + <text name="name_label"> + Name: + </text> + <text name="lod_label"> + Vorschau: + </text> + <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> + <combo_item name="high"> + Detailstufe: Hoch + </combo_item> + <combo_item name="medium"> + Detailstufe: Mittel + </combo_item> + <combo_item name="low"> + Detailstufe: Niedrig + </combo_item> + <combo_item name="lowest"> + Detailstufe: Niedrigste + </combo_item> + </combo_box> + <panel> + <text name="streaming cost"> + Ressourcenkosten: [COST] + </text> + <text name="physics cost"> + Physikkosten: [COST] + </text> + <text name="upload fee"> + Gebühr für Hochladen: -- + </text> + </panel> + <text name="status"> + [STATUS] + </text> + <button label="Standardwerte" name="reset_btn" tool_tip="Standardwerte wiederherstellen"/> + <button label="Hochladen" name="ok_btn" tool_tip="An Simulator hochladen"/> + <button label="Abbrechen" name="cancel_btn"/> + <tab_container name="import_tab"> + <panel label="Detailstufe" name="lod_panel"> + <text name="lod_table_header"> + Detailstufe auswählen + </text> + <text name="high_label" value="Hoch"/> + <text name="high_triangles" value="0"/> + <text name="high_vertices" value="0"/> + <text name="medium_label" value="Mittel"/> + <text name="medium_triangles" value="0"/> + <text name="medium_vertices" value="0"/> + <text name="low_label" value="Niedrig"/> + <text name="low_triangles" value="0"/> + <text name="low_vertices" value="0"/> + <text name="lowest_label" value="Niedrigste"/> + <text name="lowest_triangles" value="0"/> + <text name="lowest_vertices" value="0"/> + <text name="lod_table_footer"> + Detailstufe: [DETAIL] + </text> + <radio_group name="lod_file_or_limit" value="lod_from_file"> + <radio_item label="Aus Datei laden" name="lod_from_file"/> + <radio_item label="Automatisch generieren" name="lod_auto_generate"/> + <radio_item label="Keine" name="lod_none"/> + </radio_group> + <button label="Durchsuchen..." name="lod_browse"/> + <combo_box name="lod_mode"> + <combo_item name="triangle_limit"> + Dreiecklimit + </combo_item> + <combo_item name="error_threshold"> + Fehlerschwelle + </combo_item> + </combo_box> + <text name="build_operator_text"> + Konstruktionsoperator: + </text> + <text name="queue_mode_text"> + Warteschlangenmodus: + </text> + <combo_box name="build_operator"> + <combo_item name="edge_collapse"> + Kantenkollaps + </combo_item> + <combo_item name="half_edge_collapse"> + Halbkantenkollaps + </combo_item> + </combo_box> + <combo_box name="queue_mode"> + <combo_item name="greedy"> + Strikt + </combo_item> + <combo_item name="lazy"> + Locker + </combo_item> + <combo_item name="independent"> + Unabhängig + </combo_item> + </combo_box> + <text name="border_mode_text"> + Grenzenmodus: + </text> + <text name="share_tolderance_text"> + Sharetoleranz: + </text> + <combo_box name="border_mode"> + <combo_item name="border_unlock"> + Freigeben + </combo_item> + <combo_item name="border_lock"> + Sperren + </combo_item> + </combo_box> + <text name="crease_label"> + Knitterwinkel: + </text> + <spinner name="crease_angle" value="75"/> + </panel> + <panel label="Physik" name="physics_panel"> + <panel name="physics geometry"> + <radio_group name="physics_load_radio" value="physics_load_from_file"> + <radio_item label="Datei:" name="physics_load_from_file"/> + <radio_item label="Detailstufe verwenden:" name="physics_use_lod"/> + </radio_group> + <combo_box name="physics_lod_combo" tool_tip="Detailstufe für physische Form"> + <combo_item name="physics_lowest"> + Niedrigste + </combo_item> + <combo_item name="physics_low"> + Niedrig + </combo_item> + <combo_item name="physics_medium"> + Mittel + </combo_item> + <combo_item name="physics_high"> + Hoch + </combo_item> + </combo_box> + <button label="Durchsuchen..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <slider label="Glätten:" name="Smooth"/> + <check_box label="Löcher schließen (langsam)" name="Close Holes (Slow)"/> + <button label="Analysieren" name="Decompose"/> + <button label="Abbrechen" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <slider label="Durchläufe:" name="Combine Quality"/> + <slider label="Detailskala:" name="Detail Scale"/> + <slider label="Beibehalten:" name="Retain%"/> + <button label="Vereinfachen" name="Simplify"/> + <button label="Abbrechen" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <slider label="Vorschaudehnung:" name="physics_explode"/> + <text name="physics_triangles"> + Dreiecke: [TRIANGLES] + </text> + <text name="physics_points"> + Vertices: [POINTS] + </text> + <text name="physics_hulls"> + Hüllen: [HULLS] + </text> + </panel> + </panel> + <panel label="Modifizierer" name="modifiers_panel"> + <spinner name="import_scale" value="1,0"/> + <text name="import_dimensions"> + [X] x [Y] x [Z] m + </text> + <check_box label="Texturen" name="upload_textures"/> + <check_box label="Skingewicht" name="upload_skin"/> + <check_box label="Gelenkpositionen" name="upload_joints"/> + <spinner name="pelvis_offset" value="0,0"/> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_model_wizard.xml b/indra/newview/skins/default/xui/de/floater_model_wizard.xml new file mode 100644 index 0000000000..2c7b45906e --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_model_wizard.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Model Wizard" title="ASSISTENT ZUM HOCHLADEN VON MODELLEN"> + <button label="5. Hochladen" name="upload_btn"/> + <button label="4. Überprüfen" name="review_btn"/> + <button label="3. Physik" name="physics2_btn"/> + <button label="3. Physik" name="physics_btn"/> + <button label="2. Optimieren" name="optimize_btn"/> + <button label="1. Datei auswählen" name="choose_file_btn"/> + <panel name="choose_file_panel"> + <panel name="header_panel"> + <text name="header_text"> + Modell hochladen + </text> + </panel> + <text name="description"> + Mit diesem Assistenten können Sie Netzmodelle in Second Life hochladen. Geben Sie zuerst die Datei mit dem zu importierenden Modell an. Second Life unterstützt COLLADA-Dateien (.dae). + </text> + <panel name="content"> + <text name="Cache location"> + Dateiname: + </text> + <button label="Durchsuchen..." label_selected="Durchsuchen..." name="browse"/> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="optimize_panel"> + <panel name="header_panel"> + <text name="header_text"> + Optimieren + </text> + </panel> + <text name="description"> + Dieser Assistent hat Ihr Modell optimiert, um die Leistung zu erhöhen. Sie können die Optimierungsergebnisse unten ändern oder zum Fortfahren auf „Weiter“ klicken. + </text> + <panel name="content"> + <text name="high_detail_text"> + Detailstufe generieren: Hoch + </text> + <text name="medium_detail_text"> + Detailstufe generieren: Mittel + </text> + <text name="low_detail_text"> + Detailstufe generieren: Niedrig + </text> + <text name="lowest_detail_text"> + Detailstufe generieren: Niedrigste + </text> + </panel> + <panel name="content2"> + <text name="lod_label"> + Modellvorschau: + </text> + <combo_box name="preview_lod_combo2" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> + <combo_item name="high"> + Hoch + </combo_item> + <combo_item name="medium"> + Mittel + </combo_item> + <combo_item name="low"> + Niedrig + </combo_item> + <combo_item name="lowest"> + Niedrigste + </combo_item> + </combo_box> + <text name="streaming cost"> + Ressourcenkosten: [COST] + </text> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + </panel> + <panel name="physics_panel"> + <panel name="header_panel"> + <text name="header_text"> + Physik + </text> + </panel> + <text name="description"> + Der Assistent erstellt eine physische Form, die die Interaktionen des Objekts mit anderen Objekten und Avataren bestimmt. Setzen Sie den Schieber auf die Detailstufe, die für Ihr Objekt am besten geeignet ist: + </text> + <panel name="content"> + <text name="streaming cost"> + Ressourcenkosten: [COST] + </text> + </panel> + </panel> + <panel name="physics2_panel"> + <panel name="header_panel"> + <text name="header_text"> + Physik + </text> + </panel> + <text name="description"> + Überprüfen Sie die physische Form unten und klicken Sie dann auf „Weiter“. Um die physische Form zu ändern, klicken Sie auf „Zurück“. + </text> + <panel name="content"> + <text name="lod_label"> + Modellvorschau: + </text> + <combo_box name="preview_lod_combo3" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> + <combo_item name="high"> + Hoch + </combo_item> + <combo_item name="medium"> + Mittel + </combo_item> + <combo_item name="low"> + Niedrig + </combo_item> + <combo_item name="lowest"> + Niedrigste + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + <text name="streaming cost"> + Ressourcenkosten: [COST] + </text> + </panel> + </panel> + <panel name="review_panel"> + <panel name="header_panel"> + <text name="header_text"> + Überprüfen + </text> + </panel> + <text name="description"> + Überprüfen Sie die Details unten und klicken Sie dann auf „Hochladen“, um das Modell hochzuladen. Die Kosten werden von Ihrem L$-Kontostand abgezogen. + </text> + <panel name="content"> + <text name="lod_label"> + Modellvorschau: + </text> + <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> + <combo_item name="high"> + Hoch + </combo_item> + <combo_item name="medium"> + Mittel + </combo_item> + <combo_item name="low"> + Niedrig + </combo_item> + <combo_item name="lowest"> + Niedrigste + </combo_item> + </combo_box> + <text name="dimensions"> + X: Y: Z: + </text> + <text name="dimension_dividers"> + | | + </text> + </panel> + <text name="streaming cost"> + Ressourcenkosten: [COST] + </text> + <text name="physics cost"> + Physikkosten: [COST] + </text> + </panel> + <panel name="upload_panel"> + <panel name="header_panel"> + <text name="header_text"> + Upload abgeschlossen + </text> + </panel> + <text name="description"> + Herzlichen Glückwunsch! Ihr Modell wurde erfolgreich hochgeladen. Sie finden das Modell im Objektordner Ihres Inventars. + </text> + </panel> + <button label="<< Zurück" name="back"/> + <button label="Weiter >>" name="next"/> + <button label="Hochladen" name="upload" tool_tip="An Simulator hochladen"/> + <button label="Abbrechen" name="cancel"/> + <button label="Schließen" name="close"/> + <spinner name="import_scale" value="1,0"/> + <string name="status_idle"> + Inaktiv + </string> + <string name="status_reading_file"> + Laden... + </string> + <string name="status_generating_meshes"> + Netze werden generiert... + </string> + <string name="status_vertex_number_overflow"> + Fehler: Anzahl von Vertices überschreitet 65534. Operation abgebrochen. + </string> + <string name="high"> + Hoch + </string> + <string name="medium"> + Mittel + </string> + <string name="low"> + Niedrig + </string> + <string name="lowest"> + Niedrigste + </string> + <string name="mesh_status_good"> + Ausliefern + </string> + <string name="mesh_status_na"> + -- + </string> + <string name="mesh_status_none"> + Keine + </string> + <string name="mesh_status_submesh_mismatch"> + Detailstufen haben unterschiedliche Anzahl texturfähiger Flächen. + </string> + <string name="mesh_status_mesh_mismatch"> + Detailstufen haben unterschiedliche Anzahl von Netzinstanzen. + </string> + <string name="mesh_status_too_many_vertices"> + Detailstufe hat zu viele Vertices. + </string> + <string name="mesh_status_missing_lod"> + Erforderliche Detailstufe fehlt. + </string> + <string name="layer_all"> + Alle + </string> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_price_for_listing.xml b/indra/newview/skins/default/xui/de/floater_price_for_listing.xml new file mode 100644 index 0000000000..bdd772a9c2 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_price_for_listing.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="price_for_listing" title="ANZEIGE VERÖFFENTLICHEN"> + <text name="explanation_text"> + Ihre Anzeige wird für eine Woche veröffentlicht. + +Die Position Ihrer Anzeige hängt davon ab, wie viel Sie dafür bezahlen möchten. + +Die Anzeigen, für die am meisten bezahlt wird, werden am Anfang der Liste angezeigt und erscheinen in Suchergebnissen weiter oben. + </text> + <text name="price_text"> + Anzeigenpreis: + </text> + <text name="price_symbol"> + L$ + </text> + <button label="OK" name="set_price_btn"/> + <button label="Abbrechen" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml new file mode 100644 index 0000000000..7575ad9e2a --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_sound_devices.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_sound_devices" title="Audiogeräte"> + <text name="voice_label"> + Voice-Chat + </text> + <check_box label="Aktiviert" name="enable_voice"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index d95d674df2..258e67a138 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -125,6 +125,18 @@ <text name="prim_count"> Primitive: [COUNT] </text> + <text name="linked_set_count"> + Verknüpfte Sätze: [COUNT] + </text> + <text name="linked_set_cost" tool_tip="Kosten der gegenwärtig ausgewählten verknüpften Sätze als [Prims],[Komplexität der Physik]"> + Kosten: [COST] / [PHYSICS] + </text> + <text name="object_count"> + Objekte: [COUNT] + </text> + <text name="object_cost" tool_tip="Kosten der gegenwärtig ausgewählten Objekte als [Prims] / [Komplexität der Physik]"> + Kosten: [COST] / [PHYSICS] + </text> <tab_container name="Object Info Tabs"> <panel label="Allgemein" name="General"> <panel.string name="text deed continued"> @@ -269,15 +281,6 @@ <combo_box.item label="Ring" name="Ring"/> <combo_box.item label="Geformt" name="Sculpted"/> </combo_box> - <combo_box name="material"> - <combo_box.item label="Stein" name="Stone"/> - <combo_box.item label="Metall" name="Metal"/> - <combo_box.item label="Glas" name="Glass"/> - <combo_box.item label="Holz" name="Wood"/> - <combo_box.item label="Fleisch" name="Flesh"/> - <combo_box.item label="Kunststoff" name="Plastic"/> - <combo_box.item label="Gummi" name="Rubber"/> - </combo_box> <text name="text cut"> Pfadschnitt (Anfang/Ende) </text> @@ -353,9 +356,19 @@ <combo_box.item label="Torus" name="Torus"/> <combo_box.item label="Fläche" name="Plane"/> <combo_box.item label="Zylinder" name="Cylinder"/> + <combo_box.item label="Netz" name="Mesh"/> </combo_box> </panel> <panel label="Eigenschaften" name="Features"> + <panel.string name="None"> + Keine + </panel.string> + <panel.string name="Prim"> + Prim + </panel.string> + <panel.string name="Convex Hull"> + Konvexe Hülle + </panel.string> <text name="select_single"> Wählen Sie nur einen einzelnen Baustein aus, um Eigenschaften zu bearbeiten. </text> @@ -380,6 +393,23 @@ <spinner label="Fokus" name="Light Focus"/> <spinner label="Abnehmend" name="Light Falloff"/> <spinner label="Ambiente" name="Light Ambiance"/> + <text name="label physicsshapetype"> + Art der physischen Form: + </text> + <combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Art der physischen Form auswählen"/> + <combo_box name="material"> + <combo_box.item label="Stein" name="Stone"/> + <combo_box.item label="Metall" name="Metal"/> + <combo_box.item label="Glas" name="Glass"/> + <combo_box.item label="Holz" name="Wood"/> + <combo_box.item label="Fleisch" name="Flesh"/> + <combo_box.item label="Plastik" name="Plastic"/> + <combo_box.item label="Gummi" name="Rubber"/> + </combo_box> + <spinner label="Schwerkraft" name="Physics Gravity"/> + <spinner label="Reibung" name="Physics Friction"/> + <spinner label="Dichte" name="Physics Density"/> + <spinner label="Restitution" name="Physics Restitution"/> </panel> <panel label="Textur" name="Texture"> <panel.string name="string repeats per meter"> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml index 165e9a9264..af70c08ba1 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_add.xml @@ -4,6 +4,8 @@ <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modell..." name="Upload Model"/> + <menu_item_call label="Modellassistent..." name="Upload Model Wizard"/> <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> <menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml b/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml new file mode 100644 index 0000000000..e1faeedcde --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_model_import_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="model_menu_gear_default"> + <menu_item_check label="Kanten anzeigen" name="show_edges"/> + <menu_item_check label="Physik anzeigen" name="show_physics"/> + <menu_item_check label="Texturen anzeigen" name="show_textures"/> + <menu_item_check label="Skingewicht anzeigen" name="show_skin_weight"/> + <menu_item_check label="Gelenkpositionen anzeigen" name="show_joint_positions"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 9d5a69105d..05f9f94c8a 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -120,6 +120,8 @@ <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Modell..." name="Upload Model"/> + <menu_item_call label="Modellassistent..." name="Upload Model Wizard"/> <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> </menu> <menu_item_call label="Rückgängig" name="Undo"/> @@ -159,7 +161,7 @@ <menu_item_check label="Alpha" name="Alpha"/> <menu_item_check label="Baum" name="Tree"/> <menu_item_check label="Avatare" name="Character"/> - <menu_item_check label="SurfacePath" name="SurfacePath"/> + <menu_item_check label="Flächenpatch" name="Surface Patch"/> <menu_item_check label="Himmel" name="Sky"/> <menu_item_check label="Wasser" name="Water"/> <menu_item_check label="Boden" name="Ground"/> @@ -218,6 +220,7 @@ <menu_item_check label="Texture-Kategorie" name="Texture Category"/> <menu_item_check label="Schnelle Timer" name="Fast Timers"/> <menu_item_check label="Speicher" name="Memory"/> + <menu_item_check label="Szenestatistiken" name="Scene Statistics"/> <menu_item_call label="Info zu Region in Fenster Fehler beseitigen" name="Region Info to Debug Console"/> <menu_item_call label="Gruppeninfo in Fenster Fehler beseitigen" name="Group Info to Debug Console"/> <menu_item_call label="Info zu Fähigkeiten in Fenster Fehler beseitigen" name="Capabilities Info to Debug Console"/> @@ -228,6 +231,7 @@ </menu> <menu label="Info anzeigen" name="Display Info"> <menu_item_check label="Zeit anzeigen" name="Show Time"/> + <menu_item_check label="Kosten für Hochladen anzeigen" name="Show Upload Cost"/> <menu_item_check label="Render-Info anzeigen" name="Show Render Info"/> <menu_item_check label="Texturinfos anzeigen" name="Show Texture Info"/> <menu_item_check label="Matrizen anzeigen" name="Show Matrices"/> @@ -253,8 +257,10 @@ </menu> <menu label="Metadaten darstellen" name="Render Metadata"> <menu_item_check label="Bonding Boxes" name="Bounding Boxes"/> + <menu_item_check label="Normalen" name="Normals"/> <menu_item_check label="Octree" name="Octree"/> <menu_item_check label="Shadow Frusta" name="Shadow Frusta"/> + <menu_item_check label="Physische Formen" name="Physics Shapes"/> <menu_item_check label="Okklusion" name="Occlusion"/> <menu_item_check label="Bündel rendern" name="Render Batches"/> <menu_item_check label="Typ aktualisieren" name="Update Type"/> @@ -262,9 +268,12 @@ <menu_item_check label="Textur-Priorität" name="Texture Priority"/> <menu_item_check label="Texturbereich" name="Texture Area"/> <menu_item_check label="Oberflächenbereich" name="Face Area"/> + <menu_item_check label="Detailstufeninfos" name="LOD Info"/> + <menu_item_check label="Konstruktionswarteschlange" name="Build Queue"/> <menu_item_check label="Lichter" name="Lights"/> <menu_item_check label="Gelenkpunkte" name="Collision Skeleton"/> <menu_item_check label="Raycast" name="Raycast"/> + <menu_item_check label="Formen" name="Sculpt"/> </menu> <menu label="Rendering" name="Rendering"> <menu_item_check label="Achsen" name="Axes"/> @@ -272,7 +281,6 @@ <menu_item_call label="Texturinfo für ausgewähltes Objekt" name="Selected Texture Info Basis"/> <menu_item_check label="Wireframe" name="Wireframe"/> <menu_item_check label="Objekt-Objekt Okklusion" name="Object-Object Occlusion"/> - <menu_item_check label="Framebuffer-Objekte" name="Framebuffer Objects"/> <menu_item_check label="Licht und Schatten" name="Lighting and Shadows"/> <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"/> @@ -371,6 +379,7 @@ <menu_item_call label="Lokale Texturen ausgeben" name="Dump Local Textures"/> </menu> <menu_item_check label="HTTP-Texturen" name="HTTP Textures"/> + <menu_item_check label="HTTP-Inventar" name="HTTP Inventory"/> <menu_item_call label="Bilder komprimieren" name="Compress Images"/> <menu_item_check label="Ausgabe Fehlerbeseitigung ausgeben" name="Output Debug Minidump"/> <menu_item_check label="Bei nächster Ausführung Fenster öffnen" name="Console Window"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index c172f7ea2d..75f26c6990 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -2172,6 +2172,12 @@ Dies kann die Eingabe Ihres Passworts beeinflussen. <notification name="RezItemNoPermissions"> Keine Berechtigung zum Rezzen von Objekten. </notification> + <notification name="IMAcrossParentEstates"> + Senden von IMs über übergeordnete Grundbesitze hinweg nicht möglich. + </notification> + <notification name="TransferInventoryAcrossParentEstates"> + Inventarübertragung über übergeordnete Grundbesitze hinweg nicht möglich. + </notification> <notification name="UnableToLoadNotecard"> Notizkarten-Asset konnte nicht geladen werden. </notification> @@ -2749,6 +2755,10 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt. Sie wurden vom Moderator stummgeschaltet. <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="UploadCostConfirmation"> + Das Hochladen kostet [PRICE] L$. Möchten Sie fortfahren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hochladen"/> + </notification> <notification name="ConfirmClearTeleportHistory"> Möchten Sie Ihre Teleport-Liste löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> @@ -2760,6 +2770,9 @@ Die Schaltfläche wird angezeigt, wenn genügend Platz vorhanden ist. <notification name="ShareNotification"> Wählen Sie Einwohner aus, für die Sie das Objekt freigeben möchten. </notification> + <notification name="MeshUploadError"> + [LABEL] konnte nicht hochgeladen werden: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + </notification> <notification name="ShareItemsConfirmation"> Möchten Sie wirklich die folgenden Objekte: @@ -2776,6 +2789,19 @@ für folgende Einwohner freigeben: <notification name="DeedToGroupFail"> Übertragung an Gruppe ist fehlgeschlagen. </notification> + <notification name="ReleaseLandThrottled"> + Die Parzelle [PARCEL_NAME] kann zurzeit nicht aufgegeben werden. + </notification> + <notification name="ReleasedLandWithReclaim"> + Die [AREA] m² große Parzelle „[PARCEL_NAME]“ wurde freigegeben. + +Sie haben [RECLAIM_PERIOD] Stunden, um die Parzelle für 0 L$ zurückzufordern, bevor sie zum Verkauf an alle freigegeben wird. + </notification> + <notification name="ReleasedLandNoReclaim"> + Die [AREA] m² große Parzelle „[PARCEL_NAME]“ wurde freigegeben. + +Sie steht jetzt zum Verkauf an alle zur Verfügung. + </notification> <notification name="AvatarRezNotification"> (Seit [EXISTENCE] Sekunden inworld ) Avatar '[NAME]' wurde in [TIME] Sekunden gerezzt. @@ -2914,6 +2940,10 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti Die Erstellung und Bearbeitung von Gruppen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden. <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> </notification> + <notification label="" name="NoPlaceInfo"> + Die Anzeige des Ortsprofils ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden. + <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> + </notification> <notification label="" name="NoPicks"> Die Erstellung und Bearbeitung von Auswahlen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden. <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> @@ -2934,9 +2964,18 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti Die Bezahlung anderer Einwohner ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln? <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> </notification> - <global name="UnsupportedCPU"> - - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. - </global> + <notification label="" name="NoInventory"> + Die Inventaranzeige ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln? + <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> + </notification> + <notification label="" name="NoAppearance"> + Das Fenster zum Bearbeiten des Aussehens ist nur im Modus „Erweitert“ verfügbar. Möchten Sie sich abmelden und den Modus wechseln? + <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> + </notification> + <notification label="" name="NoSearch"> + Die Suche ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln? + <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> + </notification> <global name="UnsupportedGLRequirements"> Ihr Computer entspricht nicht den Hardwareanforderungen von [APP_NAME]. [APP_NAME] setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem. diff --git a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml index 22681ffdf2..19c5efcb05 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_colors.xml @@ -22,6 +22,9 @@ <text name="text_box5"> Fehler </text> + <text name="text_box10"> + Direkt + </text> <text name="text_box7"> Eigentümer </text> 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 78cb03a50a..b874074c79 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -27,8 +27,20 @@ </text> <check_box initial_value="true" label="Transparentes Wasser" name="TransparentWater"/> <check_box initial_value="true" label="Bumpmapping und Glanz" name="BumpShiny"/> + <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="Ambient Occlusion" name="UseSSAO"/> + <check_box initial_value="true" label="Schärfentiefe" name="UseDoF"/> + <text name="shadows_label"> + Schatten: + </text> + <combo_box name="ShadowDetail"> + <combo_box.item label="Keine" name="0"/> + <combo_box.item label="Sonne/Mond" name="1"/> + <combo_box.item label="Sonne/Mond + Projektoren" name="2"/> + </combo_box> <text name="reflection_label"> Wasserreflexionen: </text> diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml index be8507ebbd..f383be992b 100644 --- a/indra/newview/skins/default/xui/de/panel_region_general.xml +++ b/indra/newview/skins/default/xui/de/panel_region_general.xml @@ -25,6 +25,7 @@ <check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/> <check_box label="Landumverteilung zulassen" name="allow_parcel_changes_check"/> <check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/> + <check_box label="Netzobjekte zulassen" name="mesh_rez_enabled_check" tool_tip="Anderen das Rezzen von Netzobjekten in dieser Region gestatten"/> <spinner label="Avatar-Limit" name="agent_limit_spin"/> <spinner label="Objektbonus" name="object_bonus_spin"/> <text label="Inhaltseinstufung" name="access_text"> diff --git a/indra/newview/skins/default/xui/de/panel_sound_devices.xml b/indra/newview/skins/default/xui/de/panel_sound_devices.xml new file mode 100644 index 0000000000..da20f7e214 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_sound_devices.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<panel label="Geräteeinstellungen" name="device_settings_panel"> + <panel.string name="default_text"> + Standard + </panel.string> + <text name="Input"> + Eingabe + </text> + <text name="My volume label"> + Meine Lautstärke: + </text> + <slider_bar initial_value="1,0" name="mic_volume_slider" tool_tip="Lautstärke mit diesem Regler ändern"/> + <text name="wait_text"> + Bitte warten + </text> + <text name="Output"> + Ausgabe + </text> +</panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index f32eb21dd3..d77b4a1e44 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -130,6 +130,139 @@ <string name="create_account_url"> http://join.secondlife.com/index.php?lang=de-DE </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 + +Weitere Informationen finden Sie auf der folgenden FAQ-Seite: +http://secondlife.com/viewer-access-faq + </string> + <string name="LoginIntermediateOptionalUpdateAvailable"> + Optionales Viewer-Update verfügbar: [VERSION] + </string> + <string name="LoginFailedRequiredUpdate"> + Erforderliches Viewer-Update: [VERSION] + </string> + <string name="LoginFailedAlreadyLoggedIn"> + Dieser Agent ist bereits angemeldet. + </string> + <string name="LoginFailedAuthenticationFailed"> + Wir bitten um Entschuldigung! Wir konnten Sie nicht anmelden. +Stellen Sie sicher, dass Sie die richtigen Informationen eingegeben haben: + * Benutzername (wie robertschmidt12 oder warme.sonne) + * Kennwort +Stellen Sie außerdem sicher, dass die Umschaltsperre deaktiviert ist. + </string> + <string name="LoginFailedPasswordChanged"> + Ihr Kennwort wurde aus Sicherheitsgründen geändert. +Gehen Sie zur Seite „Mein Account“ unter http://secondlife.com/password +und beantworten Sie die Sicherheitsfrage, um Ihr Kennwort zurückzusetzen. +Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten. + </string> + <string name="LoginFailedPasswordReset"> + Aufgrund von Systemänderungen müssen Sie Ihr Kennwort zurücksetzen. +Gehen Sie zur Seite „Mein Account“ unter http://secondlife.com/password +und beantworten Sie die Sicherheitsfrage, um Ihr Kennwort zurückzusetzen. +Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten. + </string> + <string name="LoginFailedEmployeesOnly"> + Second Life ist vorübergehend wegen Wartung geschlossen. +Nur Mitarbeiter können sich anmelden. +Aktuelle Informationen finden Sie unter www.secondlife.com/status. + </string> + <string name="LoginFailedPremiumOnly"> + Die Anmeldung bei Second Life ist vorübergehend eingeschränkt, um sicherzustellen, dass Einwohner, die sich bereits inworld aufhalten, das bestmögliche Erlebnis haben. + +Benutzer mit kostenlosen Konten können sich während dieses Zeitraums nicht bei Second Life anmelden, damit die Kapazität den Benutzern zur Verfügung steht, die ein gebührenpflichtiges Premium-Konto besitzen. + </string> + <string name="LoginFailedComputerProhibited"> + Der Zugriff auf Second Life ist von diesem Computer aus nicht möglich. +Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an +support@secondlife.com. + </string> + <string name="LoginFailedAcountSuspended"> + Ihr Konto ist erst ab +[TIME] Pacific Time wieder verfügbar. + </string> + <string name="LoginFailedAccountDisabled"> + Ihre Anfrage kann derzeit nicht bearbeitet werden. +Wenden Sie sich unter http://secondlife.com/support an den Second Life-Support. +Wenn Sie Ihr Kennwort nicht ändern können, rufen Sie die US-Nummer (866) 476-9763 an. + </string> + <string name="LoginFailedTransformError"> + Nicht übereinstimmende Daten bei der Anmeldung festgestellt. +Wenden Sie sich an support@secondlife.com. + </string> + <string name="LoginFailedAccountMaintenance"> + An Ihrem Konto werden gerade kleinere Wartungsarbeiten durchgeführt. +Ihr Konto ist erst ab +[TIME] Pacific Time wieder verfügbar. +Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com. + </string> + <string name="LoginFailedPendingLogoutFault"> + Abmeldeanforderung führte zu einem Simulatorfehler. + </string> + <string name="LoginFailedPendingLogout"> + Das System meldet Sie gerade ab. +Ihr Konto ist erst ab +[TIME] Pacific Time wieder verfügbar. + </string> + <string name="LoginFailedUnableToCreateSession"> + Es kann keine gültige Sitzung erstellt werden. + </string> + <string name="LoginFailedUnableToConnectToSimulator"> + Es kann keine Simulatorverbindung hergestellt werden. + </string> + <string name="LoginFailedRestrictedHours"> + Mit Ihrem Konto ist der Zugriff auf Second Life +nur zwischen [START] und [END] Pacific Time möglich. +Schauen Sie während dieses Zeitraums vorbei. +Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com. + </string> + <string name="LoginFailedIncorrectParameters"> + Falsche Parameter. +Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com. + </string> + <string name="LoginFailedFirstNameNotAlphanumeric"> + Vorname muss alphanumerisch sein. +Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com. + </string> + <string name="LoginFailedLastNameNotAlphanumeric"> + Nachname muss alphanumerisch sein. +Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com. + </string> + <string name="LogoutFailedRegionGoingOffline"> + Die Region wird gerade offline geschaltet. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LogoutFailedAgentNotInRegion"> + Agent nicht in Region. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LogoutFailedPendingLogin"> + Die Region war gerade dabei, eine andere Sitzung anzumelden. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LogoutFailedLoggingOut"> + Die Region war gerade dabei, die vorherige Sitzung abzumelden. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LogoutFailedStillLoggingOut"> + Die Region ist noch immer dabei, die vorherige Sitzung abzumelden. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LogoutSucceeded"> + Die Region hat soeben die letzte Sitzung abgemeldet. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LogoutFailedLogoutBegun"> + Die Region hat den Abmeldevorgang gestartet. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> + <string name="LoginFailedLoggingOutSession"> + Das System hat begonnen, Ihre letzte Sitzung abzumelden. +Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. + </string> <string name="AgentLostConnection"> In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung. </string> @@ -441,6 +574,9 @@ <string name="symbolic folder link"> Link zu Ordner </string> + <string name="mesh"> + mesh + </string> <string name="AvatarEditingAppearance"> (Aussehen wird bearbeitet) </string> @@ -1180,6 +1316,9 @@ <string name="InvFolder Accessories"> Zubehör </string> + <string name="InvFolder Meshes"> + Netze + </string> <string name="InvFolder Friends"> Freunde </string> @@ -3762,6 +3901,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="session_initialization_timed_out_error"> Die Initialisierung der Sitzung ist fehlgeschlagen </string> + <string name="Home position set."> + Position für Zuhause festgelegt. + </string> <string name="voice_morphing_url"> http://secondlife.com/landing/voicemorphing </string> diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml index fbc119c483..72ba7fe41d 100644 --- a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml @@ -3,6 +3,7 @@ <menu_item_call label="Profil anzeigen" name="view_profile"/> <menu_item_call label="Freund hinzufügen" name="add_friend"/> <menu_item_call label="IM" name="im"/> + <menu_item_call label="Anrufen" name="call"/> <menu_item_call label="Teleportieren" name="teleport"/> <menu_item_call label="Ignorieren" name="block"/> <menu_item_call label="Freischalten" name="unblock"/> diff --git a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..cc45f42169 --- /dev/null +++ b/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml index a4d80921ec..2278bfb699 100644 --- a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml @@ -4,26 +4,32 @@ <string name="SpeakBtnToolTip" value="Schaltet Mikrofon ein/aus"/> <string name="VoiceControlBtnToolTip" value="Voice-Chat-Steuerung anzeigen/ausblenden"/> <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <button label="Sprechen" name="speak_btn" tool_tip="Mikrofon ein- und ausschalten"/> + </layout_panel> + <layout_panel name="speak_flyout_panel"> + <button label="" name="flyout_btn" tool_tip="Soundeinstellungen ändern"/> + </layout_panel> <layout_panel name="gesture_panel"> - <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/> + <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Ihren Avatar bestimmte Aktionen durchführen lassen"/> </layout_panel> <layout_panel name="cam_panel"> - <bottomtray_button label="Ansicht" name="camera_btn" tool_tip="Kamerasteuerung anzeigen/ausblenden"/> + <bottomtray_button label="Ansicht" name="camera_btn" tool_tip="Kamerawinkel steuern"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Ziele" name="destination_btn" tool_tip="Zeigt Leutefenster an"/> + <layout_panel name="destinations_panel"> + <bottomtray_button label="Ziele" name="destination_btn" tool_tip="Durch Second Life reisen"/> </layout_panel> - <layout_panel name="avatar_and_destinations_panel"> - <bottomtray_button label="Mein Avatar" name="avatar_btn"/> + <layout_panel name="avatar_panel"> + <bottomtray_button label="Mein Avatar" name="avatar_btn" tool_tip="Eigenes Aussehen verändern"/> </layout_panel> <layout_panel name="people_panel"> - <bottomtray_button label="Leute" name="show_people_button" tool_tip="Zeigt Leutefenster an"/> + <bottomtray_button label="Leute" name="show_people_button" tool_tip="Personen in Second Life suchen"/> </layout_panel> <layout_panel name="profile_panel"> - <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Zeigt Profilfenster an"/> + <bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Eigenes Profil anzeigen und bearbeiten"/> </layout_panel> <layout_panel name="howto_panel"> - <bottomtray_button label="Anweisungen" name="show_help_btn" tool_tip="Second Life-Anweisungsthemen öffnen"/> + <bottomtray_button label="Anweisungen" name="show_help_btn" tool_tip="Hilfeinfos zu Second Life anzeigen"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml index abf8011d9d..0ef2234fec 100644 --- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml @@ -9,7 +9,7 @@ <button label="Freund hinzufügen" name="add_friend_btn"/> </layout_panel> <layout_panel name="teleport_btn_panel"> - <button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten."/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten"/> </layout_panel> <layout_panel name="share_btn_panel"> <button label="Teilen" name="share_btn"/> diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml index c6253e17de..4f8f70ad17 100644 --- a/indra/newview/skins/minimal/xui/de/panel_people.xml +++ b/indra/newview/skins/minimal/xui/de/panel_people.xml @@ -51,6 +51,9 @@ <layout_panel name="chat_btn_lp"> <button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/> </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/> + </layout_panel> <layout_panel name="chat_btn_lp"> <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/> </layout_panel> -- cgit v1.2.3 From b07f51b4c74f035b084076d6c75f3c95a9fb9a90 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Wed, 15 Jun 2011 16:55:26 -0400 Subject: SH-1773 FIX --- indra/newview/llmeshrepository.cpp | 54 ++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 29 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 4673289094..494f6f2e01 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -468,38 +468,36 @@ public: }; -void log_upload_error(const LLSD& content,std::string stage) +void log_upload_error(S32 status, const LLSD& content,std::string stage) { + llwarns << "stage: " << stage << " http status: " << status << llendl; if (content.has("error")) { const LLSD& err = content["error"]; - llwarns << "mesh upload failed, stage " << stage - << " message " << err["message"].asString() << " id " << err["identifier"].asString() - << llendl; - - if (content.has("errors")) - { - const LLSD& err_list = content["errors"]; + llwarns << "err: " << err << llendl; + llwarns << "mesh upload failed, stage '" << stage + << "' error '" << err["error"].asString() + << "', message '" << err["message"].asString() + << "', id '" << err["identifier"].asString() + << "'" << llendl; + if (err.has("errors")) + { + S32 error_num = 0; + const LLSD& err_list = err["errors"]; for (LLSD::array_const_iterator it = err_list.beginArray(); it != err_list.endArray(); ++it) { const LLSD& err_entry = *it; - std::string index_info; - std::string texture_index_str = err_entry["TextureIndex"].asString(); - if (!texture_index_str.empty()) + llwarns << "error[" << error_num << "]:" << llendl; + for (LLSD::map_const_iterator map_it = err_entry.beginMap(); + map_it != err_entry.endMap(); + ++map_it) { - index_info += " texture_index: " + texture_index_str; + llwarns << "\t" << map_it->first << ": " + << map_it->second << llendl; } - std::string mesh_index_str = err_entry["MeshIndex"].asString(); - if (!mesh_index_str.empty()) - { - index_info += " mesh_index: " + mesh_index_str; - } - llwarns << "mesh err code " << err_entry["error"].asString() - << " message " << err_entry["message"] - << index_info - << llendl; + error_num++; } } } @@ -507,8 +505,6 @@ void log_upload_error(const LLSD& content,std::string stage) { llwarns << "bad mesh, no error information available" << llendl; } - - } class LLModelObjectUploadResponder: public LLCurl::Responder @@ -547,12 +543,11 @@ public: const std::string& reason, const LLSD& content) { - //assert_main_thread(); llinfos << "completed" << llendl; mThread->mPendingUploads--; dumpLLSDToFile(content,make_dump_name("whole_model_fee_response_",dump_num)); - llinfos << "LLWholeModelFeeResponder content: " << content << llendl; - if (isGoodStatus(status)) + if (isGoodStatus(status) && + content["state"].asString() == "upload") { llinfos << "fee request succeeded" << llendl; mThread->mWholeModelUploadURL = content["uploader"].asString(); @@ -560,7 +555,7 @@ public: else { llwarns << "fee request failed" << llendl; - log_upload_error(content,"fee"); + log_upload_error(status,content,"fee"); mThread->mWholeModelUploadURL = ""; } } @@ -588,7 +583,8 @@ public: llinfos << "LLWholeModelUploadResponder content: " << content << llendl; // requested "mesh" asset type isn't actually the type // of the resultant object, fix it up here. - if (isGoodStatus(status)) + if (isGoodStatus(status) && + content["state"].asString() == "complete") { llinfos << "upload succeeded" << llendl; mPostData["asset_type"] = "object"; @@ -597,7 +593,7 @@ public: else { llwarns << "upload failed" << llendl; - log_upload_error(content,"upload"); + log_upload_error(status,content,"upload"); } } }; -- cgit v1.2.3 From 0bb7bcc96cfea7b5d56f083d0afcbc1fce7e9f21 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Wed, 15 Jun 2011 16:20:33 -0600 Subject: fix for SH-1788: Assert in texture load when uploading textured mesh model and beyond: fixed the thread-safe and highest texture resolution flaws in the mesh texture uploading flow. --- indra/newview/llfloatermodelpreview.cpp | 21 +++++++++++++++++++-- indra/newview/llfloatermodelpreview.h | 3 +++ indra/newview/llmeshrepository.cpp | 21 ++++++++++----------- indra/newview/llviewertexture.cpp | 19 +++++++++++++++++-- indra/newview/llviewertexture.h | 3 ++- 5 files changed, 51 insertions(+), 16 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 866cc39eec..aa608ea67c 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1121,7 +1121,7 @@ LLModelLoader::LLModelLoader( std::string filename, S32 lod, LLModelPreview* pre std::deque<std::string>& jointsFromNodes ) : mJointList( jointMap ) , mJointsFromNode( jointsFromNodes ) -, LLThread("Model Loader"), mFilename(filename), mLod(lod), mPreview(preview), mFirstTransform(TRUE) +, LLThread("Model Loader"), mFilename(filename), mLod(lod), mPreview(preview), mFirstTransform(TRUE), mNumOfFetchingTextures(0) { mJointMap["mPelvis"] = "mPelvis"; mJointMap["mTorso"] = "mTorso"; @@ -2266,7 +2266,8 @@ void LLModelLoader::loadTextures() iter->second[i].mMaterial[j].mDiffuseMap = LLViewerTextureManager::getFetchedTextureFromUrl("file://" + iter->second[i].mMaterial[j].mDiffuseMapFilename, TRUE, LLViewerTexture::BOOST_PREVIEW); iter->second[i].mMaterial[j].mDiffuseMap->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, TRUE, FALSE, mPreview, NULL, FALSE); - iter->second[i].mMaterial[j].mDiffuseMap->forceToSaveRawImage(); + iter->second[i].mMaterial[j].mDiffuseMap->forceToSaveRawImage(0, F32_MAX); + mNumOfFetchingTextures++ ; } } } @@ -4140,6 +4141,14 @@ void LLModelPreview::updateStatusMessages() } } + if(upload_ok && mModelLoader) + { + if(!mModelLoader->areTexturesReady() && mFMP->childGetValue("upload_textures").asBoolean()) + { + upload_ok = false ; + } + } + const BOOL confirmed_checkbox = mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->getValue().asBoolean(); if ( upload_ok && !errorStateFromLoader && skinAndRigOk && !has_degenerate && confirmed_checkbox) { @@ -5278,6 +5287,14 @@ void LLModelPreview::textureLoadedCallback( BOOL success, LLViewerFetchedTexture { LLModelPreview* preview = (LLModelPreview*) userdata; preview->refresh(); + + if(final && preview->mModelLoader) + { + if(preview->mModelLoader->mNumOfFetchingTextures > 0) + { + preview->mModelLoader->mNumOfFetchingTextures-- ; + } + } } void LLModelPreview::onLODParamCommit(bool enforce_tri_limit) diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index a328bfb4dd..dcc2fc8898 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -132,6 +132,9 @@ public: JointTransformMap& mJointList; std::deque<std::string>& mJointsFromNode; + S32 mNumOfFetchingTextures ; //updated in the main thread + bool areTexturesReady() { return !mNumOfFetchingTextures; } //called in the main thread. + private: static std::list<LLModelLoader*> sActiveLoaderList; static bool isAlive(LLModelLoader* loader) ; diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 4673289094..f8ffb16adb 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1556,16 +1556,12 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) std::stringstream texture_str; if (texture != NULL && include_textures && mUploadTextures) { - // Get binary rep of texture, if needed. - LLTextureUploadData data(texture, material.mDiffuseMapLabel); - if (!data.mTexture->isRawImageValid()) - { - data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); + if(texture->hasSavedRawImage()) + { + LLPointer<LLImageJ2C> upload_file = + LLViewerTextureList::convertToUploadFile(texture->getSavedRawImage()); + texture_str.write((const char*) upload_file->getData(), upload_file->getDataSize()); } - - LLPointer<LLImageJ2C> upload_file = - LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); - texture_str.write((const char*) upload_file->getData(), upload_file->getDataSize()); } if (texture != NULL && @@ -2868,9 +2864,12 @@ void LLMeshUploadThread::doUploadTexture(LLTextureUploadData& data) data.mTexture->reloadRawImage(data.mTexture->getDiscardLevel()); } - LLPointer<LLImageJ2C> upload_file = LLViewerTextureList::convertToUploadFile(data.mTexture->getRawImage()); + if(data.mTexture->hasSavedRawImage()) + { + LLPointer<LLImageJ2C> upload_file = LLViewerTextureList::convertToUploadFile(data.mTexture->getSavedRawImage()); - ostr.write((const char*) upload_file->getData(), upload_file->getDataSize()); + ostr.write((const char*) upload_file->getData(), upload_file->getDataSize()); + } data.mAssetData = ostr.str(); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index af06421bf9..4da0f80a00 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1168,6 +1168,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mSavedRawDiscardLevel = -1 ; mDesiredSavedRawDiscardLevel = -1 ; mLastReferencedSavedRawImageTime = 0.0f ; + mKeptSavedRawImageTime = 0.f ; mLastCallBackActiveTime = 0.f; } @@ -2696,8 +2697,16 @@ void LLViewerFetchedTexture::saveRawImage() mLastReferencedSavedRawImageTime = sCurrentTime ; } -void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard) +void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard, F32 kept_time) { + mKeptSavedRawImageTime = kept_time ; + mLastReferencedSavedRawImageTime = sCurrentTime ; + + if(mSavedRawDiscardLevel > -1 && mSavedRawDiscardLevel <= desired_discard) + { + return ; //raw imge is ready. + } + if(!mForceToSaveRawImage || mDesiredSavedRawDiscardLevel < 0 || mDesiredSavedRawDiscardLevel > desired_discard) { mForceToSaveRawImage = TRUE ; @@ -2713,11 +2722,16 @@ void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard) mRawImage = NULL ; mRawDiscardLevel = INVALID_DISCARD_LEVEL ; - } + } } } void LLViewerFetchedTexture::destroySavedRawImage() { + if(mLastReferencedSavedRawImageTime < mKeptSavedRawImageTime) + { + return ; //keep the saved raw image. + } + mForceToSaveRawImage = FALSE ; mSaveRawImage = FALSE ; @@ -2729,6 +2743,7 @@ void LLViewerFetchedTexture::destroySavedRawImage() mSavedRawDiscardLevel = -1 ; mDesiredSavedRawDiscardLevel = -1 ; mLastReferencedSavedRawImageTime = 0.0f ; + mKeptSavedRawImageTime = 0.f ; } LLImageRaw* LLViewerFetchedTexture::getSavedRawImage() diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index d512f8ec3a..c5b8c8923a 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -465,7 +465,7 @@ public: S32 getCachedRawImageLevel() const {return mCachedRawDiscardLevel;} BOOL isCachedRawImageReady() const {return mCachedRawImageReady ;} BOOL isRawImageValid()const { return mIsRawImageValid ; } - void forceToSaveRawImage(S32 desired_discard = 0) ; + void forceToSaveRawImage(S32 desired_discard = 0, F32 kept_time = 0.f) ; /*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ; void destroySavedRawImage() ; LLImageRaw* getSavedRawImage() ; @@ -550,6 +550,7 @@ protected: S32 mSavedRawDiscardLevel; S32 mDesiredSavedRawDiscardLevel; F32 mLastReferencedSavedRawImageTime ; + F32 mKeptSavedRawImageTime ; //a small version of the copy of the raw image (<= 64 * 64) LLPointer<LLImageRaw> mCachedRawImage; -- cgit v1.2.3 From 6532d5db2dc450295d7ee4272600aaf79188ebc1 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Wed, 15 Jun 2011 18:38:30 -0400 Subject: SH-1166 WIP --- indra/newview/app_settings/settings.xml | 11 +++ indra/newview/llmeshrepository.cpp | 82 +++++++++++++++------- .../newview/skins/default/xui/en/notifications.xml | 2 +- 3 files changed, 70 insertions(+), 25 deletions(-) mode change 100644 => 100755 indra/newview/skins/default/xui/en/notifications.xml (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 036408807d..27a9737d69 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5600,6 +5600,17 @@ <key>Value</key> <real>0</real> </map> + <key>MeshUploadFakeErrors</key> + <map> + <key>Comment</key> + <string>Force upload errors (for testing)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <real>0</real> + </map> <key>MigrateCacheDirectory</key> <map> <key>Comment</key> diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 494f6f2e01..083038acba 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -94,7 +94,8 @@ std::string make_dump_name(std::string prefix, S32 num) return prefix + boost::lexical_cast<std::string>(num) + std::string(".xml"); } -void dumpLLSDToFile(const LLSD& content, std::string filename); +void dump_llsd_to_file(const LLSD& content, std::string filename); +LLSD llsd_from_file(std::string filename); std::string header_lod[] = { @@ -468,8 +469,18 @@ public: }; -void log_upload_error(S32 status, const LLSD& content,std::string stage) +void log_upload_error(S32 status, const LLSD& content, std::string stage, std::string model_name) { + // Add notification popup. + LLSD args; + std::string message = content["error"]["message"]; + std::string identifier = content["error"]["identifier"]; + args["MESSAGE"] = message; + args["IDENTIFIER"] = identifier; + args["LABEL"] = model_name; + gMeshRepo.uploadError(args); + + // Log details. llwarns << "stage: " << stage << " http status: " << status << llendl; if (content.has("error")) { @@ -534,28 +545,36 @@ public: class LLWholeModelFeeResponder: public LLCurl::Responder { LLMeshUploadThread* mThread; + LLSD mModelData; public: - LLWholeModelFeeResponder(LLMeshUploadThread* thread): - mThread(thread) + LLWholeModelFeeResponder(LLMeshUploadThread* thread, LLSD& model_data): + mThread(thread), + mModelData(model_data) { } virtual void completed(U32 status, const std::string& reason, const LLSD& content) { + LLSD cc = content; + if (gSavedSettings.getS32("MeshUploadFakeErrors")&1) + { + cc = llsd_from_file("fake_upload_error.xml"); + } + llinfos << "completed" << llendl; mThread->mPendingUploads--; - dumpLLSDToFile(content,make_dump_name("whole_model_fee_response_",dump_num)); + dump_llsd_to_file(cc,make_dump_name("whole_model_fee_response_",dump_num)); if (isGoodStatus(status) && - content["state"].asString() == "upload") + cc["state"].asString() == "upload") { llinfos << "fee request succeeded" << llendl; - mThread->mWholeModelUploadURL = content["uploader"].asString(); + mThread->mWholeModelUploadURL = cc["uploader"].asString(); } else { llwarns << "fee request failed" << llendl; - log_upload_error(status,content,"fee"); + log_upload_error(status,cc,"fee",mModelData["name"]); mThread->mWholeModelUploadURL = ""; } } @@ -565,35 +584,42 @@ public: class LLWholeModelUploadResponder: public LLCurl::Responder { LLMeshUploadThread* mThread; - LLSD mPostData; + LLSD mModelData; public: - LLWholeModelUploadResponder(LLMeshUploadThread* thread, LLSD& post_data): + LLWholeModelUploadResponder(LLMeshUploadThread* thread, LLSD& model_data): mThread(thread), - mPostData(post_data) + mModelData(model_data) { } virtual void completed(U32 status, const std::string& reason, const LLSD& content) { + LLSD cc = content; + if (gSavedSettings.getS32("MeshUploadFakeErrors")&2) + { + cc = llsd_from_file("fake_upload_error.xml"); + } + //assert_main_thread(); mThread->mPendingUploads--; - dumpLLSDToFile(content,make_dump_name("whole_model_upload_response_",dump_num)); - llinfos << "LLWholeModelUploadResponder content: " << content << llendl; + dump_llsd_to_file(cc,make_dump_name("whole_model_upload_response_",dump_num)); + llinfos << "LLWholeModelUploadResponder content: " << cc << llendl; // requested "mesh" asset type isn't actually the type // of the resultant object, fix it up here. if (isGoodStatus(status) && - content["state"].asString() == "complete") + cc["state"].asString() == "complete") { llinfos << "upload succeeded" << llendl; - mPostData["asset_type"] = "object"; - gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mPostData,content)); + mModelData["asset_type"] = "object"; + gMeshRepo.updateInventory(LLMeshRepository::inventory_data(mModelData,cc)); } else { llwarns << "upload failed" << llendl; - log_upload_error(status,content,"upload"); + std::string model_name = mModelData["name"].asString(); + log_upload_error(status,cc,"upload",model_name); } } }; @@ -1418,7 +1444,7 @@ void LLMeshUploadThread::run() doWholeModelUpload(); } -void dumpLLSDToFile(const LLSD& content, std::string filename) +void dump_llsd_to_file(const LLSD& content, std::string filename) { if (gSavedSettings.getBOOL("MeshUploadLogXML")) { @@ -1427,6 +1453,14 @@ void dumpLLSDToFile(const LLSD& content, std::string filename) } } +LLSD llsd_from_file(std::string filename) +{ + std::ifstream ifs(filename); + LLSD result; + LLSDSerialize::fromXML(result,ifs); + return result; +} + void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) { LLSD result; @@ -1595,7 +1629,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) } result["asset_resources"] = res; - dumpLLSDToFile(result,make_dump_name("whole_model_",dump_num)); + dump_llsd_to_file(result,make_dump_name("whole_model_",dump_num)); dest = result; } @@ -1651,12 +1685,12 @@ void LLMeshUploadThread::doWholeModelUpload() LLSD model_data; wholeModelToLLSD(model_data,false); - dumpLLSDToFile(model_data,make_dump_name("whole_model_fee_request_",dump_num)); + dump_llsd_to_file(model_data,make_dump_name("whole_model_fee_request_",dump_num)); mPendingUploads++; LLCurlRequest::headers_t headers; mCurlRequest->post(mWholeModelFeeCapability, headers, model_data, - new LLWholeModelFeeResponder(this)); + new LLWholeModelFeeResponder(this,model_data)); do { @@ -1673,7 +1707,7 @@ void LLMeshUploadThread::doWholeModelUpload() LLSD full_model_data; wholeModelToLLSD(full_model_data, true); LLSD body = full_model_data["asset_resources"]; - dumpLLSDToFile(body,make_dump_name("whole_model_body_",dump_num)); + dump_llsd_to_file(body,make_dump_name("whole_model_body_",dump_num)); mCurlRequest->post(mWholeModelUploadURL, headers, body, new LLWholeModelUploadResponder(this, model_data)); do @@ -3111,8 +3145,8 @@ bool LLImportMaterial::operator<(const LLImportMaterial &rhs) const void LLMeshRepository::updateInventory(inventory_data data) { LLMutexLock lock(mMeshMutex); - dumpLLSDToFile(data.mPostData,make_dump_name("update_inventory_post_data_",dump_num)); - dumpLLSDToFile(data.mResponse,make_dump_name("update_inventory_response_",dump_num)); + dump_llsd_to_file(data.mPostData,make_dump_name("update_inventory_post_data_",dump_num)); + dump_llsd_to_file(data.mResponse,make_dump_name("update_inventory_response_",dump_num)); mInventoryQ.push(data); } diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml old mode 100644 new mode 100755 index ce96c488b4..c8d1d6c9fd --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6823,7 +6823,7 @@ Select residents to share with. name="MeshUploadError" icon="alert.tga" type="alert"> - [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] </notification> <notification -- cgit v1.2.3 From 6d436f152b5a8d5bc2a048bb46000770b23cffd1 Mon Sep 17 00:00:00 2001 From: prep linden <prep@lindenlab.com> Date: Thu, 16 Jun 2011 15:23:49 -0400 Subject: Fix for camera wonkiness (sh-1654 ...) --- indra/newview/llagentcamera.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 80085dad9d..c30d3b9aa3 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -392,11 +392,9 @@ LLVector3 LLAgentCamera::calcFocusOffset(LLViewerObject *object, LLVector3 origi } LLQuaternion inv_obj_rot = ~obj_rot; // get inverse of rotation - LLVector3 object_extents; + LLVector3 object_extents = object->getScale(); const LLVector4a* oe4 = object->mDrawable->getSpatialExtents(); - LLVector4a size; - size.setSub(oe4[1], oe4[0]); - object_extents.set( size[0], size[1], size[2] ); + object_extents.set( oe4[1][0], oe4[1][1], oe4[1][2] ); // make sure they object extents are non-zero object_extents.clamp(0.001f, F32_MAX); -- cgit v1.2.3 From 9d0351550eb94e6bf4a925928c5433de3904b7e9 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Thu, 16 Jun 2011 12:32:30 -0700 Subject: sync with viewer-development --- .../xui/en/menu_people_nearby_view_sort.xml | 8 +++ .../skins/default/xui/en/panel_cof_wearables.xml | 3 - .../newview/skins/default/xui/en/panel_people.xml | 70 +++++++++++++++------- .../default/xui/en/panel_preferences_sound.xml | 23 +++++-- indra/newview/skins/default/xui/en/strings.xml | 2 + 5 files changed, 76 insertions(+), 30 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml index f9db64b524..65bd2793b6 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml @@ -42,6 +42,14 @@ function="CheckControl" parameter="NearbyListShowIcons" /> </menu_item_check> + <menu_item_check name ="view_map" label="View Map"> + <menu_item_check.on_check + function="CheckControl" + parameter="NearbyListShowMap" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="NearbyListShowMap" /> + </menu_item_check> <menu_item_separator layout="topleft" /> <menu_item_call name="show_blocked_list" label="Show Blocked Residents & Objects"> <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" /> diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml index f438e3d42d..bbeb592e96 100644 --- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml @@ -53,9 +53,6 @@ name="list_attachments" top="0" width="311"> - <flat_list_view.no_items_text - value="No attachments worn" /> - </flat_list_view> </accordion_tab> <accordion_tab layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 1a00416b2a..775805ad2e 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -87,7 +87,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M width="319"> <panel background_opaque="true" - background_visible="true" + background_visible="true" bg_alpha_color="DkGray" bg_opaque_color="DkGray" follows="all" @@ -99,28 +99,54 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M name="nearby_panel" top="0" width="313"> - <net_map - bg_color="NetMapBackgroundColor" - follows="top|left|right" - layout="topleft" - left="3" - mouse_opaque="false" - name="Net Map" - width="305" - height="140" - top="5"/> - <avatar_list - allow_select="true" - follows="top|left|bottom|right" - height="211" - ignore_online_status="true" + <layout_stack + clip="false" + follows="all" + height="355" + layout="topleft" + mouse_opaque="false" + orientation="vertical" + width="313"> + <layout_panel + height="142" layout="topleft" - left="3" - multi_select="true" - name="avatar_list" - top="145" - width="306" /> - <panel + mouse_opaque="false" + user_resize="false" + visibility_control="NearbyListShowMap" + width="313"> + <net_map + bg_color="NetMapBackgroundColor" + follows="all" + height="140" + layout="topleft" + left="3" + mouse_opaque="false" + name="Net Map" + top="4" + width="305"/> + </layout_panel> + <layout_panel + height="213" + layout="topleft" + min_height="100" + mouse_opaque="false" + user_resize="false" + width="313"> + <avatar_list + allow_select="true" + follows="all" + height="211" + ignore_online_status="true" + layout="topleft" + left="3" + keep_one_selected="false" + multi_select="true" + name="avatar_list" + top="2" + width="306" /> + </layout_panel> + </layout_stack> + <panel background_visible="true" follows="left|right|bottom" height="27" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 91fe6f544c..1745c1e4b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -123,8 +123,8 @@ function="Pref.setControlFalse" parameter="MuteAmbient" /> </slider> - <button - control_name="MuteAmbient" + <button + control_name="MuteAmbient" disabled_control="MuteAudio" follows="top|left" height="16" @@ -157,7 +157,7 @@ function="Pref.setControlFalse" parameter="MuteSounds" /> </slider> - <button + <button control_name="MuteSounds" disabled_control="MuteAudio" follows="top|left" @@ -169,7 +169,10 @@ left_pad="5" name="mute_audio" tab_stop="false" - width="16" /> + width="16"> + <button.commit_callback + function="Pref.SetSounds"/> + </button> <slider control_name="AudioLevelMusic" disabled_control="MuteAudio" @@ -332,7 +335,17 @@ label="Play media attached to other avatars" left="25" width="230"/> - + <check_box + name="gesture_audio_play_btn" + control_name="EnableGestureSounds" + disabled_control="MuteAudio" + value="true" + follows="left|bottom|right" + height="15" + tool_tip="Check this to hear sounds from gestures" + label="Play sounds from gestures" + top_pad="1" + left="25"/> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 339f14eacb..71f48c833d 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2101,6 +2101,8 @@ Returns a string with the requested data about the region <string name="InvFolder Friends">Friends</string> <string name="InvFolder All">All</string> + <string name="no_attachments">No attachments worn</string> + <!-- inventory FVBridge --> <!-- This is used in llpanelinventory.cpp when constructing a context menu for an item for Sale --> <string name="Buy">Buy</string> -- cgit v1.2.3 From cc6e80412949639f52138adde5b909a298cd2242 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Thu, 16 Jun 2011 15:58:34 -0400 Subject: SH-1166 FIX --- indra/newview/skins/default/xui/en/notifications.xml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index c8d1d6c9fd..09105c1d28 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6824,6 +6824,8 @@ Select residents to share with. icon="alert.tga" type="alert"> [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] + +See the log file for details. </notification> <notification -- cgit v1.2.3 From 6c5ae7f6ab3b844a135c6662a2f015eca684ab14 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Thu, 16 Jun 2011 17:00:12 -0400 Subject: Fix for linux build failure, hopefully --- indra/newview/llmeshrepository.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 76079b2bf5..6e0722bcf9 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1455,7 +1455,7 @@ void dump_llsd_to_file(const LLSD& content, std::string filename) LLSD llsd_from_file(std::string filename) { - std::ifstream ifs(filename); + std::ifstream ifs(filename.c_str()); LLSD result; LLSDSerialize::fromXML(result,ifs); return result; -- cgit v1.2.3 From e63f6311be2b2bca9b45ddbf43b675200dc51486 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Thu, 16 Jun 2011 15:55:22 -0600 Subject: fix for STORM-1274: crash at LLVOCacheEntry::~LLVOCacheEntry() line 138 --- indra/newview/llvocache.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index bbb19a63f1..f0b5b50feb 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -137,10 +137,6 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) LLVOCacheEntry::~LLVOCacheEntry() { - if(mBuffer != mDP.getBuffer()) - { - delete[] mBuffer ; //just in case - } mDP.freeBuffer(); } -- cgit v1.2.3 From c4d37c3cae78ee785043c022344e1c4a68239dc8 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Fri, 17 Jun 2011 11:34:11 -0700 Subject: WIP INTL-46 Traditional Chinese translation update 6/17 --- .../newview/skins/default/xui/zh/floater_about.xml | 10 +- .../skins/default/xui/zh/floater_about_land.xml | 26 +-- .../default/xui/zh/floater_animation_preview.xml | 6 +- .../skins/default/xui/zh/floater_avatar_picker.xml | 8 +- .../default/xui/zh/floater_avatar_textures.xml | 8 +- .../skins/default/xui/zh/floater_buy_currency.xml | 2 +- .../skins/default/xui/zh/floater_buy_land.xml | 6 +- .../default/xui/zh/floater_day_cycle_options.xml | 2 +- .../skins/default/xui/zh/floater_gesture.xml | 8 +- .../skins/default/xui/zh/floater_god_tools.xml | 2 +- .../skins/default/xui/zh/floater_image_preview.xml | 2 +- .../skins/default/xui/zh/floater_incoming_call.xml | 6 +- .../xui/zh/floater_inventory_view_finder.xml | 4 +- .../skins/default/xui/zh/floater_media_browser.xml | 18 +- .../skins/default/xui/zh/floater_mem_leaking.xml | 2 +- .../skins/default/xui/zh/floater_nearby_chat.xml | 2 +- indra/newview/skins/default/xui/zh/floater_pay.xml | 8 +- .../skins/default/xui/zh/floater_pay_object.xml | 8 +- .../default/xui/zh/floater_preview_animation.xml | 6 +- .../default/xui/zh/floater_preview_gesture.xml | 14 +- .../skins/default/xui/zh/floater_script_debug.xml | 2 +- .../skins/default/xui/zh/floater_sell_land.xml | 2 +- .../skins/default/xui/zh/floater_snapshot.xml | 2 +- .../newview/skins/default/xui/zh/floater_stats.xml | 28 +-- .../newview/skins/default/xui/zh/floater_tools.xml | 204 ++++++++++----------- .../skins/default/xui/zh/floater_top_objects.xml | 16 +- .../skins/default/xui/zh/floater_url_entry.xml | 2 +- .../skins/default/xui/zh/floater_voice_effect.xml | 2 +- .../newview/skins/default/xui/zh/floater_water.xml | 2 +- .../skins/default/xui/zh/floater_web_content.xml | 4 +- .../skins/default/xui/zh/floater_window_size.xml | 2 +- .../skins/default/xui/zh/floater_world_map.xml | 4 +- .../newview/skins/default/xui/zh/inspect_group.xml | 6 +- .../skins/default/xui/zh/inspect_object.xml | 2 +- .../skins/default/xui/zh/menu_attachment_other.xml | 2 +- .../skins/default/xui/zh/menu_avatar_icon.xml | 2 +- .../skins/default/xui/zh/menu_avatar_other.xml | 2 +- .../skins/default/xui/zh/menu_gesture_gear.xml | 2 +- .../default/xui/zh/menu_inspect_avatar_gear.xml | 2 +- .../default/xui/zh/menu_inspect_object_gear.xml | 14 +- .../skins/default/xui/zh/menu_inventory.xml | 24 +-- .../default/xui/zh/menu_inventory_gear_default.xml | 8 +- .../newview/skins/default/xui/zh/menu_landmark.xml | 2 +- indra/newview/skins/default/xui/zh/menu_login.xml | 14 +- .../skins/default/xui/zh/menu_outfit_gear.xml | 8 +- .../skins/default/xui/zh/menu_participant_list.xml | 2 +- .../xui/zh/menu_people_groups_view_sort.xml | 2 +- .../skins/default/xui/zh/menu_people_nearby.xml | 2 +- .../xui/zh/menu_people_nearby_multiselect.xml | 2 +- .../skins/default/xui/zh/menu_picks_plus.xml | 2 +- indra/newview/skins/default/xui/zh/menu_place.xml | 2 +- .../default/xui/zh/menu_places_gear_folder.xml | 2 +- .../default/xui/zh/menu_places_gear_landmark.xml | 2 +- .../skins/default/xui/zh/menu_profile_overflow.xml | 2 +- indra/newview/skins/default/xui/zh/menu_viewer.xml | 52 +++--- indra/newview/skins/default/xui/zh/mime_types.xml | 2 +- .../newview/skins/default/xui/zh/notifications.xml | 36 ++-- .../default/xui/zh/panel_adhoc_control_panel.xml | 2 +- .../default/xui/zh/panel_avatar_list_item.xml | 2 +- .../skins/default/xui/zh/panel_edit_hair.xml | 2 +- .../skins/default/xui/zh/panel_edit_pants.xml | 2 +- .../skins/default/xui/zh/panel_edit_pick.xml | 12 +- .../skins/default/xui/zh/panel_edit_shape.xml | 22 +-- .../skins/default/xui/zh/panel_edit_shirt.xml | 2 +- .../skins/default/xui/zh/panel_edit_skirt.xml | 2 +- .../skins/default/xui/zh/panel_edit_socks.xml | 2 +- .../skins/default/xui/zh/panel_edit_tattoo.xml | 8 +- .../skins/default/xui/zh/panel_edit_wearable.xml | 8 +- .../skins/default/xui/zh/panel_group_general.xml | 6 +- .../skins/default/xui/zh/panel_group_invite.xml | 2 +- .../default/xui/zh/panel_group_land_money.xml | 6 +- .../skins/default/xui/zh/panel_group_notices.xml | 16 +- .../skins/default/xui/zh/panel_group_roles.xml | 2 +- .../default/xui/zh/panel_im_control_panel.xml | 2 +- indra/newview/skins/default/xui/zh/panel_me.xml | 2 +- .../xui/zh/panel_media_settings_general.xml | 2 +- .../xui/zh/panel_media_settings_permissions.xml | 10 +- .../skins/default/xui/zh/panel_nearby_chat_bar.xml | 4 +- .../skins/default/xui/zh/panel_nearby_media.xml | 6 +- .../skins/default/xui/zh/panel_notify_textbox.xml | 6 +- .../skins/default/xui/zh/panel_outfit_edit.xml | 6 +- .../skins/default/xui/zh/panel_pick_info.xml | 2 +- indra/newview/skins/default/xui/zh/panel_picks.xml | 14 +- .../skins/default/xui/zh/panel_place_profile.xml | 12 +- .../default/xui/zh/panel_preferences_chat.xml | 2 +- .../default/xui/zh/panel_preferences_general.xml | 34 ++-- .../default/xui/zh/panel_preferences_move.xml | 4 +- .../default/xui/zh/panel_preferences_sound.xml | 32 ++-- .../default/xui/zh/panel_prim_media_controls.xml | 2 +- .../newview/skins/default/xui/zh/panel_profile.xml | 4 +- .../skins/default/xui/zh/panel_profile_view.xml | 2 +- .../skins/default/xui/zh/panel_region_covenant.xml | 10 +- .../skins/default/xui/zh/panel_region_debug.xml | 14 +- .../skins/default/xui/zh/panel_region_estate.xml | 2 +- .../skins/default/xui/zh/panel_region_general.xml | 12 +- .../skins/default/xui/zh/panel_side_tray.xml | 2 +- .../default/xui/zh/panel_teleport_history.xml | 2 +- .../skins/default/xui/zh/sidepanel_appearance.xml | 2 +- .../skins/default/xui/zh/sidepanel_task_info.xml | 20 +- indra/newview/skins/default/xui/zh/strings.xml | 176 +++++++++--------- .../skins/default/xui/zh/teleport_strings.xml | 2 +- 101 files changed, 549 insertions(+), 549 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml index 58e8c41c38..bee940ddc1 100644 --- a/indra/newview/skins/default/xui/zh/floater_about.xml +++ b/indra/newview/skins/default/xui/zh/floater_about.xml @@ -25,11 +25,11 @@ <floater.string name="AboutLibs"> OpenGL Version: [OPENGL_VERSION] -libcurl Version: [LIBCURL_VERSION] -J2C Decoder Version: [J2C_VERSION] -Audio Driver Version: [AUDIO_DRIVER_VERSION] -Qt Webkit Version: [QT_WEBKIT_VERSION] -Voice Server Version: [VOICE_VERSION] +libcurl 版本: [LIBCURL_VERSION] +J2C 解碼器版本: [J2C_VERSION] +音效驅動程式版本: [AUDIO_DRIVER_VERSION] +Qt Webkit 版本: [QT_WEBKIT_VERSION] +語音伺服器版本: [VOICE_VERSION] </floater.string> <floater.string name="none"> (無) diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml index a9142b22ad..efd8909e67 100644 --- a/indra/newview/skins/default/xui/zh/floater_about_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml @@ -81,7 +81,7 @@ 分級: </text> <text name="ContentRatingText"> - Adult + 成人 </text> <text name="Owner:"> 擁有者: @@ -186,7 +186,7 @@ 分級: </text> <text name="region_maturity_text"> - Adult + 成人 </text> <text name="resellable_lbl"> Resale: @@ -289,7 +289,7 @@ Only large parcels can be listed in search. Moderate Content </panel.string> <panel.string name="mature_check_adult"> - Adult Content + 成人內容 </panel.string> <panel.string name="mature_check_mature_tooltip"> Your parcel information or content is considered moderate. @@ -307,35 +307,35 @@ Only large parcels can be listed in search. 禁止推撞(地區設定覆蓋) </panel.string> <text name="allow_label"> - Allow other Residents to: + 允許其他居民去: </text> - <check_box label="Edit Terrain" name="edit land check" tool_tip="If checked, anyone can terraform your land. It is best to leave this unchecked, as you can always edit your own land."/> - <check_box label="飛行" name="check fly" tool_tip="If checked, Residents can fly on your land. If unchecked, they can only fly into and over your land."/> + <check_box label="編輯地形" name="edit land check" tool_tip="若勾選則任何人將可以變形你的土地,最好是保持未勾選,因為你隨時可以編輯變更你的土地。"/> + <check_box label="飛行" name="check fly" tool_tip="逤勾選則居民可以在你飛行,不然就只能由外面飛入或飛越你的土地。"/> <text name="allow_label2"> 建造: </text> <check_box label="任何人" name="edit objects check"/> <check_box label="社團" name="edit group objects check"/> <text name="allow_label3"> - Object Entry: + 物件進入: </text> <check_box label="任何人" name="all object entry check"/> <check_box label="社團" name="group object entry check"/> <text name="allow_label4"> - Run Scripts: + 執行腳本: </text> <check_box label="任何人" name="check other scripts"/> <check_box label="社團" name="check group scripts"/> <text name="land_options_label"> - Land Options: + 土地選項: </text> - <check_box label="安全(無傷害)" name="check safe" tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled."/> - <check_box label="禁止推撞" name="PushRestrictCheck" tool_tip="Prevents scripts from pushing. Checking this option may be useful for preventing disruptive behavior on your land."/> + <check_box label="安全(無傷害)" name="check safe" tool_tip="若勾選則設應土地為安全的,傷害性的戰鬥將被關閉。清除勾選後才能進行傷害性的戰鬥。"/> + <check_box label="禁止推撞" name="PushRestrictCheck" tool_tip="防止使用腳本推撞。勾選這個選項將可以有效防止你土地上的破壞行為。"/> <check_box label="將地點刊登顯示在搜尋中(L$30 / 每週)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> <combo_box name="land category with adult"> <combo_box.item label="任何類別" name="item0"/> <combo_box.item label="Linden Location" name="item1"/> - <combo_box.item label="Adult" name="item2"/> + <combo_box.item label="成人" name="item2"/> <combo_box.item label="Arts & Culture" name="item3"/> <combo_box.item label="Business" name="item4"/> <combo_box.item label="Educational" name="item5"/> @@ -467,7 +467,7 @@ Only large parcels can be listed in search. </panel> <panel name="Banned_layout_panel"> <text label="Ban" name="BanCheck"> - Banned Residents + 被封鎖的居民 </text> <name_list name="BannedList" tool_tip="([LISTED] listed, [MAX] max)"/> <button label="添加" name="add_banned"/> diff --git a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml index b4d7f71eec..b5d65119f7 100644 --- a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml @@ -9,7 +9,7 @@ Maximum animation length is [MAX_LENGTH] seconds. </floater.string> <floater.string name="failed_file_read"> - Unable to read animation file. + 無法讀取動作檔。 [STATUS] </floater.string> @@ -23,7 +23,7 @@ Maximum animation length is [MAX_LENGTH] seconds. Cannot read constraint definition. </floater.string> <floater.string name="E_ST_NO_FILE"> - Cannot open BVH file. + 無法開啟 BVH 檔案。 </floater.string> <floater.string name="E_ST_NO_HIER"> Invalid HIERARCHY header. @@ -115,7 +115,7 @@ Maximum animation length is [MAX_LENGTH] seconds. <text name="description_label"> 描述: </text> - <spinner label="Priority" name="priority" tool_tip="Controls which other animations can be overridden by this animation"/> + <spinner label="優先度" name="priority" tool_tip="Controls which other animations can be overridden by this animation"/> <check_box label="Loop" name="loop_check" tool_tip="Makes this animation loop"/> <spinner label="In(%)" name="loop_in_point" tool_tip="Sets point in animation that looping returns to"/> <spinner label="Out(%)" name="loop_out_point" tool_tip="Sets point in animation that ends a loop"/> diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml index 90fd7c029e..27a4199f8c 100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml @@ -29,18 +29,18 @@ <columns label="使用者名稱" name="username"/> </scroll_list> </panel> - <panel label="Friends" name="FriendsPanel"> + <panel label="朋友" name="FriendsPanel"> <text name="InstructSelectFriend"> 選擇一個人: </text> </panel> <panel label="接近我" name="NearMePanel"> <text name="InstructSelectResident"> - Select a person nearby: + 選擇一位附近的人: </text> - <slider label="Range" name="near_me_range"/> + <slider label="範圍" name="near_me_range"/> <text name="meters"> - Meters + 公尺 </text> <scroll_list name="NearMe"> <columns label="名稱" name="name"/> diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml index fb17c0bb8a..b1dc081f04 100644 --- a/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/zh/floater_avatar_textures.xml @@ -15,13 +15,13 @@ Textures </text> <button label="Dump IDs to Console" label_selected="Dump" name="Dump"/> <panel name="scroll_content_panel"> - <texture_picker label="Hair" name="hair-baked"/> - <texture_picker label="Hair" name="hair_grain"/> + <texture_picker label="頭髮" name="hair-baked"/> + <texture_picker label="頭髮" name="hair_grain"/> <texture_picker label="Hair Alpha" name="hair_alpha"/> - <texture_picker label="Head" name="head-baked"/> + <texture_picker label="頭部" name="head-baked"/> <texture_picker label="Makeup" name="head_bodypaint"/> <texture_picker label="Head Alpha" name="head_alpha"/> - <texture_picker label="Head Tattoo" name="head_tattoo"/> + <texture_picker label="頭部刺青" name="head_tattoo"/> <texture_picker label="眼睛" name="eyes-baked"/> <texture_picker label="眼睛" name="eyes_iris"/> <texture_picker label="Eyes Alpha" name="eyes_alpha"/> diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml index 0c4514600f..d8e9fb0ecc 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml @@ -40,7 +40,7 @@ [ACTION] </text> <text name="total_label"> - My new balance will be + 我的帳戶餘額將為 </text> <text name="total_amount"> L$ [AMT] diff --git a/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/indra/newview/skins/default/xui/zh/floater_buy_land.xml index 023c531692..34401c11d0 100644 --- a/indra/newview/skins/default/xui/zh/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_buy_land.xml @@ -68,7 +68,7 @@ Try selecting a smaller area. none needed </floater.string> <floater.string name="must_upgrade"> - Your account must be upgraded to own land. + 你的帳戶必須要升級才能擁有土地。 </floater.string> <floater.string name="cant_own_land"> 你的帳戶能擁有土地。 @@ -83,7 +83,7 @@ Try selecting a smaller area. Buy L$ [AMOUNT] for approx. [LOCAL_AMOUNT], </floater.string> <floater.string name="parcel_meters"> - This parcel is [AMOUNT] m² + 這個地段為 [AMOUNT] m² </floater.string> <floater.string name="premium_land"> This land is premium, and will charge as [AMOUNT] m². @@ -122,7 +122,7 @@ supports [AMOUNT2] objects You need to buy at least L$ [AMOUNT] to afford this land. </floater.string> <floater.string name="no_parcel_selected"> - (no parcel selected) + (無地段被選擇) </floater.string> <text name="region_name_label"> 地區: diff --git a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml index 8adc094fca..28d2ba6ed4 100644 --- a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml @@ -86,7 +86,7 @@ 預覽: </text> <button label="Play" label_selected="Play" name="WLAnimSky"/> - <button label="Stop!" label_selected="Stop" name="WLStopAnimSky"/> + <button label="停止!" label_selected="停止" name="WLStopAnimSky"/> <button label="Use Estate Time" label_selected="Go to Estate Time" name="WLUseLindenTime"/> <button label="Save Test Day" label_selected="Save Test Day" name="WLSaveDayCycle"/> <button label="Load Test Day" label_selected="Load Test Day" name="WLLoadDayCycle"/> diff --git a/indra/newview/skins/default/xui/zh/floater_gesture.xml b/indra/newview/skins/default/xui/zh/floater_gesture.xml index 2dcb46fb77..651a976774 100644 --- a/indra/newview/skins/default/xui/zh/floater_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_gesture.xml @@ -16,11 +16,11 @@ </scroll_list> <panel label="bottom_panel" name="bottom_panel"> <menu_button name="gear_btn" tool_tip="更多選項"/> - <button name="new_gesture_btn" tool_tip="Make new gesture"/> + <button name="new_gesture_btn" tool_tip="製作新姿勢e"/> <button name="activate_btn" tool_tip="Activate/Deactivate selected gesture"/> - <button name="del_btn" tool_tip="Delete this gesture"/> + <button name="del_btn" tool_tip="刪除這個姿勢"/> </panel> <button label="編輯" name="edit_btn"/> - <button label="Play" name="play_btn"/> - <button label="Stop" name="stop_btn"/> + <button label="播放" name="play_btn"/> + <button label="停止" name="stop_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_god_tools.xml b/indra/newview/skins/default/xui/zh/floater_god_tools.xml index 86403494e0..fbe89ab2a6 100644 --- a/indra/newview/skins/default/xui/zh/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_god_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="godtools floater" title="GOD TOOLS"> +<floater name="godtools floater" title="神之工具"> <tab_container name="GodTools Tabs"> <panel label="網格" name="grid"> <button label="Flush This Region's Map Visibility Caches" label_selected="Flush This Region's Map Visibility Caches" name="Flush This Region's Map Visibility Caches"/> diff --git a/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/indra/newview/skins/default/xui/zh/floater_image_preview.xml index 7eef0177ef..d7e9a7704c 100644 --- a/indra/newview/skins/default/xui/zh/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/zh/floater_image_preview.xml @@ -11,7 +11,7 @@ </text> <combo_box label="服裝類型" name="clothing_type_combo"> <item label="圖像" name="Image" value="圖像"/> - <item label="Hair" name="Hair" value="Hair"/> + <item label="頭髮" name="Hair" value="頭髮"/> <item label="Female Head" name="FemaleHead" value="Female Head"/> <item label="Female Upper Body" name="FemaleUpperBody" value="Female Upper Body"/> <item label="Female Lower Body" name="FemaleLowerBody" value="Female Lower Body"/> diff --git a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml index 4f678dbd9d..123cdd9f2c 100644 --- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml @@ -4,10 +4,10 @@ 5 </floater.string> <floater.string name="localchat"> - Nearby Voice Chat + 附近的音聊天 </floater.string> <floater.string name="anonymous"> - anonymous + 匿名 </floater.string> <floater.string name="VoiceInviteP2P"> 通話中。 @@ -28,6 +28,6 @@ Do you want to leave [CURRENT_CHAT] and join this voice chat? </text> <button label="接受" label_selected="接受" name="Accept"/> - <button label="Reject" label_selected="Reject" name="Reject"/> + <button label="拒絕" label_selected="拒絕" name="Reject"/> <button label="開始 IM" name="Start IM"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml index a442eb9cbc..a4ede92ab1 100644 --- a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Inventory Finder" title="最近_收納區_物品"> - <check_box label="Animation" name="check_animation"/> + <check_box label="動作" name="check_animation"/> <check_box label="Calling Cards" name="check_calling_card"/> <check_box label="服裝" name="check_clothing"/> <check_box label="姿勢" name="check_gesture"/> <check_box label="地標" name="check_landmark"/> <check_box label="Notecards" name="check_notecard"/> <check_box label="Objects" name="check_object"/> - <check_box label="Scripts" name="check_script"/> + <check_box label="腳本" name="check_script"/> <check_box label="Sounds" name="check_sound"/> <check_box label="材質" name="check_texture"/> <check_box label="Snapshots" name="check_snapshot"/> diff --git a/indra/newview/skins/default/xui/zh/floater_media_browser.xml b/indra/newview/skins/default/xui/zh/floater_media_browser.xml index 616c326d6b..6e75016fad 100644 --- a/indra/newview/skins/default/xui/zh/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/zh/floater_media_browser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="MEDIA BROWSER"> +<floater name="floater_about" title="媒體劉覽器"> <floater.string name="home_page_url"> http://www.secondlife.com </floater.string> @@ -8,22 +8,22 @@ </floater.string> <layout_stack name="stack1"> <layout_panel name="nav_controls"> - <button label="Back" name="back"/> - <button label="Forward" name="forward"/> - <button label="Reload" name="reload"/> + <button label="向後" name="back"/> + <button label="向前" name="forward"/> + <button label="重載" name="reload"/> <button label="Go" name="go"/> </layout_panel> <layout_panel name="time_controls"> <button label="rewind" name="rewind"/> - <button label="stop" name="stop"/> - <button label="forward" name="seek"/> + <button label="停止" name="stop"/> + <button label="向前" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="Send Current Page to Parcel" name="assign"/> + <button label="送出目前頁面到地段" name="assign"/> </layout_panel> <layout_panel name="external_controls"> - <button label="Open in My Web Browser" name="open_browser"/> - <check_box label="Always open in my web browser" name="open_always"/> + <button label="在我的網頁瀏覽器中開啟" name="open_browser"/> + <check_box label="總是在我的網頁瀏覽器中開啟" name="open_always"/> <button label="關閉" name="close"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml b/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml index 3fa62b1b60..93c1b58df6 100644 --- a/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/zh/floater_mem_leaking.xml @@ -12,7 +12,7 @@ [NOTE2] </text> <button label="Start" name="start_btn"/> - <button label="Stop" name="stop_btn"/> + <button label="停止" name="stop_btn"/> <button label="Release" name="release_btn"/> <button label="關閉" name="close_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml b/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml index bed7c20ba5..f0c34acb06 100644 --- a/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="nearby_chat" title="NEARBY CHAT"> +<floater name="nearby_chat" title="附近的聊天"> <check_box label="Translate chat (powered by Google)" name="translate_chat_checkbox"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay.xml b/indra/newview/skins/default/xui/zh/floater_pay.xml index eeaaf0ab7d..b4841df0ff 100644 --- a/indra/newview/skins/default/xui/zh/floater_pay.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> <string name="payee_group"> - Pay Group + 支付社團 </string> <string name="payee_resident"> - Pay Resident + 支付居民 </string> <text name="payee_name"> Test Name That Is Extremely Long To Check Clipping @@ -14,8 +14,8 @@ <button label="L$10" label_selected="L$10" name="fastpay 10"/> <button label="L$20" label_selected="L$20" name="fastpay 20"/> <text name="amount text"> - Or, choose amount: + 或,選擇一個金額: </text> - <button label="Pay" label_selected="Pay" name="pay btn"/> + <button label="支付" label_selected="支付" name="pay btn"/> <button label="取消" label_selected="取消" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_pay_object.xml b/indra/newview/skins/default/xui/zh/floater_pay_object.xml index 234aa9f7af..2a2aec93b9 100644 --- a/indra/newview/skins/default/xui/zh/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/zh/floater_pay_object.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money"> <string name="payee_group"> - Pay Group + 支付社團 </string> <string name="payee_resident"> - Pay Resident + 支付居民 </string> <text name="payee_name"> Ericacita Moostopolison </text> <text name="object_name_label"> - Via object: + 經由物件: </text> <icon name="icon_object" tool_tip="物件"/> <text name="object_name_text"> @@ -23,6 +23,6 @@ <text name="amount text"> 或者,選擇一個金額: </text> - <button label="Pay" label_selected="Pay" name="pay btn"/> + <button label="支付" label_selected="支付" name="pay btn"/> <button label="取消" label_selected="取消" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml index 5ac2de4dc5..ead8dc49a6 100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_anim"> <floater.string name="Title"> - Animation: [NAME] + 動作: [NAME] </floater.string> <text name="desc txt"> 描述: </text> - <button label="Play Inworld" label_selected="Stop" name="Anim play btn" tool_tip="Play this animation so that others can see it"/> - <button label="Play Locally" label_selected="Stop" name="Anim audition btn" tool_tip="Play this animation so that only you can see it"/> + <button label="Play Inworld" label_selected="停止" name="Anim play btn" tool_tip="Play this animation so that others can see it"/> + <button label="Play Locally" label_selected="停止" name="Anim audition btn" tool_tip="Play this animation so that only you can see it"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml index 52e6a9d8e4..0649ecb791 100644 --- a/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml @@ -13,7 +13,7 @@ Wait: </floater.string> <floater.string name="stop_txt"> - Stop + 停止 </floater.string> <floater.string name="preview_txt"> 預覽 @@ -43,10 +43,10 @@ Library: </text> <scroll_list name="library_list"> - <scroll_list.rows name="action_animation" value="Animation"/> - <scroll_list.rows name="action_sound" value="Sound"/> + <scroll_list.rows name="action_animation" value="動作"/> + <scroll_list.rows name="action_sound" value="聲音"/> <scroll_list.rows name="action_chat" value="聊天"/> - <scroll_list.rows name="action_wait" value="Wait"/> + <scroll_list.rows name="action_wait" value="等待"/> </scroll_list> <button label="Add >>" name="add_btn"/> <text name="steps_label"> @@ -59,10 +59,10 @@ (選項) </text> <radio_group name="animation_trigger_type"> - <radio_item label="Start" name="start"/> - <radio_item label="Stop" name="stop"/> + <radio_item label="開始" name="start"/> + <radio_item label="停止" name="stop"/> </radio_group> - <check_box label="until animations are done" name="wait_anim_check"/> + <check_box label="直到動作結束。" name="wait_anim_check"/> <check_box label="time in seconds:" name="wait_time_check"/> <text name="help_label"> All steps happen simultaneously, unless you add wait steps. diff --git a/indra/newview/skins/default/xui/zh/floater_script_debug.xml b/indra/newview/skins/default/xui/zh/floater_script_debug.xml index 12e646785d..5b3500c018 100644 --- a/indra/newview/skins/default/xui/zh/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/zh/floater_script_debug.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="script debug floater" title="Script Warning/Error"/> +<multi_floater name="script debug floater" title="腳本 警告/錯誤"/> diff --git a/indra/newview/skins/default/xui/zh/floater_sell_land.xml b/indra/newview/skins/default/xui/zh/floater_sell_land.xml index b6a929caeb..19580c99a1 100644 --- a/indra/newview/skins/default/xui/zh/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/zh/floater_sell_land.xml @@ -41,7 +41,7 @@ <combo_box name="sell_to"> <combo_box.item label="- 選擇一個 -" name="--selectone--"/> <combo_box.item label="任何人" name="Anyone"/> - <combo_box.item label="Specific person:" name="Specificuser:"/> + <combo_box.item label="指定人:" name="Specificuser:"/> </combo_box> <button label="選擇" name="sell_to_select_agent"/> <text name="sell_objects_label"> diff --git a/indra/newview/skins/default/xui/zh/floater_snapshot.xml b/indra/newview/skins/default/xui/zh/floater_snapshot.xml index c9a66c1644..9edc19969f 100644 --- a/indra/newview/skins/default/xui/zh/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/zh/floater_snapshot.xml @@ -11,7 +11,7 @@ <text name="file_size_label"> [SIZE] KB </text> - <button label="Send" name="send_btn"/> + <button label="送出" name="send_btn"/> <button label="儲存(L$[AMOUNT])" name="upload_btn"/> <flyout_button label="儲存" name="save_btn" tool_tip="儲存圖像到檔案"> <flyout_button.item label="儲存" name="save_item"/> diff --git a/indra/newview/skins/default/xui/zh/floater_stats.xml b/indra/newview/skins/default/xui/zh/floater_stats.xml index 54c5ba5cc0..eebd5df3f7 100644 --- a/indra/newview/skins/default/xui/zh/floater_stats.xml +++ b/indra/newview/skins/default/xui/zh/floater_stats.xml @@ -1,53 +1,53 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Statistics" title="STATISTICS"> +<floater name="Statistics" title="統計"> <scroll_container name="statistics_scroll"> <container_view name="statistics_view"> - <stat_view label="Basic" name="basic"> + <stat_view label="基本" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Bandwidth" name="bandwidth"/> + <stat_bar label="頻寬" name="bandwidth"/> <stat_bar label="封包損失" name="packet_loss"/> <stat_bar label="Ping Sim" name="ping"/> </stat_view> - <stat_view label="Advanced" name="advanced"> + <stat_view label="進階" name="advanced"> <stat_view label="Render" name="render"> <stat_bar label="KTris Drawn" name="ktrisframe"/> <stat_bar label="KTris Drawn" name="ktrissec"/> - <stat_bar label="Total Objects" name="objs"/> - <stat_bar label="New Objects" name="newobjs"/> + <stat_bar label="物件總計" name="objs"/> + <stat_bar label="新物件" name="newobjs"/> </stat_view> <stat_view label="材質" name="texture"> - <stat_bar label="Count" name="numimagesstat"/> + <stat_bar label="計數" name="numimagesstat"/> <stat_bar label="Raw Count" name="numrawimagesstat"/> <stat_bar label="GL Mem" name="gltexmemstat"/> <stat_bar label="Formatted Mem" name="formattedmemstat"/> <stat_bar label="Raw Mem" name="rawmemstat"/> <stat_bar label="Bound Mem" name="glboundmemstat"/> </stat_view> - <stat_view label="Network" name="network"> + <stat_view label="網路" name="network"> <stat_bar label="Packets In" name="packetsinstat"/> <stat_bar label="Packets Out" name="packetsoutstat"/> - <stat_bar label="Objects" name="objectkbitstat"/> + <stat_bar label="物件" name="objectkbitstat"/> <stat_bar label="材質" name="texturekbitstat"/> - <stat_bar label="Asset" name="assetkbitstat"/> + <stat_bar label="資產" name="assetkbitstat"/> <stat_bar label="Layers" name="layerskbitstat"/> <stat_bar label="Actual In" name="actualinkbitstat"/> <stat_bar label="Actual Out" name="actualoutkbitstat"/> <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/> </stat_view> </stat_view> - <stat_view label="Simulator" name="sim"> + <stat_view label="模擬器" name="sim"> <stat_bar label="Time Dilation" name="simtimedilation"/> <stat_bar label="Sim FPS" name="simfps"/> <stat_bar label="Physics FPS" name="simphysicsfps"/> <stat_view label="Physics Details" name="physicsdetail"> <stat_bar label="Pinned Objects" name="physicspinnedtasks"/> <stat_bar label="Low LOD Objects" name="physicslodtasks"/> - <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/> + <stat_bar label="記憶體配置" name="physicsmemoryallocated"/> </stat_view> <stat_bar label="Agent Updates/Sec" name="simagentups"/> <stat_bar label="Main Agents" name="simmainagents"/> <stat_bar label="Child Agents" name="simchildagents"/> - <stat_bar label="Objects" name="simobjects"/> + <stat_bar label="物件" name="simobjects"/> <stat_bar label="Active Objects" name="simactiveobjects"/> <stat_bar label="Active Scripts" name="simactivescripts"/> <stat_bar label="Script Events" name="simscripteps"/> @@ -63,7 +63,7 @@ <stat_bar label="Simulation Time" name="simsimothermsec"/> <stat_bar label="Agent Time" name="simagentmsec"/> <stat_bar label="Images Time" name="simimagesmsec"/> - <stat_bar label="Script Time" name="simscriptmsec"/> + <stat_bar label="腳本時間" name="simscriptmsec"/> </stat_view> </stat_view> </container_view> diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml index 7ba1a0d6c4..300d7ee63b 100644 --- a/indra/newview/skins/default/xui/zh/floater_tools.xml +++ b/indra/newview/skins/default/xui/zh/floater_tools.xml @@ -39,11 +39,11 @@ <floater.string name="grid_attachment_text"> Attachment </floater.string> - <button name="button focus" tool_tip="Focus"/> + <button name="button focus" tool_tip="聚焦"/> <button name="button move" tool_tip="移動"/> <button name="button edit" tool_tip="編輯"/> - <button name="button create" tool_tip="Create"/> - <button name="button land" tool_tip="Land"/> + <button name="button create" tool_tip="創造"/> + <button name="button land" tool_tip="土地"/> <text name="text status"> Drag to move, shift-drag to copy </text> @@ -61,17 +61,17 @@ <radio_group name="edit_radio_group"> <radio_item label="移動" name="radio position"/> <radio_item label="旋轉(Ctrl)" name="radio rotate"/> - <radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/> - <radio_item label="Select Face" name="radio select face"/> + <radio_item label="伸展(Ctrl+Shift)" name="radio stretch"/> + <radio_item label="選擇面" name="radio select face"/> </radio_group> - <check_box label="Edit linked" name="checkbox edit linked parts"/> - <button label="Link" name="link_btn"/> - <button label="Unlink" name="unlink_btn"/> + <check_box label="編輯聯結部分" name="checkbox edit linked parts"/> + <button label="聯結" name="link_btn"/> + <button label="取消聯結" name="unlink_btn"/> <text name="RenderingCost" tool_tip="Shows the rendering cost calculated for this object"> þ: [COUNT] </text> - <text label="Stretch Both Sides" name="checkbox uniform label"> - Stretch Both Sides + <text label="同時伸展兩側" name="checkbox uniform label"> + 同時伸展兩側 </text> <check_box initial_value="true" label="伸展材質" name="checkbox stretch textures"/> <check_box initial_value="true" label="貼齊格線" name="checkbox snap to grid"/> @@ -80,7 +80,7 @@ <combo_box.item label="Local grid" name="Local"/> <combo_box.item label="Reference grid" name="Reference"/> </combo_box> - <button name="Options..." tool_tip="See more grid options"/> + <button name="Options..." tool_tip="察看更多格線選項"/> <button name="ToolCube" tool_tip="Cube"/> <button name="ToolPrism" tool_tip="Prism"/> <button name="ToolPyramid" tool_tip="Pyramid"/> @@ -96,33 +96,33 @@ <button name="ToolRing" tool_tip="Ring"/> <button name="ToolTree" tool_tip="Tree"/> <button name="ToolGrass" tool_tip="Grass"/> - <check_box label="Keep Tool selected" name="checkbox sticky"/> - <check_box label="Copy selection" name="checkbox copy selection"/> + <check_box label="保持已選擇的工具" name="checkbox sticky"/> + <check_box label="覆製選擇" name="checkbox copy selection"/> <check_box initial_value="true" label="Center Copy" name="checkbox copy centers"/> <check_box label="Rotate Copy" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> - <radio_item label="Select Land" name="radio select land"/> - <radio_item label="Flatten" name="radio flatten"/> - <radio_item label="Raise" name="radio raise"/> - <radio_item label="Lower" name="radio lower"/> - <radio_item label="Smooth" name="radio smooth"/> - <radio_item label="Roughen" name="radio noise"/> - <radio_item label="Revert" name="radio revert"/> + <radio_item label="選擇土地" name="radio select land"/> + <radio_item label="攤平" name="radio flatten"/> + <radio_item label="提高" name="radio raise"/> + <radio_item label="降低" name="radio lower"/> + <radio_item label="平滑" name="radio smooth"/> + <radio_item label="粗糙" name="radio noise"/> + <radio_item label="還原" name="radio revert"/> </radio_group> <text name="Bulldozer:"> - Bulldozer: + 推土機: </text> <text name="Dozer Size:"> 尺寸 </text> <slider_bar initial_value="2.0" name="slider brush size"/> <text name="Strength:"> - Strength + 力道 </text> <slider_bar initial_value="0.00" name="slider force"/> - <button label="套用" label_selected="套用" name="button apply to selection" tool_tip="Modify selected land"/> + <button label="套用" label_selected="套用" name="button apply to selection" tool_tip="修改所選擇的土地"/> <text name="obj_count"> - Objects: [COUNT] + 物件: [COUNT] </text> <text name="prim_count"> Prims: [COUNT] @@ -136,19 +136,19 @@ Deed </panel.string> <panel.string name="text modify info 1"> - You can modify this object + 你能修改這個物件 </panel.string> <panel.string name="text modify info 2"> - You can modify these objects + 你能修改這些物件 </panel.string> <panel.string name="text modify info 3"> - You can't modify this object + 你不能修改這個物件 </panel.string> <panel.string name="text modify info 4"> - You can't modify these objects + 你不能修改這些物件 </panel.string> <panel.string name="text modify warning"> - You must select entire object to set permissions + 你必須選取整個物件以設定權限 </panel.string> <panel.string name="Cost Default"> 價格: L$ @@ -157,7 +157,7 @@ 總價: L$ </panel.string> <panel.string name="Cost Per Unit"> - Price Per: L$ + 單價每個: L$ </panel.string> <panel.string name="Cost Mixed"> Mixed Price @@ -181,19 +181,19 @@ 社團: </text> <name_box initial_value="載入中..." name="Group Name Proxy"/> - <button name="button set group" tool_tip="Choose a group to share this object's permissions"/> + <button name="button set group" tool_tip="選擇一個社團以分享這物件權限"/> <check_box label="分享" name="checkbox share with group" tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."/> <button label="Deed" label_selected="Deed" name="button deed" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."/> <text name="label click action"> - Click to: + 點擊以: </text> <combo_box name="clickaction"> - <combo_box.item label="Touch (default)" name="Touch/grab(default)"/> - <combo_box.item label="Sit on object" name="Sitonobject"/> - <combo_box.item label="Buy object" name="Buyobject"/> - <combo_box.item label="Pay object" name="Payobject"/> - <combo_box.item label="Open" name="Open"/> - <combo_box.item label="Zoom" name="Zoom"/> + <combo_box.item label="觸碰(預設)" name="Touch/grab(default)"/> + <combo_box.item label="坐在物件上" name="Sitonobject"/> + <combo_box.item label="購買物件" name="Buyobject"/> + <combo_box.item label="支付物件" name="Payobject"/> + <combo_box.item label="開啟" name="Open"/> + <combo_box.item label="縮放" name="Zoom"/> </combo_box> <check_box label="出售:" name="checkbox for sale"/> <combo_box name="sale type"> @@ -202,7 +202,7 @@ <combo_box.item label="原件" name="Original"/> </combo_box> <spinner label="價格: L$" name="Edit Cost"/> - <check_box label="顯示在搜尋中" name="search_check" tool_tip="Let people see this object in search results"/> + <check_box label="顯示在搜尋中" name="search_check" tool_tip="讓其他人可以在搜尋結果中看到這物件"/> <panel name="perms_build"> <text name="perm_modify"> 你可以修改這個物件 @@ -238,13 +238,13 @@ </text> </panel> </panel> - <panel label="Object" name="Object"> - <check_box label="鎖定" name="checkbox locked" tool_tip="Prevents object from being moved or deleted. Frequently useful during building to avoid unintended edits."/> - <check_box label="物理性" name="Physical Checkbox Ctrl" tool_tip="Allows object to be pushed and affected by gravity"/> - <check_box label="暫時性" name="Temporary Checkbox Ctrl" tool_tip="Causes object to be deleted 1 minute after creation"/> - <check_box label="幻影性" name="Phantom Checkbox Ctrl" tool_tip="Causes object to not collide with other objects or avatars"/> + <panel label="物件" name="Object"> + <check_box label="鎖定" name="checkbox locked" tool_tip="預防物件被移動或刪除,最常使用的狀況是在建造過程中避免被意外的編輯。"/> + <check_box label="物理性" name="Physical Checkbox Ctrl" tool_tip="允許物件被推撞與受重力影響"/> + <check_box label="暫時性" name="Temporary Checkbox Ctrl" tool_tip="使物件在建造後的一分鐘自動刪除"/> + <check_box label="幻影性" name="Phantom Checkbox Ctrl" tool_tip="使物件不會與其他物件或化身產生碰撞"/> <text name="label position"> - Position (meters) + 位置(公尺) </text> <spinner label="X" name="Pos X"/> <spinner label="Y" name="Pos Y"/> @@ -256,7 +256,7 @@ <spinner label="Y" name="Scale Y"/> <spinner label="Z" name="Scale Z"/> <text name="label rotation"> - Rotation (degrees) + 旋轉(角度) </text> <spinner label="X" name="Rot X"/> <spinner label="Y" name="Rot Y"/> @@ -273,12 +273,12 @@ </combo_box> <combo_box name="material"> <combo_box.item label="Stone" name="Stone"/> - <combo_box.item label="Metal" name="Metal"/> - <combo_box.item label="Glass" name="Glass"/> - <combo_box.item label="Wood" name="Wood"/> - <combo_box.item label="Flesh" name="Flesh"/> - <combo_box.item label="Plastic" name="Plastic"/> - <combo_box.item label="Rubber" name="Rubber"/> + <combo_box.item label="金屬" name="Metal"/> + <combo_box.item label="玻璃" name="Glass"/> + <combo_box.item label="木頭" name="Wood"/> + <combo_box.item label="肌肉" name="Flesh"/> + <combo_box.item label="塑膠" name="Plastic"/> + <combo_box.item label="橡膠" name="Rubber"/> </combo_box> <text name="text cut"> Path Cut (begin/end) @@ -286,13 +286,13 @@ <spinner label="B" name="cut begin"/> <spinner label="E" name="cut end"/> <text name="text hollow"> - Hollow + 中空 </text> <text name="text skew"> Skew </text> <text name="Hollow Shape"> - Hollow Shape + 中空形狀 </text> <combo_box name="hole"> <combo_box.item label="預設" name="Default"/> @@ -354,12 +354,12 @@ <combo_box.item label="Cylinder" name="Cylinder"/> </combo_box> </panel> - <panel label="Features" name="Features"> + <panel label="特性" name="Features"> <text name="select_single"> Select only one primitive to edit features. </text> <text name="edit_object"> - Edit object features: + 編輯物件特性: </text> <check_box label="Flexible Path" name="Flexible1D Checkbox Ctrl" tool_tip="Allows object to flex about the Z axis (Client-side only)"/> <spinner label="Softness" name="FlexNumSections"/> @@ -371,7 +371,7 @@ <spinner label="Force Y" name="FlexForceY"/> <spinner label="Force Z" name="FlexForceZ"/> <check_box label="Light" name="Light Checkbox Ctrl" tool_tip="Causes object to emit light"/> - <color_swatch name="colorswatch" tool_tip="Click to open color picker"/> + <color_swatch name="colorswatch" tool_tip="點擊以開啟顏色挑選器"/> <texture_picker label="" name="light texture control" tool_tip="Click to choose a projection image (only has effect with deferred rendering enabled)"/> <spinner label="Intensity" name="Light Intensity"/> <spinner label="FOV" name="Light FOV"/> @@ -382,38 +382,38 @@ </panel> <panel label="材質" name="Texture"> <panel.string name="string repeats per meter"> - Repeats Per Meter + 每公尺重覆次數 </panel.string> <panel.string name="string repeats per face"> - Repeats Per Face + 每一面重覆次數 </panel.string> <texture_picker label="材質" name="texture control" tool_tip="點擊以挑選圖片"/> - <color_swatch label="Color" name="colorswatch" tool_tip="Click to open color picker"/> + <color_swatch label="顏色" name="colorswatch" tool_tip="點擊以開啟顏色挑選器"/> <text name="color trans"> - Transparency % + 透明度 % </text> <text name="glow label"> - Glow + 光暈 </text> - <check_box label="Full Bright" name="checkbox fullbright"/> + <check_box label="全亮" name="checkbox fullbright"/> <text name="tex gen"> - Mapping + 映射方式 </text> <combo_box name="combobox texgen"> <combo_box.item label="預設" name="Default"/> - <combo_box.item label="Planar" name="Planar"/> + <combo_box.item label="平面" name="Planar"/> </combo_box> <text name="label shininess"> - Shininess + 光澤 </text> <combo_box name="combobox shininess"> <combo_box.item label="無" name="None"/> - <combo_box.item label="Low" name="Low"/> - <combo_box.item label="Medium" name="Medium"/> - <combo_box.item label="High" name="High"/> + <combo_box.item label="低" name="Low"/> + <combo_box.item label="中" name="Medium"/> + <combo_box.item label="高" name="High"/> </combo_box> <text name="label bumpiness"> - Bumpiness + 凹凸貼圖 </text> <combo_box name="combobox bumpiness"> <combo_box.item label="無" name="None"/> @@ -435,65 +435,65 @@ <combo_box.item label="suction" name="suction"/> <combo_box.item label="weave" name="weave"/> </combo_box> - <check_box initial_value="false" label="Align planar faces" name="checkbox planar align" tool_tip="Align textures on all selected faces with the last selected face. Requires Planar texture mapping."/> + <check_box initial_value="false" label="對齊平面" name="checkbox planar align" tool_tip="以最後所選擇的面為基準,對齊全部所選擇的面上的材質。這必須使用平面材質映射方式。"/> <text name="rpt"> - Repeats / Face - </text> - <spinner label="Horizontal (U)" name="TexScaleU"/> - <check_box label="Flip" name="checkbox flip s"/> - <spinner label="Vertical (V)" name="TexScaleV"/> - <check_box label="Flip" name="checkbox flip t"/> - <spinner label="Rotation˚" name="TexRot"/> - <spinner label="Repeats / Meter" name="rptctrl"/> + 重覆次數 / 面 + </text> + <spinner label="水平(U)" name="TexScaleU"/> + <check_box label="翻轉" name="checkbox flip s"/> + <spinner label="垂直(V)" name="TexScaleV"/> + <check_box label="翻轉" name="checkbox flip t"/> + <spinner label="旋轉˚" name="TexRot"/> + <spinner label="重覆次數 / 公尺" name="rptctrl"/> <button label="套用" label_selected="套用" name="button apply"/> <text name="tex offset"> 材質位移 </text> - <spinner label="Horizontal (U)" name="TexOffsetU"/> - <spinner label="Vertical (V)" name="TexOffsetV"/> + <spinner label="水平(U)" name="TexOffsetU"/> + <spinner label="垂直(V)" name="TexOffsetV"/> <panel name="Add_Media"> <text name="media_tex"> - Media + 媒體 </text> - <button name="add_media" tool_tip="Add Media"/> + <button name="add_media" tool_tip="添加媒體"/> <button name="delete_media" tool_tip="刪除這個媒體材質"/> - <button name="edit_media" tool_tip="Edit this Media"/> - <button label="Align" label_selected="Align Media" name="button align" tool_tip="Align media texture (must load first)"/> + <button name="edit_media" tool_tip="編輯這個媒體"/> + <button label="對齊" label_selected="對齊媒體" name="button align" tool_tip="對齊媒體材質(須先載入)"/> </panel> </panel> - <panel label="Content" name="Contents"> - <button label="New Script" label_selected="New Script" name="button new script"/> - <button label="Permissions" name="button permissions"/> + <panel label="內容" name="Contents"> + <button label="新腳本" label_selected="新腳本" name="button new script"/> + <button label="權限" name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> <text name="label_parcel_info"> - Parcel Information + 地段資訊 </text> <text name="label_area_price"> - Price: L$[PRICE] for [AREA] m² + 價格: L$[PRICE] 購買 [AREA] m² </text> <text name="label_area"> 面積: [AREA] m² </text> <button label="關於土地" label_selected="關於土地" name="button about land"/> - <check_box label="顯示擁有主" name="checkbox show owners" tool_tip="Colorize the parcels according to the type of owner: + <check_box label="顯示擁有者" name="checkbox show owners" tool_tip="Colorize the parcels according to the type of owner: -Green = Your land -Aqua = Your group's land -Red = Owned by others -Yellow = For sale -Purple = For auction -Grey = Public"/> +綠色 = 你的土地 +水藍 = 你社團的土地 +紅色 = 其他人所有 +黃色 = 出售 +紫色 = 拍賣 +灰色 = 公有地"/> <text name="label_parcel_modify"> - Modify Parcel + 修改地段 </text> - <button label="Subdivide" label_selected="Subdivide" name="button subdivide land"/> - <button label="Join" label_selected="Join" name="button join land"/> + <button label="分割" label_selected="分割" name="button subdivide land"/> + <button label="合併" label_selected="合併" name="button join land"/> <text name="label_parcel_trans"> - Land Transactions + 土地交易 </text> <button label="購買土地" label_selected="購買土地" name="button buy land"/> - <button label="Abandon Land" label_selected="Abandon Land" name="button abandon land"/> + <button label="放棄土地" label_selected="放棄土地" name="button abandon land"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_top_objects.xml b/indra/newview/skins/default/xui/zh/floater_top_objects.xml index c1ad927bbb..074a4a1881 100644 --- a/indra/newview/skins/default/xui/zh/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/zh/floater_top_objects.xml @@ -19,7 +19,7 @@ Top [COUNT] objects experiencing many potential collisions </floater.string> <floater.string name="colliders_score_label"> - Score + 積分 </floater.string> <floater.string name="none_descriptor"> None found. @@ -28,7 +28,7 @@ 載入中... </text> <scroll_list name="objects_list"> - <scroll_list.columns label="Score" name="score"/> + <scroll_list.columns label="積分" name="score"/> <scroll_list.columns label="名稱" name="name"/> <scroll_list.columns label="擁有者" name="owner"/> <scroll_list.columns label="位置" name="location"/> @@ -37,19 +37,19 @@ <scroll_list.columns label="URLs" name="URLs"/> </scroll_list> <text name="id_text"> - Object ID: + 物件 ID: </text> <button label="Show Beacon" name="show_beacon_btn"/> <text name="obj_name_text"> 物件名稱: </text> - <button label="Filter" name="filter_object_btn"/> + <button label="過濾器" name="filter_object_btn"/> <text name="owner_name_text"> 擁有者: </text> - <button label="Filter" name="filter_owner_btn"/> - <button label="Return Selected" name="return_selected_btn"/> + <button label="過濾器" name="filter_owner_btn"/> + <button label="退回所選擇的" name="return_selected_btn"/> <button label="全部退回" name="return_all_btn"/> - <button label="Disable Selected" name="disable_selected_btn"/> - <button label="Disable All" name="disable_all_btn"/> + <button label="關閉所選擇的" name="disable_selected_btn"/> + <button label="全部關閉" name="disable_all_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/floater_url_entry.xml b/indra/newview/skins/default/xui/zh/floater_url_entry.xml index 04945ac83b..65f6a9cb95 100644 --- a/indra/newview/skins/default/xui/zh/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/zh/floater_url_entry.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="url_entry"> <text name="media_label"> - Media URL: + 媒體 URL: </text> <button label="" name="ok_btn"/> <button label="取消" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml index e45c7c59ac..36efe20b65 100644 --- a/indra/newview/skins/default/xui/zh/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/zh/floater_voice_effect.xml @@ -19,7 +19,7 @@ Record a sample, then click on a voice to hear how it will sound. </text> <button label="Record" name="record_btn" tool_tip="Record a sample of your voice."/> - <button label="Stop" name="record_stop_btn"/> + <button label="停止" name="record_stop_btn"/> <text name="voice_morphing_link"> [[URL] Subscribe Now] </text> diff --git a/indra/newview/skins/default/xui/zh/floater_water.xml b/indra/newview/skins/default/xui/zh/floater_water.xml index fba0415967..5fb57272af 100644 --- a/indra/newview/skins/default/xui/zh/floater_water.xml +++ b/indra/newview/skins/default/xui/zh/floater_water.xml @@ -14,7 +14,7 @@ <text name="BHText"> Water Fog Color </text> - <color_swatch name="WaterFogColor" tool_tip="Click to open color picker"/> + <color_swatch name="WaterFogColor" tool_tip="點擊以開啟顏色挑選器"/> <text name="WaterFogDensText"> Fog Density Exponent </text> diff --git a/indra/newview/skins/default/xui/zh/floater_web_content.xml b/indra/newview/skins/default/xui/zh/floater_web_content.xml index 2670e223d3..a756498b81 100644 --- a/indra/newview/skins/default/xui/zh/floater_web_content.xml +++ b/indra/newview/skins/default/xui/zh/floater_web_content.xml @@ -4,9 +4,9 @@ <layout_panel name="nav_controls"> <button name="back" tool_tip="Navigate back"/> <button name="forward" tool_tip="Navigate forward"/> - <button name="stop" tool_tip="Stop navigation"/> + <button name="stop" tool_tip="停止導覽"/> <button name="reload" tool_tip="重載頁面"/> - <combo_box name="address" tool_tip="Enter URL here"/> + <combo_box name="address" tool_tip="在此輸入 URL 位置"/> <icon name="media_secure_lock_flag" tool_tip="Secured Browsing"/> <button name="popexternal" tool_tip="Open current URL in your desktop browser"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/zh/floater_window_size.xml b/indra/newview/skins/default/xui/zh/floater_window_size.xml index e47238482f..54b72afccc 100644 --- a/indra/newview/skins/default/xui/zh/floater_window_size.xml +++ b/indra/newview/skins/default/xui/zh/floater_window_size.xml @@ -6,7 +6,7 @@ <text name="windowsize_text"> 設定視窗尺寸大小: </text> - <combo_box name="window_size_combo" tool_tip="width x height"> + <combo_box name="window_size_combo" tool_tip="寬度 x 高度"> <combo_box.item label="1000 x 700 (預設)" name="item0"/> <combo_box.item label="1024 x 768" name="item1"/> <combo_box.item label="1280 x 720 (720p)" name="item2"/> diff --git a/indra/newview/skins/default/xui/zh/floater_world_map.xml b/indra/newview/skins/default/xui/zh/floater_world_map.xml index 47038e3b3d..552bb02582 100644 --- a/indra/newview/skins/default/xui/zh/floater_world_map.xml +++ b/indra/newview/skins/default/xui/zh/floater_world_map.xml @@ -11,7 +11,7 @@ Me </text> <text name="person_label"> - Person + 人 </text> <text name="infohub_label"> Infohub @@ -40,7 +40,7 @@ Moderate </text> <text name="events_adult_label"> - Adult + 成人 </text> </panel> <panel name="layout_panel_3"> diff --git a/indra/newview/skins/default/xui/zh/inspect_group.xml b/indra/newview/skins/default/xui/zh/inspect_group.xml index 01649496bc..3583976646 100644 --- a/indra/newview/skins/default/xui/zh/inspect_group.xml +++ b/indra/newview/skins/default/xui/zh/inspect_group.xml @@ -8,7 +8,7 @@ 私人社團 </string> <string name="FreeToJoin"> - Free to join + 免費加入 </string> <string name="CostToJoin"> L$[AMOUNT] to join @@ -26,7 +26,7 @@ Fear the moose! Fear it! And the mongoose too! <text name="group_cost"> L$123 to join </text> - <button label="Join" name="join_btn"/> - <button label="Leave" name="leave_btn"/> + <button label="加入" name="join_btn"/> + <button label="退出" name="leave_btn"/> <button label="察看檔案" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/zh/inspect_object.xml b/indra/newview/skins/default/xui/zh/inspect_object.xml index f1fe037087..58091b3aef 100644 --- a/indra/newview/skins/default/xui/zh/inspect_object.xml +++ b/indra/newview/skins/default/xui/zh/inspect_object.xml @@ -35,7 +35,7 @@ owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about http://www.superdupertest.com </text> <button label="購買" name="buy_btn"/> - <button label="Pay" name="pay_btn"/> + <button label="支付" name="pay_btn"/> <button label="取得副本" name="take_free_copy_btn"/> <button label="Touch" name="touch_btn"/> <button label="Sit" name="sit_btn"/> 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 cba82e7dce..a04d59bc81 100644 --- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml @@ -12,6 +12,6 @@ <menu_item_call label="踢出" name="Eject..."/> <menu_item_call label="材質除錯" name="Debug..."/> <menu_item_call label="Zoom In" name="Zoom In"/> - <menu_item_call label="Pay" name="Pay..."/> + <menu_item_call label="支付" name="Pay..."/> <menu_item_call label="物件檔案" name="Object Inspect"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml index 1da583b3d0..ef0986a13b 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml @@ -3,5 +3,5 @@ <menu_item_call label="察看檔案" name="Show Profile"/> <menu_item_call label="送出 IM..." name="Send IM"/> <menu_item_call label="加為朋友..." name="Add Friend"/> - <menu_item_call label="Remove Friend..." name="Remove Friend"/> + <menu_item_call label="移除朋友..." name="Remove Friend"/> </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 283367708b..acf98dfdfa 100644 --- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml @@ -12,5 +12,5 @@ <menu_item_call label="踢出" name="Eject..."/> <menu_item_call label="材質除錯" name="Debug..."/> <menu_item_call label="Zoom In" name="Zoom In"/> - <menu_item_call label="Pay" name="Pay..."/> + <menu_item_call label="支付" name="Pay..."/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml index 8e30a15562..e053eb2388 100644 --- a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml @@ -3,7 +3,7 @@ <menu_item_call label="Add/Remove from Favorites" name="activate"/> <menu_item_call label="覆製" name="copy_gesture"/> <menu_item_call label="貼上" name="paste"/> - <menu_item_call label="Copy UUID" name="copy_uuid"/> + <menu_item_call label="覆製 UUID" name="copy_uuid"/> <menu_item_call label="儲存到目前裝扮" name="save_to_outfit"/> <menu_item_call label="編輯" name="edit_gesture"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml index bae7cf3f05..0f14057c07 100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_avatar_gear.xml @@ -16,6 +16,6 @@ <menu_item_call label="材質除錯" name="debug"/> <menu_item_call label="Find On Map" name="find_on_map"/> <menu_item_call label="Zoom In" name="zoom_in"/> - <menu_item_call label="Pay" name="pay"/> + <menu_item_call label="支付" name="pay"/> <menu_item_call label="分享" name="share"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml index dab95fcadc..94ab82b8a9 100644 --- a/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_inspect_object_gear.xml @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="utf-8"?> <toggleable_menu name="Gear Menu"> - <menu_item_call label="Touch" name="touch"/> - <menu_item_call label="Sit" name="sit"/> + <menu_item_call label="觸碰" name="touch"/> + <menu_item_call label="坐下" name="sit"/> <menu_item_call label="Pay" name="pay"/> <menu_item_call label="購買" name="buy"/> - <menu_item_call label="Take" name="take"/> + <menu_item_call label="取得" name="take"/> <menu_item_call label="取得副本" name="take_copy"/> - <menu_item_call label="Open" name="open"/> + <menu_item_call label="開啟" name="open"/> <menu_item_call label="編輯" name="edit"/> - <menu_item_call label="Wear" name="wear"/> - <menu_item_call label="Add" name="add"/> + <menu_item_call label="穿上" name="wear"/> + <menu_item_call label="添加" name="add"/> <menu_item_call label="回報" name="report"/> <menu_item_call label="Block" name="block"/> <menu_item_call label="Zoom In" name="zoom_in"/> - <menu_item_call label="Remove" name="remove"/> + <menu_item_call label="移除" name="remove"/> <menu_item_call label="更多資訊" name="more_info"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml index fd8f73e4ea..a93e8be149 100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml @@ -28,17 +28,17 @@ <menu_item_call label="New Physics" name="New Physics"/> </menu> <menu label="新身體部位" name="New Body Parts"> - <menu_item_call label="New Shape" name="New Shape"/> - <menu_item_call label="New Skin" name="New Skin"/> - <menu_item_call label="New Hair" name="New Hair"/> - <menu_item_call label="New Eyes" name="New Eyes"/> + <menu_item_call label="新體形" name="New Shape"/> + <menu_item_call label="新皮膚" name="New Skin"/> + <menu_item_call label="新頭髮" name="New Hair"/> + <menu_item_call label="新眼睛" name="New Eyes"/> </menu> - <menu label="Change Type" name="Change Type"> + <menu label="變更類型" name="Change Type"> <menu_item_call label="預設" name="Default"/> <menu_item_call label="手套" name="Gloves"/> <menu_item_call label="夾克" name="Jacket"/> <menu_item_call label="褲子" name="Pants"/> - <menu_item_call label="Shape" name="Shape"/> + <menu_item_call label="體形" name="Shape"/> <menu_item_call label="鞋子" name="Shoes"/> <menu_item_call label="襯衫" name="Shirt"/> <menu_item_call label="裙子" name="Skirt"/> @@ -46,19 +46,19 @@ <menu_item_call label="內衣" name="Undershirt"/> </menu> <menu_item_call label="瞬間傳送" name="Landmark Open"/> - <menu_item_call label="Open" name="Animation Open"/> - <menu_item_call label="Open" name="Sound Open"/> + <menu_item_call label="開啟" name="Animation Open"/> + <menu_item_call label="開啟" name="Sound Open"/> <menu_item_call label="取代目前的裝扮" name="Replace Outfit"/> <menu_item_call label="添加到目前裝扮" name="Add To Outfit"/> <menu_item_call label="由目前的裝扮移除" name="Remove From Outfit"/> <menu_item_call label="Find Original" name="Find Original"/> <menu_item_call label="Purge Item" name="Purge Item"/> <menu_item_call label="Restore Item" name="Restore Item"/> - <menu_item_call label="Open" name="Open"/> + <menu_item_call label="開啟" name="Open"/> <menu_item_call label="Open Original" name="Open Original"/> <menu_item_call label="Properties" name="Properties"/> <menu_item_call label="更名" name="Rename"/> - <menu_item_call label="Copy Asset UUID" name="Copy Asset UUID"/> + <menu_item_call label="覆製資產 UUID" name="Copy Asset UUID"/> <menu_item_call label="覆製" name="Copy"/> <menu_item_call label="貼上" name="Paste"/> <menu_item_call label="Paste As Link" name="Paste As Link"/> @@ -66,11 +66,11 @@ <menu_item_call label="刪除" name="Delete"/> <menu_item_call label="刪除系統資料夾" name="Delete System Folder"/> <menu_item_call label="Start Conference Chat" name="Conference Chat Folder"/> - <menu_item_call label="Play" name="Sound Play"/> + <menu_item_call label="播放" name="Sound Play"/> <menu_item_call label="添加地標" name="About Landmark"/> <menu_item_call label="Play Inworld" name="Animation Play"/> <menu_item_call label="Play Locally" name="Animation Audition"/> - <menu_item_call label="Send Instant Message" name="Send Instant Message"/> + <menu_item_call label="送出即時訊息" name="Send Instant Message"/> <menu_item_call label="Offer Teleport..." name="Offer Teleport..."/> <menu_item_call label="Start Conference Chat" name="Conference Chat"/> <menu_item_call label="Activate" name="Activate"/> diff --git a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml index 8c938222e7..f51b27d9ce 100644 --- a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml @@ -3,12 +3,12 @@ <menu_item_call label="新收納區視窗" name="new_window"/> <menu_item_check label="依名稱排序" name="sort_by_name"/> <menu_item_check label="依最近排序" name="sort_by_recent"/> - <menu_item_check label="Sort Folders Always by Name" name="sort_folders_by_name"/> - <menu_item_check label="Sort System Folders to Top" name="sort_system_folders_to_top"/> - <menu_item_call label="Show Filters" name="show_filters"/> + <menu_item_check label="總是由名稱排序資料夾" name="sort_folders_by_name"/> + <menu_item_check label="系統資料夾排序到最上方" name="sort_system_folders_to_top"/> + <menu_item_call label="顯示過濾器" name="show_filters"/> <menu_item_call label="Reset Filters" name="reset_filters"/> <menu_item_call label="關閉全部資料夾" name="close_folders"/> - <menu_item_call label="Empty Lost and Found" name="empty_lostnfound"/> + <menu_item_call label="清空 Lost and Found" name="empty_lostnfound"/> <menu_item_call label="儲存材質為" name="Save Texture As"/> <menu_item_call label="分享" name="Share"/> <menu_item_call label="Find Original" name="Find Original"/> diff --git a/indra/newview/skins/default/xui/zh/menu_landmark.xml b/indra/newview/skins/default/xui/zh/menu_landmark.xml index 5f7657db79..7372b223cf 100644 --- a/indra/newview/skins/default/xui/zh/menu_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_landmark.xml @@ -2,6 +2,6 @@ <toggleable_menu name="landmark_overflow_menu"> <menu_item_call label="覆製 SLurl" name="copy"/> <menu_item_call label="刪除" name="delete"/> - <menu_item_call label="Create Pick" name="pick"/> + <menu_item_call label="建立精選地點" name="pick"/> <menu_item_call label="添加到最愛列" name="add_to_favbar"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml index 27a0baf560..d6bf34c66e 100644 --- a/indra/newview/skins/default/xui/zh/menu_login.xml +++ b/indra/newview/skins/default/xui/zh/menu_login.xml @@ -11,15 +11,15 @@ <menu_item_check label="顯示除錯選單" name="Show Debug Menu"/> <menu label="除錯" name="Debug"> <menu_item_call label="顯示除錯設定" name="Debug Settings"/> - <menu_item_call label="UI/Color Settings" name="UI/Color Settings"/> - <menu_item_call label="XUI Preview Tool" name="UI Preview Tool"/> + <menu_item_call label="UI / 顏色 設定" name="UI/Color Settings"/> + <menu_item_call label="XUI 預覽工具" name="UI Preview Tool"/> <menu label="UI 測試" name="UI Tests"/> <menu_item_call label="設定視窗尺寸大小..." name="Set Window Size..."/> <menu_item_call label="顯示 TOS" name="TOS"/> - <menu_item_call label="Show Critical Message" name="Critical"/> - <menu_item_call label="Media Browser Test" name="Web Browser Test"/> - <menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/> - <menu_item_check label="Show Grid Picker" name="Show Grid Picker"/> - <menu_item_call label="Show Notifications Console" name="Show Notifications Console"/> + <menu_item_call label="顯示嚴重訊息" name="Critical"/> + <menu_item_call label="媒體瀏覽器測試" name="Web Browser Test"/> + <menu_item_call label="網頁內容浮動視窗測試" name="Web Content Floater Test"/> + <menu_item_check label="顯示網格挑選器" name="Show Grid Picker"/> + <menu_item_call label="顯示通知控制台" name="Show Notifications Console"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml index 169dbf2187..cf47020bd9 100644 --- a/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml +++ b/indra/newview/skins/default/xui/zh/menu_outfit_gear.xml @@ -18,10 +18,10 @@ <menu_item_call label="新刺青" name="New Tattoo"/> </menu> <menu label="新身體部位" name="New Body Parts"> - <menu_item_call label="New Shape" name="New Shape"/> - <menu_item_call label="New Skin" name="New Skin"/> - <menu_item_call label="New Hair" name="New Hair"/> - <menu_item_call label="New Eyes" name="New Eyes"/> + <menu_item_call label="新體形" name="New Shape"/> + <menu_item_call label="新皮膚" name="New Skin"/> + <menu_item_call label="新頭髮" name="New Hair"/> + <menu_item_call label="新眼睛" name="New Eyes"/> </menu> <menu_item_call label="裝扮更名" name="rename"/> <menu_item_call label="刪除裝扮" name="delete_outfit"/> diff --git a/indra/newview/skins/default/xui/zh/menu_participant_list.xml b/indra/newview/skins/default/xui/zh/menu_participant_list.xml index 7b6f6f954e..3737e3d041 100644 --- a/indra/newview/skins/default/xui/zh/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/zh/menu_participant_list.xml @@ -7,7 +7,7 @@ <menu_item_call label="IM" name="IM"/> <menu_item_call label="通話" name="Call"/> <menu_item_call label="分享" name="Share"/> - <menu_item_call label="Pay" name="Pay"/> + <menu_item_call label="支付" name="Pay"/> <menu_item_check label="View People Icons" name="View Icons"/> <menu_item_check label="Block Voice" name="Block/Unblock"/> <menu_item_check label="Block Text" name="MuteText"/> diff --git a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml index 06247ab249..cf36507d74 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_groups_view_sort.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_group_plus"> - <menu_item_check label="Display Group Icons" name="Display Group Icons"/> + <menu_item_check label="顯示社團圖示" name="Display Group Icons"/> <menu_item_call label="脫離所選擇的社團" name="Leave Selected Group"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml index 73b754e059..49fa775424 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby.xml @@ -7,7 +7,7 @@ <menu_item_call label="通話" name="Call"/> <menu_item_call label="地圖" name="Map"/> <menu_item_call label="分享" name="Share"/> - <menu_item_call label="Pay" name="Pay"/> + <menu_item_call label="支付" name="Pay"/> <menu_item_check label="Block/Unblock" name="Block/Unblock"/> <menu_item_call label="Offer Teleport" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml index 4ffbcaff83..c7aff48df4 100644 --- a/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/zh/menu_people_nearby_multiselect.xml @@ -5,6 +5,6 @@ <menu_item_call label="IM" name="IM"/> <menu_item_call label="通話" name="Call"/> <menu_item_call label="分享" name="Share"/> - <menu_item_call label="Pay" name="Pay"/> + <menu_item_call label="支付" name="Pay"/> <menu_item_call label="Offer Teleport" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_picks_plus.xml b/indra/newview/skins/default/xui/zh/menu_picks_plus.xml index 9e55c633f9..e962bd90d5 100644 --- a/indra/newview/skins/default/xui/zh/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/zh/menu_picks_plus.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="picks_plus_menu"> - <menu_item_call label="New Pick" name="create_pick"/> + <menu_item_call label="新精選地點" name="create_pick"/> <menu_item_call label="New Classified" name="create_classified"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_place.xml b/indra/newview/skins/default/xui/zh/menu_place.xml index 6ffdf329df..3733baf119 100644 --- a/indra/newview/skins/default/xui/zh/menu_place.xml +++ b/indra/newview/skins/default/xui/zh/menu_place.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="place_overflow_menu"> <menu_item_call label="製作一個地標" name="landmark"/> - <menu_item_call label="Create Pick" name="pick"/> + <menu_item_call label="建立精選地點" name="pick"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml index 7f1d091f44..7f4144d14d 100644 --- a/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/zh/menu_places_gear_folder.xml @@ -2,7 +2,7 @@ <toggleable_menu name="menu_folder_gear"> <menu_item_call label="添加地標" name="add_landmark"/> <menu_item_call label="添加資料夾" name="add_folder"/> - <menu_item_call label="Restore Item" name="restore_item"/> + <menu_item_call label="還原物品" name="restore_item"/> <menu_item_call label="剪下" name="cut"/> <menu_item_call label="覆製" name="copy_folder"/> <menu_item_call label="貼上" name="paste"/> diff --git a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml index 8578751a28..f23d970b78 100644 --- a/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/zh/menu_places_gear_landmark.xml @@ -15,5 +15,5 @@ <menu_item_call label="展開全部資料夾" name="expand_all"/> <menu_item_call label="摺疊全部資料夾" name="collapse_all"/> <menu_item_check label="依日期排序" name="sort_by_date"/> - <menu_item_call label="Create Pick" name="create_pick"/> + <menu_item_call label="建立精選地點" name="create_pick"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml index c06b7dc039..ca637ae54d 100644 --- a/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/zh/menu_profile_overflow.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="profile_overflow_menu"> <menu_item_call label="地圖" name="show_on_map"/> - <menu_item_call label="Pay" name="pay"/> + <menu_item_call label="支付" name="pay"/> <menu_item_call label="分享" name="share"/> <menu_item_call label="Block" name="block"/> <menu_item_call label="Unblock" name="unblock"/> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index e7016dc663..6d70ac4c1f 100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -54,7 +54,7 @@ <menu_item_check label="地段屬性" name="Parcel Properties"/> <menu_item_check label="進階選單" name="Show Advanced Menu"/> </menu> - <menu_item_call label="瞬間傳送回家" name="Teleport Home"/> + <menu_item_call label="瞬間瞬間傳送回家" name="Teleport Home"/> <menu_item_call label="設定家在此處" name="Set Home to Here"/> <menu label="太陽" name="Environment Settings"> <menu_item_call label="日出" name="Sunrise"/> @@ -84,21 +84,21 @@ <menu_item_call label="包括上一部位" name="Include Previous Part"/> </menu> <menu_item_call label="聚焦於所選部位" name="Focus on Selection"/> - <menu_item_call label="Zoom to Selection" name="Zoom to 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="Save Back to Object Contents" name="Save Object Back to Object Contents"/> + <menu_item_call label="回存到物件內容" name="Save Object Back to Object Contents"/> <menu_item_call label="退回物件" name="Return Object back to Owner"/> </menu> <menu label="腳本" name="Scripts"> - <menu_item_call label="Recompile Scripts (Mono)" name="Mono"/> - <menu_item_call label="Recompile Scripts (LSL)" name="LSL"/> + <menu_item_call label="重新編譯腳本(Mono)" name="Mono"/> + <menu_item_call label="重新編譯腳本(LSL)" name="LSL"/> <menu_item_call label="Reset Scripts" name="Reset Scripts"/> - <menu_item_call label="Set Scripts to Running" name="Set Scripts to Running"/> - <menu_item_call label="Set Scripts to Not Running" name="Set Scripts to Not Running"/> + <menu_item_call label="設定腳本為執行中" name="Set Scripts to Running"/> + <menu_item_call label="設定腳本為非執行中" name="Set Scripts to Not Running"/> </menu> <menu label="選項" name="Options"> <menu_item_check label="顯示進階權限" name="DebugPermissions"/> @@ -110,16 +110,16 @@ <menu_item_check label="Show Light Radius for Selection" name="Show Light Radius for Selection"/> <menu_item_check label="Show Selection Beam" name="Show Selection Beam"/> <menu_item_check label="貼齊格線" name="Snap to Grid"/> - <menu_item_call label="Snap Object XY to Grid" name="Snap Object XY to Grid"/> + <menu_item_call label="貼齊物件 XY 軸到格線" name="Snap Object XY to Grid"/> <menu_item_call label="Use Selection for Grid" name="Use Selection for Grid"/> <menu_item_call label="格線選項" name="Grid Options"/> </menu> <menu label="上傳" name="Upload"> <menu_item_call label="圖像(L$[COST])..." name="Upload Image"/> - <menu_item_call label="Sound (L$[COST])..." name="Upload Sound"/> - <menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="Bulk (L$[COST] per file)..." name="Bulk Upload"/> - <menu_item_call label="Set Default Upload Permissions" name="perm prefs"/> + <menu_item_call label="聲音(L$[COST])..." name="Upload Sound"/> + <menu_item_call label="動作(L$[COST])..." name="Upload Animation"/> + <menu_item_call label="大量上傳(每檔案 L$[COST] )..." name="Bulk Upload"/> + <menu_item_call label="設定預設上傳權限" name="perm prefs"/> </menu> <menu_item_call label="復原" name="Undo"/> <menu_item_call label="重做" name="Redo"/> @@ -135,12 +135,12 @@ <menu_item_call label="Rebake Textures" name="Rebake Texture"/> <menu_item_call label="設定使用者界面大小至預設值" name="Set UI Size to Default"/> <menu_item_call label="設定視窗尺寸大小..." name="Set Window Size..."/> - <menu_item_check label="Limit Select Distance" name="Limit Select Distance"/> + <menu_item_check label="限制選擇距離" name="Limit Select Distance"/> <menu_item_check label="Disable Camera Constraints" name="Disable Camera Distance"/> <menu_item_check label="高解析度快照" name="HighResSnapshot"/> - <menu_item_check label="Quiet Snapshots to Disk" name="QuietSnapshotsToDisk"/> - <menu_item_check label="Compress Snapshots to Disk" name="CompressSnapshotsToDisk"/> - <menu label="Performance Tools" name="Performance Tools"> + <menu_item_check label="靜音拍攝快照到硬碟" name="QuietSnapshotsToDisk"/> + <menu_item_check label="壓縮快照存到硬碟" name="CompressSnapshotsToDisk"/> + <menu label="效能工具" name="Performance Tools"> <menu_item_call label="Lag Meter" name="Lag Meter"/> <menu_item_check label="統計列" name="Statistics Bar"/> <menu_item_check label="Show Avatar Rendering Cost" name="Avatar Rendering Cost"/> @@ -149,8 +149,8 @@ <menu_item_check label="Cheesy Beacon" name="Cheesy Beacon"/> <menu_item_check label="Hide Particles" name="Hide Particles"/> <menu_item_check label="Hide Selected" name="Hide Selected"/> - <menu_item_check label="Highlight Transparent" name="Highlight Transparent"/> - <menu_item_check label="Show HUD Attachments" name="Show HUD Attachments"/> + <menu_item_check label="高亮顯示透明物件" name="Highlight Transparent"/> + <menu_item_check label="顯示 HUD 附件" name="Show HUD Attachments"/> <menu_item_check label="Show Mouselook Crosshairs" name="ShowCrosshairs"/> </menu> <menu label="Rendering Types" name="Rendering Types"> @@ -190,7 +190,7 @@ <menu_item_call label="關閉視窗" name="Close Window"/> <menu_item_call label="關閉全部視窗" name="Close All Windows"/> <menu_item_call label="Snapshot to Disk" name="Snapshot to Disk"/> - <menu_item_call label="Mouselook" name="Mouselook"/> + <menu_item_call label="第一人稱視角" name="Mouselook"/> <menu_item_check label="Joystick Flycam" name="Joystick Flycam"/> <menu_item_call label="Reset View" name="Reset View"/> <menu_item_call label="Look at Last Chatter" name="Look at Last Chatter"/> @@ -226,7 +226,7 @@ <menu_item_check label="Badge" name="Badge"/> </menu> <menu label="顯示資訊" name="Display Info"> - <menu_item_check label="Show Time" name="Show Time"/> + <menu_item_check label="顯示時間" name="Show Time"/> <menu_item_check label="Show Render Info" name="Show Render Info"/> <menu_item_check label="顯示材質資訊" name="Show Texture Info"/> <menu_item_check label="Show Matrices" name="Show Matrices"/> @@ -338,10 +338,10 @@ <menu_item_call label="送出測試 IMs" name="Send Test IMs"/> <menu_item_call label="Flush Names Caches" name="Flush Names Caches"/> </menu> - <menu label="Avatar" name="Character"> + <menu label="化身" name="Character"> <menu label="Grab Baked Texture" name="Grab Baked Texture"> <menu_item_call label="Iris" name="Iris"/> - <menu_item_call label="Head" name="Head"/> + <menu_item_call label="頭部" name="Head"/> <menu_item_call label="Upper Body" name="Upper Body"/> <menu_item_call label="Lower Body" name="Lower Body"/> <menu_item_call label="裙子" name="Skirt"/> @@ -355,10 +355,10 @@ <menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/> </menu> <menu_item_call label="Force Params to Default" name="Force Params to Default"/> - <menu_item_check label="Animation Info" name="Animation Info"/> - <menu_item_check label="Slow Motion Animations" name="Slow Motion Animations"/> - <menu_item_check label="Show Look At" name="Show Look At"/> - <menu_item_check label="Show Point At" name="Show Point At"/> + <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="Debug Joint Updates" name="Debug Joint Updates"/> <menu_item_check label="Disable LOD" name="Disable LOD"/> <menu_item_check label="Debug Character Vis" name="Debug Character Vis"/> diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml index d2d1321c2a..3498942f9b 100644 --- a/indra/newview/skins/default/xui/zh/mime_types.xml +++ b/indra/newview/skins/default/xui/zh/mime_types.xml @@ -176,7 +176,7 @@ </mimetype> <mimetype name="text/plain"> <label name="text/plain_label"> - Text + 文字 </label> </mimetype> <mimetype name="text/xml"> diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 16d4965d5a..65bb8ce517 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -1242,7 +1242,7 @@ Replace texture [TEXTURE_NUM] with a 24-bit 512x512 or smaller image then click You can only have [MAX_AGENTS] Allowed Residents. </notification> <notification name="MaxBannedAgentsOnRegion"> - You can only have [MAX_BANNED] Banned Residents. + 你只可以有最多 [MAX_BANNED] 位被封鎖的居民。 </notification> <notification name="MaxAgentOnRegionBatch"> Failure while attempting to add [NUM_ADDED] agents: @@ -1253,10 +1253,10 @@ Exceeds the [MAX_AGENTS] [LIST_TYPE] limit by [NUM_EXCESS]. <usetemplate name="okcancelbuttons" notext="取消" yestext="Bake"/> </notification> <notification name="MaxManagersOnRegion"> - You can only have [MAX_MANAGER] Estate Managers. + 你只可以有最多 [MAX_MANAGER] 位領地經理。 </notification> <notification name="OwnerCanNotBeDenied"> - Can't add estate owner to estate 'Banned Resident' list. + 無法添加領地擁有者到領地的 '被封鎖的居民' 名單中。 </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> 無法變更外觀,直到服裝與體形下載完畢。 @@ -1273,15 +1273,15 @@ Please set the object for sale and try again. [DOWNLOAD_PATH]. </notification> <notification name="DownloadWindowsMandatory"> - A new version of [APP_NAME] is available. + 一個新版本的 [APP_NAME] 已經可用。 [MESSAGE] -You must download this update to use [APP_NAME]. +你必須下載這個更新以使用 [APP_NAME]。 <usetemplate name="okcancelbuttons" notext="結束退出" yestext="下載"/> </notification> <notification name="DownloadWindows"> - An updated version of [APP_NAME] is available. + 一個 [APP_NAME] 更新過的版本已經可用。 [MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. +這個更新並非強制更新,但我們建議你安裝以增強效能及穩定性。 <usetemplate name="okcancelbuttons" notext="繼續" yestext="下載"/> </notification> <notification name="DownloadWindowsReleaseForDownload"> @@ -1356,12 +1356,12 @@ or you can install it now. <notification name="DownloadBackgroundTip"> We have downloaded an update to your [APP_NAME] installation. Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] - <usetemplate name="okcancelbuttons" notext="Later..." yestext="Install now and restart [APP_NAME]"/> + <usetemplate name="okcancelbuttons" notext="稍候..." yestext="立即安裝及重新啟動 [APP_NAME]"/> </notification> <notification name="DownloadBackgroundDialog"> We have downloaded an update to your [APP_NAME] installation. Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] - <usetemplate name="okcancelbuttons" notext="Later..." yestext="Install now and restart [APP_NAME]"/> + <usetemplate name="okcancelbuttons" notext="梢候..." yestext="立即安裝及重新啟動 [APP_NAME]"/> </notification> <notification name="RequiredUpdateDownloadedVerboseDialog"> We have downloaded a required software update. @@ -1371,7 +1371,7 @@ We must restart [APP_NAME] to install the update. <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="RequiredUpdateDownloadedDialog"> - We must restart [APP_NAME] to install the update. + 我門必須重新啟動 [APP_NAME] 以安裝更新。 <usetemplate name="okbutton" yestext="確定"/> </notification> <notification name="DeedObjectToGroup"> @@ -1569,17 +1569,17 @@ Please try again later. </notification> <notification name="TeleportToPick"> 瞬間傳送到 [PICK]? - <usetemplate ignoretext="Confirm that I want to teleport to a location in Picks" name="okcancelignore" notext="取消" yestext="Teleport"/> + <usetemplate ignoretext="確認我要瞬間傳送到精選地點的所在位置" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> </notification> <notification name="TeleportToClassified"> 瞬間傳送到 [CLASSIFIED]? - <usetemplate ignoretext="Confirm that I want to teleport to a location in Classifieds" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> + <usetemplate ignoretext="確認我要瞬間傳送到個人廣告的所在位置" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> </notification> <notification name="TeleportToHistoryEntry"> 瞬間傳送到 [HISTORY_ENTRY]? - <usetemplate ignoretext="Confirm that I want to teleport to a history location" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> + <usetemplate ignoretext="確認我要瞬間傳送到歷史紀錄中的位置" name="okcancelignore" notext="取消" yestext="瞬間傳送"/> </notification> - <notification label="Message everyone in your Estate" name="MessageEstate"> + <notification label="送出訊息給你領地內的每一個人" name="MessageEstate"> Type a short announcement which will be sent to everyone currently in your estate. <form name="form"> <button name="OK" text="確定"/> @@ -1780,15 +1780,15 @@ To enter Adult regions, Residents must be Account Verified, either by age-verifi <notification label="Voice Version Mismatch" name="VoiceVersionMismatch"> This version of [APP_NAME] is not compatible with the Voice Chat feature in this region. In order for Voice Chat to function correctly you will need to update [APP_NAME]. </notification> - <notification label="Can't Buy Objects" name="BuyObjectOneOwner"> + <notification label="無法購買物件" name="BuyObjectOneOwner"> Cannot buy objects from different owners at the same time. Please select only one object and try again. </notification> - <notification label="Can't Buy Contents" name="BuyContentsOneOnly"> + <notification label="無法購買內容物" name="BuyContentsOneOnly"> Unable to buy the contents of more than one object at a time. Please select only one object and try again. </notification> - <notification label="Can't Buy Contents" name="BuyContentsOneOwner"> + <notification label="無法購買內容物" name="BuyContentsOneOwner"> Cannot buy objects from different owners at the same time. Please select only one object and try again. </notification> @@ -1950,7 +1950,7 @@ Do you want to replace it with the selected object? <button ignore="絕不取代" name="No" text="取消"/> </form> </notification> - <notification label="Busy Mode Warning" name="BusyModePay"> + <notification label="忙碌模式警告" name="BusyModePay"> You are in Busy Mode, which means you will not receive any items offered in exchange for this payment. Would you like to leave Busy Mode before completing this transaction? diff --git a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml index c9e47984e2..7d16ac4129 100644 --- a/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_adhoc_control_panel.xml @@ -5,7 +5,7 @@ <button label="通話" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> - <button label="Leave Call" name="end_call_btn"/> + <button label="離開通話" name="end_call_btn"/> </layout_panel> <layout_panel name="voice_ctrls_btn_panel"> <button label="語音控制" name="voice_ctrls_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml index 23b76eea9b..eccb938f15 100644 --- a/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/zh/panel_avatar_list_item.xml @@ -21,7 +21,7 @@ <string name="FormatYears"> [COUNT]y </string> - <text name="avatar_name" value="(loading)"/> + <text name="avatar_name" value="(載入)"/> <text name="last_interaction" value="0s"/> <icon name="permission_edit_theirs_icon" tool_tip="你不能編輯這位朋友的物件"/> <icon name="permission_edit_mine_icon" tool_tip="這位朋友能編輯、刪除或取得你的物件"/> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml index 0578fe9ef1..d9ddafac3b 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml @@ -5,7 +5,7 @@ </panel> <panel name="accordion_panel"> <accordion name="wearable_accordion"> - <accordion_tab name="hair_color_tab" title="Color"/> + <accordion_tab name="hair_color_tab" title="顏色"/> <accordion_tab name="hair_style_tab" title="Style"/> <accordion_tab name="hair_eyebrows_tab" title="Eyebrows"/> <accordion_tab name="hair_facial_tab" title="Facial"/> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml index b453fdc758..76560256f7 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml @@ -2,7 +2,7 @@ <panel name="edit_pants_panel"> <panel name="avatar_pants_color_panel"> <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> - <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> + <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/> </panel> <panel name="accordion_panel"> <accordion name="wearable_accordion"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml index 0f1f72ceb9..6ac7226185 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Edit Pick" name="panel_edit_pick"> +<panel label="編輯精選地點" name="panel_edit_pick"> <panel.string name="location_notice"> - (will update after save) + (將在儲存後更新) </panel.string> <text name="title"> - Edit Pick + 編輯精選地點 </text> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <icon label="" name="edit_icon" tool_tip="點擊以選擇圖像"/> <text name="Name:"> - Title: + 標題: </text> <text name="description_label"> 描述: @@ -21,13 +21,13 @@ <text name="pick_location"> 載入中... </text> - <button label="Set to Current Location" name="set_to_curr_location_btn"/> + <button label="設定為目前位置" name="set_to_curr_location_btn"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> <layout_stack name="layout_stack1"> <layout_panel name="layout_panel1"> - <button label="Save Pick" name="save_changes_btn"/> + <button label="儲存精選地點" name="save_changes_btn"/> </layout_panel> <layout_panel name="layout_panel1"> <button label="取消" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shape.xml b/indra/newview/skins/default/xui/zh/panel_edit_shape.xml index da6049ea75..f249100786 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shape.xml @@ -1,25 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shape_panel"> <string name="meters"> - Meters + 公尺 </string> <string name="feet"> - Feet + 英呎 </string> <string name="height"> - Height: + 身高: </string> <panel label="襯衫" name="accordion_panel"> <accordion name="wearable_accordion"> - <accordion_tab name="shape_body_tab" title="Body"/> - <accordion_tab name="shape_head_tab" title="Head"/> + <accordion_tab name="shape_body_tab" title="身體"/> + <accordion_tab name="shape_head_tab" title="頭部"/> <accordion_tab name="shape_eyes_tab" title="眼睛"/> - <accordion_tab name="shape_ears_tab" title="Ears"/> - <accordion_tab name="shape_nose_tab" title="Nose"/> - <accordion_tab name="shape_mouth_tab" title="Mouth"/> - <accordion_tab name="shape_chin_tab" title="Chin"/> - <accordion_tab name="shape_torso_tab" title="Torso"/> - <accordion_tab name="shape_legs_tab" title="Legs"/> + <accordion_tab name="shape_ears_tab" title="耳朵"/> + <accordion_tab name="shape_nose_tab" title="鼻子"/> + <accordion_tab name="shape_mouth_tab" title="嘴巴"/> + <accordion_tab name="shape_chin_tab" title="下巴"/> + <accordion_tab name="shape_torso_tab" title="軀幹"/> + <accordion_tab name="shape_legs_tab" title="腿部"/> </accordion> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml index 321fb68756..ecfc1e2fad 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml @@ -2,7 +2,7 @@ <panel name="edit_shirt_panel"> <panel name="avatar_shirt_color_panel"> <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> - <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> + <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/> </panel> <panel name="accordion_panel"> <accordion name="wearable_accordion"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml index 096a83c871..5c46f94fe9 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml @@ -2,7 +2,7 @@ <panel name="edit_skirt_panel"> <panel name="avatar_skirt_color_panel"> <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> - <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> + <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/> </panel> <panel name="accordion_panel"> <accordion name="wearable_accordion"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml index dab132bad2..09c888f226 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml @@ -2,7 +2,7 @@ <panel name="edit_socks_panel"> <panel name="avatar_socks_color_panel"> <texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/> - <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> + <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/> </panel> <panel name="accordion_panel"> <accordion name="wearable_accordion"> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml index d183e6897d..946f8b22dc 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_tattoo_panel"> <panel name="avatar_tattoo_color_panel"> - <texture_picker label="Head Tattoo" name="Head Tattoo" tool_tip="點擊以挑選圖片"/> - <texture_picker label="Upper Tattoo" name="Upper Tattoo" tool_tip="Click to choose a picture"/> - <texture_picker label="Lower Tattoo" name="Lower Tattoo" tool_tip="點擊以挑選圖片"/> - <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/> + <texture_picker label="頭部刺青" name="Head Tattoo" tool_tip="點擊以挑選圖片"/> + <texture_picker label="上半身刺青" name="Upper Tattoo" tool_tip="點擊以挑選照片"/> + <texture_picker label="下半身刺青" name="Lower Tattoo" tool_tip="點擊以挑選圖片"/> + <color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml index d741ed70df..936a2651ab 100644 --- a/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/zh/panel_edit_wearable.xml @@ -49,16 +49,16 @@ Editing Physics </string> <string name="shape_desc_text"> - Shape: + 體形: </string> <string name="skin_desc_text"> - Skin: + 皮膚: </string> <string name="hair_desc_text"> - Hair: + 頭髮: </string> <string name="eyes_desc_text"> - Eyes: + 眼睛: </string> <string name="shirt_desc_text"> 襯衫: diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml index 1706541f2b..a97a35056b 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_general.xml @@ -6,7 +6,7 @@ Hover your mouse over the options for more help. </panel.string> <panel.string name="group_info_unchanged"> - General group information has changed + 一般社團資訊已經被變更 </panel.string> <panel.string name="incomplete_member_data_str"> Retrieving member data @@ -17,7 +17,7 @@ Hover your mouse over the options for more help. 創辦人: </text> <text name="join_cost_text"> - Free + 免費 </text> <button label="現在就加入!!" name="btn_join"/> </panel> @@ -50,7 +50,7 @@ Hover your mouse over the options for more help. - 選擇內容分級 - </combo_item> <combo_box.item label="Moderate Content" name="mature"/> - <combo_box.item label="General Content" name="pg"/> + <combo_box.item label="一般內容" name="pg"/> </combo_box> <check_box initial_value="true" label="顯示在搜尋中" name="show_in_group_list" tool_tip="Let people see this group in search results"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_group_invite.xml b/indra/newview/skins/default/xui/zh/panel_group_invite.xml index 0a0a1f1941..a1395f454b 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_invite.xml @@ -19,7 +19,7 @@ Choose what Role to assign them to: </text> <combo_box name="role_name" tool_tip="Choose from the list of Roles you are allowed to assign members to"/> - <button label="Send Invitations" name="ok_button"/> + <button label="送出邀請" name="ok_button"/> <button label="取消" name="cancel_button"/> <string name="GroupInvitation"> 社團邀請 diff --git a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml index 71f139a3e6..58022c2279 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml @@ -22,9 +22,9 @@ <scroll_list name="group_parcel_list"> <scroll_list.columns label="地段" name="name"/> <scroll_list.columns label="地區" name="location"/> - <scroll_list.columns label="Type" name="type"/> - <scroll_list.columns label="Area" name="area"/> - <scroll_list.columns label="Hidden" name="hidden"/> + <scroll_list.columns label="類型" name="type"/> + <scroll_list.columns label="區域" name="area"/> + <scroll_list.columns label="隱藏" name="hidden"/> </scroll_list> <text name="total_contributed_land_label"> Total contribution: diff --git a/indra/newview/skins/default/xui/zh/panel_group_notices.xml b/indra/newview/skins/default/xui/zh/panel_group_notices.xml index 5fed96dbd9..65c07e7137 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_notices.xml @@ -6,11 +6,11 @@ Notices only go to group members in Roles with the ability to receive Notices. You can turn off Notices on the General tab. </panel.string> <panel.string name="no_notices_text"> - There are no past notices + 沒有過去的通知 </panel.string> <text name="lbl2"> - Notices are kept for 14 days. -Maximum 200 per group daily + 通知保留 14 天。 +每個社團一天最多 200 則 </text> <scroll_list name="notice_list"> <scroll_list.columns label="主旨" name="subject"/> @@ -18,7 +18,7 @@ Maximum 200 per group daily <scroll_list.columns label="日期" name="date"/> </scroll_list> <text name="notice_list_none_found"> - None found + 沒發現。 </text> <button label="新通知" name="create_new_notice" tool_tip="建立一個新通知"/> <button name="refresh_notices" tool_tip="Refresh list of notices"/> @@ -39,16 +39,16 @@ Maximum 200 per group daily 將物品拖曳並丟於此處以添加為附件: </text> <button label="收納區" name="open_inventory" tool_tip="開啟收納區"/> - <button name="remove_attachment" tool_tip="Remove attachment from your notification"/> - <button label="Send" label_selected="Send" name="send_notice"/> + <button name="remove_attachment" tool_tip="由你的通知移除附件"/> + <button label="送出" label_selected="送出" name="send_notice"/> <group_drop_target name="drop_target" tool_tip="Drag an inventory item onto this target box to send it with this notice. You must have permission to copy and transfer the item in order to attach it."/> </panel> <panel label="察看過去的通知" name="panel_view_past_notice"> <text name="lbl"> - Archived Notice + 存檔的通知 </text> <text name="lbl2"> - To send a new notice, click the + button + 要送出一個新通知,點擊 + 按鈕 </text> <text name="lbl3"> 主旨: diff --git a/indra/newview/skins/default/xui/zh/panel_group_roles.xml b/indra/newview/skins/default/xui/zh/panel_group_roles.xml index 8947ab6e45..fff4383893 100644 --- a/indra/newview/skins/default/xui/zh/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/zh/panel_group_roles.xml @@ -19,7 +19,7 @@ clicking on their names. <filter_editor label="成員過濾器" name="filter_input"/> <name_list name="member_list"> <name_list.columns label="成員" name="name"/> - <name_list.columns label="Donation" name="donated"/> + <name_list.columns label="捐款" name="donated"/> <name_list.columns label="狀態" name="online"/> </name_list> <button label="邀請" name="member_invite"/> diff --git a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml index 881f8eac0b..703182e04d 100644 --- a/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/zh/panel_im_control_panel.xml @@ -14,7 +14,7 @@ <button label="分享" name="share_btn"/> </layout_panel> <layout_panel name="pay_btn_panel"> - <button label="Pay" name="pay_btn"/> + <button label="支付" name="pay_btn"/> </layout_panel> <layout_panel name="call_btn_panel"> <button label="通話" name="call_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_me.xml b/indra/newview/skins/default/xui/zh/panel_me.xml index abdbfd7429..a236dfc17a 100644 --- a/indra/newview/skins/default/xui/zh/panel_me.xml +++ b/indra/newview/skins/default/xui/zh/panel_me.xml @@ -2,6 +2,6 @@ <panel label="我的檔案" name="panel_me"> <tab_container name="tabs"> <panel label="我的檔案" name="panel_profile"/> - <panel label="MY PICKS" name="panel_picks"/> + <panel label="我的精選地點" name="panel_picks"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml index f3163e3c19..059a78cf7d 100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml @@ -11,7 +11,7 @@ 預覽 </text> <text name="current_url_label"> - Current Page: + 目前頁面: </text> <text name="current_url" tool_tip="The current page for this media source" value=""/> <button label="Reset" name="current_url_reset_btn"/> diff --git a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml index 6e2d47c09e..3645f471ce 100644 --- a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml @@ -1,18 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="自訂" name="Media settings for controls"> <text name="controls_label"> - Controls: + 控制: </text> <combo_box name="controls"> <combo_item name="Standard"> - Standard + 標準 </combo_item> <combo_item name="Mini"> - Mini + 迷你 </combo_item> </combo_box> <text name="owner_label"> - Owner + 擁有者 </text> <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_owner_interact"/> <check_box initial_value="false" label="顯示控制列" name="perms_owner_control"/> @@ -22,7 +22,7 @@ <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_group_interact"/> <check_box initial_value="false" label="顯示控制列" name="perms_group_control"/> <text name="anyone_label"> - Anyone + 任何人 </text> <check_box initial_value="false" label="Allow Navigation & Interactivity" name="perms_anyone_interact"/> <check_box initial_value="false" label="顯示控制列" name="perms_anyone_control"/> diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml index 724cd54bf1..3cabfcfaba 100644 --- a/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/zh/panel_nearby_chat_bar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="chat_bar"> - <line_editor label="點擊此處開始聊天。" name="chat_box" tool_tip="Press Enter to say, Ctrl+Enter to shout"/> - <button name="show_nearby_chat" tool_tip="顯示 / 隱藏 附近聊天紀錄"/> + <line_editor label="點擊此處開始聊天。" name="chat_box" tool_tip="按下 Enter 鍵來說或按下 Ctrl+Enter 來喊叫"/> + <button name="show_nearby_chat" tool_tip="顯示 / 隱藏 附近的聊天紀錄"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_nearby_media.xml b/indra/newview/skins/default/xui/zh/panel_nearby_media.xml index 0b8a7a5f42..5ab6837569 100644 --- a/indra/newview/skins/default/xui/zh/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/zh/panel_nearby_media.xml @@ -44,13 +44,13 @@ <panel name="media_controls_panel"> <layout_stack name="media_controls"> <layout_panel name="stop"> - <button name="stop_btn" tool_tip="Stop selected media"/> + <button name="stop_btn" tool_tip="停止所選擇媒體"/> </layout_panel> <layout_panel name="play"> - <button name="play_btn" tool_tip="Play selected media"/> + <button name="play_btn" tool_tip="播放所選擇的媒體"/> </layout_panel> <layout_panel name="pause"> - <button name="pause_btn" tool_tip="Pause selected media"/> + <button name="pause_btn" tool_tip="暫停所選擇的媒體"/> </layout_panel> <layout_panel name="volume_slider_ctrl"> <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Audio volume for selected media"/> diff --git a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml index bdbc89f71c..01a8210338 100644 --- a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="instant_message" name="panel_notify_textbox"> +<panel label="即時訊息" name="panel_notify_textbox"> <string name="message_max_lines_count" value="7"/> <panel label="info_panel" name="info_panel"> - <text_editor name="message" value="message"/> + <text_editor name="message" value="訊息"/> </panel> <panel label="control_panel" name="control_panel"> - <button label="Submit" name="btn_submit"/> + <button label="提交" name="btn_submit"/> <button label="忽視" name="ignore_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml index 6ceaf447a7..263106d13a 100644 --- a/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/zh/panel_outfit_edit.xml @@ -15,7 +15,7 @@ <string name="Filter.Objects" value="物件"/> <string name="Filter.Clothing" value="服裝"/> <string name="Filter.Bodyparts" value="身體部位"/> - <string name="replace_body_part" value="Click to replace your existing shape"/> + <string name="replace_body_part" value="點擊以取代你現存的體形"/> <text name="title" value="編輯裝扮"/> <panel name="header_panel"> <panel name="outfit_name_and_status"> @@ -27,7 +27,7 @@ <layout_panel name="outfit_wearables_panel"> <layout_stack name="filter_panels"> <layout_panel name="add_button_and_combobox"> - <button label="Add More..." name="show_add_wearables_btn" tool_tip="開啟 / 關閉"/> + <button label="添加更多..." name="show_add_wearables_btn" tool_tip="開啟 / 關閉"/> </layout_panel> <layout_panel name="filter_panel"> <filter_editor label="收納區可穿著過濾器" name="look_item_filter"/> @@ -35,7 +35,7 @@ </layout_stack> </layout_panel> <layout_panel name="add_wearables_panel"> - <button label="Wear Item" name="plus_btn"/> + <button label="穿上物品" name="plus_btn"/> </layout_panel> </layout_stack> <panel name="no_add_wearables_button_bar"> diff --git a/indra/newview/skins/default/xui/zh/panel_pick_info.xml b/indra/newview/skins/default/xui/zh/panel_pick_info.xml index 44ae5703c6..cd4cdbf999 100644 --- a/indra/newview/skins/default/xui/zh/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/zh/panel_pick_info.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_pick_info"> - <text name="title" value="Pick Info"/> + <text name="title" value="精選地點資訊"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <text_editor name="pick_name" value="[name]"/> diff --git a/indra/newview/skins/default/xui/zh/panel_picks.xml b/indra/newview/skins/default/xui/zh/panel_picks.xml index 3b356967f9..a233092dc2 100644 --- a/indra/newview/skins/default/xui/zh/panel_picks.xml +++ b/indra/newview/skins/default/xui/zh/panel_picks.xml @@ -1,28 +1,28 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Picks" name="panel_picks"> - <string name="no_picks" value="No Picks"/> +<panel label="精選地點" name="panel_picks"> + <string name="no_picks" value="無精選地點"/> <string name="no_classifieds" value="No Classifieds"/> <accordion name="accordion"> - <accordion_tab name="tab_picks" title="Picks"/> + <accordion_tab name="tab_picks" title="精選地點"/> <accordion_tab name="tab_classifieds" title="Classifieds"/> </accordion> <panel label="bottom_panel" name="edit_panel"> <layout_stack name="edit_panel_ls"> <layout_panel name="gear_menu_btn"> - <button name="new_btn" tool_tip="Create a new pick or classified at the current location"/> + <button name="new_btn" tool_tip="以目前位置建立新的精選地點或個人廣告"/> </layout_panel> </layout_stack> </panel> <panel name="buttons_cucks"> <layout_stack name="buttons_cucks_ls"> <layout_panel name="info_btn_lp"> - <button label="資訊" name="info_btn" tool_tip="Show pick information"/> + <button label="資訊" name="info_btn" tool_tip="顯示精選地點資訊"/> </layout_panel> <layout_panel name="teleport_btn_lp"> - <button label="瞬間傳送" name="teleport_btn" tool_tip="Teleport to the corresponding area"/> + <button label="瞬間傳送" name="teleport_btn" tool_tip="瞬間傳送到相對應的區域"/> </layout_panel> <layout_panel name="show_on_map_btn_lp"> - <button label="地圖" name="show_on_map_btn" tool_tip="Show the corresponding area on the World Map"/> + <button label="地圖" name="show_on_map_btn" tool_tip="在世界地圖上顯示相對應的區域"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_place_profile.xml b/indra/newview/skins/default/xui/zh/panel_place_profile.xml index b0919c9151..aa7b036398 100644 --- a/indra/newview/skins/default/xui/zh/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_place_profile.xml @@ -11,7 +11,7 @@ <string name="unknown" value="(未知)"/> <string name="public" value="(公開)"/> <string name="none_text" value="(無)"/> - <string name="sale_pending_text" value="(Sale Pending)"/> + <string name="sale_pending_text" value="(擱置銷售)"/> <string name="group_owned_text" value="(社團所擁有)"/> <string name="price_text" value="L$"/> <string name="area_text" value="m²"/> @@ -60,11 +60,11 @@ <text name="voice_value" value="On"/> <text name="fly_label" value="飛行:"/> <text name="fly_value" value="On"/> - <text name="push_label" value="Push:"/> + <text name="push_label" value="推撞:"/> <text name="push_value" value="Off"/> - <text name="build_label" value="Build:"/> + <text name="build_label" value="建造:"/> <text name="build_value" value="On"/> - <text name="scripts_label" value="Scripts:"/> + <text name="scripts_label" value="腳本:"/> <text name="scripts_value" value="On"/> <text name="damage_label" value="Damage:"/> <text name="damage_value" value="Off"/> @@ -78,7 +78,7 @@ <text name="region_type_label" value="類型:"/> <text name="region_type" value="Moose"/> <text name="region_rating_label" value="分級:"/> - <text name="region_rating" value="Adult"/> + <text name="region_rating" value="成人"/> <text name="region_owner_label" value="擁有者:"/> <text name="region_owner" value="moose Van Moose extra long name moose"/> <text name="region_group_label" value="社團:"/> @@ -103,7 +103,7 @@ <text name="area_label" value="面積:"/> <text name="traffic_label" value="流量:"/> <text name="primitives_label" value="Primitives:"/> - <text name="parcel_scripts_label" value="Scripts:"/> + <text name="parcel_scripts_label" value="腳本:"/> <text name="terraform_limits_label" value="Terraform limits:"/> <text name="subdivide_label" value="Subdivide/Join ability:"/> <text name="resale_label" value="ReSale ability:"/> 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 a39402c858..c691edb11c 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml @@ -33,7 +33,7 @@ Use machine translation while chatting (powered by Google) </text> <text name="translate_language_text"> - Translate chat into: + 聊天翻譯為: </text> <combo_box name="translate_language_combobox"> <combo_box.item label="系統預設" name="System Default Language"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml index c7299ad8a9..b7449dad10 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml @@ -17,10 +17,10 @@ <combo_box.item label="日本語 (Japanese) - Beta" name="(Japanese)"/> </combo_box> <text name="language_textbox2"> - (Requires restart) + (須重新啟動) </text> <text name="maturity_desired_prompt"> - I want to access content rated: + 我想要能進出內容分級的地區為: </text> <combo_box name="maturity_desired_combobox"> <combo_box.item label="General, Moderate, Adult" name="Desired_Adult"/> @@ -36,34 +36,34 @@ </combo_box> <check_box initial_value="true" label="登入時顯示" name="show_location_checkbox"/> <text name="name_tags_textbox"> - Name tags: + 名稱標籤: </text> <radio_group name="Name_Tag_Preference"> <radio_item label="Off" name="radio" value="0"/> <radio_item label="On" name="radio2" value="1"/> - <radio_item label="Show briefly" name="radio3" value="2"/> + <radio_item label="簡短顯示" name="radio3" value="2"/> </radio_group> - <check_box label="My name" name="show_my_name_checkbox1"/> - <check_box label="使用者名稱" name="show_slids" tool_tip="Show username, like bobsmith123"/> - <check_box label="社團頭銜" name="show_all_title_checkbox1" tool_tip="Show group titles, like Officer or Member"/> + <check_box label="我的名字" name="show_my_name_checkbox1"/> + <check_box label="使用者名稱" name="show_slids" tool_tip="顯示使用者名稱,就像 bobsmith123 這類的"/> + <check_box label="社團頭銜" name="show_all_title_checkbox1" tool_tip="顯示社團頭銜,像是 Officer 或成員"/> <check_box label="高亮顯示朋友" name="show_friends" tool_tip="高亮顯示你朋友的名稱標籤"/> <check_box label="View Display Names" name="display_names_check" tool_tip="Check to use display names in chat, IM, name tags, etc."/> <text name="inworld_typing_rg_label"> - Pressing letter keys: + 按下字母鍵: </text> <radio_group name="inworld_typing_preference"> - <radio_item label="Starts local chat" name="radio_start_chat" value="1"/> - <radio_item label="Affects movement (i.e. WASD)" name="radio_move" value="0"/> + <radio_item label="開始本地聊天" name="radio_start_chat" value="1"/> + <radio_item label="影響移動(例如 WASD鍵)" name="radio_move" value="0"/> </radio_group> <text name="title_afk_text"> - Away timeout: + 離開逾時設定: </text> - <combo_box label="Away timeout:" name="afk"> - <combo_box.item label="2 minutes" name="item0"/> - <combo_box.item label="5 minutes" name="item1"/> - <combo_box.item label="10 minutes" name="item2"/> - <combo_box.item label="30 minutes" name="item3"/> - <combo_box.item label="never" name="item4"/> + <combo_box label="離開逾時設定:" name="afk"> + <combo_box.item label="2 分鐘" name="item0"/> + <combo_box.item label="5 分鐘" name="item1"/> + <combo_box.item label="10 分鐘" name="item2"/> + <combo_box.item label="30 分鐘" name="item3"/> + <combo_box.item label="絕不" name="item4"/> </combo_box> <text name="text_box3"> 忙碌模式回應: diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml index ff582d774b..de296f72f3 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml @@ -13,9 +13,9 @@ Mouselook mouse sensitivity: </text> <check_box label="反轉" name="invert_mouse"/> - <check_box label="Arrow keys always move me" name="arrow_keys_move_avatar_check"/> + <check_box label="總是使用方向鍵移動" name="arrow_keys_move_avatar_check"/> <check_box label="Tap-tap-hold to run" name="tap_tap_hold_to_run"/> - <check_box label="Double-Click to:" name="double_click_chkbox"/> + <check_box label="雙擊以D:" name="double_click_chkbox"/> <radio_group name="double_click_action"> <radio_item label="瞬間傳送" name="radio_teleport"/> <radio_item label="Auto-pilot" name="radio_autopilot"/> diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml index 2cab05e2ad..305d1e2ac9 100644 --- a/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/zh/panel_preferences_sound.xml @@ -10,29 +10,29 @@ </text> <slider label="按鍵音" name="UI Volume"/> <slider label="Ambient" name="Wind Volume"/> - <slider label="Sound Effects" name="SFX Volume"/> - <slider label="Streaming music" name="Music Volume"/> - <check_box label="Enabled" name="enable_music"/> - <slider label="Media" name="Media Volume"/> - <check_box label="Enabled" name="enable_media"/> - <slider label="Voice Chat" name="Voice Volume"/> - <check_box label="Enabled" name="enable_voice_check"/> - <check_box label="Allow Media to auto-play" name="media_auto_play_btn" tool_tip="Check this to let media auto-play if it wants" value="true"/> - <check_box label="Play media attached to other avatars" name="media_show_on_others_btn" tool_tip="Uncheck this to hide media attached to other avatars nearby" value="true"/> + <slider label="音效" name="SFX Volume"/> + <slider label="串流音樂" name="Music Volume"/> + <check_box label="已啟用" name="enable_music"/> + <slider label="媒體" name="Media Volume"/> + <check_box label="已啟用" name="enable_media"/> + <slider label="語音聊天" name="Voice Volume"/> + <check_box label="已啟用" name="enable_voice_check"/> + <check_box label="允許媒體自動播放" name="media_auto_play_btn" tool_tip="若你想要,可以勾選這個允許媒體自動播放" value="true"/> + <check_box label="播放附加到其他化身身上的媒體" name="media_show_on_others_btn" tool_tip="Uncheck this to hide media attached to other avatars nearby" value="true"/> <text name="voice_chat_settings"> - Voice Chat Settings + 語音聊天設定 </text> <text name="Listen from"> - Listen from: + 傾聽位置: </text> <radio_group name="ear_location"> - <radio_item label="Camera position" name="0"/> - <radio_item label="Avatar position" name="1"/> + <radio_item label="攝影機位置" name="0"/> + <radio_item label="化身位置" name="1"/> </radio_group> - <check_box label="Move avatar lips when speaking" name="enable_lip_sync"/> + <check_box label="說話時同步移動化身嘴唇" name="enable_lip_sync"/> <check_box label="Toggle speak on/off when I press:" name="push_to_talk_toggle_check" tool_tip="When in toggle mode, press and release the trigger key ONCE to switch your microphone on or off. When not in toggle mode, the microphone broadcasts your voice only while the trigger is being held down."/> <line_editor label="Push-to-Speak trigger" name="modifier_combo"/> - <button label="Set Key" name="set_voice_hotkey_button"/> + <button label="設定按鍵" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="Reset to Middle Mouse Button"/> <button label="輸入 / 輸出設備" name="device_settings_btn"/> <panel label="設備設定" name="device_settings_panel"> @@ -49,7 +49,7 @@ 輸入 </text> <text name="My volume label"> - My volume: + 我的音量: </text> <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Change the volume using this slider"/> <text name="wait_text"> diff --git a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml index 71de9f861a..8d0e2a6355 100644 --- a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml @@ -40,7 +40,7 @@ <button name="home_btn" tool_tip="Home page"/> </layout_panel> <layout_panel name="media_stop"> - <button name="media_stop_btn" tool_tip="Stop media"/> + <button name="media_stop_btn" tool_tip="停止媒體"/> </layout_panel> <layout_panel name="reload"> <button name="reload_btn" tool_tip="Reload"/> diff --git a/indra/newview/skins/default/xui/zh/panel_profile.xml b/indra/newview/skins/default/xui/zh/panel_profile.xml index 7536311daf..fcf7bb64db 100644 --- a/indra/newview/skins/default/xui/zh/panel_profile.xml +++ b/indra/newview/skins/default/xui/zh/panel_profile.xml @@ -32,7 +32,7 @@ <panel name="first_life_image_panel"> <text name="title_rw_descr_text" value="真實世界:"/> </panel> - <text name="title_member_text" value="Resident Since:"/> + <text name="title_member_text" value="成為居民自:"/> <text name="title_acc_status_text" value="帳戶狀態:"/> <text name="title_partner_text" value="配偶:"/> <panel name="partner_data_panel"> @@ -59,7 +59,7 @@ <button label="瞬間傳送" name="teleport" tool_tip="Offer teleport"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <menu_button label="▼" name="overflow_btn" tool_tip="Pay money to or share inventory with the Resident"/> + <menu_button label="▼" name="overflow_btn" tool_tip="支付金錢,或分享收納區給居民"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/zh/panel_profile_view.xml b/indra/newview/skins/default/xui/zh/panel_profile_view.xml index ac8c7cad3d..12fe776e45 100644 --- a/indra/newview/skins/default/xui/zh/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/zh/panel_profile_view.xml @@ -14,7 +14,7 @@ <text name="user_label" value="使用者名稱:"/> <tab_container name="tabs"> <panel label="檔案" name="panel_profile"/> - <panel label="PICKS" name="panel_picks"/> + <panel label="精選地點" name="panel_picks"/> <panel label="NOTES & PRIVACY" name="panel_notes"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_covenant.xml b/indra/newview/skins/default/xui/zh/panel_region_covenant.xml index 2e52efb804..315bc0ac8e 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_covenant.xml @@ -62,18 +62,18 @@ 分級: </text> <text name="region_maturity_text"> - Adult + 成人 </text> <text name="resellable_lbl"> - Resale: + 轉售: </text> <text name="resellable_clause"> - Land in this region may not be resold. + 這地區的土地不能轉售。 </text> <text name="changeable_lbl"> - Subdivide: + 分割: </text> <text name="changeable_clause"> - Land in this region may not be joined/subdivided. + 這地區的土地不能合併或分割。 </text> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_debug.xml b/indra/newview/skins/default/xui/zh/panel_region_debug.xml index 798831bc84..1ffbcbf8fd 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_debug.xml @@ -11,24 +11,24 @@ <check_box label="Disable Physics" name="disable_physics_check" tool_tip="Disable all physics in this region"/> <button label="套用" name="apply_btn"/> <text name="objret_text_lbl"> - Object Return + 物件退回 </text> <text name="resident_text_lbl"> - Resident: + 居民: </text> <line_editor name="target_avatar_name"> (無) </line_editor> - <button label="Choose" name="choose_avatar_btn"/> + <button label="選擇" name="choose_avatar_btn"/> <text name="options_text_lbl"> 選項: </text> - <check_box label="With scripts" name="return_scripts" tool_tip="Return only objects which have scripts"/> + <check_box label="With scripts" name="return_scripts" tool_tip="只退回R包含腳本的物件"/> <check_box label="On someone else's land" name="return_other_land" tool_tip="Return only objects which are on land belonging to someone else"/> <check_box label="In every region of this estate" name="return_estate_wide" tool_tip="Return objects in all of the regions that make up this estate"/> - <button label="Return" name="return_btn"/> + <button label="退回" name="return_btn"/> <button label="Get Top Colliders..." name="top_colliders_btn" tool_tip="List of objects experiencing the most potential collisions"/> <button label="Get Top Scripts..." name="top_scripts_btn" tool_tip="List of objects spending the most time running scripts"/> - <button label="Restart Region" name="restart_btn" tool_tip="Give 2 minute countdown and restart region"/> - <button label="Delay Restart" name="cancel_restart_btn" tool_tip="Delay region restart by one hour"/> + <button label="地區重新啟動" name="restart_btn" tool_tip="給予兩分鐘倒數計時並重新啟動"/> + <button label="延遲重新啟動" name="cancel_restart_btn" tool_tip="延遲地區重新啟動一小時"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_region_estate.xml b/indra/newview/skins/default/xui/zh/panel_region_estate.xml index 899191c3f0..1f1676167b 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_estate.xml @@ -27,7 +27,7 @@ <check_box label="允許語音聊天" name="voice_chat_check"/> <check_box label="允許直接瞬間傳送" name="allow_direct_teleport"/> <button label="套用" name="apply_btn"/> - <button label="瞬間傳送訊息到領地..." name="message_estate_btn"/> + <button label="送出訊息到領地..." name="message_estate_btn"/> <button label="由領地將居民踢出..." name="kick_user_from_estate_btn"/> <text name="estate_manager_label"> 領地管理員: diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml index 71caaf1144..dce75c997d 100644 --- a/indra/newview/skins/default/xui/zh/panel_region_general.xml +++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml @@ -7,7 +7,7 @@ 未知 </text> <text name="version_channel_text_lbl"> - Version: + 版本: </text> <text name="version_channel_text"> 未知 @@ -22,22 +22,22 @@ <check_box label="Block Fly" name="block_fly_check"/> <check_box label="Allow Damage" name="allow_damage_check"/> <check_box label="Restrict Pushing" name="restrict_pushobject"/> - <check_box label="Allow Land Resell" name="allow_land_resell_check"/> - <check_box label="Allow Land Join/Divide" name="allow_parcel_changes_check"/> + <check_box label="允許土地轉售" name="allow_land_resell_check"/> + <check_box label="允許土地 合併/分割" name="allow_parcel_changes_check"/> <check_box label="阻擋土地顯示於搜尋中" name="block_parcel_search_check" tool_tip="Let people see this region and its parcels in search results"/> - <spinner label="Agent Limit" name="agent_limit_spin"/> + <spinner label="人數上限" name="agent_limit_spin"/> <spinner label="Object Bonus" name="object_bonus_spin"/> <text label="Maturity" name="access_text"> 分級: </text> <icons_combo_box label="Moderate" name="access_combo"> - <icons_combo_box.item label="Adult" name="Adult" value="42"/> + <icons_combo_box.item label="成人" name="Adult" value="42"/> <icons_combo_box.item label="Moderate" name="Mature" value="21"/> <icons_combo_box.item label="一般" name="PG" value="13"/> </icons_combo_box> <button label="套用" name="apply_btn"/> <button label="強制瞬間傳送一位居民回家..." name="kick_btn"/> <button label="強制瞬間傳送所有居民回家..." name="kick_all_btn"/> - <button label="傳送訊息到地區..." name="im_btn"/> + <button label="送出訊息到地區..." name="im_btn"/> <button label="管理瞬間傳送中心..." name="manage_telehub_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray.xml b/indra/newview/skins/default/xui/zh/panel_side_tray.xml index 85ac4613dd..625213e376 100644 --- a/indra/newview/skins/default/xui/zh/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/zh/panel_side_tray.xml @@ -6,7 +6,7 @@ <sidetray_tab description="首頁。" name="sidebar_home" tab_title="首頁"> <panel label="首頁" name="panel_home"/> </sidetray_tab> - <sidetray_tab description="編輯你的公開檔案及精選。" name="sidebar_me" tab_title="我的檔案"> + <sidetray_tab description="編輯你的公開檔案及精選地點。" name="sidebar_me" tab_title="我的檔案"> <panel_container name="panel_container"> <panel label="自己" name="panel_me"/> </panel_container> diff --git a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml index 6c81ede76c..a2a63db000 100644 --- a/indra/newview/skins/default/xui/zh/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/zh/panel_teleport_history.xml @@ -2,7 +2,7 @@ <panel name="Teleport History"> <accordion name="history_accordion"> <no_matched_tabs_text name="no_matched_teleports_msg" value="沒有發現你要找的嗎?試試 [secondlife:///app/search/places/[SEARCH_TERM] 搜尋]。"/> - <no_visible_tabs_text name="no_teleports_msg" value="瞬間傳送紀錄是空白的。試試 [secondlife:///app/search/places/ 搜尋]。"/> + <no_visible_tabs_text name="no_teleports_msg" value="瞬間傳送紀錄是空白的。試試 [secondlife:///app/search/places/ Search]。"/> <accordion_tab name="today" title="今天"/> <accordion_tab name="yesterday" title="昨天"/> <accordion_tab name="2_days_ago" title="前天"/> diff --git a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml index 6f8f19b26d..7d8a502594 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_appearance.xml @@ -8,7 +8,7 @@ <button label="E" name="editappearance_btn"/> <button label="O" name="openoutfit_btn"/> <text name="currentlook_status"> - (Status) + (狀態) </text> <text name="currentlook_name"> MyOutfit With a really Long Name like MOOSE diff --git a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml index de5a10ba51..f308f2d4d0 100644 --- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml @@ -58,18 +58,18 @@ <name_box initial_value="載入中..." name="Group Name Proxy"/> <button label="Deed" label_selected="Deed" name="button deed" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."/> <text name="label click action"> - Click to: + 點擊以: </text> <combo_box name="clickaction"> - <combo_box.item label="Touch (default)" name="Touch/grab(default)"/> - <combo_box.item label="Sit on object" name="Sitonobject"/> - <combo_box.item label="Buy object" name="Buyobject"/> - <combo_box.item label="Pay object" name="Payobject"/> - <combo_box.item label="Open" name="Open"/> + <combo_box.item label="觸碰(預設)" name="Touch/grab(default)"/> + <combo_box.item label="坐在物件上" name="Sitonobject"/> + <combo_box.item label="購買物件" name="Buyobject"/> + <combo_box.item label="支付物件" name="Payobject"/> + <combo_box.item label="開啟" name="Open"/> </combo_box> <panel name="perms_inv"> <text name="perm_modify"> - You can modify this object + 你能修改這個物件 </text> <text name="Anyone can:"> 任何人: @@ -115,9 +115,9 @@ </text> </panel> <panel name="button_panel"> - <button label="Open" name="open_btn"/> - <button label="Pay" name="pay_btn"/> + <button label="開啟" name="open_btn"/> + <button label="支付" name="pay_btn"/> <button label="購買" name="buy_btn"/> - <button label="Details" name="details_btn"/> + <button label="細節" name="details_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index 211d91a707..986ab82523 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -5,19 +5,19 @@ that are returned from one component and may appear in many places--> <strings> <string name="SECOND_LIFE"> - Second Life + 第二人生 </string> <string name="APP_NAME"> - Second Life + 第二人生 </string> <string name="CAPITALIZED_APP_NAME"> - SECOND LIFE + 第二人生 </string> <string name="SECOND_LIFE_GRID"> - Second Life Grid + 第二人生網格 </string> <string name="SUPPORT_SITE"> - Second Life Support Portal + 第二人生支援入口 </string> <string name="StartupDetectingHardware"> 硬體偵測中... @@ -131,10 +131,10 @@ http://join.secondlife.com/ </string> <string name="AgentLostConnection"> - This region may be experiencing trouble. Please check your connection to the Internet. + 這個地區可能遭遇問題,請檢查你的網路連線。 </string> <string name="SavingSettings"> - Saving your settings... + 你的設定儲存中... </string> <string name="LoggingOut"> 登出中... @@ -149,10 +149,10 @@ You were sent to an invalid region. </string> <string name="TestingDisconnect"> - Testing viewer disconnect + 測試瀏覽器斷線 </string> <string name="TooltipPerson"> - Person + 人 </string> <string name="TooltipNoName"> (no name) @@ -173,41 +173,41 @@ Group Build </string> <string name="TooltipFlagNoBuild"> - No Build + 禁止建造 </string> <string name="TooltipFlagNoEdit"> - Group Build + 社團建造 </string> <string name="TooltipFlagNotSafe"> - Not Safe + 非安全 </string> <string name="TooltipFlagNoFly"> 禁止飛行 </string> <string name="TooltipFlagGroupScripts"> - Group Scripts + 社團腳本 </string> <string name="TooltipFlagNoScripts"> - No Scripts + 禁止腳本 </string> <string name="TooltipLand"> 土地: </string> <string name="TooltipMustSingleDrop"> - Only a single item can be dragged here + 只有一個物品可以被拖曳到此處 </string> <string name="TooltipPrice" value="L$[AMOUNT]:"/> <string name="TooltipHttpUrl"> 點擊以察看這個網頁 </string> <string name="TooltipSLURL"> - Click to view this location's information + 點擊以察看這個位置資訊 </string> <string name="TooltipAgentUrl"> - Click to view this Resident's profile + 點擊以察看這個居民檔案 </string> <string name="TooltipAgentInspect"> - Learn more about this Resident + 瞭解更多有關這個居民 </string> <string name="TooltipAgentMute"> Click to mute this Resident @@ -219,7 +219,7 @@ 點擊開始 IM 這位居民 </string> <string name="TooltipAgentPay"> - Click to Pay this Resident + 點擊以支付這位居民 </string> <string name="TooltipAgentOfferTeleport"> Click to offer a teleport request to this Resident @@ -268,7 +268,7 @@ IM </string> <string name="SLappAgentPay"> - Pay + 支付 </string> <string name="SLappAgentOfferTeleport"> Offer Teleport to @@ -286,7 +286,7 @@ 關閉 </string> <string name="BUTTON_RESTORE"> - Restore + 還原 </string> <string name="BUTTON_MINIMIZE"> 最小化 @@ -331,7 +331,7 @@ Avaline Caller [ORDER] </string> <string name="AssetErrorNone"> - No error + 無錯誤 </string> <string name="AssetErrorRequestFailed"> Asset request: failed @@ -361,13 +361,13 @@ Viewer and server do not agree on price </string> <string name="AssetErrorUnknownStatus"> - Unknown status + 未知狀態 </string> <string name="texture"> 材質 </string> <string name="sound"> - sound + 聲音 </string> <string name="calling card"> calling card @@ -661,13 +661,13 @@ 載入中... </string> <string name="worldmap_offline"> - Offline + 離線 </string> <string name="worldmap_item_tooltip_format"> [AREA] m² L$[PRICE] </string> <string name="worldmap_results_none_found"> - None found. + 沒有發現。 </string> <string name="Ok"> 確定 @@ -748,10 +748,10 @@ Moderate </string> <string name="SIM_ACCESS_ADULT"> - Adult + 成人 </string> <string name="SIM_ACCESS_DOWN"> - Offline + 離線 </string> <string name="SIM_ACCESS_MIN"> 未知 @@ -760,34 +760,34 @@ (未知) </string> <string name="Estate / Full Region"> - Estate / Full Region + 領地 / 完整地區 </string> <string name="Estate / Homestead"> - Estate / Homestead + 領地 / 家園 </string> <string name="Mainland / Homestead"> - Mainland / Homestead + 大陸 / 家園 </string> <string name="Mainland / Full Region"> - Mainland / Full Region + 大陸 / 完整地區 </string> <string name="all_files"> 全部檔案 </string> <string name="sound_files"> - Sounds + 聲音 </string> <string name="animation_files"> - Animations + 動作 </string> <string name="image_files"> 圖像 </string> <string name="save_file_verb"> - Save + 儲存 </string> <string name="load_file_verb"> - Load + 載入 </string> <string name="targa_image_files"> Targa 圖像 @@ -808,34 +808,34 @@ RAW File </string> <string name="compressed_image_files"> - Compressed Images + 壓縮的圖像 </string> <string name="load_files"> - Load Files + 載入檔案 </string> <string name="choose_the_directory"> - Choose Directory + 選擇目錄 </string> <string name="AvatarSetNotAway"> - Not Away + 非離開 </string> <string name="AvatarSetAway"> - Away + 離開 </string> <string name="AvatarSetNotBusy"> - Not Busy + 非忙碌 </string> <string name="AvatarSetBusy"> - Busy + 忙碌 </string> <string name="shape"> - Shape + 體形 </string> <string name="skin"> - Skin + 皮膚 </string> <string name="hair"> - Hair + 頭髮 </string> <string name="eyes"> 眼睛 @@ -877,49 +877,49 @@ Physics </string> <string name="invalid"> - invalid + 無效 </string> <string name="none"> 無 </string> <string name="shirt_not_worn"> - Shirt not worn + 襯衫未穿 </string> <string name="pants_not_worn"> - Pants not worn + 褲子未穿 </string> <string name="shoes_not_worn"> - Shoes not worn + 鞋子未穿 </string> <string name="socks_not_worn"> - Socks not worn + 襪子未穿 </string> <string name="jacket_not_worn"> - Jacket not worn + 夾克未穿 </string> <string name="gloves_not_worn"> - Gloves not worn + 手套未穿 </string> <string name="undershirt_not_worn"> - Undershirt not worn + 內衣未穿 </string> <string name="underpants_not_worn"> - Underpants not worn + 內褲未穿 </string> <string name="skirt_not_worn"> - Skirt not worn + 裙子未穿 </string> <string name="alpha_not_worn"> Alpha not worn </string> <string name="tattoo_not_worn"> - Tattoo not worn + 刺青未穿 </string> <string name="physics_not_worn"> Physics not worn </string> <string name="invalid_not_worn"> - invalid + 無效 </string> <string name="create_new_shape"> 創造新體形 @@ -931,34 +931,34 @@ 創造新頭髮 </string> <string name="create_new_eyes"> - 創耖新眼睛 + 創造新眼睛 </string> <string name="create_new_shirt"> - Create new shirt + 創造新襯衫 </string> <string name="create_new_pants"> - Create new pants + 創造新褲子 </string> <string name="create_new_shoes"> - Create new shoes + 創造新鞋子 </string> <string name="create_new_socks"> - Create new socks + 創造新襪子 </string> <string name="create_new_jacket"> - Create new jacket + 創造新夾克 </string> <string name="create_new_gloves"> - Create new gloves + 創造新手套 </string> <string name="create_new_undershirt"> - Create new undershirt + 創造新內衣 </string> <string name="create_new_underpants"> - Create new underpants + 創造新內褲 </string> <string name="create_new_skirt"> - Create new skirt + 創造新裙子 </string> <string name="create_new_alpha"> Create new alpha @@ -970,13 +970,13 @@ Create new physics </string> <string name="create_new_invalid"> - invalid + 無效 </string> <string name="NewWearable"> - New [WEARABLE_ITEM] + 新 [WEARABLE_ITEM] </string> <string name="next"> - Next + 下一個 </string> <string name="ok"> 確定 @@ -988,7 +988,7 @@ 社團通知 </string> <string name="GroupNotifySentBy"> - Sent by + 送出由 </string> <string name="GroupNotifyAttached"> Attached: @@ -1006,16 +1006,16 @@ Teleport offering </string> <string name="StartUpNotifications"> - New notifications arrived while you were away. + 當你離開時有新的通知送達。 </string> <string name="OverflowInfoChannelString"> - You have %d more notification + 你有約 %d 通知 </string> <string name="BodyPartsRightArm"> Right Arm </string> <string name="BodyPartsHead"> - Head + 頭部 </string> <string name="BodyPartsLeftArm"> Left Arm @@ -1024,7 +1024,7 @@ Left Leg </string> <string name="BodyPartsTorso"> - Torso + 軀幹 </string> <string name="BodyPartsRightLeg"> Right Leg @@ -1175,7 +1175,7 @@ 我的裝扮 </string> <string name="InvFolder Accessories"> - Accessories + 配件 </string> <string name="InvFolder Friends"> 朋友 @@ -1253,7 +1253,7 @@ 嘴 </string> <string name="Chin"> - Chin + 下巴 </string> <string name="Left Ear"> 左耳 @@ -1328,7 +1328,7 @@ [AGEDAYS] old </string> <string name="TodayOld"> - 今日剛加入 + 高日剛加入 </string> <string name="AgeYearsA"> [COUNT] 年 @@ -1469,7 +1469,7 @@ 設為非執行中 </string> <string name="CompileSuccessful"> - 編譯成功! + 編譯成功!! </string> <string name="CompileSuccessfulSaving"> 編譯成功,儲存中... @@ -1579,7 +1579,7 @@ Chest </string> <string name="ATTACH_HEAD"> - Head + 頭部 </string> <string name="ATTACH_LSHOULDER"> Left Shoulder @@ -1609,7 +1609,7 @@ Mouth </string> <string name="ATTACH_CHIN"> - Chin + 下巴 </string> <string name="ATTACH_LEAR"> Left Ear @@ -1750,7 +1750,7 @@ You haven't created any Picks or Classifieds. Click the Plus button below to create a Pick or Classified. </string> <string name="NoAvatarPicksClassifiedsText"> - User has no picks or classifieds + 使用者無精選地點或個人廣告 </string> <string name="PicksClassifiedsLoadingText"> 載入中... @@ -1955,7 +1955,7 @@ Linden Location </string> <string name="Adult"> - Adult + 成人 </string> <string name="Arts&Culture"> Arts & Culture @@ -2392,7 +2392,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Chest Size </string> <string name="Chin Angle"> - Chin Angle + 下巴角度 </string> <string name="Chin Cleft"> Chin Cleft @@ -2629,7 +2629,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Glove Length </string> <string name="Hair"> - Hair + 頭髮 </string> <string name="Hair Back"> Hair: Back @@ -3577,13 +3577,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Health </string> <string name="LocationCtrlAdultIconTooltip"> - Adult Region + 成人地區 </string> <string name="LocationCtrlModerateIconTooltip"> Moderate Region </string> <string name="LocationCtrlGeneralIconTooltip"> - General Region + 一般地區 </string> <string name="UpdaterWindowTitle"> [APP_NAME] 更新 diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml index 9702832f44..b18eb4a390 100644 --- a/indra/newview/skins/default/xui/zh/teleport_strings.xml +++ b/indra/newview/skins/default/xui/zh/teleport_strings.xml @@ -53,7 +53,7 @@ Try again in a moment. Relaying to destination. </message> <message name="sending_home"> - 傳送家位置的要求。 + 送出家位置的要求。 </message> <message name="sending_landmark"> 地標位置要求瞬間傳送中。 -- cgit v1.2.3 From 6575258ff961bb534ee26813f5f2601e792dedc9 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Fri, 17 Jun 2011 11:39:56 -0700 Subject: FIX VWR-25068 en_xui_change --- .../newview/skins/default/xui/de/floater_preview_gesture.xml | 2 +- .../newview/skins/default/xui/en/floater_preview_gesture.xml | 12 ++++++------ .../newview/skins/default/xui/nl/floater_preview_gesture.xml | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml index 6d3635fa8d..76dc623ca4 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml @@ -33,7 +33,7 @@ <text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."> Ersetzen mit: </text> - <line_editor left_delta="94" name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt." width="160"/> + <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."/> <text name="key_label"> Tastenkürzel: </text> diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml index 9f6199fada..478ae5f53f 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml @@ -50,17 +50,17 @@ name="desc_label" top_pad="25" font.style="BOLD" - width="100"> + width="105"> Description: </text> <line_editor follows="left|top" height="20" layout="topleft" - left_delta="89" + left_delta="94" name="desc" top_delta="-4" - width="175" /> + width="170" /> <text type="string" length="1" @@ -96,19 +96,19 @@ name="replace_text" tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture!" top_pad="10" - width="210"> + width="215"> Replace with: </text> <line_editor follows="left|top" height="20" layout="topleft" - left_delta="99" + left_delta="104" max_length_bytes="31" name="replace_editor" tool_tip="Replace the trigger word(s) with these words. For example, trigger 'hello' replace with 'howdy' will turn the chat 'I wanted to say hello' into 'I wanted to say howdy' as well as playing the gesture" top_delta="-4" - width="165" /> + width="160" /> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml index 7dd85460a2..c6b301841a 100644 --- a/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml @@ -15,7 +15,7 @@ <text name="trigger_label"> Trigger: </text> - <text name="replace_text" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein 'hallo' vervang door 'hoi' zal de chat 'Ik wilde hallo zeggen' veranderen in 'Ik wilde hoi zeggen', waarbij tevens het gebaar afgespeeld zal worden!" left="208"> + <text name="replace_text" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein 'hallo' vervang door 'hoi' zal de chat 'Ik wilde hallo zeggen' veranderen in 'Ik wilde hoi zeggen', waarbij tevens het gebaar afgespeeld zal worden!"> Vervangen door: </text> <line_editor name="replace_editor" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein 'hallo' vervang door 'hoi' zal de chat 'Ik wilde hallo zeggen' veranderen in 'Ik wilde hoi zeggen', waarbij tevens het gebaar afgespeeld zal worden."/> -- cgit v1.2.3 From 34674d935bb287a0202f0348d6ec9d3afb780d50 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Fri, 17 Jun 2011 11:40:48 -0700 Subject: FIX VWR-25070 --- indra/newview/skins/default/xui/ja/floater_tools.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index 0b14f92ae7..b29f744a68 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -69,7 +69,7 @@ <text name="RenderingCost" tool_tip="このオブジェクトにかかるレンダリングコストを表示"> þ: [COUNT] </text> - <check_box label="" left="116" name="checkbox uniform"/> + <check_box label="" name="checkbox uniform"/> <text label="両側を延ばす" name="checkbox uniform label"> 両側を延ばす </text> -- cgit v1.2.3 From 7f6d49df43c660b9f5632ffb8a30f90ee718cac0 Mon Sep 17 00:00:00 2001 From: Oz Linden <oz@lindenlab.com> Date: Fri, 17 Jun 2011 17:38:24 -0400 Subject: fix DOS line endings --- indra/newview/llfloatermodelpreview.h | 882 +++++++++++++++++----------------- 1 file changed, 441 insertions(+), 441 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index ccd6fef953..d4f6b4d293 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -1,441 +1,441 @@ -/** - * @file llfloatermodelpreview.h - * @brief LLFloaterModelPreview class definition - * - * $LicenseInfo:firstyear=2004&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERMODELPREVIEW_H -#define LL_LLFLOATERMODELPREVIEW_H - -#include "llfloaternamedesc.h" - -#include "lldynamictexture.h" -#include "llfloatermodelwizard.h" -#include "llquaternion.h" -#include "llmeshrepository.h" -#include "llmodel.h" -#include "llthread.h" -#include "llviewermenufile.h" - -class LLComboBox; -class LLJoint; -class LLViewerJointMesh; -class LLVOAvatar; -class LLTextBox; -class LLVertexBuffer; -class LLModelPreview; -class LLFloaterModelPreview; -class daeElement; -class domProfile_COMMON; -class domInstance_geometry; -class domNode; -class domTranslate; -class domController; -class LLMenuButton; -class LLToggleableMenu; - -typedef std::map<std::string, LLMatrix4> JointTransformMap; -typedef std::map<std::string, LLMatrix4>:: iterator JointTransformMapIt; - -const S32 NUM_LOD = 4; - -class LLModelLoader : public LLThread -{ -public: - typedef enum - { - STARTING = 0, - READING_FILE, - CREATING_FACES, - GENERATING_VERTEX_BUFFERS, - GENERATING_LOD, - DONE, - ERROR_PARSING //basically loading failed - } eLoadState; - - U32 mState; - std::string mFilename; - S32 mLod; - LLModelPreview* mPreview; - LLMatrix4 mTransform; - BOOL mFirstTransform; - LLVector3 mExtents[2]; - bool mTrySLM; - - std::map<daeElement*, LLPointer<LLModel> > mModel; - - typedef std::vector<LLPointer<LLModel> > model_list; - model_list mModelList; - - typedef std::vector<LLModelInstance> model_instance_list; - - typedef std::map<LLMatrix4, model_instance_list > scene; - - scene mScene; - - typedef std::queue<LLPointer<LLModel> > model_queue; - - //queue of models that need a physics rep - model_queue mPhysicsQ; - - LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap, - std::deque<std::string>& jointsFromNodes ); - ~LLModelLoader() ; - - virtual void run(); - bool doLoadModel(); - bool loadFromSLM(const std::string& filename); - void loadModelCallback(); - - void loadTextures() ; //called in the main thread. - void processElement(daeElement* element, bool& badElement); - std::vector<LLImportMaterial> getMaterials(LLModel* model, domInstance_geometry* instance_geo); - LLImportMaterial profileToMaterial(domProfile_COMMON* material); - std::string getElementLabel(daeElement *element); - LLColor4 getDaeColor(daeElement* element); - - daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); - - bool isNodeAJoint( domNode* pNode ); - void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); - void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); - void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); - - void setLoadState(U32 state); - - void buildJointToNodeMappingFromScene( daeElement* pRoot ); - void processJointToNodeMapping( domNode* pNode ); - - - //map of avatar joints as named in COLLADA assets to internal joint names - std::map<std::string, std::string> mJointMap; - JointTransformMap& mJointList; - std::deque<std::string>& mJointsFromNode; - - S32 mNumOfFetchingTextures ; //updated in the main thread - bool areTexturesReady() { return !mNumOfFetchingTextures; } //called in the main thread. - -private: - static std::list<LLModelLoader*> sActiveLoaderList; - static bool isAlive(LLModelLoader* loader) ; -}; - -class LLFloaterModelPreview : public LLFloater -{ -public: - - class DecompRequest : public LLPhysicsDecomp::Request - { - public: - S32 mContinue; - LLPointer<LLModel> mModel; - - DecompRequest(const std::string& stage, LLModel* mdl); - virtual S32 statusCallback(const char* status, S32 p1, S32 p2); - virtual void completed(); - - }; - static LLFloaterModelPreview* sInstance; - - LLFloaterModelPreview(const LLSD& key); - virtual ~LLFloaterModelPreview(); - - virtual BOOL postBuild(); - - BOOL handleMouseDown(S32 x, S32 y, MASK mask); - BOOL handleMouseUp(S32 x, S32 y, MASK mask); - BOOL handleHover(S32 x, S32 y, MASK mask); - BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); - - static void onMouseCaptureLostModelPreview(LLMouseHandler*); - static void setUploadAmount(S32 amount) { sUploadAmount = amount; } - - void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost); - - static void onBrowseLOD(void* data); - - static void onReset(void* data); - - static void onUpload(void* data); - - static void onClearMaterials(void* data); - - static void refresh(LLUICtrl* ctrl, void* data); - - void updateResourceCost(); - - void loadModel(S32 lod); - - void onViewOptionChecked(const LLSD& userdata); - bool isViewOptionChecked(const LLSD& userdata); - bool isViewOptionEnabled(const LLSD& userdata); - void setViewOptionEnabled(const std::string& option, bool enabled); - void enableViewOption(const std::string& option); - void disableViewOption(const std::string& option); - -protected: - friend class LLModelPreview; - friend class LLMeshFilePicker; - friend class LLPhysicsDecomp; - - static void onImportScaleCommit(LLUICtrl*, void*); - static void onPelvisOffsetCommit(LLUICtrl*, void*); - static void onUploadJointsCommit(LLUICtrl*,void*); - static void onUploadSkinCommit(LLUICtrl*,void*); - - static void onPhysicsLoadRadioCommit(LLUICtrl*,void *data); - - static void onPreviewLODCommit(LLUICtrl*,void*); - - static void onGenerateNormalsCommit(LLUICtrl*,void*); - - static void onAutoFillCommit(LLUICtrl*,void*); - static void onLODParamCommit(LLUICtrl*,void*); - static void onLODParamCommitTriangleLimit(LLUICtrl*,void*); - - static void onExplodeCommit(LLUICtrl*, void*); - - static void onPhysicsParamCommit(LLUICtrl* ctrl, void* userdata); - static void onPhysicsStageExecute(LLUICtrl* ctrl, void* userdata); - static void onCancel(LLUICtrl* ctrl, void* userdata); - static void onPhysicsStageCancel(LLUICtrl* ctrl, void* userdata); - - static void onPhysicsBrowse(LLUICtrl* ctrl, void* userdata); - static void onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata); - static void onPhysicsOptimize(LLUICtrl* ctrl, void* userdata); - static void onPhysicsDecomposeBack(LLUICtrl* ctrl, void* userdata); - static void onPhysicsSimplifyBack(LLUICtrl* ctrl, void* userdata); - - void draw(); - - void initDecompControls(); - - void setStatusMessage(const std::string& msg); - - LLModelPreview* mModelPreview; - - LLPhysicsDecomp::decomp_params mDecompParams; - - S32 mLastMouseX; - S32 mLastMouseY; - LLRect mPreviewRect; - U32 mGLName; - static S32 sUploadAmount; - - std::set<LLPointer<DecompRequest> > mCurRequest; - std::string mStatusMessage; - - //use "disabled" as false by default - std::map<std::string, bool> mViewOptionDisabled; - - //store which lod mode each LOD is using - // 0 - load from file - // 1 - auto generate - // 2 - None - S32 mLODMode[4]; - - LLMenuButton* mViewOptionMenuButton; - LLToggleableMenu* mViewOptionMenu; - LLMutex* mStatusLock; - -}; - -class LLMeshFilePicker : public LLFilePickerThread -{ -public: - LLMeshFilePicker(LLModelPreview* mp, S32 lod); - virtual void notify(const std::string& filename); - -private: - LLModelPreview* mMP; - S32 mLOD; -}; - - -class LLModelPreview : public LLViewerDynamicTexture, public LLMutex -{ - typedef boost::signals2::signal<void (F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)> details_signal_t; - typedef boost::signals2::signal<void (void)> model_loaded_signal_t; - -public: - LLModelPreview(S32 width, S32 height, LLFloater* fmp); - virtual ~LLModelPreview(); - - void resetPreviewTarget(); - void setPreviewTarget(F32 distance); - void setTexture(U32 name) { mTextureName = name; } - - void setPhysicsFromLOD(S32 lod); - BOOL render(); - void update(); - void genBuffers(S32 lod, bool skinned); - void clearBuffers(); - void refresh(); - void rotate(F32 yaw_radians, F32 pitch_radians); - void zoom(F32 zoom_amt); - void pan(F32 right, F32 up); - virtual BOOL needsRender() { return mNeedsUpdate; } - void setPreviewLOD(S32 lod); - void clearModel(S32 lod); - void loadModel(std::string filename, S32 lod); - void loadModelCallback(S32 lod); - void genLODs(S32 which_lod = -1, U32 decimation = 3, bool enforce_tri_limit = false); - void generateNormals(); - void clearMaterials(); - U32 calcResourceCost(); - void rebuildUploadData(); - void saveUploadData(bool save_skinweights, bool save_joint_poisitions); - void saveUploadData(const std::string& filename, bool save_skinweights, bool save_joint_poisitions); - void clearIncompatible(S32 lod); - void updateStatusMessages(); - void clearGLODGroup(); - void onLODParamCommit(bool enforce_tri_limit); - - const bool getModelPivot( void ) const { return mHasPivot; } - void setHasPivot( bool val ) { mHasPivot = val; } - void setModelPivot( const LLVector3& pivot ) { mModelPivot = pivot; } - - //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) - void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); - void critiqueJointToNodeMappingFromScene( void ); - //Is a rig valid so that it can be used as a criteria for allowing for uploading of joint positions - //Accessors for joint position upload friendly rigs - const bool isRigValidForJointPositionUpload( void ) const { return mRigValidJointUpload; } - void setRigValidForJointPositionUpload( bool rigValid ) { mRigValidJointUpload = rigValid; } - bool isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ); - //Determines if a rig is a legacy from the joint list - bool isRigLegacy( const std::vector<std::string> &jointListFromAsset ); - //Accessors for the legacy rigs - const bool isLegacyRigValid( void ) const { return mLegacyRigValid; } - void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } - //Verify that a controller matches vertex counts - bool verifyController( domController* pController ); - - static void textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata ); - - boost::signals2::connection setDetailsCallback( const details_signal_t::slot_type& cb ){ return mDetailsSignal.connect(cb); } - boost::signals2::connection setModelLoadedCallback( const model_loaded_signal_t::slot_type& cb ){ return mModelLoadedSignal.connect(cb); } - - void setLoadState( U32 state ) { mLoadState = state; } - U32 getLoadState() { return mLoadState; } - //setRestJointFlag: If an asset comes through that changes the joints, we want the reset to persist - void setResetJointFlag( bool state ) { if ( !mResetJoints ) mResetJoints = state; } - const bool getResetJointFlag( void ) const { return mResetJoints; } - void setRigWithSceneParity( bool state ) { mRigParityWithScene = state; } - const bool getRigWithSceneParity( void ) const { return mRigParityWithScene; } - - LLVector3 getTranslationForJointOffset( std::string joint ); - -private: - //Utility function for controller vertex compare - bool verifyCount( int expected, int result ); - //Creates the dummy avatar for the preview window - void createPreviewAvatar( void ); - //Accessor for the dummy avatar - LLVOAvatar* getPreviewAvatar( void ) { return mPreviewAvatar; } - - protected: - friend class LLModelLoader; - friend class LLFloaterModelPreview; - friend class LLFloaterModelWizard; - friend class LLFloaterModelPreview::DecompRequest; - friend class LLFloaterModelWizard::DecompRequest; - friend class LLPhysicsDecomp; - - LLFloater* mFMP; - - BOOL mNeedsUpdate; - bool mDirty; - bool mGenLOD; - U32 mTextureName; - F32 mCameraDistance; - F32 mCameraYaw; - F32 mCameraPitch; - F32 mCameraZoom; - LLVector3 mCameraOffset; - LLVector3 mPreviewTarget; - LLVector3 mPreviewScale; - S32 mPreviewLOD; - U32 mResourceCost; - std::string mLODFile[LLModel::NUM_LODS]; - bool mLoading; - U32 mLoadState; - bool mResetJoints; - bool mRigParityWithScene; - - std::map<std::string, bool> mViewOption; - - //GLOD object parameters (must rebuild object if these change) - bool mLODFrozen; - F32 mBuildShareTolerance; - U32 mBuildQueueMode; - U32 mBuildOperator; - U32 mBuildBorderMode; - U32 mRequestedLoDMode[LLModel::NUM_LODS]; - S32 mRequestedTriangleCount[LLModel::NUM_LODS]; - F32 mRequestedErrorThreshold[LLModel::NUM_LODS]; - U32 mRequestedBuildOperator[LLModel::NUM_LODS]; - U32 mRequestedQueueMode[LLModel::NUM_LODS]; - U32 mRequestedBorderMode[LLModel::NUM_LODS]; - F32 mRequestedShareTolerance[LLModel::NUM_LODS]; - F32 mRequestedCreaseAngle[LLModel::NUM_LODS]; - - LLModelLoader* mModelLoader; - - LLModelLoader::scene mScene[LLModel::NUM_LODS]; - LLModelLoader::scene mBaseScene; - - LLModelLoader::model_list mModel[LLModel::NUM_LODS]; - LLModelLoader::model_list mBaseModel; - - U32 mGroup; - std::map<LLPointer<LLModel>, U32> mObject; - U32 mMaxTriangleLimit; - - LLMeshUploadThread::instance_list mUploadData; - std::set<LLViewerFetchedTexture* > mTextureSet; - - //map of vertex buffers to models (one vertex buffer in vector per face in model - std::map<LLModel*, std::vector<LLPointer<LLVertexBuffer> > > mVertexBuffer[LLModel::NUM_LODS+1]; - - details_signal_t mDetailsSignal; - model_loaded_signal_t mModelLoadedSignal; - - LLVector3 mModelPivot; - bool mHasPivot; - - float mPelvisZOffset; - - bool mRigValidJointUpload; - bool mLegacyRigValid; - - bool mLastJointUpdate; - - std::deque<std::string> mMasterJointList; - std::deque<std::string> mMasterLegacyJointList; - std::deque<std::string> mJointsFromNode; - JointTransformMap mJointTransformMap; - LLPointer<LLVOAvatar> mPreviewAvatar; -}; - -#endif // LL_LLFLOATERMODELPREVIEW_H +/** + * @file llfloatermodelpreview.h + * @brief LLFloaterModelPreview class definition + * + * $LicenseInfo:firstyear=2004&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLFLOATERMODELPREVIEW_H +#define LL_LLFLOATERMODELPREVIEW_H + +#include "llfloaternamedesc.h" + +#include "lldynamictexture.h" +#include "llfloatermodelwizard.h" +#include "llquaternion.h" +#include "llmeshrepository.h" +#include "llmodel.h" +#include "llthread.h" +#include "llviewermenufile.h" + +class LLComboBox; +class LLJoint; +class LLViewerJointMesh; +class LLVOAvatar; +class LLTextBox; +class LLVertexBuffer; +class LLModelPreview; +class LLFloaterModelPreview; +class daeElement; +class domProfile_COMMON; +class domInstance_geometry; +class domNode; +class domTranslate; +class domController; +class LLMenuButton; +class LLToggleableMenu; + +typedef std::map<std::string, LLMatrix4> JointTransformMap; +typedef std::map<std::string, LLMatrix4>:: iterator JointTransformMapIt; + +const S32 NUM_LOD = 4; + +class LLModelLoader : public LLThread +{ +public: + typedef enum + { + STARTING = 0, + READING_FILE, + CREATING_FACES, + GENERATING_VERTEX_BUFFERS, + GENERATING_LOD, + DONE, + ERROR_PARSING //basically loading failed + } eLoadState; + + U32 mState; + std::string mFilename; + S32 mLod; + LLModelPreview* mPreview; + LLMatrix4 mTransform; + BOOL mFirstTransform; + LLVector3 mExtents[2]; + bool mTrySLM; + + std::map<daeElement*, LLPointer<LLModel> > mModel; + + typedef std::vector<LLPointer<LLModel> > model_list; + model_list mModelList; + + typedef std::vector<LLModelInstance> model_instance_list; + + typedef std::map<LLMatrix4, model_instance_list > scene; + + scene mScene; + + typedef std::queue<LLPointer<LLModel> > model_queue; + + //queue of models that need a physics rep + model_queue mPhysicsQ; + + LLModelLoader( std::string filename, S32 lod, LLModelPreview* preview, JointTransformMap& jointMap, + std::deque<std::string>& jointsFromNodes ); + ~LLModelLoader() ; + + virtual void run(); + bool doLoadModel(); + bool loadFromSLM(const std::string& filename); + void loadModelCallback(); + + void loadTextures() ; //called in the main thread. + void processElement(daeElement* element, bool& badElement); + std::vector<LLImportMaterial> getMaterials(LLModel* model, domInstance_geometry* instance_geo); + LLImportMaterial profileToMaterial(domProfile_COMMON* material); + std::string getElementLabel(daeElement *element); + LLColor4 getDaeColor(daeElement* element); + + daeElement* getChildFromElement( daeElement* pElement, std::string const & name ); + + bool isNodeAJoint( domNode* pNode ); + void processJointNode( domNode* pNode, std::map<std::string,LLMatrix4>& jointTransforms ); + void extractTranslation( domTranslate* pTranslate, LLMatrix4& transform ); + void extractTranslationViaElement( daeElement* pTranslateElement, LLMatrix4& transform ); + + void setLoadState(U32 state); + + void buildJointToNodeMappingFromScene( daeElement* pRoot ); + void processJointToNodeMapping( domNode* pNode ); + + + //map of avatar joints as named in COLLADA assets to internal joint names + std::map<std::string, std::string> mJointMap; + JointTransformMap& mJointList; + std::deque<std::string>& mJointsFromNode; + + S32 mNumOfFetchingTextures ; //updated in the main thread + bool areTexturesReady() { return !mNumOfFetchingTextures; } //called in the main thread. + +private: + static std::list<LLModelLoader*> sActiveLoaderList; + static bool isAlive(LLModelLoader* loader) ; +}; + +class LLFloaterModelPreview : public LLFloater +{ +public: + + class DecompRequest : public LLPhysicsDecomp::Request + { + public: + S32 mContinue; + LLPointer<LLModel> mModel; + + DecompRequest(const std::string& stage, LLModel* mdl); + virtual S32 statusCallback(const char* status, S32 p1, S32 p2); + virtual void completed(); + + }; + static LLFloaterModelPreview* sInstance; + + LLFloaterModelPreview(const LLSD& key); + virtual ~LLFloaterModelPreview(); + + virtual BOOL postBuild(); + + BOOL handleMouseDown(S32 x, S32 y, MASK mask); + BOOL handleMouseUp(S32 x, S32 y, MASK mask); + BOOL handleHover(S32 x, S32 y, MASK mask); + BOOL handleScrollWheel(S32 x, S32 y, S32 clicks); + + static void onMouseCaptureLostModelPreview(LLMouseHandler*); + static void setUploadAmount(S32 amount) { sUploadAmount = amount; } + + void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost); + + static void onBrowseLOD(void* data); + + static void onReset(void* data); + + static void onUpload(void* data); + + static void onClearMaterials(void* data); + + static void refresh(LLUICtrl* ctrl, void* data); + + void updateResourceCost(); + + void loadModel(S32 lod); + + void onViewOptionChecked(const LLSD& userdata); + bool isViewOptionChecked(const LLSD& userdata); + bool isViewOptionEnabled(const LLSD& userdata); + void setViewOptionEnabled(const std::string& option, bool enabled); + void enableViewOption(const std::string& option); + void disableViewOption(const std::string& option); + +protected: + friend class LLModelPreview; + friend class LLMeshFilePicker; + friend class LLPhysicsDecomp; + + static void onImportScaleCommit(LLUICtrl*, void*); + static void onPelvisOffsetCommit(LLUICtrl*, void*); + static void onUploadJointsCommit(LLUICtrl*,void*); + static void onUploadSkinCommit(LLUICtrl*,void*); + + static void onPhysicsLoadRadioCommit(LLUICtrl*,void *data); + + static void onPreviewLODCommit(LLUICtrl*,void*); + + static void onGenerateNormalsCommit(LLUICtrl*,void*); + + static void onAutoFillCommit(LLUICtrl*,void*); + static void onLODParamCommit(LLUICtrl*,void*); + static void onLODParamCommitTriangleLimit(LLUICtrl*,void*); + + static void onExplodeCommit(LLUICtrl*, void*); + + static void onPhysicsParamCommit(LLUICtrl* ctrl, void* userdata); + static void onPhysicsStageExecute(LLUICtrl* ctrl, void* userdata); + static void onCancel(LLUICtrl* ctrl, void* userdata); + static void onPhysicsStageCancel(LLUICtrl* ctrl, void* userdata); + + static void onPhysicsBrowse(LLUICtrl* ctrl, void* userdata); + static void onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata); + static void onPhysicsOptimize(LLUICtrl* ctrl, void* userdata); + static void onPhysicsDecomposeBack(LLUICtrl* ctrl, void* userdata); + static void onPhysicsSimplifyBack(LLUICtrl* ctrl, void* userdata); + + void draw(); + + void initDecompControls(); + + void setStatusMessage(const std::string& msg); + + LLModelPreview* mModelPreview; + + LLPhysicsDecomp::decomp_params mDecompParams; + + S32 mLastMouseX; + S32 mLastMouseY; + LLRect mPreviewRect; + U32 mGLName; + static S32 sUploadAmount; + + std::set<LLPointer<DecompRequest> > mCurRequest; + std::string mStatusMessage; + + //use "disabled" as false by default + std::map<std::string, bool> mViewOptionDisabled; + + //store which lod mode each LOD is using + // 0 - load from file + // 1 - auto generate + // 2 - None + S32 mLODMode[4]; + + LLMenuButton* mViewOptionMenuButton; + LLToggleableMenu* mViewOptionMenu; + LLMutex* mStatusLock; + +}; + +class LLMeshFilePicker : public LLFilePickerThread +{ +public: + LLMeshFilePicker(LLModelPreview* mp, S32 lod); + virtual void notify(const std::string& filename); + +private: + LLModelPreview* mMP; + S32 mLOD; +}; + + +class LLModelPreview : public LLViewerDynamicTexture, public LLMutex +{ + typedef boost::signals2::signal<void (F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)> details_signal_t; + typedef boost::signals2::signal<void (void)> model_loaded_signal_t; + +public: + LLModelPreview(S32 width, S32 height, LLFloater* fmp); + virtual ~LLModelPreview(); + + void resetPreviewTarget(); + void setPreviewTarget(F32 distance); + void setTexture(U32 name) { mTextureName = name; } + + void setPhysicsFromLOD(S32 lod); + BOOL render(); + void update(); + void genBuffers(S32 lod, bool skinned); + void clearBuffers(); + void refresh(); + void rotate(F32 yaw_radians, F32 pitch_radians); + void zoom(F32 zoom_amt); + void pan(F32 right, F32 up); + virtual BOOL needsRender() { return mNeedsUpdate; } + void setPreviewLOD(S32 lod); + void clearModel(S32 lod); + void loadModel(std::string filename, S32 lod); + void loadModelCallback(S32 lod); + void genLODs(S32 which_lod = -1, U32 decimation = 3, bool enforce_tri_limit = false); + void generateNormals(); + void clearMaterials(); + U32 calcResourceCost(); + void rebuildUploadData(); + void saveUploadData(bool save_skinweights, bool save_joint_poisitions); + void saveUploadData(const std::string& filename, bool save_skinweights, bool save_joint_poisitions); + void clearIncompatible(S32 lod); + void updateStatusMessages(); + void clearGLODGroup(); + void onLODParamCommit(bool enforce_tri_limit); + + const bool getModelPivot( void ) const { return mHasPivot; } + void setHasPivot( bool val ) { mHasPivot = val; } + void setModelPivot( const LLVector3& pivot ) { mModelPivot = pivot; } + + //Determines the viability of an asset to be used as an avatar rig (w or w/o joint upload caps) + void critiqueRigForUploadApplicability( const std::vector<std::string> &jointListFromAsset ); + void critiqueJointToNodeMappingFromScene( void ); + //Is a rig valid so that it can be used as a criteria for allowing for uploading of joint positions + //Accessors for joint position upload friendly rigs + const bool isRigValidForJointPositionUpload( void ) const { return mRigValidJointUpload; } + void setRigValidForJointPositionUpload( bool rigValid ) { mRigValidJointUpload = rigValid; } + bool isRigSuitableForJointPositionUpload( const std::vector<std::string> &jointListFromAsset ); + //Determines if a rig is a legacy from the joint list + bool isRigLegacy( const std::vector<std::string> &jointListFromAsset ); + //Accessors for the legacy rigs + const bool isLegacyRigValid( void ) const { return mLegacyRigValid; } + void setLegacyRigValid( bool rigValid ) { mLegacyRigValid = rigValid; } + //Verify that a controller matches vertex counts + bool verifyController( domController* pController ); + + static void textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata ); + + boost::signals2::connection setDetailsCallback( const details_signal_t::slot_type& cb ){ return mDetailsSignal.connect(cb); } + boost::signals2::connection setModelLoadedCallback( const model_loaded_signal_t::slot_type& cb ){ return mModelLoadedSignal.connect(cb); } + + void setLoadState( U32 state ) { mLoadState = state; } + U32 getLoadState() { return mLoadState; } + //setRestJointFlag: If an asset comes through that changes the joints, we want the reset to persist + void setResetJointFlag( bool state ) { if ( !mResetJoints ) mResetJoints = state; } + const bool getResetJointFlag( void ) const { return mResetJoints; } + void setRigWithSceneParity( bool state ) { mRigParityWithScene = state; } + const bool getRigWithSceneParity( void ) const { return mRigParityWithScene; } + + LLVector3 getTranslationForJointOffset( std::string joint ); + +private: + //Utility function for controller vertex compare + bool verifyCount( int expected, int result ); + //Creates the dummy avatar for the preview window + void createPreviewAvatar( void ); + //Accessor for the dummy avatar + LLVOAvatar* getPreviewAvatar( void ) { return mPreviewAvatar; } + + protected: + friend class LLModelLoader; + friend class LLFloaterModelPreview; + friend class LLFloaterModelWizard; + friend class LLFloaterModelPreview::DecompRequest; + friend class LLFloaterModelWizard::DecompRequest; + friend class LLPhysicsDecomp; + + LLFloater* mFMP; + + BOOL mNeedsUpdate; + bool mDirty; + bool mGenLOD; + U32 mTextureName; + F32 mCameraDistance; + F32 mCameraYaw; + F32 mCameraPitch; + F32 mCameraZoom; + LLVector3 mCameraOffset; + LLVector3 mPreviewTarget; + LLVector3 mPreviewScale; + S32 mPreviewLOD; + U32 mResourceCost; + std::string mLODFile[LLModel::NUM_LODS]; + bool mLoading; + U32 mLoadState; + bool mResetJoints; + bool mRigParityWithScene; + + std::map<std::string, bool> mViewOption; + + //GLOD object parameters (must rebuild object if these change) + bool mLODFrozen; + F32 mBuildShareTolerance; + U32 mBuildQueueMode; + U32 mBuildOperator; + U32 mBuildBorderMode; + U32 mRequestedLoDMode[LLModel::NUM_LODS]; + S32 mRequestedTriangleCount[LLModel::NUM_LODS]; + F32 mRequestedErrorThreshold[LLModel::NUM_LODS]; + U32 mRequestedBuildOperator[LLModel::NUM_LODS]; + U32 mRequestedQueueMode[LLModel::NUM_LODS]; + U32 mRequestedBorderMode[LLModel::NUM_LODS]; + F32 mRequestedShareTolerance[LLModel::NUM_LODS]; + F32 mRequestedCreaseAngle[LLModel::NUM_LODS]; + + LLModelLoader* mModelLoader; + + LLModelLoader::scene mScene[LLModel::NUM_LODS]; + LLModelLoader::scene mBaseScene; + + LLModelLoader::model_list mModel[LLModel::NUM_LODS]; + LLModelLoader::model_list mBaseModel; + + U32 mGroup; + std::map<LLPointer<LLModel>, U32> mObject; + U32 mMaxTriangleLimit; + + LLMeshUploadThread::instance_list mUploadData; + std::set<LLViewerFetchedTexture* > mTextureSet; + + //map of vertex buffers to models (one vertex buffer in vector per face in model + std::map<LLModel*, std::vector<LLPointer<LLVertexBuffer> > > mVertexBuffer[LLModel::NUM_LODS+1]; + + details_signal_t mDetailsSignal; + model_loaded_signal_t mModelLoadedSignal; + + LLVector3 mModelPivot; + bool mHasPivot; + + float mPelvisZOffset; + + bool mRigValidJointUpload; + bool mLegacyRigValid; + + bool mLastJointUpdate; + + std::deque<std::string> mMasterJointList; + std::deque<std::string> mMasterLegacyJointList; + std::deque<std::string> mJointsFromNode; + JointTransformMap mJointTransformMap; + LLPointer<LLVOAvatar> mPreviewAvatar; +}; + +#endif // LL_LLFLOATERMODELPREVIEW_H -- cgit v1.2.3 From 83b4eb22013955a9616e6ed9b9351f4c34d94e35 Mon Sep 17 00:00:00 2001 From: Aaron Stone <stone@lindenlab.com> Date: Mon, 20 Jun 2011 16:42:31 -0700 Subject: SH-1618 isFullbright causes AvatarEyes GL shader to fail to link. --- indra/newview/llviewershadermgr.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index e3ed2d0649..da4d0548d0 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -1288,7 +1288,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredAvatarEyesProgram.mFeatures.calculatesAtmospherics = true; gDeferredAvatarEyesProgram.mFeatures.hasGamma = true; gDeferredAvatarEyesProgram.mFeatures.hasTransport = true; - gDeferredAvatarEyesProgram.mFeatures.isFullbright = true; gDeferredAvatarEyesProgram.mFeatures.disableTextureIndex = true; gDeferredAvatarEyesProgram.mShaderFiles.clear(); gDeferredAvatarEyesProgram.mShaderFiles.push_back(make_pair("deferred/avatarEyesV.glsl", GL_VERTEX_SHADER_ARB)); -- cgit v1.2.3 From 47c49b5bc564675b4e4b5c21f3c5ea0005980ae6 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Mon, 20 Jun 2011 11:22:02 -0700 Subject: sync with viewer-development --- .../skins/default/xui/en/floater_model_preview.xml | 16 ++++++++++++++++ .../skins/default/xui/en/floater_model_wizard.xml | 4 +++- indra/newview/skins/default/xui/en/floater_tools.xml | 11 ++++------- indra/newview/skins/default/xui/en/notifications.xml | 4 +++- 4 files changed, 26 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index dce55dae12..f58595b3c5 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -4,9 +4,11 @@ name="Model Preview" title="Upload Model" width="620"> <string name="status_idle">Idle</string> + <string name="status_parse_error">Dae parsing issue - see log for details.</string> <string name="status_reading_file">Loading...</string> <string name="status_generating_meshes">Generating Meshes...</string> <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="bad_element">Error: element is invalid</string> <string name="high">High</string> <string name="medium">Medium</string> <string name="low">Low</string> @@ -83,6 +85,20 @@ </text> </panel> + <check_box + height="16" + left_delta="0" + name="confirm_checkbox" + top_pad="15" + follows="bottom|left" + width="16" /> + + <text + height="30" + width="570" + word_wrap="true" + left_delta="25" + top_delta="0">I confirm that I have the appropriate rights to the material contained in this model. [secondlife:///app/floater/learn_more Learn more]</text> <text left="10" bottom="540" width="290" height="15" follows="bottom|left|right" name="status">[STATUS]</text> diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 47b2e5fd79..8603682e3a 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1019,9 +1019,11 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se <spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> <string name="status_idle">Idle</string> + <string name="status_parse_error">Dae parsing issue - see log for details.</string> <string name="status_reading_file">Loading...</string> <string name="status_generating_meshes">Generating Meshes...</string> - <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string> + <string name="bad_element">Error: element is invalid</string> <string name="high">High</string> <string name="medium">Medium</string> <string name="low">Low</string> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 40bf7bfed7..7441b2cd9c 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2098,11 +2098,7 @@ even though the user gets a free copy. label="Cylinder" name="Cylinder" value="Cylinder" /> - <combo_box.item - label="Mesh" - name="Mesh" - value="Mesh" /> - </combo_box> + </combo_box> </panel> <panel border="false" @@ -2461,8 +2457,9 @@ even though the user gets a free copy. height="19" increment="0.1" initial_value="0" - label="Density" + label="Density in 100 kg/m^3" label_width="70" + label_wrap="true" layout="topleft" left_delta="0" max_val="22587" @@ -2483,7 +2480,7 @@ even though the user gets a free copy. max_val="1" min_val="0" name="Physics Restitution" - top_pad="4" + top_pad="8" width="132" /> </panel> <panel diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index ce96c488b4..09105c1d28 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6823,7 +6823,9 @@ Select residents to share with. name="MeshUploadError" icon="alert.tga" type="alert"> - [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] + +See the log file for details. </notification> <notification -- cgit v1.2.3 From 6977c09a88f5591c135df2f8f37eaa544402e69a Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 21 Jun 2011 11:58:54 -0700 Subject: FIX VWR-25071 --- .../newview/skins/default/xui/ja/floater_tools.xml | 38 +++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index b29f744a68..f7d77d351e 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -74,8 +74,8 @@ 両側を延ばす </text> <check_box initial_value="true" label="テクスチャを引き延ばす" name="checkbox stretch textures"/> - <check_box initial_value="true" label="グリッドにスナップ" left_delta="27" name="checkbox snap to grid"/> - <combo_box left_delta="60" name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" width="76"> + <check_box initial_value="true" label="グリッドにスナップ" name="checkbox snap to grid"/> + <combo_box name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" > <combo_box.item label="インワールドグリッド" name="World"/> <combo_box.item label="ローカルグリッド" name="Local"/> <combo_box.item label="リファレンスグリッド" name="Reference"/> @@ -137,7 +137,7 @@ <text name="object_cost" tool_tip="[prims] / [physics complexity] として現在選択されているオブジェクトのコスト"> 料金: [COST] / [PHYSICS] </text> - <tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30"> + <tab_container name="Object Info Tabs" > <panel label="一般" name="General"> <panel.string name="text deed continued"> 譲渡 @@ -379,22 +379,22 @@ オブジェクトの特徴を編集: </text> <check_box label="フレキシブルパス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にします(クライアント側のみ)"/> - <spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/> - <spinner label="重力" label_width="72" name="FlexGravity" width="135"/> - <spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/> - <spinner label="風" label_width="72" name="FlexWind" width="135"/> - <spinner label="緊張" label_width="72" name="FlexTension" width="135"/> - <spinner label="X 軸方向の力" label_width="72" name="FlexForceX" width="135"/> - <spinner label="Y 軸方向の力" label_width="72" name="FlexForceY" width="135"/> - <spinner label="Z 軸方向の力" label_width="72" name="FlexForceZ" width="135"/> + <spinner label="柔軟性" name="FlexNumSections" /> + <spinner label="重力" name="FlexGravity" /> + <spinner label="ドラッグ" name="FlexFriction" /> + <spinner label="風" name="FlexWind" /> + <spinner label="緊張" name="FlexTension" /> + <spinner label="X 軸方向の力" name="FlexForceX" /> + <spinner label="Y 軸方向の力" name="FlexForceY" /> + <spinner label="Z 軸方向の力" name="FlexForceZ" /> <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光します"/> - <color_swatch label="" left_delta="74" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> + <color_swatch label="" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> <texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択します(遅延レンダリング有効時のみ)"/> - <spinner label="輝度" label_width="72" name="Light Intensity" width="135"/> + <spinner label="輝度" name="Light Intensity" /> <spinner label="FOV" name="Light FOV"/> - <spinner label="半径" label_width="72" name="Light Radius" width="135"/> + <spinner label="半径" name="Light Radius" /> <spinner label="焦点" name="Light Focus"/> - <spinner label="弱まる" label_width="72" name="Light Falloff" width="135"/> + <spinner label="弱まる" name="Light Falloff" /> <spinner label="環境" name="Light Ambiance"/> <text name="label physicsshapetype"> 実像の種類: @@ -496,18 +496,18 @@ </panel> </panel> <panel label="中身" name="Contents"> - <button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script" width="120"/> - <button label="権限" left_delta="130" name="button permissions" width="80"/> + <button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script" /> + <button label="権限" name="button permissions" /> </panel> </tab_container> <panel name="land info panel"> <text name="label_parcel_info"> 区画情報 </text> - <text name="label_area_price" width="200"> + <text name="label_area_price" > 価格: [AREA] 平方メートル L$ [PRICE] </text> - <text name="label_area" width="200"> + <text name="label_area" > 面積: [AREA] 平方メートル </text> <button label="土地情報" label_selected="土地情報" name="button about land"/> -- cgit v1.2.3 From ed684fb2ed4315df38d7bc5bad8b4481ffc44549 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 21 Jun 2011 12:00:08 -0700 Subject: FIX VWR-25072 --- .../skins/default/xui/de/floater_about_land.xml | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index f1e42232c8..f0fa4386d2 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -219,38 +219,38 @@ werden. <text name="objects_available"> [COUNT] von [MAX] ([AVAILABLE] verfügbar) </text> - <text name="Primitives parcel supports:" width="200"> + <text name="Primitives parcel supports:"> Von Parzelle unterstützte Prims: </text> - <text left="204" name="object_contrib_text" width="152"> + <text name="object_contrib_text"> [COUNT] </text> <text name="Primitives on parcel:"> Prims auf Parzelle: </text> - <text left="204" name="total_objects_text" width="48"> + <text name="total_objects_text"> [COUNT] </text> - <text left="14" name="Owned by parcel owner:" width="200"> + <text name="Owned by parcel owner:" width="200"> Im Eigentum des Parzellenbesitzers: </text> - <text left="204" left_delta="200" name="owner_objects_text" width="48"> + <text left_delta="204" name="owner_objects_text"> [COUNT] </text> - <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/> - <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> - <text left="14" name="Set to group:"> + <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." tool_tip="Objekte an ihre Eigentümer zurückgeben."/> + <text name="Set to group:"> Der Gruppe zugeordnet: </text> - <text left="204" name="group_objects_text" width="48"> + <text name="group_objects_text"> [COUNT] </text> - <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/> - <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> - <text left="14" name="Owned by others:" width="128"> + <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." tool_tip="Objekte an ihre Eigentümer zurückgeben."/> + <text name="Owned by others:"> Im Eigentum anderer: </text> - <text left="204" name="other_objects_text" width="48"> + <text name="other_objects_text"> [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOther"/> -- cgit v1.2.3 From 2a3a01dcc9cef08b28715015ffc61e6c72776af6 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 21 Jun 2011 15:40:13 -0700 Subject: FIX VWR-25118 --- indra/newview/skins/default/xui/de/floater_perm_prefs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml index fd65987aa9..9be22f3ccb 100644 --- a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml @@ -9,7 +9,7 @@ </text> <check_box label="Bearbeiten" name="next_owner_modify"/> <check_box label="Kopieren" name="next_owner_copy"/> - <check_box label="Verkaufen/Weggeben" left_delta="80" name="next_owner_transfer"/> + <check_box label="Verkaufen/Weggeben" name="next_owner_transfer"/> </panel> <button label="OK" label_selected="OK" name="ok"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel"/> -- cgit v1.2.3 From 54195e81259d76fd7bc0d1fee5ef28a145626e2b Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 21 Jun 2011 16:07:28 -0700 Subject: FIX VWR-25159 --- indra/newview/skins/default/xui/es/floater_buy_currency.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml index 2f92cb55eb..43bbf0b70f 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml @@ -18,7 +18,7 @@ <text name="balance_amount"> [AMT] L$ </text> - <text name="currency_action" width="50"> + <text name="currency_action"> Quiero comprar </text> <text name="currency_label"> -- cgit v1.2.3 From c0fa40141b576ee40f016d27a8f02a08e6d49446 Mon Sep 17 00:00:00 2001 From: eli_linden <none@none> Date: Tue, 21 Jun 2011 16:15:58 -0700 Subject: FIX VWR-25160 en_xui_change --- indra/newview/skins/default/xui/en/panel_nearby_media.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml index 9bd60b935f..bfc503f05b 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -104,12 +104,12 @@ top_pad="15" left="10" name="show_text" - width="40"> + width="62"> Show: </text> <combo_box height="23" - left="50" + left="72" width="140" top_delta="-5" follows="left|top" -- cgit v1.2.3