.Start.of.DemoNews.123..............................................Size:63,577 ______/\___________________________ __ ________________ ___ /\_______ \____ \ ________ _ _ ______ \ / \| \ ________ | \/ ______/ / | \ :) \ \_/ \ | \ / \ \ _) \ | \______ \ / | \ \ | \ | \ / \ \ /~\ \ / \ \_____ /_______/___| /________/ \____\_____/_______/_________/________/ \_____/ |____/ | Subscribers : 2304 DemoNews #123 - 15 May 1996 | Last Issue : 2208 | Change : +96 DemoNews is a newsletter for the demo scene. | Archive Size : 2377M It is produced by Hornet at ftp.cdrom.com. | Last Issue : 2645M Our demo archive is located under /pub/demos. | Remaining : 611M | ==[Contents]=================================================================== Calendar Downloads Uploads Articles Introduction................................Snowman Announcing NAID 1996........................Struk A Graphician's Tip Book - Part 1............Shaithis Intro to 3D Graphics - Volume 05............Kiwidog NAID: As if You Were Here...................White Noise Imphobia 12 Voting..........................Darkness FunktrackerGOLD for Linux...................Jason Nunn Subscribing Closing ==[Calendar]=================================================================== Date Event Location Concact Points (email has an '@') --------- ---------------- --------- ---------------------------------------- 31 May 96 Naid Canada naid@autoroute.net www.autoroute.net/~naid naid.conceptech.qc.ca 02 Jun 96 The Scene Singapore ckiang@singnet.com.sg www.singnet.com.sg/~ckiang/tsc96.html 07 Jun 96 Abduction Finland maurala@cc.hut.fi www.hut.fi/~maurala/abduction.html 19 Jul 96 Flag Hungary tomcat2@ursus.bke.hu 28 Jul 96 Summer Encounter Denmark rvc@vision.auc.dk www.vision.auc.dk/diffusion/SE96 04 Aug 96 Summit Israel high.dive@kinneret.com ==[Downloads]================================================================== Combined Demos 1 0197 nooon_st.zip Gfx 1 0036 airwar.zip 2 0175 animate.zip 2 0030 dst_frac.zip 1 0334 cp16.zip 3 0171 inside1.zip 3 0026 veced300.zip 2 0261 ft206.zip 4 0169 inside2.zip 4 0025 vamp10.zip 3 0235 cp17.zip 5 0168 contrast.zip 5 0023 scarlet.zip 4 0212 it202.zip 6 0156 fashion.a01 6 0019 girl3.zip 5 0197 nooon_st.zip 6 0185 scrmt321.zip Music 1 0334 cp16.zip Code 1 0177 3dsco20.zip 7 0177 3dsco20.zip 2 0261 ft206.zip 2 0110 mphong.zip 8 0175 animate.zip 3 0235 cp17.zip 3 0100 voxeltut.zip 9 0171 inside1.zip 4 0212 it202.zip 4 0087 ccard.doc 10 0169 inside2.zip 5 0185 scrmt321.zip 5 0081 voxelsp2.zip 11 0168 contrast.zip 6 0160 m4w230sx.zip 6 0077 tpp1src.zip Total downloads this week : 69,058 ==[Uploads]==================================================================== =----------------------------------------------------------(File Information)-= Main site : USA ftp.cdrom.com/pub/demos Mirrors : Sweden ftp.luth.se/pub/msdos/demos S. Africa ftp.sun.ac.za/pub/msdos/demos USA ftp.uwp.edu/pub/msdos/demos USA ftp.co.iup.edu/code Other sites: Belgium hagar.arts.kuleuven.ac.be/demos Sweden ftp.arosnet.se/demo Web pages : Denmark www.th-zwickau.de/~maz/sound.html Canada datex.ca/trax USA www.jax-inter.net/users/mblocker/demos U.K. www.dcs.ed.ac.uk/~mxr/gfx Belgium hagar.arts.kuleuven.ac.be/~sdog/party.html All ratings are subjective. =---------------------------------------------------------------------(Music)-= /demos/music Size Rated Description =------------------------------- ---- ----- ----------------------------------= /disks/1996/e/eh-0496.zip 1482 * 04/96 Pack by Exploding Hedgehogs /disks/1996/e/eh-best1.zip 806 *+ Best of...Vol. 1 by Exp. Hedgehogs /disks/1996/n/no-image.zip 841 **+ Images by J. Redfern /disks/1996/r/rpcarmgn.zip 1474 *+ Carmagnola by Red Power /disks/1996/s/sdc-0003.zip 1291 **+ Volume 3 by SDC /disks/1996/s/sdc-0004.zip 1239 **+ Volume 4 by SDC /disks/1996/s/secworld.zip 372 **+ Secret Worlds by Resound /disks/1996/t/tr-burn.zip 2086 *** Burning by Tracktor /disks/1996/t/tr-subl1.zip 1497 *** [1/2] Sublevel by Tracktor /disks/1996/t/tr-subl2.zip 1163 *** [2/2] Sublevel by Tracktor /disks/1996/t/tripto1a.zip 1459 ***+ [1/2] Tripout Volume 1 by Trip /disks/1996/t/tripto1b.zip 1485 ***+ [2/2] Tripout Volume 1 by Trip /disks/1996/t/trx0496a.zip 1222 **+ [1/2] 04/96 Pack by Traxx /disks/1996/t/trx0496b.zip 1256 **+ [2/2] 04/96 Pack by Traxx /disks/1996/t/trxds001.zip 1140 ** Deranged Songs Volume 1 by Traxx /disks/1996/u/u-flo.zip 761 *** Flo by Ultrabeat /disks/1996/u/unify2.zip 1036 ***+ Unification 2 by Aim Higher /disks/1996/w/wr-dipth.zip 593 **+ Diptheria by Wraith /disks/1996/z/zinc-gtf.zip 858 ** Groovy Time Fabric by Zinc /songs/1992/mod/p/pmb-rain.zip 143 **+ Cheek Rain by FX /songs/1993/mod/d/dancextc.zip 105 **+ Dance Xtc by Dune /songs/1994/mod/w/warsa-ny.zip 281 *** Warsaw-New York by DSX Design /songs/1994/s3m/c/csp.zip 99 + Carmel Snack Pack by dintel /songs/1994/s3m/h/hpl_32k.zip 15 *** Hpl-32k by Dune /songs/1994/s3m/j/jumper.zip 177 **+ Jumper by Aphex /songs/1994/s3m/m/mindcont.zip 75 **+ Mind Controller by Cyclone /songs/1994/s3m/t/t10-nghb.zip 111 *** Top 10 Neighbours by dune /songs/1994/xm/i/icedesrt.zip 344 **+ Ice Desert by Aphex /songs/1994/xm/k/kz-geoma.zip 306 **** Geomancer by Kal Zakath /songs/1994/xm/t/thegrdnb.zip 126 **+ The Garden Behind by Aphex /songs/1995/s3m/0-9/0que.zip 87 ** -QUE by Dune /songs/1995/s3m/a/arsa.zip 24 **+ Arsa Bamk by Dune /songs/1995/s3m/c/cages.zip 89 **+ Crystal Cages by Cyclone /songs/1995/s3m/c/ccs-glsw.zip 199 **** The GlassWalker by Aahz /songs/1995/s3m/c/control.zip 162 *** Control E by Dune /songs/1995/s3m/c/cover.zip 116 **** Cover of Darkness by Daedalus /songs/1995/s3m/c/crimson.zip 70 + Crimson Fantasy by Son Zoo /songs/1995/s3m/d/div-ultr.zip 156 *+ Decieving Delight by Diversion /songs/1995/s3m/d/dmk-eco.zip 157 *** Ecolove Remix by Hector /songs/1995/s3m/d/dmk-our.zip 146 **+ Our Time Alone by Hector /songs/1995/s3m/d/dmk-yoot.zip 400 *** Big Yoots Forever by Hector /songs/1995/s3m/f/first.zip 115 *** The First by Roxton-Pond /songs/1995/s3m/f/frequent.zip 157 ***+ Frequent by Dune /songs/1995/s3m/h/harmitus.zip 6 **** Harmitus Painaa Mieltani by Dune /songs/1995/s3m/i/imadeths.zip 45 ** I Made This by Dune /songs/1995/s3m/j/jeesmaan.zip 241 **** Jees Maan Mii Is Avaruus. by Dune /songs/1995/s3m/l/lifeforc.zip 81 ***+ Life Force by Cyclone /songs/1995/s3m/o/oceanic.zip 323 **** Oceanic by Griffin /songs/1995/s3m/r/reoclasc.zip 25 ***+ Reoclassic Mokk by Dune /songs/1995/s3m/s/southern.zip 101 ****+ Southern Pacific by Dune /songs/1995/s3m/t/teknorap.zip 102 **** Last Train by Dune /songs/1995/s3m/t/tension.zip 168 **+ Surface Tension by Cyclone /songs/1995/s3m/u/uh-oh.zip 143 *** House Party MCXZorro by Dune /songs/1995/s3m/v/victory2.zip 268 ***+ Final Victory by Daedalus /songs/1995/s3m/w/waves.zip 74 ** Waves by Cyclone /songs/1995/xm/d/d_1-te2.zip 27 * rave1 by dune/orange /songs/1995/xm/n/ns.zip 42 *** Study Break by TJ /songs/1995/xm/s/shield.zip 508 ***+ Shield of Protection by Lioz /songs/1996/it/g/gem-resr.zip 447 *+ Resurrection by Galahad /songs/1996/it/i/i-xtinct.zip 103 ** Xtinct FunkJungle by Motiv /songs/1996/it/i/inthehal.zip 229 *+ In Hall..Mountain King by Sturm /songs/1996/it/j/js-caway.zip 5 *** Chipping Away by Jestyr /songs/1996/it/l/lwclouds.zip 125 * Long White Clouds by Sturm /songs/1996/it/n/neb-crow.arj 170 ** Crow Supremacy by MikPos /songs/1996/it/n/nf-knew.zip 82 *+ Knowing the Answer by NF /songs/1996/it/o/orc.zip 213 ** The March of the orcs by Bishop /songs/1996/it/w/winddown.zip 516 ***+ Wind Down by Reuben Fortier /songs/1996/mod/a/amu.zip 80 **+ AM 1.R SZ by Lala & H.Robi /songs/1996/mod/b/batucada.zip 205 ** Batucada by DJ Dero /songs/1996/mod/b/beau_day.zip 195 **+ Beautiful Day by Smash /songs/1996/mod/c/cyberspc.zip 82 ** CyberSpace by LaLa /songs/1996/mod/d/dreamsre.zip 105 ** Dreams of Reality by Soundmaster /songs/1996/mod/d/drumrunr.zip 150 *+ Drum Run Remix2 by Tronster /songs/1996/mod/d/dungeonw.zip 101 *+ Dungeon Walk by LaLa /songs/1996/mod/m/m_adult.lha 392 **+ Adults by Dreamfish /songs/1996/mod/m/m_far.lha 263 *** Farawayadventure by Carebear /songs/1996/mod/m/m_subi.lha 163 **+ Subi's Back by Subi /songs/1996/mod/m/m_trib.lha 237 ***+ Tribute Remix by TheFoxII /songs/1996/mod/p/pinochio.zip 79 *** Pinochio by Cortex /songs/1996/mod/t/teknodan.zip 78 **+ Tekknodance by SoundMaster /songs/1996/mod/t/tinytune.zip 10 **+ TinyTune by SoundMaster /songs/1996/mod/y/ybkeep.zip 119 **+ The Keep by Yannis /songs/1996/mod/y/ybroam.zip 66 *** Roaming the Ruins by Yannis /songs/1996/mtm/k/k_rept.zip 290 **+ Reptillian by Quarex /songs/1996/other/k/k_kitexp.zip 403 **+ Kitchen Experiment by Vivid (AMS) /songs/1996/other/u/u_consol.zip 46 ** Consolidation by Lala (ULT) /songs/1996/other/u/u_crimew.zip 124 ***+ Crimewave by Lala (ULT) /songs/1996/other/u/u_illusi.zip 367 **+ Illusions of Love by Lala (ULT) /songs/1996/other/u/u_moment.zip 145 ** Moments of Friendship by Lala(ULT) /songs/1996/other/u/u_snowfl.zip 511 *** Snowflake Hymn by Lala (ULT) /songs/1996/other/u/u_vastne.zip 315 ** The Vastness of Space by Lala(ULT) /songs/1996/s3m/a/a_intro.zip 232 *** Introspection by Subliminal /songs/1996/s3m/a/a_tback.zip 208 **+ No Turnin' Back by Subliminal /songs/1996/s3m/a/a_unlmnd.zip 119 **+ Unlocked Mind by Subliminal /songs/1996/s3m/a/aa-tranc.zip 129 *** Trance Dance? by Mindless /songs/1996/s3m/a/agony.zip 195 * Agony by Dornbush & Fisher /songs/1996/s3m/a/andrea.zip 262 * Andrea by Dornbush & Fisher /songs/1996/s3m/a/andreabm.zip 227 * Andrea-BRemix by Dornbush+Fisher /songs/1996/s3m/a/andreahh.zip 249 * Andrea HRemix by Dornbush+Fisher /songs/1996/s3m/a/angtalk.zip 251 **+ Angel Talk by Intermission /songs/1996/s3m/a/another.zip 160 **+ Another Lies by The Revelations /songs/1996/s3m/a/ara_seek.zip 55 ** Seek by Ara /songs/1996/s3m/a/ashit.zip 107 * AShit by Dornbush & Fisher /songs/1996/s3m/b/battle.zip 133 ***+ Fight to the Finish by Nitro /songs/1996/s3m/b/blast.zip 533 * Blast..Brains by Dornbush+Fisher /songs/1996/s3m/b/bn-aevea.zip 276 ***+ Aevea by DJBeanz /songs/1996/s3m/b/bronx.zip 521 ** Rumble in the Bronx by Stein /songs/1996/s3m/b/bullet.zip 801 * Bullet with Butter.. by Stein /songs/1996/s3m/b/bw-gtagt.zip 125 ***+ Goodbye to a good.. by Blackwolf /songs/1996/s3m/c/ccs-caff.zip 250 ** Caffeine by Absalom /songs/1996/s3m/c/ccs-dfub.zip 147 *** DasFunky UberAlles by Aahz /songs/1996/s3m/c/ccs-enf.zip 193 *** Ebb & Flow by Absalom /songs/1996/s3m/c/ccs-eps.zip 330 **** Epsilon Eclipse by Mayhem /songs/1996/s3m/c/ccs-insm.zip 499 ***+ The Insomniac by Mayhem /songs/1996/s3m/c/ccs-srq.zip 349 ***+ My Satin-Robed Queen by Mayhem /songs/1996/s3m/c/ccs-ssre.zip 229 *** Sidestep Remix by Aahz /songs/1996/s3m/c/ccs-wud.zip 256 ***+ Wake Up Dead by Aahz /songs/1996/s3m/c/cyborgc.zip 173 + Cyborg Cop by uToPiA /songs/1996/s3m/d/d_allend.zip 80 + All Good Things... by Noble Roman /songs/1996/s3m/d/d_begin.zip 50 * Sad Beginnings by Noble Roman /songs/1996/s3m/d/d_dont.zip 73 + Don't Bother Me by Noble Roman /songs/1996/s3m/d/d_echoes.zip 162 + Echoes from Within by Noble Roman /songs/1996/s3m/d/d_melody.zip 18 + Pianoic Melody by Noble Roman /songs/1996/s3m/d/desire07.zip 238 + Desire by Sonzoo /songs/1996/s3m/d/dickd1.zip 74 * Tyrone by Dick Ditties /songs/1996/s3m/d/dmicnfm.zip 218 **+ Conformity by Stavross /songs/1996/s3m/d/dmk-strv.zip 215 ***+ Striving for the Light by Hector /songs/1996/s3m/d/ds-darkc.zip 118 *+ Dark, Cold, and Empty by Froyd /songs/1996/s3m/d/ds-know.zip 197 ** Don't Know Her by Ez /songs/1996/s3m/d/dvision.zip 135 ** Double Vision by Porus /songs/1996/s3m/e/envy.zip 95 * Envy by Stein /songs/1996/s3m/f/flying.arj 91 **+ Flying in the Sky by Love 4 All /songs/1996/s3m/f/for_bles.zip 204 *+ Bless You by Fortune /songs/1996/s3m/f/for_itts.zip 167 *+ Into the Shadow by Fortune /songs/1996/s3m/f/for_prog.zip 113 *+ Progression by Fortune /songs/1996/s3m/g/g_fntn2.zip 185 **+ (fount[)ag(ain]) by Q. Porcupine /songs/1996/s3m/g/gem-tree.zip 81 *** Trees by OxideMan /songs/1996/s3m/h/hide.zip 225 *+ Hide by Crimeday /songs/1996/s3m/j/jacobs_l.zip 256 **** Jacob's Ladder by Ler /songs/1996/s3m/j/java.zip 54 **+ Kingdom of Java by Fizz /songs/1996/s3m/k/kguns.zip 65 **** Karate Guns PLUS! by Meat /songs/1996/s3m/l/lg-oasis.arj 312 *** Oasis by Legend /songs/1996/s3m/l/lnc-days.zip 212 **+ These Sunny Days by Linearic /songs/1996/s3m/l/lnc-exp.zip 203 **+ Expedition to Unknown by Linearic /songs/1996/s3m/l/lnc-jmca.zip 91 ** I Come From Jamaica by Linearic /songs/1996/s3m/l/lnc-rock.zip 146 **+ Rockers Will Survive by Linearic /songs/1996/s3m/l/lost.zip 139 ***+ Lost in a Cloud by Cardiac /songs/1996/s3m/m/masked.zip 149 ** Masked message by Juggernaut /songs/1996/s3m/m/mess.zip 118 **+ Total Mess by Juggernaut /songs/1996/s3m/m/miracle.zip 97 ** The Miracle (Queen) by Zaigamor Spellweaver /songs/1996/s3m/n/nex-cact.zip 377 **+ Plastic Cactus by Nexus /songs/1996/s3m/n/nm-life.zip 222 *** Portrait of Life by Nomex /songs/1996/s3m/n/noreturn.zip 103 ** There..no return... by Juggernaut /songs/1996/s3m/o/outsider.zip 331 *** Outsider by Juggernaut /songs/1996/s3m/o/oym-trf.zip 298 *+ Turbulent Rhythm Flow by Oyml A. /songs/1996/s3m/o/oym-ttds.zip 110 ** Trippy Trippy Disco.. by Oyml A. /songs/1996/s3m/p/pal_chem.zip 94 ** Chemistry of Hate by Paladin /songs/1996/s3m/p/pal_wth.zip 158 *+ Welcome to Hell by Paladin /songs/1996/s3m/p/peaceful.zip 68 *** Peaceful Journey 1.01 by Cyclone /songs/1996/s3m/s/s-time.zip 184 *** Time Slips By by Gamera /songs/1996/s3m/s/s_slides.zip 151 **+ Slides by Shudder /songs/1996/s3m/s/slenter.zip 238 + Slenterpunk by Dornbush and Fisher /songs/1996/s3m/s/smi_brmx.arj 164 * Boom Ring Mix by Joker /songs/1996/s3m/s/smi_crn.arj 48 ** Cryin' (cover) by Joker /songs/1996/s3m/s/smi_dcmp.arj 317 * Dance Computer by Joker /songs/1996/s3m/s/sr_progr.zip 247 ** Progression by S.Roger /songs/1996/s3m/s/sum-song.arj 119 **+ Summer Song by Fox /songs/1996/s3m/t/tl-affli.zip 569 ***+ Affliction by Timelord /songs/1996/s3m/t/tp5_dune.zip 389 ****+ World of Saracens by Dune /songs/1996/s3m/w/wake.zip 186 ** Wake by Bishop /songs/1996/s3m/x/x-files.zip 276 ***+ The X-files by Daedalus /songs/1996/s3m/x/x96revol.zip 126 *** Revolution 2 by Maxtracker /songs/1996/s3m/z/zeolite2.arj 149 **+ Zeolite Mix 2 by Utopia+Crimeday /songs/1996/s3m/z/zn-1day.zip 141 **+ One day... by zinc /songs/1996/xm/0-9/3xd578k9.zip 17 ***+ Gateway 20k Compo Songs by Dune /songs/1996/xm/0-9/97-cross.zip 580 **+ Getting the Hang by Celorn K. /songs/1996/xm/a/air-rt.zip 471 *** Runtime by Airon /songs/1996/xm/a/apsbrain.zip 131 *** Brainchild by APS /songs/1996/xm/a/asg.zip 605 * All System Go! by Eeli /songs/1996/xm/b/baddream.zip 104 + ...Bad Dream by Dr. Westwood /songs/1996/xm/b/ballad.zip 440 ***+ The Ballad of Romeo by doj/ct /songs/1996/xm/b/beautif3.zip 1536 ** Beautiful life by K.O Xtrong /songs/1996/xm/b/bodyheat.zip 148 ** Feel my Bodyheat by Igneous /songs/1996/xm/b/boriqua.zip 737 ** RR Boriqua Anthem by K.O. Xtrong /songs/1996/xm/c/cb-bubbl.arj 397 ** Whatever Bubbles by PeDRo /songs/1996/xm/c/cb-draft.arj 193 ** Draft by Logos /songs/1996/xm/c/cb-shake.arj 146 *+ Something to Shake by TruxX /songs/1996/xm/c/cbk_brxb.zip 466 *+ Breax > Beats by Cubik /songs/1996/xm/c/cbk_sday.zip 228 ** I Don't Like Sundays by Cubik /songs/1996/xm/c/cbk_svu1.zip 51 *+ Sellout vs. Underground by Cubik /songs/1996/xm/c/cc-rmwng.zip 87 **+ Raising My Wings by Cruel Creator /songs/1996/xm/c/ccs-time.zip 625 **** Give Me Some Time by Aahz/Absalom /songs/1996/xm/c/cemetery.zip 473 **+ Cemetary by Embrittlement /songs/1996/xm/c/consolid.zip 39 *+ Consolidation by LaLa /songs/1996/xm/d/dahouse.zip 349 + Rock Da House by Eye of Hurricane /songs/1996/xm/e/e_asg.zip 605 * All Systems Go by Eeli /songs/1996/xm/e/el-bp_ae.zip 308 **+ Bluefire Pop by Electric Lucidity /songs/1996/xm/e/el-esotr.zip 255 **+ Esoteric by Electric Lucidity /songs/1996/xm/e/el-thu.zip 442 **+ The Half Unknown by Electric Lucidity /songs/1996/xm/e/elw-dead.zip 257 **** Deadlock by Elwood /songs/1996/xm/e/elw-fall.zip 321 **** Fall from Sky by Elwood /songs/1996/xm/e/elw-feat.zip 378 **** Feats of Valor by Elwood /songs/1996/xm/e/elw-icom.zip 230 **** Inferiority Complex by Elwood /songs/1996/xm/e/elw-litt.zip 283 ****+ Little Man by Elwood /songs/1996/xm/e/elw-shad.zip 232 **** Into the Shadow by Elwood /songs/1996/xm/e/elw-shot.zip 212 **** Shooting Star by Elwood /songs/1996/xm/e/elw-swee.zip 320 ****+ Sweet Dreams by Elwood /songs/1996/xm/e/es_wuf.zip 106 * Wolf Waltz by Estinor /songs/1996/xm/e/evacuate.lzh 146 **+ Evacuate! by BMP /songs/1996/xm/e/evoldork.zip 930 **+ Evol Dork by The Green Reaper /songs/1996/xm/f/fantoz96.zip 182 **+ Fantozi Original by BassQ /songs/1996/xm/f/fh-nrefl.zip 214 ** Nostalgic Reflection by FH /songs/1996/xm/f/fsk_5min.zip 73 *** 5 Minutes of Morning by VadimVS /songs/1996/xm/g/g_darkp.zip 300 ***+ Dark Promise by Hunz /songs/1996/xm/g/g_sonido.zip 453 * Sonido Matanzero by Ryan /songs/1996/xm/g/gentle.zip 283 ** Be Gentle With Me by Peter Kendell /songs/1996/xm/g/gustoso.zip 95 *+ Gustoso by Pix /songs/1996/xm/i/it-start.zip 52 **+ Startrekkin Forever by It-Alien... /songs/1996/xm/j/jb-21stc.zip 552 **** 21st Century Dig.. by J. Bonnell /songs/1996/xm/j/jb-bunkr.zip 252 ***+ The Bunker by John Bonnell /songs/1996/xm/j/jb-uncle.zip 511 *** Uncle John by John Bonnell /songs/1996/xm/j/jr-htheb.zip 374 **+ Huggy the Buggy by J.Rook /songs/1996/xm/k/k_frothy.zip 264 ***+ Frothy Moo Jooce by Lord Pegasus /songs/1996/xm/k/kb.zip 448 + Klondike Bar by Joe & Steve & Bob /songs/1996/xm/k/koti_01.zip 285 *** Breakin' Thru by Kotivalo /songs/1996/xm/k/koti_02.zip 345 **** Hypnosis by Kotivalo /songs/1996/xm/k/koti_03.zip 301 *** When Twilight Comes by Kotivalo /songs/1996/xm/k/koti_04.zip 153 **** Walking by Kotivalo /songs/1996/xm/l/levi.zip 341 *** Powers of Levitation by Rascal /songs/1996/xm/m/mo-mania.zip 540 ** Movie Mania by Igneous /songs/1996/xm/n/n55-dawn.zip 372 ***+ Dawn by Xerxes /songs/1996/xm/n/na_fate.zip 389 ***+ Fate by Gain /songs/1996/xm/n/ng-freon.zip 81 ** Freone (oZone edit) by Demuc /songs/1996/xm/n/ng-sl.zip 335 **+ Skyline (remix) by Solaris /songs/1996/xm/n/no-hope.zip 170 ***+ Hope by Syrinx /songs/1996/xm/o/o-paci.zip 301 **+ Pacific Ocean by Oona /songs/1996/xm/o/o-re_hsi.zip 232 *** Intelligent reload by Oona /songs/1996/xm/o/o_dbbrn.zip 373 **+ More db's than brains by Otis /songs/1996/xm/o/o_phong.zip 459 **+ Trancehaded trip by Otis /songs/1996/xm/o/o_trip2.zip 380 **+ The Trip part II by Otis /songs/1996/xm/p/pahdistb.zip 299 ** Disturbance by PAH /songs/1996/xm/p/para-vox.zip 648 **** Paranoia (voice mix) by Scirocco /songs/1996/xm/p/paranoid.zip 297 *+ Paranoid by Green Reaper /songs/1996/xm/p/pb_dance.zip 193 **+ Keep Dancin by Point Blank /songs/1996/xm/p/pb_roll.zip 367 *** Destiny Roll by Point Blank /songs/1996/xm/p/pmb-soun.zip 192 ** Sound of S.A by Snes /songs/1996/xm/r/r_leap.zip 159 *+ Leapfrog by Ryan /songs/1996/xm/r/r_true.zip 262 * True Remorse by Ryan /songs/1996/xm/r/r_vict.zip 182 * Victory by Ryan /songs/1996/xm/r/riversid.arj 365 *** Riverside Ballad by Soundmaster /songs/1996/xm/r/ru-4ever.zip 267 ** Dream 4ever by DJ Rex /songs/1996/xm/r/russia.zip 35 *+ Russian Feel by Sleepwalker /songs/1996/xm/s/sc_impac.zip 155 ***+ Impact by Screamager /songs/1996/xm/s/sensatio.zip 249 *** Sensations by Soundmaster /songs/1996/xm/s/si-mroc1.zip 195 ** Modern Rock 1 by J. Bonnell /songs/1996/xm/s/sky_ilde.zip 214 **+ Illogical Decision by D.J. YoYo /songs/1996/xm/s/sky_inds.zip 513 **+ Industry of Noise by D.J. YoYo /songs/1996/xm/s/sky_only.zip 192 ** Only You by D.J. YoYo /songs/1996/xm/s/sky_open.zip 314 ** Open Your Mind by D.J. YoYo /songs/1996/xm/s/sky_rain.zip 282 **+ Raindrops by D.J. YoYo /songs/1996/xm/s/soda-ste.zip 92 **+ De Musica Ligera by Nadim Hobaica /songs/1996/xm/s/spazm.zip 234 **+ Spazmodic..Vengeance by G. Reaper /songs/1996/xm/s/stabbing.zip 184 * Backstabbing by Bombi D /songs/1996/xm/s/symph.zip 114 ** Symphony in Her Mind by Saxy /songs/1996/xm/t/tejin.zip 67 *+ TJ Intro Tune by Sleepwalker /songs/1996/xm/t/thebegin.zip 268 **+ The Beginning by Humanoid /songs/1996/xm/t/tom-divn.zip 450 *** Divna by Mateus /songs/1996/xm/t/tom-poho.zip 301 ***+ Czech Pahoda 96 by Mateus /songs/1996/xm/t/tricky.zip 246 **** Tricky by Balrog & Mellow-D /songs/1996/xm/w/w-snowin.zip 213 **** Snowin' At Sahara by Weed /songs/1996/xm/w/wasser.zip 393 ***+ Wenn das Wasser blubbert by DOJ /songs/1996/xm/x/xs1.zip 844 * Excessive Force by Utopian Dreamer /songs/1996/xm/x/xs2.zip 1120 + Excessive Trance by Utop.. Dreamer /songs/1996/xm/x/xs3.zip 1038 * ??? by Utopian Dreamer =------------------------------------------------------------------(Graphics)-= /demos/graphics Size Rated Description =----------------------------- ---- ----- ------------------------------------= /images/1995/g/gfx_ddt.zip 276 **+ ENL95:grfx:02: Robots by Royal Ghost /images/1995/g/gfx_lkr.zip 129 ** ENL95:grfx:XX: Check eyes by Hired /images/1995/g/gfx_ovr.zip 90 ** ENL95:grfx:XX: Prince by Battle | Master /images/1995/g/gfx_qmg.zip 393 **+ ENL95:grfx:03: Ships by Queue Members | Group /images/1995/g/gfx_ren.zip 108 ***+ ENL95:grfx:01: Rave Babe by Ren of | Scene Side /images/1996/e/elements.arj 615 *+ Elements by MikPos /images/1996/l/lt-jezth.zip 46 ** Jezeth by Light /images/1996/l/lt-ltm.zip 134 ** Little Mistake by Light of Kosmic /images/1996/l/lt-pfear.zip 157 *** Planetary Fear by Light /people/h/hqn.gif 5 Harlequin / Success /programs/editors/apaint01.arj 20 AnimPaint animation editor by Sphair /programs/editors/bsdemo1a.zip 75 Blob Sculptor for 3ds by Steve Anger ==[Articles]=================================================================== =---------------------------------------------------(Introduction)--(Snowman)-= Hello all, and welcome to DemoNews issue 123. Much has happened in the past three weeks. Diablo and I set down some concrete specifications on the new archive system. The Hornet Underground CD went off to the happy mass-producers. The beta version of the Music Contest 4 rules were released to the public. A baby web interface was constructed on our archive. A week was spent in contract negotiations with the NAID organizers (concerning Walnut Creek's sponsorship and the NAID CD). At the company, I got "promoted" to webmaster (maybe I should call it a lateral move). Trixter works on our demo for NAID while GD tries to coordinate efforts on the MC4 intro. I try to review demos while brushing up on HTML 3.2 documentation. The RealAudio people keep calling me and asking if I like their FreeBSD .ra server. Yes folks, it is that time of the year, the season for excess stress and super-human productivity... Whew! This world is a funny place sometimes. Every time I think my role is set in the scene, it changes. Every time I think I've established permanence in something I soon find flaws or ways to enhance it. Every time I think about thinking, I get caught in this endless while(1) loop until someone breaks me. Stress is an incredible catalyst in creative expression. It can make you have wild, colorful, random, and in rare circumstances, logical thoughts. Lately, I've caught myself thinking about (plotting? :)) the future of the scene. It seemed a worthy subject and all, given that I've got to come up with something interesting for this intro. Now suspend for a moment (if you will) concrete and linear thinking. Take off those shoes and go smoke if need be. Get relaxed and fresh... this is gonna be deep. Think of the demo scene as this big crystalline gem, floating in space. Everyone's a light source, floating around weightless. Some of us find other colors complementary to ourselves. We stick together and fly in ordered patterns. For one reason or another, certain faces of this gem get more light than others. Some colors apparently prefer to master a darker side of the crystal rather than compete in a fray of luminescence. Over time, new lights trickle in from afar. The gem gets brighter. Eventually so many lights cluster around the gem that you can't see it anymore... it's too bright to look at. But the old lights keep circling, having memorized where they need to be. In the surrounding space, foreign colors start to be drawn toward the inferno... not even able to see the gem inside but driven by curiosity. 'Why is that thing so bright?' It's time for an eclipse. Snowman / Hornet - r3cgm@cdrom.com =---------------------------------------------(Announcing NAID 1996)--(Struk)-= _____Introduction Big happy hello to everyone in the demo scene! This year, me (Struk), Mr. Khan and MEd are putting together the second edition of the North American International Demofest. NAiD '96 will be 3 days long, starting on 31 May 1996 at College Edouard-Montpetit in Longeuil (Quebec) Canada. Doors open at 20h00 on Friday, 31 May 1996. With the help of our sponsors, especially Walnut Creek CDROM (You might know them thru their mega ftp site ftp.cdrom.com) we will be able to give away over $8000 CAN in prizes for all the compos. There will be a Demo, Intro, Music, Gfx, 4.2 kb Intro, 3Channel chiptune, The Lim-o-naid and a couple of other very kewl competitions on site. For the past 8 months we have been working very hard to get this party together. A lot of activities and features are in the works that will make NAiD 1996 a much bigger and much better demoparty than its previous incarnation. To give you a few examples, we are planning to rent LASERS for extremely impressive mind-bogling-baba-cool music and light shows. We're planning to get a big Molson beer tent accompanied by a good sound-system and a BBQ outside (A great way to get your vitamin E :). We'll be renting 35mm movies (like Pulp Fiction) to watch them in our school movie theater with surround sound. We'll be getting an ISDN data line for Internet access. We'll have cool prizes to all the small compos, some cool bands playing, and a lot, lot more. Of course, all of this kinda costs money. At last year's party, as you might know, we ended up with a small deficit (which was to be expected considering we almost gave tickets away). The situation this year is quite different since we are now aiming for 0 deficit, maximum fun. Now, on a seemingly unrelated issue, we also are planning to get our college diplomas in the not too distant future. Now, having said this, we'd like to ask people to mail in (or fax) their ticket orders for NAiD 1996 as soon as possible. This gives us a bit more room to maneuver than we had last year. It's not that the NAiD party is at risk, but the health and grades (I mean it) of everybody involved in the organization will suffer if we have to go through the same amount of red tape we had to last time. And that can't be good for the party either. Thus, help us and make our jobs easier. Send us thru mail or fax your ticket orders for NAiD as soon as possible. That way we'll have the breathing space we need to make NAiD 1996 the biggest and the best it can be. Don't forget, NAiD is a non-profit demo party! All the money that comes in goes directly back into da party! So don't be shy and order now! We wanna know how many people will be having fun on earth this year! :) NAiD - Be there and die or be elsewhere and cry. Struk / NAID-Apraxia - naid@autoroute.net, http://www.autoroute.net/~naid =------------------------------(A Graphician's Tip Book - Part 1)--(Shaithis)-= _____Introduction For those of you who don't know me (which should be just about everyone on the PC demo scene), my name's Chris Buecheler (Beekler)... or Shaithis... whatever. I'm an artist and a tracker, although my skills at the former are much more, shall we say, refined than the latter. Anyway, I contacted Snowman recently, and questioned him on whether he liked the idea of a graphics column. His response was very positive. Go for it. Write the column. Okay, So here I am... I'm here to give you guys, the slavering demosceners, some information on graphics, both for demos and for still viewing. I know nothing about code, so don't ask. I can probably tell you a bit about tracking, but you'd be better off asking Necros or somebody. I'm going to start this column with the true basics, so anyone who has been doing graphics for awhile, disregard. _____Graphics Graphics are the pretty pictures that you see on your screen when you use your computer for anything. These graphics are made up of pixels, dots of various colors lined up in any certain order. When you create a work of art with these pixels, you have made the exact thing that this column is dedicated to. _____Resolution Resolution is how many pixels your monitor is displaying or can display on the screen at any one time. Anyone with a monitor can display some amount of pixels. (If you don't have a monitor, you can't read this, and you got suckered at your local computer shop). Anyway, most monitors can handle at least VGA (displaying up to a maximum resolution of 640x480 pixels at a time, horizontal by vertical). Color depth is also a part of monitors, but we'll mention that in the color section. NOTE: Your resolution and colors also depend on your graphics card, but that's more technical than I feel like going into. ;) _____Color Color is (as I learned in Light Color and Design class), determined by three factors: Hue, Saturation, and Intensity. Hue is more or less what people are asking about when they say "What color is this?" Saturation is how true the color is, or more specifically, how far away from grey the color is. Intensity is how "bright" the color is. For example, fire-engine red is high in both intensity in saturation. Blood red is high in saturation, but not as high in intensity. Pale pink is not terribly high in either, and so on... Color depth is simply what and how many colors your monitor can display at any one time. At first monitors were monochrome, or single color. Then came CGA, or 320x200 resolution with 4 colors. EGA, 320x200x16 colors. VGA, 640x480x16. MCGA (which people usually call VGA) 640x480x256. SVGA, 1024x768x256, and EVGA (Which people usually call SVGA) 1024+x768+x256+, up to a possible 16.7 million colors. _____Art Ah. Here we have the MAJOR debate in the graphics scene. What is art? Must every pixel be hand drawn, or do rendering techniques qualify? If you believe the former, you probably won't agree with me on everything I have to say. That's cool. Email me. I believe that an artist should be allowed to use ANY tools available to him. What one creates with an airbrush is no less art than what one creates with a paintbrush, so why is Deluxepaint an art program, but Photoshop not? Sure, if all you're doing is creating a boring texture, and then putting a plain white font over it that says "Demos Rock, Baby!", then you have a problem. I think it is the artist, however, more than the tools, that defines "art". This pretty much brings my first installment to an end. I'm not going to go into any tips and tricks this time around, or the column will be far too long. However, let me give you a brief synopsis of the next few articles: Articles Topic -------- ----------------------------------------- 2 - 4 Deluxepaint II Enhanced (an introduction) 5 - 7 Adobe Photoshop (an introduction) 8 - ? Tips & Trix (will cover lots of software) I'm certain there will be more. After all, I discover new tricks on an everyday basis. Therefore I'll stop writing now and leave you anticipating my next column (I hope). If you have any tips/tricks/etc. for any art programs, don't hold back sending them to me. I can assure you that all tips WILL be credited to their rightful discoverers. Until next time, I remain: Shaithis / WiCKED, Immortal Coil - shaithis@dreamscape.com =-------------------------------(Intro to 3D Graphics - Volume 05)--(Kiwidog)-= _____Introduction Many happy returns! :-) I know I said I wasn't going to write any more of the 3D series until after NAID, but I found that I had some time today to write this article before then, so today we'll be discussing The Joy of BSP Trees! :-D Oh, and before I begin, for those of you who've been looking for the article 3&4 source code and haven't found it, you're not alone... I haven't had the time to write up the source for all 3 compilers (WC, BC, and TP) and don't think I'll have that much time until NAID. The articles are quicker to write than the source, and when I write the source, my primary language/compiler is Watcom C. I generally write the Turbo Pascal version last, and since I know many of you are Pascal coders, the C version wouldn't do you much good. So unless somebody for some reason wants to offer to help convert the 32-bit C/Asm into 16-bit TP/Asm, I'm gonna be a little slow on that source. Sorry about that; so much work these days... But don't worry, just be patient, the stuff will be there eventually. :-) Anyway, a couple quick notes from back in article 4... _____Typos Etc. (Article 4) In article 4, at one point in explaining a way to do the left-right scanline filling, there was the following code block... mov edi, leftoffset mov ecx, rightoffset sub ecx, edi mov ebx, ecx shr ecx, 2 mov eax, color ; assuming color is already prepared to be in all 4 bytes. cld rep stosd mov ecx, ebx and ecx, 3 rep stosd The last line (the second "rep stosd") should be "rep stosb" instead. Sorry about that; I meant to say stosb, but for some reason looking 3 lines above that just influenced my typing. All apologies, although I'm sure many of you figured it out (and many thanks to the 3 or 4 of you who emailed me notifying me of this error; I really appreciate it. Please make me aware of any future bugs like this; I know I won't catch many of them :) Also, a couple of you have mailed me about the lack of efficiency in the edge tracing algo I mentioned, mostly regarding the "check against the left and right edges each line to see if they're new extremes" part. Please remember that in these articles, I'm covering very very general explanations of routines; this is _intro_ to 3D here. :) There are many faster of ways of doing just about everything I put in here, so don't take the contents as the final word, they're just methods. And for you beginners, remember that too... I'm not giving you the fastest routines around... you can always optimize! :-) (Hint - for the edge tracer, if you order your points in a certain way, either clockwise or counterclockwise, and then check the locations of each point before a trace, you can automatically determine which edge it will trace over, and can quickly overwrite the values along that edge without any comparisons...) Oh BTW, for those interested in the fixed point square root routine I mentioned last time, the article explaining that will be in the Coding Corner of Imphobia 12, coming out sometime in the next month. So keep an eye out for that if you're interested. Okay, enough preface junk, time for the meat of the article! :-D _____What's a BSP Tree Anyway? Okay, if you've played Doom extensively or even just read random articles on 3D, you probably have heard BSP trees mentioned off and on. But what are they, and how can you use them? That's what we're gonna find out today. BSP tree is short for "Binary Space Partitioning" tree. What it is, is a tree of line or polygon "nodes" (for 2D or 3D, respectively) that's pregenerated before run-time for a given static object or set of objects. Once you calculate this tree once for the object(s), you can use it in your program each frame to draw the polygons in correct order _regardless_ of your view position, just by "walking" the tree in a certain way. I'll be covering both how to build a tree, and how to walk it during your program. The walking part is very easy to code, and is quite a fast way of drawing surfaces in the right order. The tree generation part is not so easy, though, for several reasons which I'll get to shortly. Nonetheless, BSP trees are well worth the trouble if your scenes are pretty static... they are quite quick and very effective. :) _____What do you mean by "static" anyway? By "static" object I mean an object (or set of objects) that doesn't move with respect to itself. Like, take a standard cube. The cube is a static object... you can move the whole cube around the environment, translate it, rotate it, etc. But regardless of where it is, it's still a cube. But if you take a few of the vertices of the cube and move them around, the parts of the cube (i.e. the 6 faces) are no longer the same... hence, if you have an object and the object is always that object, it's static. But if you morph the object or explode it or something, it's not. Scaling is okay, as long as all the vertices are scaled the same (it's still a cube, only a different size). It's when the _shape_ changes that causes problems. You'll see why. (Note: There are some cases where you can change face positions in an object and still have the tree be valid, you just have to be very careful how your tree is constructed if you wish to try something like this). Well, now that we know our limitations, let's build a tree! :-) _____So How Do We Build These Trees? The term "Binary Space Partitioning" is exactly what it seems to be. BSP trees, in essence, "cut" space into two equal halves, over and over again, until effectively nothing is left to work with. The space is cut along the polygons of your object (although some prefer to cut with axis-aligned planes instead, which is a bit faster but has flaws of its own). The best way to demonstrate this is to walk through a sample tree building of a small scene. We'll work in 2D for this little sample, but the principle carries over into 3D the same way. Let's say we have a static scene (when I say scene I mean one big object, effectively... or in Doom's case, the level map) that we want to build a tree for. Our scene is composed of 5 lines, arranged in a somewhat random order... / / ------ / | ----- | \ | \ \ (Note: I hope that formatting errors don't happen this time, because if those lines aren't in the right places, this will make _no_ sense. :-) Anyway, let's label each of these lines (which we'll pretend are top views of 3D polygons, like walls)... / /A ------ / B Eÿÿÿ | ----- D| \ | \C \ We also need to give each line a "positive" side, and a "negative" side. For this, pretend that the positive side of each line is the side where the letter is on. Now, like the name suggests, we need to cut space in half along some line (or axis aligned plane, but I'm not going to get into that method). In essence we can just pick a line at random, but as you'll see soon, that's not a good idea completely... Say we pick line C. It's facing diagonally, with the upper right on its positive side and the lower left on its negative side. Now what we do is, we extend this line segment to its full line length, cutting space in half. / \ /A \ ------ / \ B \ Eÿÿÿ | \ ----- D| \ | \C \ \ \ \ Looking at the result, we've got A, E, and D on the negative side, and B on the positive side. This was the first step in our tree generation. Let's start our tree with the "home" node (the first one we picked)... - + C / \ A BSP tree itself is set up with nodes that have one parent (node above it) and between 0 and 2 children (up to one positive and one negative). We chose line C as our first "node" to split with, so we put it at the top. The - and + symbols above are to let you know which side is negative and which is positive. Now, let's continue with the tree. On the positive side, we only have B, so let's just slap that into the tree (since it's our only pick)... - + C / \ B / \ x x The "x"s mean that there are no more nodes left in that "space", and the tree stops. You don't use lines that were already used or lines on the opposite side of space... remember, we're splitting space, so when looking at the positive side of C, it's as if the negative side doesn't even exist. All that we have is B. And then when B splits space again (only splitting the positive side of C, no lines are on either side, so it's done. So now we just have to contend with the negative side of C, where A,E, and D are hanging out. We have three possible choices, so let's just pick A for the heck of it. :) / \ /A \------------- / \ B /ÿÿÿÿÿÿ \ / Eÿÿÿ | \ ----- D| \ | \C \ \ Well A has nothing on its negative side, and E and D on its positive side. So let's update the tree... - + C / \ A B / \ / \ x | x x | | (Note: The long line at the bottom is just to make room, but it's from the positive side of A). Now we have D and E left. We can pick either of them. But let's see what happens when we pick E.... / \ /A \------------- / \ B /ÿÿÿÿÿÿ \ / Eÿÿÿ D| \ ----------X \ | \C \ \ We've just cut D in half! That's not good. In a BSP tree, there's only positive and negative, not both. When splits are encountered, there are two options. One is to calculate the split point, and split D into two lines, D+ and D-. In which case, our final tree would look like this... - + C / \ A B / \ / \ x | x x | | E / \ D- D+ That works, but the problem there is that 1) we have to calculate the split, and 2) we've just added another line (or wall) to render. The calculation part is not that big a deal. The bad thing is, when you think about a large scene, splits can add tons upon tons of polys to the drawing pipeline. That's a devastating thing that we must try to avoid. Generally it's impossible to avoid splits completely; they are going to happen, so you better make code to handle it when it does. But the fewer the better. And because of this, we have a second option to avoid splits... Pick a different node. Even by just choosing D instead of E in our last step, / |\ /A | \------------- / | \ B /ÿÿÿÿÿÿ | \ / Eÿÿÿ | \ ----- D| \ | \C | \ |ÿÿÿÿÿ \ - + C / \ A B / \ / \ x | x x | | D / \ x E ... we've just eliminated the split. This is the kind of thing you want to do when building your trees. Unfortunately, when the scenes are large, you don't have the time to build your trees manually, and a program to do it for you won't have the luxury of knowing the best way to avoid splits without trying every single possible tree combination (called the "brute force" method), and that takes an eternity. As if to add another problem to the mix, Split Avoidance is not the only goal of a good BSP tree... we also want a tree that's as balanced as possible. Take a look at the above tree; it's got no splits, but it's pretty unbalanced. But take a look at another possible tree of the same scene... - + D / \ C A / \ / \ x B x E / \ / \ x x x x It's got no splits either, and look how much more balanced it is... we only go down three levels deep instead of four. Why is being balanced also important? Because when we walk the tree, A) the fewer chain links to process the faster it is, and B) on occasion we can eliminate whole branches from the pipeline, and the more nodes on the branch being eliminated, the better. So which is more important, Split Avoidance or Balancing? It turns out the two are generally mutually exclusive goals; the quest for the perfect tree is always continuing. For most objects/scenes, the splitless trees aren't as balanced as possible, and the most balanced trees have splits. Which is better? In truth it depends on the application. We're using the trees for realtime 3D hidden surface elimination, in which case both are important, but splitlessness is a slightly higher priority. Not that you'll always have a splitless tree though; there are some scenes that cannot possibly be done without at least one split. But the lower the better. So you want trees that have as few splits as possible, and are as balanced as possible, if possible. And you have to make a program that knows this. Sound like fun? I didn't think so. :-) Generally, the common method is what I've heard called the "sample outlook" method. What you do is, at each step in the tree generation you pick a sample of your nodes (say 10-20%), and pick the one which results in either A) the best possible next layer (quick version), or B) the best possible tree altogether (long version). When I say quick and long, I don't mean so much about how long they take to code, but how long the program runs. The less analysis involved, the quicker the generation is (but the less likely that the tree will be as good as you can get it). It's a tradeoff, and in my opinion, a really good tree is worth the time it takes to go get more coffee, so make your program very critical. Also, in case you hadn't already guessed, the tree generation is a recursive function, yes. You generate your node and pick two children, then for each child, the function calls itself on the child, and the process continues until the tree is over (no children to process). The problem is here that picking 10-20% of your possible nodes makes the results rather random, and doesn't guarantee a thing. But, for the most part it's one of the only ways out there to build a tree... For the most part. ;) _____There Is An Alternative For those interested, I have made an alternative algorithm for tree generation. You should be quite familiar with standard methods of building first though, in order to understand the algo. The cons are: A) Rather complicated to understand B) Harder to code C) VERY long building time (not nearly as long as brute force though) D) Sucks up memory (or disk space) like a hog. The pros though are: A) If there is a splitless tree it will most likely find it, even with thousands of nodes B) If there are multiple splitless trees, it will go for the more balanced ones. It can also be modified to prefer balancing, for example, depending on what you're looking for. As I said, this is a pretty complex (and weird) algorithm, and I can't explain it in here. But if you're familiar with standard recursive sampling methods, you might find it interesting. (Incentive to go to NAID) I will most likely be holding a couple coding seminars up at NAID, one for beginners, and one more open forum for experienced guys. In the open forum I'll be explaining this alternative BSP tree method to anyone who asks. And no, it's not BS; it's been verified by multiple people already as being quite effective. So if you want to know how, and you can make it to NAID, here's another reason to. :-) Okay, enough stupid plugging of my stuff... Time to actually put these trees to use! :-) _____Alright, I've Got A Tree. What Do I Do With It? If we've got our tree, using it for polygon displaying is a pretty simple matter. Basically, if we think about it, this tree holds a system of what polygons are on what sides of each other. So by traversing the tree during display, we can get the polygons to show up in correct back-to-front order (you can also walk the tree front-to-back if you like, if you have a system that would use it). So how do we traverse the tree? Like this... Take our tree (the balanced one, the one we liked more)... - + D / \ C A / \ / \ x B x E / \ / \ x x x x Now lets say, in the Doom analogy, that we have a player at the X in the scene... / /A ------ / B Eÿÿÿ | ----- D| \ | \C X \ By checking which side of the polygon our viewer is on at each node, we determine which branch of the tree to take first, and as we return to the node before taking the second branch, we draw the polygon. Let's start at the top, at node D. Looking at X, it's on the positive side of D. We don't walk the positive side of the tree though, we walk the OPPOSITE side, the negative one (since it's in the opposite space, generally meaning further away). Now we're at node C. We're on the negative side of C, so we walk the positive side, to B. But looking at B, it's go no nodes below it. So as if we followed one of them, we come right back to it, and draw it... B And we return back up to C. We've just come back to it from the first branch, so we draw it next. B C And then we would follow the negative side of C, but there's nothing there, so we return back up to D. Now that we're back to D, after walking the first branch, we draw it as well B C D And drop down to A. We're on the positive side of A, so we walk the negative branch. And since nothing is there, we return back to A, and draw it. B C D A And follow the same-side branch, down to E. E has no child nodes, so we draw it, and notice that we're done, since all five nodes (walls) have been drawn (or queued to draw, depending on how you do your system; it's the same principle)... B C D A E Now look at that order from X's viewpoint. If you draw the walls in that order, they'll be in the correct order from that viewpoint! :-) By doing this "which side am I on" checking, you will get a drawing order that works perfectly from any position, all the time. The same thing holds over to 3D, by checking your position against the plane of each polygon. If you're on the positive side of the plane, go one way, if you're on the negative side, go the other. Same thing, but with lines instead of planes, and it works every time. Now earlier I mentioned that a balanced tree was not only important for speed of recursion, but also because it could eliminate unwanted branches. To demonstrate this, pretend that the X character was facing to the upper left corner, where it could see part of E and part of A, but none of D or any of the others. Well if we think about it, if we're on the positive side of D, and none of D's negative space is visible (and I mean that, none of D's negative space... D could be invisible while same of its space is, so it's the entire space)... then all the nodes in its negative space (in this case, C and B) can be discarded right off the bat. No need to process them or anything, since there's no way you could see them. This is very very handy, and the more balanced the tree, the more you can discard when this kind of situation occurs. One final section before I go... throughout this doc you can see how everything is based on what side one thing is on from another. But how do you find this out? _____Line and Plane Equations Via Normals In order to find out what side a point is on from a line or plane, all you have to do is pump the coordinates of the point into the line or plane equation, respectively (and checking a line or plane against another line or plane is done just by checking both points of the line, or all the vertices of the plane, so in the end it comes down to points). But how do we know the equation of the line or plane to test against? Here's where our wonderful normals and dot products come in again. :-) If you're pre-storing your normals, then by just pre-storing one more value you can have the entire equation of a line or plane right at your fingertips. For any line with the equation Ax + By + C = 0 it turns out that A and B are the components of the normal of the line, and -C is a constant, equal to (Normal.P1), where . is the dot product function, and P1 is the first point of your line segment, the one where the normal was determined from. Once you have this equation (which is pre-stored as just the normal and that constant, -C), you plug in the coordinates of the point to check against into x and y. The result will give you 0 if the point is on the line, but it will also be positive if the point is on the positive side, and negative if the point is on the negative side. The value itself doesn't matter, it's just the sign that counts. Let's do an example. Say we have a line from (0,0) to (1,1). If our positive side is to the lower right, then our normal from P1 goes from (0,0) to (1,-1). And Normal.P1 = (Nx*P1x + Ny*P1y) = 1*0 + (-1*0) = 0. Sure enough, the equation for the line is Ax + By + C = 0 -> 1x + (-1)y + -(0) = 0 -> x - y = 0 Take any point on that line, and the result is 0, like in the equation. But take a point on the positive side, like (4,2) and you get x - y = 0 -> 4 - 2 = 2 ... and the result is positive. Similarly, a negative-side point will give a negative side result. So just plug in the numbers of the point to check, look at the sign of the result, and boom, off ya go. :-) The same thing holds for plane equations in 3D, where Ax + By + Cz + D = 0 Sure enough, A, B, and C are Nx, Ny, and Nz, the components of the normal to the plane. And -D is (N.V1) where N is the normal and V1 is vertex 1, i.e. the vertex where your normal was based from (the center point of the two vectors in the cross product... remember the cross product? :-) By plugging in numbers, you check what side the point is on during BSP tree walking with just three multiplies for a 3D plane... (Nx*x) + (Ny*y) + (Nz*z) - (N.V1) = Result where N.V1 is precalculated and Result holds the sign value giving the side that (x,y,z) is on. Sound simple? That's all there is to it. :) You use the same thing in tree generation to determine sidedness, by checking each point. If all the points are on one side or the other, you know the side of the whole line or plane. If not, then a split has occurred. Be warned though, if you use floating point, that you'll want to make room for a bit of rounding error. A result of 0.00002 doesn't necessarily mean that the point is on the positive side; it could be rounding error, and sometimes you can use this as an excuse to fudge (especially if all but one of the points is on one side, and the one that isn't is only off by a tiny margin). (PS: Nifty trivia... take a look at the BSP tree of any sphere (including cubes, which are six sided spheres)... you'll notice the tree is not exactly balanced, is it? :-) _____That's About It! If you have any questions, feel free to email me. Although I might be a little delayed in replying, I respond to pretty much everyone. :) Also, look for the supplement source to this volume and volumes 3 and 4 sometime shortly after NAID (May 31-June 2). And speaking of NAID, if you can make it, make it! It's gonna be a great time, I guarantee it. :-D Until next time (or NAID), Kiwidog / Hornet , Terraformer - kd@ftp.cdrom.com =----------------------------------(NAID: As if You Were Here)--(White Noise)-= Never done before. New. Kewl. See it. Hear it. Be there, even if you can't attend. "NAID 96: as if you were here", the NAID live web site. http://naid.conceptech.qc.ca is the URL to remember. Until the 31st, stop by the ad page, at http://flash.intersignal.net/naid. Can _you_ afford to miss it? See you there. White Noise / Dusk Till Dawn - jeff@ego.psych.mcgill.ca =--------------------------------------------(Imphobia 12 Voting)--(Darkness)-= Hi there Demonews readers. Here is just a little note to tell you all that the deadline for the Imphobia charts voting is near. So, if you haven't done it yet, you should all consider filling out an Imphobia voting form and send it to me to my email address. If you haven't got a form yet, you can leech it from Hornet /incoming/news directory under the name imp12vot.zip. You got the right to vote, use it! Darkness / Imphobia - jeff.van.audenhove@infoboard.be =-----------------------------------(FunktrackerGOLD for Linux)--(Jason Nunn)-= FunktrackerGOLD Beta version 0.0 for Linux/Unix now available! Experience the power and beauty of tracking and unix combined. ftp://ftp.cdrom.com/pub/demos/incoming/music/programs/fnkgld00.tgz ftp://sunsite.unc.edu/pub/Linux/Incoming For more information, email me or check out: http://darwin.topend.com.au/~jsno/projects.html Jason Nunn - jsno@darwin.topend.com.au ==[Subscribing]================================================================ _____How to subscribe to DemoNews Mail to : listserver@unseen.aztec.co.za Body : subscribe demuan-list [first_name] [last_name] The listserver will send DemoNews to your e-mail's return address. _____How to subscribe to Music Contest 4 Updates Mail to : listserver@unseen.aztec.co.za Body : subscribe mc4-updates [first_name] [last_name] _____Back Issues Older issues of DemoNews can be located under /demos/hornet/demonews Newly released issues of DemoNews are posted to /demos/incoming/news ==[Closing]==================================================================== For questions and comments, you can contact us at r3cgm@cdrom.com Your mail will be forwarded to the appropriate individual. ...........................................................End.of.DemoNews.123.