Black Dragon is MY Viewer, i decide which feature i want to add and which to remove, i share this Viewer to show the world that user base size is not important, i do rate quality by effort, thought and love put into the project, not some rough estimated numbers. I consider feature requests only if i you can name proper valid reasons i can agree on. It is my (unpaid) time i'm putting into this project, i'm not here to cater to every Joe's desires.

Sunday, December 31, 2017

Black Dragon 64x - Update 2.9.6 "New Years Dragon"

Happy New Year everyone!

Update incoming, this one contains mostly bugfixing and overhauling for consistency. It's also the last one this year.

I added a button to set the voice toggle to 'none' effectively disabling the voice toggle, it was requested, here it is.

LL's snapshot fixes were removed again because they were causing the snapshot floater to save the first snapshot as Snapshot.png instead of Snapshot_Number.png like it used to, their white alpha fix was also removed as it was causing some human heads to default to "None" alpha mode effectively breaking them... (well not really, it just showed them broken because they had a corrupt or missing alpha flag set)

Then, long awaited, it's finally here, you can now edit the position and rotation of attachments in the build window while they are worn. Hooray.

I thought it would be a good idea to add a refresh preset list button to the sky preset editor, so i ended up overhauling all windlight windows and adding refresh buttons to all of them.

At least they are smaller and consistent now.

When someone send me a texture inworld i had to face the disgrace that is the texture preview window and had to overhaul that one too.

Other than those big changes i changed the default complexity limit to 125000, down from 500000 now that these numbers are much smaller and i fixed a few tiny texture issues causing offset images and increasingly more space between tabs. It's time to fix the goddamn dropdown textures already Niran, i'll get to that at some point too.

As always you should get this update because bugfixes n stuff.

Friday, December 29, 2017

The Snokra Snake & Content Creation #2

Remember the first post i wrote about it here: The Snokra Snake & Content Creation?

Well today i logged in and found a message in my notification console.

Turns out this would mean i get all color variations for my Gryphon, Lamb and Sergal ontop of my Snake and Kobold, both of which contain all variations already.

You can tell me what you want but if this is what some people have been trying to sell me as "an asshole" then i'll welcome these kind of assholes all day. To me this doesn't look like the kind of money-driven asshole that some other content creators are and no i'm not talking about EA Games, they are hardly creating content and more like milking an already existing piece of content like a cashcow.

If i ever decide to touch the human content area you can be sure it will totally destroy any belief in humanity you might have had, i had the "joy" of working with LeLutka (a human head) lately, it was brief but it already made me infinitely angry. It was a head that deletes itself if you put it on the ground, even in no script zones. The demo was no copy on top of that, deleting the only piece you had if you put it on ground, forcing you to go to the store and get it again. The head obviously being no mod should already give away what i think about it. Seriously whoever you are who makes LeLutka, i read your blog and you seemed like someone with at least some technical knowledge (that or you shamelessly copied it from somewhere) but if you're going to tell me you made your head delete itself on the ground to prevent copybotting then you're just as infinitely retarded as Maitreya and Belleza. An object should never ever be no mod NOR should it delete itself if you put it on ground, especially not if said object might be no copy. I can't believe you humans seriously put up with this shit and let them do this crap.

Sunday, December 24, 2017

Black Dragon 64x - Update 2.9.5 "Christmas Dragon"

Merry Christmas everyone.

There's a present waiting for you. It's an update.

I'm sorry i was so quiet about the Viewer lately, with the latest LL merges the Viewer was simply in a state that i was extremely unhappy with, it crashed almost every day for me, at least once. Coming down from never having a crash unless it's a self-inflicted stupid reason such as setting everything so high the Viewer locks up completely (which should be almost impossible) or outright blowing up something i made and are testing right now there was never a time i had so many random 1 in a million chance crashes like i had with these "crash fixes" from LL. Every crash i experienced was a new one, it was always something else blowing up, as if they closed one hole and opened up hell in the process. Luckily with some additional patches it now seems back to the old usual never-a-crash-in-a-lifetime stability i had before. It's kinda a shame when the creator crashes every day, all alarms should go off because something is horribly wrong. Anyway.

The update comes with a good bunch of linden fixes and additions (all the latest stuff + some more), such as object count on folders in inventory and some other changes i haven't yet noticed. Apparently body physics should be smoother now, less jiggly even with low FPS... we'll see... when i drop from my glorious 70 FPS that is.

With the above fixes it seems like the texture crash that was initially plaguing 64bit builds is now fixed, which prompted me to re-enable HTTP Pipelining by default, stuff should load faster and more efficient now and performance might actually go up a bit too while stuff is loading in.

The complexity floater has been overhauled a bit with hopefully improved readability. It's still a long way until it's a super straight forward thing but oh well...

Also... this has been bugging me for a long time, years now. Appearance, specifically when you edit your shape, as soon as you make a change the back button at the top extends, overlapping with the title, man this has been driving me nuts, i finally came around to get rid of this once and for all and while i was in the shape edit window i spend some time improving the layout a bit further.

It should be slightly less obnoxious now. In the future i'll have to completely redo the entire Appearance window to match the new layout of People/Inventory, this is going to be big challenge getting it into a shape that looks uniform across all the different windows with all the different amounts of highly different widgets that are absolutely essential for the window to function properly.

Then, inventory inbox should no longer become unclosable when you drag out the last item from your inbox while its open, the button should stay visible now at all times unless it's a secondary inventory window.

Another thing that annoyed me every time i used the internal browser (rarely but i do), the refresh button overlapped with the stop button. grrgrggr. No more.

I also removed the home toolbar button and added a poser toolbar button for that quick posing ya know.

Other than those above mentioned changes there's mostly cleanup, some fixes here and there, more cleanup and some attempted fixes for crashes, see the changelog for those.

