Zanir » DX 8.1

Archív z ‘DX 8.1’ Kategórie

Program 12 – Cube mapping

20.02.2004

012_Cube_MappingCube 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

Program 11 – Environment mapped bump mapping (EMBM)

20.02.2004

011_environment_mapped_bump_mappingEMBM 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

Program 10 – DOT3 bump mapping

20.02.2004

010_DOT3_bump_mappingDot 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

Program 9 – Sphere mapping

10.02.2004

009_sphere_mappingSphere 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

Program 8 – Veľa bodových svetiel

10.02.2004

008_Many_Point_LightsProgram 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

Program 7 – Načítanie 3ds súboru

04.02.2004

007_3ds_loaderSú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

Program 6 – Emboss bump mapping

04.02.2004

006_bump_mappingPre 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

Program 5 – Bitmap font a hmla

18.11.2003

005_Bitmap_font_FogProgram 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

Program 4 – Svetlo a pohyb

18.11.2003

004_Light_MovePre 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

Program 3 – Font a FPS

18.11.2003

003_Font_FPSV 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