06.01.2005
Horizon Mapping sa niekedy nazýva aj self shadowing. Umožňuje zobraziť tiene po pixeli, teda vykresliť tiene na textúre bez toho aby sa počítala nejaká geometria. Tieň sa vytvára na základe porovnania uhlu k svetlu (vertikálny uhol) od daného pixela (výška svetla) s uhlom horizontu. Ak je svetlo nad horizontom tak je uhol k svetlu väčší ako uhol horizontu. Čítať zvyšok príspevku »
29.12.2004
Program vykresľuje scénu osvetlenú viacerými svetlami. Od každého svetla sú vrhané tiene. V programe je možné zvoliť osvetlenie po vrcholoch, po pixeli a po pixeli s offset mappingom.
Program vyžaduje hardwerovo akcelerovaný 8 bitový stencil buffer. Program používa pixel shader 1.1 a 1.4
zdrojové texty a program – 720kB
22.12.2004
Program vytvára tieň za pomoci stencil buffra. Stencil buffer uchováva pre každý pixel hodnotu v rozmedzí 0 až 2^N-1, kde N je počet bitov stencil buffra. Hodnota sa mení podľa nastaveného operátora. Čítať zvyšok príspevku »
21.09.2004
Offset mapping spočíva v posunutí textúrových koordinacií s ohľadom na pozíciu pozorovateľa a výšku povrchu tak, že vzniká dojem plastického povrchu. Konkrétne sa textúrové koordinácie posunú v smere od pozorovateľa pre hrbole a v smere ku pozorovateľovi pre diery. Čítať zvyšok príspevku »
15.09.2004
Jedná sa o ase loader rozšírený o triedu, ktorá vytvorý špecialný pixel buffer, do ktorého sa dá kresliť, a zároveň sa dá použiť ako textúra. Do tejto textúry sa vykresľuje scéna. Motion blur sa vytvára tak, že túto textúru pričítavam k frame bufferu:
frame(t+1) = alpha*textúra + (1-alpha)*frame(t)
Frame buffer sa nemaže. Frame buffer neobsahuje z-buffer. Alpha je prednastavené na 0.18. Veľkosť textúry je 1024 * 1024, textúra obsahuje z-buffer. Program je rovnocenný s OpenGL programom 31. Na mojej grafickej karte však DX program ide rýchlejšie. DX 127 FSP, OpenGL 104 FSP.
zdrojové texty a program – 700kB
13.09.2004
Program ukazuje osvetlenie po pixeli naraz s viacerými svetlami. Svetlá majú rôznu farbu a dosah. Jedným kreslením sa vykresľuje jedno svetlo spolu s útlmom a specular zložkou. Pre viac svetiel je nutné vykreslovať scénu viackrát. Kedže nie všetky trojuholníky sú osvetľované všetkými svetlami, každý trojuholník sa vykresľuje, iba toľko krát koľko svetiel ho osvetľuje. Ale okolo toho zistenia je dosť výpočtov, takže osvetľovať scénu týmto spôsobom z veľa trojuholníkmi je dosť náročné na CPU. Môj model však nemá veľa trojuholníkov (má <1000).
Pomocou ps 1.4 je možné vykresliť 2 svetlá v jednom kreslení. Ale tento spôsob je čo sa týka výkonnosti porovnateľný s vykreslením 1 svetla v jednom passe (na Radeon 9100). Čítať zvyšok príspevku »
23.08.2004
Osvetlenie po pixeli. Program vychádza z programu 10, kde bolo taktiež per-pixel osvetlenie. V tomto programe však využívam možnosti pixel shader-ov. V programe je osvetlenie ambient (okolité), difúzne a zrkadlové (specular). U zrkadlovej zložky je možné nastavovať exponent. Je možné zapnúť cube map normalizáciu. Ďalej je tam útlm svetla (attenuation). Útlm je možné vybrať zo 7 rozdielnych vzorcov. Sú tam rôzne techniky pre výpočet útlmu: cez pixel shader, cez pixel shader s čítaním 1D textúry a cez 3D textúru.
Vyžaduje pixel shader 1.1. Používa pixel shader 1.4.
zdrojové texty a program – 720kB
26.07.2004
Program je až na pár drobností totožný s OpenGL programom 27. Najväčší rozdiel je v spôsobe uloženia vrcholov, u DX sú uložené v špecialnom bufferi (ktorý môže byť v pamäti grafickej karty), ale u OpenGL sú v pamäti programu.
Súbory ase vytvara 3ds max ako ASCII scene export. Je to textový formát. Všeobecne majú textové formáty oproti binárnym tú výhodu, že ich dáta sú uložené textovým popisným spôsobom a preto nie je problém importovať potrebné časti so súboru. Textové súbory sú zase väčšie a pomalšie sa načítavajú. Načítanie ase súboru som urobil, preto lebo 3ds max exportuje veľa rôznych dát, pričom načítavať ich s 3ds súboru je obtiažne, lebo poriadny popis neexistuje. Čítať zvyšok príspevku »
20.02.2004
Pre cube mapping platí, že cube map textúra sa dá jednoducho vyrenderovať. Stačí pre každý smer vykresliť okolie pri nastavenej perspektíve 90 stupňov a skopírovať na príslušnú časť cube mapy. Môj program predstavuje dynamický cube mapping kde lietadlo oblietava zrkadlový predmet.
zdrojové texty a program – 670kB