Programujeme GPU 27

V tom­to člán­ku ro­zo­be­rie­me niek­to­ré de­tai­ly tý­ka­jú­ce sa pou­ží­va­nia geo­met­ric­kých sha­de­rov (GS). Vy­uži­je­me pri­tom kód sha­de­ra si­luet, kto­rý je sú­čas­ťou vzo­ro­vej ap­li­ká­cie glsl v3.1.

Priľ­ah­lé vr­cho­ly

V pre­doš­lej čas­ti se­riá­lu sme vám pred­sta­vi­li no­vé ty­py geo­met­ric­kých pri­mi­tív, kto­rých dek­la­rá­cie bo­li dopl­ne­né v rám­ci roz­ší­re­nia ARB_geo­met­ry_sha­der. V ap­li­ká­cii glsl v3.1 sme pou­ži­li typ GL_TRIAN­GLES_AD­JA­CEN­CY, kto­rý dopĺňa at­ri­bú­ty troch štan­dar­dných vr­cho­lov tro­ju­hol­ní­kov o at­ri­bú­ty  troch priľ­ah­lých (ad­ja­cent) vr­cho­lov. Tie sa pri fixnom ren­de­rin­gu ne­be­rú do úva­hy. Zme­na nas­tá­va pri pou­ži­tí GS, kto­ré ma­jú prís­tup sú­čas­ne k všet­kým šies­tim vr­cho­lom.

At­ri­bú­ty priľ­ah­lých vr­cho­lov ne­napĺňa­me tak, ako sme to ro­bi­li pri štan­dar­dných vr­cho­loch. Zna­me­na­lo by to alo­ko­vať dvoj­ná­sob­né pa­mä­ťo­vé blo­ky. Vie­me, že ku kaž­dej stra­ne tro­ju­hol­ní­ka ob­jek­tu tvo­ria­ce­ho ob­jem vždy exis­tu­je priľ­ah­lý tro­ju­hol­ník. Pot­reb­né úda­je už v na­šich štruk­tú­rach exis­tu­jú, sta­čí zís­kať ich ad­re­sy (in­dexy) a ulo­žiť ich do roz­ší­re­né­ho po­ľa in­dexov. Kon­krét­ny al­go­rit­mus je ob­sa­hom fun­kcie search_in­dexes() mo­du­lu Inter­fa­ce.

 Vstup/vý­stup

Typ geo­me­trie od­ov­zdá­va­nej GS a ta­kis­to typ geo­me­trie, kto­rú GS od­ov­zdá­va­jú na ďal­šie spra­co­va­nie, de­fi­nu­je­me po­mo­cou vý­ra­zu layout(). V na­šom prí­pa­de GS od­ov­zdá­va­me tro­ju­hol­ní­ky s priľ­ah­lý­mi vr­chol­mi, pri­čom GS ge­ne­ru­je pás tro­ju­hol­ní­kov. Maximál­ny po­čet vy­tvo­re­ných vr­cho­lov je 15 = 3 vr­cho­ly štan­dar­dné­ho tro­ju­hol­ní­ka + max. 12 vr­cho­lov štvo­ru­hol­ní­kov rep­re­zen­tu­jú­cich si­lue­ty (1 štvo­ru­hol­ník = 4 vr­cho­ly pre kaž­dú zo strán tro­ju­hol­ní­ka).

 Ver­tex prog­ram (VP)

VP vy­ko­ná­va dve úlo­hy:

1. pre­be­rá at­ri­bú­ty vr­cho­lov z fixné­ho OpenGL a od­ov­zdá­va ich GP (po­lo­hy, far­by a textú­ro­va­cie sú­rad­ni­ce),

2. tran­sfor­mu­je vr­cho­ly z OB­JECT do EYE pries­to­ru (po­mo­cou ma­ti­ce MO­DEL­VIEW), nás­led­ne tran­sfor­mu­je vr­cho­ly z EYE do CLIP pries­to­ru (po­mo­cou ma­ti­ce PRO­JEC­TION).

Geo­met­ry prog­ram (GP)

Al­go­rit­mus GP je nas­le­du­jú­ci:

1. prev­za­tie pre­men­ných z VP,

2. vý­po­čet nor­má­ly štan­dar­dné­ho tro­ju­hol­ní­ka v pries­to­re EYE,

3. kla­si­fi­ká­cia vi­di­teľ­nos­ti tro­ju­hol­ní­ka – po­mo­cou ska­lár­ne­ho sú­či­nu je­ho nor­má­ly a vek­to­ra sme­ru­jú­ce­ho z je­ho 1. vr­cho­lu do oka po­zo­ro­va­te­ľa, ak je tro­ju­hol­ník vi­di­teľ­ný, napl­nia sa všet­ky pre­men­né prís­luš­né je­ho štan­dar­dným trom vr­cho­lom (in­dexy 0, 2, 4), kaž­dý vr­chol sa od­ov­zdá FP po­mo­cou Emit­Ver­tex() a tro­ju­hol­ník ako ce­lok sa od­ov­zdá po­mo­cou EndPri­mi­ti­ve(),

