Hey guys, update time yet again!
With all the discussion about community status, what to do with the sites and all that jazz, didn't really get on a workblog last month, so this one'll end up being extra long. (I'll break this up into 2 parts and put the second part up tomorrow, these take be a good while to write without the bonus-length )
So, first bit to cover is the ever-specter
We were struggling with getting the blending/attenuation to play nicely when I last covered this, so we opted to ultimately go ahead and shift to utilizing a array-based system. Instead of each probe being rendered with a given shape(box or sphere) we instead shove everything into arrays - including cubemaps, thanks to our fair Timmy - and punt it all along to a fullscreen quad posteffect. This is actually great for performance, because it's a) consistent, b) 1 drawcall instead of tons of small lightweight ones and c) much more efficient as a baseline.
We've actually talked about shifting lights to a similar deal(this is actually a very common approach nowadays, though usually it's a grid of quads, not a single fullscreen) down the line, but for now just probes is fine.
This came with a number of benefits outside the above, namely in letting us actually process all the probes at once instead of trying to do blend and render state trickery to get them to add all together nicely which was the problem before. Now we just calculate each probe's influence(up to 50 active probes, currently) and blend the total contribution.
To that end, I ended up writing some visualizer modes so we could see the attenuation/unique probe contribution, which looks a little something like this:
As you can see, we're getting some lovely blending between probes, no weird jank and no flickering.
We can also visualize just the cubemap or just the irradiance contribution from the probes(which looks pretty neat:
Timmy's even been working on making sure it renders consistently in the editors(utilizing a skylight) so everything'll look consistent and predictable among other improvements/refinements to the flow of it.
For the base implement, we're pretty much down to an issue with the box mode where the influence area, if a rectangle, doesn't completely rotate right, but otherwise the base of it is done. There's some cleanup to do with it, but it actually works pretty much as intended.
Less 'obligatory for function' and more 'an extra layer of polish to tie everything together nicely' includes dynamic reflections, which for the near term we're going to look into re-activating per-object dynamic cubemaps(so if your car needs 100% dynamic reflections, it can have them, and leave everything else with probes) as well as Screen Space Reflections. If we don't get these slotted in for 4.0 it wouldn't be terrible, but we'll see what happens. If they don't they'll absolutely be a fairly quick follow-along since they just kinda slot in overtop.
If you want to play around with the PBR stuff, you can nab it from here: https://github.com/Azaezel/Torque3D/tre ... beArrayWIP
Up next, we've got the big ol' dump of PRs I did alongside all the excellent contributions others put in recently we've been working our way through. I highlight my stuff not because of ego, but because it's me stripping out all the changes from my internal WIP build to get rolled into devhead.Ended up getting 14 separate PRs rolled up with a few more I'm polishing up to get put up.
They're currently getting put through the wringer(az already noted a few problems I missed, which is why we test these things boys and girls) but when they go in, it's a bunch of bugfixes, a bunch of logic for the entity/component stuff as well as most of the work thus far on the asset pipeline, plus some new bits, like colorblindness visualizers:
With one of the colorblind modes on:
It's not 100% accurate, but it's pretty close to the example code I found for the different modes, and well more then accurate enough to be able to flip it on and see if there's any glaring issues with your game's color balance/aesthetic in regards to those with vision impairments.
Also a PR for adding gui3dProjectionCtrl which is a delightful gem that lets you attach gui elements to objects or points in the 3d space. Useful for objective markers, 3d interaction prompts and more.
Another one that'll be pretty big once we really start leaning on it in the future is the addition of the Scene object i've talked about prior for more centralized and expandable scene tracking and management. That also got a PR for the initial addition. You can see the list of PR's here: https://github.com/GarageGames/Torque3D/pulls
Another bit I got some time on was to try and get Verve playing nice with the current builds. Multi-window support has issues right now, so in addition to the regular update work needed, I added logic to let you use the verve editor in the same canvas, just it's own window in the editor.
Still bits that need shoring up before that gets rolled in as a PR(as we do need a proper cutscene editor in T3D) but it's pretty close:
Modulification of Old Resources
Because we also need more baseline starting content for people to use, as well as examples of how people can utilize modules and the like, I started updating/porting various resources to modules for drop-in-and-go-ness. I've covered a few here I've tested before like the 3d main menu or AI guards, but I've also been testing out some other more involved examples as well.
One's like the PostEffect Library. Seen here, I combined some lighting settings in the desert map, with the Night Vision, monochrome and pixelate PostFX's from the library to create a FLIR thermal vision mode:
As well as an initial go at the UAISK:
Though I think that needs to updates to the editor UI there. Having to change pages via dropdown is so oldschool
Likewise, at request, I went ahead and did an attempt and getting the Ubiq's old 3D Action Adventure Kit running with devhead. It's got a few rough spots, but a few people in the discord were already eyeballing at pulling some parts like the camera out to be more piecemeal and easier to integrate into general projects.
You can play around with that build here: https://github.com/Areloch/Torque3D/tree/Devhead3dAAK
It's hardly a complete list but I did an initial outline of a spread of examples of said content that I'd like to have moduleified in the near future for people to easily drop in and start playing with here:
When I last messed with assimp, the basic geometry loading was working(mostly) but it was having issues with the bone transforms being handled right. I got some time last week to load it back up and fiddle with it, and while it still has some issues, I believe at this point it's mainly an issue of the transforms being correctly applied to the root so it cascades up correctly.
Otherwise we end out with a situation like this:
But as you can see, the actual geometry and UVs and all that are good. So if I can get the transform processing locked in, the basic implementation of assimp should be good to get a roll-in. This opens up a LOT of options, most notably FBX and GLTF2, both formats that are very widely utilized and supported in art packs and content tools alike. Having straight support of those should drastically simplify the art pipeline for everyone, so I'm pretty excited on that end.
[A quick detour back to PBR(but like, for art this time around)
One thing that's come up a lot recently is going back and doing an update pass to PBR-ify the old content packs, which is an excellent idea. Me, Blood, Az and a few others spitballed some ideas for a simple flow for that(including figuring out Substance's Automation pipeline tools) as well as using Gigapixel to upscale older, lower resolution images.
All fine ideas, but one shot I had fun with was loading up our venerable Cheetah into Substance Painter and just painting on PBR materials over the normal/diffuse maps. And with fairly minimal work, we definitely get quite a bit of visual 'oomph' out of it:
So doing this kinda stuff on the older content could make it look really good with the new lighting without needing to completely remake it all from scratch for no reason. So that's also pretty sweet.
Here's also a few shots of Gigapixel being used on older, lower-res images to make 'em sweet again:
Definitely lots of sweet tech to simplify making everyone's art as sexy as possible with the least amount of work possible. Always a good thing
Anywho, This is about the halfway point of updates. so I'll put a breakpoint on this bad boy(it's pretty long as it is) and get the rest of the updates done tomorrow, including updates to the roadmap and all that delightful jazz.