summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/CMakeLists.txt2
-rwxr-xr-xindra/newview/app_settings/settings.xml8
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl1
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl1
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl15
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl14
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl1
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl8
-rw-r--r--indra/newview/lldrawpoolalpha.cpp17
-rw-r--r--indra/newview/lldrawpoolbump.cpp2
-rw-r--r--indra/newview/lldrawpoolwater.cpp4
-rw-r--r--indra/newview/llfloaterdebugmaterials.cpp1245
-rw-r--r--indra/newview/llfloaterdebugmaterials.h186
-rw-r--r--indra/newview/llpanelface.cpp177
-rw-r--r--indra/newview/llpanelface.h1
-rw-r--r--indra/newview/lltexturecache.h2
-rw-r--r--indra/newview/llviewerdisplay.cpp2
-rw-r--r--indra/newview/llviewerfloaterreg.cpp3
-rw-r--r--indra/newview/llwlparamset.cpp8
-rw-r--r--indra/newview/pipeline.cpp55
-rw-r--r--indra/newview/pipeline.h3
-rw-r--r--indra/newview/skins/default/xui/da/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/de/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_debug_materials.xml995
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml14
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_tools_texture.xml228
-rw-r--r--indra/newview/skins/default/xui/es/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/it/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/tr/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/zh/menu_viewer.xml2
46 files changed, 513 insertions, 2567 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 3e99bd2551..85262b55a8 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -194,7 +194,6 @@ set(viewer_SOURCE_FILES
llfloaterbuyland.cpp
llfloatercamera.cpp
llfloatercolorpicker.cpp
- llfloaterdebugmaterials.cpp
llfloaterdeleteenvpreset.cpp
llfloaterdestinations.cpp
llfloaterdisplayname.cpp
@@ -773,7 +772,6 @@ set(viewer_HEADER_FILES
llfloaterbuyland.h
llfloatercamera.h
llfloatercolorpicker.h
- llfloaterdebugmaterials.h
llfloaterdeleteenvpreset.h
llfloaterdestinations.h
llfloaterdisplayname.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7deb1284b9..258370d6f3 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8143,7 +8143,7 @@
<key>RenderSpotLightsInNondeferred</key>
<map>
<key>Comment</key>
- <string>Whether to support projectors as spotlights when Lighting and Shadows is disabled</string>
+ <string>Whether to support projectors as spotlights when Advanced Lighting Model is disabled</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -8314,7 +8314,7 @@
<key>RenderDeferred</key>
<map>
<key>Comment</key>
- <string>Use deferred rendering pipeline.</string>
+ <string>Use deferred rendering pipeline (Advanced Lighting Model).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -8502,7 +8502,7 @@
<key>RenderAutoMaskAlphaNonDeferred</key>
<map>
<key>Comment</key>
- <string>Use alpha masks where appropriate, in the non-deferred (non-'Lighting and Shadows') graphics mode</string>
+ <string>Use alpha masks where appropriate when not using the Advanced Lighting Model</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -8513,7 +8513,7 @@
<key>RenderAutoMaskAlphaDeferred</key>
<map>
<key>Comment</key>
- <string>Use alpha masks where appropriate, in the deferred ('Lighting and Shadows') graphics mode</string>
+ <string>Use alpha masks where appropriate in the Advanced Lighting Model</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index dd87ddb330..ef04ef5ce6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -59,6 +59,7 @@ void main()
vec4 pos = vec4(vary_position, 1.0);
vec4 diff= diffuseLookup(vary_texcoord0.xy);
+ diff.rgb = pow(diff.rgb, vec3(2.2));
vec4 col = vec4(vary_ambient + vary_directional.rgb, vertex_color.a);
vec4 color = diff * col;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 36433a5827..b6a9417fe7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -43,6 +43,7 @@ void main()
float shadow = 1.0;
vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color;
+ color.rgb = pow(color.rgb, vec3(2.2));
color.rgb = fullbrightAtmosTransport(color.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 9e194cdcd1..ad50690c02 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -123,13 +123,20 @@ void main()
if (spec.a > 0.0)
{
//vec3 ref = dot(pos+lv, norm);
+ vec3 h = normalize(lv+npos);
+ float nh = dot(norm, h);
+ float nv = dot(norm, npos);
+ float vh = dot(npos, h);
+ float sa = nh;
+ vec3 fres = spec.rgb + pow(1 - dot(h, npos), 5) * (1 - spec.rgb);
+ float gtdenom = 2 * nh;
+ float gt = max(0, min(gtdenom * nv / vh, gtdenom * da / vh));
- float sa = dot(normalize(lv+npos),norm);
if (sa > 0.0)
{
- sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
- col += da*sa*light_col[i].rgb*spec.rgb;
+ vec3 scol = (fres * texture2D(lightFunc, vec2(nh, spec.a)).r * gt) / (nh * da);
+ col += lit*scol*light_col[i].rgb;
}
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index bff87cb6aa..53e5a228fa 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -70,6 +70,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float det = max(1.0-lod/(proj_lod*0.5), 0.0);
@@ -85,6 +87,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
@@ -102,6 +106,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float d = dot(dist,dist);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 6e5ac8317b..03b036375b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -107,11 +107,20 @@ void main()
vec4 spec = texture2DRect(specularRect, frag.xy);
if (spec.a > 0.0)
{
- float sa = dot(normalize(lv-normalize(pos)),norm);
+ vec3 npos = -normalize(pos);
+ vec3 h = normalize(lv+npos);
+ float nh = dot(norm, h);
+ float nv = dot(norm, npos);
+ float vh = dot(npos, h);
+ float sa = nh;
+ vec3 fres = spec.rgb + pow(1 - dot(h, npos), 5) * (1 - spec.rgb);
+ float gtdenom = 2 * nh;
+ float gt = max(0,(min(gtdenom * nv / vh, gtdenom * da / vh)));
+
if (sa > 0.0)
{
- sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
- col += da*sa*color.rgb*spec.rgb;
+ vec3 scol = (fres * texture2D(lightFunc, vec2(nh, spec.a)).r * gt) / (nh * da);
+ col += lit*scol*color.rgb;
}
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index bf362e21a4..3f57b006cd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -37,6 +37,7 @@ uniform mat4 inv_proj;
uniform vec2 screen_res;
uniform float max_cof;
uniform float res_scale;
+uniform float global_gamma;
VARYING vec2 vary_fragcoord;
@@ -123,6 +124,6 @@ void main()
diff /= w;
}
-
+ diff.rgb = pow(diff.rgb, vec3(1.0/global_gamma));
frag_color = diff;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index eb5beeef39..c891c4e445 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -35,12 +35,13 @@ uniform sampler2DRect diffuseRect;
uniform sampler2D bloomMap;
uniform vec2 screen_res;
+uniform float global_gamma;
VARYING vec2 vary_fragcoord;
void main()
{
vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
-
+ diff.rgb = pow(diff.rgb, vec3(1.0/global_gamma));
vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
frag_color = diff + bloom;
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 14eaafeb68..87cdf1026f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -77,6 +77,11 @@ vec3 vary_AtmosAttenuation;
uniform mat4 inv_proj;
uniform vec2 screen_res;
+vec3 samplesRGB(vec3 color)
+{
+ return pow(color, vec3(2.2));
+}
+
vec4 getPosition_d(vec2 pos_screen, float depth)
{
vec2 sc = pos_screen.xy*2.0;
@@ -101,22 +106,21 @@ vec3 getPositionEye()
}
vec3 getSunlitColor()
{
- return vary_SunlitColor;
+ return samplesRGB(vary_SunlitColor) * 4.4;
}
vec3 getAmblitColor()
{
- return vary_AmblitColor;
+ return samplesRGB((vary_AmblitColor)) * 2.2;
}
vec3 getAdditiveColor()
{
- return vary_AdditiveColor;
+ return samplesRGB(vary_AdditiveColor) * 2.2;
}
vec3 getAtmosAttenuation()
{
return vary_AtmosAttenuation;
}
-
void setPositionEye(vec3 v)
{
vary_PositionEye = v;
@@ -310,7 +314,7 @@ void main()
//add environmentmap
vec3 env_vec = env_mat * refnormpersp;
- col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb,
+ col = mix(col.rgb, samplesRGB(textureCube(environmentMap, env_vec).rgb) * 2.2,
max(spec.a-diffuse.a*2.0, 0.0));
}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index cca63872de..9bdf87678f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -72,6 +72,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float det = max(1.0-lod/(proj_lod*0.5), 0.0);
@@ -87,6 +89,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
@@ -104,6 +108,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float d = dot(dist,dist);
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
index 6c34643aab..9543be562b 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
@@ -37,6 +37,8 @@ vec3 fullbrightScaleSoftClip(vec3 light);
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
+uniform float texture_gamma;
+
void fullbright_lighting()
{
vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
@@ -45,7 +47,7 @@ void fullbright_lighting()
{
discard;
}
-
+ color.rgb = pow(color.rgb, vec3(texture_gamma));
color.rgb = fullbrightAtmosTransport(color.rgb);
color.rgb = fullbrightScaleSoftClip(color.rgb);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 12706f130b..359864556d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -149,6 +149,7 @@ void main()
}
vec4 diff = diffuseLookup(vary_texcoord0.xy);
+ diff.rgb = pow(diff.rgb, vec3(2.2));
vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, vertex_color.a);
vec4 color = diff * col;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 5621e47ab7..695887c5ff 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -71,6 +71,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float det = max(1.0-lod/(proj_lod*0.5), 0.0);
@@ -86,6 +88,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
@@ -103,6 +107,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float d = dot(dist,dist);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 457189b48e..bf4c476138 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -79,6 +79,11 @@ vec3 vary_AmblitColor;
vec3 vary_AdditiveColor;
vec3 vary_AtmosAttenuation;
+vec3 samplesRGB(vec3 color)
+{
+ return pow(color, vec3(2.2));
+}
+
vec4 getPosition_d(vec2 pos_screen, float depth)
{
vec2 sc = pos_screen.xy*2.0;
@@ -103,15 +108,15 @@ vec3 getPositionEye()
}
vec3 getSunlitColor()
{
- return vary_SunlitColor;
+ return samplesRGB(vary_SunlitColor) * 4.4;
}
vec3 getAmblitColor()
{
- return vary_AmblitColor;
+ return samplesRGB(vary_AmblitColor) * 2.2;
}
vec3 getAdditiveColor()
{
- return vary_AdditiveColor;
+ return samplesRGB(vary_AdditiveColor) * 2.2;
}
vec3 getAtmosAttenuation()
{
@@ -318,7 +323,7 @@ void main()
//add environmentmap
vec3 env_vec = env_mat * refnormpersp;
- col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb,
+ col = mix(col.rgb, samplesRGB(textureCube(environmentMap, env_vec).rgb) * 2.2,
max(spec.a-diffuse.a*2.0, 0.0));
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 6d6ad6d565..525dd32106 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -71,6 +71,8 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float det = max(1.0-lod/(proj_lod*0.5), 0.0);
@@ -86,6 +88,8 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
@@ -103,6 +107,8 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
{
vec4 ret = texture2DLod(projectionMap, tc, lod);
+ ret.rgb = pow(ret.rgb, vec3(2.2));
+
vec2 dist = tc-vec2(0.5);
float d = dot(dist,dist);
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
index 765b0927c3..dd7de9f123 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
@@ -27,7 +27,7 @@
VARYING vec3 vary_SunlitColor;
VARYING vec3 vary_AdditiveColor;
VARYING vec3 vary_AtmosAttenuation;
-
+uniform float global_gamma;
vec3 getSunlitColor()
{
return vec3(0,0,0);
@@ -38,7 +38,7 @@ vec3 getAmblitColor()
}
vec3 getAdditiveColor()
{
- return vary_AdditiveColor;
+ return pow(vary_AdditiveColor, vec3(global_gamma)) * global_gamma;
}
vec3 getAtmosAttenuation()
{
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
index 99dbee15ee..61f3088648 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
@@ -33,18 +33,20 @@ vec3 sunlit_color;
vec3 amblit_color;
vec3 position_eye;
+uniform float global_gamma;
+
vec3 getSunlitColor()
{
- return sunlit_color;
+ return pow(sunlit_color, vec3(global_gamma)) * global_gamma;
}
vec3 getAmblitColor()
{
- return amblit_color;
+ return pow(amblit_color, vec3(global_gamma)) * global_gamma;
}
vec3 getAdditiveColor()
{
- return additive_color;
+ return pow(additive_color, vec3(global_gamma)) * global_gamma;
}
vec3 getAtmosAttenuation()
{
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 313b310e1e..33615eb075 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -240,6 +240,12 @@ void LLDrawPoolAlpha::render(S32 pass)
{
fullbright_shader->bind();
fullbright_shader->setMinimumAlpha(0.33f);
+ if (LLPipeline::sRenderingHUDs || !LLPipeline::sRenderDeferred)
+ {
+ fullbright_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0f);
+ } else {
+ fullbright_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2f);
+ }
}
pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
//LLGLSLShader::bindNoShader();
@@ -423,6 +429,17 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
if (use_shaders)
{
target_shader = fullbright_shader;
+ if (LLPipeline::sRenderDeferred)
+ {
+ if (params.mFace->getViewerObject()->isHUDAttachment())
+ {
+ target_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0);
+ } else {
+ target_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 2.2);
+ }
+ } else {
+ target_shader->uniform1f(LLShaderMgr::TEXTURE_GAMMA, 1.0);
+ }
}
else
{
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index a264eae302..718133ba29 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -153,7 +153,7 @@ void LLStandardBumpmap::addstandard()
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mLabel = label;
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage =
LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id));
- gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
+ gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP);
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setLoadedCallback(LLBumpImageList::onSourceStandardLoaded, 0, TRUE, FALSE, NULL, NULL );
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->forceToSaveRawImage(0) ;
LLStandardBumpmap::sStandardBumpmapCount++;
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 4f6eaa5a5b..9dfd69583e 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -80,7 +80,7 @@ LLDrawPoolWater::LLDrawPoolWater() :
mWaterImagep->setNoDelete();
mOpaqueWaterImagep = LLViewerTextureManager::getFetchedTexture(OPAQUE_WATER_TEXTURE);
llassert(mOpaqueWaterImagep);
- mWaterNormp = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL);
+ mWaterNormp = LLViewerTextureManager::getFetchedTexture(DEFAULT_WATER_NORMAL, TRUE, LLViewerTexture::BOOST_BUMP);
mWaterNormp->setNoDelete();
restoreGL();
@@ -563,7 +563,7 @@ void LLDrawPoolWater::shade()
// change mWaterNormp if needed
if (mWaterNormp->getID() != param_mgr->getNormalMapID())
{
- mWaterNormp = LLViewerTextureManager::getFetchedTexture(param_mgr->getNormalMapID());
+ mWaterNormp = LLViewerTextureManager::getFetchedTexture(param_mgr->getNormalMapID(), TRUE, LLViewerTexture::BOOST_BUMP);
}
mWaterNormp->addTextureStats(1024.f*1024.f);
diff --git a/indra/newview/llfloaterdebugmaterials.cpp b/indra/newview/llfloaterdebugmaterials.cpp
deleted file mode 100644
index c9f15a9c35..0000000000
--- a/indra/newview/llfloaterdebugmaterials.cpp
+++ /dev/null
@@ -1,1245 +0,0 @@
-/**
-* @file llfloaterdebugmaterials.cpp
-* @brief Implementation of llfloaterdebugmaterials
-* @author Stinson@lindenlab.com
-*
-* $LicenseInfo:firstyear=2012&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2012, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloaterdebugmaterials.h"
-
-#include <string>
-#include <vector>
-#include <map>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/bind.hpp>
-#include <boost/function.hpp>
-#include <boost/signals2.hpp>
-
-#include "llagent.h"
-#include "llbutton.h"
-#include "llcolorswatch.h"
-#include "llenvmanager.h"
-#include "llfloater.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llhttpclient.h"
-#include "lllineeditor.h"
-#include "llmaterialid.h"
-#include "llresmgr.h"
-#include "llscrolllistcell.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llsd.h"
-#include "llsdserialize.h"
-#include "llselectmgr.h"
-#include "llspinctrl.h"
-#include "llstring.h"
-#include "llstyle.h"
-#include "lltextbase.h"
-#include "lltexturectrl.h"
-#include "lltextvalidate.h"
-#include "llthread.h"
-#include "lluicolortable.h"
-#include "lluictrl.h"
-#include "lluuid.h"
-#include "llviewerobject.h"
-#include "llviewerobjectlist.h"
-#include "llviewerparcelmgr.h"
-#include "llviewerregion.h"
-#include "v4color.h"
-#include "v4coloru.h"
-
-#define MATERIALS_CAPABILITY_NAME "RenderMaterials"
-
-#define VIEWABLE_OBJECTS_REGION_ID_FIELD "regionId"
-#define VIEWABLE_OBJECTS_OBJECT_ID_FIELD "objectId"
-#define VIEWABLE_OBJECTS_MATERIAL_ID_FIELD "materialId"
-
-BOOL LLFloaterDebugMaterials::postBuild()
-{
- mStatusText = findChild<LLTextBase>("material_status");
- llassert(mStatusText != NULL);
-
- mGetButton = findChild<LLButton>("get_button");
- llassert(mGetButton != NULL);
- mGetButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetClicked, this));
-
- mParsingStatusText = findChild<LLTextBase>("loading_status");
- llassert(mParsingStatusText != NULL);
-
- mGetNormalMapScrollList = findChild<LLScrollListCtrl>("get_normal_map_scroll_list");
- llassert(mGetNormalMapScrollList != NULL);
- mGetNormalMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1));
-
- mGetSpecularMapScrollList = findChild<LLScrollListCtrl>("get_specular_map_scroll_list");
- llassert(mGetSpecularMapScrollList != NULL);
- mGetSpecularMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1));
-
- mGetOtherDataScrollList = findChild<LLScrollListCtrl>("get_other_data_scroll_list");
- llassert(mGetOtherDataScrollList != NULL);
- mGetOtherDataScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1));
-
- mNormalMap = findChild<LLTextureCtrl>("normal_map");
- llassert(mNormalMap != NULL);
-
- mNormalMapOffsetX = findChild<LLSpinCtrl>("normal_map_offset_x");
- llassert(mNormalMapOffsetX != NULL);
-
- mNormalMapOffsetY = findChild<LLSpinCtrl>("normal_map_offset_y");
- llassert(mNormalMapOffsetY != NULL);
-
- mNormalMapRepeatX = findChild<LLSpinCtrl>("normal_map_repeat_x");
- llassert(mNormalMapRepeatX != NULL);
-
- mNormalMapRepeatY = findChild<LLSpinCtrl>("normal_map_repeat_y");
- llassert(mNormalMapRepeatY != NULL);
-
- mNormalMapRotation = findChild<LLSpinCtrl>("normal_map_rotation");
- llassert(mNormalMapRotation != NULL);
-
- mSpecularMap = findChild<LLTextureCtrl>("specular_map");
- llassert(mSpecularMap != NULL);
-
- mSpecularMapOffsetX = findChild<LLSpinCtrl>("specular_map_offset_x");
- llassert(mSpecularMapOffsetX != NULL);
-
- mSpecularMapOffsetY = findChild<LLSpinCtrl>("specular_map_offset_y");
- llassert(mSpecularMapOffsetY != NULL);
-
- mSpecularMapRepeatX = findChild<LLSpinCtrl>("specular_map_repeat_x");
- llassert(mSpecularMapRepeatX != NULL);
-
- mSpecularMapRepeatY = findChild<LLSpinCtrl>("specular_map_repeat_y");
- llassert(mSpecularMapRepeatY != NULL);
-
- mSpecularMapRotation = findChild<LLSpinCtrl>("specular_map_rotation");
- llassert(mSpecularMapRotation != NULL);
-
- mSpecularColor = findChild<LLColorSwatchCtrl>("specular_color");
- llassert(mSpecularColor != NULL);
-
- mSpecularColorAlpha = findChild<LLSpinCtrl>("specular_color_alpha");
- llassert(mSpecularColorAlpha != NULL);
-
- mSpecularExponent = findChild<LLLineEditor>("specular_exponent");
- llassert(mSpecularExponent != NULL);
- mSpecularExponent->setPrevalidate(LLTextValidate::validateInt);
- mSpecularExponent->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1));
-
- mEnvironmentExponent = findChild<LLLineEditor>("environment_exponent");
- llassert(mEnvironmentExponent != NULL);
- mEnvironmentExponent->setPrevalidate(LLTextValidate::validateInt);
- mEnvironmentExponent->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1));
-
- mAlphaMaskCutoff = findChild<LLLineEditor>("alpha_mask_cutoff");
- llassert(mAlphaMaskCutoff != NULL);
- mAlphaMaskCutoff->setPrevalidate(LLTextValidate::validateInt);
- mAlphaMaskCutoff->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1));
-
- mDiffuseAlphaMode = findChild<LLLineEditor>("diffuse_alpha_mode");
- llassert(mDiffuseAlphaMode != NULL);
- mDiffuseAlphaMode->setPrevalidate(LLTextValidate::validateInt);
- mDiffuseAlphaMode->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1));
-
- mPutSetButton = findChild<LLButton>("put_set_button");
- llassert(mPutSetButton != NULL);
- mPutSetButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPutSetClicked, this));
-
- mPutClearButton = findChild<LLButton>("put_clear_button");
- llassert(mPutClearButton != NULL);
- mPutClearButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPutClearClicked, this));
-
- LLButton* resetPutValuesButton = findChild<LLButton>("reset_put_values_button");
- llassert(resetPutValuesButton != NULL);
- resetPutValuesButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onResetPutValuesClicked, this));
-
- mPutScrollList = findChild<LLScrollListCtrl>("put_scroll_list");
- llassert(mPutScrollList != NULL);
-
- mQueryViewableObjectsButton = findChild<LLButton>("query_viewable_objects_button");
- llassert(mQueryViewableObjectsButton != NULL);
- mQueryViewableObjectsButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onQueryVisibleObjectsClicked, this));
-
- mQueryStatusText = findChild<LLTextBase>("query_status");
- llassert(mQueryStatusText != NULL);
-
- mViewableObjectsScrollList = findChild<LLScrollListCtrl>("viewable_objects_scroll_list");
- llassert(mViewableObjectsScrollList != NULL);
- mViewableObjectsScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onViewableObjectsScrollListSelectionChange, this));
-
- mPostButton = findChild<LLButton>("post_button");
- llassert(mPostButton != NULL);
- mPostButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostClicked, this));
-
- mPostNormalMapScrollList = findChild<LLScrollListCtrl>("post_normal_map_scroll_list");
- llassert(mPostNormalMapScrollList != NULL);
- mPostNormalMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1));
-
- mPostSpecularMapScrollList = findChild<LLScrollListCtrl>("post_specular_map_scroll_list");
- llassert(mPostSpecularMapScrollList != NULL);
- mPostSpecularMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1));
-
- mPostOtherDataScrollList = findChild<LLScrollListCtrl>("post_other_data_scroll_list");
- llassert(mPostOtherDataScrollList != NULL);
- mPostOtherDataScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1));
-
- mDefaultSpecularColor = LLUIColorTable::instance().getColor("White");
-
- mWarningColor = LLUIColorTable::instance().getColor("MaterialWarningColor");
- mErrorColor = LLUIColorTable::instance().getColor("MaterialErrorColor");
-
- setState(kNoRegion);
-
- return LLFloater::postBuild();
-}
-
-void LLFloaterDebugMaterials::onOpen(const LLSD& pKey)
-{
- LLFloater::onOpen(pKey);
-
- if (!mRegionCrossConnection.connected())
- {
- mRegionCrossConnection = LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterDebugMaterials::onRegionCross, this));
- }
-
- if (!mTeleportFailedConnection.connected())
- {
- mTeleportFailedConnection = LLViewerParcelMgr::getInstance()->setTeleportFailedCallback(boost::bind(&LLFloaterDebugMaterials::onRegionCross, this));
- }
-
- if (!mSelectionUpdateConnection.connected())
- {
- mSelectionUpdateConnection = LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterDebugMaterials::onInWorldSelectionChange, this));
- }
-
- checkRegionMaterialStatus();
- resetObjectEditInputs();
- clearGetResults();
- clearViewableObjectsResults();
- clearPostResults();
-}
-
-void LLFloaterDebugMaterials::onClose(bool pIsAppQuitting)
-{
- resetObjectEditInputs();
- clearGetResults();
- clearViewableObjectsResults();
- clearPostResults();
-
- if (mSelectionUpdateConnection.connected())
- {
- mSelectionUpdateConnection.disconnect();
- }
-
- if (mTeleportFailedConnection.connected())
- {
- mTeleportFailedConnection.disconnect();
- }
-
- if (mRegionCrossConnection.connected())
- {
- mRegionCrossConnection.disconnect();
- }
-
- LLFloater::onClose(pIsAppQuitting);
-}
-
-void LLFloaterDebugMaterials::draw()
-{
- if (mNextUnparsedQueryDataIndex >= 0)
- {
- parseQueryViewableObjects();
- }
- if (LLSelectMgr::instance().getSelection().notNull())
- {
- refreshObjectEdit();
- }
- LLFloater::draw();
-}
-
-LLFloaterDebugMaterials::LLFloaterDebugMaterials(const LLSD& pParams)
- : LLFloater(pParams),
- mStatusText(NULL),
- mGetButton(NULL),
- mParsingStatusText(NULL),
- mGetNormalMapScrollList(NULL),
- mGetSpecularMapScrollList(NULL),
- mGetOtherDataScrollList(NULL),
- mNormalMap(NULL),
- mNormalMapOffsetX(NULL),
- mNormalMapOffsetY(NULL),
- mNormalMapRepeatX(NULL),
- mNormalMapRepeatY(NULL),
- mNormalMapRotation(NULL),
- mSpecularMap(NULL),
- mSpecularMapOffsetX(NULL),
- mSpecularMapOffsetY(NULL),
- mSpecularMapRepeatX(NULL),
- mSpecularMapRepeatY(NULL),
- mSpecularMapRotation(NULL),
- mSpecularColor(NULL),
- mSpecularColorAlpha(NULL),
- mSpecularExponent(NULL),
- mEnvironmentExponent(NULL),
- mAlphaMaskCutoff(NULL),
- mDiffuseAlphaMode(NULL),
- mPutSetButton(NULL),
- mPutClearButton(NULL),
- mPutScrollList(NULL),
- mQueryViewableObjectsButton(NULL),
- mQueryStatusText(NULL),
- mViewableObjectsScrollList(NULL),
- mPostButton(NULL),
- mPostNormalMapScrollList(NULL),
- mPostSpecularMapScrollList(NULL),
- mPostOtherDataScrollList(NULL),
- mState(kNoRegion),
- mWarningColor(),
- mErrorColor(),
- mRegionCrossConnection(),
- mTeleportFailedConnection(),
- mSelectionUpdateConnection(),
- mNextUnparsedQueryDataIndex(-1)
-{
-}
-
-LLFloaterDebugMaterials::~LLFloaterDebugMaterials()
-{
-}
-
-void LLFloaterDebugMaterials::onGetClicked()
-{
- requestGetMaterials();
-}
-
-void LLFloaterDebugMaterials::onValueEntered(LLUICtrl* pUICtrl)
-{
- LLLineEditor *pLineEditor = static_cast<LLLineEditor *>(pUICtrl);
- llassert(pLineEditor != NULL);
-
- const std::string &valueString = pLineEditor->getText();
-
- S32 intValue = 0;
- bool doResetValue = (!valueString.empty() && !LLStringUtil::convertToS32(valueString, intValue));
-
- if (doResetValue)
- {
- LL_WARNS("debugMaterials") << "cannot parse string '" << valueString << "' to an S32 value" <<LL_ENDL;
- LLSD value = static_cast<LLSD::Integer>(intValue);
- pLineEditor->setValue(value);
- }
-}
-
-void LLFloaterDebugMaterials::onPutSetClicked()
-{
- requestPutMaterials(true);
-}
-
-void LLFloaterDebugMaterials::onPutClearClicked()
-{
- requestPutMaterials(false);
-}
-
-void LLFloaterDebugMaterials::onResetPutValuesClicked()
-{
- resetObjectEditInputs();
-}
-
-void LLFloaterDebugMaterials::onQueryVisibleObjectsClicked()
-{
- clearViewableObjectsResults();
- setUnparsedQueryData();
-}
-
-void LLFloaterDebugMaterials::onPostClicked()
-{
- clearPostResults();
-
- std::vector<LLScrollListItem*> selectedItems = mViewableObjectsScrollList->getAllSelected();
- if (!selectedItems.empty())
- {
- for (std::vector<LLScrollListItem*>::const_iterator selectedItemIter = selectedItems.begin();
- selectedItemIter != selectedItems.end(); ++selectedItemIter)
- {
- const LLScrollListItem* selectedItem = *selectedItemIter;
- const LLSD& selectedItemValue = selectedItem->getValue();
- llassert(selectedItemValue.isMap());
-
- llassert(selectedItemValue.has(VIEWABLE_OBJECTS_REGION_ID_FIELD));
- llassert(selectedItemValue.get(VIEWABLE_OBJECTS_REGION_ID_FIELD).isUUID());
- const LLUUID& region_id = selectedItemValue.get(VIEWABLE_OBJECTS_REGION_ID_FIELD).asUUID();
-
- llassert(selectedItemValue.has(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD));
- llassert(selectedItemValue.get(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD).isBinary());
- const LLMaterialID material_id(selectedItemValue.get(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD).asBinary());
-
- LLMaterialMgr::instance().get(region_id, material_id, boost::bind(&LLFloaterDebugMaterials::onPostMaterial, _1, _2));
- }
- }
-}
-
-void LLFloaterDebugMaterials::onRegionCross()
-{
- checkRegionMaterialStatus();
- clearGetResults();
- clearViewableObjectsResults();
- clearPostResults();
-}
-
-void LLFloaterDebugMaterials::onInWorldSelectionChange()
-{
- updateControls();
-}
-
-void LLFloaterDebugMaterials::onGetScrollListSelectionChange(LLUICtrl* pUICtrl)
-{
- LLScrollListCtrl* scrollListCtrl = dynamic_cast<LLScrollListCtrl*>(pUICtrl);
- llassert(scrollListCtrl != NULL);
-
- if (scrollListCtrl != mGetNormalMapScrollList)
- {
- mGetNormalMapScrollList->deselectAllItems(TRUE);
- }
- if (scrollListCtrl != mGetSpecularMapScrollList)
- {
- mGetSpecularMapScrollList->deselectAllItems(TRUE);
- }
- if (scrollListCtrl != mGetOtherDataScrollList)
- {
- mGetOtherDataScrollList->deselectAllItems(TRUE);
- }
-
- std::vector<LLScrollListItem*> selectedItems = scrollListCtrl->getAllSelected();
- if (!selectedItems.empty())
- {
- llassert(selectedItems.size() == 1);
- LLScrollListItem* selectedItem = selectedItems.front();
-
- llassert(selectedItem != NULL);
- const LLSD& selectedIdValue = selectedItem->getValue();
-
- if (scrollListCtrl != mGetNormalMapScrollList)
- {
- mGetNormalMapScrollList->selectByValue(selectedIdValue);
- mGetNormalMapScrollList->scrollToShowSelected();
- }
- if (scrollListCtrl != mGetSpecularMapScrollList)
- {
- mGetSpecularMapScrollList->selectByValue(selectedIdValue);
- mGetSpecularMapScrollList->scrollToShowSelected();
- }
- if (scrollListCtrl != mGetOtherDataScrollList)
- {
- mGetOtherDataScrollList->selectByValue(selectedIdValue);
- mGetOtherDataScrollList->scrollToShowSelected();
- }
- }
-}
-
-void LLFloaterDebugMaterials::onPostScrollListSelectionChange(LLUICtrl* pUICtrl)
-{
- LLScrollListCtrl* scrollListCtrl = dynamic_cast<LLScrollListCtrl*>(pUICtrl);
- llassert(scrollListCtrl != NULL);
-
- if (scrollListCtrl != mPostNormalMapScrollList)
- {
- mPostNormalMapScrollList->deselectAllItems(TRUE);
- }
- if (scrollListCtrl != mPostSpecularMapScrollList)
- {
- mPostSpecularMapScrollList->deselectAllItems(TRUE);
- }
- if (scrollListCtrl != mPostOtherDataScrollList)
- {
- mPostOtherDataScrollList->deselectAllItems(TRUE);
- }
-
- std::vector<LLScrollListItem*> selectedItems = scrollListCtrl->getAllSelected();
- if (!selectedItems.empty())
- {
- llassert(selectedItems.size() == 1);
- LLScrollListItem* selectedItem = selectedItems.front();
-
- llassert(selectedItem != NULL);
- const LLSD& selectedIdValue = selectedItem->getValue();
-
- if (scrollListCtrl != mPostNormalMapScrollList)
- {
- mPostNormalMapScrollList->selectByValue(selectedIdValue);
- mPostNormalMapScrollList->scrollToShowSelected();
- }
- if (scrollListCtrl != mPostSpecularMapScrollList)
- {
- mPostSpecularMapScrollList->selectByValue(selectedIdValue);
- mPostSpecularMapScrollList->scrollToShowSelected();
- }
- if (scrollListCtrl != mPostOtherDataScrollList)
- {
- mPostOtherDataScrollList->selectByValue(selectedIdValue);
- mPostOtherDataScrollList->scrollToShowSelected();
- }
- }
-}
-
-void LLFloaterDebugMaterials::onViewableObjectsScrollListSelectionChange()
-{
- updateControls();
-}
-
-void LLFloaterDebugMaterials::onDeferredCheckRegionMaterialStatus(LLUUID regionId)
-{
- checkRegionMaterialStatus(regionId);
-}
-
-void LLFloaterDebugMaterials::onDeferredRequestGetMaterials(LLUUID regionId)
-{
- requestGetMaterials(regionId);
-}
-
-void LLFloaterDebugMaterials::onDeferredRequestPutMaterials(LLUUID regionId, bool pIsDoSet)
-{
- requestPutMaterials(regionId, pIsDoSet);
-}
-
-void LLFloaterDebugMaterials::checkRegionMaterialStatus()
-{
- LLViewerRegion *region = gAgent.getRegion();
-
- if (region == NULL)
- {
- LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL;
- setState(kNoRegion);
- }
- else if (!region->capabilitiesReceived())
- {
- setState(kCapabilitiesLoading);
- region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredCheckRegionMaterialStatus, this, region->getRegionID()));
- }
- else
- {
- std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME);
-
- if (capURL.empty())
- {
- LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME
- << "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL;
- setState(kNotEnabled);
- }
- else
- {
- setState(kReady);
- }
- }
-}
-
-void LLFloaterDebugMaterials::checkRegionMaterialStatus(const LLUUID& regionId)
-{
- const LLViewerRegion *region = gAgent.getRegion();
-
- if ((region != NULL) && (region->getRegionID() == regionId))
- {
- checkRegionMaterialStatus();
- }
-}
-
-void LLFloaterDebugMaterials::requestGetMaterials()
-{
- LLViewerRegion *region = gAgent.getRegion();
-
- if (region == NULL)
- {
- LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL;
- setState(kNoRegion);
- }
- else if (!region->capabilitiesReceived())
- {
- setState(kCapabilitiesLoading);
- region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredRequestGetMaterials, this, region->getRegionID()));
- }
- else
- {
- std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME);
-
- if (capURL.empty())
- {
- LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME
- << "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL;
- setState(kNotEnabled);
- }
- else
- {
- setState(kReady);
- LLMaterialMgr::instance().getAll(region->getRegionID(), boost::bind(&LLFloaterDebugMaterials::onGetMaterials, _1, _2));
- }
- }
-}
-
-void LLFloaterDebugMaterials::requestGetMaterials(const LLUUID& regionId)
-{
- const LLViewerRegion *region = gAgent.getRegion();
-
- if ((region != NULL) && (region->getRegionID() == regionId))
- {
- requestGetMaterials();
- }
-}
-
-void LLFloaterDebugMaterials::requestPutMaterials(bool pIsDoSet)
-{
- LLViewerRegion *region = gAgent.getRegion();
-
- if (region == NULL)
- {
- LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL;
- setState(kNoRegion);
- }
- else if (!region->capabilitiesReceived())
- {
- setState(kCapabilitiesLoading);
- region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredRequestPutMaterials, this, region->getRegionID(), pIsDoSet));
- }
- else
- {
- std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME);
-
- if (capURL.empty())
- {
- LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME
- << "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL;
- setState(kNotEnabled);
- }
- else
- {
- setState(kReady);
-
- LLMaterial material = (pIsDoSet) ? getMaterial() : LLMaterial::null;
-
- LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection();
- for (LLObjectSelection::valid_iterator objectIter = selectionHandle->valid_begin();
- objectIter != selectionHandle->valid_end(); ++objectIter)
- {
- LLSelectNode* objectNode = *objectIter;
- LLViewerObject* viewerObject = objectNode->getObject();
-
- if (viewerObject != NULL)
- {
- const LLViewerRegion* viewerRegion = viewerObject->getRegion();
- if (region != viewerRegion)
- {
- LL_ERRS("debugMaterials") << "cannot currently edit an object on a different region through the debug materials floater" << llendl;
- }
- S32 numTEs = llmin(static_cast<S32>(viewerObject->getNumTEs()), viewerObject->getNumFaces());
- for (S32 curTEIndex = 0; curTEIndex < numTEs; ++curTEIndex)
- {
- if (objectNode->isTESelected(curTEIndex))
- {
- LLMaterialMgr::instance().put(viewerObject->getID(), curTEIndex, material);
- }
- }
- }
- }
- }
- }
-}
-
-void LLFloaterDebugMaterials::requestPutMaterials(const LLUUID& regionId, bool pIsDoSet)
-{
- const LLViewerRegion *region = gAgent.getRegion();
-
- if ((region != NULL) && (region->getRegionID() == regionId))
- {
- requestPutMaterials(pIsDoSet);
- }
-}
-
-void LLFloaterDebugMaterials::parseQueryViewableObjects()
-{
- llassert(mNextUnparsedQueryDataIndex >= 0);
-
- if (mNextUnparsedQueryDataIndex >= 0)
- {
- LLScrollListCell::Params cellParams;
- LLScrollListItem::Params rowParams;
-
- S32 numViewerObjects = gObjectList.getNumObjects();
- S32 viewerObjectIndex = mNextUnparsedQueryDataIndex;
- for (S32 currentParseCount = 0;
- (currentParseCount < 10) && (viewerObjectIndex < numViewerObjects);
- ++currentParseCount, ++viewerObjectIndex)
- {
- const LLViewerObject *viewerObject = gObjectList.getObject(viewerObjectIndex);
- if ((viewerObject != NULL) && !viewerObject->isDead())
- {
- U8 objectNumTEs = viewerObject->getNumTEs();
-
- if (objectNumTEs > 0U)
- {
- const LLUUID& objectId = viewerObject->getID();
- U32 objectLocalId = viewerObject->getLocalID();
- const LLViewerRegion* objectRegion = viewerObject->getRegion();
-
- for (U8 curTEIndex = 0U; curTEIndex < objectNumTEs; ++curTEIndex)
- {
- const LLTextureEntry* objectTE = viewerObject->getTE(curTEIndex);
- llassert(objectTE != NULL);
- const LLMaterialID& objectMaterialID = objectTE->getMaterialID();
- if (!objectMaterialID.isNull())
- {
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "object_id";
- cellParams.value = objectId.asString();
- rowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontSansSerif();
-
- cellParams.column = "region";
- cellParams.value = ((objectRegion == NULL) ? "<null>" : objectRegion->getName());
- rowParams.columns.add(cellParams);
-
- cellParams.column = "local_id";
- cellParams.value = llformat("%d", objectLocalId);
- rowParams.columns.add(cellParams);
-
- cellParams.column = "face_index";
- cellParams.value = llformat("%u", static_cast<unsigned int>(curTEIndex));
- rowParams.columns.add(cellParams);
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "material_id";
- cellParams.value = objectMaterialID.asString();
- rowParams.columns.add(cellParams);
-
- LLSD rowValue = LLSD::emptyMap();
- rowValue[VIEWABLE_OBJECTS_REGION_ID_FIELD] = objectRegion->getRegionID();
- rowValue[VIEWABLE_OBJECTS_OBJECT_ID_FIELD] = objectId;
- rowValue[VIEWABLE_OBJECTS_MATERIAL_ID_FIELD] = objectMaterialID.asLLSD();
-
- rowParams.value = rowValue;
-
- mViewableObjectsScrollList->addRow(rowParams);
- }
- }
- }
- }
- }
-
- if (viewerObjectIndex < numViewerObjects)
- {
- mNextUnparsedQueryDataIndex = viewerObjectIndex;
- updateQueryParsingStatus();
- }
- else
- {
- clearUnparsedQueryData();
- }
- }
-}
-
-void LLFloaterDebugMaterials::onGetMaterials(const LLUUID& region_id, const LLMaterialMgr::material_map_t& materials)
-{
- LLFloaterDebugMaterials* instancep = LLFloaterReg::findTypedInstance<LLFloaterDebugMaterials>("floater_debug_materials");
- if (!instancep)
- {
- return;
- }
-
- LLViewerRegion* regionp = gAgent.getRegion();
- if ( (!regionp) || (regionp->getRegionID() != region_id) )
- {
- return;
- }
-
- LLScrollListCell::Params cellParams;
- LLScrollListItem::Params normalMapRowParams;
- LLScrollListItem::Params specularMapRowParams;
- LLScrollListItem::Params otherDataRowParams;
-
- instancep->clearGetResults();
- for (LLMaterialMgr::material_map_t::const_iterator itMaterial = materials.begin(); itMaterial != materials.end(); ++itMaterial)
- {
- const LLMaterialID& material_id = itMaterial->first;
- const LLMaterialPtr material = itMaterial->second;
-
- F32 x, y;
-
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "id";
- cellParams.value = material_id.asString();
- normalMapRowParams.columns.add(cellParams);
- specularMapRowParams.columns.add(cellParams);
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "normal_map_list_map";
- cellParams.value = material->getNormalID().asString();
- normalMapRowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontSansSerif();
-
- material->getNormalOffset(x, y);
- cellParams.column = "normal_map_list_offset_x";
- cellParams.value = llformat("%f", x);
- normalMapRowParams.columns.add(cellParams);
- cellParams.column = "normal_map_list_offset_y";
- cellParams.value = llformat("%f", y);
- normalMapRowParams.columns.add(cellParams);
-
- material->getNormalRepeat(x, y);
- cellParams.column = "normal_map_list_repeat_x";
- cellParams.value = llformat("%f", x);
- normalMapRowParams.columns.add(cellParams);
- cellParams.column = "normal_map_list_repeat_y";
- cellParams.value = llformat("%f", y);
- normalMapRowParams.columns.add(cellParams);
-
- cellParams.column = "normal_map_list_rotation";
- cellParams.value = llformat("%f", material->getNormalRotation());
- normalMapRowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "specular_map_list_map";
- cellParams.value = material->getSpecularID().asString();
- specularMapRowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontSansSerif();
-
- material->getSpecularOffset(x, y);
- cellParams.column = "specular_map_list_offset_x";
- cellParams.value = llformat("%f", x);
- specularMapRowParams.columns.add(cellParams);
- cellParams.column = "specular_map_list_offset_y";
- cellParams.value = llformat("%f", y);
- specularMapRowParams.columns.add(cellParams);
-
- material->getSpecularRepeat(x, y);
- cellParams.column = "specular_map_list_repeat_x";
- cellParams.value = llformat("%f", x);
- specularMapRowParams.columns.add(cellParams);
-
- cellParams.column = "specular_map_list_repeat_y";
- cellParams.value = llformat("%f", y);
- specularMapRowParams.columns.add(cellParams);
-
- cellParams.column = "specular_map_list_rotation";
- cellParams.value = llformat("%f", material->getSpecularRotation());
- specularMapRowParams.columns.add(cellParams);
-
- const LLColor4U& specularColor = material->getSpecularLightColor();
- cellParams.column = "specular_color";
- cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0],
- specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]);
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "specular_exponent";
- cellParams.value = llformat("%d", material->getSpecularLightExponent());
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "env_intensity";
- cellParams.value = llformat("%d", material->getEnvironmentIntensity());
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "alpha_mask_cutoff";
- cellParams.value = llformat("%d", material->getAlphaMaskCutoff());
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "diffuse_alpha_mode";
- cellParams.value = llformat("%d", material->getDiffuseAlphaMode());
- otherDataRowParams.columns.add(cellParams);
-
- normalMapRowParams.value = cellParams.value;
- specularMapRowParams.value = cellParams.value;
- otherDataRowParams.value = cellParams.value;
-
- instancep->mGetNormalMapScrollList->addRow(normalMapRowParams);
- instancep->mGetSpecularMapScrollList->addRow(specularMapRowParams);
- instancep->mGetOtherDataScrollList->addRow(otherDataRowParams);
- }
-}
-
-void LLFloaterDebugMaterials::onPostMaterial(const LLMaterialID& material_id, const LLMaterialPtr materialp)
-{
- LLFloaterDebugMaterials* instancep = LLFloaterReg::findTypedInstance<LLFloaterDebugMaterials>("floater_debug_materials");
- if ( (!instancep) || (!materialp.get()) )
- {
- return;
- }
-
- LLScrollListCell::Params cellParams;
- LLScrollListItem::Params normalMapRowParams;
- LLScrollListItem::Params specularMapRowParams;
- LLScrollListItem::Params otherDataRowParams;
-
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "id";
- cellParams.value = material_id.asString();
- normalMapRowParams.columns.add(cellParams);
- specularMapRowParams.columns.add(cellParams);
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "normal_map_list_map";
- cellParams.value = materialp->getNormalID().asString();
- normalMapRowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontSansSerif();
-
- F32 x, y;
- materialp->getNormalOffset(x, y);
- cellParams.column = "normal_map_list_offset_x";
- cellParams.value = llformat("%f", x);
- normalMapRowParams.columns.add(cellParams);
- cellParams.column = "normal_map_list_offset_y";
- cellParams.value = llformat("%f", y);
- normalMapRowParams.columns.add(cellParams);
-
- materialp->getNormalRepeat(x, y);
- cellParams.column = "normal_map_list_repeat_x";
- cellParams.value = llformat("%f", x);
- normalMapRowParams.columns.add(cellParams);
- cellParams.column = "normal_map_list_repeat_y";
- cellParams.value = llformat("%f", y);
- normalMapRowParams.columns.add(cellParams);
-
- cellParams.column = "normal_map_list_rotation";
- cellParams.value = llformat("%f", materialp->getNormalRotation());
- normalMapRowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "specular_map_list_map";
- cellParams.value = materialp->getSpecularID().asString();
- specularMapRowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontSansSerif();
-
- materialp->getSpecularOffset(x, y);
- cellParams.column = "specular_map_list_offset_x";
- cellParams.value = llformat("%f", x);
- specularMapRowParams.columns.add(cellParams);
- cellParams.column = "specular_map_list_offset_y";
- cellParams.value = llformat("%f", y);
- specularMapRowParams.columns.add(cellParams);
-
- materialp->getSpecularRepeat(x, y);
- cellParams.column = "specular_map_list_repeat_x";
- cellParams.value = llformat("%f", x);
- specularMapRowParams.columns.add(cellParams);
- cellParams.column = "specular_map_list_repeat_y";
- cellParams.value = llformat("%f", y);
- specularMapRowParams.columns.add(cellParams);
-
- cellParams.column = "specular_map_list_rotation";
- cellParams.value = llformat("%d", materialp->getSpecularRotation());
- specularMapRowParams.columns.add(cellParams);
-
- const LLColor4U& specularColor =materialp->getSpecularLightColor();
- cellParams.column = "specular_color";
- cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0],
- specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]);
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "specular_exponent";
- cellParams.value = llformat("%d", materialp->getSpecularLightExponent());
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "env_intensity";
- cellParams.value = llformat("%d", materialp->getEnvironmentIntensity());
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "alpha_mask_cutoff";
- cellParams.value = llformat("%d", materialp->getAlphaMaskCutoff());
- otherDataRowParams.columns.add(cellParams);
-
- cellParams.column = "diffuse_alpha_mode";
- cellParams.value = llformat("%d", materialp->getDiffuseAlphaMode());
- otherDataRowParams.columns.add(cellParams);
-
- normalMapRowParams.value = cellParams.value;
- specularMapRowParams.value = cellParams.value;
- otherDataRowParams.value = cellParams.value;
-
- instancep->mPostNormalMapScrollList->addRow(normalMapRowParams);
- instancep->mPostSpecularMapScrollList->addRow(specularMapRowParams);
- instancep->mPostOtherDataScrollList->addRow(otherDataRowParams);
-}
-
-void LLFloaterDebugMaterials::setState(EState pState)
-{
- mState = pState;
- updateStatusMessage();
- updateControls();
-}
-
-void LLFloaterDebugMaterials::refreshObjectEdit()
-{
- mPutScrollList->deleteAllItems();
-
- LLScrollListCell::Params cellParams;
- LLScrollListItem::Params rowParams;
-
- LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection();
- for (LLObjectSelection::valid_iterator objectIter = selectionHandle->valid_begin();
- objectIter != selectionHandle->valid_end(); ++objectIter)
- {
- LLSelectNode* nodep = *objectIter;
-
- LLViewerObject* objectp = nodep->getObject();
- if (objectp != NULL)
- {
- S32 numTEs = llmin(static_cast<S32>(objectp->getNumTEs()), objectp->getNumFaces());
- for (S32 curTEIndex = 0; curTEIndex < numTEs; ++curTEIndex)
- {
- if (nodep->isTESelected(curTEIndex))
- {
- const LLTextureEntry* tep = objectp->getTE(curTEIndex);
-
- cellParams.font = LLFontGL::getFontMonospace();
-
- cellParams.column = "material_id";
- cellParams.value = tep->getMaterialID().asString();
- rowParams.columns.add(cellParams);
-
- cellParams.font = LLFontGL::getFontSansSerif();
-
- cellParams.column = "object_id";
- cellParams.value = objectp->getID().asString();
- rowParams.columns.add(cellParams);
-
- cellParams.column = "face_index";
- cellParams.value = llformat("%d", curTEIndex);
- rowParams.columns.add(cellParams);
-
- mPutScrollList->addRow(rowParams);
- }
- }
- }
- }
-}
-
-void LLFloaterDebugMaterials::resetObjectEditInputs()
-{
- const LLSD zeroValue = static_cast<LLSD::Integer>(0);
- const LLSD maxAlphaValue = static_cast<LLSD::Integer>(255);
-
- mNormalMap->clear();
- mNormalMapOffsetX->setValue(zeroValue);
- mNormalMapOffsetY->setValue(zeroValue);
- mNormalMapRepeatX->setValue(zeroValue);
- mNormalMapRepeatY->setValue(zeroValue);
- mNormalMapRotation->setValue(zeroValue);
-
- mSpecularMap->clear();
- mSpecularMapOffsetX->setValue(zeroValue);
- mSpecularMapOffsetY->setValue(zeroValue);
- mSpecularMapRepeatX->setValue(zeroValue);
- mSpecularMapRepeatY->setValue(zeroValue);
- mSpecularMapRotation->setValue(zeroValue);
-
- mSpecularColor->set(mDefaultSpecularColor);
- mSpecularColorAlpha->setValue(maxAlphaValue);
- mSpecularExponent->setValue(zeroValue);
- mEnvironmentExponent->setValue(zeroValue);
- mAlphaMaskCutoff->setValue(zeroValue);
- mDiffuseAlphaMode->setValue(zeroValue);
-}
-
-void LLFloaterDebugMaterials::clearGetResults()
-{
- mGetNormalMapScrollList->deleteAllItems();
- mGetSpecularMapScrollList->deleteAllItems();
- mGetOtherDataScrollList->deleteAllItems();
-}
-
-void LLFloaterDebugMaterials::clearPostResults()
-{
- mPostNormalMapScrollList->deleteAllItems();
- mPostSpecularMapScrollList->deleteAllItems();
- mPostOtherDataScrollList->deleteAllItems();
-}
-
-void LLFloaterDebugMaterials::clearViewableObjectsResults()
-{
- mViewableObjectsScrollList->deleteAllItems();
- clearUnparsedQueryData();
-}
-
-void LLFloaterDebugMaterials::setUnparsedQueryData()
-{
- mNextUnparsedQueryDataIndex = 0;
-
- updateQueryParsingStatus();
-}
-
-void LLFloaterDebugMaterials::clearUnparsedQueryData()
-{
- mNextUnparsedQueryDataIndex = -1;
-
- updateQueryParsingStatus();
-}
-
-void LLFloaterDebugMaterials::updateQueryParsingStatus()
-{
- std::string queryStatus;
-
- if (mNextUnparsedQueryDataIndex >= 0)
- {
- LLLocale locale(LLStringUtil::getLocale());
- std::string numProcessedString;
- LLResMgr::getInstance()->getIntegerString(numProcessedString, mNextUnparsedQueryDataIndex);
-
- std::string numTotalString;
- LLResMgr::getInstance()->getIntegerString(numTotalString, gObjectList.getNumObjects());
-
- LLStringUtil::format_map_t stringArgs;
- stringArgs["[NUM_PROCESSED]"] = numProcessedString;
- stringArgs["[NUM_TOTAL]"] = numTotalString;
-
- queryStatus = getString("querying_status_in_progress", stringArgs);
- }
- else
- {
- queryStatus = getString("querying_status_done");
- }
-
- mQueryStatusText->setText(static_cast<const LLStringExplicit>(queryStatus));
-}
-
-void LLFloaterDebugMaterials::updateStatusMessage()
-{
- std::string statusText;
- LLStyle::Params styleParams;
-
- switch (getState())
- {
- case kNoRegion :
- statusText = getString("status_no_region");
- styleParams.color = mErrorColor;
- break;
- case kCapabilitiesLoading :
- statusText = getString("status_capabilities_loading");
- styleParams.color = mWarningColor;
- break;
- case kReady :
- statusText = getString("status_ready");
- break;
- case kRequestStarted :
- statusText = getString("status_request_started");
- styleParams.color = mWarningColor;
- break;
- case kRequestCompleted :
- statusText = getString("status_request_completed");
- break;
- case kNotEnabled :
- statusText = getString("status_not_enabled");
- styleParams.color = mErrorColor;
- break;
- case kError :
- statusText = getString("status_error");
- styleParams.color = mErrorColor;
- break;
- default :
- statusText = getString("status_ready");
- llassert(0);
- break;
- }
-
- mStatusText->setText((LLStringExplicit)statusText, styleParams);
-}
-
-void LLFloaterDebugMaterials::updateControls()
-{
- LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection();
- bool isPutEnabled = (selectionHandle->valid_begin() != selectionHandle->valid_end());
- bool isPostEnabled = (mViewableObjectsScrollList->getNumSelected() > 0);
-
- switch (getState())
- {
- case kNoRegion :
- case kCapabilitiesLoading :
- case kRequestStarted :
- case kNotEnabled :
- mGetButton->setEnabled(FALSE);
- mPutSetButton->setEnabled(FALSE);
- mPutClearButton->setEnabled(FALSE);
- mPostButton->setEnabled(FALSE);
- break;
- case kReady :
- case kRequestCompleted :
- case kError :
- mGetButton->setEnabled(TRUE);
- mPutSetButton->setEnabled(isPutEnabled);
- mPutClearButton->setEnabled(isPutEnabled);
- mPostButton->setEnabled(isPostEnabled);
- break;
- default :
- mGetButton->setEnabled(TRUE);
- mPutSetButton->setEnabled(isPutEnabled);
- mPutClearButton->setEnabled(isPutEnabled);
- mPostButton->setEnabled(isPostEnabled);
- llassert(0);
- break;
- }
-}
-
-template<typename T> T getLineEditorValue(const LLLineEditor *pLineEditor);
-
-template<> U8 getLineEditorValue(const LLLineEditor *pLineEditor)
-{
- U8 value = 0;
-
- LLStringUtil::convertToU8(pLineEditor->getText(), value);
-
- return value;
-}
-
-LLMaterial LLFloaterDebugMaterials::getMaterial() const
-{
- LLMaterial material;
-
- material.setNormalID(mNormalMap->getImageAssetID());
- material.setNormalOffset(mNormalMapOffsetX->get(), mNormalMapOffsetY->get());
- material.setNormalRepeat(mNormalMapRepeatX->get(), mNormalMapRepeatY->get());
- material.setNormalRotation(mNormalMapRotation->get());
-
- material.setSpecularID(mSpecularMap->getImageAssetID());
- material.setSpecularOffset(mSpecularMapOffsetX->get(), mSpecularMapOffsetY->get());
- material.setSpecularRepeat(mSpecularMapRepeatX->get(), mSpecularMapRepeatY->get());
- material.setSpecularRotation(mSpecularMapRotation->get());
-
- const LLColor4& specularColor = mSpecularColor->get();
- LLColor4U specularColor4U = specularColor;
- specularColor4U.setAlpha(static_cast<U8>(llclamp(llround(mSpecularColorAlpha->get()), 0, 255)));
- material.setSpecularLightColor(specularColor4U);
-
- material.setSpecularLightExponent(getLineEditorValue<U8>(mSpecularExponent));
- material.setEnvironmentIntensity(getLineEditorValue<U8>(mEnvironmentExponent));
- material.setDiffuseAlphaMode(getLineEditorValue<U8>(mDiffuseAlphaMode));
- material.setAlphaMaskCutoff(getLineEditorValue<U8>(mAlphaMaskCutoff));
-
- return material;
-}
diff --git a/indra/newview/llfloaterdebugmaterials.h b/indra/newview/llfloaterdebugmaterials.h
deleted file mode 100644
index 0bd33d7cd0..0000000000
--- a/indra/newview/llfloaterdebugmaterials.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
-* @file llfloaterdebugmaterials.h
-* @brief Header file for llfloaterdebugmaterials
-* @author Stinson@lindenlab.com
-*
-* $LicenseInfo:firstyear=2012&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2012, 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_LLFLOATERDEBUGMATERIALS_H
-#define LL_LLFLOATERDEBUGMATERIALS_H
-
-#include <string>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signals2.hpp>
-
-#include "llfloater.h"
-#include "llmaterial.h"
-#include "llmaterialmgr.h"
-#include "lluuid.h"
-#include "v4color.h"
-
-class LLButton;
-class LLColorSwatchCtrl;
-class LLColor4U;
-class LLLineEditor;
-class LLMaterialID;
-class LLScrollListCtrl;
-class LLSD;
-class LLSpinCtrl;
-class LLTextBase;
-class LLTextureCtrl;
-class LLUICtrl;
-class MultiMaterialsResponder;
-
-typedef boost::shared_ptr<MultiMaterialsResponder> MultiMaterialsResponderPtr;
-
-class LLFloaterDebugMaterials : public LLFloater
-{
-public:
- virtual BOOL postBuild();
-
- virtual void onOpen(const LLSD& pKey);
- virtual void onClose(bool pIsAppQuitting);
-
- virtual void draw();
-
-protected:
-
-private:
- friend class LLFloaterReg;
-
- typedef enum {
- kNoRegion,
- kCapabilitiesLoading,
- kReady,
- kRequestStarted,
- kRequestCompleted,
- kNotEnabled,
- kError
- } EState;
-
- LLFloaterDebugMaterials(const LLSD& pParams);
- virtual ~LLFloaterDebugMaterials();
-
- void onGetClicked();
- void onValueEntered(LLUICtrl* pUICtrl);
- void onPutSetClicked();
- void onPutClearClicked();
- void onResetPutValuesClicked();
- void onQueryVisibleObjectsClicked();
- void onPostClicked();
- void onRegionCross();
- void onInWorldSelectionChange();
- void onGetScrollListSelectionChange(LLUICtrl* pUICtrl);
- void onPostScrollListSelectionChange(LLUICtrl* pUICtrl);
- void onViewableObjectsScrollListSelectionChange();
- void onDeferredCheckRegionMaterialStatus(LLUUID regionId);
- void onDeferredRequestGetMaterials(LLUUID regionId);
- void onDeferredRequestPutMaterials(LLUUID regionId, bool pIsDoSet);
-
- void checkRegionMaterialStatus();
- void checkRegionMaterialStatus(const LLUUID& regionId);
-
- void requestGetMaterials();
- void requestGetMaterials(const LLUUID& regionId);
-
- void requestPutMaterials(bool pIsDoSet);
- void requestPutMaterials(const LLUUID& regionId, bool pIsDoSet);
-
- static void onGetMaterials(const LLUUID& region_id, const LLMaterialMgr::material_map_t& materials);
- static void onPostMaterial(const LLMaterialID& material_id, const LLMaterialPtr materialp);
-
- void parseQueryViewableObjects();
-
- void setState(EState pState);
- inline EState getState() const;
-
- void refreshObjectEdit();
- void resetObjectEditInputs();
- void clearGetResults();
- void clearPostResults();
- void clearViewableObjectsResults();
-
- void setUnparsedQueryData();
- void clearUnparsedQueryData();
- void updateQueryParsingStatus();
-
- void updateStatusMessage();
- void updateControls();
-
- LLMaterial getMaterial() const;
-
- LLTextBase* mStatusText;
- LLButton* mGetButton;
- LLTextBase* mParsingStatusText;
- LLScrollListCtrl* mGetNormalMapScrollList;
- LLScrollListCtrl* mGetSpecularMapScrollList;
- LLScrollListCtrl* mGetOtherDataScrollList;
- LLTextureCtrl* mNormalMap;
- LLSpinCtrl* mNormalMapOffsetX;
- LLSpinCtrl* mNormalMapOffsetY;
- LLSpinCtrl* mNormalMapRepeatX;
- LLSpinCtrl* mNormalMapRepeatY;
- LLSpinCtrl* mNormalMapRotation;
- LLTextureCtrl* mSpecularMap;
- LLSpinCtrl* mSpecularMapOffsetX;
- LLSpinCtrl* mSpecularMapOffsetY;
- LLSpinCtrl* mSpecularMapRepeatX;
- LLSpinCtrl* mSpecularMapRepeatY;
- LLSpinCtrl* mSpecularMapRotation;
- LLColorSwatchCtrl* mSpecularColor;
- LLSpinCtrl* mSpecularColorAlpha;
- LLLineEditor* mSpecularExponent;
- LLLineEditor* mEnvironmentExponent;
- LLLineEditor* mAlphaMaskCutoff;
- LLLineEditor* mDiffuseAlphaMode;
- LLButton* mPutSetButton;
- LLButton* mPutClearButton;
- LLScrollListCtrl* mPutScrollList;
- LLButton* mQueryViewableObjectsButton;
- LLTextBase* mQueryStatusText;
- LLScrollListCtrl* mViewableObjectsScrollList;
- LLButton* mPostButton;
- LLScrollListCtrl* mPostNormalMapScrollList;
- LLScrollListCtrl* mPostSpecularMapScrollList;
- LLScrollListCtrl* mPostOtherDataScrollList;
-
- LLColor4 mDefaultSpecularColor;
-
- EState mState;
- LLColor4 mWarningColor;
- LLColor4 mErrorColor;
-
- boost::signals2::connection mRegionCrossConnection;
- boost::signals2::connection mTeleportFailedConnection;
- boost::signals2::connection mSelectionUpdateConnection;
-
- S32 mNextUnparsedQueryDataIndex;
-};
-
-
-LLFloaterDebugMaterials::EState LLFloaterDebugMaterials::getState() const
-{
- return mState;
-}
-
-#endif // LL_LLFLOATERDEBUGMATERIALS_H
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index e74c8509ce..51bda4141d 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -66,15 +66,28 @@
#include "llviewertexturelist.h"
//
+// Constant definitions for comboboxes
+// Must match the commbobox definitions in panel_tools_texture.xml
+//
+const S32 MATMEDIA_MATERIAL = 0; // Material
+const S32 MATMEDIA_MEDIA = 1; // Media
+const S32 MATTYPE_DIFFUSE = 0; // Diffuse material texture
+const S32 MATTYPE_NORMAL = 1; // Normal map
+const S32 MATTYPE_SPECULAR = 2; // Specular map
+const S32 ALPHAMODE_NONE = 0; // No alpha mask applied
+const S32 ALPHAMODE_MASK = 2; // Alpha masking mode
+const S32 BUMPY_TEXTURE = 18; // use supplied normal map
+const S32 SHINY_TEXTURE = 4; // use supplied specular map
+
+//
// Methods
//
BOOL LLPanelFace::postBuild()
{
- childSetCommitCallback("combobox matmedia",&LLPanelFace::onCommitMaterialsMedia,this);
- childSetCommitCallback("combobox mattype",&LLPanelFace::onCommitMaterialType,this);
childSetCommitCallback("combobox shininess",&LLPanelFace::onCommitShiny,this);
childSetCommitCallback("combobox bumpiness",&LLPanelFace::onCommitBump,this);
+ childSetCommitCallback("combobox alphamode",&LLPanelFace::onCommitAlphaMode,this);
childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureInfo, this);
childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureInfo, this);
childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureInfo, this);
@@ -89,6 +102,8 @@ BOOL LLPanelFace::postBuild()
LLColorSwatchCtrl* mColorSwatch;
LLComboBox* mComboTexGen;
+ LLComboBox* mComboMatMedia;
+ LLComboBox* mComboMatType;
LLCheckBoxCtrl *mCheckFullbright;
@@ -154,6 +169,20 @@ BOOL LLPanelFace::postBuild()
mComboTexGen->setFollows(FOLLOWS_LEFT | FOLLOWS_TOP);
}
+ mComboMatMedia = getChild<LLComboBox>("combobox matmedia");
+ if(mComboMatMedia)
+ {
+ mComboMatMedia->setCommitCallback(LLPanelFace::onCommitMaterialsMedia,this);
+ mComboMatMedia->selectNthItem(MATMEDIA_MATERIAL);
+ }
+
+ mComboMatType = getChild<LLComboBox>("combobox mattype");
+ if(mComboMatType)
+ {
+ mComboMatType->setCommitCallback(LLPanelFace::onCommitMaterialType, this);
+ mComboMatType->selectNthItem(MATTYPE_DIFFUSE);
+ }
+
mCtrlGlow = getChild<LLSpinCtrl>("glow");
if(mCtrlGlow)
{
@@ -492,30 +521,33 @@ void LLPanelFace::getState()
BOOL editable = objectp->permModify() && !objectp->isPermanentEnforced();
// only turn on auto-adjust button if there is a media renderer and the media is loaded
- getChildView("textbox autofix")->setEnabled(editable);
getChildView("button align")->setEnabled(editable);
- LLCtrlSelectionInterface* combobox_matmedia =
- childGetSelectionInterface("combobox matmedia");
+ LLComboBox* combobox_matmedia = getChild<LLComboBox>("combobox matmedia");
if (combobox_matmedia)
{
- combobox_matmedia->selectNthItem(0);
+ if (combobox_matmedia->getCurrentIndex() < MATMEDIA_MATERIAL)
+ {
+ combobox_matmedia->selectNthItem(MATMEDIA_MATERIAL);
+ }
}
else
{
- llwarns << "failed childGetSelectionInterface for 'combobox matmedia'" << llendl;
+ llwarns << "failed getChild for 'combobox matmedia'" << llendl;
}
getChildView("combobox matmedia")->setEnabled(editable);
- LLCtrlSelectionInterface* combobox_mattype =
- childGetSelectionInterface("combobox mattype");
+ LLComboBox* combobox_mattype = getChild<LLComboBox>("combobox mattype");
if (combobox_mattype)
{
- combobox_mattype->selectNthItem(0);
+ if (combobox_mattype->getCurrentIndex() < MATTYPE_DIFFUSE)
+ {
+ combobox_mattype->selectNthItem(MATTYPE_DIFFUSE);
+ }
}
else
{
- llwarns << "failed childGetSelectionInterface for 'combobox mattype'" << llendl;
+ llwarns << "failed getChild for 'combobox mattype'" << llendl;
}
getChildView("combobox mattype")->setEnabled(editable);
onCommitMaterialsMedia(NULL, this);
@@ -565,12 +597,41 @@ void LLPanelFace::getState()
} func;
identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, id );
+ BOOL is_alpha = FALSE;
+ struct f2 : public LLSelectedTEGetFunctor<BOOL>
+ {
+ BOOL get(LLViewerObject* object, S32 te_index)
+ {
+ BOOL is_alpha = FALSE;
+
+ LLViewerTexture* image = object->getTEImage(te_index);
+ if (image) is_alpha = image->getIsAlphaMask();
+ return is_alpha;
+ }
+ } func2;
+ identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func2, is_alpha );
+
if(LLViewerMedia::textureHasMedia(id))
{
- getChildView("textbox autofix")->setEnabled(editable);
getChildView("button align")->setEnabled(editable);
}
+ if (!is_alpha)
+ {
+ // Selected texture has no alpha, force alpha mode None
+ LLCtrlSelectionInterface* combobox_alphamode =
+ childGetSelectionInterface("combobox alphamode");
+ if (combobox_alphamode)
+ {
+ combobox_alphamode->selectNthItem(ALPHAMODE_NONE);
+ }
+ else
+ {
+ llwarns << "failed childGetSelectionInterface for 'combobox alphamode'" << llendl;
+ }
+ onCommitAlphaMode(getChild<LLComboBox>("combobox alpha"),this);
+ }
+
if (identical)
{
// All selected have the same texture
@@ -579,6 +640,10 @@ void LLPanelFace::getState()
texture_ctrl->setTentative( FALSE );
texture_ctrl->setEnabled( editable );
texture_ctrl->setImageAssetID( id );
+ getChildView("combobox alphamode")->setEnabled(editable && is_alpha);
+ getChildView("label alphamode")->setEnabled(editable && is_alpha);
+ getChildView("maskcutoff")->setEnabled(editable && is_alpha);
+ getChildView("label maskcutoff")->setEnabled(editable && is_alpha);
}
}
else
@@ -591,6 +656,10 @@ void LLPanelFace::getState()
texture_ctrl->setTentative( FALSE );
texture_ctrl->setEnabled( FALSE );
texture_ctrl->setImageAssetID( LLUUID::null );
+ getChildView("combobox alphamode")->setEnabled( FALSE );
+ getChildView("label alphamode")->setEnabled( FALSE );
+ getChildView("maskcutoff")->setEnabled( FALSE);
+ getChildView("label maskcutoff")->setEnabled( FALSE );
}
else
{
@@ -598,6 +667,10 @@ void LLPanelFace::getState()
texture_ctrl->setTentative( TRUE );
texture_ctrl->setEnabled( editable );
texture_ctrl->setImageAssetID( id );
+ getChildView("combobox alphamode")->setEnabled(editable && is_alpha);
+ getChildView("label alphamode")->setEnabled(editable && is_alpha);
+ getChildView("maskcutoff")->setEnabled(editable && is_alpha);
+ getChildView("label maskcutoff")->setEnabled(editable && is_alpha);
}
}
}
@@ -803,6 +876,15 @@ void LLPanelFace::getState()
getChildView("combobox shininess")->setEnabled(editable);
getChild<LLUICtrl>("combobox shininess")->setTentative(!identical);
getChildView("label shininess")->setEnabled(editable);
+ getChildView("glossiness")->setEnabled(editable);
+ getChild<LLUICtrl>("glossiness")->setTentative(!identical);
+ getChildView("label glossiness")->setEnabled(editable);
+ getChildView("environment")->setEnabled(editable);
+ getChild<LLUICtrl>("environment")->setTentative(!identical);
+ getChildView("label environment")->setEnabled(editable);
+ getChildView("shinycolorswatch")->setEnabled(editable);
+ getChild<LLUICtrl>("shinycolorswatch")->setTentative(!identical);
+ getChildView("label shinycolor")->setEnabled(editable);
}
{
@@ -955,12 +1037,9 @@ void LLPanelFace::getState()
getChildView("label shininess")->setEnabled(FALSE);
getChildView("label bumpiness")->setEnabled(FALSE);
- getChildView("textbox autofix")->setEnabled(FALSE);
-
getChildView("button align")->setEnabled(FALSE);
//getChildView("has media")->setEnabled(FALSE);
//getChildView("media info set")->setEnabled(FALSE);
-
// Set variable values for numeric expressions
LLCalc* calcp = LLCalc::getInstance();
@@ -1016,30 +1095,50 @@ void LLPanelFace::onSelectColor(const LLSD& data)
void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
- LLComboBox* mComboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia");
- if (!mComboMaterialsMedia)
+ LLComboBox* comboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia");
+ if (!comboMaterialsMedia)
{
return;
}
- U32 materials_media = mComboMaterialsMedia->getCurrentIndex();
- LLComboBox* mComboMaterialType = self->getChild<LLComboBox>("combobox mattype");
- if (!mComboMaterialType)
+ U32 materials_media = comboMaterialsMedia->getCurrentIndex();
+ LLComboBox* comboMaterialType = self->getChild<LLComboBox>("combobox mattype");
+ if (!comboMaterialType)
{
return;
}
- U32 material_type = mComboMaterialType->getCurrentIndex();
- bool show_media = (materials_media == 1);
- bool show_texture = (!show_media) && (material_type == 0);
- bool show_bumpiness = (!show_media) && (material_type == 1);
- bool show_shininess = (!show_media) && (material_type == 2);
+ U32 material_type = comboMaterialType->getCurrentIndex();
+ bool show_media = (materials_media == MATMEDIA_MEDIA);
+ bool show_texture = (!show_media) && (material_type == MATTYPE_DIFFUSE);
+ bool show_bumpiness = (!show_media) && (material_type == MATTYPE_NORMAL);
+ bool show_shininess = (!show_media) && (material_type == MATTYPE_SPECULAR);
self->getChildView("combobox mattype")->setVisible(!show_media);
self->getChildView("media_info")->setVisible(show_media);
self->getChildView("add_media")->setVisible(show_media);
self->getChildView("delete_media")->setVisible(show_media);
self->getChildView("button align")->setVisible(show_media);
self->getChildView("texture control")->setVisible(show_texture);
+ self->getChildView("label alphamode")->setVisible(show_texture);
+ self->getChildView("combobox alphamode")->setVisible(show_texture);
+ self->getChildView("label maskcutoff")->setVisible(false);
+ self->getChildView("maskcutoff")->setVisible(false);
+ if (show_texture)
+ {
+ onCommitAlphaMode(ctrl, userdata);
+ }
+ self->getChildView("shinytexture control")->setVisible(show_shininess);
self->getChildView("combobox shininess")->setVisible(show_shininess);
self->getChildView("label shininess")->setVisible(show_shininess);
+ self->getChildView("label glossiness")->setVisible(false);
+ self->getChildView("glossiness")->setVisible(false);
+ self->getChildView("label environment")->setVisible(false);
+ self->getChildView("environment")->setVisible(false);
+ self->getChildView("label shinycolor")->setVisible(false);
+ self->getChildView("shinycolorswatch")->setVisible(false);
+ if (show_shininess)
+ {
+ onCommitShiny(ctrl, userdata);
+ }
+ self->getChildView("bumpytexture control")->setVisible(show_bumpiness);
self->getChildView("combobox bumpiness")->setVisible(show_bumpiness);
self->getChildView("label bumpiness")->setVisible(show_bumpiness);
}
@@ -1068,10 +1167,38 @@ void LLPanelFace::onCommitTexGen(LLUICtrl* ctrl, void* userdata)
void LLPanelFace::onCommitShiny(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
+ LLComboBox* comboShiny = self->getChild<LLComboBox>("combobox shininess");
+ if (!comboShiny)
+ {
+ return;
+ }
+ U32 shiny_value = comboShiny->getCurrentIndex();
+ bool show_shinyctrls = (shiny_value == SHINY_TEXTURE); // Use texture
+ self->getChildView("label glossiness")->setVisible(show_shinyctrls);
+ self->getChildView("glossiness")->setVisible(show_shinyctrls);
+ self->getChildView("label environment")->setVisible(show_shinyctrls);
+ self->getChildView("environment")->setVisible(show_shinyctrls);
+ self->getChildView("label shinycolor")->setVisible(show_shinyctrls);
+ self->getChildView("shinycolorswatch")->setVisible(show_shinyctrls);
self->sendShiny();
}
// static
+void LLPanelFace::onCommitAlphaMode(LLUICtrl* ctrl, void* userdata)
+{
+ LLPanelFace* self = (LLPanelFace*) userdata;
+ LLComboBox* comboAlphaMode = self->getChild<LLComboBox>("combobox alphamode");
+ if (!comboAlphaMode)
+ {
+ return;
+ }
+ U32 alpha_value = comboAlphaMode->getCurrentIndex();
+ bool show_alphactrls = (alpha_value == ALPHAMODE_MASK); // Alpha masking
+ self->getChildView("label maskcutoff")->setVisible(show_alphactrls);
+ self->getChildView("maskcutoff")->setVisible(show_alphactrls);
+}
+
+// static
void LLPanelFace::onCommitFullbright(LLUICtrl* ctrl, void* userdata)
{
LLPanelFace* self = (LLPanelFace*) userdata;
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index acac2c1bf5..56b4034a2d 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -85,6 +85,7 @@ protected:
static void onCommitBump( LLUICtrl* ctrl, void* userdata);
static void onCommitTexGen( LLUICtrl* ctrl, void* userdata);
static void onCommitShiny( LLUICtrl* ctrl, void* userdata);
+ static void onCommitAlphaMode( LLUICtrl* ctrl, void* userdata);
static void onCommitFullbright( LLUICtrl* ctrl, void* userdata);
static void onCommitGlow( LLUICtrl* ctrl, void *userdata);
static void onCommitPlanarAlign( LLUICtrl* ctrl, void* userdata);
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index e3fc957fd2..deaacc4975 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -24,7 +24,7 @@
* $/LicenseInfo$
*/
-#ifndef LL_LLTEXTURECACHE_
+#ifndef LL_LLTEXTURECACHE_H
#define LL_LLTEXTURECACHE_H
#include "lldir.h"
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index d58ee05fb6..feceee5709 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1051,6 +1051,7 @@ void render_hud_attachments()
if (LLPipeline::sShowHUDAttachments && !gDisconnected && setup_hud_matrices())
{
+ LLPipeline::sRenderingHUDs = TRUE;
LLCamera hud_cam = *LLViewerCamera::getInstance();
LLVector3 origin = hud_cam.getOrigin();
hud_cam.setOrigin(-1.f,0,0);
@@ -1124,6 +1125,7 @@ void render_hud_attachments()
gPipeline.toggleRenderDebugFeature((void*) LLPipeline::RENDER_DEBUG_FEATURE_UI);
}
LLPipeline::sUseOcclusion = use_occlusion;
+ LLPipeline::sRenderingHUDs = FALSE;
}
gGL.matrixMode(LLRender::MM_PROJECTION);
gGL.popMatrix();
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b630b5bbe6..05fc3fe7d1 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -50,7 +50,6 @@
#include "llfloaterbump.h"
#include "llfloaterbvhpreview.h"
#include "llfloatercamera.h"
-#include "llfloaterdebugmaterials.h"
#include "llfloaterdeleteenvpreset.h"
#include "llfloaterdisplayname.h"
#include "llfloatereditdaycycle.h"
@@ -256,7 +255,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("pathfinding_characters", "floater_pathfinding_characters.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingCharacters>);
LLFloaterReg::add("pathfinding_linksets", "floater_pathfinding_linksets.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingLinksets>);
LLFloaterReg::add("pathfinding_console", "floater_pathfinding_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPathfindingConsole>);
- LLFloaterReg::add("floater_debug_materials", "floater_debug_materials.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDebugMaterials>);
+
LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp
index b04d30db55..0b5e0235ee 100644
--- a/indra/newview/llwlparamset.cpp
+++ b/indra/newview/llwlparamset.cpp
@@ -33,6 +33,7 @@
#include "llglslshader.h"
#include "lluictrlfactory.h"
#include "llsliderctrl.h"
+#include "pipeline.h"
#include <llgl.h>
@@ -127,6 +128,13 @@ void LLWLParamSet::update(LLGLSLShader * shader) const
}
}
}
+
+ if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender)
+ {
+ shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2);
+ } else {
+ shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0);
+ }
}
void LLWLParamSet::set(const std::string& paramName, float x)
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 24144382dc..07246391e3 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -377,6 +377,7 @@ BOOL LLPipeline::sRenderDeferred = FALSE;
BOOL LLPipeline::sMemAllocationThrottled = FALSE;
S32 LLPipeline::sVisibleLightCount = 0;
F32 LLPipeline::sMinRenderSize = 0.f;
+BOOL LLPipeline::sRenderingHUDs;
static LLCullResult* sCull = NULL;
@@ -396,7 +397,7 @@ void validate_framebuffer_object();
bool addDeferredAttachments(LLRenderTarget& target)
{
- return target.addColorAttachment(GL_RGBA) && //specular
+ return target.addColorAttachment(GL_SRGB_ALPHA) && //specular
target.addColorAttachment(GL_RGB10_A2); //normal+z
}
@@ -898,11 +899,11 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
BOOL ssao = RenderDeferredSSAO;
//allocate deferred rendering color buffers
- if (!mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
+ if (!mDeferredScreen.allocate(resX, resY, GL_SRGB8_ALPHA8, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
if (!mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
if (!addDeferredAttachments(mDeferredScreen)) return false;
- if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
+ if (!mScreen.allocate(resX, resY, GL_RGBA12, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
if (samples > 0)
{
if (!mFXAABuffer.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_TEXTURE, FALSE, samples)) return false;
@@ -1195,7 +1196,7 @@ void LLPipeline::createGLBuffers()
for (U32 i = 0; i < 3; i++)
{
- mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE);
+ mGlow[i].allocate(512,glow_res,sRenderDeferred ? GL_RGB10_A2 : GL_RGB10_A2,FALSE,FALSE);
}
allocateScreenBuffer(resX,resY);
@@ -3602,8 +3603,8 @@ void LLPipeline::postSort(LLCamera& camera)
for (LLCullResult::sg_iterator i = sCull->beginVisibleGroups(); i != sCull->endVisibleGroups(); ++i)
{
LLSpatialGroup* group = *i;
- if (sUseOcclusion &&
- group->isOcclusionState(LLSpatialGroup::OCCLUDED) ||
+ if ((sUseOcclusion &&
+ group->isOcclusionState(LLSpatialGroup::OCCLUDED)) ||
(RenderAutoHideSurfaceAreaLimit > 0.f &&
group->mSurfaceArea > RenderAutoHideSurfaceAreaLimit*llmax(group->mObjectBoxSize, 10.f)))
{
@@ -5034,8 +5035,8 @@ void LLPipeline::renderDebug()
LLSpatialPartition* part = region->getSpatialPartition(i);
if (part)
{
- if ( hud_only && (part->mDrawableType == RENDER_TYPE_HUD || part->mDrawableType == RENDER_TYPE_HUD_PARTICLES) ||
- !hud_only && hasRenderType(part->mDrawableType) )
+ if ( (hud_only && (part->mDrawableType == RENDER_TYPE_HUD || part->mDrawableType == RENDER_TYPE_HUD_PARTICLES)) ||
+ (!hud_only && hasRenderType(part->mDrawableType)) )
{
part->renderDebug();
}
@@ -7382,6 +7383,13 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
mScreen.bindTexture(0, channel);
gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
}
+
+ if (!LLViewerCamera::getInstance()->cameraUnderWater())
+ {
+ shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2);
+ } else {
+ shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0);
+ }
shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
@@ -7423,6 +7431,13 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
{
mScreen.bindTexture(0, channel);
}
+
+ if (!LLViewerCamera::getInstance()->cameraUnderWater())
+ {
+ shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 2.2);
+ } else {
+ shader->uniform1f(LLShaderMgr::GLOBAL_GAMMA, 1.0);
+ }
gGL.begin(LLRender::TRIANGLE_STRIP);
gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
@@ -7843,6 +7858,22 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 n
}
}
+LLColor3 pow3f(LLColor3 v, F32 f)
+{
+ v.mV[0] = powf(v.mV[0], f);
+ v.mV[1] = powf(v.mV[1], f);
+ v.mV[2] = powf(v.mV[2], f);
+ return v;
+}
+
+LLVector4 pow4fsrgb(LLVector4 v, F32 f)
+{
+ v.mV[0] = powf(v.mV[0], f);
+ v.mV[1] = powf(v.mV[1], f);
+ v.mV[2] = powf(v.mV[2], f);
+ return v;
+}
+
static LLFastTimer::DeclareTimer FTM_GI_TRACE("Trace");
static LLFastTimer::DeclareTimer FTM_GI_GATHER("Gather");
static LLFastTimer::DeclareTimer FTM_SUN_SHADOW("Shadow Map");
@@ -8178,7 +8209,7 @@ void LLPipeline::renderDeferredLighting()
LLFastTimer ftm(FTM_LOCAL_LIGHTS);
gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c);
gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
- gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+ gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, pow3f(col, 2.2f).mV);
gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
gGL.syncMatrices();
@@ -8234,7 +8265,7 @@ void LLPipeline::renderDeferredLighting()
gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c);
gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
- gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+ gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, pow3f(col, 2.2f).mV);
gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
gGL.syncMatrices();
@@ -8281,7 +8312,7 @@ void LLPipeline::renderDeferredLighting()
light_colors.pop_front();
far_z = llmin(light[count].mV[2]-sqrtf(light[count].mV[3]), far_z);
-
+ col[count] = pow4fsrgb(col[count], 2.2f);
count++;
if (count == max_count || fullscreen_lights.empty())
{
@@ -8325,7 +8356,7 @@ void LLPipeline::renderDeferredLighting()
gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
- gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+ gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, pow3f(col, 2.2f).mV);
gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
}
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 36abeca295..e264081910 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -554,7 +554,8 @@ public:
static BOOL sRenderDeferred;
static BOOL sMemAllocationThrottled;
static S32 sVisibleLightCount;
- static F32 sMinRenderSize;
+ static F32 sMinRenderSize;
+ static BOOL sRenderingHUDs;
//screen texture
U32 mScreenWidth;
diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml
index d695cd1f89..f2ed7c2e64 100644
--- a/indra/newview/skins/default/xui/da/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/da/menu_viewer.xml
@@ -245,7 +245,7 @@
<menu label="Gengivelse" name="Rendering">
<menu_item_check label="Akser" name="Axes"/>
<menu_item_check label="Wireframe" name="Wireframe"/>
- <menu_item_check label="Lys og skygger" name="Lighting and Shadows"/>
+ <menu_item_check label="Lys og skygger" name="Advanced Lighting Model"/>
<menu_item_check label="Skygger fra sol/måne/andre lyskilder" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO og skygge udjævning" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Globalt lys (eksperimentiel)" name="Global Illumination"/>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 845df1f050..8277174cda 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -307,7 +307,7 @@
<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="Licht und Schatten" name="Lighting and Shadows"/>
+ <menu_item_check label="Licht und Schatten" name="Advanced Lighting Model"/>
<menu_item_check label="Schatten von Sonne-/Mond-Projektoren" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO und Schattenglättung" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Fehler in GL beseitigen" name="Debug GL"/>
diff --git a/indra/newview/skins/default/xui/en/floater_debug_materials.xml b/indra/newview/skins/default/xui/en/floater_debug_materials.xml
deleted file mode 100644
index 3a450fdeff..0000000000
--- a/indra/newview/skins/default/xui/en/floater_debug_materials.xml
+++ /dev/null
@@ -1,995 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- positioning="cascading"
- can_tear_off="false"
- can_resize="true"
- height="770"
- width="1040"
- min_height="795"
- min_width="1040"
- layout="topleft"
- name="floater_debug_materials"
- reuse_instance="true"
- save_rect="false"
- single_instance="true"
- title="Debug materials">
- <floater.string name="status_no_region">No current region available.</floater.string>
- <floater.string name="status_capabilities_loading">Region capabilities are loading.</floater.string>
- <floater.string name="status_ready">Materials are enabled for this region.</floater.string>
- <floater.string name="status_request_started">Request sent.</floater.string>
- <floater.string name="status_request_completed">Request received.</floater.string>
- <floater.string name="status_not_enabled">Materials are not enabled for this region.</floater.string>
- <floater.string name="status_error">An error occurred during the request.</floater.string>
- <floater.string name="loading_status_in_progress">Processing [NUM_PROCESSED] out of [NUM_TOTAL]</floater.string>
- <floater.string name="loading_status_done">Complete</floater.string>
- <floater.string name="querying_status_in_progress">Processing [NUM_PROCESSED] out of [NUM_TOTAL]</floater.string>
- <floater.string name="querying_status_done">Complete</floater.string>
- <panel
- border="false"
- bevel_style="none"
- follows="left|top"
- layout="topleft"
- left="12"
- top_pad="10"
- height="61"
- width="214">
- <text
- height="13"
- word_wrap="true"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- layout="topleft"
- left="0"
- top_pad="0"
- width="214">
- Status
- </text>
- <text
- height="40"
- word_wrap="true"
- use_ellipses="false"
- type="string"
- text_color="MaterialGoodColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="0"
- name="material_status"
- top_pad="8"
- width="214">
- </text>
- </panel>
- <tab_container
- follows="left|top|right"
- layout="topleft"
- tab_position="top"
- left="10"
- top_pad="10"
- height="670"
- width="1020">
- <panel
- border="true"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- label="Current region"
- height="641"
- top_pad="10"
- width="1020">
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="479"
- top_pad="10"
- width="1020">
- <button
- follows="left|top"
- height="22"
- label="Get"
- layout="topleft"
- name="get_button"
- top_pad="0"
- width="214"/>
- <text
- height="13"
- word_wrap="true"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="2"
- top_pad="8"
- width="150">
- Loading Status
- </text>
- <text
- height="13"
- word_wrap="true"
- use_ellipses="false"
- type="string"
- text_color="MaterialGoodColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_pad="0"
- name="loading_status"
- top_pad="-13"
- width="400">
- </text>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="135"
- layout="topleft"
- left="0"
- top_pad="10"
- tab_stop="false"
- multi_select="false"
- name="get_other_data_scroll_list"
- width="775">
- <scroll_list.columns
- label="Material ID"
- name="id"
- dynamic_width="true" />
- <scroll_list.columns
- label="Specular Color"
- name="specular_color"
- width="120" />
- <scroll_list.columns
- label="Specular Exponent"
- name="specular_exponent"
- width="112" />
- <scroll_list.columns
- label="Env Intensity"
- name="env_intensity"
- width="80" />
- <scroll_list.columns
- label="Alpha Mask Cutoff"
- name="alpha_mask_cutoff"
- width="110" />
- <scroll_list.columns
- label="Diffuse Alpha Mode"
- name="diffuse_alpha_mode"
- width="118" />
- </scroll_list>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="135"
- layout="topleft"
- top_pad="10"
- tab_stop="false"
- multi_select="false"
- name="get_specular_map_scroll_list"
- width="1020">
- <scroll_list.columns
- label="Material ID"
- name="id"
- dynamic_width="true" />
- <scroll_list.columns
- label="Specular Map"
- name="specular_map_list_map"
- width="225" />
- <scroll_list.columns
- label="Offset X"
- name="specular_map_list_offset_x"
- width="112" />
- <scroll_list.columns
- label="Offset Y"
- name="specular_map_list_offset_y"
- width="112" />
- <scroll_list.columns
- label="Repeat X"
- name="specular_map_list_repeat_x"
- width="112" />
- <scroll_list.columns
- label="Repeat Y"
- name="specular_map_list_repeat_y"
- width="112" />
- <scroll_list.columns
- label="Rotation"
- name="specular_map_list_rotation"
- width="112" />
- </scroll_list>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="135"
- layout="topleft"
- top_pad="10"
- tab_stop="false"
- multi_select="false"
- name="get_normal_map_scroll_list"
- width="1020">
- <scroll_list.columns
- label="Material ID"
- name="id"
- dynamic_width="true" />
- <scroll_list.columns
- label="Normal Map"
- name="normal_map_list_map"
- width="225" />
- <scroll_list.columns
- label="Offset X"
- name="normal_map_list_offset_x"
- width="112" />
- <scroll_list.columns
- label="Offset Y"
- name="normal_map_list_offset_y"
- width="112" />
- <scroll_list.columns
- label="Repeat X"
- name="normal_map_list_repeat_x"
- width="112" />
- <scroll_list.columns
- label="Repeat Y"
- name="normal_map_list_repeat_y"
- width="112" />
- <scroll_list.columns
- label="Rotation"
- name="normal_map_list_rotation"
- width="112" />
- </scroll_list>
- </panel>
- </panel>
- <panel
- border="true"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- label="Object editing"
- height="641"
- top_pad="10"
- width="1010">
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- left="2"
- top_pad="10"
- height="420"
- width="810">
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="265"
- top_pad="0"
- width="810">
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="226"
- top_pad="0"
- width="263">
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="0"
- top_pad="38"
- width="160">
- Normal Map
- </text>
- <texture_picker
- allow_no_texture="true"
- can_apply_immediately="true"
- default_image_name="Default"
- follows="left|top"
- left_pad="0"
- top_pad="-50"
- label_width="0"
- height="100"
- width="100"
- mouse_opaque="true"
- name="normal_map"
- tool_tip="Click to open texture picker" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-260"
- label="Normal Map Offset X"
- max_val="1.0"
- min_val="-1.0"
- name="normal_map_offset_x"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Normal Map Offset Y"
- max_val="1.0"
- min_val="-1.0"
- name="normal_map_offset_y"
- top_pad="10"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Normal Map Repeat X"
- max_val="64"
- min_val="0.0"
- name="normal_map_repeat_x"
- top_pad="10"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- max_val="64"
- min_val="0.0"
- label="Normal Map Repeat Y"
- name="normal_map_repeat_y"
- top_pad="10"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Normal Map Rotation"
- max_val="9999"
- min_val="-9999"
- name="normal_map_rotation"
- top_pad="10"
- width="240" />
- </panel>
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="226"
- top_pad="-226"
- left_pad="20"
- width="263">
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="0"
- top_pad="38"
- width="160">
- Specular Map
- </text>
- <texture_picker
- allow_no_texture="true"
- can_apply_immediately="true"
- default_image_name="Default"
- follows="left|top"
- left_pad="0"
- top_pad="-50"
- label_width="0"
- height="100"
- width="100"
- mouse_opaque="true"
- name="specular_map"
- tool_tip="Click to open texture picker" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-260"
- label="Specular Map Offset X"
- max_val="1.0"
- min_val="-1.0"
- name="specular_map_offset_x"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Specular Map Offset Y"
- max_val="1.0"
- min_val="-1.0"
- name="specular_map_offset_y"
- top_pad="10"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Specular Map Repeat X"
- max_val="64"
- min_val="0.0"
- name="specular_map_repeat_x"
- top_pad="10"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="0.1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Specular Map Repeat Y"
- max_val="64"
- min_val="0.0"
- name="specular_map_repeat_y"
- top_pad="10"
- width="240" />
- <spinner
- allow_text_entry="true"
- follows="left|top"
- height="20"
- initial_value="0"
- increment="1"
- decimal_digits="4"
- label_width="160"
- layout="topleft"
- left_pad="-240"
- label="Specular Map Rotation"
- max_val="9999"
- min_val="-9999"
- name="specular_map_rotation"
- top_pad="10"
- width="240" />
- </panel>
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="162"
- top_pad="-226"
- left_pad="20"
- width="243">
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="0"
- top_pad="10"
- width="160">
- Specular Color
- </text>
- <color_swatch
- can_apply_immediately="true"
- color="1 1 1 1"
- follows="left|top"
- height="30"
- layout="topleft"
- label_height="0"
- label_width="0"
- left_pad="0"
- top_pad="-22"
- name="specular_color"
- tool_tip="Click to open color picker"
- width="40" />
- <spinner
- follows="left|top"
- height="20"
- initial_value="255"
- max_val="255"
- min_val="0"
- increment="1"
- decimal_digits="0"
- allow_text_entry="true"
- layout="topleft"
- label_width="160"
- left="0"
- top_pad="10"
- label="Specular Color Alpha"
- name="specular_color_alpha"
- width="240" />
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_pad="-240"
- top_pad="13"
- width="160">
- Specular Exponent
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- default_text="0"
- follows="left|top"
- height="20"
- layout="topleft"
- left_pad="0"
- top_pad="-18"
- max_length_chars="255"
- name="specular_exponent"
- width="80" />
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_pad="-240"
- top_pad="10"
- width="160">
- Environment Exponent
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- default_text="0"
- follows="left|top"
- height="20"
- layout="topleft"
- left_pad="0"
- top_pad="-18"
- max_length_chars="255"
- name="environment_exponent"
- width="80" />
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_pad="-240"
- top_pad="10"
- width="160">
- Alpha Mask Cuttoff
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- default_text="0"
- follows="left|top"
- height="20"
- layout="topleft"
- left_pad="0"
- top_pad="-18"
- max_length_chars="255"
- name="alpha_mask_cutoff"
- width="80" />
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_pad="-240"
- top_pad="10"
- width="160">
- Diffuse Alpha Mode
- </text>
- <line_editor
- border_style="line"
- border_thickness="1"
- default_text="0"
- follows="left|top"
- height="20"
- layout="topleft"
- left_pad="0"
- top_pad="-18"
- max_length_chars="255"
- name="diffuse_alpha_mode"
- width="80" />
- </panel>
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="22"
- left="0"
- top_pad="80"
- width="810">
- <button
- follows="left|top"
- height="22"
- label="Set Face Data"
- layout="topleft"
- name="put_set_button"
- left="0"
- top="0"
- width="214"/>
- <button
- follows="left|top"
- height="22"
- label="Clear Face Data"
- layout="topleft"
- name="put_clear_button"
- left_pad="20"
- width="214"/>
- <button
- follows="left|top"
- height="22"
- label="Reset Input Values"
- layout="topleft"
- name="reset_put_values_button"
- left_pad="146"
- width="214"/>
- </panel>
- </panel>
- <view_border
- bevel_style="none"
- follows="left|top"
- height="0"
- layout="topleft"
- name="horiz_separator"
- top_pad="10"
- left="0"
- width="810"/>
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="125"
- top_pad="20"
- width="400">
- <text
- height="13"
- word_wrap="false"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="0"
- top_pad="0"
- width="160">
- Active selection
- </text>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="300"
- layout="topleft"
- left="0"
- top_pad="10"
- tab_stop="false"
- multi_select="true"
- name="put_scroll_list"
- width="600">
- <scroll_list.columns
- label="Object ID"
- name="object_id"
- width="225" />
- <scroll_list.columns
- label="Face Index"
- name="face_index"
- width="70" />
- <scroll_list.columns
- label="MaterialID"
- name="material_id"
- dynamic_width="true" />
- </scroll_list>
- </panel>
- </panel>
- </panel>
- <panel
- border="true"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- label="Viewable objects"
- height="641"
- top_pad="10"
- width="1020">
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="641"
- top_pad="0"
- width="1020">
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- left="0"
- top_pad="10"
- height="153"
- width="835">
- <button
- follows="left|top"
- height="22"
- label="Query Viewable Objects"
- layout="topleft"
- name="query_viewable_objects_button"
- top_pad="0"
- width="214"/>
- <text
- height="13"
- word_wrap="true"
- use_ellipses="false"
- type="string"
- text_color="LabelTextColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left="2"
- top_pad="8"
- width="150">
- Loading Status
- </text>
- <text
- height="13"
- word_wrap="true"
- use_ellipses="false"
- type="string"
- text_color="MaterialGoodColor"
- length="1"
- follows="left|top"
- layout="topleft"
- left_pad="0"
- name="query_status"
- top_pad="-13"
- width="400">
- </text>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="100"
- layout="topleft"
- top_pad="10"
- left="0"
- tab_stop="false"
- multi_select="true"
- name="viewable_objects_scroll_list"
- width="835">
- <scroll_list.columns
- label="Object ID"
- name="object_id"
- width="225" />
- <scroll_list.columns
- label="Region"
- name="region"
- width="225" />
- <scroll_list.columns
- label="Local ID"
- name="local_id"
- width="70" />
- <scroll_list.columns
- label="Face"
- name="face_index"
- width="70" />
- <scroll_list.columns
- label="Material ID"
- name="material_id"
- dynamic_width="true" />
- </scroll_list>
- </panel>
- <view_border
- bevel_style="none"
- follows="left|right|top"
- height="0"
- layout="topleft"
- name="horiz_separator"
- top_pad="10"
- left="0"
- width="1020"/>
- <panel
- border="false"
- bevel_style="none"
- follows="left|top|right"
- layout="topleft"
- height="457"
- top_pad="10"
- width="1020">
- <button
- follows="left|top"
- height="22"
- label="Post Material ID"
- layout="topleft"
- name="post_button"
- top_pad="0"
- width="214"/>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="135"
- layout="topleft"
- top_pad="10"
- left="0"
- tab_stop="false"
- multi_select="false"
- name="post_other_data_scroll_list"
- width="775">
- <scroll_list.columns
- label="Material ID"
- name="id"
- dynamic_width="true" />
- <scroll_list.columns
- label="Specular Color"
- name="specular_color"
- width="120" />
- <scroll_list.columns
- label="Specular Exponent"
- name="specular_exponent"
- width="112" />
- <scroll_list.columns
- label="Env Intensity"
- name="env_intensity"
- width="80" />
- <scroll_list.columns
- label="Alpha Mask Cutoff"
- name="alpha_mask_cutoff"
- width="110" />
- <scroll_list.columns
- label="Diffuse Alpha Mode"
- name="diffuse_alpha_mode"
- width="118" />
- </scroll_list>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="135"
- layout="topleft"
- top_pad="10"
- tab_stop="false"
- multi_select="false"
- name="post_specular_map_scroll_list"
- width="1020">
- <scroll_list.columns
- label="Material ID"
- name="id"
- dynamic_width="true" />
- <scroll_list.columns
- label="Specular Map"
- name="specular_map_list_map"
- width="225" />
- <scroll_list.columns
- label="Offset X"
- name="specular_map_list_offset_x"
- width="112" />
- <scroll_list.columns
- label="Offset Y"
- name="specular_map_list_offset_y"
- width="112" />
- <scroll_list.columns
- label="Repeat X"
- name="specular_map_list_repeat_x"
- width="112" />
- <scroll_list.columns
- label="Repeat Y"
- name="specular_map_list_repeat_y"
- width="112" />
- <scroll_list.columns
- label="Rotation"
- name="specular_map_list_rotation"
- width="112" />
- </scroll_list>
- <scroll_list
- column_padding="0"
- draw_heading="true"
- follows="left|top|right"
- height="135"
- layout="topleft"
- top_pad="10"
- tab_stop="false"
- multi_select="false"
- name="post_normal_map_scroll_list"
- width="1020">
- <scroll_list.columns
- label="Material ID"
- name="id"
- dynamic_width="true" />
- <scroll_list.columns
- label="Normal Map"
- name="normal_map_list_map"
- width="225" />
- <scroll_list.columns
- label="Offset X"
- name="normal_map_list_offset_x"
- width="112" />
- <scroll_list.columns
- label="Offset Y"
- name="normal_map_list_offset_y"
- width="112" />
- <scroll_list.columns
- label="Repeat X"
- name="normal_map_list_repeat_x"
- width="112" />
- <scroll_list.columns
- label="Repeat Y"
- name="normal_map_list_repeat_y"
- width="112" />
- <scroll_list.columns
- label="Rotation"
- name="normal_map_list_rotation"
- width="112" />
- </scroll_list>
- </panel>
- </panel>
- </panel>
- </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 721a1818dd..7e21013cac 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2584,8 +2584,8 @@
<menu_item_separator />
<menu_item_check
- label="Lighting and Shadows"
- name="Lighting and Shadows">
+ label="Advanced Lighting Model"
+ name="Advanced Lighting Model">
<menu_item_check.on_check
function="CheckControl"
parameter="RenderDeferred" />
@@ -2622,16 +2622,6 @@
<menu_item_separator/>
- <menu_item_call
- label="Debug materials ..."
- name="DebugMaterialsMenu">
- <menu_item_call.on_click
- function="Floater.ToggleOrBringToFront"
- parameter="floater_debug_materials" />
- </menu_item_call>
-
- <menu_item_separator />
-
<menu_item_check
label="Debug GL"
name="Debug GL">
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 849f3ef73d..e249d51d91 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -262,7 +262,7 @@
control_name="RenderDeferred"
height="16"
initial_value="true"
- label="Lighting and Shadows"
+ label="Advance Lighting Model"
layout="topleft"
left_delta="0"
name="UseLightShaders"
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index 26b2d83351..21cbf9673d 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -155,36 +155,36 @@
follows="left|top"
height="10"
layout="topleft"
- name="label shininess"
left_pad="10"
+ name="label alphamode"
text_readonly_color="LabelDisabledColor"
- top_delta="6"
+ top_delta="0"
width="90">
- Shininess
+ Alpha mode
</text>
<combo_box
height="23"
layout="topleft"
- left_pad="10"
- name="combobox shininess"
- top_delta="-6"
- width="90">
+ left_delta="0"
+ name="combobox alphamode"
+ top_pad="4"
+ width="120">
<combo_box.item
label="None"
name="None"
value="None" />
<combo_box.item
- label="Low"
- name="Low"
- value="Low" />
+ label="Alpha blending"
+ name="Alpha blending"
+ value="Alpha blending" />
<combo_box.item
- label="Medium"
- name="Medium"
- value="Medium" />
+ label="Alpha masking"
+ name="Alpha masking"
+ value="Alpha masking" />
<combo_box.item
- label="High"
- name="High"
- value="High" />
+ label="Emissive mask"
+ name="Emissive mask"
+ value="Emissive mask" />
</combo_box>
<text
type="string"
@@ -192,7 +192,43 @@
follows="left|top"
height="10"
layout="topleft"
- left_delta="-100"
+ left_delta="0"
+ name="label maskcutoff"
+ text_readonly_color="LabelDisabledColor"
+ top_pad="4"
+ width="90">
+ Mask cutoff
+ </text>
+ <spinner
+ decimal_digits="3"
+ follows="left|top"
+ height="19"
+ initial_value="0"
+ layout="topleft"
+ top_pad="4"
+ left_delta="0"
+ name="maskcutoff"
+ width="80" />
+ <texture_picker
+ can_apply_immediately="true"
+ default_image_name="Default"
+ fallback_image="locked_image.j2c"
+ follows="left|top"
+ height="80"
+ label="Texture "
+ layout="topleft"
+ left="10"
+ name="bumpytexture control"
+ tool_tip="Click to choose a picture"
+ top_delta="-55"
+ width="64" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_pad="10"
name="label bumpiness"
text_readonly_color="LabelDisabledColor"
top_delta="0"
@@ -278,13 +314,142 @@
label="weave"
name="weave"
value="weave" />
+ <combo_box.item
+ label="Use texture"
+ name="Use texture"
+ value="Use texture" />
+ </combo_box>
+ <texture_picker
+ can_apply_immediately="true"
+ default_image_name="Default"
+ fallback_image="locked_image.j2c"
+ follows="left|top"
+ height="80"
+ label="Texture "
+ layout="topleft"
+ left="10"
+ name="shinytexture control"
+ tool_tip="Click to choose a picture"
+ top_delta="-14"
+ width="64" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ name="label shininess"
+ left_pad="10"
+ text_readonly_color="LabelDisabledColor"
+ top_delta="6"
+ width="90">
+ Shininess
+ </text>
+ <combo_box
+ height="23"
+ layout="topleft"
+ left_pad="10"
+ name="combobox shininess"
+ top_delta="-6"
+ width="90">
+ <combo_box.item
+ label="None"
+ name="None"
+ value="None" />
+ <combo_box.item
+ label="Low"
+ name="Low"
+ value="Low" />
+ <combo_box.item
+ label="Medium"
+ name="Medium"
+ value="Medium" />
+ <combo_box.item
+ label="High"
+ name="High"
+ value="High" />
+ <combo_box.item
+ label="Use texture"
+ name="Use texture"
+ value="Use texture" />
</combo_box>
<text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="-100"
+ name="label glossiness"
+ text_readonly_color="LabelDisabledColor"
+ top_pad="8"
+ width="116">
+ Glossiness
+ </text>
+ <spinner
+ decimal_digits="3"
+ follows="left|top"
+ height="19"
+ initial_value="0"
+ layout="topleft"
+ top_delta="-4"
+ left_pad="10"
+ name="glossiness"
+ width="64" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="-126"
+ name="label environment"
+ text_readonly_color="LabelDisabledColor"
+ top_pad="8"
+ width="116">
+ Environment
+ </text>
+ <spinner
+ decimal_digits="3"
+ follows="left|top"
+ height="19"
+ initial_value="0"
+ layout="topleft"
+ top_delta="-4"
+ left_pad="10"
+ name="environment"
+ width="64" />
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_delta="-126"
+ name="label shinycolor"
+ text_readonly_color="LabelDisabledColor"
+ top_pad="8"
+ width="116">
+ Color
+ </text>
+ <!-- label is blank because control places it below the box -->
+ <color_swatch
+ can_apply_immediately="true"
+ follows="left|top"
+ height="45"
+ label=""
+ layout="topleft"
+ left_pad="10"
+ name="shinycolorswatch"
+ tool_tip="Click to open color picker"
+ top_delta="-4"
+ width="64" />
+ <text
follows="left|top|right"
height="9"
layout="topleft"
left="10"
- top_delta="-8"
+ top_delta="-50"
use_ellipses="true"
read_only="true"
name="media_info"
@@ -370,14 +535,6 @@
name="TexScaleU"
top_pad="5"
width="265" />
- <!-- <check_box
- height="19"
- label="Flip"
- layout="topleft"
- left_pad="5"
- name="checkbox flip s"
- top_delta="0"
- width="70" /> -->
<spinner
follows="left|top"
height="19"
@@ -390,14 +547,6 @@
max_val="100"
name="TexScaleV"
width="265" />
- <!-- <check_box
- height="19"
- label="Flip"
- layout="topleft"
- left_pad="5"
- name="checkbox flip t"
- top_delta="0"
- width="70" /> -->
<spinner
decimal_digits="1"
follows="left|top"
@@ -411,16 +560,7 @@
min_val="0.1"
name="rptctrl"
width="265" />
- <!-- <button
- follows="left|top"
- height="19"
- label="Apply"
- label_selected="Apply"
- layout="topleft"
- left_pad="5"
- name="button apply"
- width="75" /> -->
- <spinner
+ <spinner
decimal_digits="2"
follows="left|top"
height="19"
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index d80150ef6d..9e0ac5115f 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -285,7 +285,7 @@
<menu label="Rendering" name="Rendering">
<menu_item_check label="Axes" name="Axes"/>
<menu_item_check label="Wireframe" name="Wireframe"/>
- <menu_item_check label="Luces y sombras" name="Lighting and Shadows"/>
+ <menu_item_check label="Luces y sombras" name="Advanced Lighting Model"/>
<menu_item_check label="Sombras del sol/la luna/proyectores" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO y sombras suavizadas" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Capas alfa automáticas (deferidas)" name="Automatic Alpha Masks (deferred)"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 85020afe25..24bd6a2a95 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -307,7 +307,7 @@
<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="Éclairage et ombres" name="Lighting and Shadows"/>
+ <menu_item_check label="Éclairage et ombres" name="Advanced Lighting Model"/>
<menu_item_check label="Ombres du soleil/de la lune/des projecteurs" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO et lissage des ombres" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Débogage GL" name="Debug GL"/>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 547c5a9b73..cdfa97bb3c 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -286,7 +286,7 @@
<menu label="Rendering" name="Rendering">
<menu_item_check label="Assi" name="Axes"/>
<menu_item_check label="Wireframe" name="Wireframe"/>
- <menu_item_check label="Luci e ombre" name="Lighting and Shadows"/>
+ <menu_item_check label="Luci e ombre" name="Advanced Lighting Model"/>
<menu_item_check label="Ombra dal sole, dalla luna e dai proiettori" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO e ombre fluide" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Maschera alfa automatica (differita)" name="Automatic Alpha Masks (deferred)"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index e60e6781c6..74859076c2 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -307,7 +307,7 @@
<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="Lighting and Shadows"/>
+ <menu_item_check label="光と影" name="Advanced Lighting Model"/>
<menu_item_check label="太陽・月・プロジェクタからの影" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO と影の平滑化" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="GL デバッグ" name="Debug GL"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index 24c961fa26..e1725fc308 100644
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -236,7 +236,7 @@
<menu label="Renderowanie" name="Rendering">
<menu_item_check label="Osie" name="Axes"/>
<menu_item_check label="Tryb obrazu szkieletowego" name="Wireframe"/>
- <menu_item_check label="Oświetlenie i cienie" name="Lighting and Shadows"/>
+ <menu_item_check label="Oświetlenie i cienie" name="Advanced Lighting Model"/>
<menu_item_check label="Cienie Słońca/Księżyca/Projektory" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO and wygładzanie cienia" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Globalne oświetlenie (eksperymentalne)" name="Global Illumination"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index ca378c1b58..e8baff5af2 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -286,7 +286,7 @@
<menu label="Rendering" name="Rendering">
<menu_item_check label="Axes" name="Axes"/>
<menu_item_check label="Wireframe" name="Wireframe"/>
- <menu_item_check label="Iluminação e sombras" name="Lighting and Shadows"/>
+ <menu_item_check label="Iluminação e sombras" name="Advanced Lighting Model"/>
<menu_item_check label="Sombras da projeção do sol/lua" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO e sombra suave" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Máscaras alpha automáticas (adiadas)" name="Automatic Alpha Masks (deferred)"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index d9425937c3..c292b8a287 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -305,7 +305,7 @@
<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="Lighting and Shadows"/>
+ <menu_item_check label="Освещение и тени" name="Advanced Lighting Model"/>
<menu_item_check label="Тени от солнца, луны и прожекторов" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO и сглаживание теней" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="Отладка GL" name="Debug GL"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index 7a7faf6ac4..28f28db6d2 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -305,7 +305,7 @@
<menu_item_call label="Seçilen Doku Bilgi Temeli" name="Selected Texture Info Basis"/>
<menu_item_check label="Telkafes" name="Wireframe"/>
<menu_item_check label="Görünen Nesneler İçin Gölgeleme" name="Object-Object Occlusion"/>
- <menu_item_check label="Işıklandırma ve Gölgeler" name="Lighting and Shadows"/>
+ <menu_item_check label="Işıklandırma ve Gölgeler" name="Advanced Lighting Model"/>
<menu_item_check label="Güneş/Ay/Projektörlerden Gelen Gölgeler" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="SSAO ve Gölge Yumuşatma" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="GL Hata Ayıklama" name="Debug GL"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index ac0e9e7e35..9a95e8c4d6 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -305,7 +305,7 @@
<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="Lighting and Shadows"/>
+ <menu_item_check label="光線和陰影" name="Advanced Lighting Model"/>
<menu_item_check label="來自日/月/投影物的陰影" name="Shadows from Sun/Moon/Projectors"/>
<menu_item_check label="屏幕空間環境光遮蔽和陰影平滑技術" name="SSAO and Shadow Smoothing"/>
<menu_item_check label="GL 除錯" name="Debug GL"/>