Hi @Cr3ap3r1,
While there are benefits and drawbacks to both, you are missing the third option: Custom Primitive Data. I’ll attach a link below so you can learn more about it.
To summarize:
Dynamic Material Parameters
Pros:
- Easily control any single parameter at runtime
- Does not require extra setup in the material
Cons:
- Creates a new material instance to run parameter (aka extra draw call)
- Can not be modified/previewed in-editor
Material Collections
Pros:
- Adjusts a parameter globally that can be used in many materials
- Great for things like global wind or values you want many materials to read
- Also great for getting the player location, since you only need to get it once to pass it to many places
- Works better than the other two options for Sequencer
Cons:
- Can not be instanced, so does not work well for changing values for single materials
- Creates an extra reference to the MPC in your blueprint
- Logic must be set up in material ahead of time
Custom Primitive Data
Pros:
- Values can be set in-editor and in-game, making it previewable
- Does not create a new material when using
- Arguably easier to set in-blueprint than the other two
- Can be set on the mesh, no blueprint required
- Since the values are stored per-primitive, this is a great method for altering foliage or instances
Cons:
- Needs to be set up in material ahead of time
- Less intuitive to set up and use
Personally, I almost exclusively use Custom Primitive Data, as it’s the most cost-effective and comes with a lot of great usability. Every method definitely has it’s time and place, though.
More info on Custom Primitive Data: