Rain system with baked collisions
More info
This means instead of raycasting for every new rain drop, it will create a huge grid over the map and do a spherecast (based on the particle size) from each grid position and store the distance to the ground. Then, every second I can get the closest grid positions to create rain and the distance of the raycast is already stored. This allows to have super dense/heavy rain without much performance loss besides slight load time upon start.
I’m super proud of how this came out!
Video of rain in action:
The rain in the video without any lighting effects:
Rain with lower height and particle emitter attachments visible: