Dynamic Material Manipulation for a Weather System

Hello, I am trying to build a weather system plugin, which can add a snow effect to all materials in the scene. I do not want to provide a special material the user has to use, which is the most used solution for problems like this. I want to adjust all materials via C++ in the scene by getting their normal values and adjusting the diffuse values and I do not want to create a copy of the material every time.

Which classes would you suggest I should take a look at? Is something like this even possible?

What speaks against a layered material that you can switch on and off?
See: Creating Layered Materials in Unreal Engine | Unreal Engine 5.3 Documentation

Edit:

The reason for that is fairly simple. As an artist i wouldn’t want you to replace “all” of my materials with something or alter them.

Just think about it. A fiery pit does not need snow on top. I wouldn’t want that.
Instead give me a dynamic material that i can layer up with.

Thanks for your fast reply. The user can define areas that are affected by the snow. I will put the plugin online for others to test as soon as it works well enough.

I don’t know c++ but this can be done with blueprints, with CanvasRenderTarget2D so you should be able to find the equivalent. See my post in this thread for an example.