This is a presentation of an interactive snow shader which goal is to be a shader that the world interacts with and that has ease of use.
The interaction happens through blueprints that send a ray from either a special joint that in this case sits at the ankle of the player or directly from an object when it senses movement, as shown with the interactive object. This then changes a render target so prints are painted on it. This is then used as a mask for the shader so it can determine where the snow should be pushed down.
One challenge was that I wanted the snow to be interactive no matter what object it is on without being affected by interaction from other objects. This is done partly by dynamically creating new render targets when new objects are interacted with to save on performance, and partly by changing the size of prints so they always seem to keep the same size no matter how big the object is.
In addition to the in-game functionality, my goal was to make the snow useful for level artists. I did this by letting the users decide where the snow should be through vertex paint, to dynamically change where the snow is on the object when they are rotated. To improve this, I would also like to have the entire shader in a function that users can easily implement in their objects material. Making the shader oriented based has a major advantage. The snow always feels like it ends up where it should and that it becomes much easier for people who make levels to rotate and move objects with the shader on.
All textures and objects in the work are sourced from either the marketplace or other sites.