Pushing the Limits II — Snowglobe and ultrafast texture download [UPDATED THRICE]

On my last post, I’ve covered the amazing possibilities of dynamic shadows and the new lighting system, even on under-powered graphics cards and low-end, old computers, thanks to KirstenLee Cinquetti.

This time, I’ll be showing you a video comparing the standard SL viewer (1.23.4) with Snowglobe (1.0.2), LL’s open-source-driven-and-contributed “separate” branch of their main viewer. The main feature it has right now (as well as some user-contributed patches) is downloading textures via HTTP (e.g. a “Web” request). All textures on all other viewers, right now, use LL’s own texture streaming protocol (based on UDP) developed, oh, probably in 2000 or 2001 (it’s hard to say!). Textures are right now just “another asset”, and you get all sorts of packets from sims for all kinds of information: avatar movement, asset download, linksets, instant messages. This means these packets may come out of order, or even get lost, and require retransmission. They can also time out “forever” if you’re unlucky (so a texture remains unloaded and displays as a gray surface).

The new mechanism is more complex, and it’s not very easy to figure out if it’s fully implemented or not (LL says it isn’t; but the results on the video below tend to show otherwise!). It allows a texture to be retrieved using a common HTTP call (just like a normal Web browser) directly from LL’s asset servers — or, in the future, from anywhere on the World-Wide Web (which has the huge advantage that you could, in theory, serve them from your own server — or from Flickr or Picasa! — and bypass LL’s own asset storage entirely). Thus, in the future, providing superfast storage for textures will be a line of business 🙂

Right now we’re just at the first stage: bypassing LL’s cumbersome protocol and just retrieve the textures via HTTP. The difference is… astonishing. You can watch a comparison by yourself on the video below and judge for yourself. Yes, I’ve tried it on very texture-intensive sims: Hair Fair 2009, Neufreistadt, and Armidi.

You’re probably better off if you check “HD” on the YouTube video and increase the size of the display to watch the many annotations I’ve left there 🙂

The important thing to remember is that you have to go to the Advanced menu, look for the Rendering submenu, and check HTTP Get Textures. Or else, the only thing that will load faster is the Map (gosh, I took ages to figure that out!).

Enjoy it 🙂

[UPDATE] Soft Linden believes that actually none of the textures (except for the Map) is being read via

HTTP Requests… yet! Which makes all of this even more amazing, since it’s just a cycle of texture optimisations in the code (not unlike what KirstenLee Cinquetti did with her own viewer). If that’s the case… it means that once that code is in, Snowglobe should be even more faster! :-O

To figure out if some textures are being downloaded by Snowglobe via HTTP, press Ctrl-Shift-3. If you see any textures using “HTP” as the status, those will be loaded via HTTP. Soft might be right — I’ve tried it for a bit, and didn’t catch any textures with that status. Almost all are NET, SIM, or INI, although, granted, this happens so quickly under Snowglobe that it’s very hard to catch… in any case, if any textures are actually being downloaded via HTTP, they must be very few.

[UPDATE 2] Rika Wakanabe has plurked about her thorough tests (using a packet analyser) and has proven that at the time of writing (meaning: SnowGlobe 1.0.2) there are no textures being downloaded via HTTP yet, except for the map tiles. The code on the viewer is all finished, though, but on the server-side, nothing seems to be done yet, and there is no word from Linden Lab on when this might actually be developed. Interestingly, this might give the OpenSimulator developers something to think about and beat Linden Lab at their own game 😉

[UPDATE 3] OpenSim has for a long time had HTTP texture download. Philip Linden, on his last Town Hall meeting, has promised that it would happen “during this week” (thus antecipating the 1.42 server deployment next week), and has been faithful to his promise: according to the Second Life Wiki, HTTP texture download was deployed on the SL grid on August 3, 2010.

It’s very, very important that everybody turns this on as quickly as possible. If, as Philip explained, all texture downloads come from Amazon’s cluster, this means that HTTP texture download will dramatically reduce bandwidth requirements on all the grid — and thus release the sims of 40%-60% of their bandwidth needs. Simultaneously it also means that the sims will need to track less open connections and who has received textures and such, so it might also lessen its CPU requirements as well. Specially in areas with high density of avatars, it’s very important to make sure that everybody has this setting turned on! The improvement should be dramatic in terms of sim lag reduction on those areas.

CC BY 4.0 Pushing the Limits II — Snowglobe and ultrafast texture download [UPDATED THRICE] by Gwyneth Llewelyn is licensed under a Creative Commons Attribution 4.0 International License.

About Gwyneth Llewelyn

I'm just a virtual girl in a virtual world...

