progs/util: Fix memory leak if malloc fails in tkRGBImageLoad.
[mesa.git] / progs / demos / README
1 INTRODUCTION
2 ------------
3
4 This directory is usually included in the Mesa demos distribution or
5 in the GLUT distribution.
6
7 I have written the demos included in this directory mainly for showing
8 the capabilities of the Mesa library when using the Voodoo driver.
9 However all the demos are written using the GLUT and OpenGL so they
10 work with any GLUT/OpenGL platform (tested: Linux+Mesa+Voodoo driver,
11 Linux+Mesa+X11 driver, Win95+Mesa+Voodoo driver and SGI Onyx IR thanks
12 to Mark Kilgard).
13
14 All the demos make an heavy use of texture mapping, blending, etc. so
15 you _need_ some kind of hardware support for the OpenGL otherwise they
16 will run at ~1fps. You need also a OpenGL 1.1 compliant library.
17
18 You can find some screenshot of these demos at
19 http://www-hmw.caribel.pisa.it/fxmesa/fxdemos.hmtl
20
21 Write me if you find some bug in the demos.
22
23 David Bucciarelli (tech.hmw@plus.it)
24
25 Humanware s.r.l.
26 Via XXIV Maggio 62
27 Pisa, Italy
28 Tel./Fax +39-50-554108
29 email: info.hmw@plus.it
30 www: www-hmw.caribel.pisa.it
31
32
33 A BRIEF DESCRIPTION OF THE DEMOS
34 --------------------------------
35
36
37 IPERS
38 -----
39
40 Sources: ipers.c image.c
41
42 A nice spinning fractal object.
43
44
45 RAY
46 ---
47
48 Sources: ray.c
49
50 I'm using ray tracing to dynamically generate texture maps with
51 specular, diffuse, shadows, and mirror colors. Each frame the texture
52 maps of the plane and of the sphere are partially updated. With this
53 technique you can obtain true mirrors, shadows, specular highlights,
54 bump mapping, etc. in realtime. This demo is really CPU intensive
55 (~25fps on a PentiumII@300MHz with a Pure3D). Support on-the-fly
56 switching between fullscreen and in-window rendering under Linux/Mesa
57 (start your X server in 16 bpp mode and press the spacebar).
58
59
60 TUNNEL
61 ------
62
63 Sources: tunnel.c image.c sources.c
64 Data: bw.rgb tile.rgb
65
66 The model was designed and prelighted with Alias|Wavefront
67 PowerAnimator V8. Triangle strips were built with a tool written by me
68 and then statically included in the sources. This demo doesn't
69 require the ZBuffer and use antialiased polygons. Support on-the-fly
70 switching between fullscreen and in-window rendering under Linux/Mesa
71 (start your X server in 16 bpp mode and press the spacebar).
72
73
74 TUNNEL2
75 ------
76
77 Sources: tunnel2.c image.c sources.c
78 Data: bw.rgb tile.rgb
79
80 The some tunnel demo but with two output channels. A nice
81 example of the Mesa/Voodoo support for multiple boards in
82 the some PC.
83
84
85 TEAPOT
86 ------
87
88 Sources: teapot.c image.c dteapot.c shadow.c
89 Data: bw.rgb tile.rgb
90
91 The shadow is drawn projecting the teapot geometry over the plane. All
92 other light effects are drawn using the standard OpenGL capabilities.
93 Support on-the-fly switching between fullscreen and in-window
94 rendering under Linux/Mesa (start your X server in 16 bpp mode and
95 press the spacebar).
96
97
98 FIRE
99 ----
100
101 Sources: fire.c image.c
102 Data: s128.rgb tree2.rgb
103
104 The demo use a small particle system to draw some nice visual effect.
105 You can interactively change many parameters of the particle system
106 and you can choose the number of particles at the startup ('fire
107 4000'). This demo should be called fountain. Support on-the-fly
108 switching between fullscreen and in-window rendering under Linux/Mesa
109 (start your X server in 16 bpp mode and press the spacebar).
110
111
112 TERRAIN
113 -------
114
115 Sources: mesaland.c
116
117 This demo is base on another demo written by Mikael SkiZoWalker. I
118 have added the capabilities to freely fly around, view culling and
119 some nice color. Support on-the-fly switching between fullscreen and
120 in-window rendering under Linux/Mesa (start your X server in 16 bpp
121 mode and press the spacebar).
122
123
124 GLTEST
125 ------
126
127 Sources: gltest.c
128
129 This is a simple benchmark suite that I'm using in the development of
130 the Mesa/Voodoo driver. Type 'gltest >my.res' and you will get some
131 data about the performances of your OpenGL. Follow the results with my
132 PC (Linux+Mesa-2.6+PentiumII@300MHz+Pure3D):
133
134 Simple Points
135 587900.080674 Pnts/sec
136
137 Smooth Lines
138 SIZE=480 => 39007.426183 Lins/sec
139 SIZE=250 => 74575.016485 Lins/sec
140 SIZE=100 => 179734.882409 Lins/sec
141 SIZE=050 => 183987.795297 Lins/sec
142 SIZE=025 => 183820.086309 Lins/sec
143
144
145 ZSmooth Triangles
146 SIZE=480 => 784.954997 Tris/sec
147 SIZE=250 => 2862.325889 Tris/sec
148 SIZE=100 => 17779.492938 Tris/sec
149 SIZE=050 => 159339.829844 Tris/sec
150 SIZE=025 => 428602.984008 Tris/sec
151
152
153 ZSmooth Tex Blend Triangles
154 SIZE=480 => 784.473931 Tris/sec
155 SIZE=250 => 2853.781513 Tris/sec
156 SIZE=100 => 17598.252146 Tris/sec
157 SIZE=050 => 152632.578337 Tris/sec
158 SIZE=025 => 377584.760048 Tris/sec
159
160
161 ZSmooth Tex Blend TMesh Triangles
162 SIZE=400 => 563.900695 Tris/sec, MPixel Fill/sec: 45.112056
163 SIZE=250 => 1449.777225 Tris/sec, MPixel Fill/sec: 45.305538
164 SIZE=100 => 8702.869121 Tris/sec, MPixel Fill/sec: 43.514346
165 SIZE=050 => 31896.867466 Tris/sec, MPixel Fill/sec: 39.871084
166 SIZE=025 => 114037.262894 Tris/sec, MPixel Fill/sec: 35.636645
167 SIZE=010 => 220494.235839 Tris/sec, MPixel Fill/sec: 11.024712
168 SIZE=005 => 225615.506651 Tris/sec, MPixel Fill/sec: 2.820194
169 SIZE=002 => 225607.681439 Tris/sec, MPixel Fill/sec: 0.451215
170
171
172 Color/Depth Buffer Clears
173 295.042474 Clrs/sec, MPixel Fill/sec: 90.553256
174
175
176 Follow the results with my
177 PC (Linux+Mesa-3.0beta5+PentiumII@300MHz+Voodoo2):
178
179
180 Simple Points
181 1620113.525130 Pnts/sec
182
183 Smooth Lines
184 SIZE=480 => 73841.166065 Lins/sec
185 SIZE=250 => 140794.035316 Lins/sec
186 SIZE=100 => 344185.242157 Lins/sec
187 SIZE=050 => 420399.008289 Lins/sec
188 SIZE=025 => 420261.389773 Lins/sec
189
190
191 ZSmooth Triangles
192 SIZE=480 => 1434.668506 Tris/sec
193 SIZE=250 => 5228.449614 Tris/sec
194 SIZE=100 => 46603.815842 Tris/sec
195 SIZE=050 => 325757.045961 Tris/sec
196 SIZE=025 => 589022.403336 Tris/sec
197
198
199 ZSmooth Tex Blend Triangles
200 SIZE=480 => 1414.900041 Tris/sec
201 SIZE=250 => 5006.055235 Tris/sec
202 SIZE=100 => 43602.252031 Tris/sec
203 SIZE=050 => 303497.092692 Tris/sec
204 SIZE=025 => 517087.428669 Tris/sec
205
206
207 ZSmooth Tex Blend TMesh Triangles
208 SIZE=400 => 1023.273112 Tris/sec, MPixel Fill/sec: 81.861849
209 SIZE=250 => 2595.692121 Tris/sec, MPixel Fill/sec: 81.115379
210 SIZE=100 => 15788.198912 Tris/sec, MPixel Fill/sec: 78.940995
211 SIZE=050 => 58784.121300 Tris/sec, MPixel Fill/sec: 73.480152
212 SIZE=025 => 244233.873481 Tris/sec, MPixel Fill/sec: 76.323085
213 SIZE=010 => 474995.004191 Tris/sec, MPixel Fill/sec: 23.749750
214 SIZE=005 => 475124.354163 Tris/sec, MPixel Fill/sec: 5.939054
215 SIZE=002 => 474959.089503 Tris/sec, MPixel Fill/sec: 0.949918
216
217
218 Color/Depth Buffer Clears
219 478.654830 Clrs/sec, MPixel Fill/sec: 146.906826
220
221
222 PALTEX and GLBPALTX
223 -------------------
224
225 Sources: paltex.c and glbpaltx.c
226
227 The PALTEX example was written by Brian Paul and it shows the
228 capabilities of the GL_EXT_paletted_texture extension. I have written
229 the other example in order to show the capabilities of the
230 gl3DfxSetPaletteEXT() (it used only by GLQuake and Quake2).