March 22, 2015

Designer: nAtlas Select

Much to my surprise, my 2 by 2 Atlas Selection node is one of my most downloaded tool. Full disclosure: 2 by 2 wasn't what I was aiming for. Not by a long shot. I wanted something more flexible.

As an artist, I understand some math concepts, but I clearly don't master them. Most of the time I need think for a while before finally finding the answer. I try to approach them as puzzles (no need to beat ourselves up right? I've got other qualities!).

Anyway, here's my original target for the Atlas Selection node: this one let you define the amount of tiles in X and Y, and let you select the output. There's a color and grayscale version. 

I can finally delete the old ones...


nAtlas Select

March 11, 2015

Designer: Normal Intensity

Pixel Processor. I was really waiting for this one. There is a lot of potential in that little node. Here's a simple node, to increase or decrease the intensity of a normal map.


Normal Intensity

March 8, 2015

Been a while...

It's been a while since I've posted. A very long while. I just got back from the GDC where I had the privilege of making demo's on Allegorithmic's booth and the pleasure of meeting more of the company employees. I came back pumped (and jet lagged!). All the new features from 5 and 1.3 opens up tons of new possibilities. It's awesome!

Stay tuned...

January 4, 2015


So, as we are starting this new year, I'm wondering what direction I should take with these posts. I do have a couple of tools/generators/utilities in my sleeve, some I'm (almost) sure you guys can appreciate, some I think might be useful. 

But I would love to have a better idea of what would be most appreciated. More Designer? More Painter? Little bit of both? Don't hesitate to leave your thoughts (or wishes!) in the comments!


December 30, 2014

Substance Lab: Creating "Power Materials"

Whether it's to use in Painter or in Designer, you might consider creating bundles of your base materials. Maybe grouping all your metals, wood or anything you use often. There is a very easy way to do that: using multi switches.

Here's a quick and easy way to achieve that:

1- Start by creating an empty Input Parameter.
2- Give it a simple and clear Identifier, change the type/Editor to Integer 1 and drop down list.
3- Using the Add Item, create as many items for your list, name them and make sure the values are 1, 2, 3, 4, etc. 

4- Before each output of your graph (base color, normal, height, roughness, etc) you're going to create a switch. Color multi switch for the base color and the normal, Grayscale multi switch for the other ones.
5- Set all these Switches to have the same number of inputs as the list you've created
6- And set all the Input Selection to use the Parameter you've just created:

You're done! Make sure you plug the correct nodes in the correct input number. For example, if you've decided that 4 was your wood, then all the wood components must be plugged in the input 4 of all the switches.

here's the link of a demo substance:



Substance Lab: Creating the functions in matfx_HeightAdjust

When creating matfx_HeightAdjust, i wanted a way to adjust the intensity of my height maps in Painter on a per-layer basis. Painter height maps always look more intense than Designer normal map and i needed a way to balance it. I also knew at that point how Painter was remapping the grayscale of my height map (see this for a quick run down) and so I knew that applying a level pushing toward black (or white for that matter) wasn't the correct solution. Blending the height map with a 0.5 gray was working, but gave me some artifacts (and didn't felt like the elegant solution...).

Warning: A little bit of math and logic is involved. As artists, this isn't our cup of tea, but bear in mind that it's for a good cause. (the following might seems to simple for the most math inclined of us but I've decided to explain it for those, like me, who feel a bit rusty when math is involved...)

So, there was, at that point, a list of variables that i knew:
  • Painter "neutral" point was 0.5
  • I wanted my intensity slider to be from 0 to 1, like everything else in PBR
  • I wanted my low and high output to move at the same time.
The range of my intensity slider was from 0 to 1, and the low and high output ranges were exactly half (Low: from 0 to 0.5, High: from 0.5 to 1.0). At 1, my level node need to be fully opened (low: 0, high:1) and 0, fully closed (low and high at 0.5).

Both functions are starting by getting the Intensity slider and dividing the value by 2. Then I add (level out high) or subtract (level out low) it from 0.5. That way, when Intensity will return 0, both output will return 0.5.

Here's what Level Out High function look like:

And Level Out Low:

So there you are, one parameter affecting two simple functions in similar yet different ways.


Substance Lab: height maps in Painter

When painting height in Substance Painter, you can carve and add. The built-in control (figure 1) let you go from -1 to 1. In reality, it's one gradient going from black (-1) to white (1). It's very similar to working with the overlay blending mode in Photoshop, where painting in any color below 128 will darken the underlying layer and any color higher than 128 will brighten it.

Basically, 0 height in Painter is 0.5 (designer) or 128 (Photoshop). Not a big deal really, but something to consider when creating height map, either while drawing in Photoshop or creating a procedural material in Designer.

In my matfx_heightAdjust graph, what i did was write a function that, as the height intensity value is lowered, increase the low value output and decrease the high value output of a level node, gradually bringing them toward 0.5. Simple but efficient.

In a future lab, i will go through the creation of the function itself, as it is a good example of an exposed parameter affecting multiple parts of a graph.