XaiJu
CrystalFrostViewer

CrystalFrostViewer

patreon


CrystalFrostViewer posts

Reimplemented textured prims and sculpts

So, I've had a massive memory leak for a long time that's stifled development. Literally can't develop more if it sucks up 1gb of memory every second.

I decided to take a break from it in September and just started development up again this last Tuesday (Feb 7). First day I was able to get textured prims and sculpts working again. Above image, left is Crystal Frost, right is Firestorm. Sun in Crystal Frost doesn't match sun in SL, so the lighting was a bit different.

While implementing meshes, I discovered the cause of the memory leak. It's the way I'm doing textures. I have an idea about how to do it differently. The problem is likely caused by a very brute force method of shoving data from the decoding thread to the main thread.

See, Crystal Frost is multithreaded AF. The LL based viewers like Firestorm, Black Dragon, et al.... They're all single threaded.

I was using this brute force method for every bit of asset data that came through to get it to the main thread for processing. I've stopped doing that. Right now I've had to disable texture loading to prevent the memory leak, but I've fully migrated mesh processing over to a much more streamlined method, and it's resulted in performance in populating the world with objects that VASTLY EXCEEDS the performance of Linden Lab based viewers. What's more, there's still a lot more room for improvement, and I'm hoping to implement the streamlined method for transporting all data within the week.

If that all goes well, I'll get to work on being able to walk around and explore the world as well as chat. Avatars won't be rendered properly for some time to come, however, as rigged meshes will take learning about parts of Unity that I've never actually learned about in the past despite using it for game development well over a decade at this point.

So avatars will (at first) be represented as boxes of the rough size of the physics hit box for the avatar... and hopefully with name tags, but I've yet to figure out how to grab the names of in-world objects. There hasn't been much of a point in figuring it out with that memory leak looming over everything, you know?

View Post

Progress upate

I checked my public github for the earliest code to see if it's from before mesh was implemented. The memory leak started with mesh. Unfortunately it seems I didn't start using it until after mesh was implemented. So I'm going to have to scrap most of what I have and restart almost from scratching using what I've learned the first go around.

As such, I'm leaving the git public and changing the license on it as a modified BSD License. The code is basically unusable and unstable in its current state, so if you want to fork it, feel free. That github is here: https://github.com/JennaScvl/CrystalFrost-Experimental

Moving forward, I will not have a public github for it until the project is nearly finished and until the project is in a state that I feel comfortable making publicly accessible will only distribute snapshots of sourcecode and occasional binaries to the appropriate patron levels.

That's not to say that only patrons will have access to the code or binaries. Once I have something that is ready for public use, access to it will be free and always be free, and the patron roles will adjust for early releases on new version or special versions only. Special versions will be things like the official HD render pipeline, VR, and real time raytracing enabled versions.

The latest stable regular forward/deferred rendering pipeline, pancake (non-VR version) will always be available for free and links to the latest stable binary will always be available in the public areas of the discord server.

View Post

Official Crystal Frost Viewer Patreon

So, I've just created an official patreon account for Crystal Frost. I've decided to use this to post devlog updates for people who are interested in the project and allow them to support the project at the same time.

I'm still working on sorting out the patreon levels, but all blog posts will be viewable through patreon without having to pay. There will be 2 patreon levels. $1 or more gets you access to a patreon only section on the Crystal Frost discord, and $10 or more gets you access to the a private github where sourcecode updates will be posted for tier 2 patrons.

Once I have the client being stable and somewhat usable, I'll add a $5 tier that will give you access to the latest Windows binaries (I can't personally test on anything but Windows at the moment, so I can't support anything else) for testing.

The discord is public, but I'm going to have the non-patron channels muted. I'll still read them, but responding will be lower priority than patrons, mainly because I have work to do.

https://discord.gg/eQ4svhN3z5

View Post