You might have read my previous post about the Snokra Snake, i felt like it was necessary to talk about it and use the opportunity to praise some good content as opposed to complained about all the shit content all the time and getting flak and counter questions asking for a good content example. I'm having a lot of fun with it as you can see, it's quite franky one of the best avatars quality wise and i wish human content creators especially would finally pull their head out of their asses and stop ripping off people with their trash tier content. If i could i would mesh a human mesh body with all the features described that makes the Snokra Snake such a godsend, mod perms, full body rig+uv file, all texture psd's and so on for free just to blow content like Maitreya and Belleza up until they learn to make better stuff and stop using excuses for their infinite stupidity as to why and how no mod is supposed to prevent copybotting and such. You may say "wow what a dick move Niran" and yes it might be a dick move offering something for free, others charge for, out of spite but my answer to that is "people get what they deserve, sooner or later" and someday someone might come around and do just that, just like i did with the Poser to put a stop to AnyPose, just like i made my own free opensource server side AO and just like i was going to write a HUD that does the 360 snapshot thing for free, that everyone has been paying shitloads of money for... if the 360 snapshot viewer didn't come around in time to stop me and offer an even better solution. If you rip off people with your shit and i can do it better and for free, you can bet i'll do it just to fuck you up because i goddamn fucking hate you if you rip off people.

Which brings me to Patreon. Funny. Coming from the guy using patron to desperately try and fund the development of the Viewer for some more time. Well, i'm going to remove the goals since they are pretty much pointless now, it's no secret anymore that Patreon basically failed at what it was supposed to do and i'll have to get a job now anyway but for all those people asking for a way to support me or "donate" i'll leave it open. I mean it's your money, you can choose what to do with it and now that i've actually gotten around to set everything up i don't want to get rid of it anymore as people are just going to ask me again how to donate and we'd be back to square one. Ugh. It's a mess right now.

Enough rumbling, enjoy this long overdue update.

Monday, December 18, 2017

The Snokra Snake & Content Creation

Just two days ago one of the, if not the outright overall best avatar in Second Life has been released and it is an absolute joy both visually and for render freaks.

Here's why:


Snokra Snake from EpicGordon Broome @ Orange Nova Avatars

(Left) Shows the front of the avatar.
(Right) Shows the back of the avatar.


The avatar features diffuse, normal and specular maps.
It comes with Bento skeleton support and Fitted Mesh support.
It is moddable and highly detailed.
It comes with male/female version in one package.
It includes multiple sets of skin colors, eye colors and other textures.
It comes with a HUD and a lot of animations for face, hands and tail.
It comes with an applier system.
It's lightweight scripted.
It offers PSD files and Blender files for modding.
It's a cobra in disguisssssse.


It costs 1500L$ and is currently in beta.

Performance Data

(Pic) Shows the avatar in wireframe, as you can see the avatar uses triangles very sparingly and only ever uses a few more when absolutely necessary.

It's full triangle count is mere 27676 triangles. Next-gen games use 20.000 - 40.000 average, this avatar is on the bottom line of the next gen default which speaks for its well thought out mesh and quality as well as its small performance impact compared to other avatars. As comparison, the Maitreya body without hands, feet and head has 125.000 triangles. Belleza has even more.

The avatar uses a diffuse map, a normal map and a spec map, all of them twice for upper and lower body each, all of them are 1024 x 1024. Each texture is 4MB texture memory, this makes 24MB texture memory in total for the entire avatar.

The avatar uses multiple invisible states for different breast sizes, vagina states and male/female versions as well as the cobra hood, all of which can be removed if necessary. This can easily reduce its triangle count to ~15.000 triangles, that is incredibly few for such a detailed avatar.


The avatar comes with a very detailed normal map for an extreme amount of additional detail on the scales and other body parts, both when the avatar is used in conjunction with glossiness or not.


The avatar comes with freely available Blender files, with all states, all rigging, all UV maps and doesn't charge you any additional cost for it or wants you to sign some washing machine contract that is meaningless anyway.

All textures used, both diffuse as well as material textures (normal and specular) come in a huge PSD package for free editing and mod making. Again at no additional charge nor signing any contracts or administration from the creator. If you want to paint hearts all over it you can go for it.

The avatar also has full mod permissions (copy and mod), you can edit any part, any face, delink, relink, rename, add additional parts or remove them entirely.

It's shape as well as it's alpha layers are 100% full perm, you can copy, edit or transfer them.

Since this avatar supports Bento bones and Fitted Mesh you can use almost all shape sliders, even quite a few from the face section.

The avatar has a good set of Bento animations coming with it, allowing to customize its face as well as its tail and hands. It also features a bunch of default skin colors, eye colors, different eye versions (slit and normal) as well as eyelashes, all packaged into a HUD.

The HUD also allows toggling each individual face's visibility and allows toggling between multiple breast sizes (on top of changing them via sliders), allows you to change the glossiness and the groin state (whether you want male or female and/or pg or not), the face gestures, the eye/mouth openness, whether you want to use talking animations, change tongue poses or eyebrows and finally it also allows you to toggle the cobra hood. This is just the tip of the iceberg.

The avatar also comes with an applier creator in case you want to make one.

What's more, due to its low poly count and high quality out-of-the-box state mods made for it are bound to be roughly equally low poly and thus very optimized and fast while retaining a lot of quality in the process.

In Conclusion

This avatar is the very thing that i've been urging and nudging people to at all times, it is the pinnacle of performance vs quality, it is absolutely top tier quality, offers 100% modability, comes with all resources and since it is going to be a very popular avatar will soon have mountains of cool content. THIS is the thing that i want to see from content creators, THIS is the very prime example everyone should be aiming for. THIS is the thing you should be paying money for. Stop paying for shit, stop paying for onion layered, overly complex, heavily scripted, lagpiles of hundreds and thousands of wasted dense polygon piles that you have to sell your soul to in order to be allowed to look at it and maybe, eventually think of modding. Stop buying Maitreya, stop buying Belleza, stop selling your goddamn soul, become a Snake today and demand better quality from your other creators, point them at this avatar, tell them how absolutely devastatingly shit their content is and together we will make Sansar look like the dumpster fire it is.

Here's my modded purple version to fit my name.

Friday, December 15, 2017

A whole dragon hoard of issues.


GPU and PSU are dying, i'm running out of money, getting forced to get a job, Patreon thingy, Viewer updates slowing down and an emotional roller coaster that finally seems to have shattered my, what i thought was a - by now - impenetrable thick layer of scales when it comes to my psychological and emotional parts of regarding what is going on. There's so much ground to cover today... this is going to be a very lengthy post.

