From f530540d006d4fa8de90d5f97fb04a7463e1e49b Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sun, 17 Aug 2025 17:26:08 +0200 Subject: [PATCH 1/8] Reverting changes to texture pipeline back to stock LL --- indra/llmath/llcamera.cpp | 23 +- indra/llmath/llcamera.h | 9 - indra/llrender/llgltexture.cpp | 22 -- indra/llrender/llgltexture.h | 13 - indra/llrender/llimagegl.cpp | 5 - indra/llui/llconsole.cpp | 9 +- indra/newview/llappviewer.cpp | 8 +- indra/newview/llface.cpp | 77 ++---- indra/newview/llface.h | 9 +- indra/newview/lltexturecache.cpp | 24 -- indra/newview/llviewermenu.cpp | 3 - indra/newview/llviewerobject.cpp | 20 +- indra/newview/llviewerobjectlist.cpp | 50 +--- indra/newview/llviewerobjectlist.h | 6 +- indra/newview/llviewertexture.cpp | 112 +-------- indra/newview/llviewertexture.h | 8 - indra/newview/llviewertexturelist.cpp | 327 ++------------------------ indra/newview/llviewertexturelist.h | 3 - indra/newview/llvoavatar.cpp | 17 +- indra/newview/llvograss.cpp | 6 +- indra/newview/llvotree.cpp | 6 +- indra/newview/llvovolume.cpp | 42 +--- 22 files changed, 66 insertions(+), 733 deletions(-) diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index b3f0530af5..3daed2ac31 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -35,10 +35,6 @@ LLCamera::LLCamera() : LLCoordFrame(), mView(DEFAULT_FIELD_OF_VIEW), mAspect(DEFAULT_ASPECT_RATIO), - // [FIRE-35081] Blurry prims not changing with graphics settings - //mInverseAspect(1.0f / DEFAULT_ASPECT_RATIO), - mDrawDistanceMultiplier(1.0f), - // [FIRE-35081] mViewHeightInPixels( -1 ), // invalid height mNearPlane(DEFAULT_NEAR_PLANE), mFarPlane(DEFAULT_FAR_PLANE), @@ -67,18 +63,10 @@ LLCamera::LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_p } mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Store the inverse of the aspect ratio, so we can remove it from texture calculations - //mInverseAspect = 1.0f / mAspect; - // [FIRE-35081] mNearPlane = llclamp(near_plane, MIN_NEAR_PLANE, MAX_NEAR_PLANE); if(far_plane < 0) far_plane = DEFAULT_FAR_PLANE; mFarPlane = llclamp(far_plane, MIN_FAR_PLANE, MAX_FAR_PLANE); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Store the draw distance multiplier based upon how much bigger/smaller the far plan is then the default (64.0f) - mDrawDistanceMultiplier = mFarPlane / DEFAULT_FAR_PLANE; - mDrawDistanceMultiplier = mDrawDistanceMultiplier < 1.0f ? 1.0f : mDrawDistanceMultiplier; - // [FIRE-35081] + setView(vertical_fov_rads); } @@ -141,10 +129,6 @@ void LLCamera::setViewHeightInPixels(S32 height) void LLCamera::setAspect(F32 aspect_ratio) { mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Store the inverse of the aspect ratio, so we can remove it from texture calculations - //mInverseAspect = 1.0f / mAspect; - // [FIRE-35081] calculateFrustumPlanes(); } @@ -159,11 +143,6 @@ void LLCamera::setNear(F32 near_plane) void LLCamera::setFar(F32 far_plane) { mFarPlane = llclamp(far_plane, MIN_FAR_PLANE, MAX_FAR_PLANE); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Store the draw distance multiplier based upon how much bigger/smaller the far plan is then the default (64.0f) - mDrawDistanceMultiplier = mFarPlane / DEFAULT_FAR_PLANE; - mDrawDistanceMultiplier = mDrawDistanceMultiplier < 1.0f ? 1.0f : mDrawDistanceMultiplier; - // [FIRE-35081] calculateFrustumPlanes(); } diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index ea6a303032..6201761c46 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -127,11 +127,6 @@ private: F32 mView; // angle between top and bottom frustum planes in radians. F32 mAspect; // width/height - // [FIRE-35081] Blurry prims not changing with graphics settings - // Store the inverse of the aspect ratio, for the texture's sizes - //F32 mInverseAspect; // height/width - F32 mDrawDistanceMultiplier; // mFarPlane / DEFAULT_FAR_PLANE - // [FIRE-35081] S32 mViewHeightInPixels; // for ViewHeightInPixels() only F32 mNearPlane; F32 mFarPlane; @@ -166,10 +161,6 @@ public: F32 getView() const { return mView; } // vertical FOV in radians S32 getViewHeightInPixels() const { return mViewHeightInPixels; } F32 getAspect() const { return mAspect; } // width / height - // [FIRE-35081] Blurry prims not changing with graphics settings - //F32 getInverseAspect() const { return mInverseAspect; } // width / height - F32 getDrawDistanceMultiplier() const { return mDrawDistanceMultiplier; } // mFarPlane / DEFAULT_FAR_PLANE (could also include near plane as well) - // [FIRE-35081] F32 getNear() const { return mNearPlane; } // meters F32 getFar() const { return mFarPlane; } // meters diff --git a/indra/llrender/llgltexture.cpp b/indra/llrender/llgltexture.cpp index 377e453ba4..87e7400a24 100644 --- a/indra/llrender/llgltexture.cpp +++ b/indra/llrender/llgltexture.cpp @@ -63,10 +63,6 @@ LLGLTexture::~LLGLTexture() void LLGLTexture::init() { mBoostLevel = LLGLTexture::BOOST_NONE; - // - // Added a previous boost level to allow for restorign boost after BOOST_SELECTED is applied - mPrevBoostLevel = LLGLTexture::BOOST_NONE; - // mFullWidth = 0; mFullHeight = 0; @@ -104,12 +100,6 @@ void LLGLTexture::setBoostLevel(S32 level) if(mBoostLevel != LLGLTexture::BOOST_NONE && mBoostLevel != LLGLTexture::BOOST_ICON && mBoostLevel != LLGLTexture::BOOST_THUMBNAIL - // [FIRE-35081] Blurry prims not changing with graphics settings - // Add the new grass, light and tree boosts - && mBoostLevel != LLGLTexture::BOOST_GRASS - && mBoostLevel != LLGLTexture::BOOST_LIGHT - && mBoostLevel != LLGLTexture::BOOST_TREE - // [FIRE-35081] && mBoostLevel != LLGLTexture::BOOST_TERRAIN) { setNoDelete() ; @@ -117,18 +107,6 @@ void LLGLTexture::setBoostLevel(S32 level) } } -// -// Changes the current boost level to the previous value -void LLGLTexture::restoreBoostLevel() -{ - mBoostLevel = mPrevBoostLevel; -} -// Stores the current boost level in a the previous boost. -void LLGLTexture::storeBoostLevel() -{ - mPrevBoostLevel = mBoostLevel; -} -// void LLGLTexture::forceActive() { mTextureState = ACTIVE ; diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h index 4336039c1c..48132fa956 100644 --- a/indra/llrender/llgltexture.h +++ b/indra/llrender/llgltexture.h @@ -53,11 +53,6 @@ public: BOOST_AVATAR_BAKED , BOOST_TERRAIN , // Needed for minimap generation for now. Lower than BOOST_HIGH so the texture stats don't get forced, i.e. texture stats are manually managed by minimap/terrain instead. - // [FIRE-35081] Blurry prims not changing with graphics settings - BOOST_GRASS , // Grass has a alternative calculation for virtual and face sizes. - BOOST_TREE , // Tree has a alternative calculation for virtual and face sizes. - BOOST_LIGHT , // Light textures has a alternative calculation for virtual and face sizes. - // [FIRE-35081] BOOST_HIGH = 10, BOOST_SCULPTED , BOOST_BUMP , @@ -106,10 +101,6 @@ public: void setBoostLevel(S32 level); S32 getBoostLevel() { return mBoostLevel; } - // - void restoreBoostLevel(); // Now restores the mBoostLevel with the mPrevBoostLevel - void storeBoostLevel(); // Stores the current mBoostLevel in mPrevBoostLevel - // S32 getFullWidth() const { return mFullWidth; } S32 getFullHeight() const { return mFullHeight; } @@ -192,10 +183,6 @@ public: protected: S32 mBoostLevel; // enum describing priority level - // - // Added previous value to allow for restoring of BOOST_SELECTED overriding current state - S32 mPrevBoostLevel; // enum describing priority level (Previous Value for BOOST_SELECTION restore) - // U32 mFullWidth; U32 mFullHeight; bool mUseMipMaps; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index b1ba3b54c5..d859c9cfac 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -641,11 +641,6 @@ bool LLImageGL::setSize(S32 width, S32 height, S32 ncomponents, S32 discard_leve if(discard_level > 0) { mMaxDiscardLevel = llmax(mMaxDiscardLevel, (S8)discard_level); - // [FIRE-35361] RenderMaxTextureResolution caps texture resolution lower than intended - // 2K textures could set the mMaxDiscardLevel above MAX_DISCARD_LEVEL, which would - // cause them to not be down-scaled so they would get stuck at 0 discard all the time. - mMaxDiscardLevel = llmax(mMaxDiscardLevel, (S8)MAX_DISCARD_LEVEL); - // [FIRE-35361] } } else diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index 0842c90409..fc088f8807 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -565,13 +565,8 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, L { if ( !force_resize ) { - // [FIRE-35081] Blurry prims not changing with graphics settings - // if ( mMaxWidth >= 0.0f - //&& mMaxWidth < screen_width) - // If viewer window was made as small as possible with the console enabled, it would cause an assert error - // as the line below can go as small as -38 - if ( ((mMaxWidth >= 0.0f) && (mMaxWidth < screen_width)) || (screen_width <= 30) ) - // [FIRE-35081] + if ( mMaxWidth >= 0.0f + && mMaxWidth < screen_width) { return; //No resize required. } diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 0077e03fea..a6e192ffa5 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -6001,13 +6001,7 @@ void LLAppViewer::idle() // objects and camera should be in sync, do LOD calculations now { LL_RECORD_BLOCK_TIME(FTM_LOD_UPDATE); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Added a max time limit to the object list updates as these updates do affect the texture system - //gObjectList.updateApparentAngles(gAgent); - F32 max_update_apparent_angles = 0.025f * gFrameIntervalSeconds.value(); // 20 ms/second decode time - max_update_apparent_angles = llclamp(max_update_apparent_angles, 0.002f, 0.005f); // min 2ms/frame, max 5ms/frame) - gObjectList.updateApparentAngles(gAgent, max_update_apparent_angles); - // [FIRE-35081] + gObjectList.updateApparentAngles(gAgent); } // Update AV render info diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index ef9b585423..ba5e40d832 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -75,14 +75,6 @@ static LLStaticHashedString sColorIn("color_in"); bool LLFace::sSafeRenderSelect = true; // false -// [FIRE-35081] Blurry prims not changing with graphics settings -// Moved to allow more code to access these values -const S8 FACE_IMPORTANCE_LEVEL = 4 ; -const F32 FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL][2] = //{distance, importance_weight} -{{16.1f, 1.0f}, {32.1f, 0.5f}, {48.1f, 0.2f}, {96.1f, 0.05f} } ; -const F32 FACE_IMPORTANCE_TO_CAMERA_OVER_ANGLE[FACE_IMPORTANCE_LEVEL][2] = //{cos(angle), importance_weight} -{{0.985f /*cos(10 degrees)*/, 1.0f}, {0.94f /*cos(20 degrees)*/, 0.8f}, {0.866f /*cos(30 degrees)*/, 0.64f}, {0.0f, 0.36f}} ; -// [FIRE-35081] #define DOTVEC(a,b) (a.mV[0]*b.mV[0] + a.mV[1]*b.mV[1] + a.mV[2]*b.mV[2]) @@ -179,10 +171,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp) mFaceColor = LLColor4(1,0,0,1); - mImportanceToCamera = 1.f ; - // [FIRE-35081] Blurry prims not changing with graphics settings - mCloseToCamera = 1.0f; - // [FIRE-35081] + mImportanceToCamera = 0.f ; mBoundingSphereRadius = 0.0f ; mTexExtents[0].set(0, 0); @@ -1683,10 +1672,7 @@ bool LLFace::getGeometryVolume(const LLVolume& volume, xforms = XFORM_NONE; } - // [FIRE-35081] Blurry prims not changing with graphics settings - // Removed check for turning off animations - //if (getVirtualSize() >= MIN_TEX_ANIM_SIZE) // || isState(LLFace::RIGGED)) - // [FIRE-35081] + if (getVirtualSize() >= MIN_TEX_ANIM_SIZE) // || isState(LLFace::RIGGED)) { //don't override texture transform during tc bake tex_mode = 0; } @@ -2287,16 +2273,10 @@ F32 LLFace::getTextureVirtualSize() F32 radius; F32 cos_angle_to_view_dir; - // [FIRE-35081] Blurry prims not changing with graphics settings - //bool in_frustum = calcPixelArea(cos_angle_to_view_dir, radius); - // The mInFrustum value is now updated in calcPixelArea, so no longer need to accss the value - calcPixelArea(cos_angle_to_view_dir, radius); + bool in_frustum = calcPixelArea(cos_angle_to_view_dir, radius); - //if (mPixelArea < F_ALMOST_ZERO || !in_frustum) - // Use the stored value from calcPixelArea - if (mPixelArea < F_ALMOST_ZERO || !mInFrustum) - // [FIRE-35081] + if (mPixelArea < F_ALMOST_ZERO || !in_frustum) { setVirtualSize(0.f) ; return 0.f; @@ -2325,10 +2305,6 @@ F32 LLFace::getTextureVirtualSize() } face_area = LLFace::adjustPixelArea(mImportanceToCamera, face_area); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Remove the face area being affected by being partial off screen as close to screen textures can then become scaled down along with - // animated textures. - /* if(face_area > LLViewerTexture::sMinLargeImageSize) //if is large image, shrink face_area by considering the partial overlapping. { if(mImportanceToCamera > LEAST_IMPORTANCE_FOR_LARGE_IMAGE && mTexture[LLRender::DIFFUSE_MAP].notNull() && mTexture[LLRender::DIFFUSE_MAP]->isLargeImage()) @@ -2336,8 +2312,7 @@ F32 LLFace::getTextureVirtualSize() face_area *= adjustPartialOverlapPixelArea(cos_angle_to_view_dir, radius ); } } - */ - // [FIRE-35081] + setVirtualSize(face_area) ; return face_area; @@ -2423,10 +2398,6 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) // no rigged extents, zero out bounding box and skip update mRiggedExtents[0] = mRiggedExtents[1] = LLVector4a(0.f, 0.f, 0.f); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Set the face to be out of the frustum as the object is invalid - mInFrustum = false; - // [FIRE-35081] return false; } @@ -2473,14 +2444,6 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) LLVector4a x_axis; x_axis.load3(camera->getXAxis().mV); cos_angle_to_view_dir = lookAt.dot3(x_axis).getF32(); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Added close to camera (based upon the mImportanceToCamera) where any object that is within the FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE (16.1f) - // gets an extra texture scaling up. - // Use positive distance to the camera and apply the multiplier based upon the texture scaled for increase in the default draw distance - mCloseToCamera = (dist >= 0.0f && dist <= FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[0][0] * camera->getDrawDistanceMultiplier()) ? 1.0f : 0.0f; - // Check if the object is positive distance to the far plane and positive cos angle is in frustum - mInFrustum = (dist >= 0 && dist <= camera->getFar() && cos_angle_to_view_dir > 0.0f); - // [FIRE-35081] //if has media, check if the face is out of the view frustum. if(hasMedia()) @@ -2488,10 +2451,6 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) if(!camera->AABBInFrustum(center, size)) { mImportanceToCamera = 0.f ; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Added real in frustum check value. Previous was only false for media textures off screen and invalid rig objects - mInFrustum = false; - // [FIRE-35081] return false ; } if(cos_angle_to_view_dir > camera->getCosHalfFov()) //the center is within the view frustum @@ -2514,10 +2473,6 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) { cos_angle_to_view_dir = 1.0f ; mImportanceToCamera = 1.0f ; - // [FIRE-35081] Blurry prims not changing with graphics settings - mInFrustum = true; // If the face is important to the camera, it is in the frustum - mCloseToCamera = 1.0f; - // [FIRE-35081] } else { @@ -2556,21 +2511,22 @@ F32 LLFace::adjustPartialOverlapPixelArea(F32 cos_angle_to_view_dir, F32 radius return 1.0f ; } +const S8 FACE_IMPORTANCE_LEVEL = 4 ; +const F32 FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL][2] = //{distance, importance_weight} + {{16.1f, 1.0f}, {32.1f, 0.5f}, {48.1f, 0.2f}, {96.1f, 0.05f} } ; +const F32 FACE_IMPORTANCE_TO_CAMERA_OVER_ANGLE[FACE_IMPORTANCE_LEVEL][2] = //{cos(angle), importance_weight} + {{0.985f /*cos(10 degrees)*/, 1.0f}, {0.94f /*cos(20 degrees)*/, 0.8f}, {0.866f /*cos(30 degrees)*/, 0.64f}, {0.0f, 0.36f}} ; + //static F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist) { LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE; F32 importance = 0.f ; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Move camera out to use for the inital check for the distance to the face importance with the multiplier - LLViewerCamera* camera = LLViewerCamera::getInstance(); - if(cos_angle_to_view_dir > LLViewerCamera::getInstance()->getCosHalfFov() && - //dist < FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL - 1][0]) - dist < FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL - 1][0] * camera->getDrawDistanceMultiplier()) + if(cos_angle_to_view_dir > LLViewerCamera::getInstance()->getCosHalfFov() && + dist < FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL - 1][0]) { - //LLViewerCamera* camera = LLViewerCamera::getInstance(); - // [FIRE-35081] + LLViewerCamera* camera = LLViewerCamera::getInstance(); F32 camera_moving_speed = camera->getAverageSpeed() ; F32 camera_angular_speed = camera->getAverageAngularSpeed(); @@ -2581,10 +2537,7 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist) } S32 i = 0 ; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Added draw distance multiplier to the distance - for(i = 0; i < FACE_IMPORTANCE_LEVEL && dist > FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[i][0] * camera->getDrawDistanceMultiplier(); ++i); - // [FIRE-35081] + for(i = 0; i < FACE_IMPORTANCE_LEVEL && dist > FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[i][0]; ++i); i = llmin(i, FACE_IMPORTANCE_LEVEL - 1) ; F32 dist_factor = FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[i][1] ; diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 16cd4d6eb1..651a4167e0 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -52,11 +52,7 @@ class LLDrawInfo; class LLMeshSkinInfo; const F32 MIN_ALPHA_SIZE = 1024.f; -// [FIRE-35081] Blurry prims not changing with graphics settings -//const F32 MIN_TEX_ANIM_SIZE = 512.f; -// Change the min size to -const F32 MIN_TEX_ANIM_SIZE = 10.f; -// [FIRE-35081] +const F32 MIN_TEX_ANIM_SIZE = 512.f; const U8 FACE_DO_NOT_BATCH_TEXTURES = 255; class alignas(16) LLFace @@ -127,8 +123,6 @@ public: void setPixelArea(F32 area) { mPixelArea = area; } F32 getVirtualSize() const { return mVSize; } F32 getPixelArea() const { return mPixelArea; } - F32 getImportanceToCamera() const { return mImportanceToCamera; } - F32 getCloseToCamera() const { return mCloseToCamera; } S32 getIndexInTex(U32 ch) const { llassert(ch < LLRender::NUM_TEXTURE_CHANNELS); return mIndexInTex[ch]; } void setIndexInTex(U32 ch, S32 index) { llassert(ch < LLRender::NUM_TEXTURE_CHANNELS); mIndexInTex[ch] = index; } @@ -335,7 +329,6 @@ private: //1.0: the most important. //based on the distance from the face to the view point and the angle from the face center to the view direction. F32 mImportanceToCamera ; - F32 mCloseToCamera; F32 mBoundingSphereRadius ; bool mHasMedia ; bool mIsMediaAllowed; diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 95cfd7304e..221dc573fe 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -2094,30 +2094,6 @@ LLPointer LLTextureCache::readFromFastCache(const LLUUID& id, S32& d } LLPointer raw = new LLImageRaw(data, head[0], head[1], head[2], true); - // - // This fixes the invalid discard values from being created which cause the decoder code to fail when trying to handle 6 and 7's which are above the MAX_DISCARD_LEVEL of 5 - // especially on load - // We will expand the 16x16 texture to the actual MAX_DISCARD_LEVEL texture size, it may be blurry until the user gets closer but 5 discard value should be objects far from the camera. - // So a 1024x1024 texture with a dicard of 6 will become 32x32 and a 2048x2048 texture with a discard of 7 will become a 64x64 texture. - if (discardlevel > MAX_DISCARD_LEVEL) - { - LL_PROFILE_ZONE_NAMED_CATEGORY_TEXTURE("FixBadDiscardLevel"); - - S32 w = head[0]; // Get the current width from the header (16) - S32 h = head[1]; // Get the current height from the header (16) - - // Expand the width and height by teh difference between the discard and MAX_DISCARD_LEVEL bit shifted to the left. (Expand power of 2 textures) - w <<= discardlevel - MAX_DISCARD_LEVEL; - h <<= discardlevel - MAX_DISCARD_LEVEL; - - // Set the discard level to the MAX_DISCARD_LEVEL - discardlevel = MAX_DISCARD_LEVEL; - - // Scale up the texture and scale the actual data, as we just created it above, it should be fine. - raw->scale(w, h, true); - } - // - return raw; } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 504e89be7c..1803631ddb 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -12890,9 +12890,6 @@ void initialize_menus() // Develop (Fonts debugging) commit.add("Develop.Fonts.Dump", boost::bind(&LLFontGL::dumpFonts)); commit.add("Develop.Fonts.DumpTextures", boost::bind(&LLFontGL::dumpFontTextures)); - - //Develop (dump data) - commit.add("Develop.TextureList.Dump", boost::bind(&LLViewerTextureList::dumpTexturelist)); // Add telemetry controls to the viewer Develop menu (Toggle profiling) view_listener_t::addMenu(new FSProfilerToggle(), "Develop.ToggleProfiling"); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index e44d7df155..d4f9782fea 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -4336,14 +4336,6 @@ void LLViewerObject::boostTexturePriority(bool boost_children /* = true */) S32 tex_count = getNumTEs(); for (i = 0; i < tex_count; i++) { - // - // This isused to fix the textures becoming blury when object interacted with by the user and unselected. - // If this is changing the boost level for the TEImage for the first time, store the boost level before modifying it. - if (getTEImage(i)->getBoostLevel() != LLGLTexture::BOOST_SELECTED) - { - getTEImage(i)->storeBoostLevel(); - } - // getTEImage(i)->setBoostLevel(LLGLTexture::BOOST_SELECTED); } @@ -4351,17 +4343,7 @@ void LLViewerObject::boostTexturePriority(bool boost_children /* = true */) { LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT); LLUUID sculpt_id = sculpt_params->getSculptTexture(); - // - //LLViewerTextureManager::getFetchedTexture(sculpt_id, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED); - // This isused to fix the textures becoming blury when object interacted with by the user and unselected. - // If this is changing the boost level for the sculpted for the first time, store the boost level before modifying it. - LLViewerFetchedTexture* sculptedTexture = LLViewerTextureManager::getFetchedTexture(sculpt_id, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); - if (sculptedTexture->getBoostLevel() != LLGLTexture::BOOST_SELECTED) - { - sculptedTexture->storeBoostLevel(); - } - // - sculptedTexture->setBoostLevel(LLGLTexture::BOOST_SELECTED); + LLViewerTextureManager::getFetchedTexture(sculpt_id, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED); } if (boost_children) diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index e170d8fa19..aa7c8f3b38 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -835,20 +835,13 @@ void LLViewerObjectList::setAllObjectDefaultTextures(U32 nChannel, bool fShowDef } } // [/SL:KB] -// [FIRE-35081] Blurry prims not changing with graphics settings -//void LLViewerObjectList::updateApparentAngles(LLAgent &agent) -// Added time limit on processing of objects as they affect the texture system (They also calcuate mMaxVirtualSize and mPixelArea) -void LLViewerObjectList::updateApparentAngles(LLAgent &agent, F32 max_time) -// [FIRE-35081] + +void LLViewerObjectList::updateApparentAngles(LLAgent &agent) { S32 i; LLViewerObject *objectp; S32 num_updates, max_value; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Remove the old code as it worked on fixed number of updates (Total # of Object / 128) per frame - // and some objects had nothing to do while others were avatars or volumes and could t - /* if (NUM_BINS - 1 == mCurBin) { // Remainder (mObjects.size() could have changed) @@ -884,46 +877,7 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent, F32 max_time) { mCurBin = (mCurBin + 1) % NUM_BINS; } - */ - num_updates = 0; - max_value = (S32)mObjects.size(); - LLTimer timer; - // If the number of objects since last being in here has changed (IE objects deleted, then reset the lazy update index) - if (mCurLazyUpdateIndex >= max_value) - { - mCurLazyUpdateIndex = 0; - } - // Store the index for the current lazy update index as we will loop over the index - i = mCurLazyUpdateIndex; - // loop over number of objects in the BIN (128), or below until we run out of time - while(num_updates < NUM_BINS) - { - // Moved to the first to fix up the issue of access violation if the object list chaanges size during processing. - if (i >= (S32)mObjects.size()) - { - // Reset the index if we go over the max value - i = 0; - } - objectp = mObjects[i]; - if (objectp != nullptr && !objectp->isDead()) - { - //LL_DEBUGS() << objectp->getID() << " Update Textures" << LL_ENDL; - // Update distance & gpw - objectp->setPixelAreaAndAngle(agent); // Also sets the approx. pixel area - objectp->updateTextures(); // Update the image levels of textures for this object. - } - i++; - num_updates++; - // Escape either if we run out of time, or loop back onto ourselves. - if (timer.getElapsedTimeF32() > max_time || i == mCurLazyUpdateIndex) - { - break; - } - } - // Update the current lazy update index with the current index, so we can continue next frame from where we left off - mCurLazyUpdateIndex = i; - // [FIRE-35081] #if 0 // Slam priorities for textures that we care about (hovered, selected, and focused) // Hovered diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index c4a8026f93..001a7515e9 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -89,11 +89,7 @@ public: void processObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type, bool compressed=false); void processCompressedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); void processCachedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); - // [FIRE-35081] Blurry prims not changing with graphics settings - //void updateApparentAngles(LLAgent &agent); - // Added time limit on processing of objects as they affect the texture system - void updateApparentAngles(LLAgent &agent, F32 max_time); - // [FIRE-35081] + void updateApparentAngles(LLAgent &agent); void update(LLAgent &agent); void fetchObjectCosts(); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 4ec5756803..098f88c16b 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -779,12 +779,6 @@ void LLViewerTexture::setBoostLevel(S32 level) mBoostLevel = level; if(mBoostLevel != LLViewerTexture::BOOST_NONE && mBoostLevel != LLViewerTexture::BOOST_SELECTED && - // [FIRE-35081] Blurry prims not changing with graphics settings - // Added the new boost levels - mBoostLevel != LLViewerTexture::BOOST_GRASS && - mBoostLevel != LLViewerTexture::BOOST_LIGHT && - mBoostLevel != LLViewerTexture::BOOST_TREE && - // [FIRE-35081] mBoostLevel != LLViewerTexture::BOOST_ICON && mBoostLevel != LLViewerTexture::BOOST_THUMBNAIL) { @@ -796,13 +790,6 @@ void LLViewerTexture::setBoostLevel(S32 level) if (mBoostLevel >= LLViewerTexture::BOOST_HIGH) { mMaxVirtualSize = 2048.f * 2048.f; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Add additional for the important to camera and in frustum - static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); - mMaxVirtualSize = mMaxVirtualSize + (mMaxVirtualSize * 1.0f * texture_camera_boost); - // Apply second boost based upon if the texture is close to the camera (< 16.1 meters * draw distance multiplier) - mMaxVirtualSize = mMaxVirtualSize + (mMaxVirtualSize * 1.0f * texture_camera_boost); - // [FIRE-35081] } } @@ -1208,9 +1195,6 @@ void LLViewerFetchedTexture::init(bool firstinit) mKeptSavedRawImageTime = 0.f; mLastCallBackActiveTime = 0.f; mForceCallbackFetch = false; - // [FIRE-35081] Blurry prims not changing with graphics settings - mCloseToCamera = 1.0f; // Store if the camera is close to the camera (0.0f or 1.0f) - // [FIRE-35081] mFTType = FTT_UNKNOWN; } @@ -1283,7 +1267,7 @@ void LLViewerFetchedTexture::loadFromFastCache() record(LLTextureFetch::sCacheHitRate, LLUnits::Ratio::fromValue(1)); sample(LLTextureFetch::sCacheReadLatency, cachReadTime); - mFullWidth = mRawImage->getWidth() << mRawDiscardLevel; + mFullWidth = mRawImage->getWidth() << mRawDiscardLevel; mFullHeight = mRawImage->getHeight() << mRawDiscardLevel; setTexelsPerImage(); @@ -3086,23 +3070,8 @@ void LLViewerLODTexture::processTextureStats() else if (mBoostLevel < LLGLTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f) { // If the image has not been significantly visible in a while, we don't want it - // [FIRE-35081] Blurry prims not changing with graphics settings - //mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1)); - // Off screen textures at 6 would not downscale. - mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL)); - // [FIRE-35081] + mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1)); mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Add scale down here as the textures off screen were not getting scaled down properly - S32 current_discard = getDiscardLevel(); - if (mBoostLevel < LLGLTexture::BOOST_AVATAR_BAKED) - { - if (current_discard < mDesiredDiscardLevel && !mForceToSaveRawImage) - { // should scale down - scaleDown(); - } - } - // [FIRE-35081] } else if (!mFullWidth || !mFullHeight) { @@ -3111,8 +3080,6 @@ void LLViewerLODTexture::processTextureStats() } else { - // [FIRE-35081] Blurry prims not changing with graphics settings - /* //static const F64 log_2 = log(2.0); static const F64 log_4 = log(4.0); @@ -3140,28 +3107,10 @@ void LLViewerLODTexture::processTextureStats() discard_level = floorf(discard_level); F32 min_discard = 0.f; - */ - - // Use a S32 instead of a float - S32 min_discard = 0; if (mFullWidth > max_tex_res || mFullHeight > max_tex_res) - min_discard = 1; + min_discard = 1.f; - // Use a S32 value for the discard level - S32 discard_level = min_discard; - // Find the best discard that covers the entire mMaxVirtualSize of the on screen texture (Use MAX_DISCARD_LEVEL as a max discard instead of MAX_DISCARD_LEVEL+1) - for (; discard_level < MAX_DISCARD_LEVEL; discard_level++) // [FIRE-35361] RenderMaxTextureResolution caps texture resolution lower than intended - { - // If the max virtual size is greater then or equal to the current discard level, then break out of the loop and use the current discard level - if (mMaxVirtualSize >= getWidth(discard_level) * getHeight(discard_level)) // [FIRE-35361] RenderMaxTextureResolution caps texture resolution lower than intended - { - break; - } - } - - - //discard_level = llclamp(discard_level, min_discard, (F32)MAX_DISCARD_LEVEL); - // [FIRE-35081] + discard_level = llclamp(discard_level, min_discard, (F32)MAX_DISCARD_LEVEL); // Can't go higher than the max discard level mDesiredDiscardLevel = llmin(getMaxDiscardLevel() + 1, (S32)discard_level); @@ -3202,10 +3151,7 @@ void LLViewerLODTexture::processTextureStats() // unset it immediately after we consume it if (getBoostLevel() == BOOST_SELECTED) { - // - //setBoostLevel(BOOST_NONE); - restoreBoostLevel(); - // + setBoostLevel(BOOST_NONE); } } @@ -3456,23 +3402,11 @@ void LLViewerMediaTexture::initVirtualSize() { return; } - // [FIRE-35081] Blurry prims not changing with graphics settings - // Add camera importance to the media textures as well - static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); - F32 vsize = 0.0f; - // [FIRE-35081] + findFaces(); for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter) { - // [FIRE-35081] Blurry prims not changing with graphics settings - //addTextureStats((*iter)->getVirtualSize()); - // Add camera importance to the media textures as well - vsize = (*iter)->getVirtualSize(); - vsize = vsize + (vsize * (*iter)->getImportanceToCamera() * texture_camera_boost); - // Apply second boost based upon if the texture is close to the camera (< 16.1 meters * draw distance multiplier) - vsize = vsize + (vsize * (*iter)->getCloseToCamera() * texture_camera_boost); - addTextureStats(vsize); - // [FIRE-35081] + addTextureStats((*iter)->getVirtualSize()); } } @@ -3531,11 +3465,6 @@ void LLViewerMediaTexture::addFace(U32 ch, LLFace* facep) return; } // [/SL:KB] - - // [FIRE-35081] Blurry prims not changing with graphics settings - // Try to set the boost level to MEDIA to try to force the media to high quality - tex->setBoostLevel(LLViewerTexture::MEDIA); - // [FIRE-35081] mTextureList.push_back(tex);//increase the reference number by one for tex to avoid deleting it. return; } @@ -3777,10 +3706,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() { addTextureStats(0.f, false);//reset } - // [FIRE-35081] Blurry prims not changing with graphics settings - static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); - F32 vsize = 0.0f; - // [FIRE-35081] + if(mIsPlaying) //media is playing { for (U32 ch = 0; ch < LLRender::NUM_TEXTURE_CHANNELS; ++ch) @@ -3790,16 +3716,8 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() { LLFace* facep = mFaceList[ch][i]; if(facep->getDrawable()->isRecentlyVisible()) - { - // [FIRE-35081] Blurry prims not changing with graphics settings - //addTextureStats(facep->getVirtualSize()); - // Add the importance to camera and close to camera to the media texture - vsize = facep->getVirtualSize(); - vsize = vsize + (vsize * facep->getImportanceToCamera() * texture_camera_boost); - // Apply second boost based upon if the texture is close to the camera (< 16.1 meters * draw distance multiplier) - vsize = vsize + (vsize * facep->getCloseToCamera() * texture_camera_boost); - addTextureStats(vsize); - // [FIRE-35081] + { + addTextureStats(facep->getVirtualSize()); } } } @@ -3815,15 +3733,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() LLFace* facep = *iter; if(facep->getDrawable()->isRecentlyVisible()) { - // [FIRE-35081] Blurry prims not changing with graphics settings - //addTextureStats(facep->getVirtualSize()); - // Add the importance to camera and close to camera to the media texture - vsize = facep->getVirtualSize(); - vsize = vsize + (vsize * facep->getImportanceToCamera() * texture_camera_boost); - // Apply second boost based upon if the texture is close to the camera (< 16.1 meters * draw distance multiplier) - vsize = vsize + (vsize * facep->getCloseToCamera() * texture_camera_boost); - addTextureStats(vsize); - // [FIRE-35081] + addTextureStats(facep->getVirtualSize()); } } } diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 812779c6d4..10a79515e9 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -437,11 +437,6 @@ public: void setInFastCacheList(bool in_list) { mInFastCacheList = in_list; } bool isInFastCacheList() { return mInFastCacheList; } - // [FIRE-35081] Blurry prims not changing with graphics settings - F32 getCloseToCamera() const {return mCloseToCamera ;} // Get close to camera value - void setCloseToCamera(F32 value) {mCloseToCamera = value ;} // Set the close to camera value (0.0f or 1.0f) - // [FIRE-35081] - /*virtual*/bool isActiveFetching() override; //is actively in fetching by the fetching pipeline. virtual bool scaleDown() { return false; }; @@ -542,9 +537,6 @@ protected: bool mForSculpt ; //a flag if the texture is used as sculpt data. bool mIsFetched ; //is loaded from remote or from cache, not generated locally. - // [FIRE-35081] Blurry prims not changing with graphics settings - F32 mCloseToCamera; // Float (0.0f or 1.0f) to indicate if the texture is close to the camera - // [FIRE-35081] public: static F32 sMaxVirtualSize; //maximum possible value of mMaxVirtualSize diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index ecf5b2ca34..50d1d69576 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -372,187 +372,23 @@ void LLViewerTextureList::shutdown() mInitialized = false ; //prevent loading textures again. } -// [FIRE-35081] Blurry prims not changing with graphics settings -// static -// Allows the menu to call the dump method of the texture list -void LLViewerTextureList::dumpTexturelist() -{ - gTextureList.dump(); -} -// [FIRE-35081] void LLViewerTextureList::dump() { LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; LL_INFOS() << "LLViewerTextureList::dump()" << LL_ENDL; - // [FIRE-35081] Blurry prims not changing with graphics settings - S32 texture_count = 0; - S32 textures_close_to_camera = 0; - std::array image_counts{0}; // Double the size for higher discards from textures < 1024 (2048 can make a 7 and 4096 could make an 8) - std::array size_counts{0}; // Track the 12 possible sizes (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048) - std::array discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture) - std::array fullsize_discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture) - std::array boost_counts{0}; // Track the # of textures at boost levels by 12 possible sizes - // Don't Init the buffers with 0's like it's the the 1980's... - - // [FIRE-35081] for (image_list_t::iterator it = mImageList.begin(); it != mImageList.end(); ++it) { LLViewerFetchedTexture* image = *it; + LL_INFOS() << "priority " << image->getMaxVirtualSize() << " boost " << image->getBoostLevel() << " size " << image->getWidth() << "x" << image->getHeight() << " discard " << image->getDiscardLevel() << " desired " << image->getDesiredDiscardLevel() - // [FIRE-35081] Blurry prims not changing with graphics settings - << " close to camera " << (image->getCloseToCamera() > 0.0f ? "Y" : "N") // Display the close to camera flag - << " FFType " << fttype_to_string(image->getFTType()) // Display the FFType of the camera - << " Type " << (S32)image->getType() // Display the type of the image (LOCAL_TEXTURE = 0, MEDIA_TEXTURE = 1, DYNAMIC_TEXTURE = 2, FETCHED_TEXTURE = 3,LOD_TEXTURE = 4) - << " Sculpted " << (image->forSculpt() ? "Y" : "N") - << " # of Faces "; - for (S32 index = 0; index < LLRender::NUM_TEXTURE_CHANNELS; index++) - { - LL_CONT << image->getNumFaces(index) << " "; - } - LL_CONT << " # of Volumes "; - for (S32 index = 0; index < LLRender::NUM_VOLUME_TEXTURE_CHANNELS; index++) - { - LL_CONT << image->getNumVolumes(index) << " "; - } - // [FIRE-35081] - LL_CONT << " " << image->getID().asString().substr(0, 7) + << " http://asset.siva.lindenlab.com/" << image->getID() << ".texture" << LL_ENDL; - // [FIRE-35081] Blurry prims not changing with graphics settings - image_counts[(image->getDiscardLevel() + 1)] += 1; // Need to add +1 to make up for -1 being a possible value - S32 x_index = (S32)log2(image->getWidth()); // Convert the width into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...) - S32 y_index = (S32)log2(image->getHeight()); // Convert the height into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...) - size_counts[x_index + y_index * 12] += 1; // Add this texture's dimensions to the size count - // Onlyuse the largest size for the texture's discard level(for non-square textures) - S32 max_dimension = (y_index > x_index ? y_index : x_index); - discard_counts[(image->getDiscardLevel() + 1) + max_dimension * (MAX_DISCARD_LEVEL * 2 + 2)] += 1; - boost_counts[image->getBoostLevel() + max_dimension * (LLViewerTexture::BOOST_MAX_LEVEL)] += 1; - S32 full_x_index = (S32)log2(image->getFullWidth()); - S32 full_y_index = (S32)log2(image->getFullHeight()); - S32 full_max_dimension = (full_y_index > full_x_index ? full_y_index : full_x_index); - fullsize_discard_counts[(image->getDiscardLevel() + 1) + full_max_dimension * (MAX_DISCARD_LEVEL * 2 + 2)] += 1; - texture_count++; - textures_close_to_camera += S32(image->getCloseToCamera()); - // [FIRE-35081] } - // [FIRE-35081] Blurry prims not changing with graphics settings - // Add overal texture totals - LL_INFOS() << "Texture Stats: Textures in Close to Camera " << textures_close_to_camera << " of " << texture_count << " : " << LL_ENDL; - - // Fix for the -1 discard level as well as higher possible discard levels (for 2048+ size textures) - for (S32 index = 0; index < MAX_DISCARD_LEVEL * 2 + 2; index++) - { - LL_INFOS() << " Discard Level: " << (index - 1) << " Number of Textures: " << image_counts[index] << LL_ENDL; - } - - // Create a line to break up the header from the content of the table - std::string header_break(13 * 8, '-'); - - LL_INFOS() << "Size vs Size" << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - // Create a header that for the Sizes - LL_INFOS() << std::setw(8) << "Size"; - for (S32 x = 1; x <= 2048; x <<= 1) - { - LL_CONT << std::setw(8) << x; - } - LL_CONT << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - - // Y Axis is the size of the height of the texture - for (S32 y = 0; y < 12; y++) - { - LL_INFOS() << std::setw(8) << (1 << y); - //X Axis is the size of the width of the texture - for (S32 x = 0; x < 12; x++) - { - LL_CONT << std::setw(8) << size_counts[x + y * 12]; - - } - LL_CONT << LL_ENDL; - } - LL_INFOS() << LL_ENDL; - - // This is the Discard Level Vs Size counts table - LL_INFOS() << "Discard Level Vs Size" << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << std::setw(8) << "Discard"; - for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++) - { - LL_CONT << std::setw(8) << (x - 1); - } - LL_CONT << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - - // Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used) - for (S32 y = 0; y < 12; y++) - { - LL_INFOS() << std::setw(8) << (1 << y); - // X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=) - for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++) - { - LL_CONT << std::setw(8) << discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]; - } - LL_CONT << LL_ENDL; - } - LL_INFOS() << LL_ENDL; - - - // This is the Discard Level Vs Full Size counts table - LL_INFOS() << "Discard Level Vs Full Size" << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << std::setw(8) << "Discard"; - for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++) - { - LL_CONT << std::setw(8) << (x - 1); - } - LL_CONT << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - - // Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used) - for (S32 y = 0; y < 12; y++) - { - LL_INFOS() << std::setw(8) << (1 << y); - // X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=) - for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++) - { - LL_CONT << std::setw(8) << fullsize_discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]; - } - LL_CONT << LL_ENDL; - } - LL_INFOS() << LL_ENDL; - - - // This is the Boost Level Vs Size counts table - LL_INFOS() << "Boost Level Vs Size" << LL_ENDL; - header_break.append((LLViewerTexture::BOOST_MAX_LEVEL * 8) - (12 * 8), '-'); - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << std::setw(8) << "Discard"; - for (S32 x = 0; x < LLViewerTexture::BOOST_MAX_LEVEL; x++) - { - LL_CONT << std::setw(8) << x; - } - LL_CONT << LL_ENDL; - LL_INFOS() << header_break << LL_ENDL; - - // Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used) - for (S32 y = 0; y < 12; y++) - { - LL_INFOS() << std::setw(8) << (1 << y); - // X Axis is the boost level starging from BOOST_NONE up to BOOST_MAX_LEVEL - for (S32 x = 0; x < (LLViewerTexture::BOOST_MAX_LEVEL); x++) - { - LL_CONT << std::setw(8) << boost_counts[x + y * (LLViewerTexture::BOOST_MAX_LEVEL)]; - } - LL_CONT << LL_ENDL; - } - LL_INFOS() << LL_ENDL; - - // [FIRE-35081] } void LLViewerTextureList::destroyGL() @@ -808,14 +644,6 @@ LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id, imagep->setExplicitFormat(internal_format, primary_format); } - // [FIRE-35428] - Mega prim issue - fix compressed sculpted textures - // Sculpted textures use the RGBA data for coodinates, so any compression can cause artifacts. - if (boost_priority == LLViewerFetchedTexture::BOOST_SCULPTED) - { - // Disable the compression of BOOST_SCULPTED textures - if (imagep->getGLTexture())imagep->getGLTexture()->setAllowCompression(false); - } - // [FIRE-35428] addImage(imagep, get_element_type(boost_priority)); if (boost_priority != 0) @@ -843,11 +671,7 @@ LLViewerFetchedTexture* LLViewerTextureList::createImage(const LLUUID &image_id, } // Keep Fast Cache option - // [FIRE-35428] - Mega prim issue - fix compressed sculpted textures - //if(fast_cache_fetching_enabled) - // If the texture is Sculpted, don't allow it to be added to fast cache as it can affect the texture. - if(fast_cache_fetching_enabled && boost_priority != LLViewerFetchedTexture::BOOST_SCULPTED) - // [FIRE-35428] + if (fast_cache_fetching_enabled) { mFastCacheList.insert(imagep); imagep->setInFastCacheList(true); @@ -1108,38 +932,8 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag F32 bias = llclamp(max_discard - 2.f, 1.f, LLViewerTexture::sDesiredDiscardBias); // convert bias into a vsize scaler - // [FIRE-35081] Blurry prims not changing with graphics settings - //bias = (F32) llroundf(powf(4, bias - 1.f)); - // Pre-divide the bias so you can just use multiply in the loop - bias = (F32) 1.0f / llroundf(powf(4, bias - 1.f)); + bias = (F32) llroundf(powf(4, bias - 1.f)); - // Apply new rules to bias discard, there are now 2 bias, off-screen and on-screen. - // On-screen Bias - // Only applied to LOD Textures and one that have Discard > 1 (0, 1 protected) - // - // Off-screen Bias - // Will be using the old method of applying the mMaxVirtualSize, however - // only on LOD textures and fetched textures get bias applied. - // - // Local (UI & Icons), Media and Dynamic textures should not have any discard applied to them. - // - // Without this, textures will become blurry that are on screen, which is one of the #1 - // user complaints. - - // Store a seperate max on screen vsize without bias applied. - F32 max_on_screen_vsize = 0.0f; - S32 on_screen_count = 0; - // Moved all the variables outside of the loop - bool current_on_screen = false; - F32 vsize = 0.0f; // Moved outside the loop to save reallocation every loop - F32 important_to_camera = 0.0f; - F32 close_to_camera = 0.0f; // Track if the texture is close to the cameras - F64 animated = 0; // U64 used to track if a pointer is set for the animations. (The texture matrix of the face is null if no animation assigned to the texture) - // So if you keep adding and the final result is 0, there is no animation - // [FIRE-35081] - // boost resolution of textures that are important to the camera - // Can instead of using max for a min of 1.0, just subtract 1 from the boost and just do a 1 + (TextureCameraBoost - 1) * importanceToCamera) - static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; for (U32 i = 0; i < LLRender::NUM_TEXTURE_CHANNELS; ++i) { @@ -1152,42 +946,21 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag if (face && face->getViewerObject()) { - // [FIRE-35081] Blurry prims not changing with graphics settings - // No longer needed as we no longer re-calculate the face's virtual texture size, we use it directly from the face - //F32 radius; - //F32 cos_angle_to_view_dir; - // [FIRE-35081] + F32 radius; + F32 cos_angle_to_view_dir; if ((gFrameCount - face->mLastTextureUpdate) > 10) { // only call calcPixelArea at most once every 10 frames for a given face // this helps eliminate redundant calls to calcPixelArea for faces that have multiple textures // assigned to them, such as is the case with GLTF materials or Blinn-Phong materials - - //face->calcPixelArea(cos_angle_to_view_dir, radius); - // The face already has a function to calculate the Texture Virtual Size, which already calls the calcPixelArea method - // so just call this instead. This can be called from outside this loop by LLVolume objects - face->getTextureVirtualSize(); + face->mInFrustum = face->calcPixelArea(cos_angle_to_view_dir, radius); face->mLastTextureUpdate = gFrameCount; } - - // Also moved allocation outside the loop - // [FIRE-35081] Blurry prims not changing with graphics settings - //F32 vsize = face->getPixelArea(); - //on_screen |= face->mInFrustum; - // Get the already calculated face's virtual size, instead of re-calculating it - vsize = face->getVirtualSize(); - - current_on_screen = face->mInFrustum; // Create a new var to store the current on screen status - on_screen_count += current_on_screen; // Count the number of on sceen faces instead of using brach - important_to_camera = face->mImportanceToCamera; // Store so we don't have to do 2 indirects later on - // If the face/texture is animated, then set the boost level to high, so that it will ways be the best quality - animated += S64(face->mTextureMatrix); - animated += S64(face->hasMedia()); // Add has media for both local and parcel media - animated += S64(imagep->hasParcelMedia()); + F32 vsize = face->getPixelArea(); + + on_screen |= face->mInFrustum; - // [FIRE-35081] Blurry prims not changing with graphics settings (It is) - /* // Scale desired texture resolution higher or lower depending on texture scale // // Minimum usage examples: a 1024x1024 texture with aplhabet (texture atlas), @@ -1196,7 +969,6 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag // // Maximum usage examples: huge chunk of terrain repeats texture // TODO: make this work with the GLTF texture transforms - S32 te_offset = face->getTEOffset(); // offset is -1 if not inited LLViewerObject* objp = face->getViewerObject(); const LLTextureEntry* te = (te_offset < 0 || te_offset >= objp->getNumTEs()) ? nullptr : objp->getTE(te_offset); @@ -1226,46 +998,17 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag { break; } - */ - - // Use math to skip having to use a conditaional check - // Bools are stored as 0 false, 1 true, use to cheat - // Lerp instead of doing conditional input - // If the image is import to the camera, even a little then make the on screen true - on_screen_count += S32(important_to_camera * 1000.0f); - //vsize = vsize + (vsize * (1.0f + important_to_camera * texture_camera_boost) - vsize) * F32(current_on_screen); - // Apply boost of size based upon importance to camera - vsize = vsize + (vsize * important_to_camera * texture_camera_boost); - // Apply second boost based upon if the texture is close to the camera (< 16.1 meters * draw distance multiplier) - vsize = vsize + (vsize * face->mCloseToCamera * texture_camera_boost); - // Update the max on screen vsize based upon the on screen vsize - close_to_camera += face->mCloseToCamera; - // LL_DEBUGS() << face->getViewerObject()->getID() << " TID " << imagep->getID() << " #F " << imagep->getNumFaces(i) << " OS Vsize: " << vsize << " Vsize: " << (vsize * bias) << " CTC: " << face->mCloseToCamera << " Channel " << i << " Face Index " << fi << LL_ENDL; - max_on_screen_vsize = llmax(max_on_screen_vsize, vsize); - max_vsize = llmax(max_vsize, vsize * bias); - // [FIRE-35081] } } - // [FIRE-35081] Blurry prims not changing with graphics settings - //if (max_vsize >= LLViewerFetchedTexture::sMaxVirtualSize - // && (on_screen || LLViewerTexture::sDesiredDiscardBias <= BIAS_TRS_ON_SCREEN)) - //{ - // break; - //} - // + if (max_vsize >= LLViewerFetchedTexture::sMaxVirtualSize + && (on_screen || LLViewerTexture::sDesiredDiscardBias <= BIAS_TRS_ON_SCREEN)) + { + break; + } } - // [FIRE-35081] Blurry prims not changing with graphics settings - // Replaced all the checks for this bool to be only in this 1 place instead of in the loop. - // If the on screen counter is greater then 0, then there was at least 1 on screen texture - on_screen = bool(on_screen_count); - imagep->setCloseToCamera(close_to_camera > 0.0f ? 1.0f : 0.0f); - - //if (face_count > max_faces_to_check) - // Add check for if the image is animated to boost to high as well - if (face_count > max_faces_to_check || animated != 0) - // [FIRE-35081] + if (face_count > max_faces_to_check) { // this texture is used in so many places we should just boost it and not bother checking its vsize // this is especially important because the above is not time sliced and can hit multiple ms for a single texture max_vsize = MAX_IMAGE_AREA; @@ -1283,33 +1026,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag } } - // [FIRE-35081] Blurry prims not changing with graphics settings - //imagep->addTextureStats(max_vsize); - // New logic block for the bias system - // Then depending on the type of texture, the higher resolution on_screen_max_vsize is applied. - // On Screen (Without Bias applied: - // LOD/Fetch Texture: Discard Levels 0, 1 - // Fetch Texture 2, 3, 5 with bias < 2.0 - // BoostLevel = Boost_High - // Local, Media, Dynamic Texture - // If the textures are on screen and either 1 are the first 2 levels of discard and are either fetched or LOD textures - if (on_screen && ((imagep->getDiscardLevel() < 2 && imagep->getType() >= LLViewerTexture::FETCHED_TEXTURE) || (imagep->getType() == LLViewerTexture::FETCHED_TEXTURE && LLViewerTexture::sDesiredDiscardBias < 2.0f))) - { - // Always use the best quality of the texture - imagep->addTextureStats(max_on_screen_vsize); - } - // If the boost level just became high, or the texture is (Local, Media Dynamic) - else if (imagep->getBoostLevel() >= LLViewerTexture::BOOST_HIGH || imagep->getType() < LLViewerTexture::FETCHED_TEXTURE || close_to_camera) - { - // Always use the best quality of the texture - imagep->addTextureStats(max_on_screen_vsize); - } - // All other texture cases will use max_vsize with bias applied. - else - { - imagep->addTextureStats(max_vsize); - } - // [FIRE-35081] + imagep->addTextureStats(max_vsize); } #if 0 @@ -1410,11 +1127,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time) mCreateTextureList.pop(); if (imagep->hasGLTexture() && imagep->getDiscardLevel() < imagep->getDesiredDiscardLevel() && - // [FIRE-35081] Blurry prims not changing with graphics settings - //(imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL)) - // Add additional restrictions on scaling down (only BOOST_NONE LOD Textures (Also skip media) - (imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL) && imagep->getBoostLevel() == LLViewerTexture::BOOST_NONE && imagep->getType() == LLViewerTexture::LOD_TEXTURE && !imagep->hasParcelMedia() && !imagep->isViewerMediaTexture()) - // [FIRE-35081] + (imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL)) { // NOTE: this may happen if the desired discard reduces while a decode is in progress and does not // necessarily indicate a problem, but if log occurrences excede that of dsiplay_stats: FPS, @@ -1423,7 +1136,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time) imagep->scaleDown(); } - if (create_timer.getElapsedTimeF32() > max_time * 0.5f) + if (create_timer.getElapsedTimeF32() > max_time) { break; } @@ -1447,7 +1160,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time) // freeze. S32 min_count = (S32)mCreateTextureList.size() / 20 + 5; - //create_timer.reset(); + create_timer.reset(); while (!mDownScaleQueue.empty()) { LLViewerFetchedTexture* image = mDownScaleQueue.front(); diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index e2f9c15a5a..3816c32500 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -111,9 +111,6 @@ public: static void receiveImageHeader(LLMessageSystem *msg, void **user_data); static void receiveImagePacket(LLMessageSystem *msg, void **user_data); // - // [FIRE-35081] Blurry prims not changing with graphics settings - static void dumpTexturelist(); // Added code to handle dumping texture information - // [FIRE-35081] public: LLViewerTextureList(); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index b01332f8d6..d1dc6302a3 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2987,19 +2987,12 @@ LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUU LL_DEBUGS("Avatar") << avString() << "get old-bake image from host " << uuid << LL_ENDL; LLHost host = getObjectHost(); result = LLViewerTextureManager::getFetchedTexture( - // [FIRE-35081] Blurry prims not changing with graphics settings - //uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); - uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE, 0, 0, host); - // [FIRE-35081] + uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); // [Legacy Bake] } LL_DEBUGS("Avatar") << avString() << "get server-bake image from URL " << url << LL_ENDL; result = LLViewerTextureManager::getFetchedTextureFromUrl( - // - //url, FTT_SERVER_BAKE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid); - // Change the texture from LOD to AVATAR_BAKED. - url, FTT_SERVER_BAKE, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid); - // [FIRE-35081] + url, FTT_SERVER_BAKE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid); if (result->isMissingAsset()) { result->setIsMissingAsset(false); @@ -11029,11 +11022,7 @@ void LLVOAvatar::applyParsedAppearanceMessage(LLAppearanceMessageContents& conte //LL_DEBUGS("Avatar") << avString() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << LL_ENDL; LL_DEBUGS("Avatar") << avString() << "sb " << (S32) isUsingServerBakes() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << LL_ENDL; setTEImage(mBakedTextureDatas[baked_index].mTextureIndex, - // [FIRE-35081] Blurry prims not changing with graphics settings - //LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); - //Texture will use baked textures, so it should also use that for the boost. - LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE)); - // [FIRE-35081] + LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); } else { diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp index 3551492a77..db37563e14 100644 --- a/indra/newview/llvograss.cpp +++ b/indra/newview/llvograss.cpp @@ -99,11 +99,7 @@ void LLVOGrass::updateSpecies() SpeciesMap::const_iterator it = sSpeciesTable.begin(); mSpecies = (*it).first; } - // [FIRE-35081] Blurry prims not changing with graphics settings - //setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); - // Added new boost Grass as it forces a fixed size on updates - setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_GRASS, LLViewerTexture::LOD_TEXTURE)); - // [FIRE-35081] + setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); } diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index deaa952f0a..199d5dc3f6 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -330,11 +330,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys, // Load Species-Specific data // static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames. - // [FIRE-35081] Blurry prims not changing with graphics settings - //mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); - // Set boost level for Tree as it overrides the normal texture sizes - mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_TREE, LLViewerTexture::LOD_TEXTURE); - // [FIRE-35081] + mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size. mBranchLength = sSpeciesTable[mSpecies]->mBranchLength; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 4376ba8c88..4ce8892a44 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -742,10 +742,7 @@ void LLVOVolume::animateTextures() { LLFace* facep = mDrawable->getFace(i); if (!facep) continue; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Removed check for turning off animations - //if(facep->getVirtualSize() <= MIN_TEX_ANIM_SIZE && facep->mTextureMatrix) continue; - // [FIRE-35081] + if(facep->getVirtualSize() <= MIN_TEX_ANIM_SIZE && facep->mTextureMatrix) continue; const LLTextureEntry* te = facep->getTextureEntry(); @@ -770,10 +767,7 @@ void LLVOVolume::animateTextures() if (!facep->mTextureMatrix) { facep->mTextureMatrix = new LLMatrix4(); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Removed check for turning off animations - //if (facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) - // [FIRE-35081] + if (facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) { // Fix the one edge case missed in // LLVOVolume::updateTextureVirtualSize when the @@ -926,10 +920,6 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) F32 min_vsize=999999999.f, max_vsize=0.f; LLViewerCamera* camera = LLViewerCamera::getInstance(); std::stringstream debug_text; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Use this flag to indicate that there was a legit change to 0.0 for the mPixelArea (All faces off screen) - bool changed = false; - // [FIRE-35081] for (S32 i = 0; i < num_faces; i++) { LLFace* face = mDrawable->getFace(i); @@ -978,13 +968,6 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) mPixelArea = llmax(mPixelArea, face->getPixelArea()); - // [FIRE-35081] Blurry prims not changing with graphics settings - // If the new area is changed from the old area, then accept it. - if (mPixelArea != old_area) - { - changed = true; - } - // [FIRE-35081] // if the face has gotten small enough to turn off texture animation and texture // animation is running, rebuild the render batch for this face to turn off // texture animation @@ -1068,10 +1051,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) { LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE); LLUUID id = params->getLightTexture(); - // [FIRE-35081] Blurry prims not changing with graphics settings - // Light textures should be treaded not the same as normal LOD textures - mLightTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, true, LLGLTexture::BOOST_LIGHT); - // [FIRE-35081] + mLightTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE); if (mLightTexture.notNull()) { F32 rad = getLightRadius(); @@ -1121,11 +1101,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) setDebugText(output); } - // [FIRE-35081] Blurry prims not changing with graphics settings - //if (mPixelArea == 0) - // If there is a legit change to 0.0, don't dismiss it. - if (mPixelArea == 0 && !changed) - // [FIRE-35081] + if (mPixelArea == 0) { //flexi phasing issues make this happen mPixelArea = old_area; } @@ -5474,10 +5450,7 @@ bool can_batch_texture(LLFace* facep) return false; } - // [FIRE-35081] Blurry prims not changing with graphics settings - // Removed check for turning off animations - if (facep->isState(LLFace::TEXTURE_ANIM))//&& facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) - // [FIRE-35081] + if (facep->isState(LLFace::TEXTURE_ANIM) && facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) { //texture animation breaks batches return false; } @@ -5624,10 +5597,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, } const LLMatrix4* tex_mat = NULL; - // [FIRE-35081] Blurry prims not changing with graphics settings - // Removed check for turning off animations - if (facep->isState(LLFace::TEXTURE_ANIM)) //&& facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) - // [FIRE-35081] + if (facep->isState(LLFace::TEXTURE_ANIM) && facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) { tex_mat = facep->mTextureMatrix; } From 96e8e36a3d5dbe2051ba96dcd893f7f30d9cb2fc Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sun, 17 Aug 2025 17:32:58 +0200 Subject: [PATCH 2/8] Remove forgotten menu entry --- indra/newview/skins/default/xui/en/menu_viewer.xml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index f0f85eb8ad..6e38c08951 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -5823,20 +5823,6 @@ - - - - - - - Date: Tue, 23 Sep 2025 22:35:10 +0200 Subject: [PATCH 3/8] =?UTF-8?q?FIRE-35969=20Chinese=20Translation=20Update?= =?UTF-8?q?,=20by=20=E5=B0=8F=E6=BB=A2=20Zi=20Ying?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- indra/newview/skins/default/xui/zh/notifications.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 3349667037..1ca7e3a135 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -5784,6 +5784,10 @@ https://wiki.firestormviewer.org/antivirus_whitelisting 是否覆蓋現有的姿勢「[POSE_NAME]」? + + 检测到大量装扮:[AMOUNT]。这可能会导致查看器卡顿或连接断开。请考虑将装扮数量限制在[MAX]以内,以提升性能。 + + Primfeed 登錄請求被拒絕。 From f67642f122f79764ee0b8f26df276169a4a9817d Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Tue, 23 Sep 2025 22:54:23 +0200 Subject: [PATCH 4/8] FIRE-35885 related: Preferences tabs are cut off at the bottom in Starlight CUI skin --- indra/newview/skins/starlightcui/xui/en/floater_preferences.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml b/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml index 4e21f44797..f581e6ba95 100644 --- a/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml +++ b/indra/newview/skins/starlightcui/xui/en/floater_preferences.xml @@ -99,7 +99,7 @@ https://accounts.secondlife.com/change_email/ Date: Wed, 24 Sep 2025 20:11:32 +0200 Subject: [PATCH 5/8] Minor Polish translation adjustment --- indra/newview/skins/default/xui/pl/panel_outfits_list.xml | 2 ++ indra/newview/skins/default/xui/pl/panel_outfits_wearing.xml | 1 + 2 files changed, 3 insertions(+) diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml index 42c392531f..3a26415be7 100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_list.xml @@ -5,11 +5,13 @@ + [COUNT] strojów Złożoność: [WEIGHT] + - + diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 1296277368..05a7f74165 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -241,7 +241,7 @@ - + diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml index 62c4e89ca4..1986c35c63 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml @@ -16,5 +16,5 @@ - + diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index 03565efa61..79eb75e984 100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -75,12 +75,12 @@ diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml index e972f1ccb8..7520c45b77 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -65,12 +65,12 @@ diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml index 6324bf1d62..2f5203f7c0 100644 --- a/indra/newview/skins/default/xui/ja/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -65,12 +65,12 @@ diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 58633d404d..e5b0806a46 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -3238,7 +3238,7 @@ Webページにリンクすると、他人がこの場所に簡単にアクセ [NAME_SLURL] は、テレポートであなたを呼んでいます。 [MESSAGE] -<icon>[MATURITY_ICON]</icon>‐[MATURITY_STR] +<icon>[MATURITY_ICON]</icon>-[MATURITY_STR]