Programujeme GPU / 18. časť

Pok­ra­ču­je­me v uvá­dza­ní zá­klad­ných prin­cí­pov sha­de­rov pou­ži­tých v na­šich vzo­ro­vých ap­li­ká­ciách. Za­me­ria­me sa na sha­der me­nia­ci po­lo­hu vr­cho­lov ob­jek­tov a sha­der im­ple­men­tu­jú­ci tzv. Perli­nov šum.

Sha­der vl­na a dre­vo - glsl v1.5

Kód ap­li­ká­cie glsl v1.5 ob­sa­hu­je dva no­vé sha­de­ry. Pr­vý z nich je sha­der, kto­rý me­ní po­lo­hu vr­cho­lov ob­jek­tov. De­je sa tak v rám­ci ver­tex sha­de­ra, a to na zá­kla­de zme­ny hod­no­ty uni­form pre­men­nej at, kto­rá je vstu­pom pre za­bu­do­va­nú fun­kciu sin. Zvyš­ný kód sha­de­ra sa v ni­čom pod­stat­nom neod­li­šu­je od kó­du pou­ži­té­ho pri sha­de­ri, kto­rým sme ap­li­ko­va­li os­vet­ľo­va­cí mo­del (glsl v1.4).

Nao­pak, v prí­pa­de sha­de­ra na si­mu­lá­ciu dre­ve­né­ho ob­je­mu ide o úpl­ne no­vý kód. Je­ho zá­kla­dom je troj­roz­mer­ná textú­ra vy­ge­ne­ro­va­ná po­mo­cou tzv. Perli­nov­ho šu­mu (mo­dul Textu­re). Vo fun­kcii pre­pa­re_perlin_noi­se_tex() je vy­tvo­re­ný ob­jekt 3D textú­ry a vy­hra­de­né pot­reb­né pa­mä­ťo­vé mies­to. Nás­led­ne sa to­to mies­to napl­ní údaj­mi, kto­ré sú vý­stu­pom fun­kcie perlin_noi­se().

Perli­nov šum (Perlin noi­se)

V krát­kos­ti mô­že­me uviesť, že Perli­nov šum je špe­ciál­ny typ šu­mu, kto­ré­ho blo­ky úda­jov ma­jú spo­ji­tý cha­rak­ter. Zjed­no­du­še­ne po­ve­da­né, pre­chod od hod­no­ty 0 k hod­no­te 255 a späť sa ne­de­je sko­ko­vo, ale ply­nu­le s vop­red de­fi­no­va­ný­mi vlas­tnos­ťa­mi. Vý­po­čet kon­krét­nych hod­nôt (čí­sel) jed­not­li­vých blo­kov úda­jov pa­tria­cich šu­mu je za­lo­že­ný na vý­poč­te tzv. pseu­do­ná­hod­ných čí­sel. Ta­ký­to vý­po­čet dá­va pri kaž­dom ďal­šom spus­te­ní vždy tie is­té ná­hod­né čís­la, a to v rov­na­kom po­ra­dí. Na do­siah­nu­tie správ­ne­ho efek­tu tre­ba spo­čí­tať pseu­do­ná­hod­né čís­la, kto­ré bo­li vy­ge­ne­ro­va­né pre pos­tup­ne zvy­šu­jú­cu sa frek­ven­ciu a kle­sa­jú­cu am­pli­tú­du. V prí­pa­de náš­ho sha­de­ra dre­vo je ver­tex sha­der dopl­ne­ný o vý­po­čet (pre­sun) po­lo­hy frag­men­tov v pries­to­re OB­JECT. Frag­ment sha­der pra­cu­je s vy­ge­ne­ro­va­nou 3D textú­rou, kto­rej úda­je v ko­neč­nom dôs­led­ku pou­ží­va na vý­po­čet am­bient kom­po­nen­tu far­by frag­men­tov. Ok­rem iné­ho pri­tom pou­ží­va aj za­bu­do­va­né fun­kcie sqrt, fract a mix. Fun­kcia fract je pou­ži­tá aj pri dopl­ne­ní šik­mých pru­hov, kto­ré eš­te viac zvý­raz­ňu­jú štruk­tú­ru dre­va.

GPU - obr1.jpg
Obr. 1  Depth Of Field sha­der – glsl v2.0