Let's start with the easy things. Since a good 3 months my video drivers are crashing occasionally and completely at random times due to what i suspect is the GPU finally giving up after five and a half year of pure torture. It all started with the PSU suddenly blowing up and cracking down on my GPU basically activating the self destruction sequence that is now only a matter of time until my PC will simply shut down and refuse to start up again. In short, i'll probably need a new GPU soon otherwise it won't be just a few certain games crashing my drivers but Second Life might start doing so as well.. or any 3D application at which's point it will become pretty much impossible to work on the Viewer or even just play some games.

That leads to the next issue. Getting a new GPU and obviously not the same again but a decent upgrade (i'm looking at you GTX 1060) plus a new PSU would cost me roughly 300€, not exactly money i can spend right now, even though it becomes increasingly necessary.

Which leads to the next issue. Money. Patreon obviously wasn't enough and was never meant to be. It was just meant to keep me on a basic track to keep working on something i've been working the past 6 years on. I still live at my parents house so having a home is not a problem, at least not yet, though they have increased the frequency at which they keep nagging me to get a job for the worst case scenario which is again a ticking time bomb given. You know what i mean, the sad thing everyone does at some point. Given both of them have had heart issues already and one already collapsed once it's not too far off thinking that they won't make it much longer. When that happens, the house will inevitably be handed down to me and my brother and i don't see a reason not to keep a house we have build over 20 years ago, paid off and kept in shape for so long. This also means we need to be prepared for that occasion... which is going to happen sooner or later. Which forces me to get a job soon, a part time job at the very least and as already said in previous posts in the past, this will cut into my freetime and thus into the already very small amount of time i can currently get to work on the Viewer... although currently there's not all too much to work on anyway, thankfully. I'll be making at least one more update this year though hopefully getting the newly introduced vertex crashes under control that came with the last batch of crash fixes from Linden Labs.

I'll probably make some changes to Patreon, most likely removing the goals (seriously they don't mean anything anyway) and use Patreon as a more convoluted but safer way of donating something if you so desire. Not that it makes any difference but you should know anyway. I wouldn't say Patreon was a fail, it was just not enough, as expected.

So... this leaves me with only one topic, the one i find the hardest to talk about.

My crippling depression. It's probably not a secret nor does it come at a surprise that i'm depressed, this has been the case for half my life now. It was always just a simple up and down, never going too far either way, the usual every day sadness. Bullies in pre-school, bullies in school, bullies in job, bullies everywhere, friendship drama, family and friends dying, failed relationship attempts... that kind of crap. Usually this is the kind of stuff that just makes me butt hurt and leave whatever voice channel i'm currently in and ponder for a few hours before returning, acting like nothing ever happened. A week ago however i remembered a game i wanted to play that i totally forgot about. A visual novel mind you, totally not the kind of game i'd enjoy i thought but it had dragons, so i thought why the fuck not. Not expecting much from the game i soon found myself in a compelling story that i quite enjoyed.

Now it's getting really quirky, you should turn around if you mind weird and possibly overdramatized stories.

I've been playing games on and off since i was 6. Almost everything, almost every genre, including horror and emotional games. I've seen a shitload of stuff by now but what i found here was something nothing could have prepared me for. It's an emotional roller coaster deluxe. I've played sad games before and had my fair share of crying but this game was simply too much, it showed me a whole new spectrum of emotional pain.

So what exactly happened? You'll need some background information to get an idea why this might be so touching for me and not so much (or at all) for you. I'm a furry - surprise, surprise -, not the stereotypical kind though i like to act like one sometimes for added randomness. I like most kinds of furries, i like the art aspect of it, i like quite a number of games that come with furries and of course i like the sexual part of it as well. I have an exceptionally fanatical love for dragons, which is why you see many of my avatars having at least some resemblance of a draconic beast. Hell if dragons where real i'd want them to live together with us. This has always been a dream of mine. Actual real dragons, i realize they would probably be a hazard for us but who cares, i'd rather end up as a happy snack for a dragon than die alone crying in a hospital bed. I've always spend a lot of time just resting on my bed, thinking how life would be if this was real, just imagine your partner was a dragon. Imagine your post delivery guy was a flying dragon? (They would actually be reliable then, go figure), just thinking of all the cool and awkward every day situations this would bring up makes me wet. Imagine all the stupid questions you could ask them, how they even sit on our chairs... think of all the possibilities... wouldn't your fisher job be so much more awesome if you had a talking, flying dragon with you catching fish with you? Cue "Angels with Scaly Wings" the game that turned this thinking into an actual game (something i would have always wanted to do too).


