diff options
| author | Geenz <geenz@geenzo.com> | 2013-01-30 12:45:26 -0500 | 
|---|---|---|
| committer | Geenz <geenz@geenzo.com> | 2013-01-30 12:45:26 -0500 | 
| commit | 071a53c814cc11631d6f854a4211de3c7c99590e (patch) | |
| tree | 98c6ef71d7c114cbbfca0ee4cf73f452737b2602 | |
| parent | aa1befd689703d9fea50399201911e0f8fca6ac6 (diff) | |
| parent | 577515e93f122fe64cbf06913b8bacddee96ad22 (diff) | |
Merge with latest viewer-dev-materials.
30 files changed, 1442 insertions, 3100 deletions
| @@ -391,3 +391,6 @@ cd39255bd23330fd30c04105f2811e941d8524fe 3.4.4-beta2  2c4011bbc2b15b82198fd8b51f3a9fe765a08c4d DRTVWR-271  2f8a3ef687bc55828abcb17ac1ad7cde70536d7e 3.4.4-beta3  35cfd4cf5b895fa776592f2e630e330be7f0604e DRTVWR-273 +c374035d459af3c03dea2dd90880dfc25de64706 DRTVWR-275 +05d9f1dd7a954069af2a33abedb7713fa36a04cb 3.4.4-beta4 +e1bb1ae7d8b12faeb37933a737c199cc9b9f89cc 3.4.4-release diff --git a/doc/contributions.txt b/doc/contributions.txt index f53d9f5cfd..ea90dd6b87 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -646,6 +646,7 @@ Jonathan Yap  	STORM-1872  	STORM-1858  	STORM-1862 +	OPEN-161  Kadah Coba  	STORM-1060      STORM-1843 @@ -1163,6 +1164,7 @@ Techwolf Lupindo  	SNOW-746  	VWR-12385  	VWR-20893 +	OPEN-161  Templar Merlin  tenebrous pau  	VWR-247 diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index 700525e1fa..a6e2c89ba4 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -348,7 +348,7 @@ void LLAvatarNameCache::requestNamesViaCapability()  	while(!sAskQueue.empty())  	{  		it = sAskQueue.begin(); -		const LLUUID& agent_id = *it; +		LLUUID agent_id = *it;  		sAskQueue.erase(it);  		if (url.empty()) @@ -416,7 +416,7 @@ void LLAvatarNameCache::requestNamesViaLegacy()  	for (S32 requests = 0; !sAskQueue.empty() && requests < MAX_REQUESTS; ++requests)  	{  		it = sAskQueue.begin(); -		const LLUUID& agent_id = *it; +		LLUUID agent_id = *it;  		sAskQueue.erase(it);  		// Mark as pending first, just in case the callback is immediately @@ -563,8 +563,7 @@ void LLAvatarNameCache::eraseUnrefreshed()              const LLAvatarName& av_name = it->second;              if (av_name.mExpires < max_unrefreshed)              { -                const LLUUID& agent_id = it->first; -                LL_DEBUGS("AvNameCache") << agent_id  +                LL_DEBUGS("AvNameCache") << it->first                                            << " user '" << av_name.mUsername << "' "                                           << "expired " << now - av_name.mExpires << " secs ago"                                           << LL_ENDL; 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/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/llfloaterdebugmaterials.cpp b/indra/newview/llfloaterdebugmaterials.cpp deleted file mode 100644 index c9f15a9c35..0000000000 --- a/indra/newview/llfloaterdebugmaterials.cpp +++ /dev/null @@ -1,1245 +0,0 @@ -/**  -* @file llfloaterdebugmaterials.cpp -* @brief Implementation of llfloaterdebugmaterials -* @author Stinson@lindenlab.com -* -* $LicenseInfo:firstyear=2012&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2012, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "llfloaterdebugmaterials.h" - -#include <string> -#include <vector> -#include <map> - -#include <boost/shared_ptr.hpp> -#include <boost/bind.hpp> -#include <boost/function.hpp> -#include <boost/signals2.hpp> - -#include "llagent.h" -#include "llbutton.h" -#include "llcolorswatch.h" -#include "llenvmanager.h" -#include "llfloater.h" -#include "llfloaterreg.h" -#include "llfontgl.h" -#include "llhttpclient.h" -#include "lllineeditor.h" -#include "llmaterialid.h" -#include "llresmgr.h" -#include "llscrolllistcell.h" -#include "llscrolllistctrl.h" -#include "llscrolllistitem.h" -#include "llsd.h" -#include "llsdserialize.h" -#include "llselectmgr.h" -#include "llspinctrl.h" -#include "llstring.h" -#include "llstyle.h" -#include "lltextbase.h" -#include "lltexturectrl.h" -#include "lltextvalidate.h" -#include "llthread.h" -#include "lluicolortable.h" -#include "lluictrl.h" -#include "lluuid.h" -#include "llviewerobject.h" -#include "llviewerobjectlist.h" -#include "llviewerparcelmgr.h" -#include "llviewerregion.h" -#include "v4color.h" -#include "v4coloru.h" - -#define MATERIALS_CAPABILITY_NAME                 "RenderMaterials" - -#define VIEWABLE_OBJECTS_REGION_ID_FIELD          "regionId" -#define VIEWABLE_OBJECTS_OBJECT_ID_FIELD          "objectId" -#define VIEWABLE_OBJECTS_MATERIAL_ID_FIELD        "materialId" - -BOOL LLFloaterDebugMaterials::postBuild() -{ -	mStatusText = findChild<LLTextBase>("material_status"); -	llassert(mStatusText != NULL); - -	mGetButton = findChild<LLButton>("get_button"); -	llassert(mGetButton != NULL); -	mGetButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetClicked, this)); - -	mParsingStatusText = findChild<LLTextBase>("loading_status"); -	llassert(mParsingStatusText != NULL); - -	mGetNormalMapScrollList = findChild<LLScrollListCtrl>("get_normal_map_scroll_list"); -	llassert(mGetNormalMapScrollList != NULL); -	mGetNormalMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1)); - -	mGetSpecularMapScrollList = findChild<LLScrollListCtrl>("get_specular_map_scroll_list"); -	llassert(mGetSpecularMapScrollList != NULL); -	mGetSpecularMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1)); - -	mGetOtherDataScrollList = findChild<LLScrollListCtrl>("get_other_data_scroll_list"); -	llassert(mGetOtherDataScrollList != NULL); -	mGetOtherDataScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onGetScrollListSelectionChange, this, _1)); - -	mNormalMap = findChild<LLTextureCtrl>("normal_map"); -	llassert(mNormalMap != NULL); - -	mNormalMapOffsetX = findChild<LLSpinCtrl>("normal_map_offset_x"); -	llassert(mNormalMapOffsetX != NULL); - -	mNormalMapOffsetY = findChild<LLSpinCtrl>("normal_map_offset_y"); -	llassert(mNormalMapOffsetY != NULL); - -	mNormalMapRepeatX = findChild<LLSpinCtrl>("normal_map_repeat_x"); -	llassert(mNormalMapRepeatX != NULL); - -	mNormalMapRepeatY = findChild<LLSpinCtrl>("normal_map_repeat_y"); -	llassert(mNormalMapRepeatY != NULL); - -	mNormalMapRotation = findChild<LLSpinCtrl>("normal_map_rotation"); -	llassert(mNormalMapRotation != NULL); - -	mSpecularMap = findChild<LLTextureCtrl>("specular_map"); -	llassert(mSpecularMap != NULL); - -	mSpecularMapOffsetX = findChild<LLSpinCtrl>("specular_map_offset_x"); -	llassert(mSpecularMapOffsetX != NULL); - -	mSpecularMapOffsetY = findChild<LLSpinCtrl>("specular_map_offset_y"); -	llassert(mSpecularMapOffsetY != NULL); - -	mSpecularMapRepeatX = findChild<LLSpinCtrl>("specular_map_repeat_x"); -	llassert(mSpecularMapRepeatX != NULL); - -	mSpecularMapRepeatY = findChild<LLSpinCtrl>("specular_map_repeat_y"); -	llassert(mSpecularMapRepeatY != NULL); - -	mSpecularMapRotation = findChild<LLSpinCtrl>("specular_map_rotation"); -	llassert(mSpecularMapRotation != NULL); - -	mSpecularColor = findChild<LLColorSwatchCtrl>("specular_color"); -	llassert(mSpecularColor != NULL); - -	mSpecularColorAlpha = findChild<LLSpinCtrl>("specular_color_alpha"); -	llassert(mSpecularColorAlpha != NULL); - -	mSpecularExponent = findChild<LLLineEditor>("specular_exponent"); -	llassert(mSpecularExponent != NULL); -	mSpecularExponent->setPrevalidate(LLTextValidate::validateInt); -	mSpecularExponent->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - -	mEnvironmentExponent = findChild<LLLineEditor>("environment_exponent"); -	llassert(mEnvironmentExponent != NULL); -	mEnvironmentExponent->setPrevalidate(LLTextValidate::validateInt); -	mEnvironmentExponent->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - -	mAlphaMaskCutoff = findChild<LLLineEditor>("alpha_mask_cutoff"); -	llassert(mAlphaMaskCutoff != NULL); -	mAlphaMaskCutoff->setPrevalidate(LLTextValidate::validateInt); -	mAlphaMaskCutoff->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - -	mDiffuseAlphaMode = findChild<LLLineEditor>("diffuse_alpha_mode"); -	llassert(mDiffuseAlphaMode != NULL); -	mDiffuseAlphaMode->setPrevalidate(LLTextValidate::validateInt); -	mDiffuseAlphaMode->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onValueEntered, this, _1)); - -	mPutSetButton = findChild<LLButton>("put_set_button"); -	llassert(mPutSetButton != NULL); -	mPutSetButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPutSetClicked, this)); - -	mPutClearButton = findChild<LLButton>("put_clear_button"); -	llassert(mPutClearButton != NULL); -	mPutClearButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPutClearClicked, this)); - -	LLButton* resetPutValuesButton = findChild<LLButton>("reset_put_values_button"); -	llassert(resetPutValuesButton != NULL); -	resetPutValuesButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onResetPutValuesClicked, this)); - -	mPutScrollList = findChild<LLScrollListCtrl>("put_scroll_list"); -	llassert(mPutScrollList != NULL); - -	mQueryViewableObjectsButton = findChild<LLButton>("query_viewable_objects_button"); -	llassert(mQueryViewableObjectsButton != NULL); -	mQueryViewableObjectsButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onQueryVisibleObjectsClicked, this)); - -	mQueryStatusText = findChild<LLTextBase>("query_status"); -	llassert(mQueryStatusText != NULL); - -	mViewableObjectsScrollList = findChild<LLScrollListCtrl>("viewable_objects_scroll_list"); -	llassert(mViewableObjectsScrollList != NULL); -	mViewableObjectsScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onViewableObjectsScrollListSelectionChange, this)); - -	mPostButton = findChild<LLButton>("post_button"); -	llassert(mPostButton != NULL); -	mPostButton->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostClicked, this)); - -	mPostNormalMapScrollList = findChild<LLScrollListCtrl>("post_normal_map_scroll_list"); -	llassert(mPostNormalMapScrollList != NULL); -	mPostNormalMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1)); - -	mPostSpecularMapScrollList = findChild<LLScrollListCtrl>("post_specular_map_scroll_list"); -	llassert(mPostSpecularMapScrollList != NULL); -	mPostSpecularMapScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1)); - -	mPostOtherDataScrollList = findChild<LLScrollListCtrl>("post_other_data_scroll_list"); -	llassert(mPostOtherDataScrollList != NULL); -	mPostOtherDataScrollList->setCommitCallback(boost::bind(&LLFloaterDebugMaterials::onPostScrollListSelectionChange, this, _1)); - -	mDefaultSpecularColor = LLUIColorTable::instance().getColor("White"); - -	mWarningColor = LLUIColorTable::instance().getColor("MaterialWarningColor"); -	mErrorColor = LLUIColorTable::instance().getColor("MaterialErrorColor"); - -	setState(kNoRegion); - -	return LLFloater::postBuild(); -} - -void LLFloaterDebugMaterials::onOpen(const LLSD& pKey) -{ -	LLFloater::onOpen(pKey); - -	if (!mRegionCrossConnection.connected()) -	{ -		mRegionCrossConnection = LLEnvManagerNew::instance().setRegionChangeCallback(boost::bind(&LLFloaterDebugMaterials::onRegionCross, this)); -	} - -	if (!mTeleportFailedConnection.connected()) -	{ -		mTeleportFailedConnection = LLViewerParcelMgr::getInstance()->setTeleportFailedCallback(boost::bind(&LLFloaterDebugMaterials::onRegionCross, this)); -	} - -	if (!mSelectionUpdateConnection.connected()) -	{ -		mSelectionUpdateConnection = LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterDebugMaterials::onInWorldSelectionChange, this)); -	} - -	checkRegionMaterialStatus(); -	resetObjectEditInputs(); -	clearGetResults(); -	clearViewableObjectsResults(); -	clearPostResults(); -} - -void LLFloaterDebugMaterials::onClose(bool pIsAppQuitting) -{ -	resetObjectEditInputs(); -	clearGetResults(); -	clearViewableObjectsResults(); -	clearPostResults(); - -	if (mSelectionUpdateConnection.connected()) -	{ -		mSelectionUpdateConnection.disconnect(); -	} - -	if (mTeleportFailedConnection.connected()) -	{ -		mTeleportFailedConnection.disconnect(); -	} - -	if (mRegionCrossConnection.connected()) -	{ -		mRegionCrossConnection.disconnect(); -	} - -	LLFloater::onClose(pIsAppQuitting); -} - -void LLFloaterDebugMaterials::draw() -{ -	if (mNextUnparsedQueryDataIndex >= 0) -	{ -		parseQueryViewableObjects(); -	} -	if (LLSelectMgr::instance().getSelection().notNull()) -	{ -		refreshObjectEdit(); -	} -	LLFloater::draw(); -} - -LLFloaterDebugMaterials::LLFloaterDebugMaterials(const LLSD& pParams) -	: LLFloater(pParams), -	mStatusText(NULL), -	mGetButton(NULL), -	mParsingStatusText(NULL), -	mGetNormalMapScrollList(NULL), -	mGetSpecularMapScrollList(NULL), -	mGetOtherDataScrollList(NULL), -	mNormalMap(NULL), -	mNormalMapOffsetX(NULL), -	mNormalMapOffsetY(NULL), -	mNormalMapRepeatX(NULL), -	mNormalMapRepeatY(NULL), -	mNormalMapRotation(NULL), -	mSpecularMap(NULL), -	mSpecularMapOffsetX(NULL), -	mSpecularMapOffsetY(NULL), -	mSpecularMapRepeatX(NULL), -	mSpecularMapRepeatY(NULL), -	mSpecularMapRotation(NULL), -	mSpecularColor(NULL), -	mSpecularColorAlpha(NULL), -	mSpecularExponent(NULL), -	mEnvironmentExponent(NULL), -	mAlphaMaskCutoff(NULL), -	mDiffuseAlphaMode(NULL), -	mPutSetButton(NULL), -	mPutClearButton(NULL), -	mPutScrollList(NULL), -	mQueryViewableObjectsButton(NULL), -	mQueryStatusText(NULL), -	mViewableObjectsScrollList(NULL), -	mPostButton(NULL), -	mPostNormalMapScrollList(NULL), -	mPostSpecularMapScrollList(NULL), -	mPostOtherDataScrollList(NULL), -	mState(kNoRegion), -	mWarningColor(), -	mErrorColor(), -	mRegionCrossConnection(), -	mTeleportFailedConnection(), -	mSelectionUpdateConnection(), -	mNextUnparsedQueryDataIndex(-1) -{ -} - -LLFloaterDebugMaterials::~LLFloaterDebugMaterials() -{ -} - -void LLFloaterDebugMaterials::onGetClicked() -{ -	requestGetMaterials(); -} - -void LLFloaterDebugMaterials::onValueEntered(LLUICtrl* pUICtrl) -{ -	LLLineEditor *pLineEditor = static_cast<LLLineEditor *>(pUICtrl); -	llassert(pLineEditor != NULL); - -	const std::string &valueString = pLineEditor->getText(); - -	S32 intValue = 0; -	bool doResetValue = (!valueString.empty() && !LLStringUtil::convertToS32(valueString, intValue)); - -	if (doResetValue) -	{ -		LL_WARNS("debugMaterials") << "cannot parse string '" << valueString << "' to an S32 value" <<LL_ENDL; -		LLSD value = static_cast<LLSD::Integer>(intValue); -		pLineEditor->setValue(value); -	} -} - -void LLFloaterDebugMaterials::onPutSetClicked() -{ -	requestPutMaterials(true); -} - -void LLFloaterDebugMaterials::onPutClearClicked() -{ -	requestPutMaterials(false); -} - -void LLFloaterDebugMaterials::onResetPutValuesClicked() -{ -	resetObjectEditInputs(); -} - -void LLFloaterDebugMaterials::onQueryVisibleObjectsClicked() -{ -	clearViewableObjectsResults(); -	setUnparsedQueryData(); -} - -void LLFloaterDebugMaterials::onPostClicked() -{ -	clearPostResults(); - -	std::vector<LLScrollListItem*> selectedItems = mViewableObjectsScrollList->getAllSelected(); -	if (!selectedItems.empty()) -	{ -		for (std::vector<LLScrollListItem*>::const_iterator selectedItemIter = selectedItems.begin(); -			selectedItemIter != selectedItems.end(); ++selectedItemIter) -		{ -			const LLScrollListItem* selectedItem = *selectedItemIter; -			const LLSD& selectedItemValue = selectedItem->getValue(); -			llassert(selectedItemValue.isMap()); - -			llassert(selectedItemValue.has(VIEWABLE_OBJECTS_REGION_ID_FIELD)); -			llassert(selectedItemValue.get(VIEWABLE_OBJECTS_REGION_ID_FIELD).isUUID()); -			const LLUUID& region_id = selectedItemValue.get(VIEWABLE_OBJECTS_REGION_ID_FIELD).asUUID(); - -			llassert(selectedItemValue.has(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD)); -			llassert(selectedItemValue.get(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD).isBinary()); -			const LLMaterialID material_id(selectedItemValue.get(VIEWABLE_OBJECTS_MATERIAL_ID_FIELD).asBinary()); - -			LLMaterialMgr::instance().get(region_id, material_id, boost::bind(&LLFloaterDebugMaterials::onPostMaterial, _1, _2)); -		} -	} -} - -void LLFloaterDebugMaterials::onRegionCross() -{ -	checkRegionMaterialStatus(); -	clearGetResults(); -	clearViewableObjectsResults(); -	clearPostResults(); -} - -void LLFloaterDebugMaterials::onInWorldSelectionChange() -{ -	updateControls(); -} - -void LLFloaterDebugMaterials::onGetScrollListSelectionChange(LLUICtrl* pUICtrl) -{ -	LLScrollListCtrl* scrollListCtrl = dynamic_cast<LLScrollListCtrl*>(pUICtrl); -	llassert(scrollListCtrl != NULL); - -	if (scrollListCtrl != mGetNormalMapScrollList) -	{ -		mGetNormalMapScrollList->deselectAllItems(TRUE); -	} -	if (scrollListCtrl != mGetSpecularMapScrollList) -	{ -		mGetSpecularMapScrollList->deselectAllItems(TRUE); -	} -	if (scrollListCtrl != mGetOtherDataScrollList) -	{ -		mGetOtherDataScrollList->deselectAllItems(TRUE); -	} - -	std::vector<LLScrollListItem*> selectedItems = scrollListCtrl->getAllSelected(); -	if (!selectedItems.empty()) -	{ -		llassert(selectedItems.size() == 1); -		LLScrollListItem* selectedItem = selectedItems.front(); - -		llassert(selectedItem != NULL); -		const LLSD& selectedIdValue = selectedItem->getValue(); - -		if (scrollListCtrl != mGetNormalMapScrollList) -		{ -			mGetNormalMapScrollList->selectByValue(selectedIdValue); -			mGetNormalMapScrollList->scrollToShowSelected(); -		} -		if (scrollListCtrl != mGetSpecularMapScrollList) -		{ -			mGetSpecularMapScrollList->selectByValue(selectedIdValue); -			mGetSpecularMapScrollList->scrollToShowSelected(); -		} -		if (scrollListCtrl != mGetOtherDataScrollList) -		{ -			mGetOtherDataScrollList->selectByValue(selectedIdValue); -			mGetOtherDataScrollList->scrollToShowSelected(); -		} -	} -} - -void LLFloaterDebugMaterials::onPostScrollListSelectionChange(LLUICtrl* pUICtrl) -{ -	LLScrollListCtrl* scrollListCtrl = dynamic_cast<LLScrollListCtrl*>(pUICtrl); -	llassert(scrollListCtrl != NULL); - -	if (scrollListCtrl != mPostNormalMapScrollList) -	{ -		mPostNormalMapScrollList->deselectAllItems(TRUE); -	} -	if (scrollListCtrl != mPostSpecularMapScrollList) -	{ -		mPostSpecularMapScrollList->deselectAllItems(TRUE); -	} -	if (scrollListCtrl != mPostOtherDataScrollList) -	{ -		mPostOtherDataScrollList->deselectAllItems(TRUE); -	} - -	std::vector<LLScrollListItem*> selectedItems = scrollListCtrl->getAllSelected(); -	if (!selectedItems.empty()) -	{ -		llassert(selectedItems.size() == 1); -		LLScrollListItem* selectedItem = selectedItems.front(); - -		llassert(selectedItem != NULL); -		const LLSD& selectedIdValue = selectedItem->getValue(); - -		if (scrollListCtrl != mPostNormalMapScrollList) -		{ -			mPostNormalMapScrollList->selectByValue(selectedIdValue); -			mPostNormalMapScrollList->scrollToShowSelected(); -		} -		if (scrollListCtrl != mPostSpecularMapScrollList) -		{ -			mPostSpecularMapScrollList->selectByValue(selectedIdValue); -			mPostSpecularMapScrollList->scrollToShowSelected(); -		} -		if (scrollListCtrl != mPostOtherDataScrollList) -		{ -			mPostOtherDataScrollList->selectByValue(selectedIdValue); -			mPostOtherDataScrollList->scrollToShowSelected(); -		} -	} -} - -void LLFloaterDebugMaterials::onViewableObjectsScrollListSelectionChange() -{ -	updateControls(); -} - -void LLFloaterDebugMaterials::onDeferredCheckRegionMaterialStatus(LLUUID regionId) -{ -	checkRegionMaterialStatus(regionId); -} - -void LLFloaterDebugMaterials::onDeferredRequestGetMaterials(LLUUID regionId) -{ -	requestGetMaterials(regionId); -} - -void LLFloaterDebugMaterials::onDeferredRequestPutMaterials(LLUUID regionId, bool pIsDoSet) -{ -	requestPutMaterials(regionId, pIsDoSet); -} - -void LLFloaterDebugMaterials::checkRegionMaterialStatus() -{ -	LLViewerRegion *region = gAgent.getRegion(); - -	if (region == NULL) -	{ -		LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL; -		setState(kNoRegion); -	} -	else if (!region->capabilitiesReceived()) -	{ -		setState(kCapabilitiesLoading); -		region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredCheckRegionMaterialStatus, this, region->getRegionID())); -	} -	else -	{ -		std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); - -		if (capURL.empty()) -		{ -			LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME -				<< "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL; -			setState(kNotEnabled); -		} -		else -		{ -			setState(kReady); -		} -	} -} - -void LLFloaterDebugMaterials::checkRegionMaterialStatus(const LLUUID& regionId) -{ -	const LLViewerRegion *region = gAgent.getRegion(); - -	if ((region != NULL) && (region->getRegionID() == regionId)) -	{ -		checkRegionMaterialStatus(); -	} -} - -void LLFloaterDebugMaterials::requestGetMaterials() -{ -	LLViewerRegion *region = gAgent.getRegion(); - -	if (region == NULL) -	{ -		LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL; -		setState(kNoRegion); -	} -	else if (!region->capabilitiesReceived()) -	{ -		setState(kCapabilitiesLoading); -		region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredRequestGetMaterials, this, region->getRegionID())); -	} -	else -	{ -		std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); - -		if (capURL.empty()) -		{ -			LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME -				<< "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL; -			setState(kNotEnabled); -		} -		else -		{ -			setState(kReady); -			LLMaterialMgr::instance().getAll(region->getRegionID(), boost::bind(&LLFloaterDebugMaterials::onGetMaterials, _1, _2)); -		} -	} -} - -void LLFloaterDebugMaterials::requestGetMaterials(const LLUUID& regionId) -{ -	const LLViewerRegion *region = gAgent.getRegion(); - -	if ((region != NULL) && (region->getRegionID() == regionId)) -	{ -		requestGetMaterials(); -	} -} - -void LLFloaterDebugMaterials::requestPutMaterials(bool pIsDoSet) -{ -	LLViewerRegion *region = gAgent.getRegion(); - -	if (region == NULL) -	{ -		LL_WARNS("debugMaterials") << "Region is NULL" << LL_ENDL; -		setState(kNoRegion); -	} -	else if (!region->capabilitiesReceived()) -	{ -		setState(kCapabilitiesLoading); -		region->setCapabilitiesReceivedCallback(boost::bind(&LLFloaterDebugMaterials::onDeferredRequestPutMaterials, this, region->getRegionID(), pIsDoSet)); -	} -	else -	{ -		std::string capURL = region->getCapability(MATERIALS_CAPABILITY_NAME); - -		if (capURL.empty()) -		{ -			LL_WARNS("debugMaterials") << "Capability '" << MATERIALS_CAPABILITY_NAME -				<< "' is not defined on the current region '" << region->getName() << "'" << LL_ENDL; -			setState(kNotEnabled); -		} -		else -		{ -			setState(kReady); - -			LLMaterial material = (pIsDoSet) ? getMaterial() : LLMaterial::null; - -			LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); -			for (LLObjectSelection::valid_iterator objectIter = selectionHandle->valid_begin(); -				objectIter != selectionHandle->valid_end(); ++objectIter) -			{ -				LLSelectNode* objectNode = *objectIter; -				LLViewerObject* viewerObject = objectNode->getObject(); - -				if (viewerObject != NULL) -				{ -					const LLViewerRegion* viewerRegion = viewerObject->getRegion(); -					if (region != viewerRegion) -					{ -						LL_ERRS("debugMaterials") << "cannot currently edit an object on a different region through the debug materials floater" << llendl; -					} -					S32 numTEs = llmin(static_cast<S32>(viewerObject->getNumTEs()), viewerObject->getNumFaces()); -					for (S32 curTEIndex = 0; curTEIndex < numTEs; ++curTEIndex) -					{ -						if (objectNode->isTESelected(curTEIndex)) -						{ -							LLMaterialMgr::instance().put(viewerObject->getID(), curTEIndex, material); -						} -					} -				} -			} -		} -	} -} - -void LLFloaterDebugMaterials::requestPutMaterials(const LLUUID& regionId, bool pIsDoSet) -{ -	const LLViewerRegion *region = gAgent.getRegion(); - -	if ((region != NULL) && (region->getRegionID() == regionId)) -	{ -		requestPutMaterials(pIsDoSet); -	} -} - -void LLFloaterDebugMaterials::parseQueryViewableObjects() -{ -	llassert(mNextUnparsedQueryDataIndex >= 0); - -	if (mNextUnparsedQueryDataIndex >= 0) -	{ -		LLScrollListCell::Params cellParams; -		LLScrollListItem::Params rowParams; - -		S32 numViewerObjects = gObjectList.getNumObjects(); -		S32 viewerObjectIndex = mNextUnparsedQueryDataIndex; -		for (S32 currentParseCount = 0; -			(currentParseCount < 10) && (viewerObjectIndex < numViewerObjects); -			++currentParseCount, ++viewerObjectIndex) -		{ -			const LLViewerObject *viewerObject = gObjectList.getObject(viewerObjectIndex); -			if ((viewerObject != NULL) && !viewerObject->isDead()) -			{ -				U8 objectNumTEs = viewerObject->getNumTEs(); - -				if (objectNumTEs > 0U) -				{ -					const LLUUID& objectId = viewerObject->getID(); -					U32 objectLocalId = viewerObject->getLocalID(); -					const LLViewerRegion* objectRegion = viewerObject->getRegion(); - -					for (U8 curTEIndex = 0U; curTEIndex < objectNumTEs; ++curTEIndex) -					{ -						const LLTextureEntry* objectTE = viewerObject->getTE(curTEIndex); -						llassert(objectTE != NULL); -						const LLMaterialID& objectMaterialID = objectTE->getMaterialID(); -						if (!objectMaterialID.isNull()) -						{ -							cellParams.font = LLFontGL::getFontMonospace(); - -							cellParams.column = "object_id"; -							cellParams.value = objectId.asString(); -							rowParams.columns.add(cellParams); - -							cellParams.font = LLFontGL::getFontSansSerif(); - -							cellParams.column = "region"; -							cellParams.value = ((objectRegion == NULL) ? "<null>" : objectRegion->getName()); -							rowParams.columns.add(cellParams); - -							cellParams.column = "local_id"; -							cellParams.value = llformat("%d", objectLocalId); -							rowParams.columns.add(cellParams); - -							cellParams.column = "face_index"; -							cellParams.value = llformat("%u", static_cast<unsigned int>(curTEIndex)); -							rowParams.columns.add(cellParams); -							cellParams.font = LLFontGL::getFontMonospace(); - -							cellParams.column = "material_id"; -							cellParams.value = objectMaterialID.asString(); -							rowParams.columns.add(cellParams); - -							LLSD rowValue = LLSD::emptyMap(); -							rowValue[VIEWABLE_OBJECTS_REGION_ID_FIELD] = objectRegion->getRegionID(); -							rowValue[VIEWABLE_OBJECTS_OBJECT_ID_FIELD] = objectId; -							rowValue[VIEWABLE_OBJECTS_MATERIAL_ID_FIELD] = objectMaterialID.asLLSD(); - -							rowParams.value = rowValue; - -							mViewableObjectsScrollList->addRow(rowParams); -						} -					} -				} -			} -		} - -		if (viewerObjectIndex < numViewerObjects) -		{ -			mNextUnparsedQueryDataIndex = viewerObjectIndex; -			updateQueryParsingStatus(); -		} -		else -		{ -			clearUnparsedQueryData(); -		} -	} -} - -void LLFloaterDebugMaterials::onGetMaterials(const LLUUID& region_id, const LLMaterialMgr::material_map_t& materials) -{ -	LLFloaterDebugMaterials* instancep = LLFloaterReg::findTypedInstance<LLFloaterDebugMaterials>("floater_debug_materials"); -	if (!instancep) -	{ -		return; -	} - -	LLViewerRegion* regionp = gAgent.getRegion(); -	if ( (!regionp) || (regionp->getRegionID() != region_id) ) -	{ -		return; -	} - -	LLScrollListCell::Params cellParams; -	LLScrollListItem::Params normalMapRowParams; -	LLScrollListItem::Params specularMapRowParams; -	LLScrollListItem::Params otherDataRowParams; - -	instancep->clearGetResults(); -	for (LLMaterialMgr::material_map_t::const_iterator itMaterial = materials.begin(); itMaterial != materials.end(); ++itMaterial) -	{ -		const LLMaterialID& material_id = itMaterial->first; -		const LLMaterialPtr material = itMaterial->second; - -		F32 x, y; - -		cellParams.font = LLFontGL::getFontMonospace(); - -		cellParams.column = "id"; -		cellParams.value = material_id.asString(); -		normalMapRowParams.columns.add(cellParams); -		specularMapRowParams.columns.add(cellParams); -		otherDataRowParams.columns.add(cellParams); - -		cellParams.column = "normal_map_list_map"; -		cellParams.value = material->getNormalID().asString(); -		normalMapRowParams.columns.add(cellParams); - -		cellParams.font = LLFontGL::getFontSansSerif(); - -		material->getNormalOffset(x, y); -		cellParams.column = "normal_map_list_offset_x"; -		cellParams.value = llformat("%f", x); -		normalMapRowParams.columns.add(cellParams); -		cellParams.column = "normal_map_list_offset_y"; -		cellParams.value = llformat("%f", y); -		normalMapRowParams.columns.add(cellParams); - -		material->getNormalRepeat(x, y); -		cellParams.column = "normal_map_list_repeat_x"; -		cellParams.value = llformat("%f", x); -		normalMapRowParams.columns.add(cellParams); -		cellParams.column = "normal_map_list_repeat_y"; -		cellParams.value = llformat("%f", y); -		normalMapRowParams.columns.add(cellParams); - -		cellParams.column = "normal_map_list_rotation"; -		cellParams.value = llformat("%f", material->getNormalRotation()); -		normalMapRowParams.columns.add(cellParams); - -		cellParams.font = LLFontGL::getFontMonospace(); - -		cellParams.column = "specular_map_list_map"; -		cellParams.value = material->getSpecularID().asString(); -		specularMapRowParams.columns.add(cellParams); - -		cellParams.font = LLFontGL::getFontSansSerif(); - -		material->getSpecularOffset(x, y); -		cellParams.column = "specular_map_list_offset_x"; -		cellParams.value = llformat("%f", x); -		specularMapRowParams.columns.add(cellParams); -		cellParams.column = "specular_map_list_offset_y"; -		cellParams.value = llformat("%f", y); -		specularMapRowParams.columns.add(cellParams); - -		material->getSpecularRepeat(x, y); -		cellParams.column = "specular_map_list_repeat_x"; -		cellParams.value = llformat("%f", x); -		specularMapRowParams.columns.add(cellParams); - -		cellParams.column = "specular_map_list_repeat_y"; -		cellParams.value = llformat("%f", y); -		specularMapRowParams.columns.add(cellParams); - -		cellParams.column = "specular_map_list_rotation"; -		cellParams.value = llformat("%f", material->getSpecularRotation()); -		specularMapRowParams.columns.add(cellParams); - -		const LLColor4U& specularColor = material->getSpecularLightColor(); -		cellParams.column = "specular_color"; -		cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0], -			specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]); -		otherDataRowParams.columns.add(cellParams); - -		cellParams.column = "specular_exponent"; -		cellParams.value = llformat("%d", material->getSpecularLightExponent()); -		otherDataRowParams.columns.add(cellParams); - -		cellParams.column = "env_intensity"; -		cellParams.value = llformat("%d", material->getEnvironmentIntensity()); -		otherDataRowParams.columns.add(cellParams); - -		cellParams.column = "alpha_mask_cutoff"; -		cellParams.value = llformat("%d", material->getAlphaMaskCutoff()); -		otherDataRowParams.columns.add(cellParams); - -		cellParams.column = "diffuse_alpha_mode"; -		cellParams.value = llformat("%d", material->getDiffuseAlphaMode()); -		otherDataRowParams.columns.add(cellParams); - -		normalMapRowParams.value = cellParams.value; -		specularMapRowParams.value = cellParams.value; -		otherDataRowParams.value = cellParams.value; - -		instancep->mGetNormalMapScrollList->addRow(normalMapRowParams); -		instancep->mGetSpecularMapScrollList->addRow(specularMapRowParams); -		instancep->mGetOtherDataScrollList->addRow(otherDataRowParams); -	} -} - -void LLFloaterDebugMaterials::onPostMaterial(const LLMaterialID& material_id, const LLMaterialPtr materialp) -{ -	LLFloaterDebugMaterials* instancep = LLFloaterReg::findTypedInstance<LLFloaterDebugMaterials>("floater_debug_materials"); -	if ( (!instancep) || (!materialp.get()) ) -	{ -		return; -	} - -	LLScrollListCell::Params cellParams; -	LLScrollListItem::Params normalMapRowParams; -	LLScrollListItem::Params specularMapRowParams; -	LLScrollListItem::Params otherDataRowParams; - -	cellParams.font = LLFontGL::getFontMonospace(); - -	cellParams.column = "id"; -	cellParams.value = material_id.asString(); -	normalMapRowParams.columns.add(cellParams); -	specularMapRowParams.columns.add(cellParams); -	otherDataRowParams.columns.add(cellParams); - -	cellParams.column = "normal_map_list_map"; -	cellParams.value = materialp->getNormalID().asString(); -	normalMapRowParams.columns.add(cellParams); - -	cellParams.font = LLFontGL::getFontSansSerif(); - -	F32 x, y; -	materialp->getNormalOffset(x, y); -	cellParams.column = "normal_map_list_offset_x"; -	cellParams.value = llformat("%f", x); -	normalMapRowParams.columns.add(cellParams); -	cellParams.column = "normal_map_list_offset_y"; -	cellParams.value = llformat("%f", y); -	normalMapRowParams.columns.add(cellParams); - -	materialp->getNormalRepeat(x, y); -	cellParams.column = "normal_map_list_repeat_x"; -	cellParams.value = llformat("%f", x); -	normalMapRowParams.columns.add(cellParams); -	cellParams.column = "normal_map_list_repeat_y"; -	cellParams.value = llformat("%f", y); -	normalMapRowParams.columns.add(cellParams); - -	cellParams.column = "normal_map_list_rotation"; -	cellParams.value = llformat("%f", materialp->getNormalRotation()); -	normalMapRowParams.columns.add(cellParams); - -	cellParams.font = LLFontGL::getFontMonospace(); - -	cellParams.column = "specular_map_list_map"; -	cellParams.value = materialp->getSpecularID().asString(); -	specularMapRowParams.columns.add(cellParams); - -	cellParams.font = LLFontGL::getFontSansSerif(); - -	materialp->getSpecularOffset(x, y); -	cellParams.column = "specular_map_list_offset_x"; -	cellParams.value = llformat("%f", x); -	specularMapRowParams.columns.add(cellParams); -	cellParams.column = "specular_map_list_offset_y"; -	cellParams.value = llformat("%f", y); -	specularMapRowParams.columns.add(cellParams); - -	materialp->getSpecularRepeat(x, y); -	cellParams.column = "specular_map_list_repeat_x"; -	cellParams.value = llformat("%f", x); -	specularMapRowParams.columns.add(cellParams); -	cellParams.column = "specular_map_list_repeat_y"; -	cellParams.value = llformat("%f", y); -	specularMapRowParams.columns.add(cellParams); - -	cellParams.column = "specular_map_list_rotation"; -	cellParams.value = llformat("%d", materialp->getSpecularRotation()); -	specularMapRowParams.columns.add(cellParams); - -	const LLColor4U& specularColor =materialp->getSpecularLightColor(); -	cellParams.column = "specular_color"; -	cellParams.value = llformat("(%d, %d, %d, %d)", specularColor.mV[0], -		specularColor.mV[1], specularColor.mV[2], specularColor.mV[3]); -	otherDataRowParams.columns.add(cellParams); - -	cellParams.column = "specular_exponent"; -	cellParams.value = llformat("%d", materialp->getSpecularLightExponent()); -	otherDataRowParams.columns.add(cellParams); - -	cellParams.column = "env_intensity"; -	cellParams.value = llformat("%d", materialp->getEnvironmentIntensity()); -	otherDataRowParams.columns.add(cellParams); - -	cellParams.column = "alpha_mask_cutoff"; -	cellParams.value = llformat("%d", materialp->getAlphaMaskCutoff()); -	otherDataRowParams.columns.add(cellParams); - -	cellParams.column = "diffuse_alpha_mode"; -	cellParams.value = llformat("%d", materialp->getDiffuseAlphaMode()); -	otherDataRowParams.columns.add(cellParams); - -	normalMapRowParams.value = cellParams.value; -	specularMapRowParams.value = cellParams.value; -	otherDataRowParams.value = cellParams.value; - -	instancep->mPostNormalMapScrollList->addRow(normalMapRowParams); -	instancep->mPostSpecularMapScrollList->addRow(specularMapRowParams); -	instancep->mPostOtherDataScrollList->addRow(otherDataRowParams); -} - -void LLFloaterDebugMaterials::setState(EState pState) -{ -	mState = pState; -	updateStatusMessage(); -	updateControls(); -} - -void LLFloaterDebugMaterials::refreshObjectEdit() -{ -	mPutScrollList->deleteAllItems(); - -	LLScrollListCell::Params cellParams; -	LLScrollListItem::Params rowParams; - -	LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); -	for (LLObjectSelection::valid_iterator objectIter = selectionHandle->valid_begin(); -			objectIter != selectionHandle->valid_end(); ++objectIter) -	{ -		LLSelectNode* nodep = *objectIter; - -		LLViewerObject* objectp = nodep->getObject(); -		if (objectp != NULL) -		{ -			S32 numTEs = llmin(static_cast<S32>(objectp->getNumTEs()), objectp->getNumFaces()); -			for (S32 curTEIndex = 0; curTEIndex < numTEs; ++curTEIndex) -			{ -				if (nodep->isTESelected(curTEIndex)) -				{ -					const LLTextureEntry* tep = objectp->getTE(curTEIndex); - -					cellParams.font = LLFontGL::getFontMonospace(); - -					cellParams.column = "material_id"; -					cellParams.value = tep->getMaterialID().asString(); -					rowParams.columns.add(cellParams); - -					cellParams.font = LLFontGL::getFontSansSerif(); - -					cellParams.column = "object_id"; -					cellParams.value = objectp->getID().asString(); -					rowParams.columns.add(cellParams); - -					cellParams.column = "face_index"; -					cellParams.value = llformat("%d", curTEIndex); -					rowParams.columns.add(cellParams); - -					mPutScrollList->addRow(rowParams); -				} -			} -		} -	} -} - -void LLFloaterDebugMaterials::resetObjectEditInputs() -{ -	const LLSD zeroValue = static_cast<LLSD::Integer>(0); -	const LLSD maxAlphaValue = static_cast<LLSD::Integer>(255); - -	mNormalMap->clear(); -	mNormalMapOffsetX->setValue(zeroValue); -	mNormalMapOffsetY->setValue(zeroValue); -	mNormalMapRepeatX->setValue(zeroValue); -	mNormalMapRepeatY->setValue(zeroValue); -	mNormalMapRotation->setValue(zeroValue); - -	mSpecularMap->clear(); -	mSpecularMapOffsetX->setValue(zeroValue); -	mSpecularMapOffsetY->setValue(zeroValue); -	mSpecularMapRepeatX->setValue(zeroValue); -	mSpecularMapRepeatY->setValue(zeroValue); -	mSpecularMapRotation->setValue(zeroValue); - -	mSpecularColor->set(mDefaultSpecularColor); -	mSpecularColorAlpha->setValue(maxAlphaValue); -	mSpecularExponent->setValue(zeroValue); -	mEnvironmentExponent->setValue(zeroValue); -	mAlphaMaskCutoff->setValue(zeroValue); -	mDiffuseAlphaMode->setValue(zeroValue); -} - -void LLFloaterDebugMaterials::clearGetResults() -{ -	mGetNormalMapScrollList->deleteAllItems(); -	mGetSpecularMapScrollList->deleteAllItems(); -	mGetOtherDataScrollList->deleteAllItems(); -} - -void LLFloaterDebugMaterials::clearPostResults() -{ -	mPostNormalMapScrollList->deleteAllItems(); -	mPostSpecularMapScrollList->deleteAllItems(); -	mPostOtherDataScrollList->deleteAllItems(); -} - -void LLFloaterDebugMaterials::clearViewableObjectsResults() -{ -	mViewableObjectsScrollList->deleteAllItems(); -	clearUnparsedQueryData(); -} - -void LLFloaterDebugMaterials::setUnparsedQueryData() -{ -	mNextUnparsedQueryDataIndex = 0; - -	updateQueryParsingStatus(); -} - -void LLFloaterDebugMaterials::clearUnparsedQueryData() -{ -	mNextUnparsedQueryDataIndex = -1; - -	updateQueryParsingStatus(); -} - -void LLFloaterDebugMaterials::updateQueryParsingStatus() -{ -	std::string queryStatus; - -	if (mNextUnparsedQueryDataIndex >= 0) -	{ -		LLLocale locale(LLStringUtil::getLocale()); -		std::string numProcessedString; -		LLResMgr::getInstance()->getIntegerString(numProcessedString, mNextUnparsedQueryDataIndex); - -		std::string numTotalString; -		LLResMgr::getInstance()->getIntegerString(numTotalString, gObjectList.getNumObjects()); - -		LLStringUtil::format_map_t stringArgs; -		stringArgs["[NUM_PROCESSED]"] = numProcessedString; -		stringArgs["[NUM_TOTAL]"] = numTotalString; - -		queryStatus = getString("querying_status_in_progress", stringArgs); -	} -	else -	{ -		queryStatus = getString("querying_status_done"); -	} - -	mQueryStatusText->setText(static_cast<const LLStringExplicit>(queryStatus)); -} - -void LLFloaterDebugMaterials::updateStatusMessage() -{ -	std::string statusText; -	LLStyle::Params styleParams; - -	switch (getState()) -	{ -	case kNoRegion : -		statusText = getString("status_no_region"); -		styleParams.color = mErrorColor; -		break; -	case kCapabilitiesLoading : -		statusText = getString("status_capabilities_loading"); -		styleParams.color = mWarningColor; -		break; -	case kReady : -		statusText = getString("status_ready"); -		break; -	case kRequestStarted : -		statusText = getString("status_request_started"); -		styleParams.color = mWarningColor; -		break; -	case kRequestCompleted : -		statusText = getString("status_request_completed"); -		break; -	case kNotEnabled : -		statusText = getString("status_not_enabled"); -		styleParams.color = mErrorColor; -		break; -	case kError : -		statusText = getString("status_error"); -		styleParams.color = mErrorColor; -		break; -	default : -		statusText = getString("status_ready"); -		llassert(0); -		break; -	} - -	mStatusText->setText((LLStringExplicit)statusText, styleParams); -} - -void LLFloaterDebugMaterials::updateControls() -{ -	LLObjectSelectionHandle selectionHandle = LLSelectMgr::getInstance()->getEditSelection(); -	bool isPutEnabled = (selectionHandle->valid_begin() != selectionHandle->valid_end()); -	bool isPostEnabled = (mViewableObjectsScrollList->getNumSelected() > 0); - -	switch (getState()) -	{ -	case kNoRegion : -	case kCapabilitiesLoading : -	case kRequestStarted : -	case kNotEnabled : -		mGetButton->setEnabled(FALSE); -		mPutSetButton->setEnabled(FALSE); -		mPutClearButton->setEnabled(FALSE); -		mPostButton->setEnabled(FALSE); -		break; -	case kReady : -	case kRequestCompleted : -	case kError : -		mGetButton->setEnabled(TRUE); -		mPutSetButton->setEnabled(isPutEnabled); -		mPutClearButton->setEnabled(isPutEnabled); -		mPostButton->setEnabled(isPostEnabled); -		break; -	default : -		mGetButton->setEnabled(TRUE); -		mPutSetButton->setEnabled(isPutEnabled); -		mPutClearButton->setEnabled(isPutEnabled); -		mPostButton->setEnabled(isPostEnabled); -		llassert(0); -		break; -	} -} - -template<typename T> T getLineEditorValue(const LLLineEditor *pLineEditor); - -template<> U8 getLineEditorValue(const LLLineEditor *pLineEditor) -{ -	U8 value = 0; - -	LLStringUtil::convertToU8(pLineEditor->getText(), value); - -	return value; -} - -LLMaterial LLFloaterDebugMaterials::getMaterial() const -{ -	LLMaterial material; - -	material.setNormalID(mNormalMap->getImageAssetID()); -	material.setNormalOffset(mNormalMapOffsetX->get(), mNormalMapOffsetY->get()); -	material.setNormalRepeat(mNormalMapRepeatX->get(), mNormalMapRepeatY->get()); -	material.setNormalRotation(mNormalMapRotation->get()); - -	material.setSpecularID(mSpecularMap->getImageAssetID()); -	material.setSpecularOffset(mSpecularMapOffsetX->get(), mSpecularMapOffsetY->get()); -	material.setSpecularRepeat(mSpecularMapRepeatX->get(), mSpecularMapRepeatY->get()); -	material.setSpecularRotation(mSpecularMapRotation->get()); - -	const LLColor4& specularColor = mSpecularColor->get(); -	LLColor4U specularColor4U = specularColor; -	specularColor4U.setAlpha(static_cast<U8>(llclamp(llround(mSpecularColorAlpha->get()), 0, 255))); -	material.setSpecularLightColor(specularColor4U); - -	material.setSpecularLightExponent(getLineEditorValue<U8>(mSpecularExponent)); -	material.setEnvironmentIntensity(getLineEditorValue<U8>(mEnvironmentExponent)); -	material.setDiffuseAlphaMode(getLineEditorValue<U8>(mDiffuseAlphaMode)); -	material.setAlphaMaskCutoff(getLineEditorValue<U8>(mAlphaMaskCutoff)); - -	return material; -} diff --git a/indra/newview/llfloaterdebugmaterials.h b/indra/newview/llfloaterdebugmaterials.h deleted file mode 100644 index 0bd33d7cd0..0000000000 --- a/indra/newview/llfloaterdebugmaterials.h +++ /dev/null @@ -1,186 +0,0 @@ -/**  -* @file   llfloaterdebugmaterials.h -* @brief  Header file for llfloaterdebugmaterials -* @author Stinson@lindenlab.com -* -* $LicenseInfo:firstyear=2012&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2012, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ -#ifndef LL_LLFLOATERDEBUGMATERIALS_H -#define LL_LLFLOATERDEBUGMATERIALS_H - -#include <string> - -#include <boost/shared_ptr.hpp> -#include <boost/signals2.hpp> - -#include "llfloater.h" -#include "llmaterial.h" -#include "llmaterialmgr.h" -#include "lluuid.h" -#include "v4color.h" - -class LLButton; -class LLColorSwatchCtrl; -class LLColor4U; -class LLLineEditor; -class LLMaterialID; -class LLScrollListCtrl; -class LLSD; -class LLSpinCtrl; -class LLTextBase; -class LLTextureCtrl; -class LLUICtrl; -class MultiMaterialsResponder; - -typedef boost::shared_ptr<MultiMaterialsResponder> MultiMaterialsResponderPtr; - -class LLFloaterDebugMaterials : public LLFloater -{ -public: -	virtual BOOL postBuild(); - -	virtual void onOpen(const LLSD& pKey); -	virtual void onClose(bool pIsAppQuitting); - -	virtual void draw(); - -protected: - -private: -	friend class LLFloaterReg; - -	typedef enum { -		kNoRegion, -		kCapabilitiesLoading, -		kReady, -		kRequestStarted, -		kRequestCompleted, -		kNotEnabled, -		kError -	} EState; - -	LLFloaterDebugMaterials(const LLSD& pParams); -	virtual ~LLFloaterDebugMaterials(); - -	void          onGetClicked(); -	void          onValueEntered(LLUICtrl* pUICtrl); -	void          onPutSetClicked(); -	void          onPutClearClicked(); -	void          onResetPutValuesClicked(); -	void          onQueryVisibleObjectsClicked(); -	void          onPostClicked(); -	void          onRegionCross(); -	void          onInWorldSelectionChange(); -	void          onGetScrollListSelectionChange(LLUICtrl* pUICtrl); -	void          onPostScrollListSelectionChange(LLUICtrl* pUICtrl); -	void          onViewableObjectsScrollListSelectionChange(); -	void          onDeferredCheckRegionMaterialStatus(LLUUID regionId); -	void          onDeferredRequestGetMaterials(LLUUID regionId); -	void          onDeferredRequestPutMaterials(LLUUID regionId, bool pIsDoSet); - -	void          checkRegionMaterialStatus(); -	void          checkRegionMaterialStatus(const LLUUID& regionId); - -	void          requestGetMaterials(); -	void          requestGetMaterials(const LLUUID& regionId); - -	void          requestPutMaterials(bool pIsDoSet); -	void          requestPutMaterials(const LLUUID& regionId, bool pIsDoSet); - -	static void   onGetMaterials(const LLUUID& region_id, const LLMaterialMgr::material_map_t& materials); -	static void   onPostMaterial(const LLMaterialID& material_id, const LLMaterialPtr materialp); - -	void          parseQueryViewableObjects(); - -	void          setState(EState pState); -	inline EState getState() const; - -	void          refreshObjectEdit(); -	void          resetObjectEditInputs(); -	void          clearGetResults(); -	void          clearPostResults(); -	void          clearViewableObjectsResults(); - -	void          setUnparsedQueryData(); -	void          clearUnparsedQueryData(); -	void          updateQueryParsingStatus(); - -	void          updateStatusMessage(); -	void          updateControls(); - -	LLMaterial    getMaterial() const; - -	LLTextBase*                 mStatusText; -	LLButton*                   mGetButton; -	LLTextBase*                 mParsingStatusText; -	LLScrollListCtrl*           mGetNormalMapScrollList; -	LLScrollListCtrl*           mGetSpecularMapScrollList; -	LLScrollListCtrl*           mGetOtherDataScrollList; -	LLTextureCtrl*              mNormalMap; -	LLSpinCtrl*                 mNormalMapOffsetX; -	LLSpinCtrl*                 mNormalMapOffsetY; -	LLSpinCtrl*                 mNormalMapRepeatX; -	LLSpinCtrl*                 mNormalMapRepeatY; -	LLSpinCtrl*                 mNormalMapRotation; -	LLTextureCtrl*              mSpecularMap; -	LLSpinCtrl*                 mSpecularMapOffsetX; -	LLSpinCtrl*                 mSpecularMapOffsetY; -	LLSpinCtrl*                 mSpecularMapRepeatX; -	LLSpinCtrl*                 mSpecularMapRepeatY; -	LLSpinCtrl*                 mSpecularMapRotation; -	LLColorSwatchCtrl*          mSpecularColor; -	LLSpinCtrl*                 mSpecularColorAlpha; -	LLLineEditor*               mSpecularExponent; -	LLLineEditor*               mEnvironmentExponent; -	LLLineEditor*               mAlphaMaskCutoff; -	LLLineEditor*               mDiffuseAlphaMode; -	LLButton*                   mPutSetButton; -	LLButton*                   mPutClearButton; -	LLScrollListCtrl*           mPutScrollList; -	LLButton*                   mQueryViewableObjectsButton; -	LLTextBase*                 mQueryStatusText; -	LLScrollListCtrl*           mViewableObjectsScrollList; -	LLButton*                   mPostButton; -	LLScrollListCtrl*           mPostNormalMapScrollList; -	LLScrollListCtrl*           mPostSpecularMapScrollList; -	LLScrollListCtrl*           mPostOtherDataScrollList; - -	LLColor4                    mDefaultSpecularColor; - -	EState                      mState; -	LLColor4                    mWarningColor; -	LLColor4                    mErrorColor; - -	boost::signals2::connection mRegionCrossConnection; -	boost::signals2::connection mTeleportFailedConnection; -	boost::signals2::connection mSelectionUpdateConnection; - -	S32                         mNextUnparsedQueryDataIndex; -}; - - -LLFloaterDebugMaterials::EState LLFloaterDebugMaterials::getState() const -{ -	return mState; -} - -#endif // LL_LLFLOATERDEBUGMATERIALS_H diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index e74c8509ce..024265b377 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -46,6 +46,7 @@  #include "lldrawpoolbump.h"  #include "llface.h"  #include "lllineeditor.h" +#include "llmaterialmgr.h"  #include "llmediaentry.h"  #include "llnotificationsutil.h"  #include "llresmgr.h" @@ -59,6 +60,7 @@  #include "llviewercontrol.h"  #include "llviewermedia.h"  #include "llviewerobject.h" +#include "llviewerregion.h"  #include "llviewerstats.h"  #include "llvovolume.h"  #include "lluictrlfactory.h" @@ -66,15 +68,29 @@  #include "llviewertexturelist.h"  // +// Constant definitions for comboboxes +// Must match the commbobox definitions in panel_tools_texture.xml +// +const S32 MATMEDIA_MATERIAL = 0;	// Material +const S32 MATMEDIA_MEDIA = 1;		// Media +const S32 MATTYPE_DIFFUSE = 0;		// Diffuse material texture +const S32 MATTYPE_NORMAL = 1;		// Normal map +const S32 MATTYPE_SPECULAR = 2;		// Specular map +const S32 ALPHAMODE_NONE = 0;		// No alpha mask applied +const S32 ALPHAMODE_BLEND = 1;		// Alpha blending mode +const S32 ALPHAMODE_MASK = 2;		// Alpha masking mode +const S32 BUMPY_TEXTURE = 18;		// use supplied normal map +const S32 SHINY_TEXTURE = 4;		// use supplied specular map + +//  // Methods  //  BOOL	LLPanelFace::postBuild()  { -	childSetCommitCallback("combobox matmedia",&LLPanelFace::onCommitMaterialsMedia,this); -	childSetCommitCallback("combobox mattype",&LLPanelFace::onCommitMaterialType,this);  	childSetCommitCallback("combobox shininess",&LLPanelFace::onCommitShiny,this);  	childSetCommitCallback("combobox bumpiness",&LLPanelFace::onCommitBump,this); +	childSetCommitCallback("combobox alphamode",&LLPanelFace::onCommitAlphaMode,this);  	childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureInfo, this);  	childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureInfo, this);  	childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureInfo, this); @@ -82,13 +98,31 @@ BOOL	LLPanelFace::postBuild()  	childSetCommitCallback("checkbox planar align",&LLPanelFace::onCommitPlanarAlign, this);  	childSetCommitCallback("TexOffsetU",LLPanelFace::onCommitTextureInfo, this);  	childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureInfo, this); +	childSetCommitCallback("bumpyScaleU",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("bumpyScaleV",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("bumpyRot",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("bumpyOffsetU",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("bumpyOffsetV",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("shinyScaleU",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("shinyScaleV",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("shinyRot",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("shinyOffsetU",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("shinyOffsetV",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("glossiness",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("environment",&LLPanelFace::onCommitMaterial, this); +	childSetCommitCallback("maskcutoff",&LLPanelFace::onCommitMaterial, this);  	childSetAction("button align",&LLPanelFace::onClickAutoFix,this);  	LLRect	rect = this->getRect();  	LLTextureCtrl*	mTextureCtrl; +	LLTextureCtrl*	mShinyTextureCtrl; +	LLTextureCtrl*	mBumpyTextureCtrl;  	LLColorSwatchCtrl*	mColorSwatch; +	LLColorSwatchCtrl*	mShinyColorSwatch;  	LLComboBox*		mComboTexGen; +	LLComboBox*		mComboMatMedia; +	LLComboBox*		mComboMatType;  	LLCheckBoxCtrl	*mCheckFullbright; @@ -114,6 +148,36 @@ BOOL	LLPanelFace::postBuild()  		mTextureCtrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER);  	} +	mShinyTextureCtrl = getChild<LLTextureCtrl>("shinytexture control"); +	if(mShinyTextureCtrl) +	{ +		mShinyTextureCtrl->setDefaultImageAssetID(LLUUID( gSavedSettings.getString( "DefaultObjectTexture" ))); +		mShinyTextureCtrl->setCommitCallback( boost::bind(&LLPanelFace::onCommitMaterialTexture, this, _2) ); +		mShinyTextureCtrl->setOnCancelCallback( boost::bind(&LLPanelFace::onCancelMaterialTexture, this, _2) ); +		mShinyTextureCtrl->setOnSelectCallback( boost::bind(&LLPanelFace::onSelectMaterialTexture, this, _2) ); +		mShinyTextureCtrl->setDragCallback(boost::bind(&LLPanelFace::onDragTexture, this, _2)); +		mShinyTextureCtrl->setOnTextureSelectedCallback(boost::bind(&LLPanelFace::onTextureSelectionChanged, this, _1)); +		mShinyTextureCtrl->setFollowsTop(); +		mShinyTextureCtrl->setFollowsLeft(); +		mShinyTextureCtrl->setImmediateFilterPermMask(PERM_NONE); +		mShinyTextureCtrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER); +	} + +	mBumpyTextureCtrl = getChild<LLTextureCtrl>("bumpytexture control"); +	if(mBumpyTextureCtrl) +	{ +		mBumpyTextureCtrl->setDefaultImageAssetID(LLUUID( gSavedSettings.getString( "DefaultObjectTexture" ))); +		mBumpyTextureCtrl->setCommitCallback( boost::bind(&LLPanelFace::onCommitMaterialTexture, this, _2) ); +		mBumpyTextureCtrl->setOnCancelCallback( boost::bind(&LLPanelFace::onCancelMaterialTexture, this, _2) ); +		mBumpyTextureCtrl->setOnSelectCallback( boost::bind(&LLPanelFace::onSelectMaterialTexture, this, _2) ); +		mBumpyTextureCtrl->setDragCallback(boost::bind(&LLPanelFace::onDragTexture, this, _2)); +		mBumpyTextureCtrl->setOnTextureSelectedCallback(boost::bind(&LLPanelFace::onTextureSelectionChanged, this, _1)); +		mBumpyTextureCtrl->setFollowsTop(); +		mBumpyTextureCtrl->setFollowsLeft(); +		mBumpyTextureCtrl->setImmediateFilterPermMask(PERM_NONE); +		mBumpyTextureCtrl->setDnDFilterPermMask(PERM_COPY | PERM_TRANSFER); +	} +  	mColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");  	if(mColorSwatch)  	{ @@ -125,6 +189,15 @@ BOOL	LLPanelFace::postBuild()  		mColorSwatch->setCanApplyImmediately(TRUE);  	} +	mShinyColorSwatch = getChild<LLColorSwatchCtrl>("shinycolorswatch"); +	if(mShinyColorSwatch) +	{ +		mShinyColorSwatch->setCommitCallback(boost::bind(&LLPanelFace::onCommitShinyColor, this, _2)); +		mShinyColorSwatch->setFollowsTop(); +		mShinyColorSwatch->setFollowsLeft(); +		mShinyColorSwatch->setCanApplyImmediately(TRUE); +	} +  	mLabelColorTransp = getChild<LLTextBox>("color trans");  	if(mLabelColorTransp)  	{ @@ -154,6 +227,20 @@ BOOL	LLPanelFace::postBuild()  		mComboTexGen->setFollows(FOLLOWS_LEFT | FOLLOWS_TOP);	  	} +	mComboMatMedia = getChild<LLComboBox>("combobox matmedia"); +	if(mComboMatMedia) +	{ +		mComboMatMedia->setCommitCallback(LLPanelFace::onCommitMaterialsMedia,this); +		mComboMatMedia->selectNthItem(MATMEDIA_MATERIAL); +	} + +	mComboMatType = getChild<LLComboBox>("combobox mattype"); +	if(mComboMatType) +	{ +		mComboMatType->setCommitCallback(LLPanelFace::onCommitMaterialType, this); +		mComboMatType->selectNthItem(MATTYPE_DIFFUSE); +	} +  	mCtrlGlow = getChild<LLSpinCtrl>("glow");  	if(mCtrlGlow)  	{ @@ -167,7 +254,10 @@ BOOL	LLPanelFace::postBuild()  }  LLPanelFace::LLPanelFace() -:	LLPanel() +:	LLPanel(), +	mMaterialID(LLMaterialID::null), +	mMaterial(LLMaterialPtr()), +	mIsAlpha(FALSE)  {  } @@ -492,30 +582,33 @@ void LLPanelFace::getState()  		BOOL editable = objectp->permModify() && !objectp->isPermanentEnforced();  		// only turn on auto-adjust button if there is a media renderer and the media is loaded -		getChildView("textbox autofix")->setEnabled(editable);  		getChildView("button align")->setEnabled(editable); -		LLCtrlSelectionInterface* combobox_matmedia = -		      childGetSelectionInterface("combobox matmedia"); +		LLComboBox* combobox_matmedia = getChild<LLComboBox>("combobox matmedia");  		if (combobox_matmedia)  		{ -			combobox_matmedia->selectNthItem(0); +			if (combobox_matmedia->getCurrentIndex() < MATMEDIA_MATERIAL) +			{ +				combobox_matmedia->selectNthItem(MATMEDIA_MATERIAL); +			}  		}  		else  		{ -			llwarns << "failed childGetSelectionInterface for 'combobox matmedia'" << llendl; +			llwarns << "failed getChild for 'combobox matmedia'" << llendl;  		}  		getChildView("combobox matmedia")->setEnabled(editable); -		LLCtrlSelectionInterface* combobox_mattype = -		      childGetSelectionInterface("combobox mattype"); +		LLComboBox* combobox_mattype = getChild<LLComboBox>("combobox mattype");  		if (combobox_mattype)  		{ -			combobox_mattype->selectNthItem(0); +			if (combobox_mattype->getCurrentIndex() < MATTYPE_DIFFUSE) +			{ +				combobox_mattype->selectNthItem(MATTYPE_DIFFUSE); +			}  		}  		else  		{ -			llwarns << "failed childGetSelectionInterface for 'combobox mattype'" << llendl; +			llwarns << "failed getChild for 'combobox mattype'" << llendl;  		}  		getChildView("combobox mattype")->setEnabled(editable);  		onCommitMaterialsMedia(NULL, this); @@ -531,6 +624,8 @@ void LLPanelFace::getState()  		bool identical;  		LLTextureCtrl*	texture_ctrl = getChild<LLTextureCtrl>("texture control"); +		LLTextureCtrl*	shinytexture_ctrl = getChild<LLTextureCtrl>("shinytexture control"); +		LLTextureCtrl*	bumpytexture_ctrl = getChild<LLTextureCtrl>("bumpytexture control");  		// Texture  		{ @@ -565,12 +660,48 @@ void LLPanelFace::getState()  			} func;  			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, id ); +			mIsAlpha = FALSE; +			LLGLenum image_format; +			struct f2 : public LLSelectedTEGetFunctor<LLGLenum> +			{ +				LLGLenum get(LLViewerObject* object, S32 te_index) +				{ +					LLGLenum image_format = GL_RGB; +					 +					LLViewerTexture* image = object->getTEImage(te_index); +					if (image) image_format  = image->getPrimaryFormat(); +					return image_format; +				} +			} func2; +			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func2, image_format ); +			mIsAlpha = image_format != GL_RGB; +  			if(LLViewerMedia::textureHasMedia(id))  			{ -				getChildView("textbox autofix")->setEnabled(editable);  				getChildView("button align")->setEnabled(editable);  			} +			{ +				// Default alpha mode to None if texture has no alpha, or Alpha Blending if present +				// Will be overridden later if a material is present for this face +				S32 default_alpha = ALPHAMODE_NONE; +				if (mIsAlpha) +				{ +					default_alpha = ALPHAMODE_BLEND; +				} +				LLCtrlSelectionInterface* combobox_alphamode = +				      childGetSelectionInterface("combobox alphamode"); +				if (combobox_alphamode) +				{ +					combobox_alphamode->selectNthItem(default_alpha); +				} +				else +				{ +					llwarns << "failed childGetSelectionInterface for 'combobox alphamode'" << llendl; +				} +				onCommitAlphaMode(getChild<LLComboBox>("combobox alphamode"),this); +			} +			  			if (identical)  			{  				// All selected have the same texture @@ -579,6 +710,16 @@ void LLPanelFace::getState()  					texture_ctrl->setTentative( FALSE );  					texture_ctrl->setEnabled( editable );  					texture_ctrl->setImageAssetID( id ); +					shinytexture_ctrl->setTentative( FALSE ); +					shinytexture_ctrl->setEnabled( editable ); +					shinytexture_ctrl->setImageAssetID( id ); +					bumpytexture_ctrl->setTentative( FALSE ); +					bumpytexture_ctrl->setEnabled( editable ); +					bumpytexture_ctrl->setImageAssetID( id ); +					getChildView("combobox alphamode")->setEnabled(editable && mIsAlpha); +					getChildView("label alphamode")->setEnabled(editable && mIsAlpha); +					getChildView("maskcutoff")->setEnabled(editable && mIsAlpha); +					getChildView("label maskcutoff")->setEnabled(editable && mIsAlpha);  				}  			}  			else @@ -591,6 +732,16 @@ void LLPanelFace::getState()  						texture_ctrl->setTentative( FALSE );  						texture_ctrl->setEnabled( FALSE );  						texture_ctrl->setImageAssetID( LLUUID::null ); +						shinytexture_ctrl->setTentative( FALSE ); +						shinytexture_ctrl->setEnabled( FALSE ); +						shinytexture_ctrl->setImageAssetID( LLUUID::null ); +						bumpytexture_ctrl->setTentative( FALSE ); +						bumpytexture_ctrl->setEnabled( FALSE ); +						bumpytexture_ctrl->setImageAssetID( LLUUID::null ); +						getChildView("combobox alphamode")->setEnabled( FALSE ); +						getChildView("label alphamode")->setEnabled( FALSE ); +						getChildView("maskcutoff")->setEnabled( FALSE); +						getChildView("label maskcutoff")->setEnabled( FALSE );  					}  					else  					{ @@ -598,6 +749,16 @@ void LLPanelFace::getState()  						texture_ctrl->setTentative( TRUE );  						texture_ctrl->setEnabled( editable );  						texture_ctrl->setImageAssetID( id ); +						shinytexture_ctrl->setTentative( TRUE ); +						shinytexture_ctrl->setEnabled( editable ); +						shinytexture_ctrl->setImageAssetID( id ); +						bumpytexture_ctrl->setTentative( TRUE ); +						bumpytexture_ctrl->setEnabled( editable ); +						bumpytexture_ctrl->setImageAssetID( id ); +						getChildView("combobox alphamode")->setEnabled(editable && mIsAlpha); +						getChildView("label alphamode")->setEnabled(editable && mIsAlpha); +						getChildView("maskcutoff")->setEnabled(editable && mIsAlpha); +						getChildView("label maskcutoff")->setEnabled(editable && mIsAlpha);  					}  				}  			} @@ -656,6 +817,12 @@ void LLPanelFace::getState()  			getChild<LLUICtrl>("TexScaleU")->setValue(editable ? scale_s : 0);  			getChild<LLUICtrl>("TexScaleU")->setTentative(LLSD((BOOL)(!identical)));  			getChildView("TexScaleU")->setEnabled(editable); +			getChild<LLUICtrl>("shinyScaleU")->setValue(editable ? scale_s : 0); +			getChild<LLUICtrl>("shinyScaleU")->setTentative(LLSD((BOOL)(!identical))); +			getChildView("shinyScaleU")->setEnabled(FALSE); +			getChild<LLUICtrl>("bumpyScaleU")->setValue(editable ? scale_s : 0); +			getChild<LLUICtrl>("bumpyScaleU")->setTentative(LLSD((BOOL)(!identical))); +			getChildView("bumpyScaleU")->setEnabled(FALSE);  		}  		{ @@ -673,6 +840,12 @@ void LLPanelFace::getState()  			getChild<LLUICtrl>("TexScaleV")->setValue(editable ? scale_t : 0);  			getChild<LLUICtrl>("TexScaleV")->setTentative(LLSD((BOOL)(!identical)));  			getChildView("TexScaleV")->setEnabled(editable); +			getChild<LLUICtrl>("shinyScaleV")->setValue(editable ? scale_t : 0); +			getChild<LLUICtrl>("shinyScaleV")->setTentative(LLSD((BOOL)(!identical))); +			getChildView("shinyScaleV")->setEnabled(FALSE); +			getChild<LLUICtrl>("bumpyScaleV")->setValue(editable ? scale_t : 0); +			getChild<LLUICtrl>("bumpyScaleV")->setTentative(LLSD((BOOL)(!identical))); +			getChildView("bumpyScaleV")->setEnabled(FALSE);  		}  		// Texture offset @@ -691,6 +864,12 @@ void LLPanelFace::getState()  			getChild<LLUICtrl>("TexOffsetU")->setValue(editable ? offset_s : 0);  			getChild<LLUICtrl>("TexOffsetU")->setTentative(!identical);  			getChildView("TexOffsetU")->setEnabled(editable); +			getChild<LLUICtrl>("shinyOffsetU")->setValue(editable ? offset_s : 0); +			getChild<LLUICtrl>("shinyOffsetU")->setTentative(!identical); +			getChildView("shinyOffsetU")->setEnabled(FALSE); +			getChild<LLUICtrl>("bumpyOffsetU")->setValue(editable ? offset_s : 0); +			getChild<LLUICtrl>("bumpyOffsetU")->setTentative(!identical); +			getChildView("bumpyOffsetU")->setEnabled(FALSE);  		}  		{ @@ -707,6 +886,12 @@ void LLPanelFace::getState()  			getChild<LLUICtrl>("TexOffsetV")->setValue(editable ? offset_t : 0);  			getChild<LLUICtrl>("TexOffsetV")->setTentative(!identical);  			getChildView("TexOffsetV")->setEnabled(editable); +			getChild<LLUICtrl>("shinyOffsetV")->setValue(editable ? offset_t : 0); +			getChild<LLUICtrl>("shinyOffsetV")->setTentative(!identical); +			getChildView("shinyOffsetV")->setEnabled(FALSE); +			getChild<LLUICtrl>("bumpyOffsetV")->setValue(editable ? offset_t : 0); +			getChild<LLUICtrl>("bumpyOffsetV")->setTentative(!identical); +			getChildView("bumpyOffsetV")->setEnabled(FALSE);  		}  		// Texture rotation @@ -724,6 +909,12 @@ void LLPanelFace::getState()  			getChild<LLUICtrl>("TexRot")->setValue(editable ? rotation * RAD_TO_DEG : 0);  			getChild<LLUICtrl>("TexRot")->setTentative(!identical);  			getChildView("TexRot")->setEnabled(editable); +			getChild<LLUICtrl>("shinyRot")->setValue(editable ? rotation * RAD_TO_DEG : 0); +			getChild<LLUICtrl>("shinyRot")->setTentative(!identical); +			getChildView("shinyRot")->setEnabled(FALSE); +			getChild<LLUICtrl>("bumpyRot")->setValue(editable ? rotation * RAD_TO_DEG : 0); +			getChild<LLUICtrl>("bumpyRot")->setTentative(!identical); +			getChildView("bumpyRot")->setEnabled(FALSE);  		}  		// Color swatch @@ -779,7 +970,7 @@ void LLPanelFace::getState()  		} -		// Bump +		// Shiny  		{  			F32 shinyf = 0.f;  			struct f9 : public LLSelectedTEGetFunctor<F32> @@ -803,8 +994,18 @@ void LLPanelFace::getState()  			getChildView("combobox shininess")->setEnabled(editable);  			getChild<LLUICtrl>("combobox shininess")->setTentative(!identical);  			getChildView("label shininess")->setEnabled(editable); +			getChildView("glossiness")->setEnabled(editable); +			getChild<LLUICtrl>("glossiness")->setTentative(!identical); +			getChildView("label glossiness")->setEnabled(editable); +			getChildView("environment")->setEnabled(editable); +			getChild<LLUICtrl>("environment")->setTentative(!identical); +			getChildView("label environment")->setEnabled(editable); +			getChildView("shinycolorswatch")->setEnabled(editable); +			getChild<LLUICtrl>("shinycolorswatch")->setTentative(!identical); +			getChildView("label shinycolor")->setEnabled(editable);  		} +		// Bumpy  		{  			F32 bumpf = 0.f;  			struct f10 : public LLSelectedTEGetFunctor<F32> @@ -859,6 +1060,10 @@ void LLPanelFace::getState()  			{  				getChild<LLUICtrl>("TexScaleU")->setValue(2.0f * getChild<LLUICtrl>("TexScaleU")->getValue().asReal() );  				getChild<LLUICtrl>("TexScaleV")->setValue(2.0f * getChild<LLUICtrl>("TexScaleV")->getValue().asReal() ); +				getChild<LLUICtrl>("shinyScaleU")->setValue(2.0f * getChild<LLUICtrl>("TexScaleU")->getValue().asReal() ); +				getChild<LLUICtrl>("shinyScaleV")->setValue(2.0f * getChild<LLUICtrl>("TexScaleV")->getValue().asReal() ); +				getChild<LLUICtrl>("bumpyScaleU")->setValue(2.0f * getChild<LLUICtrl>("TexScaleU")->getValue().asReal() ); +				getChild<LLUICtrl>("bumpyScaleV")->setValue(2.0f * getChild<LLUICtrl>("TexScaleV")->getValue().asReal() );  				// EXP-1507 (change label based on the mapping mode)  				getChild<LLUICtrl>("rpt")->setValue(getString("string repeats per meter")); @@ -918,6 +1123,29 @@ void LLPanelFace::getState()  			}  		} +		// Materials +		{ +			mMaterialID = LLMaterialID::null; +			//mMaterial = LLMaterialPtr(); +			struct f1 : public LLSelectedTEGetFunctor<LLMaterialID> +			{ +				LLMaterialID get(LLViewerObject* object, S32 te_index) +				{ +					LLMaterialID material_id; +					 +					return object->getTE(te_index)->getMaterialID(); +				} +			} func; +			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, mMaterialID ); +			llinfos << "Material ID returned: '" +				<< mMaterialID.asString() << "', isNull? " +				<< (mMaterialID.isNull()?"TRUE":"FALSE") << llendl; +			if (!mMaterialID.isNull() && editable) +			{ +				LLMaterialMgr::getInstance()->get(objectp->getRegion()->getRegionID(),mMaterialID,boost::bind(&LLPanelFace::onMaterialLoaded, this, _1, _2)); +			} +		} +  		// Set variable values for numeric expressions  		LLCalc* calcp = LLCalc::getInstance();  		calcp->setVar(LLCalc::TEX_U_SCALE, childGetValue("TexScaleU").asReal()); @@ -955,12 +1183,11 @@ void LLPanelFace::getState()  		getChildView("label shininess")->setEnabled(FALSE);  		getChildView("label bumpiness")->setEnabled(FALSE); -		getChildView("textbox autofix")->setEnabled(FALSE); -  		getChildView("button align")->setEnabled(FALSE);  		//getChildView("has media")->setEnabled(FALSE);  		//getChildView("media info set")->setEnabled(FALSE); -		 + +		onCommitMaterialsMedia(NULL,this);  		// Set variable values for numeric expressions  		LLCalc* calcp = LLCalc::getInstance(); @@ -980,6 +1207,126 @@ void LLPanelFace::refresh()  	getState();  } +void LLPanelFace::onMaterialLoaded(const LLMaterialID& material_id, const LLMaterialPtr material) +{ +	llinfos << "Material loaded: " << material_id.asString() +		<< ", LLSD: " << material->asLLSD() << llendl; +	mMaterial = material; +	getChild<LLUICtrl>("maskcutoff")->setValue(material->getAlphaMaskCutoff()); +	getChild<LLColorSwatchCtrl>("shinycolorswatch")->setOriginal(material->getSpecularLightColor()); +	getChild<LLColorSwatchCtrl>("shinycolorswatch")->set(material->getSpecularLightColor(),TRUE); +	getChild<LLUICtrl>("glossiness")->setValue((F32)(material->getSpecularLightExponent())/255.0); +	getChild<LLUICtrl>("environment")->setValue((F32)(material->getEnvironmentIntensity())/255.0); +	LLCtrlSelectionInterface* combobox_alphamode = +	      childGetSelectionInterface("combobox alphamode"); +	if (combobox_alphamode) +	{ +		combobox_alphamode->selectNthItem(material->getDiffuseAlphaMode()); +	} +	else +	{ +		llwarns << "failed childGetSelectionInterface for 'combobox alphamode'" << llendl; +	} +	onCommitAlphaMode(getChild<LLComboBox>("combobox alphamode"),this); +	LLComboBox* comboMaterialType = getChild<LLComboBox>("combobox mattype"); +	F32 offset_x, offset_y, repeat_x, repeat_y, rot; +	if ((comboMaterialType->getCurrentIndex() == MATTYPE_SPECULAR) && +		!material->getSpecularID().isNull()) +	{ +		material->getSpecularOffset(offset_x,offset_y); +		material->getSpecularRepeat(repeat_x,repeat_y); +		rot = material->getSpecularRotation(); +		LLTextureCtrl*	texture_ctrl = getChild<LLTextureCtrl>("shinytexture control"); +		texture_ctrl->setImageAssetID(material->getSpecularID()); +		LLCtrlSelectionInterface* combobox_shininess = +		      childGetSelectionInterface("combobox shininess"); +		if (combobox_shininess) +		{ +			combobox_shininess->selectNthItem(SHINY_TEXTURE); +		} +		else +		{ +			llwarns << "failed childGetSelectionInterface for 'combobox shininess'" << llendl; +		} +		getChild<LLUICtrl>("shinyScaleU")->setValue(repeat_x); +		getChild<LLUICtrl>("shinyScaleV")->setValue(repeat_y); +		getChild<LLUICtrl>("shinyRot")->setValue(rot); +		getChild<LLUICtrl>("shinyOffsetU")->setValue(offset_x); +		getChild<LLUICtrl>("shinyOffsetV")->setValue(offset_y); +	} +	if ((comboMaterialType->getCurrentIndex() == MATTYPE_NORMAL) && +		!material->getNormalID().isNull()) +	{ +		material->getNormalOffset(offset_x,offset_y); +		material->getNormalRepeat(repeat_x,repeat_y); +		rot = material->getNormalRotation(); +		LLTextureCtrl*	texture_ctrl = getChild<LLTextureCtrl>("bumpytexture control"); +		texture_ctrl->setImageAssetID(material->getNormalID()); +		LLCtrlSelectionInterface* combobox_bumpiness = +		      childGetSelectionInterface("combobox bumpiness"); +		if (combobox_bumpiness) +		{ +			combobox_bumpiness->selectNthItem(BUMPY_TEXTURE); +		} +		else +		{ +			llwarns << "failed childGetSelectionInterface for 'combobox bumpiness'" << llendl; +		} +		getChild<LLUICtrl>("bumpyScaleU")->setValue(repeat_x); +		getChild<LLUICtrl>("bumpyScaleV")->setValue(repeat_y); +		getChild<LLUICtrl>("bumpyRot")->setValue(rot); +		getChild<LLUICtrl>("bumpyOffsetU")->setValue(offset_x); +		getChild<LLUICtrl>("bumpyOffsetV")->setValue(offset_y); +	} +} + +void LLPanelFace::updateMaterial() +{ +	LLComboBox* comboAlphaMode = getChild<LLComboBox>("combobox alphamode"); +	LLComboBox* comboBumpiness = getChild<LLComboBox>("combobox bumpiness"); +	LLComboBox* comboShininess = getChild<LLComboBox>("combobox shininess"); +	if (!comboAlphaMode || !comboBumpiness || !comboShininess) +	{ +		return; +	} +	if ((mIsAlpha && (comboAlphaMode->getCurrentIndex() != ALPHAMODE_BLEND)) +		|| (comboBumpiness->getCurrentIndex() != BUMPY_TEXTURE) +		|| (comboShininess->getCurrentIndex() != SHINY_TEXTURE)) +	{ +		// The user's specified something that needs a material. +		if (!mMaterial) +		{ +			mMaterial = LLMaterialPtr(new LLMaterial()); +		} +		mMaterial->setNormalID(getChild<LLTextureCtrl>("bumpytexture control")->getImageAssetID()); +		mMaterial->setNormalOffset(getChild<LLUICtrl>("bumpyOffsetU")->getValue().asReal(), +						getChild<LLUICtrl>("bumpyOffsetV")->getValue().asReal()); +		mMaterial->setNormalRepeat(getChild<LLUICtrl>("bumpyScaleU")->getValue().asReal(), +						getChild<LLUICtrl>("bumpyScaleV")->getValue().asReal()); +		mMaterial->setNormalRotation(getChild<LLUICtrl>("bumpyRot")->getValue().asReal()); +		mMaterial->setSpecularID(getChild<LLTextureCtrl>("shinytexture control")->getImageAssetID()); +		mMaterial->setSpecularOffset(getChild<LLUICtrl>("shinyOffsetU")->getValue().asReal(), +						getChild<LLUICtrl>("shinyOffsetV")->getValue().asReal()); +		mMaterial->setSpecularRepeat(getChild<LLUICtrl>("shinyScaleU")->getValue().asReal(), +						getChild<LLUICtrl>("shinyScaleV")->getValue().asReal()); +		mMaterial->setSpecularRotation(getChild<LLUICtrl>("shinyRot")->getValue().asReal()); +		mMaterial->setSpecularLightColor(getChild<LLColorSwatchCtrl>("shinycolorswatch")->get()); +		mMaterial->setSpecularLightExponent((U8)(255*getChild<LLUICtrl>("glossiness")->getValue().asReal())); +		mMaterial->setEnvironmentIntensity((U8)(255*getChild<LLUICtrl>("environment")->getValue().asReal())); +		mMaterial->setDiffuseAlphaMode(getChild<LLComboBox>("combobox alphamode")->getCurrentIndex()); +		mMaterial->setAlphaMaskCutoff((U8)(getChild<LLUICtrl>("maskcutoff")->getValue().asInteger())); +	} +	else +	{ +		// The user has specified settings that don't need a material. +		if (mMaterial) +		{ +			mMaterial.reset(); +		} +	} +	LLSelectMgr::getInstance()->selectionSetMaterial( *mMaterial ); +} +  //  // Static functions  // @@ -996,6 +1343,11 @@ void LLPanelFace::onCommitColor(const LLSD& data)  	sendColor();  } +void LLPanelFace::onCommitShinyColor(const LLSD& data) +{ +	updateMaterial(); +} +  void LLPanelFace::onCommitAlpha(const LLSD& data)  {  	sendAlpha(); @@ -1016,32 +1368,106 @@ void LLPanelFace::onSelectColor(const LLSD& data)  void LLPanelFace::onCommitMaterialsMedia(LLUICtrl* ctrl, void* userdata)  {  	LLPanelFace* self = (LLPanelFace*) userdata; -	LLComboBox* mComboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia"); -	if (!mComboMaterialsMedia) +	// Get material info so we can use it later +	if (self->mMaterial)  	{ -		return; +		self->onMaterialLoaded(self->mMaterialID,self->mMaterial);  	} -	U32 materials_media = mComboMaterialsMedia->getCurrentIndex(); -	LLComboBox* mComboMaterialType = self->getChild<LLComboBox>("combobox mattype"); -	if (!mComboMaterialType) +	LLComboBox* comboMaterialsMedia = self->getChild<LLComboBox>("combobox matmedia"); +	LLComboBox* comboMaterialType = self->getChild<LLComboBox>("combobox mattype"); +	if (!comboMaterialType || !comboMaterialsMedia)  	{  		return;  	} -	U32 material_type = mComboMaterialType->getCurrentIndex(); -	bool show_media = (materials_media == 1); -	bool show_texture = (!show_media) && (material_type == 0); -	bool show_bumpiness = (!show_media) && (material_type == 1); -	bool show_shininess = (!show_media) && (material_type == 2); +	U32 materials_media = comboMaterialsMedia->getCurrentIndex(); +	U32 material_type = comboMaterialType->getCurrentIndex(); +	bool show_media = (materials_media == MATMEDIA_MEDIA) && comboMaterialsMedia->getEnabled(); +	bool show_texture = (!show_media) && (material_type == MATTYPE_DIFFUSE) && comboMaterialsMedia->getEnabled(); +	bool show_bumpiness = (!show_media) && (material_type == MATTYPE_NORMAL) && comboMaterialsMedia->getEnabled(); +	bool show_shininess = (!show_media) && (material_type == MATTYPE_SPECULAR) && comboMaterialsMedia->getEnabled();  	self->getChildView("combobox mattype")->setVisible(!show_media); +	self->getChildView("rptctrl")->setVisible(!show_media); + +	// Media controls  	self->getChildView("media_info")->setVisible(show_media);  	self->getChildView("add_media")->setVisible(show_media);  	self->getChildView("delete_media")->setVisible(show_media);  	self->getChildView("button align")->setVisible(show_media); + +	// Diffuse texture controls  	self->getChildView("texture control")->setVisible(show_texture); +	self->getChildView("label alphamode")->setVisible(show_texture); +	self->getChildView("combobox alphamode")->setVisible(show_texture); +	self->getChildView("label maskcutoff")->setVisible(false); +	self->getChildView("maskcutoff")->setVisible(false); +	if (show_texture) +	{ +		onCommitAlphaMode(ctrl, userdata); +	} +	self->getChildView("TexScaleU")->setVisible(show_texture); +	self->getChildView("TexScaleV")->setVisible(show_texture); +	self->getChildView("TexRot")->setVisible(show_texture); +	self->getChildView("TexOffsetU")->setVisible(show_texture); +	self->getChildView("TexOffsetV")->setVisible(show_texture); + +	// Specular map controls +	self->getChildView("shinytexture control")->setVisible(show_shininess);  	self->getChildView("combobox shininess")->setVisible(show_shininess);  	self->getChildView("label shininess")->setVisible(show_shininess); +	self->getChildView("label glossiness")->setVisible(false); +	self->getChildView("glossiness")->setVisible(false); +	self->getChildView("label environment")->setVisible(false); +	self->getChildView("environment")->setVisible(false); +	self->getChildView("label shinycolor")->setVisible(false); +	self->getChildView("shinycolorswatch")->setVisible(false); +	if (show_shininess) +	{ +		onCommitShiny(ctrl, userdata); +	} +	self->getChildView("shinyScaleU")->setVisible(show_shininess); +	self->getChildView("shinyScaleV")->setVisible(show_shininess); +	self->getChildView("shinyRot")->setVisible(show_shininess); +	self->getChildView("shinyOffsetU")->setVisible(show_shininess); +	self->getChildView("shinyOffsetV")->setVisible(show_shininess); + +	// Normal map controls +	self->getChildView("bumpytexture control")->setVisible(show_bumpiness);  	self->getChildView("combobox bumpiness")->setVisible(show_bumpiness);  	self->getChildView("label bumpiness")->setVisible(show_bumpiness); +	self->getChildView("bumpyScaleU")->setVisible(show_bumpiness); +	self->getChildView("bumpyScaleV")->setVisible(show_bumpiness); +	self->getChildView("bumpyRot")->setVisible(show_bumpiness); +	self->getChildView("bumpyOffsetU")->setVisible(show_bumpiness); +	self->getChildView("bumpyOffsetV")->setVisible(show_bumpiness); + +	// Enable texture scale/rotation/offset parameters if there's one +	// present to set for +	bool texParmsEnable = show_texture; +	if (self->mMaterial) +	{ +		texParmsEnable = texParmsEnable || +				(!self->mMaterial->getNormalID().isNull() && show_bumpiness) || +				(!self->mMaterial->getSpecularID().isNull() && show_shininess); +	} +	self->getChildView("tex gen")->setEnabled(texParmsEnable); +	self->getChildView("combobox texgen")->setEnabled(texParmsEnable); +	self->getChildView("rptctrl")->setEnabled(texParmsEnable); +	self->getChildView("TexScaleU")->setEnabled(texParmsEnable); +	self->getChildView("TexScaleV")->setEnabled(texParmsEnable); +	self->getChildView("TexRot")->setEnabled(texParmsEnable); +	self->getChildView("TexOffsetU")->setEnabled(texParmsEnable); +	self->getChildView("TexOffsetV")->setEnabled(texParmsEnable); +	self->getChildView("shinyScaleU")->setEnabled(texParmsEnable); +	self->getChildView("shinyScaleV")->setEnabled(texParmsEnable); +	self->getChildView("shinyRot")->setEnabled(texParmsEnable); +	self->getChildView("shinyOffsetU")->setEnabled(texParmsEnable); +	self->getChildView("shinyOffsetV")->setEnabled(texParmsEnable); +	self->getChildView("bumpyScaleU")->setEnabled(texParmsEnable); +	self->getChildView("bumpyScaleV")->setEnabled(texParmsEnable); +	self->getChildView("bumpyRot")->setEnabled(texParmsEnable); +	self->getChildView("bumpyOffsetU")->setEnabled(texParmsEnable); +	self->getChildView("bumpyOffsetV")->setEnabled(texParmsEnable); +	self->getChildView("checkbox planar align")->setEnabled(texParmsEnable);  }  // static @@ -1068,10 +1494,39 @@ void LLPanelFace::onCommitTexGen(LLUICtrl* ctrl, void* userdata)  void LLPanelFace::onCommitShiny(LLUICtrl* ctrl, void* userdata)  {  	LLPanelFace* self = (LLPanelFace*) userdata; +	LLComboBox* comboShiny = self->getChild<LLComboBox>("combobox shininess"); +	if (!comboShiny) +	{ +		return; +	} +	U32 shiny_value = comboShiny->getCurrentIndex(); +	bool show_shinyctrls = (shiny_value == SHINY_TEXTURE); // Use texture +	self->getChildView("label glossiness")->setVisible(show_shinyctrls); +	self->getChildView("glossiness")->setVisible(show_shinyctrls); +	self->getChildView("label environment")->setVisible(show_shinyctrls); +	self->getChildView("environment")->setVisible(show_shinyctrls); +	self->getChildView("label shinycolor")->setVisible(show_shinyctrls); +	self->getChildView("shinycolorswatch")->setVisible(show_shinyctrls);  	self->sendShiny();  }  // static +void LLPanelFace::onCommitAlphaMode(LLUICtrl* ctrl, void* userdata) +{ +	LLPanelFace* self = (LLPanelFace*) userdata; +	LLComboBox* comboAlphaMode = self->getChild<LLComboBox>("combobox alphamode"); +	if (!comboAlphaMode) +	{ +		return; +	} +	U32 alpha_value = comboAlphaMode->getCurrentIndex(); +	bool show_alphactrls = (alpha_value == ALPHAMODE_MASK); // Alpha masking +	self->getChildView("label maskcutoff")->setVisible(show_alphactrls); +	self->getChildView("maskcutoff")->setVisible(show_alphactrls); +	self->updateMaterial(); +} + +// static  void LLPanelFace::onCommitFullbright(LLUICtrl* ctrl, void* userdata)  {  	LLPanelFace* self = (LLPanelFace*) userdata; @@ -1120,6 +1575,28 @@ void LLPanelFace::onSelectTexture(const LLSD& data)  	sendTexture();  } +void LLPanelFace::onCommitMaterialTexture( const LLSD& data ) +{ +	updateMaterial(); +} + +void LLPanelFace::onCancelMaterialTexture(const LLSD& data) +{ +	// not sure what to do here other than +	updateMaterial(); +} + +void LLPanelFace::onSelectMaterialTexture(const LLSD& data) +{ +	updateMaterial(); +} + +//static +void LLPanelFace::onCommitMaterial(LLUICtrl* ctrl, void* userdata) +{ +	LLPanelFace* self = (LLPanelFace*) userdata; +	self->updateMaterial(); +}  // static  void LLPanelFace::onCommitTextureInfo( LLUICtrl* ctrl, void* userdata ) @@ -1212,7 +1689,25 @@ void LLPanelFace::onCommitPlanarAlign(LLUICtrl* ctrl, void* userdata)  void LLPanelFace::onTextureSelectionChanged(LLInventoryItem* itemp)  { -	LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>("texture control"); +	LLComboBox* combo_mattype = getChild<LLComboBox>("combobox mattype"); +	if (!combo_mattype) +	{ +		return; +	} +	U32 mattype = combo_mattype->getCurrentIndex(); +	std::string which_control="texture control"; +	switch (mattype) +	{ +		case MATTYPE_SPECULAR: +			which_control = "shinytexture_control"; +			break; +		case MATTYPE_NORMAL: +			which_control = "bumpytexture_control"; +			break; +		// no default needed +	} +		 +	LLTextureCtrl* texture_ctrl = getChild<LLTextureCtrl>(which_control);  	if (texture_ctrl)  	{  		LLUUID obj_owner_id; diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h index acac2c1bf5..c6322d59b2 100644 --- a/indra/newview/llpanelface.h +++ b/indra/newview/llpanelface.h @@ -29,6 +29,7 @@  #include "v4color.h"  #include "llpanel.h" +#include "llmaterial.h"  class LLButton;  class LLCheckBoxCtrl; @@ -42,6 +43,7 @@ class LLTextureCtrl;  class LLUICtrl;  class LLViewerObject;  class LLFloater; +class LLMaterialID;  class LLPanelFace : public LLPanel  { @@ -74,17 +76,25 @@ protected:  	void 	onCommitTexture(const LLSD& data);  	void 	onCancelTexture(const LLSD& data);  	void 	onSelectTexture(const LLSD& data); +	void 	onCommitMaterialTexture(const LLSD& data); +	void 	onCancelMaterialTexture(const LLSD& data); +	void 	onSelectMaterialTexture(const LLSD& data);  	void 	onCommitColor(const LLSD& data); +	void 	onCommitShinyColor(const LLSD& data);  	void 	onCommitAlpha(const LLSD& data);  	void 	onCancelColor(const LLSD& data);  	void 	onSelectColor(const LLSD& data); +	void    onMaterialLoaded(const LLMaterialID& material_id, const LLMaterialPtr material); +	void    updateMaterial();  	static 	void onCommitTextureInfo( 		LLUICtrl* ctrl, void* userdata); +	static void		onCommitMaterial(		LLUICtrl* ctrl, void* userdata);  	static void		onCommitMaterialsMedia(		LLUICtrl* ctrl, void* userdata);  	static void		onCommitMaterialType(		LLUICtrl* ctrl, void* userdata);  	static void		onCommitBump(			LLUICtrl* ctrl, void* userdata);  	static void		onCommitTexGen(			LLUICtrl* ctrl, void* userdata);  	static void		onCommitShiny(			LLUICtrl* ctrl, void* userdata); +	static void		onCommitAlphaMode(		LLUICtrl* ctrl, void* userdata);  	static void		onCommitFullbright(		LLUICtrl* ctrl, void* userdata);  	static void     onCommitGlow(           LLUICtrl* ctrl, void *userdata);  	static void		onCommitPlanarAlign(	LLUICtrl* ctrl, void* userdata); @@ -102,6 +112,9 @@ private:  	 */  	void onTextureSelectionChanged(LLInventoryItem* itemp); +	LLMaterialID mMaterialID; +	LLMaterialPtr mMaterial; +	BOOL mIsAlpha;  };  #endif diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index ff4c120623..b5dc1dae90 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -63,6 +63,7 @@  #include "llhudeffecttrail.h"  #include "llhudmanager.h"  #include "llinventorymodel.h" +#include "llmaterialmgr.h"  #include "llmenugl.h"  #include "llmeshrepository.h"  #include "llmutelist.h" @@ -2009,6 +2010,37 @@ void LLSelectMgr::selectionSetGlow(F32 glow)  	mSelectedObjects->applyToObjects( &func2 );  } +void LLSelectMgr::selectionSetMaterial(LLMaterial& material) +{ +	struct f1 : public LLSelectedTEFunctor +	{ +		LLMaterial mMaterial; +		f1(LLMaterial material) : mMaterial(material) {}; +		bool apply(LLViewerObject* object, S32 face) +		{ +			if (object->permModify()) +			{ +				LLMaterialMgr::getInstance()->put(object->getID(),face,mMaterial); +			} +			return true; +		} +	} func1(material); +	mSelectedObjects->applyToTEs( &func1 ); + +	struct f2 : public LLSelectedObjectFunctor +	{ +		virtual bool apply(LLViewerObject* object) +		{ +			if (object->permModify()) +			{ +				object->sendTEUpdate(); +			} +			return true; +		} +	} func2; +	mSelectedObjects->applyToObjects( &func2 ); +} +  //-----------------------------------------------------------------------------  // findObjectPermissions() diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index ecbb20df1b..f1da18dcc3 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -43,6 +43,7 @@  #include "llpermissions.h"  #include "llcontrol.h"  #include "llviewerobject.h"	// LLObjectSelection::getSelectedTEValue template +#include "llmaterial.h"  #include <deque>  #include <boost/iterator/filter_iterator.hpp> @@ -537,6 +538,7 @@ public:  	void selectionSetClickAction(U8 action);  	void selectionSetIncludeInSearch(bool include_in_search);  	void selectionSetGlow(const F32 glow); +	void selectionSetMaterial(LLMaterial& material);  	void selectionSetObjectPermissions(U8 perm_field, BOOL set, U32 perm_mask, BOOL override = FALSE);  	void selectionSetObjectName(const std::string& name); 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/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/llvovolume.cpp b/indra/newview/llvovolume.cpp index c9d6a34b8a..6c073a8e20 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4172,7 +4172,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,  				specColor.mV[2] = facep->getTextureEntry()->getMaterialParams()->getSpecularLightColor().mV[2] * (1.0 / 255);  				specColor.mV[3] = facep->getTextureEntry()->getMaterialParams()->getSpecularLightExponent() * (1.0 / 255);  				draw_info->mSpecColor = specColor; -				LL_INFOS("Materials") << "Specular Color: " << specColor << LL_ENDL;  				draw_info->mEnvIntensity = facep->getTextureEntry()->getMaterialParams()->getEnvironmentIntensity() * (1.0 / 255);  				draw_info->mAlphaMaskCutoff = facep->getTextureEntry()->getMaterialParams()->getAlphaMaskCutoff() * (1.0 / 255);  				draw_info->mDiffuseAlphaMode = facep->getTextureEntry()->getMaterialParams()->getDiffuseAlphaMode(); diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index d695cd1f89..f2ed7c2e64 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -245,7 +245,7 @@  		<menu label="Gengivelse" name="Rendering">  			<menu_item_check label="Akser" name="Axes"/>  			<menu_item_check label="Wireframe" name="Wireframe"/> -			<menu_item_check label="Lys og skygger" name="Lighting and Shadows"/> +			<menu_item_check label="Lys og skygger" name="Advanced Lighting Model"/>  			<menu_item_check label="Skygger fra sol/måne/andre lyskilder" name="Shadows from Sun/Moon/Projectors"/>  			<menu_item_check label="SSAO og skygge udjævning" name="SSAO and Shadow Smoothing"/>  			<menu_item_check label="Globalt lys (eksperimentiel)" name="Global Illumination"/> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 845df1f050..8277174cda 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -307,7 +307,7 @@  			<menu_item_call label="Texturinfo für ausgewähltes Objekt" name="Selected Texture Info Basis"/>  			<menu_item_check label="Wireframe" name="Wireframe"/>  			<menu_item_check label="Objekt-Objekt Okklusion" name="Object-Object Occlusion"/> -			<menu_item_check label="Licht und Schatten" name="Lighting and Shadows"/> +			<menu_item_check label="Licht und Schatten" name="Advanced Lighting Model"/>  			<menu_item_check label="Schatten von Sonne-/Mond-Projektoren" name="Shadows from Sun/Moon/Projectors"/>  			<menu_item_check label="SSAO und Schattenglättung" name="SSAO and Shadow Smoothing"/>  			<menu_item_check label="Fehler in GL beseitigen" name="Debug GL"/> diff --git a/indra/newview/skins/default/xui/en/floater_debug_materials.xml b/indra/newview/skins/default/xui/en/floater_debug_materials.xml deleted file mode 100644 index 3a450fdeff..0000000000 --- a/indra/newview/skins/default/xui/en/floater_debug_materials.xml +++ /dev/null @@ -1,995 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater -    positioning="cascading" -    can_tear_off="false" -    can_resize="true" -    height="770" -    width="1040" -    min_height="795" -    min_width="1040" -    layout="topleft" -    name="floater_debug_materials" -    reuse_instance="true" -    save_rect="false" -    single_instance="true" -    title="Debug materials"> -  <floater.string name="status_no_region">No current region available.</floater.string> -  <floater.string name="status_capabilities_loading">Region capabilities are loading.</floater.string> -  <floater.string name="status_ready">Materials are enabled for this region.</floater.string> -  <floater.string name="status_request_started">Request sent.</floater.string> -  <floater.string name="status_request_completed">Request received.</floater.string> -  <floater.string name="status_not_enabled">Materials are not enabled for this region.</floater.string> -  <floater.string name="status_error">An error occurred during the request.</floater.string> -  <floater.string name="loading_status_in_progress">Processing [NUM_PROCESSED] out of [NUM_TOTAL]</floater.string> -  <floater.string name="loading_status_done">Complete</floater.string> -  <floater.string name="querying_status_in_progress">Processing [NUM_PROCESSED] out of [NUM_TOTAL]</floater.string> -  <floater.string name="querying_status_done">Complete</floater.string> -  <panel -      border="false" -      bevel_style="none" -      follows="left|top" -      layout="topleft" -      left="12" -      top_pad="10" -      height="61" -      width="214"> -    <text -        height="13" -        word_wrap="true" -        use_ellipses="false" -        type="string" -        text_color="LabelTextColor" -        length="1" -        layout="topleft" -        left="0" -        top_pad="0" -        width="214"> -      Status -    </text> -    <text -        height="40" -        word_wrap="true" -        use_ellipses="false" -        type="string" -        text_color="MaterialGoodColor" -        length="1" -        follows="left|top" -        layout="topleft" -        left="0" -        name="material_status" -        top_pad="8" -        width="214"> -    </text> -  </panel> -  <tab_container -      follows="left|top|right" -      layout="topleft" -      tab_position="top" -      left="10" -      top_pad="10" -      height="670" -      width="1020"> -    <panel -        border="true" -        bevel_style="none" -        follows="left|top|right" -        layout="topleft" -        label="Current region" -        height="641" -        top_pad="10" -        width="1020"> -      <panel -          border="false" -          bevel_style="none" -          follows="left|top|right" -          layout="topleft" -          height="479" -          top_pad="10" -          width="1020"> -        <button -            follows="left|top" -            height="22" -            label="Get" -            layout="topleft" -            name="get_button" -            top_pad="0" -            width="214"/> -        <text -            height="13" -            word_wrap="true" -            use_ellipses="false" -            type="string" -            text_color="LabelTextColor" -            length="1" -            follows="left|top" -            layout="topleft" -            left="2" -            top_pad="8" -            width="150"> -          Loading Status -        </text> -        <text -            height="13" -            word_wrap="true" -            use_ellipses="false" -            type="string" -            text_color="MaterialGoodColor" -            length="1" -            follows="left|top" -            layout="topleft" -            left_pad="0" -            name="loading_status" -            top_pad="-13" -            width="400"> -        </text> -        <scroll_list -            column_padding="0" -            draw_heading="true" -            follows="left|top|right" -            height="135" -            layout="topleft" -            left="0" -            top_pad="10" -            tab_stop="false" -            multi_select="false" -            name="get_other_data_scroll_list" -            width="775"> -          <scroll_list.columns -              label="Material ID" -              name="id" -              dynamic_width="true" /> -          <scroll_list.columns -              label="Specular Color" -              name="specular_color" -              width="120" /> -          <scroll_list.columns -              label="Specular Exponent" -              name="specular_exponent" -              width="112" /> -          <scroll_list.columns -              label="Env Intensity" -              name="env_intensity" -              width="80" /> -          <scroll_list.columns -              label="Alpha Mask Cutoff" -              name="alpha_mask_cutoff" -              width="110" /> -          <scroll_list.columns -              label="Diffuse Alpha Mode" -              name="diffuse_alpha_mode" -              width="118" /> -        </scroll_list> -        <scroll_list -            column_padding="0" -            draw_heading="true" -            follows="left|top|right" -            height="135" -            layout="topleft" -            top_pad="10" -            tab_stop="false" -            multi_select="false" -            name="get_specular_map_scroll_list" -            width="1020"> -          <scroll_list.columns -              label="Material ID" -              name="id" -              dynamic_width="true" /> -          <scroll_list.columns -              label="Specular Map" -              name="specular_map_list_map" -              width="225" /> -          <scroll_list.columns -              label="Offset X" -              name="specular_map_list_offset_x" -              width="112" /> -          <scroll_list.columns -              label="Offset Y" -              name="specular_map_list_offset_y" -              width="112" /> -          <scroll_list.columns -              label="Repeat X" -              name="specular_map_list_repeat_x" -              width="112" /> -          <scroll_list.columns -              label="Repeat Y" -              name="specular_map_list_repeat_y" -              width="112" /> -          <scroll_list.columns -              label="Rotation" -              name="specular_map_list_rotation" -              width="112" /> -        </scroll_list> -        <scroll_list -            column_padding="0" -            draw_heading="true" -            follows="left|top|right" -            height="135" -            layout="topleft" -            top_pad="10" -            tab_stop="false" -            multi_select="false" -            name="get_normal_map_scroll_list" -            width="1020"> -          <scroll_list.columns -              label="Material ID" -              name="id" -              dynamic_width="true" /> -          <scroll_list.columns -              label="Normal Map" -              name="normal_map_list_map" -              width="225" /> -          <scroll_list.columns -              label="Offset X" -              name="normal_map_list_offset_x" -              width="112" /> -          <scroll_list.columns -              label="Offset Y" -              name="normal_map_list_offset_y" -              width="112" /> -          <scroll_list.columns -              label="Repeat X" -              name="normal_map_list_repeat_x" -              width="112" /> -          <scroll_list.columns -              label="Repeat Y" -              name="normal_map_list_repeat_y" -              width="112" /> -          <scroll_list.columns -              label="Rotation" -              name="normal_map_list_rotation" -              width="112" /> -        </scroll_list> -      </panel> -    </panel> -    <panel -        border="true" -        bevel_style="none" -        follows="left|top|right" -        layout="topleft" -        label="Object editing" -        height="641" -        top_pad="10" -        width="1010"> -      <panel -          border="false" -          bevel_style="none" -          follows="left|top|right" -          layout="topleft" -          left="2" -          top_pad="10" -          height="420" -          width="810"> -        <panel -            border="false" -            bevel_style="none" -            follows="left|top|right" -            layout="topleft" -            height="265" -            top_pad="0" -            width="810"> -          <panel -              border="false" -              bevel_style="none" -              follows="left|top|right" -              layout="topleft" -              height="226" -              top_pad="0" -              width="263"> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left="0" -                top_pad="38" -                width="160"> -              Normal Map -            </text> -            <texture_picker -                allow_no_texture="true" -                can_apply_immediately="true" -                default_image_name="Default" -                follows="left|top" -                left_pad="0" -                top_pad="-50" -                label_width="0" -                height="100" -                width="100" -                mouse_opaque="true" -                name="normal_map" -                tool_tip="Click to open texture picker" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-260" -                label="Normal Map Offset X" -                max_val="1.0" -                min_val="-1.0" -                name="normal_map_offset_x" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Normal Map Offset Y" -                max_val="1.0" -                min_val="-1.0" -                name="normal_map_offset_y" -                top_pad="10" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Normal Map Repeat X" -                max_val="64" -                min_val="0.0" -                name="normal_map_repeat_x" -                top_pad="10" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                max_val="64" -                min_val="0.0" -                label="Normal Map Repeat Y" -                name="normal_map_repeat_y" -                top_pad="10" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Normal Map Rotation" -                max_val="9999" -                min_val="-9999" -                name="normal_map_rotation" -                top_pad="10" -                width="240" /> -          </panel> -          <panel -              border="false" -              bevel_style="none" -              follows="left|top|right" -              layout="topleft" -              height="226" -              top_pad="-226" -              left_pad="20" -              width="263"> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left="0" -                top_pad="38" -                width="160"> -              Specular Map -            </text> -            <texture_picker -                allow_no_texture="true" -                can_apply_immediately="true" -                default_image_name="Default" -                follows="left|top" -                left_pad="0" -                top_pad="-50" -                label_width="0" -                height="100" -                width="100" -                mouse_opaque="true" -                name="specular_map" -                tool_tip="Click to open texture picker" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-260" -                label="Specular Map Offset X" -                max_val="1.0" -                min_val="-1.0" -                name="specular_map_offset_x" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Specular Map Offset Y" -                max_val="1.0" -                min_val="-1.0" -                name="specular_map_offset_y" -                top_pad="10" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Specular Map Repeat X" -                max_val="64" -                min_val="0.0" -                name="specular_map_repeat_x" -                top_pad="10" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="0.1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Specular Map Repeat Y" -                max_val="64" -                min_val="0.0" -                name="specular_map_repeat_y" -                top_pad="10" -                width="240" /> -            <spinner -                allow_text_entry="true" -                follows="left|top" -                height="20" -                initial_value="0" -                increment="1" -                decimal_digits="4" -                label_width="160" -                layout="topleft" -                left_pad="-240" -                label="Specular Map Rotation" -                max_val="9999" -                min_val="-9999" -                name="specular_map_rotation" -                top_pad="10" -                width="240" /> -          </panel> -          <panel -              border="false" -              bevel_style="none" -              follows="left|top|right" -              layout="topleft" -              height="162" -              top_pad="-226" -              left_pad="20" -              width="243"> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left="0" -                top_pad="10" -                width="160"> -              Specular Color -            </text> -            <color_swatch -                can_apply_immediately="true" -                color="1 1 1 1" -                follows="left|top" -                height="30" -                layout="topleft" -                label_height="0" -                label_width="0" -                left_pad="0" -                top_pad="-22" -                name="specular_color" -                tool_tip="Click to open color picker" -                width="40" /> -            <spinner -                follows="left|top" -                height="20" -                initial_value="255" -                max_val="255" -                min_val="0" -                increment="1" -                decimal_digits="0" -                allow_text_entry="true" -                layout="topleft" -                label_width="160" -                left="0" -                top_pad="10" -                label="Specular Color Alpha" -                name="specular_color_alpha" -                width="240" /> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left_pad="-240" -                top_pad="13" -                width="160"> -              Specular Exponent -            </text> -            <line_editor -                border_style="line" -                border_thickness="1" -                default_text="0" -                follows="left|top" -                height="20" -                layout="topleft" -                left_pad="0" -                top_pad="-18" -                max_length_chars="255" -                name="specular_exponent" -                width="80" /> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left_pad="-240" -                top_pad="10" -                width="160"> -              Environment Exponent -            </text> -            <line_editor -                border_style="line" -                border_thickness="1" -                default_text="0" -                follows="left|top" -                height="20" -                layout="topleft" -                left_pad="0" -                top_pad="-18" -                max_length_chars="255" -                name="environment_exponent" -                width="80" /> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left_pad="-240" -                top_pad="10" -                width="160"> -              Alpha Mask Cuttoff -            </text> -            <line_editor -                border_style="line" -                border_thickness="1" -                default_text="0" -                follows="left|top" -                height="20" -                layout="topleft" -                left_pad="0" -                top_pad="-18" -                max_length_chars="255" -                name="alpha_mask_cutoff" -                width="80" /> -            <text -                height="13" -                word_wrap="false" -                use_ellipses="false" -                type="string" -                text_color="LabelTextColor" -                length="1" -                follows="left|top" -                layout="topleft" -                left_pad="-240" -                top_pad="10" -                width="160"> -              Diffuse Alpha Mode -            </text> -            <line_editor -                border_style="line" -                border_thickness="1" -                default_text="0" -                follows="left|top" -                height="20" -                layout="topleft" -                left_pad="0" -                top_pad="-18" -                max_length_chars="255" -                name="diffuse_alpha_mode" -                width="80" /> -          </panel> -          <panel -              border="false" -              bevel_style="none" -              follows="left|top|right" -              layout="topleft" -              height="22" -              left="0" -              top_pad="80" -              width="810"> -            <button -                follows="left|top" -                height="22" -                label="Set Face Data" -                layout="topleft" -                name="put_set_button" -                left="0" -                top="0" -                width="214"/> -            <button -                follows="left|top" -                height="22" -                label="Clear Face Data" -                layout="topleft" -                name="put_clear_button" -                left_pad="20" -                width="214"/> -            <button -                follows="left|top" -                height="22" -                label="Reset Input Values" -                layout="topleft" -                name="reset_put_values_button" -                left_pad="146" -                width="214"/> -          </panel> -        </panel> -        <view_border -            bevel_style="none" -            follows="left|top" -            height="0" -            layout="topleft" -            name="horiz_separator" -            top_pad="10" -            left="0" -            width="810"/> -        <panel -            border="false" -            bevel_style="none" -            follows="left|top|right" -            layout="topleft" -            height="125" -            top_pad="20" -            width="400"> -          <text -              height="13" -              word_wrap="false" -              use_ellipses="false" -              type="string" -              text_color="LabelTextColor" -              length="1" -              follows="left|top" -              layout="topleft" -              left="0" -              top_pad="0" -              width="160"> -            Active selection -          </text> -          <scroll_list -              column_padding="0" -              draw_heading="true" -              follows="left|top|right" -              height="300" -              layout="topleft" -              left="0" -              top_pad="10" -              tab_stop="false" -              multi_select="true" -              name="put_scroll_list" -              width="600"> -            <scroll_list.columns -                label="Object ID" -                name="object_id" -                width="225" /> -            <scroll_list.columns -                label="Face Index" -                name="face_index" -                width="70" /> -            <scroll_list.columns -                label="MaterialID" -                name="material_id" -                dynamic_width="true" /> -          </scroll_list> -        </panel> -      </panel> -    </panel> -    <panel -        border="true" -        bevel_style="none" -        follows="left|top|right" -        layout="topleft" -        label="Viewable objects" -        height="641" -        top_pad="10" -        width="1020"> -      <panel -          border="false" -          bevel_style="none" -          follows="left|top|right" -          layout="topleft" -          height="641" -          top_pad="0" -          width="1020"> -        <panel -            border="false" -            bevel_style="none" -            follows="left|top|right" -            layout="topleft" -            left="0" -            top_pad="10" -            height="153" -            width="835"> -          <button -              follows="left|top" -              height="22" -              label="Query Viewable Objects" -              layout="topleft" -              name="query_viewable_objects_button" -              top_pad="0" -              width="214"/> -          <text -              height="13" -              word_wrap="true" -              use_ellipses="false" -              type="string" -              text_color="LabelTextColor" -              length="1" -              follows="left|top" -              layout="topleft" -              left="2" -              top_pad="8" -              width="150"> -            Loading Status -          </text> -          <text -              height="13" -              word_wrap="true" -              use_ellipses="false" -              type="string" -              text_color="MaterialGoodColor" -              length="1" -              follows="left|top" -              layout="topleft" -              left_pad="0" -              name="query_status" -              top_pad="-13" -              width="400"> -          </text> -          <scroll_list -              column_padding="0" -              draw_heading="true" -              follows="left|top|right" -              height="100" -              layout="topleft" -              top_pad="10" -              left="0" -              tab_stop="false" -              multi_select="true" -              name="viewable_objects_scroll_list" -              width="835"> -            <scroll_list.columns -                label="Object ID" -                name="object_id" -                width="225" /> -            <scroll_list.columns -                label="Region" -                name="region" -                width="225" /> -            <scroll_list.columns -                label="Local ID" -                name="local_id" -                width="70" /> -            <scroll_list.columns -                label="Face" -                name="face_index" -                width="70" /> -            <scroll_list.columns -                label="Material ID" -                name="material_id" -                dynamic_width="true" /> -          </scroll_list> -        </panel> -        <view_border -            bevel_style="none" -            follows="left|right|top" -            height="0" -            layout="topleft" -            name="horiz_separator" -            top_pad="10" -            left="0" -            width="1020"/> -        <panel -            border="false" -            bevel_style="none" -            follows="left|top|right" -            layout="topleft" -            height="457" -            top_pad="10" -            width="1020"> -          <button -              follows="left|top" -              height="22" -              label="Post Material ID" -              layout="topleft" -              name="post_button" -              top_pad="0" -              width="214"/> -          <scroll_list -              column_padding="0" -              draw_heading="true" -              follows="left|top|right" -              height="135" -              layout="topleft" -              top_pad="10" -              left="0" -              tab_stop="false" -              multi_select="false" -              name="post_other_data_scroll_list" -              width="775"> -            <scroll_list.columns -                label="Material ID" -                name="id" -                dynamic_width="true" /> -            <scroll_list.columns -                label="Specular Color" -                name="specular_color" -                width="120" /> -            <scroll_list.columns -                label="Specular Exponent" -                name="specular_exponent" -                width="112" /> -            <scroll_list.columns -                label="Env Intensity" -                name="env_intensity" -                width="80" /> -            <scroll_list.columns -                label="Alpha Mask Cutoff" -                name="alpha_mask_cutoff" -                width="110" /> -            <scroll_list.columns -                label="Diffuse Alpha Mode" -                name="diffuse_alpha_mode" -                width="118" /> -          </scroll_list> -          <scroll_list -              column_padding="0" -              draw_heading="true" -              follows="left|top|right" -              height="135" -              layout="topleft" -              top_pad="10" -              tab_stop="false" -              multi_select="false" -              name="post_specular_map_scroll_list" -              width="1020"> -            <scroll_list.columns -                label="Material ID" -                name="id" -                dynamic_width="true" /> -            <scroll_list.columns -                label="Specular Map" -                name="specular_map_list_map" -                width="225" /> -            <scroll_list.columns -                label="Offset X" -                name="specular_map_list_offset_x" -                width="112" /> -            <scroll_list.columns -                label="Offset Y" -                name="specular_map_list_offset_y" -                width="112" /> -            <scroll_list.columns -                label="Repeat X" -                name="specular_map_list_repeat_x" -                width="112" /> -            <scroll_list.columns -                label="Repeat Y" -                name="specular_map_list_repeat_y" -                width="112" /> -            <scroll_list.columns -                label="Rotation" -                name="specular_map_list_rotation" -                width="112" /> -          </scroll_list> -          <scroll_list -              column_padding="0" -              draw_heading="true" -              follows="left|top|right" -              height="135" -              layout="topleft" -              top_pad="10" -              tab_stop="false" -              multi_select="false" -              name="post_normal_map_scroll_list" -              width="1020"> -            <scroll_list.columns -                label="Material ID" -                name="id" -                dynamic_width="true" /> -            <scroll_list.columns -                label="Normal Map" -                name="normal_map_list_map" -                width="225" /> -            <scroll_list.columns -                label="Offset X" -                name="normal_map_list_offset_x" -                width="112" /> -            <scroll_list.columns -                label="Offset Y" -                name="normal_map_list_offset_y" -                width="112" /> -            <scroll_list.columns -                label="Repeat X" -                name="normal_map_list_repeat_x" -                width="112" /> -            <scroll_list.columns -                label="Repeat Y" -                name="normal_map_list_repeat_y" -                width="112" /> -            <scroll_list.columns -                label="Rotation" -                name="normal_map_list_rotation" -                width="112" /> -          </scroll_list> -        </panel> -      </panel> -    </panel> -  </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 721a1818dd..7e21013cac 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2584,8 +2584,8 @@            <menu_item_separator />            <menu_item_check -                       label="Lighting and Shadows" -                       name="Lighting and Shadows"> +                       label="Advanced Lighting Model" +                       name="Advanced Lighting Model">              <menu_item_check.on_check               function="CheckControl"               parameter="RenderDeferred" /> @@ -2622,16 +2622,6 @@            <menu_item_separator/> -          <menu_item_call -              label="Debug materials ..." -              name="DebugMaterialsMenu"> -            <menu_item_call.on_click -                function="Floater.ToggleOrBringToFront" -                parameter="floater_debug_materials" /> -          </menu_item_call> - -          <menu_item_separator /> -            <menu_item_check               label="Debug GL"               name="Debug GL"> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 849f3ef73d..e249d51d91 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -262,7 +262,7 @@  		 control_name="RenderDeferred"  		 height="16"  		 initial_value="true" -		 label="Lighting and Shadows" +		 label="Advance Lighting Model"  		 layout="topleft"  		 left_delta="0"  		 name="UseLightShaders" diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml index 26b2d83351..8382ad69d1 100644 --- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml @@ -155,36 +155,36 @@               follows="left|top"               height="10"               layout="topleft" -             name="label shininess"               left_pad="10" +             name="label alphamode"               text_readonly_color="LabelDisabledColor" -             top_delta="6" +             top_delta="0"               width="90"> -                Shininess +                Alpha mode              </text>              <combo_box               height="23"               layout="topleft" -             left_pad="10" -             name="combobox shininess" -             top_delta="-6" -             width="90"> +             left_delta="0" +             name="combobox alphamode" +             top_pad="4" +             width="120">                  <combo_box.item                   label="None"                   name="None"                   value="None" />                  <combo_box.item -                 label="Low" -                 name="Low" -                 value="Low" /> +                 label="Alpha blending" +                 name="Alpha blending" +                 value="Alpha blending" />                  <combo_box.item -                 label="Medium" -                 name="Medium" -                 value="Medium" /> +                 label="Alpha masking" +                 name="Alpha masking" +                 value="Alpha masking" />                  <combo_box.item -                 label="High" -                 name="High" -                 value="High" /> +                 label="Emissive mask" +                 name="Emissive mask" +                 value="Emissive mask" />              </combo_box>              <text               type="string" @@ -192,7 +192,45 @@               follows="left|top"               height="10"               layout="topleft" -             left_delta="-100" +             left_delta="0" +             name="label maskcutoff" +             text_readonly_color="LabelDisabledColor" +             top_pad="4" +             width="90"> +                Mask cutoff +            </text> +            <spinner +             decimal_digits="0" +             min_val="0" +             max_val="255" +             follows="left|top" +             height="19" +             initial_value="55" +             layout="topleft" +             top_pad="4" +             left_delta="0" +             name="maskcutoff" +             width="80" /> +            <texture_picker +             can_apply_immediately="true" +             default_image_name="Default" +             fallback_image="locked_image.j2c" +             follows="left|top" +             height="80" +             label="Texture       " +             layout="topleft" +             left="10" +             name="bumpytexture control" +             tool_tip="Click to choose a picture" +             top_delta="-55" +             width="64" /> +            <text +             type="string" +             length="1" +             follows="left|top" +             height="10" +             layout="topleft" +             left_pad="10"               name="label bumpiness"               text_readonly_color="LabelDisabledColor"               top_delta="0" @@ -278,13 +316,146 @@                   label="weave"                   name="weave"                   value="weave" /> +                <combo_box.item +                 label="Use texture" +                 name="Use texture" +                 value="Use texture" /> +            </combo_box> +            <texture_picker +             can_apply_immediately="true" +             default_image_name="Default" +             fallback_image="locked_image.j2c" +             follows="left|top" +             height="80" +             label="Texture       " +             layout="topleft" +             left="10" +             name="shinytexture control" +             tool_tip="Click to choose a picture" +             top_delta="-14" +             width="64" /> +            <text +             type="string" +             length="1" +             follows="left|top" +             height="10" +             layout="topleft" +             name="label shininess" +             left_pad="10" +             text_readonly_color="LabelDisabledColor" +             top_delta="6" +             width="90"> +                Shininess +            </text> +            <combo_box +             height="23" +             layout="topleft" +             left_pad="10" +             name="combobox shininess" +             top_delta="-6" +             width="90"> +                <combo_box.item +                 label="None" +                 name="None" +                 value="None" /> +                <combo_box.item +                 label="Low" +                 name="Low" +                 value="Low" /> +                <combo_box.item +                 label="Medium" +                 name="Medium" +                 value="Medium" /> +                <combo_box.item +                 label="High" +                 name="High" +                 value="High" /> +                <combo_box.item +                 label="Use texture" +                 name="Use texture" +                 value="Use texture" />              </combo_box>              <text +             type="string" +             length="1" +             follows="left|top" +             height="10" +             layout="topleft" +             left_delta="-100" +             name="label glossiness" +             text_readonly_color="LabelDisabledColor" +             top_pad="8" +             width="116"> +                Glossiness +            </text> +            <spinner +             decimal_digits="3" +             min_value="0" +             max_value="1" +             follows="left|top" +             height="19" +             initial_value="0" +             layout="topleft" +             top_delta="-4" +             left_pad="10" +             name="glossiness" +             width="64" /> +            <text +             type="string" +             length="1" +             follows="left|top" +             height="10" +             layout="topleft" +             left_delta="-126" +             name="label environment" +             text_readonly_color="LabelDisabledColor" +             top_pad="8" +             width="116"> +                Environment +            </text> +            <spinner +             decimal_digits="3" +             min_value="0" +             max_value="1" +             follows="left|top" +             height="19" +             initial_value="0" +             layout="topleft" +             top_delta="-4" +             left_pad="10" +             name="environment" +             width="64" /> +            <text +             type="string" +             length="1" +             follows="left|top" +             height="10" +             layout="topleft" +             left_delta="-126" +             name="label shinycolor" +             text_readonly_color="LabelDisabledColor" +             top_pad="8" +             width="116"> +                Color +            </text> +            <!-- label is blank because control places it below the box --> +            <color_swatch +             can_apply_immediately="true" +             follows="left|top" +             height="45" +             label="" +             layout="topleft" +             left_pad="10" +             name="shinycolorswatch" +             tool_tip="Click to open color picker" +             top_delta="-4" +             width="64" /> +            <text  			 follows="left|top|right"  			 height="9"  			 layout="topleft"  			 left="10" -			 top_delta="-8" +			 top_delta="-50"               use_ellipses="true"  			 read_only="true"  			 name="media_info" @@ -370,14 +541,6 @@               name="TexScaleU"               top_pad="5"               width="265" /> -            <!-- <check_box -             height="19" -             label="Flip" -             layout="topleft" -             left_pad="5" -             name="checkbox flip s" -             top_delta="0" -             width="70" /> -->              <spinner               follows="left|top"               height="19" @@ -390,14 +553,6 @@               max_val="100"               name="TexScaleV"               width="265" /> -            <!-- <check_box -             height="19" -             label="Flip" -             layout="topleft" -             left_pad="5" -             name="checkbox flip t" -             top_delta="0" -             width="70" /> -->              <spinner               decimal_digits="1"               follows="left|top" @@ -411,19 +566,136 @@               min_val="0.1"               name="rptctrl"               width="265" /> -            <!-- <button +           <spinner +             decimal_digits="2" +             follows="left|top" +             height="19" +             increment="1" +             initial_value="0" +			 label="Rotation degrees" +             layout="topleft" +			 label_width="205" +             left="10" +             max_val="9999" +             min_val="-9999" +             name="TexRot" +             width="265" /> + +            <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Horizontal offset" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-1" +             name="TexOffsetU" +             width="265" /> +            <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Vertical offset" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-1" +             name="TexOffsetV" +             width="265" /> +            <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Horizontal scale" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-100" +             max_val="100" +             name="bumpyScaleU" +             top_delta="-115" +             width="265" /> +            <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Vertical scale" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-100" +             max_val="100" +             name="bumpyScaleV" +             width="265" /> +           <spinner +             decimal_digits="2" +             follows="left|top" +             height="19" +             top_pad="27" +             increment="1" +             initial_value="0" +			 label="Rotation degrees" +             layout="topleft" +			 label_width="205" +             left="10" +             max_val="9999" +             min_val="-9999" +             name="bumpyRot" +             width="265" /> + +            <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Horizontal offset" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-1" +             name="bumpyOffsetU" +             width="265" /> +            <spinner               follows="left|top"               height="19" -             label="Apply" -             label_selected="Apply" +             initial_value="0" +             label="Vertical offset" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-1" +             name="bumpyOffsetV" +             width="265" /> +            <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Horizontal scale" +             label_width="205"               layout="topleft" -             left_pad="5" -             name="button apply" -             width="75" /> --> +             left="10" +             min_val="-100" +             max_val="100" +             name="shinyScaleU" +             top_delta="-115" +             width="265" />              <spinner +             follows="left|top" +             height="19" +             initial_value="0" +             label="Vertical scale" +             label_width="205" +             layout="topleft" +             left="10" +             min_val="-100" +             max_val="100" +             name="shinyScaleV" +             width="265" /> +           <spinner               decimal_digits="2"               follows="left|top"               height="19" +             top_pad="27"               increment="1"               initial_value="0"  			 label="Rotation degrees" @@ -432,7 +704,7 @@               left="10"               max_val="9999"               min_val="-9999" -             name="TexRot" +             name="shinyRot"               width="265" />              <spinner @@ -444,7 +716,7 @@               layout="topleft"               left="10"               min_val="-1" -             name="TexOffsetU" +             name="shinyOffsetU"               width="265" />              <spinner               follows="left|top" @@ -455,7 +727,7 @@               layout="topleft"               left="10"               min_val="-1" -             name="TexOffsetV" +             name="shinyOffsetV"               width="265" />              <check_box               follows="top|left" 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"/> | 
