Procedural materials tutorial – Substance in Unity

August 9, 2011 in Rants & Raves

This guide is designed to briefly explain what Substance is, how to create new substance materials from a substance material asset, apply them to a mesh and edit parameters.

What are Substance Materials?

Substance materials are procedurally generated assets, from technology developed by Allegorithmic. A ’substance’  is basically a set of maps, defining a whole material with all channels: Diffuse, Normal, Specular, Bump, etc. 3DS Max and  Maya have substance support for rendering, but now with Unity implementation we can make use of them in real-time applications.

Why use Substance materials?

There are a number of reasons to use of procedural materials:

  • Dynamically updateable in game
  • Resolution independent
  • Animation supported
  • Tiny file size
  • Really fast to create textures, especially bricks, tiles and other tileable surfaces, that are otherwise time consuming to generate from photographic source
  • Fast to duplicate and create library of unique material
  • They are cool

Where do I get Substance Materials?

The Asset Store in unity (Window > Asset Store) includes free and paid substance packages available to browse.

How do I use them?

To customise a substance material and apply in Unity follow these steps:

  • Import or create a mesh onto which you want to apply materials;
  • Make sure it is UV’d evenly, or as desired – use a checkerboard or dummy material (Currently unity cannot import subtance materials assigned in external packages)
  • Create a fairly even topology, polygons spread to rule out kinks etc.
  • Apply relevant smoothing as required

  • Check FBX import settings for the Mesh, Select  Materials Generation ‘Per Material’  esp if using multiple materials per object
  • Drag object into hierarchy or viewport and save scene
  • Find Substance material asset you want to use (the square substance icons)

 

  • Select + to ‘Add substance from prototype’ or to create a substance material (spherical icon)
  • Name the new material

  • Apply to object by dragging directly onto the mesh in the viewport or with multi material meshes to the element (shown below)

  • Edit the parameters for your material instances;
  • Randomise seed to create variations on the patterns
  • Adjust sliders for other parameters such as colour, dirt amount, normal strength or whatever your substance has exposed in the inspector
  • Change shader if required to add reflections and other fx
  • View the results in the viewport – can be useful to create shader spheres in your scene for representative lighting

 

 

Comments (22)

Subscribe to comments
  1. don_vladimiro

    September 8, 2011 at 2:28 pm / 

    I have updated but remains a doubt mee:
    Terrain can have materials Substance?

  2. don_vladimiro

    September 7, 2011 at 3:28 pm / 

    @Aras Pranckevicius: The reason is simple: I have my game made ​​in version 3.3 and tested with version 3.4, leaving me with a lot of the proposed changes at the end instead of moving back would be a lot, that’s why I wanted to see it with any library. NET or something. if possible I would greatly appreciate your help

  3. don_vladimiro

    September 7, 2011 at 3:28 pm / 

    The reason is simple: I have my game made ​​in version 3.3 and tested with version 3.4, leaving me with a lot of the proposed changes at the end instead of moving back would be a lot, that’s why I wanted to see it with any library. NET or something. if possible I would greatly appreciate your help

  4. Aras Pranckevičius

    September 7, 2011 at 1:20 pm / 

    @don_vladimiro: not really. But why do you need Unity 3.3? Upgrade to 3.4 is free!

  5. don_vladimiro

    September 7, 2011 at 11:59 am / 

    Would it be possible in Unity 3.3 with the help of some library. Net or another?

  6. Warwick

    August 14, 2011 at 12:43 am / 

    @Rune: “they don’t store any bitmap data prior to generation” isn’t really correct either, since most of the more interesting Substances I’ve seen promoted actually have 3 or 4 base textures from which they are generating the result – B2M is the most obvious example of this.

    Don’t get me wrong, there will be some cases where dynamic generation like their “slowly aging bathroom” example (http://www.allegorithmic.com/gallery/demos/demo-bathroom) will mean that you get many more output textures for each input Substance, hence multiplying up the advantage. The question is just how well utilized that possibility is in games. I tried hard to find a game-fitting use for it in my game, but ironically I couldn’t even find a good enough “aged bricks” Substance (of all things!) in the small Substance library :-(

  7. Warwick

    August 14, 2011 at 12:36 am / 

    @Lka – you could try Substance Designer 2 *Lite*. It’s at least vaguely comparable in price to Filter Forge (assuming the 40% discount applies, the price would be $210, compared to $159 for Filter Forge).

    Personally, I’ve had no luck working out how to use Substance Designer 2 Lite – I’ll try again in a few more releases, but your mileage may vary.

  8. Lka

    August 11, 2011 at 8:44 pm / 

    I don’t get why this costly plugin is so officially publicized, I hope it’s stripped out from the exe and from the future unity mobile versions when not used.

  9. Kevin Hopcraft

    August 10, 2011 at 7:39 pm / 

    Fantastic. Many thanks indeed.

  10. Rune Skovbo Johansen

    August 10, 2011 at 2:59 pm / 

    I think some of these points have been clarified already, but just to make it extra clear:

    The memory footprint is not actually smaller – this was a misunderstanding internally that we’re correcting now. The big advantage is the much smaller file size which can drastically reduce distribution size / download time.

    Substance Designer can easily create tiling textures of any kind – not just bricks and the like.

    The substances are resolution independent in the sense that they don’t store any bitmap data prior to generation and thus can be generated at any resolution with equal crispness. They work like any other bitmap after generation though (except that they can be regenerated on the fly with different parameters).

  11. Olly Nicholson

    August 10, 2011 at 12:21 pm / 

    re: Hard to make Tileable – if you create a texture using photographic source of tiles/bricks or other images containing vertical and horizontal lines that are captured, artists have to spend a great deal of time aligning, editing seams, stretching and warping and hand painting to remove obviously repeating features. The Procedural tiling does away with lots of this grunt work. Perhaps it could have been better worded @Warick

  12. Jerc

    August 10, 2011 at 12:03 pm / 

    @Warwick
    Resolution independent means you can change the resolution of the texture at any time, from during the authoring to after cooking without embedding full resolution textures into the build.
    The smaller memory footprint is not a smaller “video” memory footprint but hard drive memory/download size.

  13. Nico

    August 10, 2011 at 12:00 pm / 

    Regarding tiling: substances are automatically tiling. So for bricks it’s indeed not too hard, but for other types it may be more complicated. With substance, it can always tile (doesn’t mean that you don’t repeat patterns however).

  14. Nico

    August 10, 2011 at 11:58 am / 

    The Player got bigger of around 400k, nothing else to download. Substance files are taking in general only a few kb, so it indeed reduces the game size. However once generated they are like any other textures in memory.

  15. Nico

    August 10, 2011 at 11:56 am / 

    Regarding résolution indépendant: substances can be generated from 64 to 2048 in Unity, and you can change this at runtime. In the end the texture is indeed stored in memory video.

  16. Nico

    August 10, 2011 at 11:55 am / 

    Substances created with Substance Designer are of course compatible with Unity. It’s as described on this page.

  17. Warwick Allison

    August 10, 2011 at 11:49 am / 

    Finally, is “bricks, tiles and other hard to make tileable surfaces” supposed to be as funny as it sounds? Bricks and tiles are the easiest things to make tileable (the word is “tile”-able!!!)

    You know it doesn’t magically make some infinitely non-repeating pattern, right?

  18. Warwick Allison

    August 10, 2011 at 11:43 am / 

    Same question for “smaller memory footprint”. Smaller WebPlayer file, yes (assuming the dll isn’t too big… or did the player get bigger?), but if the texture is “generated at load”, how does it use less memory?

  19. Warwick Allison

    August 10, 2011 at 11:40 am / 

    In what way are they “resolution independent”? Seems to me that they ultimately create a texture at a specific image size, and that texture is stored in video memory just like any other texture.

  20. Daniel

    August 10, 2011 at 9:07 am / 

    Dynamic fluid surfaces?

  21. Jason. Amstrad

    August 10, 2011 at 2:06 am / 

    And now dynamic fluid surfaces.

  22. Haru

    August 9, 2011 at 7:49 pm / 

    nice, looks good. Do you recommend licensing the substance Designer app from Allegorithmic? are substances created in the Designer compatible with Unity out of the box?

Comments are closed.