Commit Graph

529 Commits (c082f0cd76a5cb6bb484e8e7928ce064aee0a1e1)

Author SHA1 Message Date
minerjr c082f0cd76 FIRE-35081 - Handled animated/media textures, grass, tree and light textures
Added new boost levels for Tree, Grass and Light textures (More for tracking as they have custom hard coded values for the mPixelArea which causes issues with loading of sizes.
Added adjustments for the calcPixelArea and calcImportanceToCamera as well as getTextureVirtualSize
Added virtual texture size updates for Media textures

Added code to scale down off screen textures (saves a lot of texture VRAM.
Added additional features for the LLViewerTextureList::Dump

Only issue is server controlled textures which animate tend to load low quality, then upscale as well as Sculpted Volume's which force textures to reload.
2025-03-17 23:13:41 -03:00
minerjr 5b0801e535 [FIRE-35081] - Fixed blurry textures and scaling issues
Added new calculation to the LLCamera for draw distance multiplier
Removed the Inverse aspect as not longer used
Modified the LLFace to no long user the inverse aspect.
Updated mInFrustum to use mImportanceToCamera as it was correct
LLViewerCamera removed the mCosCameraFOV (not used anymore)
Added LLViewerMenu option under Developer->Dump->Texture List to dump texture list to info for debugging.
LLViewerTexture viewer for LOD textures, now loops to make the texture fit to cover the max discard value instead of calculating with logs and divisions.
LLViewerTextureList updated to to dump texture list to the Infos, and updated to boost for not only textures based upon the importance to the camera, but to boost a second time for textures close to the camera. Also capped the mMaxVirtualSize to try to help track down texture size changes
Updated LLPipeline to use same getDrawDistanceMultiplier as the texture calcPixelArea code.
2025-03-12 00:32:16 +00:00
minerjr c64a294cf1 Fixed up animations to always be running (Frustum may need revision
Fixed up animations to always be running, so they should not stutter or be in odd places when turning the camera.
May need to revise the mInFrustum as trying to make sure it's within the actual visual location. Need to test with
2025-03-12 00:32:16 +00:00
minerjr 87eb902f7a [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer
Changed the textures to divide the texture vsize  by the Aspect Ratio and Fields of view. to better control when a texture needs to be scaled down.
Fixed issue when low screen image size could cause an assert on the on screen console due to negative sizes(Calculated to -30 from the value and code that uses the negative location
Updated the logic in LLViewerObjectList to fix the issue of mObjects being modified at possibly any time by the code it calling.
2025-03-12 00:32:16 +00:00
minerjr 55a39da74e FIRE-35081 Blurry prims not changing with graphics settings, not happening with SL Viewer - cont.
Refined the logic for the textures to include animated textures to not be downscaled They are not forced to be high boost level.
Update the logic of how to process the on screen max vsize to be simpler.
Added split time max_time for the updateImagesCreateTextures, as originally they were two different functions and can save doubled the time for each.
Added time limit on LLViewerObjectList::updateApparentAngles, as it it affects the Textures in the texture list and worked on a fixed # of objects per frame and each object is variable in the amount of processing required, affecting frame rate and # of textures updated.
2025-02-27 08:55:47 -04:00
minerjr 097bbc7c26 FIRE-35081 - Updated logic
Updated the math to remove the need to store the variable and use it again
Updated the "TextureCameraBoost" to default to 7, as we add 1 to the value now instead of using max (TextureCameraBoost, 1.0f)
2025-02-22 11:12:36 -04:00
minerjr 6a4ec7a0b4 FIRE-35081 - Updated logic
Cleaned up the logic to be 1, cleaner and 2, more performant.
Moved allocations outside the loop as well as the static texture_camera_boost setup as it should be only done once and not every time a face is on screen.
Cleaned up switch statements into couple of if statements as switch logic would be only good if only 1 level to be used.
2025-02-22 10:46:40 -04:00
minerjr 7bd44050a6 FIRE-35081 Blurry prims not changing with graphics settings, not happening with SL Viewer
Added new logic in the LLViewerTextureList::updateImageDecodePriority method to better handle the texture quality.

- 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.

So now, only LOD textures will change on screen, except for Fetched textures when the bias is greater then 2.00.

Also made possible fix for edge case of multiple faces for 1 texture, the last face dictates which happens to the texture. Now any that are in camera will flip signal that it is on screen.

System can be made to be be flexible.

To test out, Go to Preferences->Graphics->Rendering Settings and move the VRAM override to the far left. Then walk around and try to notice if there are any downscaled or blurry textures. To test a blurry object. Right click on it and pick edit. All of the game objects will have a max quality texture applied. Click off and see if the texture on the object changes quality to a blurred mess.
2025-02-22 00:12:07 -04:00
Ansariel 5bf1f485f3 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llqueuedthread.cpp
2025-02-13 21:24:29 +01:00
Maxim Nikolenko 09c60de43c
#3210 Fix for "Texture will be downscaled" log message happening too often 2025-02-12 17:09:44 +02:00
Jonathan "Geenz" Goodman 93a88e6025
Water Exclusion Surfaces (#3517)
* #3455 Add support for water exclusion surfaces
2025-02-07 05:55:47 -05:00
Ansariel 67b0717ba2 Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer 2025-01-16 20:53:48 +01:00
Andrey Kleshchev 6dc819e22a #3364 Fix update rate being stuck high due to bias
if bias stays unchanged at 4.f, there is no reason to keep refreshing
at high rate.
2025-01-16 10:02:54 +02:00
Ansariel 215c2d2de0 Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer 2024-12-05 23:26:47 +01:00
Dave Parks 1120a7ccb9
#3210 Fix for "Texture will be downscaled" happening too often. (#3212) 2024-12-05 13:52:03 -06:00
Dave Parks 4b5d4be5a8
#3106 Lower maximum texture bias back to 4, reintroduce camera importance texture scaling (#3207) 2024-12-04 12:33:04 -06:00
Ansariel 705d3d6254 Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer 2024-11-20 19:07:41 +01:00
Andrey Kleshchev 8d52d06fcb Crash at getDiscardLevel() 2024-11-19 23:28:09 +02:00
Ansariel 1531b28979 Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/app_settings/settings.xml
#	indra/newview/pipeline.cpp
2024-11-13 11:31:28 +01:00
Dave Parks 2b255535ef
2590 mac intel and radeon pro 5300m horrible fps 2 (#3030)
* OpenGL 3.3 compatibility pass.  Fix for FBO driven downscaling corrupting textures.
* Increase maximum texture bias, immediately scale down when textures are loaded higher resolution than desired
* #2590 Fix for some frame stalls on Intel Macs
2024-11-12 15:26:38 -08:00
Ansariel 78b3eb9ad6 Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llviewertexture.cpp
2024-10-26 15:05:28 +02:00
Andrey Kleshchev fa5aba2b67 viewer#2875 Proportionally agressive vram cleanup 2024-10-25 13:53:11 +03:00
Ansariel 95707d7c13 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm-deltafps
# Conflicts:
#	indra/newview/llviewertexturelist.cpp
2024-09-05 01:05:15 +02:00
Ansariel b8a0d89dfc Merge branch 'release/2024.08-DeltaFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llrender/llgl.h
#	indra/newview/llviewermenu.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/skins/default/xui/en/notifications.xml
2024-09-05 01:00:39 +02:00
Brad Linden 49abe2c8bc Merge remote-tracking branch 'origin/release/2024.08-DeltaFPS' into develop 2024-09-04 12:51:24 -07:00
Dave Parks cb9f3dcfe9
#2482 Low end NVIDIA compatibility pass (#2486)
- Use GL_NVX_gpu_memory_info when available
- Disable transparent water on Mid+ and lower
- Adjust GPU benchmark to better tell the truth
- Texture bias tune up
- viewer-private/#277 - Report foreground_time in viewer stats
2024-09-04 11:34:44 -05:00
Ansariel bea9a8e612 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/pipeline.cpp
#	indra/newview/skins/default/xui/en/notifications.xml
2024-09-04 00:33:40 +02:00
RunitaiLinden 1f58884db9 #2438 Address frame stalls in updateImageDecodePriority 2024-08-28 13:14:58 -05:00
RunitaiLinden feecf09573 #2431 Fix for redundant searching for pixeismall.j2c causing frame stalls 2024-08-27 15:59:41 -05:00
Ansariel 033fd2e476 Merge branch 'release/2024.08-DeltaFPS' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llcallstack.h
#	indra/llcommon/llmemory.cpp
#	indra/newview/llviewerobject.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvovolume.cpp
2024-08-27 18:33:30 +02:00
Dave Parks 0edf6e230e
#2388 Texture downrezzing tune up. (#2414)
- Hold onto unreferenced textures for 30 seconds.
- Don't downres unless memory is low
- Downres when viewer is backgrounded.
2024-08-23 16:35:52 -05:00
Ansariel 830eeaa6ff Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llagentwearables.cpp
#	indra/newview/llface.cpp
#	indra/newview/llpanelpeople.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llviewertexturelist.cpp
2024-08-21 00:46:46 +02:00
Dave Parks ed6732eda8
#2315 Ensure textures are deleted when they are no longer referenced. (#2343)
* #2315 WIP -- Clean up deletion rules in texture list.  Incidental decruft.

* Touch up assertions.

* Move mLastReferencedTimer to LLViewerMediaTexture since it's no longer used by LLViewerTexture
2024-08-20 06:59:07 -05:00
Ansariel 07228d3a9e Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	autobuild.xml
#	indra/cmake/CURL.cmake
#	indra/cmake/Copy3rdPartyLibs.cmake
#	indra/cmake/FreeType.cmake
#	indra/cmake/LLPrimitive.cmake
#	indra/cmake/NGHTTP2.cmake
#	indra/cmake/Tracy.cmake
#	indra/llappearance/llavatarappearancedefines.cpp
#	indra/llcommon/llprofiler.cpp
#	indra/llcommon/llprofiler.h
#	indra/llfilesystem/lldiskcache.cpp
#	indra/llfilesystem/lldiskcache.h
#	indra/llinventory/llinventorytype.cpp
#	indra/media_plugins/example/CMakeLists.txt
#	indra/newview/CMakeLists.txt
#	indra/newview/installers/windows/installer_template.nsi
#	indra/newview/llappearancemgr.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llgroupmgr.cpp
#	indra/newview/llimprocessing.cpp
#	indra/newview/llviewermenu.cpp
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvoavatarself.cpp
#	indra/newview/skins/default/xui/en/menu_viewer.xml
#	indra/newview/viewer_manifest.py
2024-08-15 00:12:13 +02:00
Beq Janus 50e05c70d3
Interim fix for particles no longer rezzing properly. (#2227)
In a previous PR, I noted:

Note this change moves the calcPixelArea() call to the top BEFORE we user getPixelArea(). Either that call is entirely redundant (i.e. if calc was called earlier in the frame) or we were using the stale pixelArea (one frame behind). If the former is true then it might be faster to just do an AABB frustum check.

It turns out that by moving the calcPixelArea to the "correct place", we break the rezzing of particles which are then being downsampled as a result. Moving this back to the "incorrect" location undoes the immediate effect but this whole scenario may need to be re-examined.
2024-08-12 21:01:34 +03:00
Ansariel 04bed35215 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llwebrtc/llwebrtc.h
#	indra/newview/llfloateremojipicker.cpp
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvoavatar.h
2024-08-02 13:01:06 +02:00
Andrey Kleshchev 793f5ac341 Crash at LLViewerTexture::updateClass() 2024-08-02 12:21:11 +03:00
Andrey Kleshchev beb177bb23 viewer#2153 Crash at LLViewerTextureList::updateImageDecodePriority
Crash at getTextureEntry which calls getTE(mTEOffset)
2024-07-31 18:16:18 +03:00
Ansariel eaa5dc798c Merge branch 'master' of https://bitbucket.org/Ansariel/phoenix-firestorm-atlasaurus
# Conflicts:
#	indra/newview/llfloaterregioninfo.cpp
#	indra/newview/llversioninfo.cpp
#	indra/newview/llviewertexturelist.cpp
2024-07-30 10:45:11 +02:00
Ansariel 0b9ac4ee19 Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts:
#	indra/llwindow/llwindowsdl2.cpp
2024-07-30 10:37:17 +02:00
Beq ff891ca38d FIRE-34277 - particles are refusing to rez
Oddly, calling getPixelArea() before calcPixelArea() is correct. This makes no sense but things break if we don't!
2024-07-29 21:30:58 +01:00
Ansariel bd32070073 This wasn't meant to go in - yet... 2024-07-22 21:03:54 +02:00
Ansariel e17c906698 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/cmake/Copy3rdPartyLibs.cmake
#	indra/newview/llcontrolavatar.cpp
#	indra/newview/lldrawpoolterrain.cpp
#	indra/newview/llmeshrepository.cpp
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvoavatar.cpp
2024-07-22 20:58:53 +02:00
Ansariel 76f2b1f48c Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llfloaterspellchecksettings.h
#	indra/newview/llpaneleditwearable.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewertexture.h
2024-07-16 10:44:38 +02:00
TommyTheTerrible 27a2531c5b
Fix: Stop textures from being set as inactive if still on a face. (#2017)
Textures were being set to Inactive even if still in scene, causing them to be deleted and re-decoded in a loop.
2024-07-14 00:39:09 +03:00
Ansariel cb43c1c792 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	autobuild.xml
#	indra/llcommon/llprofiler.h
#	indra/llcommon/llthread.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloaterpreferencesgraphicsadvanced.cpp
2024-07-10 12:36:15 +02:00
Ansariel 99396c859d Merge branch 'master' of https://github.com/FirestormViewer/phoenix-firestorm
# Conflicts:
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewertexturelist.cpp
2024-07-10 10:31:35 +02:00
Rye Mutt 2a7030992f
Update tracy profiler to 0.10 (#1946) 2024-07-09 16:53:43 -05:00
Ansariel 088cc2ea35 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llpointer.h
#	indra/llcommon/llqueuedthread.cpp
#	indra/llfilesystem/llfilesystem.cpp
#	indra/llui/llconsole.cpp
#	indra/llui/llkeywords.cpp
#	indra/llui/llstatgraph.cpp
#	indra/llui/llvirtualtrackball.cpp
#	indra/newview/llagentcamera.cpp
#	indra/newview/llappviewer.cpp
#	indra/newview/llfloateremojipicker.cpp
#	indra/newview/llfloaterimnearbychathandler.cpp
#	indra/newview/llfloatersettingsdebug.cpp
#	indra/newview/llfloatersnapshot.cpp
#	indra/newview/llglsandbox.cpp
#	indra/newview/llnetmap.cpp
#	indra/newview/llpanelface.cpp
#	indra/newview/llpanelpermissions.cpp
#	indra/newview/llpanelplaceprofile.cpp
#	indra/newview/llstartup.cpp
#	indra/newview/llviewermessage.cpp
#	indra/newview/llvocache.cpp
#	indra/newview/llworldmapview.cpp
2024-07-09 02:25:42 +02:00
Ansariel 9fdca96f8b Re-enable compiler warnings C4244 and C4396 except for lltracerecording.h and llunittype.h for now 2024-07-08 20:27:14 +02:00