2 Pingbacks/Trackbacks

  • Ohhhhhhhhhh thanks Gwyn – I was trying to figure out what was so special about this approach.

    The HTTP Get idea is kinda Metaplace’y.

    Very cool, thanks for explaining.

  • Sometimes this is so fast as to become creepy!! I’ve just tested it in my MacBook (not pro) with an unsupported Intel graphics card with a mere 64 MB of memory, and on wireless. Textures were coming in so quickly that I was baffled. Gosh, this certainly makes an insane difference on old, underpowered computers…

    Nevertheless, I believe that the super-high texture download speed can also come from the fact that few (if any!) users are using Snowglobe simultaneously. I wonder how they will fare when close to a hundred thousand SL residents are using this technology at the same time — probably it will be as slow as the standard mechanism of getting streamed textures 🙂 We’ll see. The good news is that it’s far easier to accelerate HTTP requests (something techies are quite familiar with for the past decade at least) than proprietary streaming technology, so it might never get as bad as what we have today.

    The interesting news is the possibility of getting textures from anywhere on the World-Wide Web. That will be awesome, and, as said, it will become a new business opportunity — texture storage with fast retrieval and a world-wide coverage is not so easy to set up, or, if it’s easy (say, using Amazon S3), it’s costly.

    The ironic news is that the Linden behind all this has been… mostly Philip 😉 … who developed the original streaming protocol for textures. That just shows that Philip is not “frozen in time” but quite willing to drop his own past work and help to develop a new alternative to his own protocol.

    Very cool 🙂

  • I’ve been so hesitant to celebrate the apparent success of texture loading in Snowglobe. However, I’ve been seeing the same thing you have (I’m on a poor MacBook too): textures load noticeably faster in Snowglobe, don’t get “stuck” in the loading queue, and load more completely—even in massively-crowded, laggy sims. For the first time in many, many months, I feel like I have a complete sense of SL in all of its textural glory. But, I’m also worried that once Snowglobe catches on and many more layers of code get heaped onto it, my viewer will return to a dismal level of grayness. I’m keeping my fingers crossed that we won’t go back there…

    Thanks for another great article!

  • I’ve been enjoying Snowglobe even without the HTTP texture loads. I’m hoping Snowglobe ends up taking on the RC role, because the real speed increase might not be the texture load time or user experience, but instead the bug-report-to-fix-to-release cycle.

  • It looks like it, Cinco, but I’m sure that there will be some RCs too for the “stable” versions, like on every other open source solution…

  • Pingback: Some thoughts on SnowGlobe « Ravishal Ramblings()

  • Testing on Imac 2.4 ATI,RadeonHD2600 and works perfectly. The textures comes up so fast as the viewer can render the prims. On the RC or the official candidate, I have to wait viewer render the prims than (somewhere in time get the textures) . Much better than any other viewer that I have tested. Thnks for sharing your review.

  • TC

    You will be able to tell when HTTP textures are in place beyond the map. The first thing you will want to do is enable Advanced->Rendering->HTTP Get Textures. This doesn’t force HTTP GET attempts (well, it did force a try in early Snowglobe builds, instead it sends a capabilities query and switches to HTTP if the sim says it can handle it.

    You can use the Shift-Ctrl-3 texture display to see when HTTP actually does something. In the status column where you see “SIM”, “NET” etc. now, you will begin seeing “HTP” at the start of transfers.

    Babbage would be a good person to ask about the state of the server side of things, his group is the one that’s been working on it.

  • I did a test similar to yours, Gwyneth – except I used a more control environment.

    The rules were simple: Allow the viewer only 60-seconds to rez the world, clock starts counting from the moment the ‘world’ appears on screen. No moving the camera, the avatar or the mouse to ensure all processing cycles are dedicated to the viewer, thus being dedicated to rezzing the environment.

    I told you I looked at the Emerald and also Gemini viewers before looking at Snowglobe. So I recorded my experiemnt with these constraints and the visual difference in this method is *STUNNING*.

    I tested LL 1.23.4, GreenLife Emerald, Gemini and then Snowglobe.

    HOLY SMACKERS Linden Lab should make SNOWGLOBE the “official” viewer and the 1.23.4 “Official” viewer the “secondary alternate’.

    Here is my video:
    http://www.youtube.com/watch?v=q4ZqmvHFJBQ

  • Pingback: Snowglobe 1.1.0 Update Review « Nalates’ Things & Stuff Blog()

  • I love Snowglobe too, got like 10 fps back. And textures load! Had big problems with that on my computer (although it worked for iAlja with the same client on the same OS version, weird).

    Keep up the good work Snowglobe team 🙂