Inflicted FX best practices

I am a programmer, and I am unsure how is best to apply effect graphics to models.

The situation is a model can be “on fire”, “frozen”, “poisoned” or whatever else my scope creeps into.

I can have each model have multiple meshes, which may be good if a model gets frozen solid… or I could use projectors for embers/ burn marks… or I could figure out how to make a shader with “icy” “fire” and “poison” sliders…

But I have no idea what would be the most flexible and easy to use solution.

Ideally I could just stack materials, but that’s not quite how things work.

What are some best practices for this?

All thought are welcome!

Okay, so now I have two threads about this (one here, one in scripting), which I don’t feel great about. However I thought I should update both locations with my findings. I looked into command buffers, which seemed very promising. However, they will not work for this project.

For those that come after, here’s a decent tutorial on command buffers. Using Command Buffers in Unity: Selective Bloom – Linden Reid (something to note in the tutorial, if you have a shader that doesn’t need a texture, all you need is a new command buffer, draw renderers to buffer, then cam.AddCommandBuffer(args). all that texture stuff will just mess you up. also your camera rendering path needs to be differed. )

Sadly command buffers do not work in URP. I looked into URP Renderer Feature “Render Objects”, but it seems to be on a per layer basis, rather than a per object basis. I feel like I’m back to square 1.

Is there any way in URP to, through script, say “please re-render X renderer with Y material at Z RenderEvent”?