Home Unity

Substance designer vs. Unity Shader Graph?

polycounter lvl 2
Offline / Send Message
bigdeku polycounter lvl 2
I've been working on a lot of animations in Maya and am now switching over to doing some more interactive stuff in Unity and I am at the stage where I want a bit more visual control over the content I create. I have to make a decision about what to learn next but I am bit confused about the overlap between Substance Designer and Unity's Shader Graph. 

How much overlap is there between these two tools? Can you essentially make the same animated and game ready materials in substance designer and then import them into Unity? Or are there Unity specific Shader graph modules that one needs to learn?

I suppose, in summary, as someone who is just getting into writing their own shaders and has some experience with substance painter, should I learn both of these tools or just one? and which one would be better to learn first?

(It's worth noting that I am also creating stuff in Maya also that's not real time/interactive so being to double up on one tool for two programs would certainly be useful.)

Any advice is greatly appreciated.


  • Obscura
    Offline / Send Message
    Obscura grand marshal polycounter
    Here are my 2 cents. Anything animated should be done in the shader graph. These shader graphs in the game engines works similar to how substance nodes works, with one exception. The substance ones bakes down to a texture(render target), and there is a good reason for this. Most of the operations you can do in Substance Designer, are very expensive to do in real time (however, not impossible, this is why you can have instantanous feedback inside Designer), ie. blur, texture bombing, etc. You could technically create similar materials to what comes out from substacnce, simply by using the proper shader graph nodes, and some custom ones where needed. But the shader graph is re-evaluated every frame, while a substance is static. Doing animated things in a substance is not impossible, but very inefficient, because of the baking down process that happens in the background. You would end up re calculating the substance graph (including the expensive operations)every frame. So I would say there is a good usage for both. Substance for static things, and anything dynamic should be in you shader graph, because that is already re-calculated every frame, no matter what.
  • Diethyl
    Offline / Send Message
    Diethyl node

    @obscura I was just about to post a similar question, thanks for your response to @bigdeku (heh-heh). So from what I understand, it's not feasible to update in real time, but is it possible to update at runtime? I've noticed more than one video on YouTube mentioning updates at runtime, so could one for instance update a texture to have snow, while loading up a chapter of a game where snow has fallen or a season has changed? I thought the plug-in for Unity/Unreal was integrated into the IDE and not really an API running in the Unity engine. The documentation doesn't really make it too clear if it is or not, really it doesn't really explain much about integration into Unity or Unreal at all.

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter

    There was runtime substance support in unity and unreal - it all ran (very slowly) in software and wasn't even remotely viable for realtime updates.

    The offline stuff was more viable - I know it was used to reduce download sizes and help support the play now feature for some early ps4 titles.

    It's a non-starter really IMO. you'd need a very specific use case to warrant the performance overhead in processing a substance graph vs doing the same thing in a shader or even your own code.

Sign In or Register to comment.