En bref..
Je penserais cela à travers la science.
Comme nous le savons tous, la neige est de la pluie et vice versa, sauf qu'ils ont des états solides différents en raison des changements de température.
Les changements de température peuvent être associés aux vents.
Un rapide Google pour "ce qui cause le vent" m'a donné une réponse d'Answers.com:
"La force du gradient de pression, qui résulte du chauffage inégal de la surface de la terre. Une fois en mouvement, la force de Coriolis provient de la rotation de la Terre pour la dévier (à droite dans l'hémisphère nord, à gauche dans l'hémisphère sud)."
Oui, ce n'est pas la meilleure source de questions scientifiques, mais ça donne l'idée.
Donc, théoriquement, vous n'avez besoin que de vent maintenant. Il peut être aléatoire ou bien être en quelque sorte scripté pour votre environnement qui se réchauffe en raison de certains événements.
Prenez le vent maintenant, appliquez à votre position actuelle, et au hasard ou par le biais d'un script, faites-en des nuages. Plus le nuage est dense, plus la probabilité et la densité de la pluie sont importantes. Si la température est suffisamment basse, la pluie se transforme en neige. Déplacez le nuage et rendez-le "moins dense" avec ce vent.
Quant à l'affichage, c'est à vous de décider, il suffit de mettre en cache les états des particules qui tombent, if rain -> use water drop texture
et if snow -> use snowflake texture
. Utilisez le vent pour faire bouger ces particules en fonction de la direction du vent (oui, vous devriez aussi stocker celle-ci quelque part) pour la rendre un peu plus réaliste.
Et avec cela, vous pouvez développer tout. Par exemple, s'il y a de la neige qui tombe et que les flocons de neige tombent près d'une source de chaleur, changez à nouveau la texture des particules en pluie.
Beaucoup de possibilités en fait, ce n'est qu'un concept simple.
PS En ce qui concerne la grêle, regardez ce qui les rend, élargissez le concept pour un tel environnement.
Amusez-vous, bonne chance.