XaiJu
CrystalFrostViewer
CrystalFrostViewer

patreon


"Weekly" update about what's going on

I apologize for the info dump, I just wanted to let everyone know why there hasn't been an update recently, and be very transparent on what's going on.

So, just to keep you guys informed about what's going on.

There are three types of main types of updates that SL sends regarding objects other than avatars. ObjectUpdate, ObjectBlockUpdate, and TerseUpdate.

Now, the Linden based viewers like Firestorm all just feed those updates in pretty directly into the existing data structures, which is honestly the most efficient way to handle it.

HOWEVER

We can't do it that way because we're using Unity, not a Linden Lab based engine

I've tracked down a major crash bug (it doesn't technically crash, it just goes into a death spiral where each frame takes longer and longer, but if you wait long enough technically a new frame will happen) to rapidly changing data in texture faces

Like for example if a script is constantly cycling the color of a texture face, it'll cause the crash.

This crash is occurring because there's no real way to determine what data exactly has been changed at all, if any of it, so Crystal Frost is just going ahead and applying all of the data in the update even if it's the same, without checking if it's the same, because checking it would be using conditionals when it's often just faster to ignore them...

I mean 

if(x!=y)x=y; is slower than just going x=y because the conditional takes more cpu time than just going x=y;

But in this case, there are some things it's doing that a conditional would actually speed things up...

BUT to do those conditionals on the main thread would dramatically kill performance vs if no updates were coming in at all

So we're going to have to do more under the hood work before the next Patreon release, to do all that checking on a separate thread and then send the main thread very specific update packets, telling it exactly what to change.

That way the main thread, which handles rendering won't have to do many conditionals, nor will it have to update things that aren't performative to update JUST because an update came in.


More Creators