Brian Paul | d88f8e9 | 2000-06-27 17:11:24 +0000 | [diff] [blame] | 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). |