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