diff options
| author | Aura Linden <aura@lindenlab.com> | 2012-12-11 16:01:35 -0800 |
|---|---|---|
| committer | Aura Linden <aura@lindenlab.com> | 2012-12-11 16:01:35 -0800 |
| commit | e85e6ca4104df14b0bb2d625d82578c81430d28e (patch) | |
| tree | 533a7ef96345e04dc32ccebff9a453f00fca845d /indra/newview/llface.cpp | |
| parent | 6b059d183b9516f45e775bde00f255cef8aab7c0 (diff) | |
| parent | a334f41f8ebec5ef812334e5086e54256e2bf7df (diff) | |
Merged from viewer-release
Diffstat (limited to 'indra/newview/llface.cpp')
| -rwxr-xr-x | indra/newview/llface.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 582f06eeb0..605cb81c10 100755 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1062,7 +1062,11 @@ bool LLFace::canRenderAsMask() } const LLTextureEntry* te = getTextureEntry(); - + if( !te || !getViewerObject() || !getTexture() ) + { + return false; + } + if ((te->getColor().mV[3] == 1.0f) && // can't treat as mask if we have face alpha (te->getGlow() == 0.f) && // glowing masks are hard to implement - don't mask getTexture()->getIsAlphaMask()) // texture actually qualifies for masking (lazily recalculated but expensive) @@ -2168,6 +2172,12 @@ BOOL LLFace::hasMedia() const const F32 LEAST_IMPORTANCE = 0.05f ; const F32 LEAST_IMPORTANCE_FOR_LARGE_IMAGE = 0.3f ; +void LLFace::resetVirtualSize() +{ + setVirtualSize(0.f); + mImportanceToCamera = 0.f; +} + F32 LLFace::getTextureVirtualSize() { F32 radius; @@ -2233,8 +2243,17 @@ BOOL LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) LLVector4a t; t.load3(camera->getOrigin().mV); lookAt.setSub(center, t); + F32 dist = lookAt.getLength3().getF32(); - dist = llmax(dist-size.getLength3().getF32(), 0.f); + dist = llmax(dist-size.getLength3().getF32(), 0.001f); + //ramp down distance for nearby objects + if (dist < 16.f) + { + dist /= 16.f; + dist *= dist; + dist *= 16.f; + } + lookAt.normalize3fast() ; //get area of circle around node |
