Jump to content

Viewer Performance Improvements


Alexa Linden
 Share

You are about to reply to a thread that has been inactive for 817 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I can't meaningfully run the "Performance" viewer since both of my computers run Linux. One is a Ryzen 3600/Radeon RX 580 system running Linux Mint 20.3 Una with the 5.13 kernel and Mesa 21. The other is an Intel i3 6100/GTX 960 system running Ubuntu 20.04.3 with proprietary Nvidia graphics drivers. Running the "Performance" viewer would require use of WINE, and my framerates would be meaningless to any discussion.

On 1/14/2022 at 1:41 AM, arabellajones said:

I use Cool VL Viewer and Firestorm.

Look up Alchemy project's Discord channel and try out their "Agile Akita" beta viewer. The devs are very Linux friendly. Do NOT bother with the old windlight-based viewer on the Alchemy project web site. Alchemy is very fast and looks great with its unique CAS (Contrast Adaptive Sharpening) not found in any other viewer at this time.

On 1/16/2022 at 11:37 PM, Andred Darwin said:

this viewer is anywhere from 25% to 50% faster

I have to wonder if that is really so? You might be right, but then again... The major causes of slowdown are draw distance, shadows, reflective water, and LoD. When comparing two different viewers, it's a good idea to turn off shadows (while keeping ALM enabled), set water to Opaque, and manually set RenderVolumeLoDFactor, which you do. I believe that Firestorm often gets an undeserved reputation for being slow because people will use the Phototools floater to improve the shadows and water reflections, which naturally makes the framerate drop. Then they'll try some new viewer which by default has lower quality shadows, 'medium' water reflections (or set to Opaque), and LoD of 1.125. All of a sudden, they've got terrific framerates! Nope, that's not how it's done. Take the Opaque water setting, for example. You can be in the middle of the mainland far from visible water, but the water setting IS having an effect on your framerate anyway. Only compare viewers with water set to Opaque no matter where you do your test. Fortunately most viewers have nice looking opaque water, so you might even keep that setting most of the time.

On 1/16/2022 at 11:37 PM, Andred Darwin said:

uncheck Enable V-Sync in preferences... 

I don't use the computer with Nvidia GTX 960 as often to log in to Second Life, and it's connected to a fixed 60Hz monitor. Vsync and Nvidia have never gotten on too well in my experience, at least on Linux. Either there's micro stutter or screen tearing. I can't stand either.

My RX 580, on the other hand, is connected to 2 adaptive sync monitors. One is 144Hz and the other is 75Hz. There is NEVER screen tearing. Period. And Vsync settings make absolutely NO difference in performance with ANY viewer. In fact, Alchemy 6.5.2.1342 feels smooth even at lower framerates, meaning that frame timing IS important.

Edited by KjartanEno
clarification
  • Thanks 1
Link to comment
Share on other sites

5 hours ago, KjartanEno said:

I have to wonder if that is really so? You might be right, but then again... The major causes of slowdown are draw distance, shadows, reflective water, and LoD. When comparing two different viewers, it's a good idea to turn off shadows (while keeping ALM enabled), set water to Opaque, and manually set RenderVolumeLoDFactor, which you do.

Yes, I was comparing the official viewer with this performance viewer, with the same settings (draw at 128sqm, as high as possible everything else except depth of field, and unchecked V-Sync), sincerely, in some areas the performance improvement is over 100%, looking at the same direction, same position, same scene, 2 avatars... I have never seen a viewer running at 170 fps looking at a scene ... it's really nice to see it moving that direction. V-Sync would cap the fps to match your monitor, but at the same time, makes it feel really smooth turning (provided your video card can keep up with your monitor frame rate).

I'm a big fan of Linux and pretty much what I use at work ( latest Debian, servers, etc... ), but this test machine is a Windows 10 machine with RTX 3060, and an old i7 6700k 64gb memory... today, I also tested on another machine with the same base configuration but with a GTX 1080... the results are very similar, the 3060 performs faster than 1080 for SL, 5% to 10%. 

Would be nice if it gets to a point where everyone can see that kind of improvement allowing a larger draw distance and maybe bumping up a bit the default LOD factor (I use 4 when not building and 2 when building, seems like 2 is the default in Firestorm, and a very ugly 1.125 in the official viewer).

I know there could be a long conversation about LOD factor, but reality is that in-world today, anything less than 2, and most items will only rez if you are close to them, ugly ..., I'm lucky that the system I use, can handle the LOD set at 4 with a draw area of 128 sqm, and performs reasonably if there are less then 10 avatars within the draw area..... 

One thing though, after installing the performance test viewer, I could not use the official viewer anymore, the selection highlights while editing were just "borked" ... but fixed itself after uninstalling everything and installing the official viewer again... 

Anyway, would be great to see some Linux love too, but I'm pretty pleased with what they are doing with this test viewer.

 

Edited by Andred Darwin
  • Thanks 1
Link to comment
Share on other sites

10 hours ago, Andred Darwin said:

I have never seen a viewer running at 170 fps looking at a scene ...

It depends on the scene, and on your hardware, OS, graphics drivers...

Under Linux, on a 9700K @ 5.0GHz + GTX1070Ti @ 1900MHz-9200MT/s, with the Cool VL Viewer (DD 256m, all other settings to the max), in my skybox, with 3 avatars (mine + 2 alts), I can see figures ranging from 600 to 940fps, depending on what my avatar is wearing, with the WL renderer without ALM, or 250fps with the EE renderer + ALM + shadows (whatever my avatar is wearing, because 95% of the overhead is then in the shadows rendering).

Frame rates over 150fps are also a common occurrence for me (with 256m DD, in regions with neighbouring sims, or 512m in islands), even with ALM on (but shadows off) in many places... Especially if you are using Linux, then give it a try; you might be agreeably surprised.

I will likely open a new experimental branch of my viewer with LL's improvements once their ”performances viewer” goes RC (for now, it still got too many render glitches/bugs).

Edited by Henri Beauchamp
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Henri Beauchamp said:

It depends on the scene, and on your hardware, OS, graphics drivers...

Under Linux, on a 9700K @ 5.0GHz + GTX1070Ti @ 1900MHz-9200MT/s, with the Cool VL Viewer (DD 256m, all other settings to the max), in my skybox, with 3 avatars (mine + 2 alts), I can see figures ranging from 600 to 940fps, depending on what my avatar is wearing, with the WL renderer without ALM, or 250fps with the EE renderer + ALM + shadows (whatever my avatar is wearing, because 95% of the overhead is then in the shadows rendering).

Just tried and indeed, its a fast viewer! Great job! I can only imagine the hours you put into it, porting things, etc... Your viewer is a keeper, quite nice to see the UI as it used to be!

Maybe would be nice to start a thread or a couple of threads (Windows, Mac, Linux), sharing machine specs and fps readings from a specific scene in-world ( let's call it "neutral zone" lol with a pose stand, etc.  ), shared in a simple formatted way, could be useful to anyone looking to upgrade or just choose a newer graphics card ( not necessarily new ) and not over spend... ( I know that any newer card would do a good job, but it's nice to get some info on what to expect.. from a SL standpoint )

We could share some standard settings to be used for the fps readings, with and without shadows... ( which could allow us learn a thing or two as well )

For a neutral scene, could maybe use some at Bay City, Nautilus, Horizons... with some water around..., whichever would include a bit of all components within rendering... maybe @Patch Linden could work his magic and donate / build a small area for that purpose.

I think you ( Henry ) and maybe other viewer developers, could set the settings that would better fit the purpose ... and lead the threads...

 

Link to comment
Share on other sites

8 hours ago, Andred Darwin said:

We could share some standard settings to be used for the fps readings, with and without shadows... ( which could allow us learn a thing or two as well )

For a neutral scene, could maybe use some at Bay City, Nautilus, Horizons... with some water around..., whichever would include a bit of all components within rendering... maybe @Patch Linden could work his magic and donate / build a small area for that purpose.

For 100% reproducibility, we'd rather need a dedicated sim (an island to avoid ”noise” from neighbouring sims) on Aditi, with a ”typical” setting (possibly copied over from an existing sim in Agni) and, most important, one or two dozens of bot avatars staying immobile in that sim (here again, preferably wearing ”typical” mesh bodies and various attachments). Then, useful data could be gathered by LL and TPV developers alike to try and optimize their viewers...

  • Like 2
Link to comment
Share on other sites

On 1/19/2022 at 2:04 PM, KjartanEno said:

I have to wonder if that is really so? You might be right, but then again...

Yes it is faster. How much faster depends on the situation. One of the improvements is the water reflections. With no water in the viewer’s draw distance, the difference between opaque and everything is about 1%.

Link to comment
Share on other sites

15 hours ago, Lyssa Greymoon said:

One of the improvements is the water reflections. With no water in the viewer’s draw distance, the difference between opaque and everything is about 1%.

Here's a lovely stop along the Zany Zen Railway. I took a couple of screenshots on my Intel i3 & Nvidia GTX 960 computer with Cool VL Viewer running Ubuntu. Notice that there's no water around, but the location isn't in a skybox either. This isn't about who has a "better" computer. It's about relative performance with ALM enabled, shadows off, and water set to opaque vs reflective/transparent, as I suggested in my previous post.

Reflective Water:

NVI-CLVL-RW.thumb.jpg.0a5cfc57e97ac8044ea501266830ba94.jpg

Opaque Water:

NVI-CLVL-OW.thumb.jpg.ac65adaf7eb02b69b84a1f4ba3023e71.jpg

I like the Lua scripting option provided in Cool VL Viewer. A few of my sidebar buttons toggle depth of field, shadows, and water reflections. One-click does the trick. Setting the viewer to opaque water gave a ~20% improvement in framerate with the shadows turned off. Similar results were obtained with other viewers and my AMD Ryzen/Radeon computer.

Does the Performance Project viewer give similar improvement by changing water to opaque in this location?

Link to comment
Share on other sites

1 hour ago, KjartanEno said:

Notice that there's no water around,

.../...

Setting the viewer to opaque water gave a ~20% improvement in framerate with the shadows turned off. Similar results were obtained with other viewers and my AMD Ryzen/Radeon computer.

Does the Performance Project viewer give similar improvement by changing water to opaque in this location?

Ideally, the code should automatically skip entirely water rendering (and reflections updates) when the water body (which exists in all sims, even when it is under the land surface) is fully culled... This would indeed give a fps bonus in many land-only sims.

Once this is done, another possible, finer grained, optimization would be to split the sim water surface into, say, 16 surfaces and render only the ones that are not culled (thus also covering the cases of sims with a few visible water surfaces).

Link to comment
Share on other sites

10 hours ago, KjartanEno said:

Does the Performance Project viewer give similar improvement by changing water to opaque in this location?

On my Lenovo E30, Core i7 2600, Quadro K2200 and the Dec. 17th performance viewer I'm getting ~38fps no matter what the water reflection setting is at that spot after all the textures load.

Link to comment
Share on other sites

10 hours ago, Henri Beauchamp said:

Ideally, the code should automatically skip entirely water rendering (and reflections updates) when the water body (which exists in all sims, even when it is under the land surface) is fully culled... This would indeed give a fps bonus in many land-only sims.

Once this is done, another possible, finer grained, optimization would be to split the sim water surface into, say, 16 surfaces and render only the ones that are not culled (thus also covering the cases of sims with a few visible water surfaces).

Would that really mean an improvement though? You are still rendering the reflections and regardless of how much of the water volume is visible, you are still using a virtual extra camera and rendering essentially the entire world a second time, cutting out single parts out of the water wouldn't help there, if anything it would be completely wasted depending on how you implement it. Say you remove a single tile in the middle, you'd still have to have the camera render basically almost everything across the entire surface since it would still be visible somewhere on the surface of the other pieces, as long as the water plane still exists somewhere and needs water reflection updates we are still going to incur a massive performance cost, despite cutting out large areas of the surface. That is not to mention the bad culling we have...

Link to comment
Share on other sites

2 hours ago, NiranV Dean said:

Would that really mean an improvement though? You are still rendering the reflections and regardless of how much of the water volume is visible

This is why I did not mention skipping reflection updates in the 16 tiles case, but just the rendering of the said tiles.

True, it won't help much on the CPU side of the code, but would still make things lighter on the GPU side (less things to render, and water shaders applied to less pixels).

Edited by Henri Beauchamp
Link to comment
Share on other sites

7 hours ago, Henri Beauchamp said:

This is why I did not mention skipping reflection updates in the 16 tiles case, but just the rendering of the said tiles.

True, it won't help much on the CPU side of the code, but would still make things lighter on the GPU side (less things to render, and water shaders applied to less pixels).

Now i wonder how much it even taxes the GPU, with the GPU being highly unutilized unless using calculation intensive shaders (such as depth of field).

With Deferred Rendering and Shadows and full water reflections enabled: 70-75% GPU usage. ~55 FPS.

With Deferred Rendering and Shadows and without water:  83-85% GPU usage. ~71 FPS.

Without Deferred Rendering and full water reflections enabled: 23-24% GPU usage. ~56 FPS.

Without Deferred Rendering and without water: 24-25% GPU usage. ~88 FPS.

Interesting but not entirely unsurprising. Disabling water kills the entire water and reflection update code which solely runs on the CPU, by eliminating this we eliminate a massive CPU overhead resulting in the GPU being able to be utilized more now that the CPU can shove other things faster into the GPU to handle. Without Deferred however we hardly see a GPU utilization increase since without Deferred the GPU is basically just idling anyway, almost all the high GPU usage shaders are off in pre-Deferred.

Link to comment
Share on other sites

1 hour ago, NiranV Dean said:

With Deferred Rendering and Shadows and full water reflections enabled: 70-75% GPU usage. ~55 FPS.

