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/gpu_table.txt1092
-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/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/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
44 files changed, 704 insertions, 3062 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/gpu_table.txt b/indra/newview/gpu_table.txt
index 4c39014c8b..122577b132 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -32,567 +32,531 @@
// 1 - We claim to support this card.
//
-3Dfx .*3Dfx.* 0 0 0 0
-3Dlabs .*3Dlabs.* 0 0 0 0
-ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 0 0
-ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 0 0
-ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 0 0
-ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 0 0
-ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 0 0
-ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 1 3.3
-ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 0 0
-ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 1 1 1 2.1
-ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 0 0
-ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 0 0
-ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 0 0
-ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 0 0
-ATI ASUS ARES .*ATI.*ASUS.*ARES.* 3 1 0 0
-ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1 0 0
-ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1 1 3.3
-ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 1 1 1 3.3
-ATI ASUS AH34xx .*ATI.*ASUS.*AH34.* 1 1 1 3.3
-ATI ASUS AH36xx .*ATI.*ASUS.*AH36.* 1 1 1 3.3
-ATI ASUS AH46xx .*ATI.*ASUS.*AH46.* 2 1 1 3.3
-ATI ASUS AX3xx .*ATI.*ASUS.*AX3.* 1 1 0 0
-ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1 0 0
-ATI ASUS AX8xx .*ATI.*ASUS.*AX8.* 2 1 0 0
-ATI ASUS EAH24xx .*ATI.*ASUS.*EAH24.* 2 1 0 0
-ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 0 0
-ATI ASUS EAH29xx .*ATI.*ASUS.*EAH29.* 3 1 0 0
-ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 0 0
-ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 2 1 0 0
-ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 2 1 1 3.3
-ATI ASUS EAH43xx .*ATI.*ASUS.*EAH43.* 2 1 1 3.3
-ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 2 1 0 0
-ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 1 3.3
-ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 1 4.1
-ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 5 1 1 4.1
-ATI ASUS EAH62xx .*ATI.*ASUS.*EAH62.* 2 1 0 0
-ATI ASUS EAH63xx .*ATI.*ASUS.*EAH63.* 2 1 0 0
-ATI ASUS EAH64xx .*ATI.*ASUS.*EAH64.* 2 1 0 0
-ATI ASUS EAH65xx .*ATI.*ASUS.*EAH65.* 2 1 0 4.1
-ATI ASUS EAH66xx .*ATI.*ASUS.*EAH66.* 3 1 0 4.1
-ATI ASUS EAH67xx .*ATI.*ASUS.*EAH67.* 3 1 0 0
-ATI ASUS EAH68xx .*ATI.*ASUS.*EAH68.* 5 1 0 4
-ATI ASUS EAH69xx .*ATI.*ASUS.*EAH69.* 5 1 0 4.1
-ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 2 1 1 2.1
-ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 0 0
-ATI Radeon X19xx .*ATI.*(Radeon|Diamond) X19.* ?.* 2 1 1 2.1
-ATI Radeon X18xx .*ATI.*(Radeon|Diamond) X18.* ?.* 3 1 1 2.1
-ATI Radeon X17xx .*ATI.*(Radeon|Diamond) X17.* ?.* 1 1 1 2.1
-ATI Radeon X16xx .*ATI.*(Radeon|Diamond) X16.* ?.* 1 1 1 2.1
-ATI Radeon X15xx .*ATI.*(Radeon|Diamond) X15.* ?.* 1 1 1 2.1
-ATI Radeon X13xx .*ATI.*(Radeon|Diamond) X13.* ?.* 1 1 1 2.1
-ATI Radeon X1xxx .*ATI.*(Radeon|Diamond) X1.. ?.* 0 1 1 2.1
-ATI Radeon X2xxx .*ATI.*(Radeon|Diamond) X2.. ?.* 1 1 1 2.1
-ATI Display Adapter .*ATI.*display adapter.* 1 1 1 4.1
-ATI FireGL 5200 .*ATI.*FireGL V52.* 1 1 1 2.1
-ATI FireGL 5xxx .*ATI.*FireGL V5.* 2 1 1 3.3
-ATI FireGL .*ATI.*Fire.*GL.* 4 1 1 4.2
-ATI FirePro M3900 .*ATI.*FirePro.*M39.* 2 1 0 0
-ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1 0 0
-ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1 0 0
-ATI FirePro M7820 .*ATI.*FirePro.*M78.* 5 1 1 4.2
-ATI FireMV .*ATI.*FireMV.* 0 1 1 1.3
-ATI Generic .*ATI.*Generic.* 0 0 0 0
-ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1 0 0
-ATI IGP 340M .*ATI.*IGP.*340M.* 0 0 0 0
-ATI M52 .*ATI.*M52.* 1 1 0 0
-ATI M54 .*ATI.*M54.* 1 1 0 0
-ATI M56 .*ATI.*M56.* 1 1 0 0
-ATI M71 .*ATI.*M71.* 1 1 0 0
-ATI M72 .*ATI.*M72.* 1 1 0 0
-ATI M76 .*ATI.*M76.* 3 1 0 0
-ATI Radeon HD 64xx .*ATI.*AMD Radeon.* HD [67]4..[MG] 2 1 1 4.2
-ATI Radeon HD 65xx .*ATI.*AMD Radeon.* HD [67]5..[MG] 2 1 1 4.2
-ATI Radeon HD 66xx .*ATI.*AMD Radeon.* HD [67]6..[MG] 3 1 1 4.2
-ATI Radeon HD 7100 .*ATI.*AMD Radeon.* HD 71.* 2 1 0 0
-ATI Radeon HD 7200 .*ATI.*AMD Radeon.* HD 72.* 2 1 0 0
-ATI Radeon HD 7300 .*ATI.*AMD Radeon.* HD 73.* 2 1 0 4.2
-ATI Radeon HD 7400 .*ATI.*AMD Radeon.* HD 74.* 2 1 0 4.2
-ATI Radeon HD 7500 .*ATI.*AMD Radeon.* HD 75.* 3 1 1 4.2
-ATI Radeon HD 7600 .*ATI.*AMD Radeon.* HD 76.* 3 1 0 4.2
-ATI Radeon HD 7700 .*ATI.*AMD Radeon.* HD 77.* 4 1 1 4.2
-ATI Radeon HD 7800 .*ATI.*AMD Radeon.* HD 78.* 5 1 1 4.2
-ATI Radeon HD 7900 .*ATI.*AMD Radeon.* HD 79.* 5 1 1 4.2
-ATI ASUS HD7100 .*ATI.*ASUS.* HD71.* 2 1 0 0
-ATI ASUS HD7200 .*ATI.*ASUS.* HD72.* 2 1 0 0
-ATI ASUS HD7300 .*ATI.*ASUS.* HD73.* 2 1 0 0
-ATI ASUS HD7400 .*ATI.*ASUS.* HD74.* 2 1 0 0
-ATI ASUS HD7500 .*ATI.*ASUS.* HD75.* 3 1 1 4.2
-ATI ASUS HD7600 .*ATI.*ASUS.* HD76.* 3 1 0 0
-ATI ASUS HD7700 .*ATI.*ASUS.* HD77.* 4 1 1 4.2
-ATI ASUS HD7800 .*ATI.*ASUS.* HD78.* 5 1 1 4.2
-ATI ASUS HD7900 .*ATI.*ASUS.* HD79.* 5 1 1 4.2
-ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.. 1 1 1 3.3
-ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 1 1.3
-ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 0 0
-ATI Mobility Radeon 9800 .*ATI.*Mobility.*98.* 1 1 0 0
-ATI Mobility Radeon 9700 .*ATI.*Mobility.*97.* 0 1 1 2.1
-ATI Mobility Radeon 9600 .*ATI.*Mobility.*96.* 1 1 1 2.1
-ATI Mobility Radeon HD 530v .*ATI.*Mobility.*HD *530v.* 1 1 1 3.3
-ATI Mobility Radeon HD 540v .*ATI.*Mobility.*HD *540v.* 1 1 1 3.3
-ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD *545v.* 2 1 1 4
-ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD *550v.* 3 1 1 4
-ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD *560v.* 3 1 1 3.2
-ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD *565v.* 3 1 1 3.3
-ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD *23.* 0 1 1 2.1
-ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD *24.* 1 1 1 3.3
-ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD *26.* 1 1 1 3.3
-ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD *27.* 3 1 0 0
-ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD *31.* 0 1 0 0
-ATI Mobility Radeon HD 3200 .*ATI.*Mobility.*HD *32.* 0 1 0 0
-ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD *34.* 1 1 1 3.3
-ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD *36.* 1 1 1 4
-ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD *38.* 3 1 1 3.3
-ATI Mobility Radeon HD 4200 .*ATI.*Mobility.*HD *42.* 1 1 1 4
-ATI Mobility Radeon HD 4300 .*ATI.*Mobility.*HD *43.* 1 1 1 4
-ATI Mobility Radeon HD 4500 .*ATI.*Mobility.*HD *45.* 1 1 1 4
-ATI Mobility Radeon HD 4600 .*ATI.*Mobility.*HD *46.* 2 1 1 3.3
-ATI Mobility Radeon HD 4800 .*ATI.*Mobility.*HD *48.* 3 1 1 3.3
-ATI Mobility Radeon HD 5100 .*ATI.*Mobility.*HD *51.* 3 1 1 3.2
-ATI Mobility Radeon HD 5300 .*ATI.*Mobility.*HD *53.* 3 1 0 0
-ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD *54.* 2 1 1 4.2
-ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD *55.* 3 1 0 0
-ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD *56.* 3 1 1 4.2
-ATI Mobility Radeon HD 5700 .*ATI.*Mobility.*HD *57.* 3 1 1 4.1
-ATI Mobility Radeon HD 6200 .*ATI.*Mobility.*HD *62.* 3 1 0 0
-ATI Mobility Radeon HD 6300 .*ATI.*Mobility.*HD *63.* 3 1 1 4.2
-ATI Mobility Radeon HD 6400M .*ATI.*Mobility.*HD *64.* 3 1 0 0
-ATI Mobility Radeon HD 6500M .*ATI.*Mobility.*HD *65.* 5 1 1 4.2
-ATI Mobility Radeon HD 6600M .*ATI.*Mobility.*HD *66.* 5 1 0 0
-ATI Mobility Radeon HD 6700M .*ATI.*Mobility.*HD *67.* 5 1 0 0
-ATI Mobility Radeon HD 6800M .*ATI.*Mobility.*HD *68.* 5 1 0 0
-ATI Mobility Radeon HD 6900M .*ATI.*Mobility.*HD *69.* 5 1 0 0
-ATI Radeon HD 2300 .*ATI.*Radeon HD *23.. 0 1 1 3.3
-ATI Radeon HD 2400 .*ATI.*Radeon HD *24.. 1 1 1 4
-ATI Radeon HD 2600 .*ATI.*Radeon HD *26.. 2 1 1 3.3
-ATI Radeon HD 2900 .*ATI.*Radeon HD *29.. 3 1 1 3.3
-ATI Radeon HD 3000 .*ATI.*Radeon HD *30.. 0 1 0 0
-ATI Radeon HD 3100 .*ATI.*Radeon HD *31.. 1 1 0 0
-ATI Radeon HD 3200 .*ATI.*Radeon HD *32.. 1 1 1 4
-ATI Radeon HD 3300 .*ATI.*Radeon HD *33.. 1 1 1 3.3
-ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1 1 4
-ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 2 1 0 0
-ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1 1 3.3
-ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1 0 0
-ATI HD3700 .*ATI.* HD37.. 3 1 0 3.3
-ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1 1 4
-ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1 0 0
-ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1 1 4
-ATI Radeon HD 4300 .*ATI.*Radeon HD *43.. 2 1 1 4
-ATI Radeon HD 4400 .*ATI.*Radeon HD *44.. 2 1 0 0
-ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 2 1 1 3.3
-ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1 1 4
-ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1 1 3.3
-ATI Radeon HD 4800 .*ATI.*Radeon HD *48.. 3 1 1 4
-ATI ASUS EAH5400 .*ATI.*ASUS EAH54.. 3 1 1 4.2
-ATI Radeon HD 5400 .*ATI.*Radeon HD *54.. 3 1 1 4.2
-ATI Radeon HD 5500 .*ATI.*Radeon HD *55.. 3 1 1 4.2
-ATI ASUS EAH5500 .*ATI.*ASUS EAH55.. 3 1 1 4.2
-ATI Radeon HD 5600 .*ATI.*Radeon HD *56.. 3 1 1 4.2
-ATI Radeon HD 5700 .*ATI.*Radeon HD *57.. 3 1 1 4.2
-ATI Radeon HD 5800 .*ATI.*Radeon HD *58.. 4 1 1 4.2
-ATI Radeon HD 5900 .*ATI.*Radeon HD *59.. 4 1 1 4.2
-ATI Radeon HD 6200 .*ATI.*Radeon HD *62.. 0 1 1 4.2
-ATI Radeon HD 6300 .*ATI.*Radeon HD *63.. 1 1 1 4.2
-ATI Radeon HD 6400 .*ATI.*Radeon HD *64.. 3 1 1 4.2
-ATI Radeon HD 6500 .*ATI.*Radeon HD *65.. 3 1 1 4.2
-ATI Radeon HD 6600 .*ATI.*Radeon HD *66.. 3 1 1 4.2
-ATI Radeon HD 6700 .*ATI.*Radeon HD *67.. 3 1 1 4.2
-ATI Radeon HD 6800 .*ATI.*Radeon HD *68.. 4 1 1 4.2
-ATI Radeon HD 6900 .*ATI.*Radeon HD *69.. 5 1 1 4.2
-ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 0 0
-ATI Radeon 2100 .*ATI.*Radeon 21.. 0 1 1 2.1
-ATI Radeon 3000 .*ATI.*Radeon 30.. 1 1 1 4
-ATI Radeon 3100 .*ATI.*Radeon 31.. 0 1 1 3.3
-ATI Radeon 5xxx .*ATI.*Radeon 5... 3 1 0 0
-ATI Radeon 7xxx .*ATI.*Radeon 7... 0 1 1 2
-ATI Radeon 8xxx .*ATI.*Radeon 8... 0 1 0 0
-ATI Radeon 9000 .*ATI.*Radeon 90.. 0 1 1 1.3
-ATI Radeon 9100 .*ATI.*Radeon 91.. 0 1 0 0
-ATI Radeon 9200 .*ATI.*Radeon 92.. 0 1 1 1.3
-ATI Radeon 9500 .*ATI.*Radeon 95.. 0 1 1 2.1
-ATI Radeon 9600 .*ATI.*Radeon 96.. 0 1 1 2.1
-ATI Radeon 9700 .*ATI.*Radeon 97.. 1 1 0 0
-ATI Radeon 9800 .*ATI.*Radeon 98.. 1 1 1 2.1
-ATI Radeon RV250 .*ATI.*RV250.* 0 1 0 0
-ATI Radeon RV600 .*ATI.*RV6.* 1 1 0 0
-ATI Radeon RX700 .*ATI.*RX70.* 1 1 0 0
-ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1 0 0
-ATI RS880M .*ATI.*RS880M 1 1 0 0
-ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 0 0
-ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 0 0
-ATI Radeon X300 .*ATI.*Radeon *X3.* 1 1 1 2.1
-ATI Radeon X400 .*ATI.*Radeon ?X4.* 0 1 0 0
-ATI Radeon X500 .*ATI.*Radeon ?X5.* 1 1 1 2.1
-ATI Radeon X600 .*ATI.*Radeon ?X6.* 1 1 1 2.1
-ATI Radeon X700 .*ATI.*Radeon ?X7.* 2 1 1 2.1
-ATI Radeon X800 .*ATI.*Radeon ?X8.* 1 1 1 2.1
-ATI Radeon X900 .*ATI.*Radeon ?X9.* 2 1 0 0
-ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 1 1 2.1
-ATI Rage 128 .*ATI.*Rage 128.* 0 1 0 0
-ATI R300 (9700) .*R300.* 0 1 1 2.1
-ATI R350 (9800) .*R350.* 1 1 0 0
-ATI R580 (X1900) .*R580.* 3 1 0 0
-ATI RC410 (Xpress 200) .*RC410.* 0 0 0 0
-ATI RS48x (Xpress 200x) .*RS48.* 0 0 0 0
-ATI RS600 (Xpress 3200) .*RS600.* 0 0 0 0
-ATI RV350 (9600) .*RV350.* 0 1 0 0
-ATI RV370 (X300) .*RV370.* 0 1 0 0
-ATI RV410 (X700) .*RV410.* 1 1 0 0
-ATI RV515 .*RV515.* 1 1 0 0
-ATI RV570 (X1900 GT/PRO) .*RV570.* 3 1 0 0
-ATI RV380 .*RV380.* 0 1 0 0
-ATI RV530 .*RV530.* 1 1 0 0
-ATI RX480 (Xpress 200P) .*RX480.* 0 1 0 0
-ATI RX700 .*RX700.* 1 1 0 0
-AMD ANTILLES (HD 6990) .*(AMD|ATI).*Antilles.* 3 1 0 0
-AMD BARTS (HD 6800) .*(AMD|ATI).*Barts.* 3 1 1 2.1
-AMD CAICOS (HD 6400) .*(AMD|ATI).*Caicos.* 3 1 0 0
-AMD CAYMAN (HD 6900) .*(AMD|ATI).*(Cayman|CAYMAM).* 3 1 0 0
-AMD CEDAR (HD 5450) .*(AMD|ATI).*Cedar.* 2 1 0 0
-AMD CYPRESS (HD 5800) .*(AMD|ATI).*Cypress.* 3 1 0 0
-AMD HEMLOCK (HD 5970) .*(AMD|ATI).*Hemlock.* 3 1 0 0
-AMD JUNIPER (HD 5700) .*(AMD|ATI).*Juniper.* 3 1 0 0
-AMD PARK .*(AMD|ATI).*Park.* 3 1 0 0
-AMD REDWOOD (HD 5500/5600) .*(AMD|ATI).*Redwood.* 3 1 0 0
-AMD TURKS (HD 6500/6600) .*(AMD|ATI).*Turks.* 3 1 0 0
-AMD RS780 (HD 3200) .*RS780.* 0 1 1 2.1
-AMD RS880 (HD 4200) .*RS880.* 0 1 1 3.2
-AMD RV610 (HD 2400) .*RV610.* 1 1 0 0
-AMD RV620 (HD 3400) .*RV620.* 1 1 0 0
-AMD RV630 (HD 2600) .*RV630.* 2 1 0 0
-AMD RV635 (HD 3600) .*RV635.* 3 1 0 0
-AMD RV670 (HD 3800) .*RV670.* 3 1 0 0
-AMD R680 (HD 3870 X2) .*R680.* 3 1 0 0
-AMD R700 (HD 4800 X2) .*R700.* 3 1 0 0
-AMD RV710 (HD 4300) .*RV710.* 0 1 1 1.4
-AMD RV730 (HD 4600) .*RV730.* 3 1 0 0
-AMD RV740 (HD 4700) .*RV740.* 3 1 0 0
-AMD RV770 (HD 4800) .*RV770.* 3 1 0 0
-AMD RV790 (HD 4800) .*RV790.* 3 1 0 0
-ATI 760G/Radeon 3000 .*ATI.*AMD 760G.* 1 1 1 3.3
-ATI 780L/Radeon 3000 .*ATI.*AMD 780L.* 1 1 0 0
-ATI Radeon DDR .*ATI.*Radeon ?DDR.* 0 1 0 0
-ATI FirePro 2000 .*ATI.*FirePro 2.* 2 1 1 4.1
-ATI FirePro 3000 .*ATI.*FirePro V3.* 2 1 0 0
-ATI FirePro 4000 .*ATI.*FirePro V4.* 2 1 0 0
-ATI FirePro 5000 .*ATI.*FirePro V5.* 3 1 0 0
-ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1 0 0
-ATI FirePro M .*ATI.*FirePro M.* 3 1 1 4.2
-ATI R300 (9700) .*R300.* 0 1 1 2.1
-ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1 0 4.2
-Intel X3100 .*Intel.*X3100.* 1 1 1 2.1
-Intel GMA 3600 .*Intel.* 3600.* 0 1 1 3
-Intel 830M .*Intel.*830M 0 0 0 0
-Intel 845G .*Intel.*845G 0 0 1 1.4
-Intel 855GM .*Intel.*855GM 0 0 1 1.4
-Intel 865G .*Intel.*865G 0 0 1 1.4
-Intel 900 .*Intel.*900.*900 0 0 0 0
-Intel 915GM .*Intel.*915GM 0 0 1 1.4
-Intel 915G .*Intel.*915G 0 0 1 1.4
-Intel 945GM .*Intel.*945GM.* 0 1 1 1.4
-Intel 945G .*Intel.*945G.* 0 1 1 1.4
-Intel 950 .*Intel.*950.* 0 1 1 1.4
-Intel 965 .*Intel.*965.* 0 1 1 2.1
-Intel G33 .*Intel.*G33.* 1 0 1 1.4
-Intel G41 .*Intel.*G41.* 1 1 1 2.1
-Intel G45 .*Intel.*G45.* 1 1 1 2.1
-Intel Bear Lake .*Intel.*Bear Lake.* 1 0 1 1.4
-Intel Broadwater .*Intel.*Broadwater.* 0 0 1 1.4
-Intel Brookdale .*Intel.*Brookdale.* 0 0 1 1.3
-Intel Cantiga .*Intel.*Cantiga.* 0 0 1 2
-Intel Eaglelake .*Intel.*Eaglelake.* 1 1 1 2
-Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 1 1 1 2.1
-Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 4
-Intel HD Graphics 3000 .*Intel.*HD Graphics 3.* 3 1 1 3.1
-Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 4
-Intel HD2000 .*Intel.*HD2000.* 2 1 0 0
-Intel HD3000 .*Intel.*HD3000.* 3 1 0 0
-Intel HD Graphics .*Intel.*HD Graphics.* 2 1 1 4
-Intel Mobile 4 Series .*Intel.*Mobile.* 4 Series.* 0 1 1 2.1
-Intel 4 Series Internal .*Intel.* 4 Series Internal.* 1 1 1 2.1
-Intel Media Graphics HD .*Intel.*Media Graphics HD.* 0 1 0 0
-Intel Montara .*Intel.*Montara.* 0 0 1 1.3
-Intel Pineview .*Intel.*Pineview.* 0 1 1 1.4
-Intel Springdale .*Intel.*Springdale.* 0 0 1 1.3
-Intel Grantsdale .*Intel.*Grantsdale.* 1 1 0 0
-Intel Q45/Q43 .*Intel.*Q4.* 1 1 1 2.1
-Intel B45/B43 .*Intel.*B4.* 1 1 1 2.1
-Intel 3D-Analyze .*Intel.*3D-Analyze.* 2 1 0 0
-Matrox .*Matrox.* 0 0 0 0
-Mesa .*Mesa.* 1 0 1 2.1
-Gallium .*Gallium.* 1 1 1 2.1
-NVIDIA G100M .*NVIDIA .*100M.* 4 1 1 3.3
-NVIDIA G102M .*NVIDIA .*102M.* 1 1 1 3.3
-NVIDIA G103M .*NVIDIA .*103M.* 2 1 1 3.3
-NVIDIA G105M .*NVIDIA .*105M.* 2 1 1 3.3
-NVIDIA G 110M .*NVIDIA .*110M.* 1 1 1 3.3
-NVIDIA G 120M .*NVIDIA .*120M.* 1 1 1 3.3
-NVIDIA G 205M .*NVIDIA .*205M.* 1 1 0 0
-NVIDIA G 410M .*NVIDIA .*410M.* 3 1 1 4.2
-NVIDIA GT 120M .*NVIDIA .*GT *12*M.* 3 1 1 3.3
-NVIDIA GT 130M .*NVIDIA .*GT *13*M.* 3 1 1 3.3
-NVIDIA GT 140M .*NVIDIA .*GT *14*M.* 3 1 1 3.3
-NVIDIA GT 150M .*NVIDIA .*GTS *15*M.* 2 1 0 0
-NVIDIA GTS 160M .*NVIDIA .*GTS *16*M.* 2 1 0 0
-NVIDIA G210M .*NVIDIA .*G21*M.* 3 1 0 0
-NVIDIA GT 220M .*NVIDIA .*GT *22*M.* 3 1 1 3.3
-NVIDIA GT 230M .*NVIDIA .*GT *23*M.* 3 1 1 3.3
-NVIDIA GT 240M .*NVIDIA .*GT *24*M.* 3 1 1 3.3
-NVIDIA GTS 250M .*NVIDIA .*GTS *25*M.* 3 1 0 0
-NVIDIA GTS 260M .*NVIDIA .*GTS *26*M.* 3 1 0 0
-NVIDIA GTX 260M .*NVIDIA .*GTX *26*M.* 3 1 0 0
-NVIDIA GTX 270M .*NVIDIA .*GTX *27*M.* 3 1 0 0
-NVIDIA GTX 280M .*NVIDIA .*GTX *28*M.* 3 1 0 0
-NVIDIA 300M .*NVIDIA .*30*M.* 3 1 1 4.2
-NVIDIA G 310M .*NVIDIA .*31*M.* 2 1 0 0
-NVIDIA GT 320M .*NVIDIA .*GT *32*M.* 3 1 0 0
-NVIDIA GT 325M .*NVIDIA .*GT *32*M.* 3 1 1 3.3
-NVIDIA GT 330M .*NVIDIA .*GT *33*M.* 3 1 1 3.3
-NVIDIA GT 340M .*NVIDIA .*GT *34*M.* 4 1 1 3.3
-NVIDIA GTS 350M .*NVIDIA .*GTS *35*M.* 4 1 1 3.3
-NVIDIA GTS 360M .*NVIDIA .*GTS *360M.* 5 1 1 3.3
-NVIDIA 405M .*NVIDIA .* 40*M.* 2 1 0 4.2
-NVIDIA 410M .*NVIDIA .* 41*M.* 3 1 0 0
-NVIDIA GT 415M .*NVIDIA .*GT *41*M.* 3 1 1 4.2
-NVIDIA GT 420M .*NVIDIA .*GT *42*M.* 3 1 1 4.2
-NVIDIA GT 430M .*NVIDIA .*GT *43*M.* 3 1 1 4.2
-NVIDIA GT 440M .*NVIDIA .*GT *44*M.* 3 1 1 4.2
-NVIDIA GT 450M .*NVIDIA .*GT *45*M.* 3 1 0 0
-NVIDIA GTX 460M .*NVIDIA .*GTX *46*M.* 4 1 1 4.2
-NVIDIA GTX 470M .*NVIDIA .*GTX *47*M.* 3 1 0 0
-NVIDIA GTX 480M .*NVIDIA .*GTX *48*M.* 3 1 1 4.2
-NVIDIA GT 520M .*NVIDIA .*GT *52*M.* 3 1 1 4.2
-NVIDIA GT 530M .*NVIDIA .*GT *53*M.* 3 1 1 4.2
-NVIDIA GT 540M .*NVIDIA .*GT *54*M.* 3 1 1 4.2
-NVIDIA GT 550M .*NVIDIA .*GT *55*M.* 3 1 1 4.2
-NVIDIA GTX 560M .*NVIDIA .*GTX *56*M.* 3 1 0 0
-NVIDIA GTX 570M .*NVIDIA .*GTX *57*M.* 5 1 0 0
-NVIDIA GTX 580M .*NVIDIA .*GTX *58*M.* 5 1 1 4.2
-NVIDIA 610M .*NVIDIA.* 61*M.* 3 1 1 4.2
-NVIDIA GT 620M .*NVIDIA .*GT *62*M.* 3 1 0 0
-NVIDIA GT 630M .*NVIDIA .*GT *63*M.* 3 1 0 0
-NVIDIA GT 640M .*NVIDIA .*GT *64*M.* 3 1 0 0
-NVIDIA GT 650M .*NVIDIA .*GT *65*M.* 3 1 0 0
-NVIDIA GTX 660M .*NVIDIA .*GTX *66*M.* 5 1 0 0
-NVIDIA GTX 670M .*NVIDIA .*GTX *67*M.* 5 1 1 4.2
-NVIDIA GTX 680M .*NVIDIA .*GTX *68*M.* 5 1 0 0
-NVIDIA GTX 690M .*NVIDIA .*GTX *69*M.* 5 1 0 0
-NVIDIA G100 .*NVIDIA .*G10.* 3 1 1 4.2
-NVIDIA GT 120 .*NVIDIA .*GT *12.* 2 1 0 3
-NVIDIA GT 130 .*NVIDIA .*GT *13.* 2 1 0 3.3
-NVIDIA GTS 150 .*NVIDIA .*GTS *15.* 2 1 0 0
-NVIDIA 200 .*NVIDIA .*GeForce 20.* 2 1 1 3.3
-NVIDIA G200 .*NVIDIA .*GeForce G20.* 2 1 1 3.3
-NVIDIA G210 .*NVIDIA .*GeForce G210.* 3 1 1 3.3
-NVIDIA 210 .*NVIDIA .*GeForce 210.* 3 1 1 3.3
-NVIDIA GT 220 .*NVIDIA .*GT *22.* 2 1 1 3.3
-NVIDIA GT 230 .*NVIDIA .*GT *23.* 2 1 1 3.3
-NVIDIA GT 240 .*NVIDIA .*GT *24.* 4 1 1 3.3
-NVIDIA GTS 240 .*NVIDIA .*GTS *24.* 4 1 1 3.3
-NVIDIA GTS 250 .*NVIDIA .*GTS *25.* 4 1 1 3.3
-NVIDIA GTX 260 .*NVIDIA .*GTX *26.* 4 1 1 3.3
-NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 4 1 0 3.3
-NVIDIA GTX 280 .*NVIDIA .*GTX *28.* 4 1 1 3.3
-NVIDIA GTX 290 .*NVIDIA .*GTX *29.* 5 1 0 3.3
-NVIDIA 310 .*NVIDIA .*GeForce 310.* 3 1 1 3.3
-NVIDIA 315 .*NVIDIA .*GeForce 315.* 3 1 1 3.3
-NVIDIA GT 320 .*NVIDIA .*GT *32.* 3 1 0 3.3
-NVIDIA GT 330 .*NVIDIA .*GT *33.* 3 1 0 3.3
-NVIDIA GT 340 .*NVIDIA .*GT *34.* 3 1 0 0
-NVIDIA 405 .*NVIDIA .* 405.* 3 1 0 3.3
-NVIDIA GT 420 .*NVIDIA .*GT *42.* 3 1 1 4.2
-NVIDIA GT 430 .*NVIDIA .*GT *43.* 3 1 1 4.2
-NVIDIA GT 440 .*NVIDIA .*GT *44.* 4 1 0 4.2
-NVIDIA GTS 450 .*NVIDIA .*GTS *45.* 4 1 1 4.2
-NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 5 1 1 4.3
-NVIDIA GTX 470 .*NVIDIA .*GTX *47.* 5 1 1 4.2
-NVIDIA GTX 480 .*NVIDIA .*GTX *48.* 5 1 1 4.2
-NVIDIA 510 .*NVIDIA .* 510.* 3 1 0 0
-NVIDIA GT 520 .*NVIDIA .*GT *52.* 3 1 1 4.2
-NVIDIA GT 530 .*NVIDIA .*GT *53.* 3 1 1 4.2
-NVIDIA GT 540 .*NVIDIA .*GT *54.* 3 1 1 4.2
-NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 5 1 1 4.3
-NVIDIA GTX 560 .*NVIDIA .*GTX *56.* 5 1 1 4.2
-NVIDIA GTX 570 .*NVIDIA .*GTX *57.* 5 1 1 4.2
-NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 5 1 1 4.3
-NVIDIA GTX 590 .*NVIDIA .*GTX *59.* 5 1 1 4.2
-NVIDIA GT 610 .*NVIDIA .*GT *61.* 3 1 1 4.2
-NVIDIA GT 620 .*NVIDIA .*GT *62.* 3 1 0 4.2
-NVIDIA GT 630 .*NVIDIA .*GT *63.* 3 1 0 4.2
-NVIDIA GT 640 .*NVIDIA .*GT *64.* 3 1 0 4.3
-NVIDIA GT 650 .*NVIDIA .*GT *65.* 3 1 1 4.2
-NVIDIA GTX 650 .*NVIDIA .*GTX *65.* 3 1 1 4.2
-NVIDIA GTX 660 .*NVIDIA .*GTX *66.* 5 1 0 4.3
-NVIDIA GTX 670 .*NVIDIA .*GTX *67.* 5 1 1 4.2
-NVIDIA GTX 680 .*NVIDIA .*GTX *68.* 5 1 1 4.2
-NVIDIA GTX 690 .*NVIDIA .*GTX *69.* 5 1 1 4.2
-NVIDIA C51 .*NVIDIA .*C51.* 0 1 1 2
-NVIDIA G72 .*NVIDIA .*G72.* 1 1 0 0
-NVIDIA G73 .*NVIDIA .*G73.* 1 1 0 0
-NVIDIA G84 .*NVIDIA .*G84.* 2 1 0 0
-NVIDIA G86 .*NVIDIA .*G86.* 3 1 0 0
-NVIDIA G92 .*NVIDIA .*G92.* 3 1 0 0
-NVIDIA GeForce .*GeForce 256.* 0 0 0 0
-NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1 1 1.5
-NVIDIA GeForce 3 .*GeForce ?3 ?.* 2 1 1 2.1
-NVIDIA GeForce 3 Ti .*GeForce ?3 Ti.* 0 1 0 0
-NVIDIA GeForce 4 .*NVIDIA .*GeForce ?4.* 0 1 1 1.5
-NVIDIA GeForce 4 Go .*NVIDIA .*GeForce ?4.*Go.* 0 1 0 0
-NVIDIA GeForce 4 MX .*NVIDIA .*GeForce ?4 MX.* 0 1 0 0
-NVIDIA GeForce 4 PCX .*NVIDIA .*GeForce ?4 PCX.* 0 1 0 0
-NVIDIA GeForce 4 Ti .*NVIDIA .*GeForce ?4 Ti.* 0 1 0 0
-NVIDIA GeForce 6100 .*NVIDIA .*GeForce 61.* 3 1 1 4.2
-NVIDIA GeForce 6200 .*NVIDIA .*GeForce 62.* 0 1 1 2.1
-NVIDIA GeForce 6500 .*NVIDIA .*GeForce 65.* 1 1 1 2.1
-NVIDIA GeForce 6600 .*NVIDIA .*GeForce 66.* 2 1 1 2.1
-NVIDIA GeForce 6700 .*NVIDIA .*GeForce 67.* 2 1 1 2.1
-NVIDIA GeForce 6800 .*NVIDIA .*GeForce 68.* 1 1 1 2.1
-NVIDIA GeForce 7000 .*NVIDIA .*GeForce 70.* 1 1 1 2.1
-NVIDIA GeForce 7100 .*NVIDIA .*GeForce 71.* 1 1 1 2.1
-NVIDIA GeForce 7200 .*NVIDIA .*GeForce 72.* 1 1 0 0
-NVIDIA GeForce 7300 .*NVIDIA .*GeForce 73.* 1 1 1 2.1
-NVIDIA GeForce 7500 .*NVIDIA .*GeForce 75.* 2 1 1 2.1
-NVIDIA GeForce 7600 .*NVIDIA .*GeForce 76.* 2 1 1 2.1
-NVIDIA GeForce 7800 .*NVIDIA .*GeForce 78.* 2 1 1 2.1
-NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 3 1 1 2.1
-NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1 0 0
-NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1 0 3.3
-NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 2.1
-NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 3 1 1 3.3
-NVIDIA GeForce 8400M .*NVIDIA .*GeForce 8400M.* 1 1 1 3.3
-NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1 1 3.3
-NVIDIA GeForce 8500 .*NVIDIA .*GeForce 85.* 2 1 1 3.3
-NVIDIA GeForce 8600M .*NVIDIA .*GeForce 8600M.* 2 1 1 3.3
-NVIDIA GeForce 8600 .*NVIDIA .*GeForce 86.* 3 1 1 3.3
-NVIDIA GeForce 8700M .*NVIDIA .*GeForce 8700M.* 2 1 1 3.3
-NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1 0 0
-NVIDIA GeForce 8800M .*NVIDIA .*GeForce 8800M.* 2 1 1 3.3
-NVIDIA GeForce 8800 .*NVIDIA .*GeForce 88.* 3 1 1 3.3
-NVIDIA GeForce 9100M .*NVIDIA .*GeForce 9100M.* 0 1 0 0
-NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 3.3
-NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1 0 3.1
-NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 3.3
-NVIDIA GeForce 9300M .*NVIDIA .*GeForce 9300M.* 1 1 1 3.3
-NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 1 1 1 3.3
-NVIDIA GeForce 9400M .*NVIDIA .*GeForce 9400M.* 2 1 1 3.3
-NVIDIA GeForce 9400 .*NVIDIA .*GeForce 94.* 3 1 1 3.3
-NVIDIA GeForce 9500M .*NVIDIA .*GeForce 9500M.* 1 1 1 3.3
-NVIDIA GeForce 9500 .*NVIDIA .*GeForce 95.* 3 1 1 3.3
-NVIDIA GeForce 9600M .*NVIDIA .*GeForce 9600M.* 2 1 1 3.3
-NVIDIA GeForce 9600 .*NVIDIA .*GeForce 96.* 3 1 1 3.3
-NVIDIA GeForce 9700M .*NVIDIA .*GeForce 9700M.* 0 1 1 3.3
-NVIDIA GeForce 9800M .*NVIDIA .*GeForce 9800M.* 2 1 1 3.3
-NVIDIA GeForce 9800 .*NVIDIA .*GeForce 98.* 3 1 1 3.3
-NVIDIA GeForce FX 5100 .*NVIDIA .*GeForce FX 51.* 0 1 0 0
-NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 2.1
-NVIDIA GeForce FX 5300 .*NVIDIA .*GeForce FX 53.* 0 1 0 0
-NVIDIA GeForce FX 5500 .*NVIDIA .*GeForce FX 55.* 0 1 1 2.1
-NVIDIA GeForce FX 5600 .*NVIDIA .*GeForce FX 56.* 1 1 1 2.1
-NVIDIA GeForce FX 5700 .*NVIDIA .*GeForce FX 57.* 0 1 1 2.1
-NVIDIA GeForce FX 5800 .*NVIDIA .*GeForce FX 58.* 1 1 0 0
-NVIDIA GeForce FX 5900 .*NVIDIA .*GeForce FX 59.* 1 1 1 2.1
-NVIDIA GeForce FX Go5100 .*NVIDIA .*GeForce FX Go51.* 0 1 0 0
-NVIDIA GeForce FX Go5200 .*NVIDIA .*GeForce FX Go52.* 0 1 0 0
-NVIDIA GeForce FX Go5300 .*NVIDIA .*GeForce FX Go53.* 0 1 0 0
-NVIDIA GeForce FX Go5500 .*NVIDIA .*GeForce FX Go55.* 0 1 0 0
-NVIDIA GeForce FX Go5600 .*NVIDIA .*GeForce FX Go56.* 0 1 1 2.1
-NVIDIA GeForce FX Go5700 .*NVIDIA .*GeForce FX Go57.* 1 1 1 1.5
-NVIDIA GeForce FX Go5800 .*NVIDIA .*GeForce FX Go58.* 1 1 0 0
-NVIDIA GeForce FX Go5900 .*NVIDIA .*GeForce FX Go59.* 1 1 0 0
-NVIDIA GeForce FX Go5xxx .*NVIDIA .*GeForce FX Go.* 0 1 0 0
-NVIDIA GeForce Go 6100 .*NVIDIA .*GeForce Go 61.* 0 1 1 2.1
-NVIDIA GeForce Go 6200 .*NVIDIA .*GeForce Go 62.* 0 1 0 0
-NVIDIA GeForce Go 6400 .*NVIDIA .*GeForce Go 64.* 1 1 1 2
-NVIDIA GeForce Go 6500 .*NVIDIA .*GeForce Go 65.* 1 1 0 0
-NVIDIA GeForce Go 6600 .*NVIDIA .*GeForce Go 66.* 0 1 1 2.1
-NVIDIA GeForce Go 6700 .*NVIDIA .*GeForce Go 67.* 1 1 0 0
-NVIDIA GeForce Go 6800 .*NVIDIA .*GeForce Go 68.* 0 1 1 2.1
-NVIDIA GeForce Go 7200 .*NVIDIA .*GeForce Go 72.* 1 1 0 0
-NVIDIA GeForce Go 7300 LE .*NVIDIA .*GeForce Go 73.*LE.* 1 1 0 0
-NVIDIA GeForce Go 7300 .*NVIDIA .*GeForce Go 73.* 1 1 1 2.1
-NVIDIA GeForce Go 7400 .*NVIDIA .*GeForce Go 74.* 1 1 1 2.1
-NVIDIA GeForce Go 7600 .*NVIDIA .*GeForce Go 76.* 1 1 1 2.1
-NVIDIA GeForce Go 7700 .*NVIDIA .*GeForce Go 77.* 0 1 1 2.1
-NVIDIA GeForce Go 7800 .*NVIDIA .*GeForce Go 78.* 2 1 0 0
-NVIDIA GeForce Go 7900 .*NVIDIA .*GeForce Go 79.* 1 1 1 2.1
-NVIDIA D9M .*NVIDIA .*D9M.* 1 1 0 0
-NVIDIA G94 .*NVIDIA .*G94.* 3 1 0 0
-NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 0 0
-NVIDIA ION 2 .*NVIDIA .*ION 2.* 2 1 0 0
-NVIDIA ION .*NVIDIA Corporation.*ION.* 2 1 1 3.3
-NVIDIA NB8M .*NVIDIA .*NB8M.* 1 1 0 0
-NVIDIA NB8P .*NVIDIA .*NB8P.* 2 1 0 0
-NVIDIA NB9E .*NVIDIA .*NB9E.* 3 1 0 0
-NVIDIA NB9M .*NVIDIA .*NB9M.* 1 1 0 0
-NVIDIA NB9P .*NVIDIA .*NB9P.* 2 1 0 0
-NVIDIA N10 .*NVIDIA .*N10.* 1 1 0 0
-NVIDIA GeForce PCX .*GeForce PCX.* 0 1 0 0
-NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 0 3
-NVIDIA NV17 .*NVIDIA .*NV17.* 0 1 0 0
-NVIDIA NV34 .*NVIDIA .*NV34.* 0 1 0 0
-NVIDIA NV35 .*NVIDIA .*NV35.* 0 1 0 0
-NVIDIA NV36 .*NVIDIA .*NV36.* 1 1 0 0
-NVIDIA NV41 .*NVIDIA .*NV41.* 1 1 0 0
-NVIDIA NV43 .*NVIDIA .*NV43.* 1 1 0 0
-NVIDIA NV44 .*NVIDIA .*NV44.* 1 1 0 0
-NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 3.3
-NVIDIA MCP51 .*NVIDIA .*MCP51.* 1 1 0 0
-NVIDIA MCP61 .*NVIDIA .*MCP61.* 1 1 0 0
-NVIDIA MCP67 .*NVIDIA .*MCP67.* 1 1 0 0
-NVIDIA MCP68 .*NVIDIA .*MCP68.* 1 1 0 0
-NVIDIA MCP73 .*NVIDIA .*MCP73.* 1 1 0 0
-NVIDIA MCP77 .*NVIDIA .*MCP77.* 1 1 0 0
-NVIDIA MCP78 .*NVIDIA .*MCP78.* 1 1 0 0
-NVIDIA MCP79 .*NVIDIA .*MCP79.* 1 1 0 0
-NVIDIA MCP7A .*NVIDIA .*MCP7A.* 1 1 0 0
-NVIDIA Quadro2 .*Quadro2.* 0 1 0 0
-NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 0 4.2
-NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1 0 4.2
-NVIDIA Quadro 3000M .*Quadro.*3000M.* 3 1 0 0
-NVIDIA Quadro 4000M .*Quadro.*4000M.* 3 1 0 0
-NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 0 4.2
-NVIDIA Quadro 50x0 M .*Quadro.*50.0.* 3 1 0 0
-NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1 0 0
-NVIDIA Quadro 400 .*Quadro.*400.* 2 1 0 3.3
-NVIDIA Quadro 600 .*Quadro.*600.* 2 1 0 3.3
-NVIDIA Quadro4 .*Quadro4.* 0 1 0 0
-NVIDIA Quadro DCC .*Quadro DCC.* 0 1 0 0
-NVIDIA Quadro CX .*Quadro.*CX.* 3 1 0 0
-NVIDIA Quadro FX 770M .*Quadro.*FX *770M.* 2 1 0 0
-NVIDIA Quadro FX 1500M .*Quadro.*FX *1500M.* 1 1 0 2.1
-NVIDIA Quadro FX 1600M .*Quadro.*FX *1600M.* 2 1 0 0
-NVIDIA Quadro FX 2500M .*Quadro.*FX *2500M.* 2 1 0 0
-NVIDIA Quadro FX 2700M .*Quadro.*FX *2700M.* 3 1 0 0
-NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 0 3.3
-NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 0 2.1
-NVIDIA Quadro FX 3600 .*Quadro.*FX *3600.* 3 1 0 0
-NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 0 3.3
-NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 0 3.2
-NVIDIA Quadro FX 4500 .*Quadro.*FX *45.* 3 1 0 0
-NVIDIA Quadro FX 880M .*Quadro.*FX *880M.* 3 1 0 3.3
-NVIDIA Quadro FX 4800 .*NVIDIA .*Quadro *FX *4800.* 3 1 0 0
-NVIDIA Quadro FX .*Quadro FX.* 1 1 0 3.3
-NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 1 3.3
-NVIDIA Quadro NVS 300M .*NVIDIA .*NVS *300M.* 2 1 0 0
-NVIDIA Quadro NVS 320M .*NVIDIA .*NVS *320M.* 2 1 0 0
-NVIDIA Quadro NVS 2100M .*NVIDIA .*NVS *2100M.* 2 1 0 0
-NVIDIA Quadro NVS 3100M .*NVIDIA .*NVS *3100M.* 2 1 0 0
-NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 0 4.1
-NVIDIA Quadro NVS 5100M .*NVIDIA .*NVS *5100M.* 2 1 0 0
-NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 0 3.2
-NVIDIA Corporation N12P .*NVIDIA .*N12P.* 1 1 1 4.1
-NVIDIA Corporation N11M .*NVIDIA .*N11M.* 2 1 0 0
-NVIDIA RIVA TNT .*RIVA TNT.* 0 0 0 0
-S3 .*S3 Graphics.* 0 0 1 1.4
-SiS SiS.* 0 0 1 1.5
-Trident Trident.* 0 0 0 0
-Tungsten Graphics Tungsten.* 0 0 0 0
-XGI XGI.* 0 0 0 0
-VIA VIA.* 0 0 0 0
-Apple Generic Apple.*Generic.* 0 0 0 0
-Apple Software Renderer Apple.*Software Renderer.* 0 0 0 0
-Humper Humper.* 0 1 1 2.1
-PowerVR SGX545 .*PowerVR SGX.* 1 1 1 3
+3Dfx .*3Dfx.* 0 0 0 0
+3Dlabs .*3Dlabs.* 0 0 0 0
+ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 0 0
+ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 0 0
+ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 0 0
+ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 0 0
+ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 0 2.1
+ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 1 3.3
+ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 0 0
+ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 1 1 1 2.1
+ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 0 0
+ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 0 0
+ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 0 0
+ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 0 0
+ATI Radeon X1300 .*ATI.*(ASUS|Radeon).*X13.* 2 1 1 2.1
+ATI Radeon X1500 .*ATI.*(ASUS|Radeon).*X15.* 2 1 1 2.1
+ATI Radeon X1600 .*ATI.*(ASUS|Radeon).*X16.* 2 1 1 2.1
+ATI Radeon X1700 .*ATI.*(ASUS|Radeon).*X17.* 2 1 1 2.1
+ATI Radeon X1800 .*ATI.*(Radeon|Diamond) X18.* ?.* 3 1 1 2.1
+ATI Radeon X1900 .*ATI.*(Radeon|Diamond|ASUS) X19.* ?.* 2 1 1 2.1
+ATI Radeon X17xx .*ATI.*(Radeon|Diamond) X17.* ?.* 1 1 1 2.1
+ATI Radeon X16xx .*ATI.*(Radeon|Diamond) X17.* ?.* 1 1 1 2.1
+ATI Radeon X28xx .*ATI.*(Radeon|Diamond) X28.. ?.* 1 1 1 2.1
+ATI Display Adapter .*ATI.*display adapter.* 1 1 1 4.1
+ATI FireGL 5200 .*ATI.*FireGL V52.* 1 1 1 2.1
+ATI FireGL 5xxx .*ATI.*FireGL V5.* 2 1 1 3.3
+ATI FireGL .*ATI.*Fire.*GL.* 4 1 1 4.2
+ATI FirePro M3900 .*ATI.*FirePro.*M39.* 2 1 0 4.1
+ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1 0 0
+ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1 0 0
+ATI FirePro M7820 .*ATI.*FirePro.*M78.* 5 1 1 4.2
+ATI FireMV .*ATI.*FireMV.* 0 1 1 3.2
+ATI Generic .*ATI.*Generic.* 0 0 0 0
+ATI Hercules 9800 .*ATI.*Hercules.* 9800.* 1 1 0 0
+ATI IGP 340M .*ATI.*IGP.* 34[0-9]M.* 0 0 0 1.3
+ATI M52 .*ATI.*M52.* 1 1 0 0
+ATI M54 .*ATI.*M54.* 1 1 0 0
+ATI M56 .*ATI.*M56.* 1 1 0 0
+ATI M71 .*ATI.*M71.* 1 1 0 0
+ATI M72 .*ATI.*M72.* 1 1 0 0
+ATI M76 .*ATI.*M76.* 3 1 0 0
+ATI Radeon HD 6300M .*ATI.*AMD Radeon.* (HD|HD )63..M 2 1 1 4.2
+ATI Radeon HD 6400M .*ATI.*AMD Radeon.* (HD|HD )64..M 2 1 1 4.2
+ATI Radeon HD 6500M .*ATI.*AMD Radeon.* (HD|HD )65..M 2 1 1 4.2
+ATI Radeon HD 6600M .*ATI.*AMD Radeon.* (HD 6|6)6..M 3 1 1 4.2
+ATI Radeon HD 6700M .*ATI.*AMD Radeon.* (HD|HD )67..M 3 1 1 4.2
+ATI Radeon HD 6800M .*ATI.*AMD Radeon.* (HD|HD )68..M 3 1 1 4.2
+ATI Radeon HD 6300G .*ATI.*AMD Radeon.* (HD|HD )63..G 2 1 1 4.2
+ATI Radeon HD 6400G .*ATI.*AMD Radeon.* (HD|HD )64..G 2 1 1 4.2
+ATI Radeon HD 6500G .*ATI.*AMD Radeon.* (HD|HD )65..G 2 1 1 4.2
+ATI Radeon HD 6600G .*ATI.*AMD Radeon.* (HD|HD )66..G 3 1 1 4.2
+ATI Radeon HD 7100 .*ATI.*(Radeon|ASUS).* (HD|HD )71.* 2 1 0 0
+ATI Radeon HD 7200 .*ATI.*(Radeon|ASUS).* (HD|HD )72.* 2 1 0 4.2
+ATI Radeon HD 7300 .*ATI.*(Radeon|ASUS).* (HD|HD )73.* 2 1 0 4.2
+ATI Radeon HD 7400 .*ATI.*(Radeon|ASUS).* (HD|HD )74.* 2 1 0 4.2
+ATI Radeon HD 7500 .*ATI.*(Radeon|ASUS).* (HD|HD )75.* 3 1 1 4.2
+ATI Radeon HD 7600 .*ATI.*(Radeon|ASUS).* (HD|HD )76.* 3 1 0 4.2
+ATI Radeon HD 7700 .*ATI.*(Radeon|ASUS).* (HD|HD )77.* 4 1 1 4.2
+ATI Radeon HD 7800 .*ATI.*(Radeon|ASUS).* (HD|HD )78.* 5 1 1 4.2
+ATI Radeon HD 7900 .*ATI.*(Radeon|ASUS).* (HD|HD )79.* 5 1 1 4.2
+ATI Radeon HD 7000 Series .*ATI.*(Radeon|ASUS).* (HD|HD )7000 Series.* 3 1 1 4.2
+ATI Mobility Radeon 4100 .*ATI.*Mobility.* 41.. 1 1 1 3.3
+ATI Mobility Radeon 5000 .*ATI.*Mobility.* 50.. 1 1 1 4.2
+ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 1 1.3
+ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 0 0
+ATI Mobility Radeon 9800 .*ATI.*Mobility.* 98.* 1 1 0 0
+ATI Mobility Radeon 9700 .*ATI.*Mobility.* 97.* 0 1 1 2.1
+ATI Mobility Radeon 9600 .*ATI.*Mobility.* 96.* 1 1 1 2.1
+ATI Mobility Radeon HD 530v .*ATI.*Mobility.*HD 530v.* 1 1 1 3.3
+ATI Mobility Radeon HD 540v .*ATI.*Mobility.*HD 540v.* 1 1 1 3.3
+ATI Mobility Radeon HD 545v .*ATI.*Mobility.*HD 545v.* 2 1 1 4
+ATI Mobility Radeon HD 550v .*ATI.*Mobility.*HD 550v.* 3 1 1 4
+ATI Mobility Radeon HD 560v .*ATI.*Mobility.*HD 560v.* 3 1 1 3.2
+ATI Mobility Radeon HD 565v .*ATI.*Mobility.*HD 565v.* 3 1 1 3.3
+ATI Mobility Radeon HD 2300 .*ATI.*Mobility.*HD 23.* 0 1 1 2.1
+ATI Mobility Radeon HD 2400 .*ATI.*Mobility.*HD 24.* 1 1 1 3.3
+ATI Mobility Radeon HD 2600 .*ATI.*Mobility.*HD 26.* 1 1 1 3.3
+ATI Mobility Radeon HD 2700 .*ATI.*Mobility.*HD 27.* 3 1 0 0
+ATI Mobility Radeon HD 3100 .*ATI.*Mobility.*HD 31.* 0 1 0 0
+ATI Mobility Radeon HD 3200 .*ATI.*Mobility.*HD 32.* 0 1 0 0
+ATI Mobility Radeon HD 3400 .*ATI.*Mobility.*HD 34.* 1 1 1 4
+ATI Mobility Radeon HD 3600 .*ATI.*Mobility.*HD 36.* 1 1 1 4
+ATI Mobility Radeon HD 3800 .*ATI.*Mobility.*HD 38.* 3 1 1 3.3
+ATI Mobility Radeon HD 4200 .*ATI.*Mobility.*HD 42.* 1 1 1 4
+ATI Mobility Radeon HD 4300 .*ATI.*Mobility.*(HD |HD)43.* 1 1 1 4
+ATI Mobility Radeon HD 4500 .*ATI.*Mobility.*HD 45.* 1 1 1 4
+ATI Mobility Radeon HD 4600 .*ATI.*Mobility.*HD 46.* 2 1 1 3.3
+ATI Mobility Radeon HD 4800 .*ATI.*Mobility.*HD 48.* 3 1 1 3.3
+ATI Mobility Radeon HD 5000 Series .*ATI.*Mobility.*HD 50.* 3 1 1 3.2
+ATI Mobility Radeon HD 5100 .*ATI.*Mobility.*HD 51.* 3 1 1 3.2
+ATI Mobility Radeon HD 5300 .*ATI.*Mobility.*HD 53.* 3 1 0 0
+ATI Mobility Radeon HD 5400 .*ATI.*Mobility.*HD 54.* 2 1 1 4.2
+ATI Mobility Radeon HD 5500 .*ATI.*Mobility.*HD 55.* 3 1 0 4.2
+ATI Mobility Radeon HD 5600 .*ATI.*Mobility.*HD 56.* 3 1 1 4.2
+ATI Mobility Radeon HD 5700 .*ATI.*Mobility.*HD 57.* 3 1 1 4.1
+ATI Mobility Radeon HD 6200 .*ATI.*Mobility.*HD 62.* 3 1 0 0
+ATI Mobility Radeon HD 6300 .*ATI.*Mobility.*HD 63.* 3 1 1 4.2
+ATI Mobility Radeon HD 6400M .*ATI.*Mobility.*HD 64.* 3 1 0 0
+ATI Mobility Radeon HD 6500M .*ATI.*Mobility.*HD 65.* 5 1 1 4.2
+ATI Mobility Radeon HD 6600M .*ATI.*Mobility.*HD 66.* 5 1 0 0
+ATI Mobility Radeon HD 6700M .*ATI.*Mobility.*HD 67.* 5 1 0 0
+ATI Mobility Radeon HD 6800M .*ATI.*Mobility.*HD 68.* 5 1 0 0
+ATI Mobility Radeon HD 6900M .*ATI.*Mobility.*HD 69.* 5 1 0 0
+ATI Mobility Radeon Graphics .*ATI Mobility Radeon Graphics.* 1 1 0 4
+ATI Radeon HD 2300 .*ATI.*Radeon.* (HD|HD )23.. 0 1 1 3.3
+ATI Radeon HD 2400 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)24.. 1 1 1 4
+ATI Radeon HD 2600 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)26.. 2 1 1 4
+ATI Radeon HD 2900 .*ATI.*Radeon.* (HD|HD )29.. 3 1 1 3.3
+ATI Radeon HD 3000 .*ATI.*Radeon.* (HD|HD )30.. 0 1 0 0
+ATI Radeon HD 3100 .*ATI.*Radeon.* (HD|HD )31.. 1 1 0 0
+ATI Radeon HD 3200 .*ATI.*Radeon.* (HD|HD )32.. 1 1 1 4
+ATI Radeon HD 3300 .*ATI.*Radeon.* (HD|HD )33.. 1 1 1 3.3
+ATI Radeon HD 3400 .*ATI.*(Radeon|ASUS).* (HD|HD |AH|EAH)34.. 1 1 1 4
+ATI Radeon HD 3500 .*ATI.*Radeon.* (HD|HD )35.. 2 1 0 0
+ATI Radeon HD 3600 .*ATI.*(Radeon|ASUS).* (HD|HD |AH|EAH)36.. 3 1 1 4
+ATI Radeon HD 3700 .*ATI.*Radeon.* (HD|HD )37.. 3 1 0 3.3
+ATI HD3700 .*ATI.* HD37.. 3 1 0 3.3
+ATI Radeon HD 3800 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)38.. 3 1 1 4
+ATI Radeon HD 4100 .*ATI.*Radeon.* (HD|HD )41.. 1 1 0 0
+ATI Radeon HD 4200 .*ATI.*Radeon.* (HD|HD )42.. 1 1 1 4
+ATI Radeon HD 4300 .*ATI.*(Radeon|ASUS).* (HD4|HD 4|EAH4|4)3.. 2 1 1 4
+ATI Radeon HD 4400 .*ATI.*Radeon.* (HD|HD )44.. 2 1 0 0
+ATI Radeon HD 4500 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)45.. 2 1 1 3.3
+ATI Radeon HD 4600 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)46.. 3 1 1 4
+ATI Radeon HD 4700 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)47.. 3 1 1 3.3
+ATI Radeon HD 4800 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)48.. 3 1 1 4
+ATI Radeon HD 5400 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)54.. 3 1 1 4.2
+ATI Radeon HD 5500 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)55.. 3 1 1 4.2
+ATI Radeon HD 5600 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)56.. 3 1 1 4.2
+ATI Radeon HD 5700 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)57.. 3 1 1 4.2
+ATI Radeon HD 5800 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)58.. 4 1 1 4.2
+ATI Radeon HD 5900 .*ATI.*Radeon.* (HD|HD )59.. 4 1 1 4.2
+ATI Radeon HD 6200 .*ATI.*Radeon.* (HD|HD )62.. 0 1 1 4.2
+ATI Radeon HD 6300 .*ATI.*Radeon.* (HD|HD )63.. 1 1 1 4.2
+ATI Radeon HD 6400 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)64.. 3 1 1 4.2
+ATI Radeon HD 6500 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)65.. 3 1 1 4.2
+ATI Radeon HD 6600 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)66.. 3 1 1 4.2
+ATI Radeon HD 6700 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)67.. 3 1 1 4.2
+ATI Radeon HD 6800 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)68.. 4 1 1 4.2
+ATI Radeon HD 6900 .*ATI.*(Radeon|ASUS).* (HD|HD |EAH)69.. 5 1 1 4.2
+ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 0 0
+ATI Radeon 2100 .*ATI.*Radeon 21.. 0 1 1 2.1
+ATI Radeon 3000 .*ATI.*Radeon 30.. 1 1 1 4
+ATI Radeon 3100 .*ATI.*Radeon 31.. 0 1 1 3.3
+ATI Radeon 5xxx .*ATI.*Radeon 5... 3 1 0 0
+ATI Radeon 7xxx .*ATI.*Radeon 7... 0 1 1 2
+ATI Radeon 8xxx .*ATI.*Radeon 8... 0 1 0 0
+ATI Radeon 9000 .*ATI.*Radeon 90.. 0 1 1 1.3
+ATI Radeon 9100 .*ATI.*Radeon 91.. 0 1 0 0
+ATI Radeon 9200 .*ATI.*Radeon 92.. 0 1 1 1.3
+ATI Radeon 9500 .*ATI.*Radeon 95.. 0 1 1 2.1
+ATI Radeon 9600 .*ATI.*Radeon 96.. 0 1 1 2.1
+ATI Radeon 9700 .*ATI.*Radeon 97.. 1 1 0 0
+ATI Radeon 9800 .*ATI.*Radeon 98.. 1 1 1 2.1
+ATI Radeon RV250 .*ATI.*RV250.* 0 1 0 0
+ATI Radeon RV600 .*ATI.*RV6.* 1 1 0 0
+ATI Radeon RX700 .*ATI.*RX70.* 1 1 0 0
+ATI Radeon RX800 .*ATI.*Radeon RX80.* 2 1 0 0
+ATI RS880M .*ATI.*RS880M 1 1 0 0
+ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 0 0
+ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 0 0
+ATI Radeon X300 .*ATI.*Radeon X3.* 1 1 1 2.1
+ATI Radeon X400 .*ATI.*Radeon ?X4.* 0 1 0 0
+ATI Radeon X500 .*ATI.*Radeon ?X5.* 1 1 1 2.1
+ATI Radeon X600 .*ATI.*(Radeon |ASUS Extreme A)X6.* 1 1 1 2.1
+ATI Radeon X700 .*ATI.*Radeon ?X7.* 2 1 1 2.1
+ATI Radeon X800 .*ATI.*Radeon ?X8.* 1 1 1 2.1
+ATI Radeon X900 .*ATI.*Radeon ?X9.* 2 1 0 0
+ATI Radeon X1000 .*ATI.*Radeon ?X10.* 2 1 0 2.1
+ATI Radeon X1200 .*ATI.*Radeon ?X12.* 2 1 0 2.1
+ATI Radeon X1400 .*ATI.*Radeon ?X14.* 2 1 0 2.1
+ATI Radeon X2300 .*ATI.*Radeon ?X23.* 2 1 0 2.1
+ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 1 1 2.1
+ATI Rage 128 .*ATI.*Rage 128.* 0 1 0 0
+ATI R300 (9700) .*R300.* 0 1 1 2.1
+ATI R350 (9800) .*R350.* 1 1 0 0
+ATI R580 (X1900) .*R580.* 3 1 0 0
+ATI RC410 (Xpress 200) .*RC410.* 0 0 0 0
+ATI RS48x (Xpress 200x) .*RS48.* 0 0 0 0
+ATI RS600 (Xpress 3200) .*RS600.* 0 0 0 0
+ATI RV350 (9600) .*RV350.* 0 1 0 0
+ATI RV370 (X300) .*RV370.* 0 1 0 0
+ATI RV410 (X700) .*RV410.* 1 1 0 0
+ATI RV515 .*RV515.* 1 1 0 0
+ATI RV570 (X1900 GT/PRO) .*RV570.* 3 1 0 0
+ATI RV380 .*RV380.* 0 1 0 0
+ATI RV530 .*RV530.* 1 1 0 0
+ATI RX480 (Xpress 200P) .*RX480.* 0 1 0 0
+ATI RX700 .*RX700.* 1 1 0 0
+AMD ANTILLES (HD 6990) .*(AMD|ATI).*Antilles.* 3 1 0 0
+ATI ROBSON .*(AMD|ATI).*ROBSON.* 3 1 0 4
+AMD BARTS (HD 6800) .*(AMD|ATI).*Barts.* 3 1 1 2.1
+AMD WRESTLER .*(AMD|ATI).*WRESTLER.* 3 1 1 4
+AMD SUMO .*(AMD|ATI).*SUMO.* 3 1 1 4.1
+AMD CAICOS (HD 6400) .*(AMD|ATI).*Caicos.* 3 1 0 0
+AMD CAYMAN (HD 6900) .*(AMD|ATI).*(Cayman|CAYMAM).* 3 1 0 0
+AMD CEDAR (HD 5450) .*(AMD|ATI).*Cedar.* 2 1 0 2.1
+AMD CYPRESS (HD 5800) .*(AMD|ATI).*Cypress.* 3 1 0 0
+AMD HEMLOCK (HD 5970) .*(AMD|ATI).*Hemlock.* 3 1 0 0
+AMD JUNIPER (HD 5700) .*(AMD|ATI).*Juniper.* 3 1 0 0
+AMD PARK .*(AMD|ATI).*Park.* 3 1 0 0
+AMD REDWOOD (HD 5500/5600) .*(AMD|ATI).*Redwood.* 3 1 0 1.4
+AMD TURKS (HD 6500/6600) .*(AMD|ATI).*Turks.* 3 1 0 2.1
+AMD RS780 (HD 3200) .*RS780.* 0 1 1 2.1
+AMD RS880 (HD 4200) .*RS880.* 0 1 1 3.2
+AMD RV610 (HD 2400) .*RV610.* 1 1 0 0
+AMD RV620 (HD 3400) .*RV620.* 1 1 0 0
+AMD RV630 (HD 2600) .*RV630.* 2 1 0 0
+AMD RV635 (HD 3600) .*RV635.* 3 1 0 1.4
+AMD RV670 (HD 3800) .*RV670.* 3 1 0 0
+AMD R680 (HD 3870 X2) .*R680.* 3 1 0 0
+AMD R700 (HD 4800 X2) .*R700.* 3 1 0 0
+AMD RV710 (HD 4300) .*RV710.* 0 1 1 1.4
+AMD RV730 (HD 4600) .*RV730.* 3 1 0 1.4
+AMD RV740 (HD 4700) .*RV740.* 3 1 0 0
+AMD RV770 (HD 4800) .*RV770.* 3 1 0 0
+AMD RV790 (HD 4800) .*RV790.* 3 1 0 0
+ATI 760G/Radeon 3000 .*ATI.*AMD 760G.* 1 1 1 3.3
+ATI 780L/Radeon 3000 .*ATI.*AMD 780L.* 1 1 0 0
+ATI Radeon DDR .*ATI.*Radeon ?DDR.* 0 1 0 0
+ATI FirePro 2000 .*ATI.*FirePro 2.* 2 1 1 4.2
+ATI FirePro 3000 .*ATI.*FirePro V3.* 2 1 0 0
+ATI FirePro 4000 .*ATI.*FirePro V4.* 2 1 0 4.1
+ATI FirePro 5000 .*ATI.*FirePro V5.* 3 1 0 0
+ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1 0 0
+ATI FirePro M .*ATI.*FirePro M.* 3 1 1 4.2
+ATI R300 (9700) .*R300.* 0 1 1 2.1
+Intel X3100 .*Intel.*X3100.* 1 1 1 2.1
+Intel GMA 3600 .*Intel.* 3600.* 0 1 1 3
+Intel 830M .*Intel.*830M 0 0 0 0
+Intel 845G .*Intel.*845G 0 0 1 1.4
+Intel 855GM .*Intel.*855GM 0 0 1 1.4
+Intel 865G .*Intel.*865G 0 0 1 1.4
+Intel 900 .*Intel.*900.*900 0 0 0 0
+Intel 915GM .*Intel.*915GM 0 0 1 1.4
+Intel 915G .*Intel.*915G 0 0 1 1.4
+Intel 945GM .*Intel.*945GM.* 0 1 1 1.4
+Intel 945G .*Intel.*945G.* 0 1 1 1.4
+Intel 950 .*Intel.*950.* 0 1 1 1.4
+Intel 965 .*Intel.*965.* 0 1 1 2.1
+Intel G33 .*Intel.*G33.* 1 0 1 1.4
+Intel G41 .*Intel.*G41.* 1 1 1 2.1
+Intel G45 .*Intel.*G45.* 1 1 1 2.1
+Intel Bear Lake .*Intel.*Bear Lake.* 1 0 1 1.4
+Intel Broadwater .*Intel.*Broadwater.* 0 0 1 1.4
+Intel Brookdale .*Intel.*Brookdale.* 0 0 1 1.3
+Intel Cantiga .*Intel.*Cantiga.* 0 0 1 2
+Intel Eaglelake .*Intel.*Eaglelake.* 1 1 1 2
+Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 1 1 1 2.1
+Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 4
+Intel HD Graphics 3000 .*Intel.*HD Graphics 3.* 3 1 1 3.1
+Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 4
+Intel HD Graphics .*Intel.*HD Graphics.* 2 1 1 4
+Intel Mobile 4 Series .*Intel.*Mobile.* 4 Series.* 0 1 1 2.1
+Intel 4 Series Internal .*Intel.* 4 Series Internal.* 1 1 1 2.1
+Intel Media Graphics HD .*Intel.*Media Graphics HD.* 0 1 0 0
+Intel Montara .*Intel.*Montara.* 0 0 1 1.3
+Intel Pineview .*Intel.*Pineview.* 0 1 1 1.4
+Intel Springdale .*Intel.*Springdale.* 0 0 1 1.3
+Intel Grantsdale .*Intel.*Grantsdale.* 1 1 0 0
+Intel Q45/Q43 .*Intel.*Q4.* 1 1 1 2.1
+Intel B45/B43 .*Intel.*B4.* 1 1 1 2.1
+Intel 3D-Analyze .*Intel.*3D-Analyze.* 2 1 0 0
+Matrox .*Matrox.* 0 0 0 0
+Mesa .*Mesa.* 1 0 1 3
+Gallium .*Gallium.* 1 1 1 2.1
+NVIDIA G100M .*NVIDIA .* 10[0-9]M.* 4 1 1 3.3
+NVIDIA G 110M .*NVIDIA .* 11[0-9]M.* 1 1 1 3.3
+NVIDIA G 120M .*NVIDIA .* 12[0-9]M.* 1 1 1 3.3
+NVIDIA G 200M .*NVIDIA .* 20[0-9]M.* 1 1 0 0
+NVIDIA G 410M .*NVIDIA .* 41[0-9]M.* 3 1 1 4.2
+NVIDIA GT 130M .*NVIDIA .*GT 13[0-9]M.* 3 1 1 3.3
+NVIDIA GT 140M .*NVIDIA .*GT 14[0-9]M.* 3 1 1 3.3
+NVIDIA GT 150M .*NVIDIA .*GTS 15[0-9]M.* 2 1 0 0
+NVIDIA GTS 160M .*NVIDIA .*GTS 16[0-9]M.* 2 1 0 0
+NVIDIA G210M .*NVIDIA .*G21[0-9]M.* 3 1 0 3.3
+NVIDIA GT 220M .*NVIDIA .*GT 22[0-9]M.* 3 1 1 3.3
+NVIDIA GT 230M .*NVIDIA .*GT 23[0-9]M.* 3 1 1 3.3
+NVIDIA GT 240M .*NVIDIA .*GT 24[0-9]M.* 3 1 1 3.3
+NVIDIA GTS 250M .*NVIDIA .*GTS 25[0-9]M.* 3 1 0 3.3
+NVIDIA GTS 260M .*NVIDIA .*GTS 26[0-9]M.* 3 1 0 0
+NVIDIA GTX 260M .*NVIDIA .*GTX 26[0-9]M.* 3 1 0 3.3
+NVIDIA GTX 270M .*NVIDIA .*GTX 27[0-9]M.* 3 1 0 0
+NVIDIA GTX 280M .*NVIDIA .*GTX 28[0-9]M.* 3 1 0 3.3
+NVIDIA 300M .*NVIDIA .*GT 30[0-9]M.* 3 1 1 4.2
+NVIDIA G 310M .*NVIDIA .* 31[0-9]M.* 2 1 0 3.3
+NVIDIA GT 320M .*NVIDIA .* 32[0-9]M.* 3 1 0 3.3
+NVIDIA GT 330M .*NVIDIA .*GT 33[0-9]M.* 3 1 1 3.3
+NVIDIA GT 340M .*NVIDIA .*GT 34[0-9]M.* 4 1 1 3.3
+NVIDIA GTS 350M .*NVIDIA .*GTS 35[0-9]M.* 4 1 1 3.3
+NVIDIA GTS 360M .*NVIDIA .*GTS 36[0-9]M.* 5 1 1 3.3
+NVIDIA 400M .*NVIDIA .* 40[0-9]M.* 2 1 0 0
+NVIDIA 410M .*NVIDIA .* 41[0-9]M.* 3 1 0 0
+NVIDIA GT 420M .*NVIDIA .*GT 42[0-9]M.* 3 1 1 4.2
+NVIDIA GT 430M .*NVIDIA .*GT 43[0-9]M.* 3 1 1 4.2
+NVIDIA GT 440M .*NVIDIA .*GT 44[0-9]M.* 3 1 1 4.2
+NVIDIA GT 450M .*NVIDIA .*GT 45[0-9]M.* 3 1 0 0
+NVIDIA GTX 460M .*NVIDIA .*GTX 46[0-9]M.* 4 1 1 4.3
+NVIDIA GTX 470M .*NVIDIA .*GTX 47[0-9]M.* 3 1 0 4.2
+NVIDIA GTX 480M .*NVIDIA .*GTX 48[0-9]M.* 3 1 1 4.2
+NVIDIA GT 520M .*NVIDIA .*GT 52[0-9]M.* 3 1 1 4.2
+NVIDIA GT 530M .*NVIDIA .*GT 53[0-9]M.* 3 1 1 4.2
+NVIDIA GT 540M .*NVIDIA .*GT 54[0-9]M.* 3 1 1 4.2
+NVIDIA GT 550M .*GeForce GT 55[0-9]M.* 3 1 1 4.2
+NVIDIA GTX 560M .*NVIDIA .*GTX 56[0-9]M.* 3 1 0 4.2
+NVIDIA GTX 570M .*NVIDIA .*GTX 57[0-9]M.* 5 1 0 4.2
+NVIDIA GTX 580M .*NVIDIA .*GTX 58[0-9]M.* 5 1 1 4.2
+NVIDIA 610M .*NVIDIA.* 61[0-9]M.* 3 1 1 4.2
+NVIDIA GT 620M .*NVIDIA .*GT 62[0-9]M.* 3 1 0 4.2
+NVIDIA GT 630M .*NVIDIA .*GT 63[0-9]M.* 3 1 0 4.2
+NVIDIA GT 640M .*NVIDIA .*GT 64[0-9]M.* 3 1 0 4.2
+NVIDIA GT 650M .*NVIDIA .*GT 65[0-9]M.* 3 1 0 4.2
+NVIDIA GTX 660M .*NVIDIA .*GTX 66[0-9]M.* 5 1 0 4.3
+NVIDIA GTX 670M .*NVIDIA .*GTX 67[0-9]M.* 5 1 1 4.2
+NVIDIA GTX 680M .*NVIDIA .*GTX 68[0-9]M.* 5 1 0 4.2
+NVIDIA GTX 690M .*NVIDIA .*GTX 69[0-9]M.* 5 1 0 0
+NVIDIA G100 .*NVIDIA .*G10.* 3 1 1 4.2
+NVIDIA GT 120 .*NVIDIA .*GT 12.* 2 1 0 3.3
+NVIDIA GT 130 .*NVIDIA .*GT 13.* 2 1 0 3.3
+NVIDIA GT 140 .*NVIDIA .*GT 14.* 2 1 0 3.3
+NVIDIA GTS 150 .*NVIDIA .*GTS 15.* 2 1 0 0
+NVIDIA 200 .*NVIDIA .*GeForce 20.* 2 1 1 3.3
+NVIDIA G200 .*NVIDIA .*GeForce G20.* 2 1 1 3.3
+NVIDIA G210 .*NVIDIA .*GeForce G210.* 3 1 1 3.3
+NVIDIA 210 .*NVIDIA .*GeForce 210.* 3 1 1 3.3
+NVIDIA GT 220 .*NVIDIA .*GT 22.* 2 1 1 3.3
+NVIDIA GT 230 .*NVIDIA .*GT 23.* 2 1 1 3.3
+NVIDIA GT 240 .*NVIDIA .*GT 24.* 4 1 1 3.3
+NVIDIA GTS 240 .*NVIDIA .*GTS 24.* 4 1 1 3.3
+NVIDIA GTS 250 .*NVIDIA .*GTS 25.* 4 1 1 3.3
+NVIDIA GTX 260 .*NVIDIA .*GTX 26.* 4 1 1 3.3
+NVIDIA GTX 270 .*NVIDIA .*GTX 27.* 4 1 0 3.3
+NVIDIA GTX 280 .*NVIDIA .*GTX 28.* 4 1 1 3.3
+NVIDIA GTX 290 .*NVIDIA .*GTX 29.* 5 1 0 3.3
+NVIDIA 310 .*NVIDIA .*GeForce 310.* 3 1 1 3.3
+NVIDIA 315 .*NVIDIA .*GeForce 315.* 3 1 1 3.3
+NVIDIA GT 320 .*NVIDIA .*GT 32.* 3 1 0 3.3
+NVIDIA GT 330 .*NVIDIA .*GT 33.* 3 1 0 3.3
+NVIDIA GT 340 .*NVIDIA .*GT 34.* 3 1 0 3.3
+NVIDIA 405 .*NVIDIA .* 405.* 3 1 0 3.3
+NVIDIA GT 420 .*NVIDIA .*GT 42.* 3 1 1 4.2
+NVIDIA GT 430 .*NVIDIA .*GT 43.* 3 1 1 4.3
+NVIDIA GT 440 .*NVIDIA .*GT 44.* 4 1 0 4.3
+NVIDIA GTS 450 .*NVIDIA .*GTS 45.* 4 1 1 4.2
+NVIDIA GTX 460 .*NVIDIA .*GTX 46.* 5 1 1 4.3
+NVIDIA GTX 470 .*NVIDIA .*GTX 47.* 5 1 1 4.2
+NVIDIA GTX 480 .*NVIDIA .*GTX 48.* 5 1 1 4.2
+NVIDIA 510 .*NVIDIA .* 510.* 3 1 0 4.2
+NVIDIA GT 520 .*NVIDIA .*GT 52.* 3 1 1 4.2
+NVIDIA GT 530 .*NVIDIA .*GT 53.* 3 1 1 4.2
+NVIDIA GT 540 .*NVIDIA .*GT 54.* 3 1 1 4.2
+NVIDIA GTX 550 .*NVIDIA .*GTX 55.* 5 1 1 4.3
+NVIDIA GTX 560 .*NVIDIA .*GTX 56.* 5 1 1 4.3
+NVIDIA GTX 570 .*NVIDIA .*GTX 57.* 5 1 1 4.2
+NVIDIA GTX 580 .*NVIDIA .*GTX 58.* 5 1 1 4.3
+NVIDIA GTX 590 .*NVIDIA .*GTX 59.* 5 1 1 4.2
+NVIDIA 605 .*NVIDIA .* 605.* 3 1 1 4.2
+NVIDIA GT 610 .*NVIDIA .*GT 61.* 3 1 1 4.2
+NVIDIA GT 620 .*NVIDIA .*GT 62.* 3 1 0 4.2
+NVIDIA GT 630 .*NVIDIA .*GT 63.* 3 1 0 4.2
+NVIDIA GT 640 .*NVIDIA .*GT 64.* 3 1 0 4.2
+NVIDIA GT 650 .*NVIDIA .*GT 65.* 3 1 1 4.2
+NVIDIA GTX 650 .*NVIDIA .*GTX 65.* 3 1 1 4.2
+NVIDIA GTX 660 .*NVIDIA .*GTX 66.* 5 1 0 4.3
+NVIDIA GTX 670 .*NVIDIA .*GTX 67.* 5 1 1 4.2
+NVIDIA GTX 680 .*NVIDIA .*GTX 68.* 5 1 1 4.2
+NVIDIA GTX 690 .*NVIDIA .*GTX 69.* 5 1 1 4.2
+NVIDIA C51 .*NVIDIA .*C51.* 0 1 1 2
+NVIDIA G72 .*NVIDIA .*G72.* 1 1 0 0
+NVIDIA G73 .*NVIDIA .*G73.* 1 1 0 0
+NVIDIA G84 .*NVIDIA .*G84.* 2 1 0 0
+NVIDIA G86 .*NVIDIA .*G86.* 3 1 0 0
+NVIDIA G92 .*NVIDIA .*G92.* 3 1 0 0
+NVIDIA GeForce .*GeForce 256.* 0 0 0 0
+NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1 1 1.5
+NVIDIA GeForce 4 .*NVIDIA .*GeForce ?4.* 0 1 1 1.5
+NVIDIA GeForce 6100 .*NVIDIA .*GeForce 61.* 3 1 1 4.2
+NVIDIA GeForce 6200 .*NVIDIA .*GeForce 62.* 0 1 1 2.1
+NVIDIA GeForce 6500 .*NVIDIA .*GeForce 65.* 1 1 1 2.1
+NVIDIA GeForce 6600 .*NVIDIA .*GeForce 66.* 2 1 1 2.1
+NVIDIA GeForce 6700 .*NVIDIA .*GeForce 67.* 2 1 1 2.1
+NVIDIA GeForce 6800 .*NVIDIA .*GeForce 68.* 1 1 1 2.1
+NVIDIA GeForce 7000 .*NVIDIA .*GeForce 70.* 1 1 1 2.1
+NVIDIA GeForce 7100 .*NVIDIA .*GeForce 71.* 1 1 1 2.1
+NVIDIA GeForce 7200 .*NVIDIA .*GeForce 72.* 1 1 0 0
+NVIDIA GeForce 7300 .*NVIDIA .*GeForce 73.* 1 1 1 2.1
+NVIDIA GeForce 7500 .*NVIDIA .*GeForce 75.* 2 1 1 2.1
+NVIDIA GeForce 7600 .*NVIDIA .*GeForce 76.* 2 1 1 2.1
+NVIDIA GeForce 7800 .*NVIDIA .*GeForce 78.* 2 1 1 2.1
+NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 3 1 1 2.1
+NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1 0 3.3
+NVIDIA GeForce 8200M .*NVIDIA .*GeForce 820[0-9]M.* 1 1 0 3.3
+NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 3.3
+NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 3 1 1 3.3
+NVIDIA GeForce 8400M .*NVIDIA .*GeForce 840[0-9]M.* 1 1 1 3.3
+NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1 1 3.3
+NVIDIA GeForce 8500 .*NVIDIA .*GeForce 85.* 2 1 1 3.3
+NVIDIA GeForce 8600M .*NVIDIA .*GeForce 860[0-9]M.* 2 1 1 3.3
+NVIDIA GeForce 8600 .*NVIDIA .*GeForce 86.* 3 1 1 3.3
+NVIDIA GeForce 8700M .*NVIDIA .*GeForce 870[0-9]M.* 2 1 1 3.3
+NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1 0 0
+NVIDIA GeForce 8800M .*NVIDIA .*GeForce 880[0-9]M.* 2 1 1 3.3
+NVIDIA GeForce 8800 .*NVIDIA .*GeForce 88.* 3 1 1 3.3
+NVIDIA GeForce 9100M .*NVIDIA .*GeForce 910[0-9]M.* 0 1 0 3.3
+NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 3.3
+NVIDIA GeForce 9200M .*NVIDIA .*GeForce 920[0-9]M.* 1 1 0 3.3
+NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 3.3
+NVIDIA GeForce 9300M .*NVIDIA .*GeForce 930[0-9]M.* 1 1 1 3.3
+NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 1 1 1 3.3
+NVIDIA GeForce 9400M .*NVIDIA .*GeForce 940[0-9]M.* 2 1 1 3.3
+NVIDIA GeForce 9400 .*NVIDIA .*GeForce 94.* 3 1 1 3.3
+NVIDIA GeForce 9500M .*NVIDIA .*GeForce 950[0-9]M.* 1 1 1 3.3
+NVIDIA GeForce 9500 .*NVIDIA .*GeForce 95.* 3 1 1 3.3
+NVIDIA GeForce 9600M .*NVIDIA .*GeForce 960[0-9]M.* 2 1 1 3.3
+NVIDIA GeForce 9600 .*NVIDIA .*GeForce 96.* 3 1 1 3.3
+NVIDIA GeForce 9700M .*NVIDIA .*GeForce 970[0-9]M.* 0 1 1 3.3
+NVIDIA GeForce 9800M .*NVIDIA .*GeForce 980[0-9]M.* 2 1 1 3.3
+NVIDIA GeForce 9800 .*NVIDIA .*GeForce 98.* 3 1 1 3.3
+NVIDIA GeForce FX 5100 .*NVIDIA .*GeForce FX 51.* 0 1 0 0
+NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 2.1
+NVIDIA GeForce FX 5300 .*NVIDIA .*GeForce FX 53.* 0 1 0 0
+NVIDIA GeForce FX 5500 .*NVIDIA .*GeForce FX 55.* 0 1 1 2.1
+NVIDIA GeForce FX 5600 .*NVIDIA .*GeForce FX 56.* 1 1 1 2.1
+NVIDIA GeForce FX 5700 .*NVIDIA .*GeForce FX 57.* 0 1 1 2.1
+NVIDIA GeForce FX 5800 .*NVIDIA .*GeForce FX 58.* 1 1 0 0
+NVIDIA GeForce FX 5900 .*NVIDIA .*GeForce FX 59.* 1 1 1 2.1
+NVIDIA GeForce FX Go5100 .*NVIDIA .*GeForce FX Go51.* 0 1 0 0
+NVIDIA GeForce FX Go5200 .*NVIDIA .*GeForce FX Go52.* 0 1 0 1.5
+NVIDIA GeForce FX Go5300 .*NVIDIA .*GeForce FX Go53.* 0 1 0 0
+NVIDIA GeForce FX Go5500 .*NVIDIA .*GeForce FX Go55.* 0 1 0 0
+NVIDIA GeForce FX Go5600 .*NVIDIA .*GeForce FX Go56.* 0 1 1 2.1
+NVIDIA GeForce FX Go5700 .*NVIDIA .*GeForce FX Go57.* 1 1 1 1.5
+NVIDIA GeForce FX Go5800 .*NVIDIA .*GeForce FX Go58.* 1 1 0 0
+NVIDIA GeForce FX Go5900 .*NVIDIA .*GeForce FX Go59.* 1 1 0 0
+NVIDIA GeForce FX Go5xxx .*NVIDIA .*GeForce FX Go.* 0 1 0 0
+NVIDIA GeForce Go 6100 .*NVIDIA .*GeForce Go 61.* 0 1 1 2.1
+NVIDIA GeForce Go 6200 .*NVIDIA .*GeForce Go 62.* 0 1 0 1.5
+NVIDIA GeForce Go 6400 .*NVIDIA .*GeForce Go 64.* 1 1 1 2.1
+NVIDIA GeForce Go 6500 .*NVIDIA .*GeForce Go 65.* 1 1 0 0
+NVIDIA GeForce Go 6600 .*NVIDIA .*GeForce Go 66.* 0 1 1 2.1
+NVIDIA GeForce Go 6700 .*NVIDIA .*GeForce Go 67.* 1 1 0 0
+NVIDIA GeForce Go 6800 .*NVIDIA .*GeForce Go 68.* 0 1 1 2.1
+NVIDIA GeForce Go 7200 .*NVIDIA .*GeForce Go 72.* 1 1 0 2.1
+NVIDIA GeForce Go 7300 LE .*NVIDIA .*GeForce Go 73.*LE.* 1 1 0 0
+NVIDIA GeForce Go 7300 .*NVIDIA .*GeForce Go 73.* 1 1 1 2.1
+NVIDIA GeForce Go 7400 .*NVIDIA .*GeForce Go 74.* 1 1 1 2.1
+NVIDIA GeForce Go 7600 .*NVIDIA .*GeForce Go 76.* 1 1 1 2.1
+NVIDIA GeForce Go 7700 .*NVIDIA .*GeForce Go 77.* 0 1 1 2.1
+NVIDIA GeForce Go 7800 .*NVIDIA .*GeForce Go 78.* 2 1 0 0
+NVIDIA GeForce Go 7900 .*NVIDIA .*GeForce Go 79.* 1 1 1 2.1
+NVIDIA D9M .*NVIDIA .*D9M.* 1 1 0 0
+NVIDIA G94 .*NVIDIA .*G94.* 3 1 0 0
+NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 0 0
+NVIDIA ION 2 .*NVIDIA .*ION 2.* 2 1 0 0
+NVIDIA ION .*NVIDIA Corporation.*ION.* 2 1 1 3.3
+NVIDIA NB8M .*NVIDIA .*NB8M.* 1 1 0 0
+NVIDIA NB8P .*NVIDIA .*NB8P.* 2 1 0 0
+NVIDIA NB9E .*NVIDIA .*NB9E.* 3 1 0 0
+NVIDIA NB9M .*NVIDIA .*NB9M.* 1 1 0 0
+NVIDIA NB9P .*NVIDIA .*NB9P.* 2 1 0 0
+NVIDIA N10 .*NVIDIA .*N10.* 1 1 0 2.1
+NVIDIA GeForce PCX .*GeForce PCX.* 0 1 0 1.5
+NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 0 2.1
+NVIDIA NV17 .*NVIDIA .*NV17.* 0 1 0 0
+NVIDIA NV34 .*NVIDIA .*NV34.* 0 1 0 0
+NVIDIA NV35 .*NVIDIA .*NV35.* 0 1 0 0
+NVIDIA NV36 .*NVIDIA .*NV36.* 1 1 0 0
+NVIDIA NV41 .*NVIDIA .*NV41.* 1 1 0 0
+NVIDIA NV43 .*NVIDIA .*NV43.* 1 1 0 0
+NVIDIA NV44 .*NVIDIA .*NV44.* 1 1 0 0
+NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 3.3
+NVIDIA MCP51 .*NVIDIA .*MCP51.* 1 1 0 0
+NVIDIA MCP61 .*NVIDIA .*MCP61.* 1 1 0 2.1
+NVIDIA MCP67 .*NVIDIA .*MCP67.* 1 1 0 0
+NVIDIA MCP68 .*NVIDIA .*MCP68.* 1 1 0 0
+NVIDIA MCP73 .*NVIDIA .*MCP73.* 1 1 0 0
+NVIDIA MCP77 .*NVIDIA .*MCP77.* 1 1 0 0
+NVIDIA MCP78 .*NVIDIA .*MCP78.* 1 1 0 0
+NVIDIA MCP79 .*NVIDIA .*MCP79.* 1 1 0 0
+NVIDIA MCP7A .*NVIDIA .*MCP7A.* 1 1 0 0
+NVIDIA Quadro2 .*Quadro2.* 0 1 0 1.5
+NVIDIA Quadro 1000M .*Quadro.* (K1|1)00[0-9]M.* 2 1 0 4.2
+NVIDIA Quadro 2000 M/D .*Quadro.* (K2|2)000.* 3 1 0 4.2
+NVIDIA Quadro 3000M .*Quadro.* (K3|3)00[0-9]M.* 3 1 0 4.2
+NVIDIA Quadro 4000M .*Quadro.* (K4|4)00[0-9]M.* 3 1 0 4.2
+NVIDIA Quadro 4000 .*Quadro 4000.* 3 1 0 4.2
+NVIDIA Quadro 50x0 M .*Quadro.* 50.0.* 3 1 0 4.2
+NVIDIA Quadro 6000 .*Quadro.* 6000.* 3 1 0 0
+NVIDIA Quadro 400 .*Quadro.* 400.* 2 1 0 3.3
+NVIDIA Quadro 600 .*Quadro.* 600.* 2 1 0 4.2
+NVIDIA Quadro4 .*Quadro4.* 0 1 0 1.5
+NVIDIA Quadro DCC .*Quadro DCC.* 0 1 0 0
+NVIDIA Quadro CX .*Quadro.*CX.* 3 1 0 0
+NVIDIA Quadro FX 770M .*Quadro.*FX 77[0-9]M.* 2 1 0 3.3
+NVIDIA Quadro FX 1500M .*Quadro.*FX 150[0-9]M.* 1 1 0 2.1
+NVIDIA Quadro FX 1600M .*Quadro.*FX 160[0-9]M.* 2 1 0 3.3
+NVIDIA Quadro FX 2500M .*Quadro.*FX 250[0-9]M.* 2 1 0 2.1
+NVIDIA Quadro FX 2700M .*Quadro.*FX 270[0-9]M.* 3 1 0 3.3
+NVIDIA Quadro FX 2800M .*Quadro.*FX 280[0-9]M.* 3 1 0 3.3
+NVIDIA Quadro FX 3500 .*Quadro.*FX 3500.* 2 1 0 2.1
+NVIDIA Quadro FX 3600 .*Quadro.*FX 3600.* 3 1 0 3.3
+NVIDIA Quadro FX 3700 .*Quadro.*FX 3700.* 3 1 0 3.3
+NVIDIA Quadro FX 3800 .*Quadro.*FX 3800.* 3 1 0 3.3
+NVIDIA Quadro FX 4500 .*Quadro.*FX 45.* 3 1 0 2.1
+NVIDIA Quadro FX 880M .*Quadro.*FX 88[0-9]M.* 3 1 0 3.3
+NVIDIA Quadro FX 4800 .*NVIDIA .*Quadro FX 4800.* 3 1 0 3.1
+NVIDIA Quadro FX .*Quadro FX.* 1 1 0 3.3
+NVIDIA Quadro NVS 1xxM .*Quadro NVS 1.[05]M.* 0 1 1 3.3
+NVIDIA Quadro NVS 300M .*NVIDIA .*NVS 30[0-9]M.* 2 1 0 0
+NVIDIA Quadro NVS 320M .*NVIDIA .*NVS 32[0-9]M.* 2 1 0 0
+NVIDIA Quadro NVS 2100M .*NVIDIA .*NVS 210[0-9]M.* 2 1 0 3.3
+NVIDIA Quadro NVS 3100M .*NVIDIA .*NVS 310[0-9]M.* 2 1 0 3.3
+NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS 420[0-9]M.* 2 1 0 4.2
+NVIDIA Quadro NVS 5100M .*NVIDIA .*NVS 510[0-9]M.* 2 1 0 0
+NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 0 4.2
+NVIDIA Corporation N12P .*NVIDIA .*N12P.* 1 1 1 4.1
+NVIDIA Corporation N11M .*NVIDIA .*N11M.* 2 1 0 3.1
+NVIDIA RIVA TNT .*RIVA TNT.* 0 0 0 1.5
+S3 .*S3 Graphics.* 0 0 1 1.4
+SiS SiS.* 0 0 1 1.5
+Trident Trident.* 0 0 0 0
+Tungsten Graphics Tungsten.* 0 0 0 0
+XGI XGI.* 0 0 0 0
+VIA VIA.* 0 0 0 0
+Apple Generic Apple.*Generic.* 0 0 0 0
+Apple Software Renderer Apple.*Software Renderer.* 0 0 0 0
+Humper Humper.* 0 1 1 2.1
+PowerVR SGX545 .*PowerVR SGX.* 1 1 1 3
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/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/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"/>