Disclaimer

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.

Friday, December 15, 2017

A whole dragon hoard of issues.

Ugh.



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).

Warning: MAJOR SPOILERS AHEAD.

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.

THAT IS MISLEADING.

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. :(

Have fun and FEEDBACK FEEDBACK FEEDBACK!





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"

Ugh

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:

Old
New


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
Shiruviana
Ulrike Woltering
Viki Tran
William Betteridge
YoungBlood

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




Tuesday, October 31, 2017

Patreon is now live but...

I'd like to take this last chance to clear some more things up.


First and foremost. Payment. Since i choose monthly payment you might want to know when these actually happen, i don't want to get you into financial trouble so listen carefully: Every month starting on the 1st of that month and ending on the 5th of that month Patreon will start collecting the payments of the previous month meaning tomorrow from 1st to 5th Patreon will collect payments from any Patron for October. That means you should make sure that in this specific timeframe you actually possess the the money you want to pay out. Not sure how much of a hassle it is for you but i imagine the first 5 days of a month not exactly being the best time for everyone.

I said i wouldn't be using goals but i added a simple one with the lowest payment possible so anyone paying anything will get it. It's really simple, you'll get your name added into the Viewer "Special Thanks" tab in the About Viewer window, note though i'll be using the Patreon name since that is the only name i can see (i think)... but you can always tell if your name differs.

Some of you might also be interested in knowing what will happen with any additional money that wont go straight into paying the bills. They'll be put aside and saved of course so i got 2-3 months at the very least saved up just in case.

I'd also like to thank everyone again for the great support. Have a nice picture!



Oh damn that's 2 pictures. Well have a little teaser of the UI changes coming as little sorry.



You can find the Patreon page on the right side, i'd recommend holding off until the 5th unless you are really eager to support right away and get charged in the next 5-6 days.

Monday, October 23, 2017

I'll be going to Patreon.

TL:DR Nothing will change for you, don't worry. Read on.



Hello, i'm Niran.


You know me as the creator and developer of Black Dragon, the Viewer you might be using as of right now. I've been developing this Viewer for 6 years now, alone, keeping this project up on my own behalf. I don't get any money for doing this nor did i ever want to as i believe that this is what makes a hobby a.. well hobby, it's something you dump your money into to have fun, to do whatever you enjoy (not that there is much money to dump into the Viewer ). This has worked for 6 years, sort of. I had to start using my savings 4 years ago to keep going and as of recently i started fearing that i might run out of money finally, the reason i fear that day is because it is the day i'll have to drop the development of this Viewer in favor of getting a real job, but Niran wait, you can still develop the Viewer right? ... Sadly no. Developing anything that is worth showing at the moment takes quite some time (sometimes days, weeks of straight writing, compiling, testing, rinse and repeat), time i won't have anymore if i get a job, given that i'll be working 9-10 hours every day minimum and i'm a very sleepy person, i need at least 10 hours sleep a day, leaving me with roughly 4-5 hours a day do anything, including eating, drinking and everything that is needed to sustain one's life... and then there is the thing with games, i'm a gamer, i play a lot of games, with friends and family too, doing so takes priority over developing the Viewer, leaving me with next to no time to work on the Viewer, not even on weekends.

*sighs* I knew this day would come...

I was always a strong believer that free content should be free which has played a big role both in the development of the Viewer itself and everything around it. One of these things is the fact that i never had a "Donate" button anywhere because it would feel to me like i owe the donor something, sounds stupid i know, but that's how i think. Rarely people have been donating me L$ in world in varying amounts which of course is the worst approach to this, both for you and me, converting to/from L$ you lose some money and L$ don't help me sustain the development of the Viewer at all. So... to get this situation under control i have 2 options. I choose to continue developing the Viewer with the help of Patreon until i run out of money, eventually after which option B would take effect and i'll have to get a job and drop the development of the Viewer.

I wouldn't be considering this if it wasn't absolutely necessary, it wasn't for 6 years. Now it is and i hate it but it's the only way to continue on that i can think of that offers the fairness i want. You see, fairness is a big part why i chose Patreon instead of Kickstarter for example.

So what is Patreon and what is the difference between Kickstarter and Patreon? Patreon is a platform for content creators that tries to offer a solution for said content creators's problem of not being paid for their work to continue working on it. Do you draw really awesome paintings of people or do you make really well thought out videos, reviews or even a game? Patreon is for you. Kickstarter, as the name implies is a platform to collect some starting capital to "kickstart" your project, such as when you want to start developing a game but you need some money to get everything going to a point that you can release it into Early Access to get more money to fund the rest of the development. Obviously this is not going to work for developing a Viewer for Second Life, at least not very well, it is the reason i believe why Kirsten failed long ago. He tried collecting 25.000$ in a short amount of time to fully offset a well paid job for one year. This is obviously not my intention, again i don't want to get paid for developing the Viewer, my personal goal is getting as much as i need to continue working on the Viewer... which... you'll laugh is a measly ~40€ every month to pay my internet because that is obviously the main thing i need to continue developing the Viewer. I hear laughter in the distance. "Niran you're doing this for measly 40€ a month?" you'll ask. Yes. Again i want to continue developing the Viewer, not make a million and 40€ are enough do to so currently, barring food and water.

So how does Patreon actually work or more specifically how will it work for you? It's really easy. I'll to utilize the monthly payment variant rather than the per-content. Why? Monthly payment allows you as the users continue using the Viewer for free, just like you did previously, nothing will change for you but now you got the option to "donate" me on a monthly basis. You can set any amount you want to pay each month, you can start and stop whenever you want. Payments are done at the end of the month/start of the next month allowing you the flexibility of choosing whenever you want to pay as much as you want if you deem it worth. For instance, if i started slacking for a month you can simply just stop paying without any repercussions for you. Great.

Let's talk benefits. Patreon offers me to set "Goals" per user or per milestone. It hurts to say but i'll not be utilizing them, at all. Again fairness. I don't want anyone to be treated differently because they pay money. Everyone gets the same, everyone can get early builds if they ask, everyone gets support if they need it. Everyone gets everything at all times. You pay solely on your own decision whether it is worth it to YOU, nothing else. Again nothing will change, for anyone, whether they are willing to pay or not.

In theory it's very easy. My Viewer has roughly 2000 active users, up to 4000 if you count part time users. If only 50 of these people deem my work worth enough to pay at least 1$ every month (roughly 40€), i'd be totally set for a while. Sounds easy enough right? Funny sidenote: If all of those 4000 users paid 1 cent every month that would be 40$.

So when and where does it happen? Starting next month i'll make the Patreon page public, i hope to get everything set up until then. I'll post the link here and possibly put it into the sidebar too for anyone interested in supporting me. We'll see how it goes. I hope for the best so i can continue making awesome stuff for everyone to enjoy.



I'd also like to use this moment before i head off to thank everyone who donated in the past regardless of how much it was as well as everyone who thanked me for my Viewer whether it was on the blog, forum, IM or anywhere else. Thanks everyone.



Also a little teaser... the next update you'll be able to preview .anim files directly inworld on your Avatar without having to upload them. I'm currently working on the exporter to allow exporting the poses/animations you create as .anim file. I can't promise though if it ever gets done, it's a very complex thing and will need a lot of testing. Also...

New

Old 

Wednesday, October 18, 2017

Black Dragon 64x - Release Candidate 2 "Bit Dragon"

Crashfix.

Fixed a crash when opening the group tab in the people window.

Whoopsidoodles. I swear this always happens on cleanups.