Zrovna dneska jsem nasel na starem pocitaci (386) to demo Mars a lamal jsem si hlavu nad tim, jak je to mozne, ze to bezi tak rychle a pritom je to tak hezke.
Diky za pekny clanek.
Kdysi davno jsem Mars studoval. Je udelany velmi primitivne. Je jedna jedina textura maleho kopecku, hezky barevne vyvedena. Ta se pak neustale prekresluje pres sebe upravena do pristusne velikosti v zavislosti na vzdalenosti a posazena do vysky dle pozice v terenu.
Rychle je to taky diky tomu, ze se nejde otacet a posouvat horizont.
Vyskove polia su celkom uzitocna vec, pri dobrej implementacii (vykreslenie cez NURBS alebo ine spline krivky) umoznuju vytvorit krajinu skoro hocijakej velkosti z jedneho z toho isteho pola (skladanie platov ...). takisto pri texturovani staci ze sa pouzije vhodna jedna textura a farba sa prepocita podla vysky (s urcenim "hladiny mora" pre lepsi efekt).
Voxely boli volakedy velmi vyuzivane (napr hry Shattered Steel, Comanche), dnes uz o tom nemam taky prehlad. v spominanej Shattered Steel boli vyskove mapy volne dostupne ako grayscale pcx obrazky, velmi vyhodne na experimentovanie :-)
Dneska jsou (na PC!!!) vyskova pole brana spis jako pomocna datova struktura pro ulozeni terenu, vykreslovani se deje klasicky pres polygony s optimalizaci na velikost a pocet trojuhelniku (o tom neco priste). Existuji vsak platformy, kde nejsou k dispozici graficke akceleratory a tam se vyskova pole daji s velkou vyhodou pouzit (viz tem zminovany Comanche).
btw: co ten titulek? Pokud jsem nekomu omylem udelal reklamu (krome dvou neexistujicich firem a jednoho demomakera a kamose Honzy B.), at se ozve a navali prachy :-)
Hmm, začíná to být čím dál tím zajímavější, díky! :-) Teď by bodnul ještě nějaký velmi podrobný článek o REYESu. ;-) (Nemůžu si pomoci, jsem tím geniálním algoritmem posedlý. ;-))
No, ja davam prednost spis metodam s jednodussimi entitami a brute-force pristupem pri renderingu (hint: trojuhelnik pro me neni jednoducha entita :-) Ale pravda, RenderManovsky pristup se mi - pri programovem zpracovani - taky libi, zejmena ta skriptovatelnost shaderu, to je nadhera, jen mit cas na dalsi experimenty. Zajimave, ze se zatim podobnou cestou nevydal napriklad POVRay.
Však on REYES s trojúhelníky prakticky nepracuje. :-D Mikropolygony bych skoro jako trojúhelníky ani čtyřúhelníky nebral, mají spíš charakter „pixelů s hloubkou“. :-) Hladké plochy, displacement a „kamerové efekty zdarma“ mě ovšem velice lákají, hodlám se tou cestou vydat (už konečně! :-D). Mimo jiné mě trošku mrzí, že žádný svobodný software pro 3D grafiku nevyužívá tak intenzivně věktorové jednotky, jak by mohl, a všechno je to vůbec děsně pomalé – Blender, POV-Ray, cokoliv. A zrovna REYES je vektorizovatelný prakticky triviálně, člověku před kompilátorem to prostě nedá pokoj a nedá. :-D
Vsak jsem to tak myslel, ze REYES je jedna z metod, ktera s klasicky pojatymi trojuhelniky nepracuje. Ja jsem se nejakou dobu zabyval surfely ("castice s orientaci") a mozna to je ta spravna cesta k jednoduchym a rychlym renderovacim enginum.
No a samozrejme jeste nevime, jak se rozumne vypodarat s voxely, ta prostorova zavislost pri praci s nimi je tam moc velka na nejakou paradni paralelizaci a to je skoda, protoze nektere veci se voxely daji resit dost dobre (znas takove to technology demo "prulet rakety hmotou, ktera se da postupne odstrelovat" ?). Nepamatuju se na nazev, ale tusim to delal nejaky Rek.
Dneska uz specham, takze odpovim pouze kratce (zitra se o tom rozepisu vic). Ecstatica pouzivala misto polygonu elipsoidy, coz byla na dobu jejiho vzniku velmi dobra a pritom zajimava technologie, protoze se nemusely softwarove renderovat dost hnusne polygony (ty jsou ostatne hnusne dodnes :-), jen se zvysilo rozliseni). Elipsoidy maji tu vyhodu, ze se vlastne s jejich natacenim nemeni jejich opticke vlastnosti, tj. stinovani apod. To je ostatne duvodem oblibenosti ruznych "kulicek" v mnoha starsich demech (opet neco od Xography). Takze se predpocitaly pozice vsech elipsoidu, a vznikly sprity, ktere se pres sebe "naplacaly" na obrazovku, at uz s pouzitim Z-bufferu (pameti hloubky) nebo malirovym algoritmem.
Ten Mandelbrot me dost zajima. Sam jsem vytvoril M-set v asm pomoci klasicke fx-point aritmetiky 16.16, ale pod 130B jsem se nedostal (fp je o neco delsi). Hudba je pro Adlib?
Tak jsem kecal, toho Mandelbrota se mi ve finalni verzi podarilo stlacit ze 130 na 117 bytu, akorat je na dvou mistech pixmapy videt chybny vypocet ve fixed-point. Niz to asi nepujde.
mandelbrot is possible jede v doublech, takze zoomuje az do takove hloubky kam staci presnost doublu, intoveho bez zoomovani jsem mel na neco kolem 60 bajtu ;)
hudba je adlib.
To me docela zajima. Vzhledem k tomu, ze jen nahozeni grafickeho rezimu, na konci cekani na stisk klavesy, zhozeni grafickeho rezimu a navrat do DOSu (retn, ne int) zabere 15 bytu, tak je to stlaceni na 45 bytu dost dobre (dalsich sest bytu pro nastaveni ukazatele do obrazove pameti, i kdyz mozna vynulovani DI neni potrebne).
Uz jsem nenasel zdrojak, ale staci disassemblovat http://pouet.net/prod.php?which=1843
Asi jsem do tech 60 nepocital nastaveni modu a esc. Vzniklo to tak ze kamos napsal na 200 modrou vlnici se placku a chtel ji releasnout; mne to nedalo a do mista kde pocita barvu pixelu jsem bez jakychkoliv uprav cut&pastnul svuj kod na animovanou julii. Vim ze to pak melo jeste slabe nad 256. Zajimay je ze po onom brutalnim cut&paste julie se na placce rozvlnil mandelbrot :) (stacilo nekde prohodit registry)