This project was designed to simulate rain in an openGL world. From this project, the best parts of the project are the bounding objects and collision detection of objects.
This shows how certain bounding objects are better suited for different objects. If the goal is to use one bounding object per object, minimizing volumes provide the closest realism.
When the rain hits on an object off the ground, it creates a patch of ground that is undisturbed, similarly to a roof.
This shows the collisions against different bounding objects. Basically the pictures before it, but animated and all-in-one.