Pierre Rousseau, Vincent Jolivet and Djamchid Ghazanfarpour.
Institut XLIM - UMR CNRS no 6172 - Université de Limoges


PDF Download the article


Real-time rendering of virtual weather conditions has been investigated in many papers. Inserting fog or snow in a scene is rather straightforward. Rain is one of the most encountered natural phenomena, but its rendering often lacks realism. In this paper, we propose a realistic real-time rain rendering method using programmable graphics hardware. In order to simulate the refraction of the scene inside a raindrop, the scene is captured to a texture which is distorted according to optical properties of raindrops. This texture is mapped onto each raindrop. Our method also takes into account retinal persistence, and interaction with light sources.


(click the images to enlarge)
heavy rain
A photography of heavy rain.
a real water-drop
A photography of a water-drop

Explaination of the method

In a pre-computation step, we pre-compute a mask containing the refraction vectors for the desired raindrop shape (computed from the radius). Video illustrating this step mask
At runtime, a fragment shader refracts the background scene onto the raindrops (geometrically rendered as quads) Video illustrating this step mask

Video results

Standard rainy scene, with illumination: first video (18 Mo)
Rainy scene, with illumination and retinal persistence: second video (22 Mo)
Two coloured light sources moving around raindrops: third video (12 Mo)
Illuminated short streaks: fourth video (13 Mo)

Images of results

(click the images to enlarge)
Standard model: 16000 drops, 1mm radius 16000 drops, 3mm radius
Using the retinal persistence extension: 16000 streaks, 0.5mm radius
Using the illumination extension: 10000 streaks, 1.0mm radius, without light
Without the extension.
10000 streaks, 1.0mm radius, with light
With the extension.
Using the illumination extension, with two light sources: 10000 drops, 1.5mm radius, two lights
Using both extensions: 4000 shortstreaks, 0.5mm radius, with light 4000 long streaks, 1.0mm radius, with light

Other images:
big drops 1 big drops 2 streaks 1
streaks 2 no light with light
no light with light streaks 1

All videos are encoded using the h264 codec available in Quicktime 7.0, which you can get here.
If you are using linux, you can use VLC.

If you wish to contact me :

Last Modified: 09th of September 2006

Valid XHTML 1.1! Valid CSS!