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, September 30, 2016

Black Dragon Viewer - Update 2.5 "Ending Dragon"

Ending Dragon,
Ender Dragon,
End Dragon,
Dying Dragon,
Omega Dragon,
Resting Dragon,
Sleeping Dragon.

There are many names for this update i liked but "Ending Dragon" is probably the best for this update as it contains "end", signalling "the end" that i announced almost 3.5 years ago and at the same time describing what is going to happen.

Lets turn back time for a second. May 17th 2013, almost 3.5 years ago when i announced Black Dragon i kinda announced it's "death date", saying that i will end active development with the version 2.5 which, back then, i thought would take roughly 30 more updates, with one update coming each week. So... i expected Black Dragon to go silent a bit over half a year later, possibly a year max with smaller updates in between. Turns out this is not how it works. I pushed out 2.5 further and further and if you want ... 2.5 years later ... funny isn't it? The amount of time i would delay it's end was in it's final's update name all along. So was it planned all along? Who knows ... i guess this means Half Life 3 IS in fact confirmed after all.

Back to nowadays, i'm struggling to keep myself interested in continuing the Viewer, i feel bored an empty, worse i feel like i'm wasting my time more than when sitting around wasting time. It doesn't help me to get further in life either and before anyone says anything overly enthusiastic, the answer is no. You can hardly call this coding, this is like modding a game, just because someone can mod a game, no matter how good, doesn't make him a game developer, writing stuff from scratch is something entirely different than modding existing content, i can't even set up a simple 3D view of a cube. I'm surprised i have even gotten this far.

So what's going to happen now? I'll be updating the Viewer with the latest code and features as well as fix bugs whenever i see fit but i won't be writing anymore update notes, i'll release updates whenever i think i've done something, they'll be silent updates so you'll have to check for them yourself. I might do a monthly or quartely quick write up of big changes that have been happening since last update but that's pretty much it. I'll do one last push to get as many of my changes into the official Viewer but don't expect anything, LL is very specific about what they want and how and i'm even more specific on how i want LL to want these things.

Oh well, i guess you expected a blog post about the last release instead of some suicidal "goodbye" talk, so let's use the last bit of leftover enthusiasm to cover that instead.

User Interface

I added some not-so-fancy but informative [Moderator] and [Developer] tags to the IM window, so from now on you should be able to identify people who have moderator rights in a group chat, the developer tag is basically just for me for fun so you know when you're talking to me, that should stop the question "are you the developer of black dragon?", yes, yes i am. If both is true (only in my group chat) you will see [Mod][Dev], all of these tags have different colors.

While going through the old localization files for the preferences floater i fixed a bunch of changed labels and fixed pretty much all german preferences tabs, they should be working now but don't expect them to be complete, it's just a re-enabled versions of the previous localization before i've redone preferences and stopped updating the german localization.

The Visual Outfit Browser has been implemented and (of course been) changed to make it less ugly and more fitting for the appearance floater it is in, also i changed a few things around so it should work fine with the smallest width possible for the appearance floater without needing to scroll horizontally ugh.

I also made the inspect avatar toast a lot less ugly, that light grey was sticking out like a Christmas tree in a pitch black night. It has more space for the description too!

I also added an option to the snapshot floater called "autoscale rendering" that will automatically scale Depth of Field, Shadow Blur and SSAO higher as counter to high resolution snapshots which tend to make these effects less visible or weaker, this is not a bug, it's simple logic. If you put a square with 200x200 dimensions on a 512x512 picture it will cover almost half of the picture but if you put the same square on a 2048x2048 picture it will only be a tenth of that picture, that is essentially what is happening here and this autoscale feature simply multiplies the strength and size of SSAO, Shadow Blur and Depth of Field internally to match the desired output resolution, note that this is not perfect or in any way a super complex calculation, it's a simple multiplier that goes up/down with the resolution of your snapshot compared to the resolution your window currently has.


I've made some changes to the way some shaders are loaded, i've separated them from the big main pile and made them separately loadable, this allows me to load them whenever necessary without incurring a massive recompile of all shaders just for a tiny change. This change drastically affects the framerate hitch you may see when toggling any of the main features such as shadows, ssao, ssr and so on, almost all of them are now instantaneously just like changing shadow resolution.

I added the old Depth of Field back into the Viewer, it's a toggle in both the display preferences as well as the sidebar, it's slower, causes massive framerate loss if turned all the way up to SUPER BLUR but looks all the better to make up for it, the new one in comparison is highly inaccurate and causes haloing around focused objects or avatars. See the difference in the pictures below.

new Depth of Field
old Depth of Field


I cleaned up, optimized and simplified and tagged another a bit of my code and fixed a few warnings all over the place. Changes to make future merges easier as well as allow other people to easier identify my changes if they want to take them.

I fixed a few issues such as guns not working in mouselook, butchered a few statistics that are being send to LL and merged Marine's fix to prevent 100% transparent objects from rendering.

RLVa is sadly completely off the table, when i started merging the differences in i came across the whole appearance and HTTP stuff and it dawned me that this will most likely sabotage RLVa so i kept it out once and for all. I'm sorry folks, RLVa is not going to be added back into the Viewer unless i get a version of it that is up to date with the very latest stuff and is not blown apart by changes that are made half a week later by LL that refactors the entire viewer-server communication again. I'm sorry but i'm sick seeing it happen over and over again.

