It’s that time again! Alloy 3.3 is now available for Unity 5.3 users.
We’ve got a whole bucket of new features for you guys. This release is really centered on expanding the number of deferred compatible tools within the suite, including some long-time requests. For those of you who’ve eyed our transmission and character shaders, but lamented the restrictions of having forward-rendered objects in a deferred scene, we have some excellent news for you as well :-).
The first of our new features are Deferred Mesh Decals, which represent the first phase of a set of deferred effects we’re working on. This style of decal is a sort of hybrid of old and new. They’re still placed using ‘normal’ geometry, quads, or special pieces added onto your models, but they write directly to the deferred buffers. One get’s two huge advantages of this:
- One can alpha-blend detail onto arbitrary surfaces in a way that doesn’t incur the rendering limitations(shadows) of forward transparent rendering
- Due to depth offset in the shader, one can place these _exactly_ flush with their underlying surface, making both author-time and in-game placement way less of a headache
The decals we’ve included come in three different flavors at the moment, Alpha-blended, Alpha Cutout, and Multiplicative. Alpha-blended will likely be your workhorse for a full-featured decal, whereas the multiplicative decals are useful for simple albedo modification (like the orange text in the image below).
For our next release, we’ll be expanding the decal system to include projective decals (which is what are commonly referred to when speaking of deferred decals), once we can get an efficient culling and editor gizmos to where we’re happy with them.
Deferred Transmission and Character Shaders
Next up is the addition of two new Deferred Rendering options in Alloy 3.3, Deferred Transmission, and Deferred Skin. In short, all of the Alloy transmission, skin and eye shaders have Deferred variants which can be used alongside our new override shaders. The latter (skin) includes the all of the functionality of the transmission version, so you have several options to choose from based on your asset needs and performance window. As this functionality is occurring in a deferred context, you’ll find a majority of the transmission and skin settings on a new component (for your camera) called Alloy Deferred Renderer Plus.
If you’re wondering how to set it all up, we’ve also updated the free Alloy samples package to include a sample scene for using these new modes. Just make sure you have Alloy 3.3 imported first, and have the ‘Deferred Skin’ custom shader plugged in in the Graphics menu first!
With 3.3 we’ve also made a change to the way that light cookies are handled for all Alloy lights. Cookies are now sampled as an RGBA texture, allowing for full color cubemaps to be used for point lights, and full color textures to be used for spot lights. While this might be considered to be fairly special-purpose, the existing monochrome limitation has always bothered me, so we decided to pop this in.
Please note that in your existing scenes, spot lights missing an RGBA cookie will appear black, so we’ve included a light migration tool (Window->Alloy->Light Migration Tool), which will drop our new included default spot light cookie onto all spot lights in your scene. When authoring your own spot cookies, please make sure their texture import settings match this included file, or artifacts will appear.
Also on the lighting front, we’ve managed to squeak in functionality for toggleable specular highlights for all Alloy lights. We’re aware that there are a number of contexts where using baked ambience is unfeasible, and we wanted to have a way of adding wide diffuse fill in a scene without creating hot-points on smooth materials. The check-box for this behavior can be found on the Alloy Area Light component.
Last but not least, Alloy 3.3 includes the first rev. of our SpeedTree shader, bringing full Alloy lighting support, and an improved specular term to your SpeedTree assets in Unity. This shader actually uses a our injection headers system, which allows Alloy’s lighting model to be injected into any Unity Surface Shader by including a set of our files in the same directory. We intend to develop this further in the future, adding transmission support, though as this will require a more extensive modification, we’d love to hear from you guys as to whether this would be a killer feature for you.
Whew… So that’s the rundown on our latest release. Alloy continues to be a truly compelling project for us, and as we move forward we will likely be focusing our efforts on expanding the suite of deferred effects, including more decal options, weather, and whatever other nuttiness we can think of. As always we’d love to see what you’re making with Alloy so never hesitate to give us a ping, or stop by our forum thread on the Unity Forums.