- Home /
Substances or custom Shaders?
Hello Unity Answers Community,
I just got my hands on the Substance Designer Trial and also experimented a bit with Strumpy's Shader Editor. As far as I know in Substance Designer I build custom Materials with different shaders and materials (sticking them together with various parameters and blend options and so on. I don't know if I am correct but can I just use for every approach finalizing a object a Substance Texture or would it be better/do I still have to use the texture+strumpy editor combination?
In general what are the benefits / dis-advantages between both approaches for my goals? (apart of the real time modifying and fast customization of substances)
sincerely,
Soul
Answer by Peter G · Aug 31, 2011 at 03:01 AM
The overlap somewhat in what you can do, but they don't exactly line up. Substances are somewhat like shaders with a fixed texture that's generated at runtime.
Substances are designed especially for repeating textures and materials. They are great for things like flooring or walls where the texture essentially repeats itself many times. Then there properties allow for quick changes to be done quickly, and are nice for real time modifications. The biggest advantage to them though is that they have small files sizes. Substances are a collection of scripts and a few small images that are combined into a larger image when the texture is loaded. This gives you smaller build sizes which is ideal for web player. The tradeoff is that the textures have to be generated at runtime which takes time.
A SSE shader is just like any other shader. You have complete control over what goes on from vertex positioning to lighting to texturing. Shaders are move versatile than substances. They work for everything. There isn't too much else to say. You could implement your own substance creator using shaders, but you wouldn't get the memory benefits.
When choosing what to use, you have to ask yourself several questions:
Are you willing to take a small runtime performance hit to decrease the build size. If you are running on web player, you want to.
Are you developing for a mobile device. Substances are converted to bitmaps for mobile which erases most of the benefits.
Does the object lend itself well to procedural textures. Does it have many repeating patterns. If it is a character, then probably not. If its a character, you probably want a custom shader.
If you have objects that make sense for procedural textures, I would lean towards substances. They have a smaller build size and the performance hit is only when the texture changes. Having said that, if you change the texture a lot, you might want to make a shader that blends multiple textures together.
Thank you for this great answer :)
"The tradeoff is that the textures have to be generated at run-time which takes time." - From what I know it's possible to bake those materials out so the real-time rendering don't have to be done.
So how much I understood is.. for Walls and simpler/primitive forms or symmetrical ones it's good to use substances also to get variations ins$$anonymous$$d of always the same e.g wall texture. For more specific Forms like a character or any creatures custom texture/shader
I am currently developing games for PC/$$anonymous$$ac so the performance doesn't take that much attention I guess.
The problem is also that I'm more comfortable with substance designer cause I can develop the texture with shader and texture itself and am able to adjust it on the fly. The other way around it's more long winded.
Answer by Waz · Aug 31, 2011 at 04:22 AM
I wouldn't say Substances are anything like shaders. They are a Material with runtime procedurally generated textures, nothing more, nothing less. As with any Material, you can set it to use any of the standard Unity shaders like Bumped Specular, or any shaders you make yourself with Strumpy SE or by hand.
Perhaps you could say that the style by which Substances are designed is a bit like a shader, especially as visually edited in Strumpy SE, but that seems more a case of parallel evolution than actual relatedness.
Substances are most like FilterForge textures, and are edited in a very similar way. Substances being runtime have the resulting advantages that brings (and if they freed up the distribution process, they'd probably have as many freely availables Subsances as there are FilterForge Filters too).
(I'm not saying Peter G is wrong. Rather I am offering a more orthogonal conception of Substances and Shaders, since drawing correlations could be misleading)
Your answer
Follow this Question
Related Questions
Assign texture to shader bypassing material (in Unity Editor) 1 Answer
Best way to create emissive edges on an object 1 Answer
Character Customization : techniques for brows, facial hair, tattoos, scars... 2 Answers
How do I animate procedural textures? 4 Answers
Offset textures individually into specific world directions 2 Answers