20.02.2004
Cube mapping predstavuje vlastne environment mapping (mapovanie okolia na zrkadlové predmety) pričom ako zdroj sa používa cuba map textúra. Cube map textura sa skladá z 6 štvorcových textúr, ktoré predstavujú okolie. Pre generovanie texturových koordinacií používam vertex shader. Program využíva tie isté dáta ako sphere mapping, ale samotný zrkadlový povrch je trochu lepší a hlavne nemá žiadné problémové miesto.
zdrojové texty a program – 480kB
20.02.2004
EMBM je mapovanie okolia na hrboľatý zrkadlový povrch. Predstavuje pokročilejšiu metódu enviromental mapping-u, ktorá sa na rozdiel od cube alebo sphere mappingu neprevádza po vrcholoch, ale prevádza sa po pixeloch. Využíva sa čítanie z textúry závislé na inej textúre. Presnejšie k textúrovacim koordináciam zakladnej textúry sa pripočítavá hodnota z druhej textúry. Základná textúra je v tomto prípade sphere map textúra. Druhá textúra predstavuje vypočítané posuvy textúrových koordinácií sphere map textúry. Táto textúra sa vypočítava na základe výškovej mapy zrkadlového povrchu (bump map).
Program vyžaduje operátor BUMPENVMAP (bump environment map) a 3 textúrovacie jednotky.
zdrojové texty a program – 780kB
20.02.2004
Dot Product 3 Bump Mapping je osvetlenie povrchu po pixeloch. Využíva sa operátor skalárny súčin ( dot product ) pri textúrovaní objektu. Program počíta osvetlenie po pixeli podľa vzorca:
farba = ambient x Textura + (N.L)xTextura + (N.H)^SpecExp x SpecularFarba.
Program načítava 3ds súbor a používa vertex shader pre výpočet L a H vektorov. Ten istý efek robí aj OpenGL program 24. Narozdiel od tohto programu, OpenGL program nenačítava 3ds model ale dynamicky počíta guľu a pre výpočet L a H vektorov nepoužíva vertex program ale procesor.
Program vyžaduje multitexturing a operator DOTPRODUCT3.
zdrojové texty a program – 900kB
10.02.2004
Sphere mapping je spôsob implementácie environment mapping-u. Environment mapping je mapovanie okolia na zrkadlové predmety, ktoré sa nachádzaju v ňom. Pre generovanie texturových koordinacií používam vertex shader. V programe je aj automatické generovanie pomocou pevnej funkčnej pipeline, ale nie je korektné vzhľadom na poziciu kamery (nemení sa keď sa mení pozícia kamery).
zdrojové texty a program – 480kB
10.02.2004
Program využíva vertex shader 1.0 pre vykreslenie objektu osvetleného 17 bodovými svetlami. Vertex shader je program, ktorý sa vykonáva pre každý vrchol modelu. Vstupom do vertex shadera je pre každý vrchol 1 až 16 4-zložkových vektorov float čísel (v0-v15). Ďalším vstupom sú konštantné registre (c0-c95), tieto sú zadané pred kreslením a sú spoločné pre viacero prímitív. Shader môže využívať vnutorné registre (r0-r11) pre uloženie dočasných medzivýsledkov. Výstupom shadera sú registre pre poziciu oPos, pre farby oD0,oD1 , pre hmlu oFog, pre velkost bodu oPts a pre texturové koordinácie oT0-oT7. Maximalna dĺžka shadera je 128 inštrukcií. Inštrukcie pracujú s vektormi a sú takéto: +,-,*, 1/x, 1/sqrt(x), dot3, dot4, exp, log, min, max, mov. Sú tam ešte nejaké inštrukcie na porovnanie (sge,slt) a nejaké špeciálne inštrukcie (dst,lit,mad). Všetko napisané platí pre vs verzie 1.0. Vyššie verzie majú viac inštrukcií, viac konštantných registov a väčšiu maximálu dĺžku programu.
zdrojové texty a program – 350kB
04.02.2004
Súbory 3ds je možné vyexportovať v 3ds max. V súboroch sa ukladajú aj textúrové koordinácie a názvy textúr. Normálové vektory po bodoch sa neukladajú preto ich treba vypočítať pri načítavaní objektu.
zdrojové texty a program – 240kB
04.02.2004
Pre zlešenie kvality osvetlenia je potrebné osvetlenie po pixeloch. Emboss bump mapping bola prvá realtime-ová technológia, ktorá umožňovala vytvoriť lepšie osvetlenie ako štandardne osvetlenie po vrcholoch. Ešte lepšie osvetlenie sa dá vytvoriť pomocou dot3 bump mapping-u, ktorý na rozdiel od emboss bump mapping-u je matematicky správny. Dot3 bump mapping počíta skalárny súčin normálového vektora uloženého v textúre a vektora k svetlu po pixeli. Emboss bump mapping tento skalárny súčin odhaduje pomocou súčtu dvoch posunutých textúr.
zdrojové texty a program – 640kB
zdrojovy text pre knižnicu jpeglibmm.lib – 200kB
18.11.2003
Program používa bitmapový font t.j. font vytvorený z textúry.
Hmla môže byť počítaná po vrcholoch (vertex fog) a na základe hodnoty hĺbky (zo z-buffra) (table fog). Ja používam hmlu na základe z-buffra.
Hmla može byť:
- exponenciálna, nastavuje sa hustotou
- exponenciálna na druhú, nastavuje sa hustotou
- lineárna, nastavuje sa začiatočnou a koncovou vzdialenosťou
zdrojové texty a program – 180kB
18.11.2003
Pre osvetlenie potrebujeme definovať pre každý vertex normálový vektor. Používam smerové svetlo. Pohyb je vytvorený cez rotácie a posunutia.
zdrojové texty a program – 330kB
18.11.2003
V programe využívam font prístupný v D3D, ktorý sa vytvorý volaním funkcie D3DXCreateFont. Ako časovač využívam rýchli časovač prístupný cez funkciu QueryPerformanceCounter.
Keď stlačite h zobrazý sa Help.
zdrojové texty a program – 180kB