Automated merge with http://bitbucket.org/lindenlab/viewer-release
commit
9ea2d90a0d
74
.hgtags
74
.hgtags
|
|
@ -248,31 +248,33 @@ bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156
|
|||
6414ecdabc5d89515b08d1f872cf923ed3a5523a DRTVWR-148
|
||||
2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155
|
||||
24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
5910f8063a7e1ddddf504c2f35ca831cc5e8f469 DRTVWR-160
|
||||
f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 3.3.3-beta1
|
||||
f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 DRTVWR-144
|
||||
2d6c0634b11e6f3df11002b8510a72a0433da00a DRTVWR-164
|
||||
089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163
|
||||
2d6c0634b11e6f3df11002b8510a72a0433da00a DRTVWR-164
|
||||
80b5e5e9775966d3839331ffa7a16a60f9d7c930 DRTVWR-165
|
||||
fdcc08a4f20ae9bb060f4693c8980d216534efdf 3.3.3-beta2
|
||||
af5f3e43e6e4424b1da19d9e16f6b853a7b822ed DRTVWR-169
|
||||
4b3c68199a86cabaa5d9466d7b0f7e141e901d7a 3.3.3-beta3
|
||||
6428242e124b523813bfaf4c45b3d422f0298c81 3.3.3-release
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161
|
||||
c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163
|
||||
b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171
|
||||
050e48759337249130f684b4a21080b683f61732 DRTVWR-168
|
||||
09ef7fd1b0781f33b8a3a9af6236b7bcb4831910 DRTVWR-170
|
||||
f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 DRTVWR-158
|
||||
f91d003091a61937a044652c4c674447f7dcbb7a 3.3.4-beta1
|
||||
005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167
|
||||
bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173
|
||||
cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174
|
||||
82b5330bc8b17d0d4b598832e9c5a92e90075682 3.3.4-beta2
|
||||
57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176
|
||||
eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177
|
||||
a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3
|
||||
888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175
|
||||
4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180
|
||||
5c08e1d8edd871807153603b690e3ee9dbb548aa DRTVWR-183
|
||||
6c75f220b103db1420919c8b635fe53e2177f318 3.3.4-beta4
|
||||
|
|
@ -283,24 +285,32 @@ ab2ffc547c8a8950ff187c4f6c95e5334fab597b 3.3.4-beta5
|
|||
7c9102fb998885621919f2474a002c35b583539b 3.3.4-release2
|
||||
8c9085066c78ed5f6c9379dc054c82a6fcdb1851 DRTVWR-207
|
||||
351eea5f9dc192fc5ddea3b02958de97677a0a12 3.3.4-release3
|
||||
005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167
|
||||
888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175
|
||||
a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182
|
||||
1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1
|
||||
9ee9387789701d597130f879d9011a4958753862 DRTVWR-189
|
||||
81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186
|
||||
47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190
|
||||
cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181
|
||||
c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188
|
||||
9ee9387789701d597130f879d9011a4958753862 DRTVWR-189
|
||||
421126293dcbde918e0da027ca0ab9deb5b4fbf2 DRTVWR-192
|
||||
4b2c52aecb7a75de31dbb12d9f5b9a251d8707be DRTVWR-191
|
||||
33a2fc7a910ae29ff8b4850316ed7fbff9f64d33 DRTVWR-195
|
||||
e9732c739c8a72a590216951505ea9c76a526a84 DRTVWR-193
|
||||
78ca0bbf43a92e8914d4cfa87d69a6717ef7d4cf DRTVWR-194
|
||||
7602f61c804a512764e349c034c02ddabeefebc4 DRTVWR-196
|
||||
ae5c83dd61d2d37c45f1d5b8bf2b036d87599f1b DRTVWR-198
|
||||
507bdfbd6bf844a511c1ffeda4baa80016ed1346 DRTVWR-197
|
||||
b1dbb1a83f48f93f6f878cff9e52d2cb635e145c 3.4.0-beta2
|
||||
37402e2b19af970d51b0a814d79892cc5647532b DRTVWR-200
|
||||
182a9bf30e81070361bb020a78003b1cf398e79c 3.4.0-beta3
|
||||
248f4acd92a706c79e842bc83d80baa7369c0c2e DRTVWR-203
|
||||
7649a3dff5ec22d3727377e5f02efd0f421e4cb5 DRTVWR-201
|
||||
84fb70dfe3444e75a44fb4bee43e2fc8221cebdd 3.4.0-beta4
|
||||
de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202
|
||||
573e863be2f26d3687161def4b9fea9b7038dda8 3.4.0-beta5
|
||||
34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag
|
||||
6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205
|
||||
7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206
|
||||
af7b28e75bd5a629cd9e0dc46fb3f1757626f493 DRTVWR-212
|
||||
015012c2b740ccdec8a8c3d6e5f898449ecfe0b8 DRTVWR-213
|
||||
62b07aa81b1957897c3846292bb9412977b0af6c 3.3.4-beta6
|
||||
|
|
@ -309,6 +319,7 @@ ceed0b65a69f1eac20d523e0203320a32f9a3f3c DRTVWR-215
|
|||
97977c67245f52db20eb15f1918cc0f24778cabc 3.4.0-release
|
||||
5adb2b8f96c3cac88ad7c7d996d707f1b29df336 3.4.1-beta1
|
||||
b3f74858a1c8720c82d0978f3877a3fc8ba459ec 3.4.1-beta1a
|
||||
b61afe175b829c149d369524a4e974dfda99facf DRTVWR-219
|
||||
2b779f233ee6f38c89cb921650c773a96e63da92 DRTVWR-220
|
||||
0b9d95f4bfb6867cbf56eaec51633b0da2f1262d DRTVWR-221
|
||||
e6e553761829dc0270eaaa712b7cb0622535b076 3.4.1-beta3
|
||||
|
|
@ -333,36 +344,31 @@ baf97f06ae17223614c5e31aa42e71d87cff07fe DRTVWR-236
|
|||
b2f21e3442542283a80e7eaebae9f833e5a927b6 DRTVWR-237
|
||||
3f9be82de642d468c5fc272cb9d96b46b5498402 3.4.1-beta12
|
||||
e59ffd3fe0838ae6b09b242a6e9df71761b88f41 3.4.1-release
|
||||
81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186
|
||||
cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181
|
||||
c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188
|
||||
4b2c52aecb7a75de31dbb12d9f5b9a251d8707be DRTVWR-191
|
||||
78ca0bbf43a92e8914d4cfa87d69a6717ef7d4cf DRTVWR-194
|
||||
248f4acd92a706c79e842bc83d80baa7369c0c2e DRTVWR-203
|
||||
de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202
|
||||
34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag
|
||||
6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205
|
||||
7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206
|
||||
b61afe175b829c149d369524a4e974dfda99facf DRTVWR-219
|
||||
32896d5e920ca9a29256ff3b747c2e99752aa5ae DRTVWR-217
|
||||
704bbae7b182a1f2811a47a054e680522966f54a 3.4.2-beta1
|
||||
288539fc0408ed4b69a99665de33bbbc2c3c08fe DRTVWR-216
|
||||
e664473c16df1d82ffaff382e7b3e023da202d52 3.4.2-beta2
|
||||
0891d7a773a31397dcad48be3fa66531d567a821 DRTVWR-242
|
||||
710785535362b3cb801b6a3dc4703be3373bd0cd 3.4.2-beta3
|
||||
e9a5886052433d5db9e504ffaca10890f9932979 DRTVWR-243
|
||||
73b84b9864dc650fe7c8fc9f52361450f0849004 3.4.2-beta4
|
||||
16310aabccf315870f7cc9bf966926c0ad6954fa 3.4.2-release
|
||||
d799593b53ed733862e9a13871e318e886469377 DRTVWR-208
|
||||
e497dcde7a3653e384eb223a8a460030e89c294c DRTVWR-223
|
||||
288539fc0408ed4b69a99665de33bbbc2c3c08fe DRTVWR-216
|
||||
e664473c16df1d82ffaff382e7b3e023da202d52 3.4.2-beta2
|
||||
93ab02d83f51e30a3cabad98aff89601befd9413 DRTVWR-240
|
||||
0891d7a773a31397dcad48be3fa66531d567a821 DRTVWR-242
|
||||
710785535362b3cb801b6a3dc4703be3373bd0cd 3.4.2-beta3
|
||||
2aa72e3372a83dece4df9cf72fb1e7c34f90b5e3 DRTVWR-209
|
||||
f7bedce18ad52283e6072814db23318907261487 DRTVWR-238
|
||||
7b64c96fbcadf360bd2feaae19d330166b70877c DRTVWR-210
|
||||
e9a5886052433d5db9e504ffaca10890f9932979 DRTVWR-243
|
||||
73b84b9864dc650fe7c8fc9f52361450f0849004 3.4.2-beta4
|
||||
16310aabccf315870f7cc9bf966926c0ad6954fa 3.4.2-release
|
||||
5e4e4128b256525bafc07a62e35ae8527aaa9c9d DRTVWR-241
|
||||
f1d3b3fcab28ed9ea532bf50db0ba96f5c8cc8e9 DRTVWR-232
|
||||
4918b150e75df6b516fb6c2616d32043fa6b4cac DRTVWR-245
|
||||
94ab2b49458ab372a95d2d6949fdf574f413068d 3.4.3-beta1
|
||||
4c3460cb1fb7c6da9965e09c734d282a8e9c81f0 DRTVWR-229
|
||||
f4481df42f9a4a92bf475a80f0c51d1a4bbdfd59 DRTVWR-246
|
||||
39c5204b6e800983a41ccac8ad6dc993120197c6 DRTVWR-247
|
||||
7c7d57d393e8ae7b61623279de06eb4a62ccae6a DRTVWR-249
|
||||
f72b50ef168c159d6e79e97aa2bcafaf8577ab99 DRTVWR-230
|
||||
b418be80903520c492e1173f3afbc4021cad5d07 DRTVWR-255
|
||||
965b9a35e260c0f53be1a25f0db7abc8a67eaf47 DRTVWR-252
|
||||
bb10adc4f76cf0067fca7075146f00cdc0740e9d DRTVWR-251
|
||||
ab0aa2f6ba22b52fed30a2337197f589156edc75 DRTVWR-253
|
||||
|
|
@ -371,31 +377,25 @@ ab0aa2f6ba22b52fed30a2337197f589156edc75 DRTVWR-253
|
|||
44e764a6ac9e672a4f3bce821a4b6a218590c374 DRTVWR-258
|
||||
c23d734065ed593b2413385aecd8366d8e0ee96b DRTVWR-257
|
||||
452ce96d4046dc05a3ecaecc203e2cc8ddd72e76 DRTVWR-259
|
||||
9aa1aa9f1fe13c194695a0b8f0af298296241dc2 DRTVWR-260
|
||||
daca610d840625b5bebb966a57cb49581852c417 DRTVWR-265
|
||||
9afbdc4e24cc04feacfb2b7a10b78a64f780901a DRTVWR-266
|
||||
73280db02501f5ad041fc18b1eba68e73a81996c DRTVWR-267
|
||||
870e2d79e0063fda87187f17bbc2747766733194 3.4.3-beta3
|
||||
0a2ca6546b499239afeb66d17b2fadbcdbe36ab1 3.4.3-release
|
||||
4c3460cb1fb7c6da9965e09c734d282a8e9c81f0 DRTVWR-229
|
||||
f4481df42f9a4a92bf475a80f0c51d1a4bbdfd59 DRTVWR-246
|
||||
39c5204b6e800983a41ccac8ad6dc993120197c6 DRTVWR-247
|
||||
7c7d57d393e8ae7b61623279de06eb4a62ccae6a DRTVWR-249
|
||||
f72b50ef168c159d6e79e97aa2bcafaf8577ab99 DRTVWR-230
|
||||
b418be80903520c492e1173f3afbc4021cad5d07 DRTVWR-255
|
||||
9aa1aa9f1fe13c194695a0b8f0af298296241dc2 DRTVWR-260
|
||||
84fbaf2d4141bd161731430e760949dc787ca206 DRTVWR-244
|
||||
083d2d36b5bb1c54fc3dd7caac0e7ac381a9cef0 3.4.4-beta1
|
||||
391a8c74cec7275c5d26c85ad108d4782a3e3dd9 DRTVWR-268
|
||||
b634dec987c16e8c9c938e11e52591d9ead8fa9b DRTVWR-270
|
||||
cd39255bd23330fd30c04105f2811e941d8524fe 3.4.4-beta2
|
||||
2c4011bbc2b15b82198fd8b51f3a9fe765a08c4d DRTVWR-271
|
||||
2f8a3ef687bc55828abcb17ac1ad7cde70536d7e 3.4.4-beta3
|
||||
35cfd4cf5b895fa776592f2e630e330be7f0604e DRTVWR-273
|
||||
a36f1f354b02aa6e448ca13685de167d0a0a3d03 DRTVWR-272
|
||||
37dba00ad820de3a808d4039396b162a9c275b3e DRTVWR-269
|
||||
c374035d459af3c03dea2dd90880dfc25de64706 DRTVWR-275
|
||||
05d9f1dd7a954069af2a33abedb7713fa36a04cb 3.4.4-beta4
|
||||
e1bb1ae7d8b12faeb37933a737c199cc9b9f89cc 3.4.4-release
|
||||
391a8c74cec7275c5d26c85ad108d4782a3e3dd9 DRTVWR-268
|
||||
a36f1f354b02aa6e448ca13685de167d0a0a3d03 DRTVWR-272
|
||||
37dba00ad820de3a808d4039396b162a9c275b3e DRTVWR-269
|
||||
7c6dfdc1b7a2ce0d8e3a8f3ce3058547ea065c0f DRTVWR-250
|
||||
b9ff9730daa53a541925300cbd02bb14575a5705 DRTVWR-277
|
||||
af6b711a97073431953b55ee808aaa09900c27e5 DRTVWR-276
|
||||
|
|
@ -405,6 +405,8 @@ c296133849d1f103c0e2abc41e6599daed00b67b DRTVWR-280
|
|||
5df4802bec93c8d0a509946d826bb4c50c5442ec DRTVWR-281
|
||||
7c1c33ba4cfd2d15ca51cc1ac440eca551331a4a DRTVWR-283
|
||||
6b9c7dbebef793230d64e1b452577c8b142d4143 3.4.5-beta2
|
||||
37947e4f771f001b551581bf7cd0051c3153beed DRTVWR-282
|
||||
6482cceb91cda68b799f3e6cdc66d33bf123547a DRTVWR-284
|
||||
ccf991e02dc2f63fb646324230d54832683f4a9b DRTVWR-286
|
||||
2d849850558a5a0324b398d1c102d30bcbdfb88f DRTVWR-287
|
||||
e06898df8644fe567bee94f817d03abc1c380993 3.4.5-beta3
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ Ansariel Hiller
|
|||
STORM-1685
|
||||
STORM-1713
|
||||
STORM-1899
|
||||
MAINT-2368
|
||||
Aralara Rajal
|
||||
Ardy Lay
|
||||
STORM-859
|
||||
|
|
@ -479,6 +480,7 @@ Hiro Sommambulist
|
|||
Hitomi Tiponi
|
||||
STORM-1741
|
||||
STORM-1862
|
||||
BUG-1067
|
||||
Holger Gilruth
|
||||
Horatio Freund
|
||||
Hoze Menges
|
||||
|
|
|
|||
|
|
@ -689,8 +689,17 @@ void LLImageRaw::fill( const LLColor4U& color )
|
|||
}
|
||||
}
|
||||
|
||||
LLPointer<LLImageRaw> LLImageRaw::duplicate()
|
||||
{
|
||||
if(getNumRefs() < 2)
|
||||
{
|
||||
return this; //nobody else refences to this image, no need to duplicate.
|
||||
}
|
||||
|
||||
|
||||
//make a duplicate
|
||||
LLPointer<LLImageRaw> dup = new LLImageRaw(getData(), getWidth(), getHeight(), getComponents());
|
||||
return dup;
|
||||
}
|
||||
|
||||
// Src and dst can be any size. Src and dst can each have 3 or 4 components.
|
||||
void LLImageRaw::copy(LLImageRaw* src)
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include "lluuid.h"
|
||||
#include "llstring.h"
|
||||
#include "llthread.h"
|
||||
#include "llpointer.h"
|
||||
|
||||
const S32 MIN_IMAGE_MIP = 2; // 4x4, only used for expand/contract power of 2
|
||||
const S32 MAX_IMAGE_MIP = 11; // 2048x2048
|
||||
|
|
@ -214,6 +215,9 @@ public:
|
|||
|
||||
// Copy operations
|
||||
|
||||
//duplicate this raw image if refCount > 1.
|
||||
LLPointer<LLImageRaw> duplicate();
|
||||
|
||||
// Src and dst can be any size. Src and dst can each have 3 or 4 components.
|
||||
void copy( LLImageRaw* src );
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ size_t LLCamera::readFrustumFromBuffer(const char *buffer)
|
|||
|
||||
S32 LLCamera::AABBInFrustum(const LLVector4a ¢er, const LLVector4a& radius)
|
||||
{
|
||||
static const LLVector4a scaler[] = {
|
||||
const LLVector4a scaler[] = {
|
||||
LLVector4a(-1,-1,-1),
|
||||
LLVector4a( 1,-1,-1),
|
||||
LLVector4a(-1, 1,-1),
|
||||
|
|
@ -207,7 +207,7 @@ S32 LLCamera::AABBInFrustum(const LLVector4a ¢er, const LLVector4a& radius)
|
|||
|
||||
S32 LLCamera::AABBInFrustumNoFarClip(const LLVector4a& center, const LLVector4a& radius)
|
||||
{
|
||||
static const LLVector4a scaler[] = {
|
||||
const LLVector4a scaler[] = {
|
||||
LLVector4a(-1,-1,-1),
|
||||
LLVector4a( 1,-1,-1),
|
||||
LLVector4a(-1, 1,-1),
|
||||
|
|
|
|||
|
|
@ -72,7 +72,8 @@
|
|||
|
||||
static const U32 EASY_HANDLE_POOL_SIZE = 5;
|
||||
static const S32 MULTI_PERFORM_CALL_REPEAT = 5;
|
||||
static const S32 CURL_REQUEST_TIMEOUT = 30; // seconds per operation
|
||||
static const S32 CURL_REQUEST_TIMEOUT = 120; // seconds per operation
|
||||
static const S32 CURL_CONNECT_TIMEOUT = 30; //seconds to wait for a connection
|
||||
static const S32 MAX_ACTIVE_REQUEST_COUNT = 100;
|
||||
|
||||
// DEBUG //
|
||||
|
|
@ -517,6 +518,7 @@ void LLCurl::Easy::prepRequest(const std::string& url,
|
|||
//don't verify host name so urls with scrubbed host names will work (improves DNS performance)
|
||||
setopt(CURLOPT_SSL_VERIFYHOST, 0);
|
||||
setopt(CURLOPT_TIMEOUT, llmax(time_out, CURL_REQUEST_TIMEOUT));
|
||||
setopt(CURLOPT_CONNECTTIMEOUT, CURL_CONNECT_TIMEOUT);
|
||||
|
||||
setoptString(CURLOPT_URL, url);
|
||||
|
||||
|
|
|
|||
|
|
@ -628,25 +628,41 @@ LLModel::EModelStatus load_face_from_dom_polygons(std::vector<LLVolumeFace>& fac
|
|||
if (v)
|
||||
{
|
||||
U32 v_idx = idx[j*stride+v_offset]*3;
|
||||
v_idx = llclamp(v_idx, (U32) 0, (U32) v->getCount());
|
||||
vert.getPosition().set(v->get(v_idx),
|
||||
v->get(v_idx+1),
|
||||
v->get(v_idx+2));
|
||||
}
|
||||
|
||||
if (n)
|
||||
//bounds check n and t lookups because some FBX to DAE converters
|
||||
//use negative indices and empty arrays to indicate data does not exist
|
||||
//for a particular channel
|
||||
if (n && n->getCount() > 0)
|
||||
{
|
||||
U32 n_idx = idx[j*stride+n_offset]*3;
|
||||
n_idx = llclamp(n_idx, (U32) 0, (U32) n->getCount());
|
||||
vert.getNormal().set(n->get(n_idx),
|
||||
n->get(n_idx+1),
|
||||
n->get(n_idx+2));
|
||||
}
|
||||
else
|
||||
{
|
||||
vert.getNormal().clear();
|
||||
}
|
||||
|
||||
|
||||
if (t)
|
||||
if (t && t->getCount() > 0)
|
||||
{
|
||||
U32 t_idx = idx[j*stride+t_offset]*2;
|
||||
t_idx = llclamp(t_idx, (U32) 0, (U32) t->getCount());
|
||||
vert.mTexCoord.setVec(t->get(t_idx),
|
||||
t->get(t_idx+1));
|
||||
}
|
||||
else
|
||||
{
|
||||
vert.mTexCoord.clear();
|
||||
}
|
||||
|
||||
|
||||
verts.push_back(vert);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1154,7 +1154,8 @@ void LLGLManager::initExtensions()
|
|||
// Misc
|
||||
glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, (GLint*) &mGLMaxVertexRange);
|
||||
glGetIntegerv(GL_MAX_ELEMENTS_INDICES, (GLint*) &mGLMaxIndexRange);
|
||||
|
||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*) &mGLMaxTextureSize);
|
||||
|
||||
#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS) && !LL_MESA_HEADLESS
|
||||
LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL;
|
||||
if (mHasVertexBufferObject)
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ public:
|
|||
S32 mVRAM; // VRAM in MB
|
||||
S32 mGLMaxVertexRange;
|
||||
S32 mGLMaxIndexRange;
|
||||
S32 mGLMaxTextureSize;
|
||||
|
||||
void getPixelFormat(); // Get the best pixel format
|
||||
|
||||
|
|
|
|||
|
|
@ -109,8 +109,8 @@ void LLRenderTarget::resize(U32 resx, U32 resy, U32 color_fmt)
|
|||
|
||||
bool LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage, bool use_fbo, S32 samples)
|
||||
{
|
||||
resx = llmin(resx, (U32) 4096);
|
||||
resy = llmin(resy, (U32) 4096);
|
||||
resx = llmin(resx, (U32) gGLManager.mGLMaxTextureSize);
|
||||
resy = llmin(resy, (U32) gGLManager.mGLMaxTextureSize);
|
||||
|
||||
stop_glerror();
|
||||
release();
|
||||
|
|
|
|||
|
|
@ -236,7 +236,8 @@ void LLScrollColumnHeader::handleReshape(const LLRect& new_rect, bool by_user)
|
|||
// tell scroll list to layout columns again
|
||||
// do immediate update to get proper feedback to resize handle
|
||||
// which needs to know how far the resize actually went
|
||||
mColumn->mParentCtrl->updateColumns();
|
||||
const bool force_update = true;
|
||||
mColumn->mParentCtrl->updateColumns(force_update);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -615,7 +615,6 @@ S32 LLScrollListCtrl::calcMaxContentWidth()
|
|||
|
||||
if (mColumnWidthsDirty)
|
||||
{
|
||||
mColumnWidthsDirty = false;
|
||||
// update max content width for this column, by looking at all items
|
||||
column->mMaxContentWidth = column->mHeader ? LLFontGL::getFontSansSerifSmall()->getWidth(column->mLabel) + mColumnPadding + HEADING_TEXT_PADDING : 0;
|
||||
item_list::iterator iter;
|
||||
|
|
@ -629,6 +628,7 @@ S32 LLScrollListCtrl::calcMaxContentWidth()
|
|||
}
|
||||
max_item_width += column->mMaxContentWidth;
|
||||
}
|
||||
mColumnWidthsDirty = false;
|
||||
|
||||
return max_item_width;
|
||||
}
|
||||
|
|
@ -643,7 +643,7 @@ bool LLScrollListCtrl::updateColumnWidths()
|
|||
if (!column) continue;
|
||||
|
||||
// update column width
|
||||
S32 new_width = column->getWidth();
|
||||
S32 new_width = 0;
|
||||
if (column->mRelWidth >= 0)
|
||||
{
|
||||
new_width = (S32)llround(column->mRelWidth*mItemListRect.getWidth());
|
||||
|
|
@ -652,6 +652,10 @@ bool LLScrollListCtrl::updateColumnWidths()
|
|||
{
|
||||
new_width = (mItemListRect.getWidth() - mTotalStaticColumnWidth - mTotalColumnPadding) / mNumDynamicWidthColumns;
|
||||
}
|
||||
else
|
||||
{
|
||||
new_width = column->getWidth();
|
||||
}
|
||||
|
||||
if (column->getWidth() != new_width)
|
||||
{
|
||||
|
|
@ -693,9 +697,9 @@ void LLScrollListCtrl::updateLineHeightInsert(LLScrollListItem* itemp)
|
|||
}
|
||||
|
||||
|
||||
void LLScrollListCtrl::updateColumns()
|
||||
void LLScrollListCtrl::updateColumns(bool force_update)
|
||||
{
|
||||
if (!mColumnsDirty)
|
||||
if (!mColumnsDirty && !force_update)
|
||||
return;
|
||||
|
||||
mColumnsDirty = false;
|
||||
|
|
@ -749,7 +753,7 @@ void LLScrollListCtrl::updateColumns()
|
|||
}
|
||||
|
||||
// propagate column widths to individual cells
|
||||
if (columns_changed_width)
|
||||
if (columns_changed_width || force_update)
|
||||
{
|
||||
item_list::iterator iter;
|
||||
for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
|
||||
|
|
|
|||
|
|
@ -342,7 +342,7 @@ public:
|
|||
|
||||
static void onClickColumn(void *userdata);
|
||||
|
||||
virtual void updateColumns();
|
||||
virtual void updateColumns(bool force_update = false);
|
||||
S32 calcMaxContentWidth();
|
||||
bool updateColumnWidths();
|
||||
|
||||
|
|
|
|||
|
|
@ -336,6 +336,8 @@ int yyerror(const char *fmt, ...);
|
|||
"ATTACH_HUD_BOTTOM_LEFT" { count(); yylval.ival = 36; return(INTEGER_CONSTANT); }
|
||||
"ATTACH_HUD_BOTTOM" { count(); yylval.ival = 37; return(INTEGER_CONSTANT); }
|
||||
"ATTACH_HUD_BOTTOM_RIGHT" { count(); yylval.ival = 38; return(INTEGER_CONSTANT); }
|
||||
"ATTACH_NECK" { count(); yylval.ival = 39; return(INTEGER_CONSTANT); }
|
||||
"ATTACH_AVATAR_CENTER" { count(); yylval.ival = 40; return(INTEGER_CONSTANT); }
|
||||
|
||||
"LAND_LEVEL" { count(); yylval.ival = E_LANDBRUSH_LEVEL; return(INTEGER_CONSTANT); }
|
||||
"LAND_RAISE" { count(); yylval.ival = E_LANDBRUSH_RAISE; return(INTEGER_CONSTANT); }
|
||||
|
|
|
|||
|
|
@ -274,7 +274,8 @@ ATTACH_LLLEG Passed to llAttachToAvatar to attach task to left lower leg
|
|||
ATTACH_BELLY Passed to llAttachToAvatar to attach task to belly
|
||||
ATTACH_LEFT_PEC Passed to llAttachToAvatar to attach task to left pectoral
|
||||
ATTACH_RIGHT_PEC Passed to llAttachToAvatar to attach task to right pectoral
|
||||
|
||||
ATTACH_NECK Passed to llAttachToAvatar to attach task to neck
|
||||
ATTACH_AVATAR_CENTER Passed to llAttachToAvatar to attach task to avatar center
|
||||
LAND_LEVEL Passed to llModifyLand to level terrain
|
||||
LAND_RAISE Passed to llModifyLand to raise terrain
|
||||
LAND_LOWER Passed to llModifyLand to lower terrain
|
||||
|
|
|
|||
|
|
@ -8446,6 +8446,18 @@
|
|||
<integer>0</integer>
|
||||
</map>
|
||||
|
||||
<key>RenderDepthOfFieldInEditMode</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether to use depth of field effect when in edit mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
|
||||
<key>CameraDoFResScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -26,22 +26,28 @@
|
|||
|
||||
ATTRIBUTE vec4 weight4;
|
||||
|
||||
uniform mat4 matrixPalette[32];
|
||||
uniform mat4 matrixPalette[64];
|
||||
|
||||
mat4 getObjectSkinnedTransform()
|
||||
{
|
||||
int i;
|
||||
|
||||
vec4 w = fract(weight4);
|
||||
vec4 index = floor(weight4);
|
||||
float w0 = fract(weight4.x);
|
||||
float w1 = fract(weight4.y);
|
||||
float w2 = fract(weight4.z);
|
||||
float w3 = fract(weight4.w);
|
||||
|
||||
int i0 = int(floor(weight4.x));
|
||||
int i1 = int(floor(weight4.y));
|
||||
int i2 = int(floor(weight4.z));
|
||||
int i3 = int(floor(weight4.w));
|
||||
|
||||
//float scale = 1.0/(w.x+w.y+w.z+w.w);
|
||||
//w *= scale;
|
||||
|
||||
float scale = 1.0/(w.x+w.y+w.z+w.w);
|
||||
w *= scale;
|
||||
|
||||
mat4 mat = matrixPalette[int(index.x)]*w.x;
|
||||
mat += matrixPalette[int(index.y)]*w.y;
|
||||
mat += matrixPalette[int(index.z)]*w.z;
|
||||
mat += matrixPalette[int(index.w)]*w.w;
|
||||
mat4 mat = matrixPalette[i0]*w0;
|
||||
mat += matrixPalette[i1]*w1;
|
||||
mat += matrixPalette[i2]*w2;
|
||||
mat += matrixPalette[i3]*w3;
|
||||
|
||||
return mat;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ 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 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
|
||||
|
|
@ -46,162 +46,132 @@ 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 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) 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 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 0
|
||||
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 1.3
|
||||
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.*340M.* 0 0 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 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 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 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 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 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 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
|
||||
|
|
@ -219,17 +189,21 @@ 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 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 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 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
|
||||
|
|
@ -248,41 +222,43 @@ 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 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 0
|
||||
AMD TURKS (HD 6500/6600) .*(AMD|ATI).*Turks.* 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 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 0
|
||||
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.1
|
||||
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 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
|
||||
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
|
||||
|
|
@ -308,8 +284,6 @@ 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
|
||||
|
|
@ -322,113 +296,109 @@ 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
|
||||
Mesa .*Mesa.* 1 0 1 3
|
||||
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 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
|
||||
NVIDIA GT 130 .*NVIDIA .*GT *13.* 2 1 0 3.3
|
||||
NVIDIA GTS 150 .*NVIDIA .*GTS *15.* 2 1 0 0
|
||||
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 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 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.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 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
|
||||
|
|
@ -437,13 +407,7 @@ 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
|
||||
|
|
@ -458,33 +422,33 @@ 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 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 8400M.* 1 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 8600M.* 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 8700M.* 2 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 8800M.* 2 1 1 3.3
|
||||
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 9100M.* 0 1 0 0
|
||||
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 9200M.* 1 1 0 3.1
|
||||
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 9300M.* 1 1 1 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 9400M.* 2 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 9500M.* 1 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 9600M.* 2 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 9700M.* 0 1 1 3.3
|
||||
NVIDIA GeForce 9800M .*NVIDIA .*GeForce 9800M.* 2 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
|
||||
|
|
@ -495,7 +459,7 @@ 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 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
|
||||
|
|
@ -504,13 +468,13 @@ 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 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 0
|
||||
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
|
||||
|
|
@ -528,9 +492,9 @@ 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 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
|
||||
|
|
@ -540,7 +504,7 @@ 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 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
|
||||
|
|
@ -548,44 +512,44 @@ 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 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 3.3
|
||||
NVIDIA Quadro4 .*Quadro4.* 0 1 0 0
|
||||
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 *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 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 *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 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 0
|
||||
NVIDIA RIVA TNT .*RIVA TNT.* 0 0 0 0
|
||||
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
|
||||
|
|
|
|||
|
|
@ -4599,11 +4599,6 @@ void LLAppViewer::idle()
|
|||
llinfos << "Dead object updates: " << gObjectList.mNumDeadObjectUpdates << llendl;
|
||||
gObjectList.mNumDeadObjectUpdates = 0;
|
||||
}
|
||||
if (gObjectList.mNumUnknownKills)
|
||||
{
|
||||
llinfos << "Kills on unknown objects: " << gObjectList.mNumUnknownKills << llendl;
|
||||
gObjectList.mNumUnknownKills = 0;
|
||||
}
|
||||
if (gObjectList.mNumUnknownUpdates)
|
||||
{
|
||||
llinfos << "Unknown object updates: " << gObjectList.mNumUnknownUpdates << llendl;
|
||||
|
|
|
|||
|
|
@ -135,6 +135,16 @@ void LLDrawPoolAvatar::prerender()
|
|||
{
|
||||
sBufferUsage = GL_STREAM_DRAW_ARB;
|
||||
}
|
||||
|
||||
if (!mDrawFace.empty())
|
||||
{
|
||||
const LLFace *facep = mDrawFace[0];
|
||||
if (facep && facep->getDrawable())
|
||||
{
|
||||
LLVOAvatar* avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get();
|
||||
updateRiggedVertexBuffers(avatarp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLMatrix4& LLDrawPoolAvatar::getModelView()
|
||||
|
|
@ -1434,6 +1444,65 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
|
|||
}
|
||||
}
|
||||
|
||||
void LLDrawPoolAvatar::getRiggedGeometry(LLFace* face, LLPointer<LLVertexBuffer>& buffer, U32 data_mask, const LLMeshSkinInfo* skin, LLVolume* volume, const LLVolumeFace& vol_face)
|
||||
{
|
||||
face->setGeomIndex(0);
|
||||
face->setIndicesIndex(0);
|
||||
|
||||
//rigged faces do not batch textures
|
||||
face->setTextureIndex(255);
|
||||
|
||||
if (buffer.isNull() || buffer->getTypeMask() != data_mask || !buffer->isWriteable())
|
||||
{ //make a new buffer
|
||||
if (sShaderLevel > 0)
|
||||
{
|
||||
buffer = new LLVertexBuffer(data_mask, GL_DYNAMIC_DRAW_ARB);
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer = new LLVertexBuffer(data_mask, GL_STREAM_DRAW_ARB);
|
||||
}
|
||||
buffer->allocateBuffer(vol_face.mNumVertices, vol_face.mNumIndices, true);
|
||||
}
|
||||
else
|
||||
{ //resize existing buffer
|
||||
buffer->resizeBuffer(vol_face.mNumVertices, vol_face.mNumIndices);
|
||||
}
|
||||
|
||||
face->setSize(vol_face.mNumVertices, vol_face.mNumIndices);
|
||||
face->setVertexBuffer(buffer);
|
||||
|
||||
U16 offset = 0;
|
||||
|
||||
LLMatrix4 mat_vert = skin->mBindShapeMatrix;
|
||||
glh::matrix4f m((F32*) mat_vert.mMatrix);
|
||||
m = m.inverse().transpose();
|
||||
|
||||
F32 mat3[] =
|
||||
{ m.m[0], m.m[1], m.m[2],
|
||||
m.m[4], m.m[5], m.m[6],
|
||||
m.m[8], m.m[9], m.m[10] };
|
||||
|
||||
LLMatrix3 mat_normal(mat3);
|
||||
|
||||
//let getGeometryVolume know if alpha should override shiny
|
||||
U32 type = gPipeline.getPoolTypeFromTE(face->getTextureEntry(), face->getTexture());
|
||||
|
||||
if (type == LLDrawPool::POOL_ALPHA)
|
||||
{
|
||||
face->setPoolType(LLDrawPool::POOL_ALPHA);
|
||||
}
|
||||
else
|
||||
{
|
||||
face->setPoolType(LLDrawPool::POOL_AVATAR);
|
||||
}
|
||||
|
||||
//llinfos << "Rebuilt face " << face->getTEOffset() << " of " << face->getDrawable() << " at " << gFrameTimeSeconds << llendl;
|
||||
face->getGeometryVolume(*volume, face->getTEOffset(), mat_vert, mat_normal, offset, true);
|
||||
|
||||
buffer->flush();
|
||||
}
|
||||
|
||||
void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace* face, const LLMeshSkinInfo* skin, LLVolume* volume, const LLVolumeFace& vol_face)
|
||||
{
|
||||
LLVector4a* weight = vol_face.mWeights;
|
||||
|
|
@ -1453,60 +1522,27 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
|
|||
buffer->getNumIndices() != vol_face.mNumIndices ||
|
||||
(drawable && drawable->isState(LLDrawable::REBUILD_ALL)))
|
||||
{
|
||||
face->setGeomIndex(0);
|
||||
face->setIndicesIndex(0);
|
||||
|
||||
//rigged faces do not batch textures
|
||||
face->setTextureIndex(255);
|
||||
if (drawable && drawable->isState(LLDrawable::REBUILD_ALL))
|
||||
{ //rebuild EVERY face in the drawable, not just this one, to avoid missing drawable wide rebuild issues
|
||||
for (S32 i = 0; i < drawable->getNumFaces(); ++i)
|
||||
{
|
||||
LLFace* facep = drawable->getFace(i);
|
||||
U32 face_data_mask = facep->getRiggedVertexBufferDataMask();
|
||||
if (face_data_mask)
|
||||
{
|
||||
LLPointer<LLVertexBuffer> cur_buffer = facep->getVertexBuffer();
|
||||
const LLVolumeFace& cur_vol_face = volume->getVolumeFace(i);
|
||||
getRiggedGeometry(facep, cur_buffer, face_data_mask, skin, volume, cur_vol_face);
|
||||
}
|
||||
}
|
||||
drawable->clearState(LLDrawable::REBUILD_ALL);
|
||||
|
||||
if (buffer.isNull() || buffer->getTypeMask() != data_mask || !buffer->isWriteable())
|
||||
{ //make a new buffer
|
||||
if (sShaderLevel > 0)
|
||||
{
|
||||
buffer = new LLVertexBuffer(data_mask, GL_DYNAMIC_DRAW_ARB);
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer = new LLVertexBuffer(data_mask, GL_STREAM_DRAW_ARB);
|
||||
}
|
||||
buffer->allocateBuffer(vol_face.mNumVertices, vol_face.mNumIndices, true);
|
||||
buffer = face->getVertexBuffer();
|
||||
}
|
||||
else
|
||||
{ //resize existing buffer
|
||||
buffer->resizeBuffer(vol_face.mNumVertices, vol_face.mNumIndices);
|
||||
{ //just rebuild this face
|
||||
getRiggedGeometry(face, buffer, data_mask, skin, volume, vol_face);
|
||||
}
|
||||
|
||||
face->setSize(vol_face.mNumVertices, vol_face.mNumIndices);
|
||||
face->setVertexBuffer(buffer);
|
||||
|
||||
U16 offset = 0;
|
||||
|
||||
LLMatrix4 mat_vert = skin->mBindShapeMatrix;
|
||||
glh::matrix4f m((F32*) mat_vert.mMatrix);
|
||||
m = m.inverse().transpose();
|
||||
|
||||
F32 mat3[] =
|
||||
{ m.m[0], m.m[1], m.m[2],
|
||||
m.m[4], m.m[5], m.m[6],
|
||||
m.m[8], m.m[9], m.m[10] };
|
||||
|
||||
LLMatrix3 mat_normal(mat3);
|
||||
|
||||
//let getGeometryVolume know if alpha should override shiny
|
||||
U32 type = gPipeline.getPoolTypeFromTE(face->getTextureEntry(), face->getTexture());
|
||||
|
||||
if (type == LLDrawPool::POOL_ALPHA)
|
||||
{
|
||||
face->setPoolType(LLDrawPool::POOL_ALPHA);
|
||||
}
|
||||
else
|
||||
{
|
||||
face->setPoolType(LLDrawPool::POOL_AVATAR);
|
||||
}
|
||||
|
||||
face->getGeometryVolume(*volume, face->getTEOffset(), mat_vert, mat_normal, offset, true);
|
||||
|
||||
buffer->flush();
|
||||
}
|
||||
|
||||
if (sShaderLevel <= 0 && face->mLastSkinTime < avatar->getLastSkinTime())
|
||||
|
|
@ -1591,11 +1627,6 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (drawable && (face->getTEOffset() == drawable->getNumFaces()-1))
|
||||
{
|
||||
drawable->clearState(LLDrawable::REBUILD_ALL);
|
||||
}
|
||||
}
|
||||
|
||||
void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
|
||||
|
|
@ -1771,7 +1802,6 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
|
|||
|
||||
void LLDrawPoolAvatar::renderDeferredRiggedSimple(LLVOAvatar* avatar)
|
||||
{
|
||||
updateRiggedVertexBuffers(avatar);
|
||||
renderRigged(avatar, RIGGED_DEFERRED_SIMPLE);
|
||||
}
|
||||
|
||||
|
|
@ -1840,7 +1870,6 @@ void LLDrawPoolAvatar::updateRiggedVertexBuffers(LLVOAvatar* avatar)
|
|||
|
||||
void LLDrawPoolAvatar::renderRiggedSimple(LLVOAvatar* avatar)
|
||||
{
|
||||
updateRiggedVertexBuffers(avatar);
|
||||
renderRigged(avatar, RIGGED_SIMPLE);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ public:
|
|||
void endDeferredRiggedSimple();
|
||||
void endDeferredRiggedBump();
|
||||
|
||||
void getRiggedGeometry(LLFace* face, LLPointer<LLVertexBuffer>& buffer, U32 data_mask, const LLMeshSkinInfo* skin, LLVolume* volume, const LLVolumeFace& vol_face);
|
||||
void updateRiggedFaceVertexBuffer(LLVOAvatar* avatar,
|
||||
LLFace* facep,
|
||||
const LLMeshSkinInfo* skin,
|
||||
|
|
|
|||
|
|
@ -2118,7 +2118,7 @@ void LLPanelLandOptions::refreshSearch()
|
|||
|
||||
bool can_change =
|
||||
LLViewerParcelMgr::isParcelModifiableByAgent(
|
||||
parcel, GP_LAND_CHANGE_IDENTITY)
|
||||
parcel, GP_LAND_FIND_PLACES)
|
||||
&& region
|
||||
&& !(region->getRegionFlag(REGION_FLAGS_BLOCK_PARCEL_SEARCH));
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ void LLMenuOptionPathfindingRebakeNavmesh::initialize()
|
|||
|
||||
void LLMenuOptionPathfindingRebakeNavmesh::quit()
|
||||
{
|
||||
if (mIsInitialized)
|
||||
if (mIsInitialized) // Quitting from the login screen leaves this uninitialized
|
||||
{
|
||||
if (mNavMeshSlot.connected())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -413,7 +413,7 @@ public:
|
|||
|
||||
void startRequest() { ++mPendingUploads; }
|
||||
void stopRequest() { --mPendingUploads; }
|
||||
|
||||
|
||||
bool finished() { return mFinished; }
|
||||
virtual void run();
|
||||
void preStart();
|
||||
|
|
|
|||
|
|
@ -416,9 +416,9 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,
|
|||
}
|
||||
|
||||
|
||||
void LLNameListCtrl::updateColumns()
|
||||
void LLNameListCtrl::updateColumns(bool force_update)
|
||||
{
|
||||
LLScrollListCtrl::updateColumns();
|
||||
LLScrollListCtrl::updateColumns(force_update);
|
||||
|
||||
if (!mNameColumn.empty())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ public:
|
|||
|
||||
void sortByName(BOOL ascending);
|
||||
|
||||
/*virtual*/ void updateColumns();
|
||||
/*virtual*/ void updateColumns(bool force_update);
|
||||
|
||||
/*virtual*/ void mouseOverHighlightNthItem( S32 index );
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ public:
|
|||
std::string mAlreadyInGroup;
|
||||
std::string mTooManySelected;
|
||||
bool mConfirmedOwnerInvite;
|
||||
std::set<LLUUID> mInviteeIDs;
|
||||
|
||||
void (*mCloseCallback)(void* data);
|
||||
|
||||
|
|
@ -117,31 +118,30 @@ LLPanelGroupInvite::impl::~impl()
|
|||
}
|
||||
}
|
||||
|
||||
const S32 MAX_GROUP_INVITES = 100; // Max invites per request. 100 to match server cap.
|
||||
|
||||
void LLPanelGroupInvite::impl::addUsers(const std::vector<std::string>& names,
|
||||
const uuid_vec_t& agent_ids)
|
||||
{
|
||||
std::string name;
|
||||
LLUUID id;
|
||||
|
||||
if (names.size() + mInviteeIDs.size() > MAX_GROUP_INVITES)
|
||||
{
|
||||
// Fail! Show a warning and don't add any names.
|
||||
LLSD msg;
|
||||
msg["MESSAGE"] = mTooManySelected;
|
||||
LLNotificationsUtil::add("GenericAlert", msg);
|
||||
return;
|
||||
}
|
||||
|
||||
for (S32 i = 0; i < (S32)names.size(); i++)
|
||||
{
|
||||
name = names[i];
|
||||
id = agent_ids[i];
|
||||
|
||||
// Make sure this agent isn't already in the list.
|
||||
bool already_in_list = false;
|
||||
std::vector<LLScrollListItem*> items = mInvitees->getAllData();
|
||||
for (std::vector<LLScrollListItem*>::iterator iter = items.begin();
|
||||
iter != items.end(); ++iter)
|
||||
{
|
||||
LLScrollListItem* item = *iter;
|
||||
if (item->getUUID() == id)
|
||||
{
|
||||
already_in_list = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (already_in_list)
|
||||
if (mInviteeIDs.find(id) != mInviteeIDs.end())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
@ -152,6 +152,7 @@ void LLPanelGroupInvite::impl::addUsers(const std::vector<std::string>& names,
|
|||
row["columns"][0]["value"] = name;
|
||||
|
||||
mInvitees->addElement(row);
|
||||
mInviteeIDs.insert(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -193,7 +194,6 @@ void LLPanelGroupInvite::impl::submitInvitations()
|
|||
role_member_pairs[item->getUUID()] = role_id;
|
||||
}
|
||||
|
||||
const S32 MAX_GROUP_INVITES = 100; // Max invites per request. 100 to match server cap.
|
||||
if (role_member_pairs.size() > MAX_GROUP_INVITES)
|
||||
{
|
||||
// Fail!
|
||||
|
|
@ -334,6 +334,12 @@ void LLPanelGroupInvite::impl::handleRemove()
|
|||
mInvitees->getAllSelected();
|
||||
if (selection.empty()) return;
|
||||
|
||||
std::vector<LLScrollListItem*>::iterator iter;
|
||||
for(iter = selection.begin(); iter != selection.end(); ++iter)
|
||||
{
|
||||
mInviteeIDs.erase( (*iter)->getUUID() );
|
||||
}
|
||||
|
||||
// Remove all selected invitees.
|
||||
mInvitees->deleteSelectedItems();
|
||||
mRemoveButton->setEnabled(FALSE);
|
||||
|
|
@ -459,6 +465,7 @@ void LLPanelGroupInvite::clear()
|
|||
mImplementation->mRoleNames->clear();
|
||||
mImplementation->mRoleNames->removeall();
|
||||
mImplementation->mOKButton->setEnabled(FALSE);
|
||||
mImplementation->mInviteeIDs.clear();
|
||||
}
|
||||
|
||||
void LLPanelGroupInvite::addUsers(uuid_vec_t& agent_ids)
|
||||
|
|
|
|||
|
|
@ -3359,7 +3359,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
|
|||
}
|
||||
else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::SPHERE)
|
||||
{
|
||||
/*LLVolumeParams volume_params;
|
||||
LLVolumeParams volume_params;
|
||||
volume_params.setType( LL_PCODE_PROFILE_CIRCLE_HALF, LL_PCODE_PATH_CIRCLE );
|
||||
volume_params.setBeginAndEndS( 0.f, 1.f );
|
||||
volume_params.setBeginAndEndT( 0.f, 1.f );
|
||||
|
|
@ -3369,7 +3369,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
|
|||
|
||||
gGL.diffuseColor4fv(color.mV);
|
||||
pushVerts(sphere);
|
||||
LLPrimitive::sVolumeManager->unrefVolume(sphere);*/
|
||||
LLPrimitive::sVolumeManager->unrefVolume(sphere);
|
||||
}
|
||||
else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::CYLINDER)
|
||||
{
|
||||
|
|
@ -3447,51 +3447,67 @@ void renderPhysicsShapes(LLSpatialGroup* group)
|
|||
for (LLSpatialGroup::OctreeNode::const_element_iter i = group->getDataBegin(); i != group->getDataEnd(); ++i)
|
||||
{
|
||||
LLDrawable* drawable = *i;
|
||||
LLVOVolume* volume = drawable->getVOVolume();
|
||||
if (volume && !volume->isAttachment() && volume->getPhysicsShapeType() != LLViewerObject::PHYSICS_SHAPE_NONE )
|
||||
|
||||
if (drawable->isSpatialBridge())
|
||||
{
|
||||
if (!group->mSpatialPartition->isBridge())
|
||||
LLSpatialBridge* bridge = drawable->asPartition()->asBridge();
|
||||
|
||||
if (bridge)
|
||||
{
|
||||
gGL.pushMatrix();
|
||||
LLVector3 trans = drawable->getRegion()->getOriginAgent();
|
||||
gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
|
||||
renderPhysicsShape(drawable, volume);
|
||||
gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
|
||||
bridge->renderPhysicsShapes();
|
||||
gGL.popMatrix();
|
||||
}
|
||||
else
|
||||
{
|
||||
renderPhysicsShape(drawable, volume);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLViewerObject* object = drawable->getVObj();
|
||||
if (object && object->getPCode() == LLViewerObject::LL_VO_SURFACE_PATCH)
|
||||
LLVOVolume* volume = drawable->getVOVolume();
|
||||
if (volume && !volume->isAttachment() && volume->getPhysicsShapeType() != LLViewerObject::PHYSICS_SHAPE_NONE )
|
||||
{
|
||||
gGL.pushMatrix();
|
||||
gGL.multMatrix((F32*) object->getRegion()->mRenderMatrix.mMatrix);
|
||||
//push face vertices for terrain
|
||||
for (S32 i = 0; i < drawable->getNumFaces(); ++i)
|
||||
if (!group->mSpatialPartition->isBridge())
|
||||
{
|
||||
LLFace* face = drawable->getFace(i);
|
||||
if (face)
|
||||
gGL.pushMatrix();
|
||||
LLVector3 trans = drawable->getRegion()->getOriginAgent();
|
||||
gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
|
||||
renderPhysicsShape(drawable, volume);
|
||||
gGL.popMatrix();
|
||||
}
|
||||
else
|
||||
{
|
||||
renderPhysicsShape(drawable, volume);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLViewerObject* object = drawable->getVObj();
|
||||
if (object && object->getPCode() == LLViewerObject::LL_VO_SURFACE_PATCH)
|
||||
{
|
||||
gGL.pushMatrix();
|
||||
gGL.multMatrix((F32*) object->getRegion()->mRenderMatrix.mMatrix);
|
||||
//push face vertices for terrain
|
||||
for (S32 i = 0; i < drawable->getNumFaces(); ++i)
|
||||
{
|
||||
LLVertexBuffer* buff = face->getVertexBuffer();
|
||||
if (buff)
|
||||
LLFace* face = drawable->getFace(i);
|
||||
if (face)
|
||||
{
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
LLVertexBuffer* buff = face->getVertexBuffer();
|
||||
if (buff)
|
||||
{
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||
|
||||
buff->setBuffer(LLVertexBuffer::MAP_VERTEX);
|
||||
gGL.diffuseColor3f(0.2f, 0.5f, 0.3f);
|
||||
buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
|
||||
buff->setBuffer(LLVertexBuffer::MAP_VERTEX);
|
||||
gGL.diffuseColor3f(0.2f, 0.5f, 0.3f);
|
||||
buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
|
||||
|
||||
gGL.diffuseColor3f(0.2f, 1.f, 0.3f);
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
|
||||
gGL.diffuseColor3f(0.2f, 1.f, 0.3f);
|
||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||
buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
gGL.popMatrix();
|
||||
}
|
||||
gGL.popMatrix();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1922,10 +1922,10 @@ bool LLTextureCache::writeToFastCache(S32 id, LLPointer<LLImageRaw> raw, S32 dis
|
|||
h >>= i;
|
||||
if(w * h *c > 0) //valid
|
||||
{
|
||||
LLPointer<LLImageRaw> newraw = new LLImageRaw(raw->getData(), raw->getWidth(), raw->getHeight(), raw->getComponents());
|
||||
newraw->scale(w, h) ;
|
||||
raw = newraw;
|
||||
|
||||
//make a duplicate to keep the original raw image untouched.
|
||||
raw = raw->duplicate();
|
||||
raw->scale(w, h) ;
|
||||
|
||||
discardlevel += i ;
|
||||
}
|
||||
}
|
||||
|
|
@ -1935,9 +1935,12 @@ bool LLTextureCache::writeToFastCache(S32 id, LLPointer<LLImageRaw> raw, S32 dis
|
|||
memcpy(mFastCachePadBuffer + sizeof(S32), &h, sizeof(S32));
|
||||
memcpy(mFastCachePadBuffer + sizeof(S32) * 2, &c, sizeof(S32));
|
||||
memcpy(mFastCachePadBuffer + sizeof(S32) * 3, &discardlevel, sizeof(S32));
|
||||
if(w * h * c > 0) //valid
|
||||
|
||||
S32 copy_size = w * h * c;
|
||||
if(copy_size > 0) //valid
|
||||
{
|
||||
memcpy(mFastCachePadBuffer + TEXTURE_FAST_CACHE_ENTRY_OVERHEAD, raw->getData(), w * h * c);
|
||||
copy_size = llmin(copy_size, TEXTURE_FAST_CACHE_ENTRY_SIZE - TEXTURE_FAST_CACHE_ENTRY_OVERHEAD);
|
||||
memcpy(mFastCachePadBuffer + TEXTURE_FAST_CACHE_ENTRY_OVERHEAD, raw->getData(), copy_size);
|
||||
}
|
||||
S32 offset = id * TEXTURE_FAST_CACHE_ENTRY_SIZE;
|
||||
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
BOOL LLToolPie::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
// don't pick transparent so users can't "pay" transparent objects
|
||||
mPick = gViewerWindow->pickImmediate(x, y, FALSE);
|
||||
mPick = gViewerWindow->pickImmediate(x, y, FALSE, TRUE);
|
||||
mPick.mKeyMask = mask;
|
||||
|
||||
// claim not handled so UI focus stays same
|
||||
|
|
@ -1687,6 +1687,13 @@ BOOL LLToolPie::handleRightClickPick()
|
|||
showVisualContextMenuEffect();
|
||||
}
|
||||
}
|
||||
else if (mPick.mParticleOwnerID.notNull())
|
||||
{
|
||||
if (gMenuMuteParticle && mPick.mParticleOwnerID != gAgent.getID())
|
||||
{
|
||||
gMenuMuteParticle->show(x,y);
|
||||
}
|
||||
}
|
||||
|
||||
LLTool::handleRightMouseDown(x, y, mask);
|
||||
// We handled the event.
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ LLContextMenu *gMenuObject = NULL;
|
|||
LLContextMenu *gMenuAttachmentSelf = NULL;
|
||||
LLContextMenu *gMenuAttachmentOther = NULL;
|
||||
LLContextMenu *gMenuLand = NULL;
|
||||
LLContextMenu *gMenuMuteParticle = NULL;
|
||||
|
||||
const std::string SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents");
|
||||
|
||||
|
|
@ -425,6 +426,9 @@ void init_menus()
|
|||
gMenuLand = LLUICtrlFactory::createFromFile<LLContextMenu>(
|
||||
"menu_land.xml", gMenuHolder, registry);
|
||||
|
||||
gMenuMuteParticle = LLUICtrlFactory::createFromFile<LLContextMenu>(
|
||||
"menu_mute_particle.xml", gMenuHolder, registry);
|
||||
|
||||
///
|
||||
/// set up the colors
|
||||
///
|
||||
|
|
@ -2450,6 +2454,9 @@ void cleanup_menus()
|
|||
delete gMenuLand;
|
||||
gMenuLand = NULL;
|
||||
|
||||
delete gMenuMuteParticle;
|
||||
gMenuMuteParticle = NULL;
|
||||
|
||||
delete gMenuBarView;
|
||||
gMenuBarView = NULL;
|
||||
|
||||
|
|
@ -2803,6 +2810,13 @@ bool enable_object_edit()
|
|||
return enable;
|
||||
}
|
||||
|
||||
bool enable_mute_particle()
|
||||
{
|
||||
const LLPickInfo& pick = LLToolPie::getInstance()->getPick();
|
||||
|
||||
return pick.mParticleOwnerID != LLUUID::null && pick.mParticleOwnerID != gAgent.getID();
|
||||
}
|
||||
|
||||
// mutually exclusive - show either edit option or build in menu
|
||||
bool enable_object_build()
|
||||
{
|
||||
|
|
@ -6220,6 +6234,33 @@ class LLLandEdit : public view_listener_t
|
|||
}
|
||||
};
|
||||
|
||||
class LLMuteParticle : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
LLUUID id = LLToolPie::getInstance()->getPick().mParticleOwnerID;
|
||||
|
||||
if (id.notNull())
|
||||
{
|
||||
std::string name;
|
||||
gCacheName->getFullName(id, name);
|
||||
|
||||
LLMute mute(id, name, LLMute::AGENT);
|
||||
if (LLMuteList::getInstance()->isMuted(mute.mID))
|
||||
{
|
||||
LLMuteList::getInstance()->remove(mute);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLMuteList::getInstance()->add(mute);
|
||||
LLPanelBlockedList::showPanelAndSelect(mute.mID);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class LLWorldEnableBuyLand : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
|
|
@ -8713,6 +8754,9 @@ void initialize_menus()
|
|||
view_listener_t::addMenu(new LLLandBuyPass(), "Land.BuyPass");
|
||||
view_listener_t::addMenu(new LLLandEdit(), "Land.Edit");
|
||||
|
||||
// Particle muting
|
||||
view_listener_t::addMenu(new LLMuteParticle(), "Particle.Mute");
|
||||
|
||||
view_listener_t::addMenu(new LLLandEnableBuyPass(), "Land.EnableBuyPass");
|
||||
commit.add("Land.Buy", boost::bind(&handle_buy_land));
|
||||
|
||||
|
|
@ -8735,6 +8779,7 @@ void initialize_menus()
|
|||
enable.add("EnablePayObject", boost::bind(&enable_pay_object));
|
||||
enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
|
||||
enable.add("EnableEdit", boost::bind(&enable_object_edit));
|
||||
enable.add("EnableMuteParticle", boost::bind(&enable_mute_particle));
|
||||
enable.add("VisibleBuild", boost::bind(&enable_object_build));
|
||||
commit.add("Pathfinding.Linksets.Select", boost::bind(&LLFloaterPathfindingLinksets::openLinksetsWithSelectedObjects));
|
||||
enable.add("EnableSelectInPathfindingLinksets", boost::bind(&enable_object_select_in_pathfinding_linksets));
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@ extern LLContextMenu *gMenuObject;
|
|||
extern LLContextMenu *gMenuAttachmentSelf;
|
||||
extern LLContextMenu *gMenuAttachmentOther;
|
||||
extern LLContextMenu *gMenuLand;
|
||||
extern LLContextMenu *gMenuMuteParticle;
|
||||
|
||||
// Needed to build menus when attachment site list available
|
||||
extern LLMenuGL* gAttachSubMenu;
|
||||
|
|
|
|||
|
|
@ -4570,7 +4570,6 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data)
|
|||
if (id == LLUUID::null)
|
||||
{
|
||||
LL_DEBUGS("Messaging") << "Unknown kill for local " << local_id << LL_ENDL;
|
||||
gObjectList.mNumUnknownKills++;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
|
@ -4594,18 +4593,12 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data)
|
|||
// Do the kill
|
||||
gObjectList.killObject(objectp);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("Messaging") << "Object in UUID lookup, but not on object list in kill!" << LL_ENDL;
|
||||
gObjectList.mNumUnknownKills++;
|
||||
}
|
||||
}
|
||||
|
||||
// We should remove the object from selection after it is marked dead by gObjectList to make LLToolGrab,
|
||||
// which is using the object, release the mouse capture correctly when the object dies.
|
||||
// See LLToolGrab::handleHoverActive() and LLToolGrab::handleHoverNonPhysical().
|
||||
LLSelectMgr::getInstance()->removeObjectFromSelections(id);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -7326,8 +7319,12 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
|
|||
LLFloaterWorldMap* instance = LLFloaterWorldMap::getInstance();
|
||||
if(instance)
|
||||
{
|
||||
instance->trackURL(
|
||||
sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]);
|
||||
llinfos << "Object named " << object_name
|
||||
<< " is offering TP to region "
|
||||
<< sim_name << " position " << pos
|
||||
<< llendl;
|
||||
|
||||
instance->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]);
|
||||
LLFloaterReg::showInstance("world_map", "center");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,7 +106,6 @@ LLViewerObjectList::LLViewerObjectList()
|
|||
mNumNewObjects = 0;
|
||||
mWasPaused = FALSE;
|
||||
mNumDeadObjectUpdates = 0;
|
||||
mNumUnknownKills = 0;
|
||||
mNumUnknownUpdates = 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -188,7 +188,6 @@ public:
|
|||
|
||||
S32 mNumUnknownUpdates;
|
||||
S32 mNumDeadObjectUpdates;
|
||||
S32 mNumUnknownKills;
|
||||
S32 mNumDeadObjects;
|
||||
protected:
|
||||
std::vector<U64> mOrphanParents; // LocalID/ip,port of orphaned objects
|
||||
|
|
|
|||
|
|
@ -488,9 +488,13 @@ void LLViewerPartSim::destroyClass()
|
|||
//static
|
||||
BOOL LLViewerPartSim::shouldAddPart()
|
||||
{
|
||||
if (sParticleCount >= MAX_PART_COUNT)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (sParticleCount > PART_THROTTLE_THRESHOLD*sMaxParticleCount)
|
||||
{
|
||||
|
||||
F32 frac = (F32)sParticleCount/(F32)sMaxParticleCount;
|
||||
frac -= PART_THROTTLE_THRESHOLD;
|
||||
frac *= PART_THROTTLE_RESCALE;
|
||||
|
|
@ -500,7 +504,10 @@ BOOL LLViewerPartSim::shouldAddPart()
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
if (sParticleCount >= MAX_PART_COUNT)
|
||||
|
||||
// Check frame rate, and don't add more if the viewer is really slow
|
||||
const F32 MIN_FRAME_RATE_FOR_NEW_PARTICLES = 4.f;
|
||||
if (gFPSClamped < MIN_FRAME_RATE_FOR_NEW_PARTICLES)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1199,10 +1199,10 @@ void LLViewerFetchedTexture::dump()
|
|||
// ONLY called from LLViewerFetchedTextureList
|
||||
void LLViewerFetchedTexture::destroyTexture()
|
||||
{
|
||||
//if(LLImageGL::sGlobalTextureMemoryInBytes < sMaxDesiredTextureMemInBytes)//not ready to release unused memory.
|
||||
//{
|
||||
// return ;
|
||||
//}
|
||||
if(LLImageGL::sGlobalTextureMemoryInBytes < sMaxDesiredTextureMemInBytes * 0.95f)//not ready to release unused memory.
|
||||
{
|
||||
return ;
|
||||
}
|
||||
if (mNeedsCreateTexture)//return if in the process of generating a new texture.
|
||||
{
|
||||
return ;
|
||||
|
|
@ -1290,7 +1290,12 @@ void LLViewerFetchedTexture::addToCreateTexture()
|
|||
destroyRawImage();
|
||||
return ;
|
||||
}
|
||||
mRawImage->scale(w >> i, h >> i) ;
|
||||
|
||||
{
|
||||
//make a duplicate in case somebody else is using this raw image
|
||||
mRawImage = mRawImage->duplicate();
|
||||
mRawImage->scale(w >> i, h >> i) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1521,7 +1526,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
|
|||
else if (pixel_priority < 0.001f && !have_all_data)
|
||||
{
|
||||
// Not on screen but we might want some data
|
||||
if (mBoostLevel > BOOST_HIGH)
|
||||
if (mBoostLevel > BOOST_SELECTED)
|
||||
{
|
||||
// Always want high boosted images
|
||||
priority = 1.f;
|
||||
|
|
@ -2669,7 +2674,11 @@ void LLViewerFetchedTexture::setCachedRawImage()
|
|||
--i ;
|
||||
}
|
||||
|
||||
mRawImage->scale(w >> i, h >> i) ;
|
||||
{
|
||||
//make a duplicate in case somebody else is using this raw image
|
||||
mRawImage = mRawImage->duplicate();
|
||||
mRawImage->scale(w >> i, h >> i) ;
|
||||
}
|
||||
}
|
||||
mCachedRawImage = mRawImage ;
|
||||
mRawDiscardLevel += i ;
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ public:
|
|||
INVALID_TEXTURE_TYPE
|
||||
};
|
||||
|
||||
|
||||
typedef std::vector<LLFace*> ll_face_list_t;
|
||||
typedef std::vector<LLVOVolume*> ll_volume_list_t;
|
||||
|
||||
|
|
|
|||
|
|
@ -229,7 +229,9 @@ LLFrameTimer gAwayTriggerTimer;
|
|||
BOOL gShowOverlayTitle = FALSE;
|
||||
|
||||
LLViewerObject* gDebugRaycastObject = NULL;
|
||||
LLVOPartGroup* gDebugRaycastParticle = NULL;
|
||||
LLVector4a gDebugRaycastIntersection;
|
||||
LLVector3 gDebugRaycastParticleIntersection;
|
||||
LLVector2 gDebugRaycastTexCoord;
|
||||
LLVector4a gDebugRaycastNormal;
|
||||
LLVector4a gDebugRaycastTangent;
|
||||
|
|
@ -2844,6 +2846,8 @@ void LLViewerWindow::updateUI()
|
|||
&gDebugRaycastTangent,
|
||||
&gDebugRaycastStart,
|
||||
&gDebugRaycastEnd);
|
||||
|
||||
gDebugRaycastParticle = gPipeline.lineSegmentIntersectParticle(gDebugRaycastStart, gDebugRaycastEnd, &gDebugRaycastParticleIntersection, NULL);
|
||||
}
|
||||
|
||||
updateMouseDelta();
|
||||
|
|
@ -3664,7 +3668,7 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback
|
|||
pick_transparent = TRUE;
|
||||
}
|
||||
|
||||
LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, TRUE, callback);
|
||||
LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, FALSE, TRUE, callback);
|
||||
schedulePick(pick_info);
|
||||
}
|
||||
|
||||
|
|
@ -3720,7 +3724,7 @@ void LLViewerWindow::returnEmptyPicks()
|
|||
}
|
||||
|
||||
// Performs the GL object/land pick.
|
||||
LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent)
|
||||
LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_transparent, BOOL pick_particle)
|
||||
{
|
||||
BOOL in_build_mode = LLFloaterReg::instanceVisible("build");
|
||||
if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha)
|
||||
|
|
@ -3729,10 +3733,10 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, BOOL pick_trans
|
|||
// "Show Debug Alpha" means no object actually transparent
|
||||
pick_transparent = TRUE;
|
||||
}
|
||||
|
||||
|
||||
// shortcut queueing in mPicks and just update mLastPick in place
|
||||
MASK key_mask = gKeyboard->currentMask(TRUE);
|
||||
mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, TRUE, NULL);
|
||||
mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_particle, TRUE, NULL);
|
||||
mLastPick.fetchResults();
|
||||
|
||||
return mLastPick;
|
||||
|
|
@ -4291,7 +4295,8 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
F32 scale_factor = 1.0f ;
|
||||
if (!keep_window_aspect || (image_width > window_width) || (image_height > window_height))
|
||||
{
|
||||
if ((image_width > window_width || image_height > window_height) && LLPipeline::sRenderDeferred && !show_ui)
|
||||
if ((image_width <= gGLManager.mGLMaxTextureSize && image_height <= gGLManager.mGLMaxTextureSize) &&
|
||||
(image_width > window_width || image_height > window_height) && LLPipeline::sRenderDeferred && !show_ui)
|
||||
{
|
||||
if (scratch_space.allocate(image_width, image_height, GL_RGBA, true, true))
|
||||
{
|
||||
|
|
@ -4306,6 +4311,8 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
snapshot_height = image_height;
|
||||
reset_deferred = true;
|
||||
mWorldViewRectRaw.set(0, image_height, image_width, 0);
|
||||
LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRectRaw.getHeight() );
|
||||
LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() );
|
||||
scratch_space.bindTarget();
|
||||
}
|
||||
else
|
||||
|
|
@ -4515,6 +4522,8 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
if (reset_deferred)
|
||||
{
|
||||
mWorldViewRectRaw = window_rect;
|
||||
LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRectRaw.getHeight() );
|
||||
LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() );
|
||||
scratch_space.flush();
|
||||
scratch_space.release();
|
||||
gPipeline.allocateScreenBuffer(original_width, original_height);
|
||||
|
|
@ -5128,13 +5137,15 @@ LLPickInfo::LLPickInfo()
|
|||
mTangent(),
|
||||
mBinormal(),
|
||||
mHUDIcon(NULL),
|
||||
mPickTransparent(FALSE)
|
||||
mPickTransparent(FALSE),
|
||||
mPickParticle(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,
|
||||
MASK keyboard_mask,
|
||||
BOOL pick_transparent,
|
||||
BOOL pick_particle,
|
||||
BOOL pick_uv_coords,
|
||||
void (*pick_callback)(const LLPickInfo& pick_info))
|
||||
: mMousePt(mouse_pos),
|
||||
|
|
@ -5150,7 +5161,8 @@ LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,
|
|||
mTangent(),
|
||||
mBinormal(),
|
||||
mHUDIcon(NULL),
|
||||
mPickTransparent(pick_transparent)
|
||||
mPickTransparent(pick_transparent),
|
||||
mPickParticle(pick_particle)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -5168,6 +5180,10 @@ void LLPickInfo::fetchResults()
|
|||
LLVector4a origin;
|
||||
origin.load3(LLViewerCamera::getInstance()->getOrigin().mV);
|
||||
F32 icon_dist = 0.f;
|
||||
LLVector3 start;
|
||||
LLVector3 end;
|
||||
LLVector3 particle_end;
|
||||
|
||||
if (hit_icon)
|
||||
{
|
||||
LLVector4a delta;
|
||||
|
|
@ -5177,14 +5193,24 @@ void LLPickInfo::fetchResults()
|
|||
|
||||
LLViewerObject* hit_object = gViewerWindow->cursorIntersect(mMousePt.mX, mMousePt.mY, 512.f,
|
||||
NULL, -1, mPickTransparent, &face_hit,
|
||||
&intersection, &uv, &normal, &tangent);
|
||||
&intersection, &uv, &normal, &tangent, &start, &end);
|
||||
|
||||
mPickPt = mMousePt;
|
||||
|
||||
U32 te_offset = face_hit > -1 ? face_hit : 0;
|
||||
|
||||
//unproject relative clicked coordinate from window coordinate using GL
|
||||
|
||||
if (mPickParticle)
|
||||
{ //get the end point of line segement to use for particle raycast
|
||||
if (hit_object)
|
||||
{
|
||||
particle_end = intersection;
|
||||
}
|
||||
else
|
||||
{
|
||||
particle_end = end;
|
||||
}
|
||||
}
|
||||
|
||||
LLViewerObject* objectp = hit_object;
|
||||
|
||||
|
||||
|
|
@ -5199,6 +5225,7 @@ void LLPickInfo::fetchResults()
|
|||
mHUDIcon = hit_icon;
|
||||
mPickType = PICK_ICON;
|
||||
mPosGlobal = mHUDIcon->getPositionGlobal();
|
||||
|
||||
}
|
||||
else if (objectp)
|
||||
{
|
||||
|
|
@ -5248,6 +5275,18 @@ void LLPickInfo::fetchResults()
|
|||
}
|
||||
}
|
||||
|
||||
if (mPickParticle)
|
||||
{ //search for closest particle to click origin out to intersection point
|
||||
S32 part_face = -1;
|
||||
|
||||
LLVOPartGroup* group = gPipeline.lineSegmentIntersectParticle(start, particle_end, NULL, &part_face);
|
||||
if (group)
|
||||
{
|
||||
mParticleOwnerID = group->getPartOwner(part_face);
|
||||
mParticleSourceID = group->getPartSource(part_face);
|
||||
}
|
||||
}
|
||||
|
||||
if (mPickCallback)
|
||||
{
|
||||
mPickCallback(*this);
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ class LLWindow;
|
|||
class LLRootView;
|
||||
class LLWindowListener;
|
||||
class LLViewerWindowListener;
|
||||
class LLVOPartGroup;
|
||||
class LLPopupView;
|
||||
|
||||
#define PICK_HALF_WIDTH 5
|
||||
|
|
@ -87,7 +88,8 @@ public:
|
|||
LLPickInfo();
|
||||
LLPickInfo(const LLCoordGL& mouse_pos,
|
||||
MASK keyboard_mask,
|
||||
BOOL pick_transparent,
|
||||
BOOL pick_transparent,
|
||||
BOOL pick_particle,
|
||||
BOOL pick_surface_info,
|
||||
void (*pick_callback)(const LLPickInfo& pick_info));
|
||||
|
||||
|
|
@ -108,6 +110,8 @@ public:
|
|||
LLVector3d mPosGlobal;
|
||||
LLVector3 mObjectOffset;
|
||||
LLUUID mObjectID;
|
||||
LLUUID mParticleOwnerID;
|
||||
LLUUID mParticleSourceID;
|
||||
S32 mObjectFace;
|
||||
LLHUDIcon* mHUDIcon;
|
||||
LLVector3 mIntersection;
|
||||
|
|
@ -118,6 +122,7 @@ public:
|
|||
LLVector4 mTangent;
|
||||
LLVector3 mBinormal;
|
||||
BOOL mPickTransparent;
|
||||
BOOL mPickParticle;
|
||||
void getSurfaceInfo();
|
||||
|
||||
private:
|
||||
|
|
@ -356,7 +361,7 @@ public:
|
|||
void returnEmptyPicks();
|
||||
|
||||
void pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE);
|
||||
LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent);
|
||||
LLPickInfo pickImmediate(S32 x, S32 y, BOOL pick_transparent, BOOL pick_particle = FALSE);
|
||||
LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth,
|
||||
LLVector4a* intersection);
|
||||
|
||||
|
|
@ -501,6 +506,8 @@ extern LLFrameTimer gAwayTriggerTimer; // how long the avatar has been away
|
|||
|
||||
extern LLViewerObject* gDebugRaycastObject;
|
||||
extern LLVector4a gDebugRaycastIntersection;
|
||||
extern LLVOPartGroup* gDebugRaycastParticle;
|
||||
extern LLVector3 gDebugRaycastParticleIntersection;
|
||||
extern LLVector2 gDebugRaycastTexCoord;
|
||||
extern LLVector4a gDebugRaycastNormal;
|
||||
extern LLVector4a gDebugRaycastTangent;
|
||||
|
|
|
|||
|
|
@ -234,6 +234,37 @@ LLDrawable* LLVOPartGroup::createDrawable(LLPipeline *pipeline)
|
|||
|
||||
const F32 MAX_PARTICLE_AREA_SCALE = 0.02f; // some tuned constant, limits on how much particle area to draw
|
||||
|
||||
LLUUID LLVOPartGroup::getPartOwner(S32 idx)
|
||||
{
|
||||
LLUUID ret = LLUUID::null;
|
||||
|
||||
if (idx < (S32) mViewerPartGroupp->mParticles.size())
|
||||
{
|
||||
ret = mViewerPartGroupp->mParticles[idx]->mPartSourcep->getOwnerUUID();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
LLUUID LLVOPartGroup::getPartSource(S32 idx)
|
||||
{
|
||||
LLUUID ret = LLUUID::null;
|
||||
|
||||
if (idx < (S32) mViewerPartGroupp->mParticles.size())
|
||||
{
|
||||
LLViewerPart* part = mViewerPartGroupp->mParticles[idx];
|
||||
if (part && part->mPartSourcep.notNull() &&
|
||||
part->mPartSourcep->mSourceObjectp.notNull())
|
||||
{
|
||||
LLViewerObject* source = part->mPartSourcep->mSourceObjectp;
|
||||
ret = source->getID();
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
F32 LLVOPartGroup::getPartSize(S32 idx)
|
||||
{
|
||||
if (idx < (S32) mViewerPartGroupp->mParticles.size())
|
||||
|
|
@ -387,20 +418,68 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void LLVOPartGroup::getGeometry(S32 idx,
|
||||
LLStrider<LLVector4a>& verticesp,
|
||||
LLStrider<LLVector3>& normalsp,
|
||||
LLStrider<LLVector2>& texcoordsp,
|
||||
LLStrider<LLColor4U>& colorsp,
|
||||
LLStrider<U16>& indicesp)
|
||||
|
||||
BOOL LLVOPartGroup::lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face,
|
||||
BOOL pick_transparent,
|
||||
S32* face_hit,
|
||||
LLVector3* intersection,
|
||||
LLVector2* tex_coord,
|
||||
LLVector3* normal,
|
||||
LLVector3* bi_normal)
|
||||
{
|
||||
if (idx >= (S32) mViewerPartGroupp->mParticles.size())
|
||||
LLVector4a starta, enda;
|
||||
starta.load3(start.mV);
|
||||
enda.load3(end.mV);
|
||||
|
||||
LLVector4a dir;
|
||||
dir.setSub(enda, starta);
|
||||
|
||||
F32 closest_t = 2.f;
|
||||
BOOL ret = FALSE;
|
||||
|
||||
for (U32 idx = 0; idx < mViewerPartGroupp->mParticles.size(); ++idx)
|
||||
{
|
||||
return;
|
||||
const LLViewerPart &part = *((LLViewerPart*) (mViewerPartGroupp->mParticles[idx]));
|
||||
|
||||
LLVector4a v[4];
|
||||
LLStrider<LLVector4a> verticesp;
|
||||
verticesp = v;
|
||||
|
||||
getGeometry(part, verticesp);
|
||||
|
||||
F32 a,b,t;
|
||||
if (LLTriangleRayIntersect(v[0], v[1], v[2], starta, dir, a,b,t) ||
|
||||
LLTriangleRayIntersect(v[1], v[3], v[2], starta, dir, a,b,t))
|
||||
{
|
||||
if (t >= 0.f &&
|
||||
t <= 1.f &&
|
||||
t < closest_t)
|
||||
{
|
||||
ret = TRUE;
|
||||
closest_t = t;
|
||||
if (face_hit)
|
||||
{
|
||||
*face_hit = idx;
|
||||
}
|
||||
|
||||
if (intersection)
|
||||
{
|
||||
LLVector4a intersect = dir;
|
||||
intersect.mul(closest_t);
|
||||
intersect.add(starta);
|
||||
intersection->set(intersect.getF32ptr());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const LLViewerPart &part = *((LLViewerPart*) (mViewerPartGroupp->mParticles[idx]));
|
||||
return ret;
|
||||
}
|
||||
|
||||
void LLVOPartGroup::getGeometry(const LLViewerPart& part,
|
||||
LLStrider<LLVector4a>& verticesp)
|
||||
{
|
||||
LLVector4a part_pos_agent;
|
||||
part_pos_agent.load3(part.mPosAgent.mV);
|
||||
LLVector4a camera_agent;
|
||||
|
|
@ -452,8 +531,6 @@ void LLVOPartGroup::getGeometry(S32 idx,
|
|||
up.mul(0.5f*part.mScale.mV[1]);
|
||||
|
||||
|
||||
LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis();
|
||||
|
||||
//HACK -- the verticesp->mV[3] = 0.f here are to set the texture index to 0 (particles don't use texture batching, maybe they should)
|
||||
// this works because there is actually a 4th float stored after the vertex position which is used as a texture index
|
||||
// also, somebody please VECTORIZE THIS
|
||||
|
|
@ -472,6 +549,25 @@ void LLVOPartGroup::getGeometry(S32 idx,
|
|||
(*verticesp++).getF32ptr()[3] = 0.f;
|
||||
verticesp->setAdd(ppamu, right);
|
||||
(*verticesp++).getF32ptr()[3] = 0.f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LLVOPartGroup::getGeometry(S32 idx,
|
||||
LLStrider<LLVector4a>& verticesp,
|
||||
LLStrider<LLVector3>& normalsp,
|
||||
LLStrider<LLVector2>& texcoordsp,
|
||||
LLStrider<LLColor4U>& colorsp,
|
||||
LLStrider<U16>& indicesp)
|
||||
{
|
||||
if (idx >= (S32) mViewerPartGroupp->mParticles.size())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const LLViewerPart &part = *((LLViewerPart*) (mViewerPartGroupp->mParticles[idx]));
|
||||
|
||||
getGeometry(part, verticesp);
|
||||
|
||||
*colorsp++ = part.mColor;
|
||||
*colorsp++ = part.mColor;
|
||||
|
|
@ -480,6 +576,7 @@ void LLVOPartGroup::getGeometry(S32 idx,
|
|||
|
||||
if (!(part.mFlags & LLPartData::LL_PART_EMISSIVE_MASK))
|
||||
{ //not fullbright, needs normal
|
||||
LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis();
|
||||
*normalsp++ = normal;
|
||||
*normalsp++ = normal;
|
||||
*normalsp++ = normal;
|
||||
|
|
|
|||
|
|
@ -69,11 +69,23 @@ public:
|
|||
virtual void updateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax);
|
||||
virtual U32 getPartitionType() const;
|
||||
|
||||
/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,
|
||||
S32 face,
|
||||
BOOL pick_transparent,
|
||||
S32* face_hit,
|
||||
LLVector3* intersection,
|
||||
LLVector2* tex_coord,
|
||||
LLVector3* normal,
|
||||
LLVector3* bi_normal);
|
||||
|
||||
/*virtual*/ void setPixelAreaAndAngle(LLAgent &agent);
|
||||
/*virtual*/ void updateTextures();
|
||||
|
||||
/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
|
||||
/*virtual*/ BOOL updateGeometry(LLDrawable *drawable);
|
||||
void getGeometry(const LLViewerPart& part,
|
||||
LLStrider<LLVector4a>& verticesp);
|
||||
|
||||
void getGeometry(S32 idx,
|
||||
LLStrider<LLVector4a>& verticesp,
|
||||
LLStrider<LLVector3>& normalsp,
|
||||
|
|
@ -83,6 +95,9 @@ public:
|
|||
|
||||
void updateFaceSize(S32 idx) { }
|
||||
F32 getPartSize(S32 idx);
|
||||
LLUUID getPartOwner(S32 idx);
|
||||
LLUUID getPartSource(S32 idx);
|
||||
|
||||
void setViewerPartGroup(LLViewerPartGroup *part_groupp) { mViewerPartGroupp = part_groupp; }
|
||||
LLViewerPartGroup* getViewerPartGroup() { return mViewerPartGroupp; }
|
||||
|
||||
|
|
|
|||
|
|
@ -1113,7 +1113,13 @@ void LLVOVolume::sculpt()
|
|||
|
||||
S32 max_discard = mSculptTexture->getMaxDiscardLevel();
|
||||
if (discard_level > max_discard)
|
||||
discard_level = max_discard; // clamp to the best we can do
|
||||
{
|
||||
discard_level = max_discard; // clamp to the best we can do
|
||||
}
|
||||
if(discard_level > MAX_DISCARD_LEVEL)
|
||||
{
|
||||
return; //we think data is not ready yet.
|
||||
}
|
||||
|
||||
S32 current_discard = getVolume()->getSculptLevel() ;
|
||||
if(current_discard < -2)
|
||||
|
|
@ -4828,7 +4834,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
|
||||
if (is_rigged)
|
||||
{
|
||||
drawablep->setState(LLDrawable::RIGGED);
|
||||
if (!drawablep->isState(LLDrawable::RIGGED))
|
||||
{
|
||||
drawablep->setState(LLDrawable::RIGGED);
|
||||
|
||||
//first time this is drawable is being marked as rigged,
|
||||
// do another LoD update to use avatar bounding box
|
||||
vobj->updateLOD();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -310,6 +310,8 @@ static void normalize3(F32 v[3])
|
|||
|
||||
static void init(void)
|
||||
{
|
||||
// we want repeatable noise (e.g. for stable terrain texturing), so seed with known value
|
||||
srand(42);
|
||||
int i, j, k;
|
||||
|
||||
for (i = 0 ; i < B ; i++) {
|
||||
|
|
@ -340,6 +342,9 @@ static void init(void)
|
|||
for (j = 0 ; j < 3 ; j++)
|
||||
g3[B + i][j] = g3[i][j];
|
||||
}
|
||||
|
||||
// reintroduce entropy
|
||||
srand(time(NULL)); // Flawfinder: ignore
|
||||
}
|
||||
|
||||
#undef B
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ S32 LLPipeline::RenderGlowIterations;
|
|||
F32 LLPipeline::RenderGlowWidth;
|
||||
F32 LLPipeline::RenderGlowStrength;
|
||||
BOOL LLPipeline::RenderDepthOfField;
|
||||
BOOL LLPipeline::RenderDepthOfFieldInEditMode;
|
||||
F32 LLPipeline::CameraFocusTransitionTime;
|
||||
F32 LLPipeline::CameraFNumber;
|
||||
F32 LLPipeline::CameraFocalLength;
|
||||
|
|
@ -615,6 +616,7 @@ void LLPipeline::init()
|
|||
connectRefreshCachedSettingsSafe("RenderGlowWidth");
|
||||
connectRefreshCachedSettingsSafe("RenderGlowStrength");
|
||||
connectRefreshCachedSettingsSafe("RenderDepthOfField");
|
||||
connectRefreshCachedSettingsSafe("RenderDepthOfFieldInEditMode");
|
||||
connectRefreshCachedSettingsSafe("CameraFocusTransitionTime");
|
||||
connectRefreshCachedSettingsSafe("CameraFNumber");
|
||||
connectRefreshCachedSettingsSafe("CameraFocalLength");
|
||||
|
|
@ -1116,6 +1118,7 @@ void LLPipeline::refreshCachedSettings()
|
|||
RenderGlowWidth = gSavedSettings.getF32("RenderGlowWidth");
|
||||
RenderGlowStrength = gSavedSettings.getF32("RenderGlowStrength");
|
||||
RenderDepthOfField = gSavedSettings.getBOOL("RenderDepthOfField");
|
||||
RenderDepthOfFieldInEditMode = gSavedSettings.getBOOL("RenderDepthOfFieldInEditMode");
|
||||
CameraFocusTransitionTime = gSavedSettings.getF32("CameraFocusTransitionTime");
|
||||
CameraFNumber = gSavedSettings.getF32("CameraFNumber");
|
||||
CameraFocalLength = gSavedSettings.getF32("CameraFocalLength");
|
||||
|
|
@ -4772,18 +4775,6 @@ void LLPipeline::renderPhysicsDisplay()
|
|||
}
|
||||
}
|
||||
|
||||
for (LLCullResult::bridge_iterator i = sCull->beginVisibleBridge(); i != sCull->endVisibleBridge(); ++i)
|
||||
{
|
||||
LLSpatialBridge* bridge = *i;
|
||||
if (!bridge->isDead() && hasRenderType(bridge->mDrawableType))
|
||||
{
|
||||
gGL.pushMatrix();
|
||||
gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
|
||||
bridge->renderPhysicsShapes();
|
||||
gGL.popMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
gGL.flush();
|
||||
|
||||
if (LLGLSLShader::sNoFixedFunction)
|
||||
|
|
@ -5209,6 +5200,42 @@ void LLPipeline::renderDebug()
|
|||
gUIProgram.bind();
|
||||
}
|
||||
|
||||
if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_RAYCAST) && !hud_only)
|
||||
{ //draw crosshairs on particle intersection
|
||||
if (gDebugRaycastParticle)
|
||||
{
|
||||
if (LLGLSLShader::sNoFixedFunction)
|
||||
{ //this debug display requires shaders
|
||||
gDebugProgram.bind();
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
|
||||
LLVector3 center = gDebugRaycastParticleIntersection;
|
||||
LLVector3 size(0.1f, 0.1f, 0.1f);
|
||||
|
||||
LLVector3 p[6];
|
||||
|
||||
p[0] = center + size.scaledVec(LLVector3(1,0,0));
|
||||
p[1] = center + size.scaledVec(LLVector3(-1,0,0));
|
||||
p[2] = center + size.scaledVec(LLVector3(0,1,0));
|
||||
p[3] = center + size.scaledVec(LLVector3(0,-1,0));
|
||||
p[4] = center + size.scaledVec(LLVector3(0,0,1));
|
||||
p[5] = center + size.scaledVec(LLVector3(0,0,-1));
|
||||
|
||||
gGL.begin(LLRender::LINES);
|
||||
gGL.diffuseColor3f(1.f, 1.f, 0.f);
|
||||
for (U32 i = 0; i < 6; i++)
|
||||
{
|
||||
gGL.vertex3fv(p[i].mV);
|
||||
}
|
||||
gGL.end();
|
||||
gGL.flush();
|
||||
|
||||
gDebugProgram.unbind();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
|
||||
{
|
||||
LLVertexBuffer::unbind();
|
||||
|
|
@ -6889,7 +6916,49 @@ void LLPipeline::setRenderHighlightTextureChannel(LLRender::eTexIndex channel)
|
|||
sRenderHighlightTextureChannel = channel;
|
||||
}
|
||||
|
||||
LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector4a& start, const LLVector4a& end,
|
||||
LLVOPartGroup* LLPipeline::lineSegmentIntersectParticle(const LLVector3& start, const LLVector3& end, LLVector3* intersection,
|
||||
S32* face_hit)
|
||||
{
|
||||
LLVector3 local_end = end;
|
||||
|
||||
LLVector3 position;
|
||||
|
||||
LLDrawable* drawable = NULL;
|
||||
|
||||
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
|
||||
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
|
||||
{
|
||||
LLViewerRegion* region = *iter;
|
||||
|
||||
LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_PARTICLE);
|
||||
if (part && hasRenderType(part->mDrawableType))
|
||||
{
|
||||
LLDrawable* hit = part->lineSegmentIntersect(start, local_end, TRUE, face_hit, &position, NULL, NULL, NULL);
|
||||
if (hit)
|
||||
{
|
||||
drawable = hit;
|
||||
local_end = position;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLVOPartGroup* ret = NULL;
|
||||
if (drawable)
|
||||
{
|
||||
//make sure we're returning an LLVOPartGroup
|
||||
llassert(drawable->getVObj()->getPCode() == LLViewerObject::LL_VO_PART_GROUP);
|
||||
ret = (LLVOPartGroup*) drawable->getVObj().get();
|
||||
}
|
||||
|
||||
if (intersection)
|
||||
{
|
||||
*intersection = position;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start, const LLVector3& end,
|
||||
BOOL pick_transparent,
|
||||
S32* face_hit,
|
||||
LLVector4a* intersection, // return the intersection point
|
||||
|
|
@ -7448,7 +7517,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
|
|||
{
|
||||
|
||||
bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater() &&
|
||||
!LLToolMgr::getInstance()->inBuildMode() &&
|
||||
(RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) &&
|
||||
RenderDepthOfField;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ class LLRenderFunc;
|
|||
class LLCubeMap;
|
||||
class LLCullResult;
|
||||
class LLVOAvatar;
|
||||
class LLVOPartGroup;
|
||||
class LLGLSLShader;
|
||||
class LLCurlRequest;
|
||||
class LLDrawPoolAlpha;
|
||||
|
|
@ -196,7 +197,13 @@ public:
|
|||
LLVector4a* normal = NULL, // return the surface normal at the intersection point
|
||||
LLVector4a* tangent = NULL // return the surface tangent at the intersection point
|
||||
);
|
||||
LLViewerObject* lineSegmentIntersectInHUD(const LLVector4a& start, const LLVector4a& end,
|
||||
|
||||
//get the closest particle to start between start and end, returns the LLVOPartGroup and particle index
|
||||
LLVOPartGroup* lineSegmentIntersectParticle(const LLVector3& start, const LLVector3& end, LLVector3* intersection,
|
||||
S32* face_hit);
|
||||
|
||||
|
||||
LLViewerObject* lineSegmentIntersectInHUD(const LLVector3& start, const LLVector3& end,
|
||||
BOOL pick_transparent,
|
||||
S32* face_hit, // return the face hit
|
||||
LLVector4a* intersection = NULL, // return the intersection point
|
||||
|
|
@ -902,6 +909,7 @@ public:
|
|||
static F32 RenderGlowWidth;
|
||||
static F32 RenderGlowStrength;
|
||||
static BOOL RenderDepthOfField;
|
||||
static BOOL RenderDepthOfFieldInEditMode;
|
||||
static F32 CameraFocusTransitionTime;
|
||||
static F32 CameraFNumber;
|
||||
static F32 CameraFocalLength;
|
||||
|
|
|
|||
|
|
@ -112,4 +112,15 @@
|
|||
<menu_item_call.on_enable
|
||||
function="Object.EnableInspect" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -143,4 +143,15 @@ name="Edit Outfit">
|
|||
<menu_item_call.on_enable
|
||||
function="Attachment.EnableDrop" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -103,4 +103,15 @@
|
|||
<menu_item_call.on_enable
|
||||
function="EnablePayAvatar" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -269,4 +269,16 @@
|
|||
<menu_item_call.on_visible
|
||||
function="Advanced.EnableAppearanceToXML"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -61,4 +61,15 @@
|
|||
<menu_item_call.on_enable
|
||||
function="EnableEdit" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<!-- *NOTE: See also menu_attachment_other.xml -->
|
||||
<context_menu
|
||||
layout="topleft"
|
||||
name="Mute Particle Pie">
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
@ -196,4 +196,15 @@
|
|||
<menu_item_call.on_enable
|
||||
function="Object.EnableDelete" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator
|
||||
layout="topleft" />
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Mute Particle Owner"
|
||||
name="Mute Particle">
|
||||
<menu_item_call.on_click
|
||||
function="Particle.Mute" />
|
||||
<menu_item_call.on_enable
|
||||
function="EnableMuteParticle" />
|
||||
</menu_item_call>
|
||||
</context_menu>
|
||||
|
|
|
|||
|
|
@ -6804,7 +6804,6 @@ This will add a bookmark in your inventory so you can quickly IM this Resident.
|
|||
name="RegionRestartMinutes"
|
||||
priority="high"
|
||||
sound="UISndAlert"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This region will restart in [MINUTES] minutes.
|
||||
If you stay in this region you will be logged out.
|
||||
|
|
@ -6815,7 +6814,6 @@ If you stay in this region you will be logged out.
|
|||
name="RegionRestartSeconds"
|
||||
priority="high"
|
||||
sound="UISndAlert"
|
||||
persist="true"
|
||||
type="notify">
|
||||
This region will restart in [SECONDS] seconds.
|
||||
If you stay in this region you will be logged out.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
Better
|
||||
</text>
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
|
|
@ -56,16 +56,15 @@
|
|||
top_delta="-2"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="41"
|
||||
name="LowMidraphicsDivet"
|
||||
top_delta="-2"
|
||||
name="LowMidGraphicsDivet"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
|
|
@ -74,7 +73,7 @@
|
|||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
|
|
@ -83,7 +82,7 @@
|
|||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
|
|
@ -92,7 +91,7 @@
|
|||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
|
|
@ -101,7 +100,7 @@
|
|||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
color="DkGray"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
|
|
|
|||
|
|
@ -70,8 +70,8 @@
|
|||
longdescription="Toggle 'Show Place in Search' and setting a parcel's category in About Land > Options tab."
|
||||
name="land find places" value="17" />
|
||||
<action
|
||||
description="Change parcel name, description, and 'Show Place in Search' settings"
|
||||
longdescription="Change parcel name, description, and 'Show Place in Search' settings. This is done in About Land > Options tab."
|
||||
description="Change parcel name, description, and 'Moderate Content' settings"
|
||||
longdescription="Change parcel name, description, and 'Moderate Content' settings. This is done in About Land > Options tab."
|
||||
name="land change identity" value="18" />
|
||||
<action description="Set landing point and set teleport routing"
|
||||
longdescription="On a group-owned parcel, Members in a Role with this Ability can set a landing point to specify where incoming teleports arrive, and also set teleport routing for further control. This is done in About Land > Options tab."
|
||||
|
|
|
|||
|
|
@ -2515,6 +2515,8 @@ Drag folders to this area and click "Send to Marketplace" to list them for sale
|
|||
<string name="ATTACH_HUD_BOTTOM_LEFT">HUD Bottom Left</string>
|
||||
<string name="ATTACH_HUD_BOTTOM">HUD Bottom</string>
|
||||
<string name="ATTACH_HUD_BOTTOM_RIGHT">HUD Bottom Right</string>
|
||||
<string name="ATTACH_NECK">Neck</string>
|
||||
<string name="ATTACH_AVATAR_CENTER">Avatar Center</string>
|
||||
|
||||
<!-- script editor -->
|
||||
<string name="CursorPos">Line [LINE], Column [COLUMN]</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue