Avatar shadows as see using the debug, top left; rigged mesh avatar body seen in default avatar shadow rendering (debug setting 3); Top right: as seen with the debug set to 2 (Chalice Yao’s adjustments; bottom left: as seen with the debug set to 1, showing the system avatar shadow, rather than the rigged mesh body shadow; bottom right: the setting reduced to 0, only unrigged attachment shadows are rendered – see below for details (images via Marine Kelley)
The latest version of RLV appeared on Friday, June 26th. Version 2.9.12 brings with it an attempt by Marine Kelley to lighten the load placed on your GPU when rendering complex rigged meshes (such as avatar bodies) when running with shadows enabled in the viewer.
In her notes accompanying the release, Marine states:
I have become a mesh body user not long ago, and like every mesh body user, I quickly found out that having dynamic shadows activated while wearing a complex mesh body (Maitreya which is my choice, but also Eve, Belleza, Slink, Abar, TMP…) totally kills the FPS (Frames Per Second, the measure of rendering speed). Like, it divides them by half. It was so bad that I had to turn the shadows off, and I’m sure I’m not the only one.
I knew it was due to the avatar shadows, simply by looking at the Fast Timers in-world (press Ctrl-Shift-9 to show them). A little digging in it and you see “Avatar Shadows” in plain letters as the FPS hog. In fact, this was due specifically to complex rigged mesh rendering, the FPS slowdown wasn’t due to unrigged attachments or anything like that. And since mesh bodies are among the most complex rigged mesh around, they kind of made that issue more obvious. And over time, more and more people switch to mesh bodies, so something had to be done.
Regular readers here know that something is being done at the Lab’s end of things, with the forthcoming introduction of Avatar Complexity. This has the advantage that it takes into account other elements within avatars that can push up rendering complexity and thus reduce performance, such as over-use of very high resolution textures, etc. This disadvantage is that people will have to get used to having Jelly Baby avatars around themselves, which may not be to everyone’s liking.
As noted, Marine’s aim is to allow those people who have previously been able to run the viewer with shadows enabled, but who are finding it impossible to do so when in locations with a number of complex avatars present due to the performance hit they’re taking, to be able to do so again by reducing the hit taken by their system.
As she acknowledges in her release notes, the original idea actually came from Chalice Yao, who has been poking at things with her NaCl viewer. With RLV 2.9.12, Marine adds what she believes to be further refinements to Chalice’s work, which in turn may feed back in to NaCl.
The RestrainedLoveAvatarShadows debug setting in RLV 2.9.12
Essentially, Marine has added a debug setting to RLV, RestrainedLoveAvatarShadows, accessed via the Debug settings floater (under the Advanced menu).
The debug offers four settings (3 down to 0) which offer different levels of rendering avatar shadows, thus:
- 3- the default (what Marine calls “legacy”) rendering of avatar shadows commonly seen in viewers: an exact rendering of avatar shadows with rigged and unrigged attachments, and which recognises alpha masks
- 2- Chalice Yao’s initial adjustments to avatar shadow rendering. Said to simplify the shadow rendering to offer noticeable performance improvements when running in locations with a number of complex avatars
- 1 – render simplified avatar shadows. The first of Marine’s additions to Chalice’s code, this ignores any alpha masking of the system avatar shape, causing its shadow to be rendered, along with the shadows of unrigged attachments. All shadows associated with rigged attachments (e.g. mesh bodies, etc.), are ignored
- 0 – don’t render avatar shadows. This will leave avatars with no shadow at all, with the exception of unrigged attachments, therefore offering the biggest potential boost in performance.
Marine offers a series of images demonstrating the resultant shadows, as shown at the top of this article, together with the FPS boosts she sees. The latter may be too small to read in the image collection produced here, so I recommend reading Marine’s blog post for full details.
As I don’t have anything other than a demo fitted mesh avatar body, and also have a fairly high-spec system which includes a GTx 970 with 4GB of memory which handles most situations pretty well, I’ve not been able to practically test how all of this plays out.
However, given this solution is aimed at reducing performance hits when shadows are enabled in the viewer, it’s perhaps not going to suit everyone. If your system already struggles with handling shadow rendering regardless of the complexity of any avatars around you, for example, you may not gain much from using the debug settings. But if you are an TLV user who finds Marine’s situation as quoted towards the top of this article to be familiar, this update a go could well help you. Either way, the one way to find out is to download RLV 2.9.12 and give it a go.