Copy Link
Add to Bookmark
Report
Demo News 123
.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.