Recover from GDC week with a righteous regiment of renders.

Artist Credits:

  1. Jeremy M. Brown crafted a smoking good Grenade Launcher.
  2. Juan Puerta forged Thror Ironfist, a dwarf fellow for the Cubebrush ArtWars contest.
  3. Peter Adamson beeps and boops and bops into our hearts with his Robot Gunslinger.
  4. Regie Santiago scraped together a Space Scavenger for the ArtWars contest as well. 

Thanks for checking out the latest featured artwork rendered in Toolbag. Stay tuned for more next week.

Toolbag 3.02 Now Available!

To show our love, we’ve released a free update for Valentine’s day! Toolbag 3.02 adds a number of new features and bug fixes. Highlighting the release is material animation support and a shiny new refraction shader. The Baker has seen its share of attention too, including a number of handy new additions, improvements, and fixes.

Download the latest installer from the Toolbag 3 product page, or launch Toolbag 3 to get the patch.

Animated Materials

With Autokey enabled, changes to your materials will be recorded. You can add and edit keyframes manually with the Keyframe Editor as well. Most material parameters are supported, such as Albedo Color, Emissive, UV tiling, and more.

Refraction Shader in Action

The refraction shader is perfect for glass, liquids, and transparent/refractive materials of various sorts.

Refraction Shader Setup

The refraction shader can be found in the Transparency module and has parameters to set the Index of Refraction, Caustics, and load a mask to blend between the Refraction and standard Lambertian shading models.

The refraction shader works best when each element is a separate object, for instance both the glass and liquid are separate objects, which enables the refraction shader to sort properly. For something like car windows, make sure to split each window up so that you can see the far windows through the near ones.

And More!

Here is the full list of changes:

Feature Additions:

  • Material Animation!
  • Refraction Shader!
  • Smart texture loading, drag textures onto palette to create new material, or onto existing material to load
  • Baker “Smooth Filter” option for geometry smoothing
  • EXR file output for screenshots and animation
  • Show/hide toggle buttons for high/low baker objects
  • New lights are now auto-placed in camera direction
  • Color-over-time display for RGB keyframes

Bug Fixes:

  • Many baker fixes:
    • Baker auto reloads now retain all settings
    • Cage vertex offset directions are now better
    • Texture tiling support for material bakes
    • Cage offset is now consistent with display
    • Improved smart-load suffix & name matching
    • Baker viewport preview now works with wireframes
  • Improved tablet support, if you’re having issues with your tablet
  • try the Tablet-Friendly Input setting in Edit-> Preferences
  • Various stability fixes
  • Animation Property view display has been tweaked
  • Animation fixes for object transforms
  • Scenes with > 32 lights now display (more) correctly
  • Improved Local Reflections to omit background image correctly
  • Viewer preview option now more reliable
  • Better support for writing more compatible layered PSD files
  • Support for ArtStation pro file size limits
  • Better scaled UI appearance
  • Drag & drop now works with scaled UI
  • Better functioning progress bar for long jobs

See the complete Toolbag version history here.

Horizon Occlusion for Normal Mapped Reflections

When rendering reflective surfaces with normal maps, something often goes wrong:


With just about any normal map this happens quite a bit – the reflection vector ends up pointing behind the surface being rendered. If this vector is then used for shading, a surface can end up receiving light that should never have reached it. This is mitigated sometimes by shadow mapping or other occlusion terms, but in the case of image-based lighting it can be especially tricky to avoid this kind of “light leaking”. Here is a sphere lit with a single environment map that illustrates the problem well:


Toolbag’s renderer uses a simple technique to help correct this. As far as I know it’s my invention, but it’s easy enough that I wouldn’t be surprised to learn it has been done elsewhere.

The gist is that we need to start occluding light coming in along these “underground” reflection vectors. We have enough knowledge of the local surface that we can fairly easily detect this case with a single dot product between the per-pixel reflection vector and the interpolated vertex normal. When this dot product becomes negative, we know we have a reflection vector pointing beneath the surface horizon, and we can then occlude the light.

In practice it looks a bit better to make this a gradual falloff rather than a hard terminator. The formulation in Toolbag looks like this:


A quick before-and-after comparison, on our normal-mapped sphere from above:


As you can see it helps greatly with the apparent intensity of “leaked” reflections. It doesn’t completely fix the problem, and if the fade constant is too high it can over-darken things, but when well balanced it’s a clear improvement. The fade parameter is best left as a per-material setting so that artists can adjust it to suit their work.

There are several ways this might be further improved. The formulation could take surface roughness/gloss into account, or do something other than darken the reflection in response. But even this simple addition as written above has provided a nice quality bump to Toolbag’s renderer.