Jump to content

Project Sunshine - How and how much does it improve asset loading?


Mircea Lobo
 Share

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

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

Recommended Posts

As I was looking through my Youtube submissions, I saw this video on the list. It explains that SL is getting a new system called "Project Sunshine" meant to improve avatar loading, and since I hate gray and blurry avatars I watched curiously to see how it's implemented and how much it's going to improve loading. But the description halfway through the video left me a bit confused at least.

Apparently this is meant to solve gray avatars by processing some textures server-side. Although I don't know the SL code, I always thought the issue is textures and shapes taking too long to network over, not the viewer having little resources to process them (since any modern CPU / GPU prolly handles that quickly). Being a developer myself, this makes little sense as to how it's helpful... so I was wondering if someone can offer a better technical description.

There's only one thing the server could do apart from better compression; When avatars have multiple textures applied to the same area of the mesh, combine all textures and send just one. So instead of sending two textures and letting the client map them, the server can indeed combine them (same way you flatten multiple layers in Photoshop) and send that to the viewer. But from what I seen that's a rarer case. Most complex avatars today are problematic because they have a lot of attachments, while typically using simple / few clothes of the native avatar system.

Something else I'm thinking about: Although the gray / blurry textures affect avatars most visibly, they're not an avatar issue. Any mesh, sound or texture takes long to load, including objects in the sim. I'd rather Linden tried to find an ingenious system to fix the problem entirely including this. Although the main factor of textures loading slowly is networking (which only technology in the (non-Linden) labs can fix) there might be ways to slightly optimize the networking of assets. For example, some textures getting stuck and never loading at all (I know that used to happen in the past at least).

I'm not saying this won't be helpful at all, since anything that reduces networking and loading is good. But IMO Linden might be a bit overly triumphal on something that's a minor optimization. So yeah... those are my 2 cents on the Project Sunshine idea. I was curious how exactly the server can optimize avatar loading time, apart from texture compression and server-side layer merging. Are there also clear benchmarks comparing texture loading with and without this?

Link to comment
Share on other sites

I'm no expert but baking in SL usualy revers to the process of maping textures to surfaces so involves a litle more then just combining textures but I do agree that at first tought the improvement would be minor, on the other hand we have lost the abilety of z offset without editing shape so there might be more to it then it looks like.

Link to comment
Share on other sites

With the old system when changing your avatar's appearance every texture took three trips through the network - one from the servers to your viewer, where they were assembled and "baked" into the avatar clothed skin, then this baked avatar had to be sent from your viewer to the servers, then it was re-sent BACK from the servers to your viewer so you'd actually see the same baked avatar as everyone else. This third step is why after baking your avatar will look crisp at first, then blurred for a period of time, then (hopefully) crisp once more. It also meant that people's internet connections were relied on to send bit-heavy graphics as uploads when many consumer internet connections have woeful upload speed/quality.

With the new system, your viewer sends the UUID's of the textures to a baking server which assembles the baked avatar and then sends it to your viewer, thereby cutting out 2/3 of the texture transmission.

Link to comment
Share on other sites


Mircea Lobo wrote:

Apparently this is meant to solve gray avatars by processing some textures server-side. Although I don't know the SL code, I always thought the issue is textures and shapes taking too long to network over, not the viewer having little resources to process them (since any modern CPU / GPU prolly handles that quickly). Being a developer myself, this makes little sense as to how it's helpful... so I was wondering if someone can offer a better technical description.

When LL put in the old baking setup, they were thinking as you are, that this compositing should be an easy enough job for any PC that can handle SL in the first place. In reality, the world is fully of buggy hardware, buggy drivers that aren't or can't be updated, and networks that are a lot less reliable than they should be. Server side appearance is really about eliminating all those variables.

Link to comment
Share on other sites

Yeah, I'm familiar with buggy drivers and things that can go wrong there. Especially since moving to Linux where video drivers are one of the greatest points of instability.

Still, multi-layering of textures is one of the simple tasks (in its basic form at least). I don't know how the SL viewer does it and if more advanced magic is involved, but typically even the oldest OpenGL applications can easily layer multiple textures on the same model. I'm a bit unclear why it's easier to do it server-side instead of using a simple and stable way of doing it in the viewer. Apart of course from sending one merged texture which should take less networking.

Anyway, any optimization done the right way (uncertain at that in this case) is helpful, so I'll note this on the list of good things LL did. But personally, I'd still think more about a smart system to make all textures load faster... including terrain and in-world objects.

Link to comment
Share on other sites

For some reason people like to use 1024x1024 textures for everything...I mean EVERYthing.

So, one avatar with 3x1024's for skin, 1x for pants, 1x for shirt, 1x for underpants, 1x for undershirt, 2x tattoo and a nice alpha as cherry on top and we have 10 big textures and 10 potential failures. A lot more relyable and faster if the baking is done server side.

On top of that, it means less chances of copybotting. That alone would be reason enough if you ask me.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 4054 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...