132001f49SmrgINTRODUCTION
232001f49Smrg------------
332001f49Smrg
432001f49SmrgThis directory is usually included in the Mesa demos distribution or
532001f49Smrgin the GLUT distribution.
632001f49Smrg
732001f49SmrgI have written the demos included in this directory mainly for showing
832001f49Smrgthe capabilities of the Mesa library when using the Voodoo driver.
932001f49SmrgHowever all the demos are written using the GLUT and OpenGL so they
1032001f49Smrgwork with any GLUT/OpenGL platform (tested: Linux+Mesa+Voodoo driver,
1132001f49SmrgLinux+Mesa+X11 driver, Win95+Mesa+Voodoo driver and SGI Onyx IR thanks
1232001f49Smrgto Mark Kilgard).
1332001f49Smrg
1432001f49SmrgAll the demos make an heavy use of texture mapping, blending, etc. so
1532001f49Smrgyou _need_ some kind of hardware support for the OpenGL otherwise they
1632001f49Smrgwill run at ~1fps. You need also a OpenGL 1.1 compliant library.
1732001f49Smrg
1832001f49SmrgYou can find some screenshot of these demos at
1932001f49Smrghttp://www-hmw.caribel.pisa.it/fxmesa/fxdemos.hmtl
2032001f49Smrg
2132001f49SmrgWrite me if you find some bug in the demos.
2232001f49Smrg
2332001f49SmrgDavid Bucciarelli (tech.hmw@plus.it)
2432001f49Smrg
2532001f49SmrgHumanware s.r.l.
2632001f49SmrgVia XXIV Maggio 62
2732001f49SmrgPisa, Italy
2832001f49SmrgTel./Fax +39-50-554108
2932001f49Smrgemail: info.hmw@plus.it
3032001f49Smrgwww: www-hmw.caribel.pisa.it
3132001f49Smrg
3232001f49Smrg
3332001f49SmrgA BRIEF DESCRIPTION OF THE DEMOS
3432001f49Smrg--------------------------------
3532001f49Smrg
3632001f49Smrg
3732001f49SmrgIPERS
3832001f49Smrg-----
3932001f49Smrg
4032001f49SmrgSources: ipers.c image.c
4132001f49Smrg
4232001f49SmrgA nice spinning fractal object.
4332001f49Smrg
4432001f49Smrg
4532001f49SmrgRAY
4632001f49Smrg---
4732001f49Smrg
4832001f49SmrgSources: ray.c
4932001f49Smrg
5032001f49SmrgI'm using ray tracing to dynamically generate texture maps with
5132001f49Smrgspecular, diffuse, shadows, and mirror colors. Each frame the texture
5232001f49Smrgmaps of the plane and of the sphere are partially updated.  With this
5332001f49Smrgtechnique you can obtain true mirrors, shadows, specular highlights,
5432001f49Smrgbump mapping, etc. in realtime.  This demo is really CPU intensive
5532001f49Smrg(~25fps on a PentiumII@300MHz with a Pure3D).  Support on-the-fly
5632001f49Smrgswitching between fullscreen and in-window rendering under Linux/Mesa
5732001f49Smrg(start your X server in 16 bpp mode and press the spacebar).
5832001f49Smrg
5932001f49Smrg
6032001f49SmrgTUNNEL
6132001f49Smrg------
6232001f49Smrg
6332001f49SmrgSources: tunnel.c image.c sources.c
6432001f49SmrgData: bw.rgb tile.rgb
6532001f49Smrg
6632001f49SmrgThe model was designed and prelighted with Alias|Wavefront
6732001f49SmrgPowerAnimator V8. Triangle strips were built with a tool written by me
6832001f49Smrgand then statically included in the sources.  This demo doesn't
6932001f49Smrgrequire the ZBuffer and use antialiased polygons.  Support on-the-fly
7032001f49Smrgswitching between fullscreen and in-window rendering under Linux/Mesa
7132001f49Smrg(start your X server in 16 bpp mode and press the spacebar).
7232001f49Smrg
7332001f49Smrg
7432001f49SmrgTUNNEL2
7532001f49Smrg------
7632001f49Smrg
7732001f49SmrgSources: tunnel2.c image.c sources.c
7832001f49SmrgData: bw.rgb tile.rgb
7932001f49Smrg
8032001f49SmrgThe some tunnel demo but with two output channels. A nice
8132001f49Smrgexample of the Mesa/Voodoo support for multiple boards in
8232001f49Smrgthe some PC.
8332001f49Smrg
8432001f49Smrg
8532001f49SmrgTEAPOT
8632001f49Smrg------
8732001f49Smrg
8832001f49SmrgSources: teapot.c image.c dteapot.c shadow.c
8932001f49SmrgData: bw.rgb tile.rgb
9032001f49Smrg
9132001f49SmrgThe shadow is drawn projecting the teapot geometry over the plane. All
9232001f49Smrgother light effects are drawn using the standard OpenGL capabilities.
9332001f49SmrgSupport on-the-fly switching between fullscreen and in-window
9432001f49Smrgrendering under Linux/Mesa (start your X server in 16 bpp mode and
9532001f49Smrgpress the spacebar).
9632001f49Smrg
9732001f49Smrg
9832001f49SmrgFIRE
9932001f49Smrg----
10032001f49Smrg
10132001f49SmrgSources: fire.c image.c
10232001f49SmrgData: s128.rgb tree2.rgb
10332001f49Smrg
10432001f49SmrgThe demo use a small particle system to draw some nice visual effect.
10532001f49SmrgYou can interactively change many parameters of the particle system
10632001f49Smrgand you can choose the number of particles at the startup ('fire
10732001f49Smrg4000').  This demo should be called fountain.  Support on-the-fly
10832001f49Smrgswitching between fullscreen and in-window rendering under Linux/Mesa
10932001f49Smrg(start your X server in 16 bpp mode and press the spacebar).
11032001f49Smrg
11132001f49Smrg
11232001f49SmrgTERRAIN
11332001f49Smrg-------
11432001f49Smrg
11532001f49SmrgSources: mesaland.c
11632001f49Smrg
11732001f49SmrgThis demo is base on another demo written by Mikael SkiZoWalker.  I
11832001f49Smrghave added the capabilities to freely fly around, view culling and
11932001f49Smrgsome nice color.  Support on-the-fly switching between fullscreen and
12032001f49Smrgin-window rendering under Linux/Mesa (start your X server in 16 bpp
12132001f49Smrgmode and press the spacebar).
12232001f49Smrg
12332001f49Smrg
12432001f49SmrgGLTEST
12532001f49Smrg------
12632001f49Smrg
12732001f49SmrgSources: gltest.c
12832001f49Smrg
12932001f49SmrgThis is a simple benchmark suite that I'm using in the development of
13032001f49Smrgthe Mesa/Voodoo driver. Type 'gltest >my.res' and you will get some
13132001f49Smrgdata about the performances of your OpenGL. Follow the results with my
13232001f49SmrgPC (Linux+Mesa-2.6+PentiumII@300MHz+Pure3D):
13332001f49Smrg
13432001f49SmrgSimple Points
13532001f49Smrg587900.080674 Pnts/sec
13632001f49Smrg
13732001f49SmrgSmooth Lines
13832001f49SmrgSIZE=480 => 39007.426183 Lins/sec
13932001f49SmrgSIZE=250 => 74575.016485 Lins/sec
14032001f49SmrgSIZE=100 => 179734.882409 Lins/sec
14132001f49SmrgSIZE=050 => 183987.795297 Lins/sec
14232001f49SmrgSIZE=025 => 183820.086309 Lins/sec
14332001f49Smrg
14432001f49Smrg
14532001f49SmrgZSmooth Triangles
14632001f49SmrgSIZE=480 => 784.954997 Tris/sec
14732001f49SmrgSIZE=250 => 2862.325889 Tris/sec
14832001f49SmrgSIZE=100 => 17779.492938 Tris/sec
14932001f49SmrgSIZE=050 => 159339.829844 Tris/sec
15032001f49SmrgSIZE=025 => 428602.984008 Tris/sec
15132001f49Smrg
15232001f49Smrg
15332001f49SmrgZSmooth Tex Blend Triangles
15432001f49SmrgSIZE=480 => 784.473931 Tris/sec
15532001f49SmrgSIZE=250 => 2853.781513 Tris/sec
15632001f49SmrgSIZE=100 => 17598.252146 Tris/sec
15732001f49SmrgSIZE=050 => 152632.578337 Tris/sec
15832001f49SmrgSIZE=025 => 377584.760048 Tris/sec
15932001f49Smrg
16032001f49Smrg
16132001f49SmrgZSmooth Tex Blend TMesh Triangles
16232001f49SmrgSIZE=400 => 563.900695 Tris/sec, MPixel Fill/sec: 45.112056
16332001f49SmrgSIZE=250 => 1449.777225 Tris/sec, MPixel Fill/sec: 45.305538
16432001f49SmrgSIZE=100 => 8702.869121 Tris/sec, MPixel Fill/sec: 43.514346
16532001f49SmrgSIZE=050 => 31896.867466 Tris/sec, MPixel Fill/sec: 39.871084
16632001f49SmrgSIZE=025 => 114037.262894 Tris/sec, MPixel Fill/sec: 35.636645
16732001f49SmrgSIZE=010 => 220494.235839 Tris/sec, MPixel Fill/sec: 11.024712
16832001f49SmrgSIZE=005 => 225615.506651 Tris/sec, MPixel Fill/sec: 2.820194
16932001f49SmrgSIZE=002 => 225607.681439 Tris/sec, MPixel Fill/sec: 0.451215
17032001f49Smrg
17132001f49Smrg
17232001f49SmrgColor/Depth Buffer Clears
17332001f49Smrg295.042474 Clrs/sec, MPixel Fill/sec: 90.553256
17432001f49Smrg
17532001f49Smrg
17632001f49SmrgFollow the results with my
17732001f49SmrgPC (Linux+Mesa-3.0beta5+PentiumII@300MHz+Voodoo2):
17832001f49Smrg
17932001f49Smrg
18032001f49SmrgSimple Points
18132001f49Smrg1620113.525130 Pnts/sec
18232001f49Smrg
18332001f49SmrgSmooth Lines
18432001f49SmrgSIZE=480 => 73841.166065 Lins/sec
18532001f49SmrgSIZE=250 => 140794.035316 Lins/sec
18632001f49SmrgSIZE=100 => 344185.242157 Lins/sec
18732001f49SmrgSIZE=050 => 420399.008289 Lins/sec
18832001f49SmrgSIZE=025 => 420261.389773 Lins/sec
18932001f49Smrg
19032001f49Smrg
19132001f49SmrgZSmooth Triangles
19232001f49SmrgSIZE=480 => 1434.668506 Tris/sec
19332001f49SmrgSIZE=250 => 5228.449614 Tris/sec
19432001f49SmrgSIZE=100 => 46603.815842 Tris/sec
19532001f49SmrgSIZE=050 => 325757.045961 Tris/sec
19632001f49SmrgSIZE=025 => 589022.403336 Tris/sec
19732001f49Smrg
19832001f49Smrg
19932001f49SmrgZSmooth Tex Blend Triangles
20032001f49SmrgSIZE=480 => 1414.900041 Tris/sec
20132001f49SmrgSIZE=250 => 5006.055235 Tris/sec
20232001f49SmrgSIZE=100 => 43602.252031 Tris/sec
20332001f49SmrgSIZE=050 => 303497.092692 Tris/sec
20432001f49SmrgSIZE=025 => 517087.428669 Tris/sec
20532001f49Smrg
20632001f49Smrg
20732001f49SmrgZSmooth Tex Blend TMesh Triangles
20832001f49SmrgSIZE=400 => 1023.273112 Tris/sec, MPixel Fill/sec: 81.861849
20932001f49SmrgSIZE=250 => 2595.692121 Tris/sec, MPixel Fill/sec: 81.115379
21032001f49SmrgSIZE=100 => 15788.198912 Tris/sec, MPixel Fill/sec: 78.940995
21132001f49SmrgSIZE=050 => 58784.121300 Tris/sec, MPixel Fill/sec: 73.480152
21232001f49SmrgSIZE=025 => 244233.873481 Tris/sec, MPixel Fill/sec: 76.323085
21332001f49SmrgSIZE=010 => 474995.004191 Tris/sec, MPixel Fill/sec: 23.749750
21432001f49SmrgSIZE=005 => 475124.354163 Tris/sec, MPixel Fill/sec: 5.939054
21532001f49SmrgSIZE=002 => 474959.089503 Tris/sec, MPixel Fill/sec: 0.949918
21632001f49Smrg
21732001f49Smrg
21832001f49SmrgColor/Depth Buffer Clears
21932001f49Smrg478.654830 Clrs/sec, MPixel Fill/sec: 146.906826
22032001f49Smrg
22132001f49Smrg
22232001f49SmrgPALTEX and GLBPALTX
22332001f49Smrg-------------------
22432001f49Smrg
22532001f49SmrgSources: paltex.c and glbpaltx.c
22632001f49Smrg
22732001f49SmrgThe PALTEX example was written by Brian Paul and it shows the
22832001f49Smrgcapabilities of the GL_EXT_paletted_texture extension.  I have written
22932001f49Smrgthe other example in order to show the capabilities of the
23032001f49Smrggl3DfxSetPaletteEXT() (it used only by GLQuake and Quake2).
231