With Deferred Rendering and Shadows and without water:  83-85% GPU usage. ~71 FPS.

Without Deferred Rendering and full water reflections enabled: 23-24% GPU usage. ~56 FPS.

Without Deferred Rendering and without water: 24-25% GPU usage. ~88 FPS.

Beware ! The more FPS, the more GPU usage, so you must make the usage figures proportional to the frame rate:

ALM and water: 72.5 / 55 = 1.32% per frame

ALM no water: 84 / 71 = 1.18% per frame

No ALM and water: 23.5 / 56 = 0.42% per frame

No ALM no water: 24.5 /88 = 0.28% per frame

However, this does not properly take into account the CPU main thread (non rendering tasks) overhead (which slows down the frame rate).

Still, this shows off the weight of the water rendering on the GPU side.

Link to comment
Share on other sites

6.6.0.567604 (project viewer)

fpspv.jpg.0f0ae43d36fcd869f10ad69055a608c0.jpg

 

6.5.3.567451 (standard viewer)

 

fpssv.jpg.70d1fa6202e4097b38e20afe81f865c2.jpg

 

Quote

CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (3400.02 MHz)
Memory: 16318 MB
OS Version: Microsoft Windows 10 64-bit (Build 19043.1466)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce GTX 1050 Ti/PCIe/SSE2

same scene, same graphic settings. So am pretty happy with the project viewer 

edit add: Should say that this scene is on a LDPW Homestead region with only 5 Linden grass objects on it which are not in the view.  Just me, the terrain, the sea and the sky

but it seems the gain is consistent across all regions percentage wise. 20% gain about for me looks like give or take

 

Edited by Mollymews
  • Like 1
Link to comment
Share on other sites

3 hours ago, Mollymews said:

6.6.0.567604 (project viewer)

fpspv.jpg.0f0ae43d36fcd869f10ad69055a608c0.jpg

 

6.5.3.567451 (standard viewer)

 

fpssv.jpg.70d1fa6202e4097b38e20afe81f865c2.jpg

 

same scene, same graphic settings. So am pretty happy with the project viewer 

 

That's really nice improvement. Will this eventually be merged into the main viewer (and in other viewers like Firestorm)?

Link to comment
Share on other sites

15 minutes ago, tomm55 said:

That's really nice improvement. Will this eventually be merged into the main viewer (and in other viewers like Firestorm)?

yes, usually

once Linden are happy with project viewers they usually move them into the release candidate queue.  On which TPVs start to include the new code in their own viewers

i have a pretty low level gfx card by today's standard (NVidia 1050TI on a 2K monitor) so I am really happy with what looks to be about a 20% performance gain with Shadows On for me.  I have seen some other posts on here where more powerful gfx cards are seeing a 40% performance increase for them. So is pretty good I think where Linden is going with the work

 

Edited by Mollymews
2K
  • Like 1
Link to comment
Share on other sites

On 1/27/2022 at 1:11 AM, Mollymews said:

6.6.0.567604 (project viewer)

fpspv.jpg.0f0ae43d36fcd869f10ad69055a608c0.jpg

 

6.5.3.567451 (standard viewer)

 

fpssv.jpg.70d1fa6202e4097b38e20afe81f865c2.jpg

 

same scene, same graphic settings. So am pretty happy with the project viewer 

edit add: Should say that this scene is on a LDPW Homestead region with only 5 Linden grass objects on it which are not in the view.  Just me, the terrain, the sea and the sky

but it seems the gain is consistent across all regions percentage wise. 20% gain about for me looks like give or take

 

Thanks for the test, but do you have vsync enabled? It's really odd for the fps to stop at 60fps unless vsync is enabled, you might get better FPS if you have it enabled and you turn it off.

Link to comment
Share on other sites

10 hours ago, Flea Yatsenko said:

Thanks for the test, but do you have vsync enabled? It's really odd for the fps to stop at 60fps unless vsync is enabled, you might get better FPS if you have it enabled and you turn it off.

on both viewers disableVerticalSync = True (the viewer default recommended setting)

my NVidia setting: Vertical sync = Use 3D application setting

my monitor resolution is: 2560 x 1440 (native)

monitor refresh rate: 75Hz

  • Thanks 1
Link to comment
Share on other sites

20 hours ago, Flea Yatsenko said:

Thanks for the test, but do you have vsync enabled? It's really odd for the fps to stop at 60fps unless vsync is enabled, you might get better FPS if you have it enabled and you turn it off.

There appears to be a frame limiting function unrelated to vsync. In my home I get constant 60fps, in the skybox 505 meters up it jumps to a constant 75fps both without vsync, and it’s usually much higher in both locations.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 817 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...