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.

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.


  1. You did say "Punish me Oz sempai"

    1. This is not punishment this outright bullshit.

      Punishment would be slapping my ass, saying i must revert the changes.

    2. Also, i'm not mad because of the warning, i'm mad because it's labeled with "misleading", which is misleading to any user that reads the warning (if anyone even goes through the TPVD)

    3. I suppose it may be misleading to people who are used to other viewers unless you say specifically on your setting that it works differently and how exactly it works differently

  2. The notice is just a warning or caution. I think the warning should state "Uses a different ARC calculation" or something to that effect to at least sound a little more fair about it. The current warning makes seem like the calculation is dishonest, which I think is actually more honest than LL's. LL doesn't even know their own "busted calculations" that well and they've even admitted to how "blinged out avatars" and numbers "gaming" of in-world objects can negatively impact. Quoting words from a Linden employee.

    So, Niran... is this the "bad news" you were talking about or is that to come?

    1. No, that's not the bad news. It's to come.

    2. Yea, it should have said something like "Uses a different formula for calculating Complexity". The use of the word "misleading" could be a turn off for people who do go via the TPVD.