Here are some random facts:

  1. I made 9 updates in 2013, 24 updates in 2014, 32 updates in 2015 and 17 updates (including this one) in 2016. Clearly i've been the most productive in 2015. 2016 is by far the lowest if we take into account that 2013 started at October. That makes a total of 82 updates, 52 more than originally planned.
  2. The new snapshot floater in the LL Viewer was my fault.
  3. I did not know C++ in any way when i started developing Nirans Viewer. I still don't know the basic basics.
  4. Black Dragon was active for 40 months, Nirans Viewer was active for 20 months making a total of 60 months i developed both Viewers together, 5 years.
  5. I spend most of the time on the UI unless you count an iterative process as continuous process without pauses in that case i spend most of the time on finetuning settings.
  6. The Viewer never had more than 2500 users according to the statistics i got. I'm currently estimating them at roughly 2000.
  7. I like transparency and i love changelogs/patchnotes. I hate it when people say over generalized things like "we changed stuff" it's a clear indicator that they either don't care about documenting changes or are incapable of doing so due to managerial reasons for example.
  8. Most of the main Third Party Viewers (including mine) are developed by or at least with the help of one or more Furry. Exodus, Firestorm, Black Dragon, Alchemy, Singularity. You might want to think about that next time you insult one. I didn't know either until i started attending more opensource developer meetings.


2.5 - Ending Dragon (you can see the complete list of 2.5 changes since on the changelogs site)

Added: Ability to switch between the old style high quality Depth of Field and the new faster but less precise one.
Added: High Quality Depth of Field option to preferences.
Added: High Quality Depth of Field option to Machinima Sidebar.
Added: A few more german translations, mainly the main shader toggles.
Added: Chat moderator and developer tag.
Added: Simple automatic SSAO/Shadow/DoF scaling option to scale these up/down for higher-than-window resolutions.
Changed: Layout of the picks floater and the picks info panel.
Changed: Made rendering only reload shaders where necessary, eliminating freezes when toggling shaders.
Changed: Made changes to how shadowmaps are allocated.
Changed: Overhauled the layout of the appearance floater.
Changed: Reduced outfits per row to 2.
Changed: Reduced outfit item size to fit into the minimum floater width.
Changed: Colors of visual outfit browser to match the rest of the appearance floater.
Changed: Decapitalized german outfit tabs.
Changed: Inspect avatar toast layout, made available description space much bigger.
Changed: Disabled the collection of a few statistics that seem completely unnecessary and old.
Changed: Search bar is uncomfortably close to the clock in the english UI.
Changed: Version to 2.5 Ending Dragon. Marking the end of the active development cycle.
Fixed: Guns not working in mouselook with mouselook grab disabled.
Fixed: XML parsing errors in floater_picks.
Fixed: XML parsing errors in panel_pick_list_item.xml
Fixed: Almost all compiling errors, still doesn't compile.
Fixed: Compile once and for all.
Fixed: Line Endings.
Fixed: Invalid token warning in panel_snapshot_postcard.xml.
Fixed: German translation for general preferences tab.
Fixed: German translation for display preferences tab.
Fixed: Don't render 100% transparent objects. Fixed by Marine.
Fixed: German translation for chat preferences tab.
Fixed: German translation for IM preferences tab.
Fixed: German translation for privacy preferences tab.
Fixed: Display tab clipping Vignette options.
Fixed: Chat scroll panel having the wrong name.
Fixed: Blackness when turning off Blur Light after turning off SSR/SSAO and Shadows.
Misc: Line endings fix.
Misc: Cleanup in snapshot floater code.
Misc: More tagging in llviewershadermgr.cpp.
Misc: Cleanup and tagging in llfloatersnapshot.cpp/h and pipeline.cpp/h.
Misc: Cleanup and optimization in llviewershadermgr.cpp.
Merge with Bento
Merge with Release

Tuesday, September 13, 2016

Black Dragon Viewer - Update 2.5 - Delta 3 "Teleporting Dragon"

I swear this is the last goddamn update. No more deltas, epsilons or whatever.

This update should fix the last known "critical" issue, teleport offers/requests not working. It also makes Depth of Field less ugly, less halo'ing on the edges, have a look!

NICE. I really wanted to fix this long ago, it's about damn time.

Also, snapshot to inventory is fixed too! Wohoooooo (seriously who uses it... save it to disk and upload it, its higher resolution and is better for showing stuff than this pixelated piece of shit you upload directly)


Changed: Disable the texture filtering in Depth of Field, lessens halo'ing drastically and increases the quality.
Changed: Added disabled toggle for future option to enable/disable local chat toasts with bubble chat enabled.
Changed: Version to 2.5 Delta 3.
Fixed: Teleport Offer/Request rarely working.
Fixed: Warning due to broken tag in menu_people_nearby every time we right click someone in the People floater.
Fixed: Disabled Pie Menu sounds, some of them are corrupted, causing a short freeze on spawn.
Fixed: Warning about missing avatar_icon in every online notification.
Fixed: Snapshot to Inventory saving to Local instead.
Misc: Cleaned up some previous experiments in llviewermenu.