Sha­der ob­la­ky - glsl v1.6

Pri ďal­šom sha­de­ri, kto­rý pok­rý­va povrch ob­jek­tov ob­lak­mi, sme pou­ži­li rov­na­ký prin­cíp ako v pre­doš­lom prí­pa­de. Čís­la vy­po­čí­ta­né po­mo­cou Perli­no­vej fun­kcie pria­mo dopĺňa­jú far­bu frag­men­tov s tým, že frag­men­ty, kto­ré ne­ma­jú pri­de­le­ný li­mi­to­va­ný am­bient kom­po­nent far­by RGB, sa ne­zob­ra­zu­jú.

V prí­pa­de toh­to sha­de­ra bo­lo tre­ba pou­žiť Perli­no­vu fun­kciu, kto­rej prie­beh je „vy­hla­de­nej­ší". Z toh­to dô­vo­du sme pri vý­poč­te šu­mu zní­ži­li frek­ven­ciu aj am­pli­tú­du.

Pri pí­sa­ní tých­to člán­kov ne­za­há­ľa­me a sú­čas­ne sa ve­nu­je­me aj príp­ra­ve no­vých sha­de­rov. K tej­to čas­ti se­riá­lu prik­la­dá­me vzo­ro­vý prík­lad glsl v2.0, kto­rý ob­sa­hu­je tzv. Depth Of Field sha­der. Ten­to sha­der si­mu­lu­je za­os­tro­va­nie ka­me­ry na pred­me­ty na­chá­dza­jú­ce sa v jej blíz­kos­ti (v oh­nis­ku jej šo­šov­ky). Os­tat­né čas­ti scé­ny sú ro­zos­tre­né.

Zdroj: IW 12/2012



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

SIEM: Ochra­na cit­li­vých in­for­má­cií pred úni­kom zvnút­ra fir­my
Väčšina IT manažérov dokáže odpovedať na otázky, aká je priepustnosť siete, aký je dostupný storage, koľko údajov sa archivuje a pod. čítať »
 
Evo­lú­cia v audi­to­va­ní a ochra­ne da­ta­báz
Softvér na audit a ochranu databáz Database Audit and Protection vznikol podľa agentúry Gartner prirodzenou evolúciou zo softvéru na monitorovanie databáz. Je dôležité uvedomiť si, že monitorovaním databáz sa zabezpečenie dát len začína. čítať »
 
Ako za­brá­niť ne­že­la­ným ak­ti­vi­tám za­mes­tnan­cov?
Jeden z hlavných rizikových prvkov, ktoré musia dnešné spoločnosti zohľadňovať pri budovaní informačnej bezpečnosti, je ľudský faktor. čítať »
 
BI: Ako si vy­brať? Preh­ľad nás­tro­jov, pos­ky­to­va­te­ľov, mož­nos­tí a cien
Stojíte pred rozhodnutím o novom nástroji BI? Či už hľadáte náhradu za zastarané riešenie, ktoré neplní svoju funkciu a frustruje používateľov, alebo je to váš prvý výber, voľbu nástroja BI nie je vhodné podceniť. čítať »
 
Prog­ra­mu­je­me GPU / 18. časť
Pokračujeme v uvádzaní základných princípov shaderov použitých v našich vzorových aplikáciách. Zameriame sa na shader meniaci polohu vrcholov objektov a shader implementujúci tzv. Perlinov šum. čítať »
 
Kniž­né no­vin­ky
Veda vôbec nie je ťažká, ak používa správne prirovnania. Kniha Boeing v pavúčej sieti robí presne to a navyše zábavnou, ľahko zapamätateľnou formou. čítať »
 
Nas­ta­vo­va­nie pa­ra­met­rov ap­li­ká­cie / Vý­voj pre Win­dows 8
Unifikácia aplikácií pre Windows 8 sa prejavuje nielen v možnostiach vyhľadávania, ktoré bolo námetom predchádzajúcej časti, ale aj v nastavovaní parametrov na beh aplikácie. čítať »
 
Spring Fra­mework / 12. časť: Efek­tív­na tvor­ba ja­vov­ských (nie­len) web-ap­li­ká­cií
 V dnešnej časti nášho seriálu sa zameriame na zabezpečenie aplikácií pomocou frameworku Spring. čí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