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