The game takes place in a modern time, akin to our own, on an alternate version of Earth with small towns and cities where dinosaurs were genetically crossed with humans and other animals from the primeval times to create sentient, intelligent, self sufficient dragons. Humanity lives in a destroyed, post apocalyptic time where resources are rare and the only hope for humanity's survival is a mysterious portal that appeared at some point. Through it, humanity managed to contact these dragons and make a deal that humanity would offer technology for the much needed energy in form of advanced generators to sustain the needed systems to save humanity. You as the player enter the alternate version of Earth as ambassador of humanity and meet the dragons to make sure that deal is coming along fine. You meet with the locals, seemingly nice dragons, many different looks, colors and species, most of them having a certain special place in society. Flyer and runner dragons are couriers, big and strong dragons are policemen and so on. Soon after your arrival you meet with another ambassador of humanity that was send a few weeks before you were, telling you about strange on goings in this place and that something bad is going to happen. Before he could tell you what happened in a secret meeting at night you're being interrupted by one of the local policemen who was suspecting him of causing problems, the situation quickly escalates with gunshots and your buddy flees, leaving you with the rest. Over the coming days and weeks you spend time with the locals, learning about their culture and their relations to humans which they only ever had myths of, just like we do of dragons. A series of murders start to happen, valuable equipment is stolen and your buddy is the prime suspect, so you help the local police force to find him. At some point you find yourself suddenly getting knocked out. On wakeup you are being introduced to a mysterious figure who tells you the story about the on goings here. The dragons are doomed to be eradicated by a giant meteoroid coming for earth, wiping out all life, including you. Your buddy who figured it out already grew impatient and acted to speed up things, causing all this drama. Now the fun part. With the appearance of the portal on both ends, there was also a laboratory that contained immensely powerful generators, this was the very same laboratory that was used thousands of years ago to create these dinosaur-dragon hybrids by the very same mysterious figure that explained you what is going to happen. The problem is, both humanity and the dragons need those generators. Your buddy found out about this and on a supposedly friendly and enjoyable fireworks night used the outside noises to sneak into the laboratory to steal a generator to save humanity. You eventually cross him and end up trying to talk him down, trying to find a solution to save both worlds from extinction. After making it clear that your buddy is nothing but an egocentric little piece of shit who doesn't care about the dragons and just wants to save humanity he doesn't hesitate killing you if he has to. Now depending on how you played the entire game, which person you dated (or not) and which dragon you brought with you on that night  (or not) as well as which choices you took and how many times you already finished the game you'll see a multitude of outcomes. 5 bad main character endings, 5 good main character endings, 1 bad ending, 1 neutral ending and 1 true ending. This is where this game went into super turbo depression mode. As an avid dragon lover i obviously chose to date some cute dragon, spending a lot of time with her, reading her what felt like 5000 lines of text, listening about her backstory and why she is what she is. Her name, Anna. She's a biologist and scientist, working on a cure for cancer, her whole life consists of overtime in her job every day, being completely alone, being stressed and being in pursue for that cancer cure as she contracted cancer herself when when she tried finding a cure. Does this remind you of something? Yea. RL says hi. Honest and nice people wanting to help others always get the back end of literally everything. In one of her dates you tell her that humanity has a cure for cancer and you promise her to save her when you get the chance... back to the underground laboratory you'll get help from one of the policemen as well as the selected partner you brought with you. The mysterious figure also makes an appearance shortly after only to be shot down by your asshole buddy, next up the police dragon ends up getting shot multiple times before he could finish off that egoistic piece of shit. He turns around to shoot at you but your partner sacrifices herself by jumping in front of you, saving you and making one last attempt to kill him afterwards while he's busy with you. The end that ensues makes you listen to her last words, watching her as she basically dies in your hands. You walk out, the mysterious figure revealed as the "creator" of these dragons explaining you what you have to do. From now on you'll use the portal to travel back in time to the time you arrived, using your previous knowledge to do better in your next and all other subsequent runs eventually reaching the good ending of Anna after which she manages to save you without getting hurt but ending up again dying in your arms from cancer in an hospital, crying as she speaks her last words. You repeat this over and over, going through all the emotional ups and downs this game has to offer, choosing different paths, talking to different people, eventually meeting the other characters, learning their backstory too and permanently changing how the game plays out on subsequent runs. While your first run is almost locked into a given experience, like Anna getting murdered if you don't date her and thus preventing her from being there when the murder happens your next runs will end up saving her life and instead having another character die instead. This goes on and on until you've seen all the bad and good endings of each character and at some point eventually reaching the true ending, the actual "good" ending that saves almost everyone and brings the dragons into the world of the humans to live with them there and rebuild the world. Maybe i've just played it a few times too much but seeing all these cool and unique characters die or otherwise losing you just hit my nerve so hard. I've played some really sad games some of which still make me cry if i just hear the soundtrack... but this just blew me up completely. It's not just that this game is so incredibly fascinating due to time travel and dragons, it also makes a game out of what i always pondered about, it is almost like if someone heard my thoughts and made a game out of it, on top of that it is incredibly sad, even the good endings are basically a big fuck you in your face, they made me cry like a baby, they made me cry days after, every day now i fall asleep crying, knowing i'll be eternally unsatisfied seeing how infinitely awesome the existence of dragons would be. It makes me truly sad, it showed me something i never knew i wanted to much... and when i finally got it at least to some degree in form of a game it left me with the desire for more a desire i'll never be able to satisfy sadly, this makes me eternally sad, it made me realize that i will never be happy. I already accepted that life is pointless and existence is pain, this... this is simply too much. I'm thinking of this every day, every single minute i'm not completely distracted by something else i think about it, making me sadder every day. I honestly don't know how much longer i can take this. This will eternally hunt me... yet i want to go back again and play the game even more. Since this so many things came to mind, its flooded with thoughts, thoughts i just can't seem to get sorted out. I've been thinking of a RP SIM that basically emulates this story, exploring this still almost completely untapped area... RIP memory and emotions. Did you realize the picture above is a TL:DR of my feelings...?

But enough of this, you should really check out the game.
Angels with Scaly Wings

Now if you'd excuse me, i'll have to cry some more because i just relived the entire fucking point why i'm so fucked up right now.

Monday, December 4, 2017

Complexity and its complex complexity.

So apparently Oz has seen my changes to the Avatar Render Complexity changes and put up a warning on the Third Party Viewer Directory about it.

It's time i talk about this.

"Non-standard", yes. "Misleading", you got to be fucking kidding me, aren't you? Why is it that i was yelling at you Oz ever since the introduction of Jellydolls that Jellydolls in their current incarnation are utterly useless as they, and i quote the warning here: are "misleading for avatar complexity". It took me god knows how long to make you even consider reevaluating the complexity calculation. It wasn't until i literally manipulated the entry scene on that one open source meeting and made everyone talk about how shit and completely wrong the calculation is before you arrived, prompting you to ask what all the fuzz is about, to get you to openly state that you are considering looking into it again.