4. kla­si­fi­ká­cia vi­di­teľ­nos­ti priľ­ah­lých tro­ju­hol­ní­kov – rov­na­kým pos­tu­pom ako v pre­doš­lom prí­pa­de, dva vr­cho­ly priľ­ah­lých tro­ju­hol­ní­kov sú vr­chol­mi strán štan­dar­dné­ho tro­ju­hol­ní­ka (in­dexy 0, 2; 2, 4; 4, 0), tre­tí vr­chol je priľ­ah­lým vr­cho­lom (in­dexy 1, 3, 5), v prí­pa­de, ak nie je priľ­ah­lý tro­ju­hol­ník vi­di­teľ­ný, k stra­ne štan­dar­dné­ho tro­ju­hol­ní­ka sa vy­ge­ne­ru­je štvo­ru­hol­ník rep­re­zen­tu­jú­ci si­lue­tu po­mo­cou fun­kcie Emi­tEd­geQuad().

Frag­ment prog­ram (FP)

FP vy­ko­ná­va dve úlo­hy:

1. pre­be­rá pre­men­né z GP a far­by z textú­ry,

2. vy­po­čí­ta­va far­by frag­men­tov im­ple­men­tá­ciou Phon­gov­ho os­vet­ľo­va­cie­ho mo­de­lu, v prí­pa­de, že sa nek­res­lí štan­dard­ný tro­ju­hol­ník, ale štvo­ru­hol­ník rep­re­zen­tu­jú­ci si­lue­tu, far­bou frag­men­tu bu­de zo­sil­ne­ná zlož­ka am­bient.

  GPU-obr1.jpg

Obr. 1 Gra­fic­ký vý­stup vzo­ro­vej ap­li­ká­cie glsl v3.1 – sha­der si­luet

Zdroj: IW 12/2013



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Up­gra­de na Win­dows 8.1
Od októbra si používatelia Windows 8 môžu zadarmo stiahnuť cez Windows Obchod aktualizáciu na Windows 8.1. Ako vývojári aplikácií môžete predpokladať, že väčšina používateľov si svoje počítače a tablety zaktualizuje. To sa, samozrejme, týka domácich, hobby a SMB (malé firmy, živnosti, slobodné povolania...) používateľov. čítať »
 
Prog­ra­mu­je­me GPU 27
V tomto článku rozoberieme niektoré detaily týkajúce sa používania geometrických shaderov (GS). Využijeme pritom kód shadera siluet, ktorý je súčasťou vzorovej aplikácie glsl v3.1. čítať »
 
DNS – úp­ra­va kon­fi­gu­rač­né­ho sú­bo­ru na­med.conf pod­ľa views
V predchádzajúcej časti sme si stanovili, že náš server rubin, na ktorom pobeží služba DNS, má dve rozhrania – jedno do vnútornej siete a druhé do vonkajšej siete. Preto sme si aj vytvorili dve zóny, každú pre jednu sieť – vnútornú zónu a vonkajšiu zónu. A pre každú zónu sme pripravili aj zónové záznamy. Teraz na základe tohto rozdelenia upravíme konfiguračný súbor named.conf. čítať »
 
Zdie­ľa­nie zdro­jov me­dzi OS Win­dows a OS Li­nux
Webový server Apache, ktorý sme nainštalovali a spustili v základnej konfigurácii, plánujeme používať na zdieľanie údajov. Východisková konfigurácia však neposkytuje žiadne zabezpečenie dát počas ich transportu, a preto ju budeme musieť patrične upraviť. Využijeme pri tom služby kryptografie používajúcej verejné kľúče. čítať »
 
Preh­ľad ôs­mich nás­tro­jov pre ad­mi­nis­trá­to­rov
V dnešnom svete outsourcingu sa stále väčší dôraz kladie na zefektívňovanie a automatizáciu postupov. Systémový administrátor má k dispozícii viacero nástrojov, ktoré mu môžu uľahčiť a zefektívniť jeho prácu. Zameriame sa na niektoré z nich z prostredia serverov a pracovných staníc s Windows. čítať »
 
Af­fi­lia­te mar­ke­ting v služ­bách web­mas­te­rov
Kto vlastní alebo prevádzkuje webové projekty, vie, že je ťažké efektívne vypredať mediálny priestor. Základom je nasadenie banerových pozícií cez reklamnú sieť a následné nasadenie pozícií pay-per-click. čítať »
 
Fir­my dá­ta ne­šif­ru­jú: kaž­dý dru­hý uk­rad­nu­tý no­te­book ne­bol vy­ba­ve­ný sys­té­mom na ochra­nu dát
Viac ako polovica ukradnutých notebookov sa dostáva do nepovolaných rúk bez akéhokoľvek systému na ochranu dát. Pre firmy sú oveľa cennejšie dáta ako samotné zariadenia, maximálnu škodu, ktorá môže nastať stratou dát, firmy vyčíslujú nad 50-tisíc eur. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter