Snow Weather System in Unity - Part 1

I've made drafts of a bunch of stuff over the past few months but this time I'm going to see something through to the end. I have been wanting to learn how to create tools and systems in Unity for the longest time, as a Technical Artist I currently mainly deal with shaders and VFX and it feels like there isn't much of the technical inside the artist so I've taken it upon myself to learn how to create Unity editor tools.

For the longest time I've wanted to create something along these lines, have snow VFX with procedural snowflakes and make it so that the snow builds up in the environment using shaders, adding some footsteps in the snow etc. This happens to be a perfect opportunity where I can both of these things together and hopefully kill 3 birds with one stone: learn how to create editor tools, start and finish an idea I've had for a while, end up with a piece of work I can post about and potentially put on my portfolio..

I'm going to do this in multiple parts before ultimately editing everything and more than likely adjusting how it's presented but here is my deliverable goal.


Deliverables:

- Editor script that controls parameters across other scripts, VFX, shaders, materials and rendering effects

- VFX graph snow effect with customizable parameters to control the intensity and overall snow levels

- Master shader for the environment that makes it look like snow is appearing when changing a global value through script

-Shader for a lake that consists of really nice visuals of a lake, a frozen lake, and a transition between the two from the outer edges inwards like a lake would freeze

- Full screen frost effect that slowly appears and intensifies when reaching a certain level of snowiness

- A parameter that controls overall snow/frost level in the scene and having things gradually appear at different times and lerp between values based on that value


Stretch goals:

- Footprints in the snow when character walks over the ground

- If there's a player in the scene, slowing his movement based on the frost level

- Having grass that swirls up and builds up snow in the scene

- Wind effects that play falling snow VFX when used on trees (seems like a pain in the ass)


I think this will be as difficult as I make it, on the base level all of these effects shouldn't be too difficult to implement, with the stretch goals being a bit harder but not impossible provided I create them on their own first.


Game plan:

I'm going to create temporary block out effects and shaders for all of the deliverable elements and after they're all in improve upon them.

The most difficult part will be setting everything up to be controlled inside of the editor script, I've created a very basic one so far but I've realised that it's a little bit more complicated to reference game objects inside a Editor script compared to a usual runtime script so I need to figure this out above everything else.


I'm going to split these into parts, each part will mostly focus on one feature and how I've implemented it. For example, part 2 might be the VFX graph with procedural snowflakes, break down what I've done and hopefully have a polished element that I'm happy with and it's briefly connected inside the editor tool, even if it's at a base level of just enabling and disabling it on the go.



Comments

Popular Posts