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 (a] 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 (a] 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). 231