Zanir

Winter 2003

29.02.2004

Winter2003Program v DX8.1 bol urobený ako demo pre súťaž na stránke mikrogen.

V programe sa pomocou F1 vyvolá menu. V deme je terén, snehuliak a strecha osvetlená per-pixel osvetlením. Ďalej je tam obloha, slnko a stromy. Odporúčaná podpora pixel shader 1.1.

zdrojové texty a program – 1.3MB

Program 14 – Bumped Cubic Environment Mapping

20.02.2004

014_Bumped_Cubic_Environment_Mapping_1014_Bumped_Cubic_Environment_Mapping_2

zdrojové texty a program – 810kB

Program 13 – Dynamický cube mapping

20.02.2004

023_Cube_MappingPre 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

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 29 – Veľa bodových svetiel

10.02.2004

029_Many_Point_LightsProgram využíva vertex program pre vykreslenie objektu osvetleného 17 bodovými svetlami. Vertex program sa vykonáva pre každý vrchol modelu. Vstupom do vertex program je pre každý vrchol 1 až 16 4-zložkových vektorov float čísel (Vertex Attributes). Ďalším vstupom sú konštantné registre (Program Local Parameters, Program Environment Parameters), tieto sú zadané pred kreslením a sú spoločné pre viacero prímitív. Shader môže využívať vnutorné registre (11 registrov) pre uloženie dočasných medzivýsledkov. Výstupom shadera sú registre pre poziciu result.position, pre farby result.color, pre hmlu, pre velkost bodu a pre texturové koordinácie. 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 (ABS, ARL, DST, DPH, FLR, FRC, LIT, MAD, POW, SWZ, XPD).

Program vyžaduje rozšírenie GL_ARB_vertex_program

zdrojové texty a program – 250kB

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