You don't seem to have any idea how infinitely frustrating it is being clockblocked by you over and over again because i'm not going the usual bootlicker approach telling you how almost perfectly fine everything is and suggesting a tiny change so it gets more perfect. You know as well as me that i'm not that kind of person, i don't lick people's boots unless they deserve it and there's only couple of people whose boots i'd lick. I'll tell you straight up honestly whats up and i did so when Jellydolls came around. I remember what you told me, you made it clear that you are not in for shaming bad content creators, you don't want to punish less experienced or outright bad creators for their inability to make better optimized content. From a company standpoint this is somewhat understandable, its derogatory and outright defamatory but from a developer and customer standpoint it is absolutely unacceptable. You constantly appeal to each and every content creators own interest in improving their skills and content optimization, this is an outright bad decision. You will never, ever manage to make content creators show more interest in improving if they didn't do so from the beginning on or had at least some sort of personality that allows thinking like that. Most content creators aren't and you are giving them zero incentive to step up their game, you don't punish them at all, you continue to allow them to game your systems that were meant to limit abuse. Have you any idea how bad the state of current avatars is? I knew it was bad but when i added polygon counts i was shocked at how wasteful each and every avatar is, yes I was shocked, the one that told you from the very beginning, well knowing that each and every avatar is a giant pile of shit. I expected over complex avatars but i didn't expect polygon counts in the range of multi-million for many avatars around me. That is not what triggered me to take this into my own hands, no, not at all. It was this very avatar, standing on a starting help island, laughing at me with its 3,500,000 polygons having roughly 40% less complexity than my own Avatar which i spend many hours and days on continuously optimizing, reducing texture sizes, disabling features where unnecessary, removing unused invisible states and cutting down on prim and polycount wherever possible to make rendering my already very light avatar even faster to render. This giant pile of SHIT of an avatar with poly counts so high, the avatar was basically a solid surface, it was laughing at me, taunting me, making fun of my optimization attempts, showing me what i already knew, complexity is useless, it in no way resembles anything that you could call "complexity", its more like a random number that increases depending on how much stuff you put on and the numbers are hidden, probably randomized each time you attach or detach something.

You always urge me to explain it in a way that it easily makes sense for you, so let me put this into an explanation that will show you that complexity as it stands now (and most likely will after whatever you have been brewing in the background) makes no sense.

A few quick facts before we start:
- More is always worse, no matter what it is, the more work to be done the slower its going to be finished.
- Rendering polygons isn't as slow as we might think but it isn't fast either if you have millions to render, especially if they are deforming.
- Textures seem like a free to render thing, they are not. Large textures can and will quickly have a massive impact on the overall performance, worst case you hit your VRAM limit and then everything goes to shit.

With that being said, let's continue.

Avatar A (Me):
35.5mb texture memory usage, 146.000 polygons (~30.000 of which are rigged), ~68.000 complexity, 30m² surface area, no particles, only a tiny couple of invisible extra objects and decent usage of normal and specular map as well as emissive masking.

