source: GTP/trunk/App/Demos/Illum/Rain/docs/index.html @ 2221

Revision 2221, 6.0 KB checked in by plemenos, 17 years ago (diff)
  • Property svn:executable set to *
Line 
1<html><head>
2<title>Realistic real-time rain rendering</title>
3</head>
4
5<style>
6body
7{
8  padding : 20px;
9 
10}
11h1
12{
13  text-align:center;
14}
15h2
16{
17  width:100%;
18  background-color: black;
19  color: white;
20  padding : 5px;
21  margin-top : 80px;
22}
23h3
24{
25  font-decoration : underline;
26  font-size: 100%;
27  padding : 0px;
28  margin : 0px;
29}
30li
31{
32  margin-bottom : 15px;
33}
34ul
35{
36margin-top:20px;
37  margin-bottom : 20px;
38}
39pre.bibtex
40{
41  border : 1px dashed;
42  background-color : #DDD;
43  padding :10px;
44}
45</style>
46
47<body>
48<center>
49<table width="80%" style="background-color:#DDD; border: 1px groove; text-align: center;">
50<tr>
51  <td width="20%" style="border: 1px groove;"><a href="#screenshot">Screenshot</a></td>
52  <td width="20%" style="border: 1px groove;"><a href="#description">Description of the method</a></td>
53  <td width="20%" style="border: 1px groove;"><a href="#running">Compiling / running the program</a></td>
54  <td width="20%" style="border: 1px groove;"><a href="#publications">Related publications</a></td>
55  <td width="20%" style="border: 1px groove;"><a href="html/index.html">Documentation</a></td>
56</tr>
57</table>
58</center>
59
60
61
62<h1>Realistic real-time rain rendering</h1>
63
64<a name="screenshot">
65<h2>Screenshot</h2>
66<center><img src="screenshot-rain.jpg" alt="screenshot of the method"><br><h4>A screenshot generated with this method, using 16000 regular raindrops, with light illumination.</h4></center><br>
67
68<a name="description">
69<h2>Description of the method</h2>
70This module proposes a full framework to add rain or snow to real-time applications.<br>
71It includes:
72<ul>
73
74<li>A hardware particle simulation :
75  <ul>
76  <li>Particles positions are stored in textures</li>
77  <li>These positions are updated through fragment programs, and take into account a falling speed and direction which can be modified interactively by the user</li>
78  <li>When the particles are rendered, their position is read from the texture, in a vertex program</li>
79  </ul>
80</li>
81
82<li>Several possible rendering techniques.
83  <ul>
84  <li><h3>SNOW :</h3>Particles are rendered with a simple snowflake texture.</li>
85  <li><h3>REGULAR RAINDROPS :</h3>A novel rendering algorithm is used here for high speed rendering of realistic raindrops.
86    <ul>
87    <li>Key idea : what you can see in a raindrop is a distorted image of the scene behind it.</li>
88    <li>We first capture a wide-angle render of the scene to a texture</li>
89    <li>In a pixel shader, this texture is mapped onto the raindrops, according to the physical properties of raindrops, to simulate realistic refraction.</li>
90    </ul>
91  </li>
92  <li><h3>STREAKS :</h3>Because of retinal persistence, raindrops, though roughly spherical, tend to appear like streaks.
93  Each single raindrop impresses the film or retina for a short while.<br>This effect is handled using another pixel shader to render the particles. For each pixel of a streak, we blend the contributions of a few successive positions of the raindrop, computed using the algorithm described above.</li>
94  <li>Optionnaly, regular raindrops or streaks can be combined with illumination from light sources</li>
95  <li>As of now, the different rendering types are NOT COMPLIANT with each other. Each one must be activated, one at a time, with a #define compiler directive in the file <i>CommonRain.h</i>, ant then the program must be recompiled.</li>
96  </ul>
97</li>
98</ul>
99
100
101<a name="running">
102<h2>Compiling and running the program.</h2>
103This program was created using the great <a href="http://www.ogre3d.org">OGRE</a> rendering engine, which must be installed (version 1.2) on your sytem if you wish to run the program. By now, it has only been tested under linux, but should work under windows systems thanks to the multi-platform character of Ogre.<br><br>
104To execute it, you will need a SHADER MODEL 3 capable card, such as an nVidia Geforce 6, and Cg compiler installed.<br><br>
105You must first have a look to CommonRain.h to choose the type of rendering you wish (just uncomment the desired settings).<br><br>
106The particle count can be modified in RainCloseDropsParticles.cpp, by modifying the value of the #define
107BILLBOARD_POS_TEX_SIZE. Particle count is the square of this value.<br><br>
108This code is given as a running complete program, but shouldn't require too much modifications to be adapted to the needs of another program.<br><br>
109In the proposed implementation, the following key bindings are handled :
110<ul>
111  <li><b>esc : </b>leace the program</li>
112  <li><b>arrows keys / numpad 4, 5, 6, 8 : </b>User movement (translations)</li>
113  <li><b>mouse : </b>User rotations</li>
114  <li><b>R : </b>reinitialize the particle system, in case it would behave inconsistently</li>
115  <li><b>space : </b>pause the system</li>
116  <li><b>E : </b> erase the text on the fps display (little character, bottom left)</li>
117  <li><b>+ and - : </b>increase / decrease the particles size</li>
118  <li><b>S and Q : </b>accelerate / slow down the falling speed of the particles</li>
119  <li><b>W and SHIFT+W : </b>accelerate/ slow down a lateral wind</li>
120  <li><b>SYSRQ : </b>capture a screenshot</li>
121  <li><b>C : </b> begin capturing all the frames, to make a video</li>
122</ul>
123<br>
124You can access the Doxygen-made <a href="html/index.html">documentation</a> for this program !
125
126<a name="publications">
127<h2>Publications</h2>
128Full details about the methods used is given in the following paper :<br>
129<pre class='bibtex'>
130@Article{RJG06,
131  author       = "Rousseau, Pierre and Jolivet, Vincent and Ghazanfarpour, Djamchid",
132  title        = "Realistic real-time rain rendering",
133  journal      = "Computers \&amp; Graphics",
134  number       = "4",
135  volume       = "30",
136  year         = "2006",
137  note         = "special issue on Natural Phenomena Simulation",
138  url          = "<a href="http://www.msi.unilim.fr/basilic/Publications/2006/RJG06">http://www.msi.unilim.fr/basilic/Publications/2006/RJG06</a>"
139}
140</pre>
141   
142
143
144<br><br><br>
145<hr>
146<div align="right">
147Pierre Rousseau<br>
148University of LIMOGES<br>
149<a href="mailto:rousseau@msi.unilim.fr">rousseau@msi.unilim.fr</a><br>
15017th of may, 2006
151</div>
152
153</body>
154</html>
Note: See TracBrowser for help on using the repository browser.