summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/app_settings/settings.xml192
-rw-r--r--indra/newview/llappviewer.cpp74
-rw-r--r--indra/newview/llface.cpp65
-rw-r--r--indra/newview/llface.h3
-rw-r--r--indra/newview/lltexlayer.cpp4
-rw-r--r--indra/newview/lltexturefetch.cpp2
-rw-r--r--indra/newview/llviewertexture.cpp136
-rw-r--r--indra/newview/llviewertexture.h2
-rw-r--r--indra/newview/llvoavatar.cpp8
-rw-r--r--indra/newview/llvoavatarself.cpp5
-rw-r--r--indra/newview/llvotree.cpp33
-rw-r--r--indra/newview/llwearable.cpp7
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml186
13 files changed, 292 insertions, 425 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 4c52fb015f..51ed26505e 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1741,6 +1741,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>DebugAvatarLocalTexLoadedTime</key>
+ <map>
+ <key>Comment</key>
+ <string>Display time for loading avatar local textures.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>DebugBeaconLineWidth</key>
<map>
<key>Comment</key>
@@ -5373,6 +5384,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>MultipleAttachments</key>
+ <map>
+ <key>Comment</key>
+ <string>Allow multiple objects to be attached to a single attachment point.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>MuteAmbient</key>
<map>
<key>Comment</key>
@@ -6737,7 +6759,7 @@
<key>Type</key>
<string>U32</string>
<key>Value</key>
- <integer>200</integer>
+ <integer>60</integer>
</map>
<key>RenderSSAOFactor</key>
<map>
@@ -7112,64 +7134,6 @@
<real>0.01</real>
</map>
- <key>RenderShadowBiasError</key>
- <map>
- <key>Comment</key>
- <string>Error scale for shadow bias (based on altitude).</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0</real>
- </map>
- <key>RenderShadowOffsetError</key>
- <map>
- <key>Comment</key>
- <string>Error scale for shadow offset (based on altitude).</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0</real>
- </map>
-
- <key>RenderSpotLightsInNondeferred</key>
- <map>
- <key>Comment</key>
- <string>Whether to support projectors as spotlights when Lighting and Shadows is disabled</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
-
- <key>RenderSpotShadowBias</key>
- <map>
- <key>Comment</key>
- <string>Bias value for shadows (prevent shadow acne).</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.0</real>
- </map>
- <key>RenderSpotShadowOffset</key>
- <map>
- <key>Comment</key>
- <string>Offset value for shadows (prevent shadow acne).</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>F32</string>
- <key>Value</key>
- <real>0.04</real>
- </map>
-
<key>RenderShadowResolutionScale</key>
<map>
<key>Comment</key>
@@ -7182,6 +7146,8 @@
<real>1.0</real>
</map>
+
+
<key>RenderDeferredTreeShadowBias</key>
<map>
<key>Comment</key>
@@ -7303,7 +7269,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <real>8</real>
+ <real>1</real>
</map>
<key>RenderDeferred</key>
@@ -7318,6 +7284,18 @@
<integer>0</integer>
</map>
+ <key>RenderDeferredShadow</key>
+ <map>
+ <key>Comment</key>
+ <string>Enable shadows in deferred renderer.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+
<key>RenderDeferredGI</key>
<map>
<key>Comment</key>
@@ -7330,10 +7308,10 @@
<integer>0</integer>
</map>
- <key>RenderDeferredSun</key>
+ <key>RenderDeferredSunShadow</key>
<map>
<key>Comment</key>
- <string>Execute sunlight shader in deferred renderer.</string>
+ <string>Generate shadows from the sun.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7342,10 +7320,10 @@
<integer>1</integer>
</map>
- <key>RenderDeferredAtmospheric</key>
+ <key>RenderDeferredSun</key>
<map>
<key>Comment</key>
- <string>Execute atmospheric shader in deferred renderer.</string>
+ <string>Execute sunlight shader in deferred renderer.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7354,10 +7332,10 @@
<integer>1</integer>
</map>
- <key>RenderDeferredSSAO</key>
+ <key>RenderDeferredAtmospheric</key>
<map>
<key>Comment</key>
- <string>Execute screen space ambient occlusion shader in deferred renderer.</string>
+ <string>Execute atmospheric shader in deferred renderer.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7616,10 +7594,10 @@
<key>Value</key>
<real>256.0</real>
</map>
- <key>RenderAutoMaskAlphaNonDeferred</key>
+ <key>RenderFastAlpha</key>
<map>
<key>Comment</key>
- <string>Use alpha masks where appropriate, in the non-deferred (non-'Lighting and Shadows') graphics mode</string>
+ <string>Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces).</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -7627,17 +7605,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>RenderAutoMaskAlphaDeferred</key>
- <map>
- <key>Comment</key>
- <string>Use alpha masks where appropriate, in the deferred ('Lighting and Shadows') graphics mode</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>RenderFastUI</key>
<map>
<key>Comment</key>
@@ -7899,6 +7866,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>RenderLightingDetail</key>
+ <map>
+ <key>Comment</key>
+ <string>Amount of detail for lighting objects/avatars/terrain (0=sun/moon only, 1=enable local lights)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>RenderMaxPartCount</key>
<map>
<key>Comment</key>
@@ -7998,18 +7976,6 @@
<key>Value</key>
<integer>2</integer>
</map>
- <key>RenderShadowDetail</key>
- <map>
- <key>Comment</key>
- <string>Detail of shadows.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>2</integer>
- </map>
-
<key>RenderReflectionRes</key>
<map>
<key>Comment</key>
@@ -8140,7 +8106,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>RenderUIBuffer</key>
<map>
@@ -8296,10 +8262,10 @@
<key>Value</key>
<integer>512</integer>
</map>
- <key>RotateRight</key>
+ <key>RenderWaterReflections</key>
<map>
<key>Comment</key>
- <string>Make the agent rotate to its right.</string>
+ <string>Reflect the environment in the water.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -8307,27 +8273,27 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>RotationStep</key>
+ <key>RotateRight</key>
<map>
<key>Comment</key>
- <string>All rotations via rotation tool are constrained to multiples of this unit (degrees)</string>
+ <string>Make the agent rotate to its right.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>F32</string>
+ <string>Boolean</string>
<key>Value</key>
- <real>1.0</real>
+ <integer>0</integer>
</map>
- <key>RunMultipleThreads</key>
+ <key>RotationStep</key>
<map>
<key>Comment</key>
- <string>If TRUE keep background threads active during render</string>
+ <string>All rotations via rotation tool are constrained to multiples of this unit (degrees)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>Boolean</string>
+ <string>F32</string>
<key>Value</key>
- <integer>0</integer>
+ <real>1.0</real>
</map>
<key>SafeMode</key>
<map>
@@ -9495,28 +9461,6 @@
<key>Value</key>
<integer>75</integer>
</map>
- <key>SnapshotSharingEnabled</key>
- <map>
- <key>Comment</key>
- <string>Enable uploading of snapshots to a web service.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
- <key>SnapshotConfigURL</key>
- <map>
- <key>Comment</key>
- <string>URL to fetch Snapshot Sharing configuration data from.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>String</string>
- <key>Value</key>
- <string>http://photos.apps.staging.avatarsunited.com/viewer_config</string>
- </map>
<key>SnapshotTextureLastResolution</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index d222d94ec6..d6ecb2f168 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -961,11 +961,6 @@ static LLFastTimer::DeclareTimer FTM_LFS("LFS Thread");
static LLFastTimer::DeclareTimer FTM_PAUSE_THREADS("Pause Threads");
static LLFastTimer::DeclareTimer FTM_IDLE("Idle");
static LLFastTimer::DeclareTimer FTM_PUMP("Pump");
-static LLFastTimer::DeclareTimer FTM_PUMP_ARES("Ares");
-static LLFastTimer::DeclareTimer FTM_PUMP_SERVICE("Service");
-static LLFastTimer::DeclareTimer FTM_SERVICE_CALLBACK("Callback");
-static LLFastTimer::DeclareTimer FTM_AGENT_AUTOPILOT("Autopilot");
-static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE("Update");
bool LLAppViewer::mainLoop()
{
@@ -1075,20 +1070,10 @@ bool LLAppViewer::mainLoop()
LLMemType mt_ip(LLMemType::MTYPE_IDLE_PUMP);
pingMainloopTimeout("Main:ServicePump");
LLFastTimer t4(FTM_PUMP);
- {
- LLFastTimer t(FTM_PUMP_ARES);
- gAres->process();
- }
- {
- LLFastTimer t(FTM_PUMP_SERVICE);
- // this pump is necessary to make the login screen show up
- gServicePump->pump();
-
- {
- LLFastTimer t(FTM_SERVICE_CALLBACK);
- gServicePump->callback();
- }
- }
+ gAres->process();
+ // this pump is necessary to make the login screen show up
+ gServicePump->pump();
+ gServicePump->callback();
}
resumeMainloopTimeout();
@@ -1123,8 +1108,7 @@ bool LLAppViewer::mainLoop()
{
LLMemType mt_sleep(LLMemType::MTYPE_SLEEP);
LLFastTimer t2(FTM_SLEEP);
- bool run_multiple_threads = gSavedSettings.getBOOL("RunMultipleThreads");
-
+
// yield some time to the os based on command line option
if(mYieldTime >= 0)
{
@@ -1162,9 +1146,7 @@ bool LLAppViewer::mainLoop()
}
static const F64 FRAME_SLOW_THRESHOLD = 0.5; //2 frames per seconds
- const F64 min_frame_time = 0.0; //(.0333 - .0010); // max video frame rate = 30 fps
- const F64 min_idle_time = 0.0; //(.0010); // min idle time = 1 ms
- const F64 max_idle_time = run_multiple_threads ? min_idle_time : llmin(.005*10.0*gFrameTimeSeconds, 0.005); // 5 ms a second
+ const F64 max_idle_time = llmin(.005*10.0*gFrameTimeSeconds, 0.005); // 5 ms a second
idleTimer.reset();
bool is_slow = (frameTimer.getElapsedTimeF64() > FRAME_SLOW_THRESHOLD) ;
S32 total_work_pending = 0;
@@ -1202,34 +1184,24 @@ bool LLAppViewer::mainLoop()
total_work_pending += work_pending ;
total_io_pending += io_pending ;
- F64 frame_time = frameTimer.getElapsedTimeF64();
- F64 idle_time = idleTimer.getElapsedTimeF64();
- if (frame_time >= min_frame_time &&
- idle_time >= min_idle_time &&
- (!work_pending || idle_time >= max_idle_time))
+
+ if (!work_pending || idleTimer.getElapsedTimeF64() >= max_idle_time)
{
break;
}
}
- // Prevent the worker threads from running while rendering.
- // if (LLThread::processorCount()==1) //pause() should only be required when on a single processor client...
- if (run_multiple_threads == FALSE)
+ if(!total_work_pending) //pause texture fetching threads if nothing to process.
{
- //LLFastTimer ftm(FTM_PAUSE_THREADS); //not necessary.
-
- if(!total_work_pending) //pause texture fetching threads if nothing to process.
- {
- LLAppViewer::getTextureCache()->pause();
- LLAppViewer::getImageDecodeThread()->pause();
- LLAppViewer::getTextureFetch()->pause();
- }
- if(!total_io_pending) //pause file threads if nothing to process.
- {
- LLVFSThread::sLocal->pause();
- LLLFSThread::sLocal->pause();
- }
- }
+ LLAppViewer::getTextureCache()->pause();
+ LLAppViewer::getImageDecodeThread()->pause();
+ LLAppViewer::getTextureFetch()->pause();
+ }
+ if(!total_io_pending) //pause file threads if nothing to process.
+ {
+ LLVFSThread::sLocal->pause();
+ LLLFSThread::sLocal->pause();
+ }
if ((LLStartUp::getStartupState() >= STATE_CLEANUP) &&
(frameTimer.getElapsedTimeF64() > FRAME_STALL_THRESHOLD))
@@ -3581,12 +3553,9 @@ void LLAppViewer::idle()
gAgent.moveYaw(-1.f);
}
- {
- LLFastTimer t(FTM_AGENT_AUTOPILOT);
- // Handle automatic walking towards points
- gAgentPilot.updateTarget();
- gAgent.autoPilot(&yaw);
- }
+ // Handle automatic walking towards points
+ gAgentPilot.updateTarget();
+ gAgent.autoPilot(&yaw);
static LLFrameTimer agent_update_timer;
static U32 last_control_flags;
@@ -3597,7 +3566,6 @@ void LLAppViewer::idle()
if (flags_changed || (agent_update_time > (1.0f / (F32) AGENT_UPDATES_PER_SECOND)))
{
- LLFastTimer t(FTM_AGENT_UPDATE);
// Send avatar and camera info
last_control_flags = gAgent.getControlFlags();
send_agent_update(TRUE);
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index cfe8b4c9a4..db3d90e0a0 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -862,26 +862,6 @@ void LLFace::updateRebuildFlags()
}
}
-
-bool LLFace::canRenderAsMask()
-{
- const LLTextureEntry* te = getTextureEntry();
- return (
- (
- (LLPipeline::sRenderDeferred && LLPipeline::sAutoMaskAlphaDeferred) ||
-
- (!LLPipeline::sRenderDeferred && LLPipeline::sAutoMaskAlphaNonDeferred)
- ) // do we want masks at all?
- &&
- (te->getColor().mV[3] == 1.0f) && // can't treat as mask if we have face alpha
- !(LLPipeline::sRenderDeferred && te->getFullbright()) && // hack: alpha masking renders fullbright faces invisible in deferred rendering mode, need to figure out why - for now, avoid
- (te->getGlow() == 0.f) && // glowing masks are hard to implement - don't mask
-
- getTexture()->getIsAlphaMask() // texture actually qualifies for masking (lazily recalculated but expensive)
- );
-}
-
-
static LLFastTimer::DeclareTimer FTM_FACE_GET_GEOM("Face Geom");
BOOL LLFace::getGeometryVolume(const LLVolume& volume,
@@ -1412,24 +1392,13 @@ F32 LLFace::getTextureVirtualSize()
face_area = mPixelArea / llclamp(texel_area, 0.015625f, 128.f);
}
- if(face_area > LLViewerTexture::sMaxSmallImageSize)
+ face_area = LLFace::adjustPixelArea(mImportanceToCamera, face_area) ;
+ if(face_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping.
{
- if(mImportanceToCamera < LEAST_IMPORTANCE) //if the face is not important, do not load hi-res.
- {
- static const F32 MAX_LEAST_IMPORTANCE_IMAGE_SIZE = 128.0f * 128.0f ;
- face_area = llmin(face_area * 0.5f, MAX_LEAST_IMPORTANCE_IMAGE_SIZE) ;
- }
- else if(face_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping.
- {
- if(mImportanceToCamera < LEAST_IMPORTANCE_FOR_LARGE_IMAGE)//if the face is not important, do not load hi-res.
- {
- face_area = LLViewerTexture::sMinLargeImageSize ;
- }
- else if(mTexture.notNull() && mTexture->isLargeImage())
- {
- face_area *= adjustPartialOverlapPixelArea(cos_angle_to_view_dir, radius );
- }
- }
+ if(mImportanceToCamera > LEAST_IMPORTANCE_FOR_LARGE_IMAGE && mTexture.notNull() && mTexture->isLargeImage())
+ {
+ face_area *= adjustPartialOverlapPixelArea(cos_angle_to_view_dir, radius );
+ }
}
setVirtualSize(face_area) ;
@@ -1556,6 +1525,28 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist)
return importance ;
}
+//static
+F32 LLFace::adjustPixelArea(F32 importance, F32 pixel_area)
+{
+ if(pixel_area > LLViewerTexture::sMaxSmallImageSize)
+ {
+ if(importance < LEAST_IMPORTANCE) //if the face is not important, do not load hi-res.
+ {
+ static const F32 MAX_LEAST_IMPORTANCE_IMAGE_SIZE = 128.0f * 128.0f ;
+ pixel_area = llmin(pixel_area * 0.5f, MAX_LEAST_IMPORTANCE_IMAGE_SIZE) ;
+ }
+ else if(pixel_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping.
+ {
+ if(importance < LEAST_IMPORTANCE_FOR_LARGE_IMAGE)//if the face is not important, do not load hi-res.
+ {
+ pixel_area = LLViewerTexture::sMinLargeImageSize ;
+ }
+ }
+ }
+
+ return pixel_area ;
+}
+
BOOL LLFace::verify(const U32* indices_array) const
{
BOOL ok = TRUE;
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index b20ecfe2b8..13d3d8824e 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -138,10 +138,10 @@ public:
void unsetFaceColor(); // switch back to material color
const LLColor4& getFaceColor() const { return mFaceColor; }
const LLColor4& getRenderColor() const;
+
//for volumes
void updateRebuildFlags();
- bool canRenderAsMask(); // logic helper
BOOL getGeometryVolume(const LLVolume& volume,
const S32 &f,
const LLMatrix4& mat_vert, const LLMatrix3& mat_normal,
@@ -214,6 +214,7 @@ private:
BOOL calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) ;
public:
static F32 calcImportanceToCamera(F32 to_view_dir, F32 dist);
+ static F32 adjustPixelArea(F32 importance, F32 pixel_area) ;
public:
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 1feb987682..d8b9bc2329 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -581,6 +581,10 @@ void LLTexLayerSetBuffer::doUpdate()
}
restartUpdateTimer();
+
+ // need to swtich to using this layerset if this is the first update
+ // after getting the lowest LOD
+ mTexLayerSet->getAvatar()->updateMeshTextures();
// Print out notification that we uploaded this texture.
if (gSavedSettings.getBOOL("DebugAvatarRezTime"))
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index f4899d0d5d..bd0a43cd54 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -597,7 +597,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
return true; // abort
}
}
- if(mImagePriority < 1.0f)
+ if(mImagePriority < F_ALMOST_ZERO)
{
if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
{
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 9b3243a1bc..7a0f77a7e4 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1489,59 +1489,63 @@ void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)
//virtual
void LLViewerFetchedTexture::processTextureStats()
{
- if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) //force to refetch the texture.
- {
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ;
- }
-
if(mFullyLoaded)
{
- if(mDesiredDiscardLevel <= mMinDesiredDiscardLevel)//already loaded
+ if(mDesiredDiscardLevel > mMinDesiredDiscardLevel)//need to load more
{
- return ;
+ mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
+ mFullyLoaded = FALSE ;
}
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
- mFullyLoaded = FALSE ;
- return ;
- }
-
- updateVirtualSize() ;
-
- static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
-
- if (textures_fullres)
- {
- mDesiredDiscardLevel = 0;
- }
- else if(!mFullWidth || !mFullHeight)
- {
- mDesiredDiscardLevel = getMaxDiscardLevel() ;
}
else
- {
- if(!mKnownDrawWidth || !mKnownDrawHeight || mFullWidth <= mKnownDrawWidth || mFullHeight <= mKnownDrawHeight)
+ {
+ updateVirtualSize() ;
+
+ static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
+
+ if (textures_fullres)
{
- if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
+ mDesiredDiscardLevel = 0;
+ }
+ else if(!mFullWidth || !mFullHeight)
+ {
+ mDesiredDiscardLevel = getMaxDiscardLevel() ;
+ }
+ else
+ {
+ if(!mKnownDrawWidth || !mKnownDrawHeight || mFullWidth <= mKnownDrawWidth || mFullHeight <= mKnownDrawHeight)
{
- mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
+ if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
+ {
+ mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
+ }
+ else
+ {
+ mDesiredDiscardLevel = 0;
+ }
}
- else
+ else if(mKnownDrawSizeChanged)//known draw size is set
+ {
+ mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2,
+ log((F32)mFullHeight / mKnownDrawHeight) / log_2) ;
+ mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ;
+ mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
+ }
+ mKnownDrawSizeChanged = FALSE ;
+
+ if(getDiscardLevel() >= 0 && (getDiscardLevel() <= mDesiredDiscardLevel))
{
- mDesiredDiscardLevel = 0;
+ mFullyLoaded = TRUE ;
}
}
- else if(mKnownDrawSizeChanged)//known draw size is set
- {
- mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2,
- log((F32)mFullHeight / mKnownDrawHeight) / log_2) ;
- mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ;
- mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel) ;
- }
- mKnownDrawSizeChanged = FALSE ;
-
- if(getDiscardLevel() >= 0 && (getDiscardLevel() <= mDesiredDiscardLevel))
+ }
+
+ if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) //force to refetch the texture.
+ {
+ mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ;
+ if(getDiscardLevel() < 0 || getDiscardLevel() > mDesiredDiscardLevel)
{
- mFullyLoaded = TRUE ;
+ mFullyLoaded = FALSE ;
}
}
}
@@ -1724,6 +1728,11 @@ void LLViewerFetchedTexture::setDecodePriority(F32 priority)
llassert(!mInImageList);
mDecodePriority = priority;
+
+ if(mDecodePriority < F_ALMOST_ZERO)
+ {
+ mStopFetchingTimer.reset() ;
+ }
}
void LLViewerFetchedTexture::setAdditionalDecodePriority(F32 priority)
@@ -1915,7 +1924,12 @@ bool LLViewerFetchedTexture::updateFetch()
// llinfos << "Calling updateRequestPriority() with decode_priority = 0.0f" << llendl;
// calcDecodePriority();
// }
- LLAppViewer::getTextureFetch()->updateRequestPriority(mID, decode_priority);
+ static const F32 MAX_HOLD_TIME = 5.0f ; //seconds to wait before canceling fecthing if decode_priority is 0.f.
+ if(decode_priority > 0.0f || mStopFetchingTimer.getElapsedTimeF32() > MAX_HOLD_TIME)
+ {
+ mStopFetchingTimer.reset() ;
+ LLAppViewer::getTextureFetch()->updateRequestPriority(mID, decode_priority);
+ }
}
}
@@ -2075,6 +2089,36 @@ void LLViewerFetchedTexture::setLoadedCallback( loaded_callback_func loaded_call
}
}
+void LLViewerFetchedTexture::clearCallbackEntryList()
+{
+ if(mLoadedCallbackList.empty())
+ {
+ return ;
+ }
+
+ for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
+ iter != mLoadedCallbackList.end(); )
+ {
+ LLLoadedCallbackEntry *entryp = *iter;
+
+ // We never finished loading the image. Indicate failure.
+ // Note: this allows mLoadedCallbackUserData to be cleaned up.
+ entryp->mCallback(FALSE, this, NULL, NULL, 0, TRUE, entryp->mUserData);
+ iter = mLoadedCallbackList.erase(iter) ;
+ delete entryp;
+ }
+ gTextureList.mCallbackList.erase(this);
+
+ mMinDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1;
+ mLoadedCallbackDesiredDiscardLevel = S8_MAX ;
+ if(mForceToSaveRawImage)
+ {
+ destroySavedRawImage() ;
+ }
+
+ return ;
+}
+
void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::source_callback_list_t* callback_list)
{
if(mLoadedCallbackList.empty() || !callback_list)
@@ -2082,7 +2126,7 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so
return ;
}
- S32 desired_discard = INVALID_DISCARD_LEVEL ;
+ S32 desired_discard = S8_MAX ;
S32 desired_raw_discard = INVALID_DISCARD_LEVEL ;
for(callback_list_t::iterator iter = mLoadedCallbackList.begin();
iter != mLoadedCallbackList.end(); )
@@ -2652,6 +2696,12 @@ void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard, bool from_
}
void LLViewerFetchedTexture::destroySavedRawImage()
{
+ clearCallbackEntryList() ;
+ //if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0 && mDesiredSavedRawDiscardLevel < getDiscardLevel())
+ //{
+ // return ; //can not destroy the saved raw image before it is fully fetched, otherwise causing callbacks hanging there.
+ //}
+
mSavedRawImage = NULL ;
mForceToSaveRawImage = FALSE ;
mSavedRawDiscardLevel = -1 ;
@@ -2902,7 +2952,7 @@ BOOL LLViewerLODTexture::isUpdateFrozen()
void LLViewerLODTexture::processTextureStats()
{
updateVirtualSize() ;
-
+
static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes");
if (textures_fullres)
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 1f0d760daf..6adfd2bae4 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -392,6 +392,7 @@ public:
void unpauseLoadedCallbacks(const LLLoadedCallbackEntry::source_callback_list_t* callback_list);
bool doLoadedCallbacks();
void deleteCallbackEntry(const LLLoadedCallbackEntry::source_callback_list_t* callback_list);
+ void clearCallbackEntryList() ;
void addToCreateTexture();
@@ -562,6 +563,7 @@ protected:
// Timers
LLFrameTimer mLastPacketTimer; // Time since last packet.
+ LLFrameTimer mStopFetchingTimer; // Time since mDecodePriority == 0.f.
BOOL mInImageList; // TRUE if image is in list (in which case don't reset priority!)
BOOL mNeedsCreateTexture;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 4e00355bbe..c688338000 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6251,10 +6251,14 @@ void LLVOAvatar::updateMeshTextures()
// When an avatar is changing clothes and not in Appearance mode,
// use the last-known good baked texture until it finish the first
// render of the new layerset.
+
+ const BOOL layerset_invalid = !mBakedTextureDatas[i].mTexLayerSet
+ || !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized()
+ || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable();
+
use_lkg_baked_layer[i] = (!is_layer_baked[i]
&& (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR)
- && mBakedTextureDatas[i].mTexLayerSet
- && !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized());
+ && layerset_invalid);
if (use_lkg_baked_layer[i])
{
mBakedTextureDatas[i].mTexLayerSet->setUpdatesEnabled(TRUE);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 274dbe6332..534703d15a 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -2208,6 +2208,11 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
void LLVOAvatarSelf::outputRezDiagnostics() const
{
+ if(!gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
+ {
+ return ;
+ }
+
const F32 final_time = mDebugSelfLoadTimer.getElapsedTimeF32();
llinfos << "REZTIME: Myself rez stats:" << llendl;
llinfos << "\t Time from avatar creation to load wearables: " << (S32)mDebugTimeWearablesLoaded << llendl;
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 0efe6682be..9c08c0eec1 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -448,22 +448,35 @@ void LLVOTree::render(LLAgent &agent)
void LLVOTree::setPixelAreaAndAngle(LLAgent &agent)
{
- // First calculate values as for any other object (for mAppAngle)
- LLViewerObject::setPixelAreaAndAngle(agent);
-
- // Re-calculate mPixelArea accurately
+ LLVector3 center = getPositionAgent();//center of tree.
+ LLVector3 viewer_pos_agent = gAgentCamera.getCameraPositionAgent();
+ LLVector3 lookAt = center - viewer_pos_agent;
+ F32 dist = lookAt.normVec() ;
+ F32 cos_angle_to_view_dir = lookAt * LLViewerCamera::getInstance()->getXAxis() ;
- // This should be the camera's center, as soon as we move to all region-local.
- LLVector3 relative_position = getPositionAgent() - gAgentCamera.getCameraPositionAgent();
- F32 range_squared = relative_position.lengthSquared() ;
+ F32 range = dist - getMinScale()/2;
+ if (range < F_ALMOST_ZERO || isHUDAttachment()) // range == zero
+ {
+ mAppAngle = 180.f;
+ }
+ else
+ {
+ mAppAngle = (F32) atan2( getMaxScale(), range) * RAD_TO_DEG;
+ }
F32 max_scale = mBillboardScale * getMaxScale();
F32 area = max_scale * (max_scale*mBillboardRatio);
-
// Compute pixels per meter at the given range
- F32 pixels_per_meter = LLViewerCamera::getInstance()->getViewHeightInPixels() / tan(LLViewerCamera::getInstance()->getView());
+ F32 pixels_per_meter = LLViewerCamera::getInstance()->getViewHeightInPixels() / (tan(LLViewerCamera::getInstance()->getView()) * dist);
+ mPixelArea = pixels_per_meter * pixels_per_meter * area ;
+
+ F32 importance = LLFace::calcImportanceToCamera(cos_angle_to_view_dir, dist) ;
+ mPixelArea = LLFace::adjustPixelArea(importance, mPixelArea) ;
+ if (mPixelArea > LLViewerCamera::getInstance()->getScreenPixelArea())
+ {
+ mAppAngle = 180.f;
+ }
- mPixelArea = (pixels_per_meter) * (pixels_per_meter) * area / range_squared;
#if 0
// mAppAngle is a bit of voodoo;
// use the one calculated LLViewerObject::setPixelAreaAndAngle above
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index c5042ca016..1209b60679 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -52,6 +52,7 @@
#include "llvoavatarself.h"
#include "llvoavatardefines.h"
#include "llwearable.h"
+#include "llviewercontrol.h"
using namespace LLVOAvatarDefines;
@@ -444,8 +445,10 @@ BOOL LLWearable::importFile( LLFILE* file )
delete mSavedTEMap[te];
}
- image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te), NULL);
-
+ if(gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
+ {
+ image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te), NULL);
+ }
LLUUID textureid(text_buffer);
mTEMap[te] = new LLLocalTextureObject(image, textureid);
mSavedTEMap[te] = new LLLocalTextureObject(image, textureid);
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 52cf24333f..2f6ecd8a34 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -29,9 +29,7 @@
<menu_item_call.on_click
function="BuyCurrency" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="My Profile"
name="Profile">
@@ -126,9 +124,7 @@
<menu_item_call.on_click
function="Advanced.LeaveAdminStatus" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Exit [APP_NAME]"
name="Quit"
@@ -157,9 +153,7 @@
function="SideTray.PanelPeopleTab"
parameter="groups_panel" />
</menu_item_call>
-
<menu_item_separator/>
-
<!--menu_item_call
label="Chat"
name="Chat">
@@ -257,9 +251,7 @@
parameter="region_info" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu_item_call
label="Buy This Land"
name="Buy Land">
@@ -356,9 +348,7 @@
control="NavBarShowParcelProperties" />
</menu_item_check>
</menu>
-
<menu_item_separator/>
-
<menu_item_call
label="Teleport Home"
name="Teleport Home"
@@ -397,9 +387,7 @@
parameter="ShowNavbarFavoritesPanel" />
</menu_item_check>
<menu_item_separator/>-->
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Sun"
@@ -442,9 +430,7 @@
function="World.EnvSettings"
parameter="default" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Environment Editor"
name="Environment Editor">
@@ -593,7 +579,6 @@
</menu_item_call>
</menu>
<menu_item_separator/>
-
<menu_item_call
label="Focus on Selection"
name="Focus on Selection"
@@ -614,9 +599,7 @@
<menu_item_call.on_enable
function="Tools.SomethingSelectedNoHUD" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Object"
@@ -718,9 +701,7 @@
function="EditableSelected" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Options"
@@ -736,9 +717,7 @@
function="ToggleControl"
parameter="DebugPermissions" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Select Only My Objects"
name="Select Only My Objects">
@@ -765,9 +744,7 @@
<menu_item_check.on_click
function="Tools.SelectBySurrounding" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Hidden Selection"
name="Show Hidden Selection">
@@ -793,9 +770,7 @@
function="ToggleControl"
parameter="ShowSelectionBeam" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Snap to Grid"
name="Snap to Grid"
@@ -919,9 +894,7 @@
function="Floater.Show"
parameter="hud" />
</menu_item_call>-->
-
<menu_item_separator/>
-
<menu_item_call
label="Report Abuse"
name="Report Abuse">
@@ -935,9 +908,7 @@
function="ShowHelp"
parameter="report_bug" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="About [APP_NAME]"
name="About Second Life">
@@ -951,6 +922,17 @@
name="Advanced"
tear_off="true"
visible="false">
+ <menu_item_check
+ label="Show Advanced Menu"
+ name="Show Advanced Menu"
+ shortcut="control|alt|shift|D">
+ <on_check
+ function="CheckControl"
+ parameter="UseDebugMenus" />
+ <on_click
+ function="ToggleControl"
+ parameter="UseDebugMenus" />
+ </menu_item_check>
<menu_item_call
label="Stop Animating Me"
name="Stop Animating My Avatar">
@@ -977,9 +959,7 @@
function="Floater.Show"
parameter="window_size" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_check
label="Limit Select Distance"
name="Limit Select Distance">
@@ -1000,9 +980,7 @@
function="ToggleControl"
parameter="DisableCameraConstraints" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="High-res Snapshot"
name="HighResSnapshot">
@@ -1033,9 +1011,7 @@
function="ToggleControl"
parameter="CompressSnapshotsToDisk" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Performance Tools"
@@ -1148,9 +1124,7 @@
<menu_item_check.on_click
function="View.ShowHoverTips" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Land Tooltips"
name="Land Tips">
@@ -1419,17 +1393,7 @@
function="Advanced.ToggleFeature"
parameter="flexible" />
</menu_item_check>
- </menu>
- <menu_item_check
- label="Run Multiple Threads"
- name="Run Multiple Threads">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="RunMultipleThreads" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="RunMultipleThreads" />
- </menu_item_check>
+ </menu>
<menu_item_check
label="Use Plugin Read Thread"
name="Use Plugin Read Thread">
@@ -1457,9 +1421,7 @@
function="ToggleControl"
parameter="MouseSmooth" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu
label="Shortcuts"
name="Shortcuts"
@@ -1503,9 +1465,19 @@
<menu_item_call.on_click
function="View.DefaultUISize" />
</menu_item_call>
-
+ <!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility. The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->
+ <menu_item_check
+ label="Show Advanced Menu - legacy shortcut"
+ name="Show Advanced Menu - legacy shortcut"
+ shortcut="control|alt|D">
+ <on_check
+ function="CheckControl"
+ parameter="UseDebugMenus" />
+ <on_click
+ function="ToggleControl"
+ parameter="UseDebugMenus" />
+ </menu_item_check>
<menu_item_separator/>
-
<menu_item_check
label="Always Run"
name="Always Run"
@@ -1526,9 +1498,7 @@
<menu_item_check.on_enable
function="Agent.enableFlying" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Close Window"
name="Close Window"
@@ -1547,9 +1517,7 @@
<menu_item_call.on_enable
function="File.EnableCloseAllWindows" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Snapshot to Disk"
name="Snapshot to Disk"
@@ -1558,9 +1526,7 @@
<menu_item_call.on_click
function="File.TakeSnapshotToDisk" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Mouselook"
name="Mouselook"
@@ -1597,9 +1563,7 @@
<menu_item_call.on_enable
function="View.EnableLastChatter" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Select Build Tool"
@@ -1646,9 +1610,7 @@
parameter="land" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu_item_call
label="Zoom In"
name="Zoom In"
@@ -1670,27 +1632,8 @@
<menu_item_call.on_click
function="View.ZoomOut" />
</menu_item_call>
- <menu_item_separator
- visible="false"/>
- <!-- Made invisible to avoid a dissonance: menu item toggle menu where it is located. EXT-8069.
- Can't be removed to keep sortcut workable.
- -->
- <menu_item_check
- label="Show Advanced Menu"
- name="Show Advanced Menu"
- shortcut="control|alt|D"
- visible="false">
- <on_check
- function="CheckControl"
- parameter="UseDebugMenus" />
- <on_click
- function="ToggleControl"
- parameter="UseDebugMenus" />
- </menu_item_check>
- </menu> <!--Shortcuts-->
-
+ </menu>
<menu_item_separator/>
-
<menu_item_call
label="Show Debug Settings"
name="Debug Settings">
@@ -1709,7 +1652,6 @@
function="ToggleControl"
parameter="QAMode" />
</menu_item_check>
-
</menu>
<menu
create_jump_keys="true"
@@ -1800,9 +1742,7 @@
function="Advanced.ToggleConsole"
parameter="memory view" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Region Info to Debug Console"
name="Region Info to Debug Console">
@@ -1824,9 +1764,7 @@
function="Advanced.DumpInfoToConsole"
parameter="capabilities" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_check
label="Camera"
name="Camera">
@@ -1914,9 +1852,7 @@
function="ToggleControl"
parameter="DebugShowColor" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Updates to Objects"
name="Show Updates"
@@ -1928,9 +1864,7 @@
function="Advanced.ToggleShowObjectUpdates" />
</menu_item_check>
</menu>
-
<menu_item_separator/>
-
<menu
create_jump_keys="true"
label="Force an Error"
@@ -2224,12 +2158,9 @@
<menu_item_check.on_enable
function="Advanced.EnableRenderFBO" />
</menu_item_check>
-
- <menu_item_separator />
-
<menu_item_check
- label="Lighting and Shadows"
- name="Lighting and Shadows">
+ label="Deferred Rendering"
+ name="Deferred Rendering">
<menu_item_check.on_check
function="CheckControl"
parameter="RenderDeferred" />
@@ -2240,31 +2171,7 @@
function="Advanced.EnableRenderDeferred" />
</menu_item_check>
<menu_item_check
- label=" Shadows from Sun/Moon/Projectors"
- name="Shadows from Sun/Moon/Projectors">
- <menu_item_check.on_check
- function="Advanced.CheckRenderShadowOption"
- parameter="RenderShadowDetail" />
- <menu_item_check.on_click
- function="Advanced.ClickRenderShadowOption"
- parameter="RenderShadowDetail" />
- <menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
- </menu_item_check>
- <menu_item_check
- label=" SSAO and Shadow Smoothing"
- name="SSAO and Shadow Smoothing">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="RenderDeferredSSAO" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="RenderDeferredSSAO" />
- <menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
- </menu_item_check>
- <menu_item_check
- label=" Global Illumination (experimental)"
+ label="Global Illumination"
name="Global Illumination">
<menu_item_check.on_check
function="CheckControl"
@@ -2273,11 +2180,9 @@
function="ToggleControl"
parameter="RenderDeferredGI" />
<menu_item_check.on_enable
- function="Advanced.EnableRenderDeferredOptions" />
+ function="Advanced.EnableRenderDeferredGI" />
</menu_item_check>
-
<menu_item_separator />
-
<menu_item_check
label="Debug GL"
name="Debug GL">
@@ -2299,24 +2204,14 @@
parameter="RenderDebugPipeline" />
</menu_item_check>
<menu_item_check
- label="Automatic Alpha Masks (deferred)"
- name="Automatic Alpha Masks (deferred)">
- <menu_item_check.on_check
- function="CheckControl"
- parameter="RenderAutoMaskAlphaDeferred" />
- <menu_item_check.on_click
- function="ToggleControl"
- parameter="RenderAutoMaskAlphaDeferred" />
- </menu_item_check>
- <menu_item_check
- label="Automatic Alpha Masks (non-deferred)"
- name="Automatic Alpha Masks (non-deferred)">
+ label="Fast Alpha"
+ name="Fast Alpha">
<menu_item_check.on_check
function="CheckControl"
- parameter="RenderAutoMaskAlphaNonDeferred" />
+ parameter="RenderFastAlpha" />
<menu_item_check.on_click
function="ToggleControl"
- parameter="RenderAutoMaskAlphaNonDeferred" />
+ parameter="RenderFastAlpha" />
</menu_item_check>
<menu_item_check
label="Animation Textures"
@@ -2359,7 +2254,7 @@
parameter="AuditTexture" />
</menu_item_check>
<menu_item_check
- label="Texture Atlas (experimental)"
+ label="Texture Atlas"
name="Texture Atlas">
<menu_item_check.on_check
function="CheckControl"
@@ -2415,9 +2310,7 @@
function="ToggleControl"
parameter="AgentPause" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Enable Message Log"
name="Enable Message Log">
@@ -2430,9 +2323,7 @@
<menu_item_call.on_click
function="Advanced.DisableMessageLog" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_check
label="Velocity Interpolate Objects"
name="Velocity Interpolate Objects">
@@ -2453,9 +2344,7 @@
function="ToggleControl"
parameter="PingInterpolate" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_call
label="Drop a Packet"
name="Drop a Packet"
@@ -2643,7 +2532,6 @@
</menu_item_check>
<menu_item_separator />
-
<menu_item_check
label="Debug SelectMgr"
name="Debug SelectMgr">
@@ -2989,9 +2877,7 @@
function="Advanced.DumpAvatarLocalTextures" />
</menu_item_call>
</menu>
-
<menu_item_separator/>
-
<menu_item_check
label="HTTP Textures"
name="HTTP Textures">
@@ -3028,9 +2914,7 @@
function="ToggleControl"
parameter="ShowConsoleWindow" />
</menu_item_check>
-
<menu_item_separator/>
-
<menu_item_check
label="Show Admin Menu"
name="View Admin Options">
@@ -3365,9 +3249,7 @@
name="PublicIssueTrackerHelp_url"
parameter="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" />
</menu_item_call>
-
<menu_item_separator/>
-
<menu_item_call
label="Bug Reporting 101"
name="Bug Reporing 101">