Avatar B (Example above)
Unknown memory usage (couldn't see at the time), 3.555.000 polygons (~90% of which were rigged), ~40.000 complexity, 82m² surface area, no particles, most of the entire avatar were extra invisible states and body parts, no normal or specular map used.

146.000 - 3.555.000 total (2435% of me or 24 times me)
30.000 - ~3.200.000 rigged (10666% of me or ~107 times my body)
30 - 82 m² surface (273% of me or 2.7 times me)
1.2x multiplier for invisible surfaces
68.000 - 40.000 complexity (58% of me or two thirds of me??)

HOW? I have less polygons. I have less rigged polygons. I have less invisible states. I have less surface area, i use less VRAM memory (pretty sure), i have less everything, hell i even use less screen space (my avatar is smaller than most others), yet for some reason Avatar B gets only 58% of my complexity, how is this even possible? How can an avatar that clearly has more impact in every aspect that is measurable have less complexity? Explanation: You weight important, impacting features way too less. Instead you focus on punishing invisible objects (which shouldn't even be rendered in the first place) and add huge multipliers on top of features that are basically free, like glow. Given you have post processing glow enabled, which you must if you use Deferred Rendering, it's being rendered at all times anyway, regardless if you can see it or not. I put up a metric fuckton of objects and made them all glow like a Christmas tree, i could not measure a single FPS difference, sure internally it probably has some sort of impact, it needs to be processed and added but its so goddamn fast. The worst offenders however are polygons, 15 polygons for a single arc if i understood correctly, however using my calculator this doesn't add up at all. To go below 40.000 arc with polygon alone (not counting all the multipliers) you'd have to count roughly every 85 polygons as 1 ARC and that's just the minimum. I wonder how you got these values. This is the reason good avatars get high ARC counts and bad ones get better or equal ones. You can shave off too much ARC by simply not using any advanced features that are meant to cut massive amounts of polygons. This gives people a false impression that using these advanced features are much worse in comparison to simply meshing out everything with polygons. In other words, ARC is simply not punishing enough. One light (i use a bunch of them for my avatar) is worth 512 ARC, that's roughly worth 43.000 polygons. One light is worth twice my avatar. Do you see the problem?

Another big problem of your complexity calculation is the fact that you roll in your statement that your calculations were tested on a variety of hardware and the new one is supposed to be tested on a wide variety of them. You are adding variables where none belong. You're trying to make compromises due to different hardware, you shouldn't. You test it on one singular, decently working hardware level, one that is fully capable of running solid 60 FPS with all options enabled and then measure the impact it has, you don't try to find the middle ground between shit hardware that can't even handle vertex shaders and sees no impact because it's only capable of producing single digit framerates and hardware that is capable of running Second Life to its fullest, by doing so you jeopardize the calculation, the only way of making the calculation accurate over a wide variety of hardware would be having a variable complexity calculation which in turn would totally and completely make complexity useless as a global value and would only ever mean something to the person itself, this would not only make optimization harder but would make setting a decent complexity limit impossible because it varies from person to person on top of the variance between Viewers already present. You need one singular test one that takes both experience of the rendering engine, as well as framerate comparisons and test results into account, that is what i'm doing here right now and i'll tell you here and now that my calculation is not misleading, it is not perfect either, perfection in a world like Second Life is impossible but my calculation does its intended job much better than what your original calculation does, it identifies resource hogs and jellydolls them, even if this means 90% of the avatars around you get jellydolled. It's not a bug when everyone gets jellydolled, its the simple fact that they are simply unoptimized and especially to you that shouldn't come at a surprise. If we really want to achieve better optimization of content we need to tighten the screws. Bad content needs to be punished, it needs to be jellydolled or outright derendered, people using said bad content should be notified that something is wrong with their stuff, if they themselves do not care enough to trigger interest in optimization then you'll have to force them by pulling the rug under their feet and unless you come up with something that i deem accurate enough to represent "complexity" that does its goddamn job of derendering resource hog people (which it currently doesn't), i'm not going to pull this custom complexity calculation that is clearly doing a better job than yours out of my Viewer, warning sign or not. I'd even go as far as changing the warning and removing that misleading "misleading" because my complexity calculation is anything but misleading, you should probably put that "misleading" to your own Viewer because it misleads people into thinking that their piles of randomly cobbled together shits is good.


I swear to god Oz, if i see another 3.5 million polygon avatar having less complexity than me in your new calculation i'll be the very first standing on your face and yelling at you in the next meeting. I refuse to accept these stupid compromises any further, either you pull through it with an iron fist or you don't attempt it at all, doing this in-between shit is just going to get your feature disabled, because that's what they are doing already, you've seen the "guides" in clubs telling people to disable it. No?

I'm sorry for the really long rant but i can't help it, this shit is grinding my gears, it has been for years and i watched it long enough to evidently say that nothing has been done to stop the resource-hoggery that is going on right now. It's time someone with the balls tells you the truth.

Now time for me to get off and cooldown for a few days, then sort this mess out that is the update 2.9.4. Snapshots locking up, framerates becoming completely unstable, flexis going haywire and that's only scratching the surface.

Sunday, December 3, 2017

Black Dragon 64x - Update 2.9.4 "Bit Dragon"

EDIT: Apparently a fix that is supposed to fix some "save as" incremental snapshot behavior was causing the Viewer to freeze on snapshot save. I removed said fix and the snapshot function is now properly working again, in fact so good, the 10 second freeze on first time saving (due to counting your snapshots) is gone too. Those 14 people who had the misfortune to download this broken build, please redownload the fixed one.

This update should really be called Arc Dragon.

So this update mainly cuts down on the giant numbers that i introduced with the last update for the render complexity calculations, the calculations are mostly untouched but will display them much smaller with a 1/10 of their original value. This means 60.000 now is almost the same as 600.000 before, keep this in mind before you say oh wow 100.000 i'm not that bad, because it means you're actually 1 million ARC.

I also have a special something that you might want to look at, i call it the Advanced Complexity Information, it's a window that lists all avatars, their attachments and their stats as well as their individual complexity values and how this complexity comes together.

The window can be found in Dragon - Useful Features - Performance Tools - Advanced Complexity Information, right below the option to display complexity. Not hard to find. I hope to improve this window with better explanation how the checkout list on the right works but for now it should give you a pretty good idea what and why your stuff has a certain complexity value. Let the optimization begin.

Other changes include more Patreon Patron's (yay) being included and a code merge with the latest Linden Release. This fixes some inconsistencies with avatar physics, they should be more stable now (but will still go bonkers with unstable FPS) and the notorious "inventory reset" issue whenever you detach something while its open. Some crash fixes and other low-level stuff are included too.

Some cool things are planned but also some bad news are impeding. :(


Sunday, November 19, 2017

Black Dragon 64x - Update 2.9.3 "Bit Dragon"

This is really just a quick update to get some of the stockpiled changes out and to clean up some things as well as add a big change i want to get feedback on.

Avatar Render Complexity (ARC) also known as Avatar Render Cost.

I changed it. Punish me Oz senpai, i broke your toy.

No seriously, the final nail in the coffin and the sole reason i finally did it was seeing an avatar with 3.5 million polygons and 2 million vertices having almost half as much ARC as my avatar which i spend a shitton optimizing all over the place, it's safe to say that i know better than this mess of ARC whats better for my framerate (well okay i literally deattached my stuff and measured too.... but... you know...) and i'm pretty certain that this 3.5 million polygon avatar is much worse than me. So how do i go about changing it? The simplest solution available. Punish high polycounts. Punish sculpt usage. Punish all the bad things.

I can write the details if anyone's interested but the gist of it is: More stuff = more ARC. Having a higher base polygon count in most cases means you'll have a higher ARC unless you do some other nasty stuff.

Needless to say i'll be tweaking these values and possibly add an option to switch between these two calculations but for now you'll get my new one, just be warned, numbers will be MUCH higher.

Look at these numbers. LOOK AT THEM. You are bad and you are bad and you too. All of you! Except those green and yellow numbers. I suppose you already knew that most avatars totally ignore ARC hence why they have such huge numbers, both polycounts and ARC... but hey, it actually helps, i'm getting 30 FPS there, which i have never ever before.

Friday, November 10, 2017

The thing about Alpha Masking.

I think it is time to give you an idea how broken Second Life really is.

In the past months after i disabled the Automatic Alpha Masking option in deferred by default a bunch of people messaged me about "strange" rendering issues. Of course i knew exactly immediately what they were talking about and i feel it is getting too tedious to explain this over and over again to each and every person, which is the reason i'm going to write this.

First things first. What is the problem? It is this:

Notice how the cubes form an abstract art like impossible image. Notice how the right most cube is in front of the bottom one while at the same time behind it. Notice how the top cube is behind all of the other cubes whereas it is actually on top of them, the cube is casting a shadow too, you can see it coming through. So what is this? It is called z-fighting, more specifically in this case it is alpha sorting (the issue, not the alpha mode).

The renderer has issues deciding whether a given face is in front or behind another due to them using alpha rendering rather than normal solid rendering. I can't explain to you why this is a thing (regardless of if you use DirectX or OpenGL) but my personal assumption from what i know about rendering is that alphas are not included into the depth map. The depth map is (as you may have seen if you used the depth mode in the snapshot floater) a greyscale image that contains depth information for the renderer to sort objects and do all kinds of neat things. Since alphas are not included in it, the renderer has no solid way of telling which face comes in which order so it has to make guesses and and that's when this alpha sorting issue will happen.

To counter this, there are many many MANY things both the developers and the creators can do, generally the best idea which most games as of today follow is simply avoiding blend alpha as much as possible because and this is the thing, this ONLY happens with alpha blending, not with alpha masking. Alpha masking is a 1 bit alpha channel (either on or off, invisible or not) thus it can be handled like any solid surface without much problem unlike 8 bit alpha which is alpha blending.

So why not make everything alpha masking? Well... see... as much as i would like to, this is the issue. You can't just set everything to alpha masking and BAM everything is fixed, each texture is unique and needs a unique alpha masking cutoff value to go along with it so the renderer knows at how much transparency it should simply use invisible rather than visible. Even worse, some textures simply can't use it because they need the alpha blending such as if you want a color grading overlay or say transparent textures like water or other fluids. In these cases we must use alpha blending.

This will inevitably cause different alphas to clash with each other and cause alpha sorting if looked at from certain angles. Myself as furry i had this issue happen long ago very often. Every single club had a transparent floor, transparent particle clouds for fog and transparent laser lights and such all over and guess what happens if you tail is a flexi alpha blending surface? You guessed right, it's gone. It will be sorted behind all the other stuff... in between... sometimes in front and everything in between that. It's a well known issue and i'm pretty sure you have seen this happen somewhere already.

But this isn't everything, alpha surfaces are not subject to most graphical effects that use depth such as Screen Space Ambient Occlusion (SSAO) and Depth of Field. In the latter case the renderer has to reside to some dirty hack by forcing all alphas internally to solid surfaces (without masking cutoff) and using those into a new depth map with those included, the result is Depth of Field going off on places it shouldn't. Here's an example of this:

Notice how the alpha glow effect is handled as solid surface, blocking and overwriting the depth to go further resulting in depth of field looking kinda broken. The same happens with particles too.

In the case of SSAO, which simply doesn't work on alpha surfaces, you'll have to look closer. It is highly possible that in any other Viewer other than my own you most likely won't notice the absence of SSAO as SSAO is by default extremely weak and almost not distinguishable from the same scene without it. Here's an example with top being alpha, bottom being masked:

Lastly shadows. Shadows from and and on alpha surfaces have all kinds of issues. For once they don't get the soften light pass which means they are pixelated rather than blurred and softened. Shadows cast from alpha surfaces have similar issues, they appear less precise and break faster than solid shadows. See these examples, top being alpha, bottom being masked:

So why all this? What are you trying to tell me Niran? I know what alpha sorting is and if i didn't i now know about it, what's the deal? The deal is many many textures in Second Life contain an alpha channel when they shouldn't which will flag any surface you use them on as alpha blending automatically which will cause all of the above mentioned issues. What's worse, Linden Labs made a feature called Automatic Alpha Masking (Deferred) and Automatic Alpha Masking (Non Deferred) for deferred (advanced lighting model) and without it respectively, these options are a hack employed before Materials was introduced, which gives us the ability to control whether we want to use masking or blending for alphas. The issue with these hacks is that they are just that, dirty hacks from pre-Materials times that are still in effect by default, they do a piss poor job at actually masking surfaces they are applied to and they hide the fact that your texture has an alpha channel and a whole host of graphical issues coming with it. To elaborate: Automatic Alpha Masking does stop quite a few surfaces from doing the alpha sorting, given they are solid textures but with an alpha channel included (which shouldn't be included), thus stopping the alpha sorting issue to appear on them but.. this only goes for simple objects and surfaces. Enter meshes. Shadows are still pixelated, SSAO doesn't work on it, lighting is off and so on. Here is an example comparison between Automatic Alpha Masking (top) and manual masking (bottom) on meshes:

Notice how the purple light on the left doesn't have any impact on the automatic one but clearly shows up as it is supposed to on the manually masked one. Notice how shadows are soft. Notice how the entire body looks much more part of the world, i dare to say "more realistic". This is with the hack enabled, yet its still broken.

So what to do about it now? First you have to ask yourself 2 questions. Can i edit the texture? If yes, do it. Remove the alpha channel if its not needed, this is always the number one priority fix. Fixing the texture means less resources wasted for you and everyone else as well as having the issue fixed once and for all. You can do this in GIMP by selecting the "Layers" menu at the top and going down to the "Transparency" sub menu, in it you'll find the option to remove the alpha channel. Optionally you can save the texture as JPEG if you are really unsure. JPEG doesn't know alpha and don't worry, SL converts all textures to a trash JPEG format anyway, no loss compared to PNG upload. If you can't edit the texture, ask the second question, can i edit the object? If so, select the prim or the single surface you want to change, go into edit mode (right click - edit) and select the "Texture" tab. Here you should find a dropdown menu that will be reading "Alpha Blending" by default, click it and change it to "None" if you are absolutely not using the alpha channel for anything.

Select "Alpha Masking" if you need alpha to cut off body parts or holes into said body parts for instance, then change the Mask Cutoff to a value that compliments the texture and makes it look good, usually something around 70-80 is a good value. I did so with my hair and it looks much better.

Textures that are made to be used for Alpha Masking obviously look even better. If you make textures always try to avoid using blending as much as possible, try to design your textures around masking. A great example of great masking usage is this Skadi Sergal:

Notice how it uses masking for the tail fluff, arm fluff, leg fluff, mane, ear fluff, chest fluff and pretty much any sort of details that resemble hair and it looks cute and fancy.

Because all these things are so horribly broken and Automatic Alpha Masking being the only thing that tries to hide it from the user i decided to disable Automatic Alpha Masking and show you the world as it really is. Broken.

But why are you doing this Niran? Why would you do this when all Viewers aren't doing it? Because i believe that hiding the issue won't help us fix it. Other Viewers are simply pussies, they fear backlash from their users, they don't have the willpower and energy to put up with you and explain to you what the issue is and how to fix it because they see you as completely retarded, on top of that, i've met quite a few extremely ignorant people who simply brush it off as Viewer bug and "not their cup of tea". Guess what, they are horribly wrong. It IS their cup of tea, THEY fucked up in their texture and it is THEIR responsibility to fix it. Only few will however and this is why i'm telling you so you can fix it yourself... if you got modding rights. I don't care if you complain at me that messy alpha is messy. I'll tell you that alpha is messy and that there are better ways to fix it than enabling a hack which merely fixes the sorting issue half of the time.

But hold on Niran... what about those poor people who bought no mod stuff? They can't just edit the mesh/object. Well... while that is correct all i can say is. Complain. Complain complain complain, not at me of course, at the creator who dares to sell you broken no mod stuff and if they want to get rid of you by finding excuses why not to allow mod permissions, send them to me, i'll give them a lecture when and where to use .... not use mod permissions. They will either listen or be ignorant, in the latter case you should stop buying their stuff and you should tell anyone and everyone to do the same, bad content creators are one thing, ignorant, improvement resistant creators are a whole nother thing. Don't support them. Instead you could buy one of those nice avatars for which you probably pay less. Support creators who put real effort into their products, who create good content, who are interested in improving Second Life with meaningful content, not some quick cash grab garbage.

To end this post, i've recently helped someone fix their Kemono and boy i was in for some fun, i ended up going through each and every face, making it invisible to see what it is, then set it to masking if its solid and blending if its an overlay. This cost me half an hour. I hate to say it but if you can't do it, i'm willing to help you and do it for you. Here are comparison pictures of before (top) and after (bottom):

Oh right. If you absolutely have to because there is absolutely no way around it. You can re-enable the Automatic Alpha Masking hack by going into Dragon - Develop - Rendering - Automatic Alpha Masking (deferred) and/or (non-deferred). I don't recommend doing it unless absolutely necessary, you'll be lying to yourself! Pink Glasses! Pink Glasses!

Got any questions? Did i miss anything? Tell me, i'd gladly like to know how to improve this ugly mess of a wall of a text.

Black Dragon 64x - Update 2.9.2 "Bit Dragon"

This update focuses on getting the Viewer up to date with the latest maintenance changes from Viewer Bear.

This includes the inclusion of a worn tab in inventory as well as a dropdown to select a search filter type, meaning you can now search for UUIDs, Names, Creators and Descriptions. The filter window for the inventory has gotten a "created by me" and "created by others" option too allowing you to further limit your search. While adding these i thought it would be the perfect time of overhauling the filter window layout too.

And since i can't stop molesting the UI when i started i also took the time to improve the object weights window and added a triangle count display to it.

The total triangle count of each avatar can now also be seen in the avatar complexity tag and to my shock... the Viewer is rendering much much more triangles than i thought in any given scene.

These pictures also make one big problem very apparent, the utter fail that is the avatar render complexity calculation. If you look at the above second example you'll see someone with three and a half million triangles (polygons) in the right  lower corner, how this person can achieve roughly half of my ARC even with my enormous amounts of optimization both on the texture part and the avatar part is a complete mystery. No avatar with 23 times as much polygons as me should have half as much ARC as me just because i use a few lights and some flexi stuff. THIS is the very reason why you see all these shit onion layered meshes but can't see your buddy because he uses a few flexi parts. This has to stop. I'm going to touch the ARC calculations with the next update.

Then there's also the addition of the several times requested FPS throttle feature, with the Viewer Bear merge it is no a thing, you can find the option in Preferences - Display as usual.

I also cleaned up some code, added the ability to fullbright and change alpha masking locally, although they only change after deselecting and masking currently only works if a face has had a mask cutoff set at least once at some point. I'll be working on the last part, can't promise anything about the first. This should be helpful to locally fix people's faces, eyes, body and so on for a picture for instance, or simply for showing them how it would look if it wasn't broken (man i could have used this so often by now...)

Also thanks to DracO HirudO, Ken Durham, Akritos Rain and Dhalgren Correia for supporting me!

The update is in the making already, sorry for taking so long with this post.

Saturday, November 4, 2017

Black Dragon 64x - Update 2.9.1 "Bit Dragon"


So 2 weeks later and i've been nothing but circlejerking in the Viewer trying to get something done.

Sometimes you're just working for days on something and it just wont work so you seem like making 0 progress and its kinda saddening as it delays the entire update... but ohwell here we are. I got it under control.

Today i some fancy changes for you, starting off with the new screen space reflections look, you'll find it to be a bit faster and generally better looking, have a look:


Then there's the interface overhaul, specifically the inventory and people windows. Inventory has been one of my biggest annoyances, it's one of the most used windows in the Viewer and it just looks like someone quickly threw it together, i wanted to fix that and make a new consistent layout for all sidebar-like windows, this includes the people window and later the other ones like places, picks, groups and so on. For now it's just inventory and people, both have a menu at the top right, both show info related to it at the top left and both have just one single bottom button bar now, everything looks neatly organized now. Finally. I made the groups list a bit less crappy looking too while i was at it.

New and never before seen is the ability to preview .anim animation files directly inworld on your avatar with the Pose/Animation Manipulation window. Simply open it and hit "Create", select an .anim animation file and it will be loaded and temporarily created for you to be used. Simply select yourself and hit "Apply To" to play the animation on yourself and preview it. AWESOME.

I also made it possible to put calling cards into the top favorite bar. Currently doesn't have any special functionality besides dragging it in and showing the profile on click. I want to extend it to allow more inventory object types such as objects and MAYBE even folders for favorite outfits. I also want to change calling cards to request a teleport if the person is in your friend list and automatically track and initiate a teleport to said person if you got their map rights, just like you'd do via the map but without having to actually open it and use that stupid dropdown, favoritising your favorite friends, yay! Totally made that word up.

Now comes the bad part. Still no launcher. I decided to bite the bullet here and continue naming the versions like i previously did as it makes no sense delaying the "update versioning" because the launcher is not working, i'd end up with a gazillion betas and gammas and alphas and release candidates. Screw that we'll resume the normal versions. Right now it appears like the launcher is fully incompatible with third party viewers so you'll have to update manually when i force an update... which... is the next bad news.

I noticed that Alex Ivy (64bit) changed the way the channels are displayed, i don't know if this has any impact on the update channels so when i force an update nothing might happen... that or the Viewer will be completely locked out... in the worst case that is. There's sadly only one way to find out, so bear with me here when i start forcing this update. If shit hits the fan i'll try to get this fixed as fast as possible.

Last bad news for today. No merge with latest Linden Viewer code because... i delayed this update for 2 weeks which is already way too long and i felt like i should show some actual progress and i wanted to show a fully working Viewer before making any big changes again. I know for sure that when i merge the latest code something will break again and i'll most likely notice it 6 years later down the line, like i did with a few other things... also making smaller incremental updates makes it a lot easier to find out on which version a specific issue started happening, making it easier for me to find the specific change that caused it and thus making it easier to fix said issue.

I'd like to say that the Patreon thing has received some really positive feedback so far, and quite some people have already started supporting me via Patreon.

Thank you very much

Kei Kurono
Maddy Gynoid
Richard Call
Ulrike Woltering
Viki Tran
William Betteridge

Enough talk for today, enjoy 3 fancy pictures i made with the Poser and another fancy random one showing the new SSR.