I'm working a project where I'm making a modular set for multiple buildings. The current plan is to use Substance to help add variation between buildings. Is there a way to instance substances like you can instance materials? Or would it be better to just remake part of the Substance in the UE4 material editor, and instance that material?
Replies
If it's at runtime, you can use blueprint to duplicate a graph instance and then generate the new textures and assign them to your material instance.
If it's in the editor directly, via the content browser, you just need to duplicate a graph instance in the content browser and it will give you a new set of textures to link in your material instances.
Instancing a substance 8 or so times
- Separate material for each substance instance
- Easier to iterate in substance (less jumping back and forth)
Using a master material
- Have to remake parts of the substance in UE4
- More expensive shader
- Can instance UE4 materials so hopefully less draw calls?
- More control over mipping
I think I'm going to try the master material route for one of the materials at least, less iteration and designing substances to be recreated is going to be a bit limiting, but I'm going to try giving both options a go, they seem to have their own places.
- Complex master material with only one set of texture : multiple instances, but you only query a limited set of textures. The shader do all the rest of work (like constant color overlays and a set of parameters).
- Simple master material with instance where you override each time the texture with the one from the substance. You get therefore some shaders much cheaper to compute, but query a lot of different textures which can also consume some bandwith.
I would go for the first setup personally as shaders are much faster than tweaking substances, but if you only need to tweak once a set of parameters (say for example a character creation system where the user define its skin color and tattoos) then computing a unique set of textures only once and using a simple shader is better.