Programujeme GPU / 19. časť

V tej­to čas­ti se­riá­lu sa bliž­šie po­zrie­me na pos­led­ný z „jed­no­du­chých" sha­de­rov, kto­rý pou­ží­va tzv. nor­má­lo­vé ma­py. Za­me­ria­me sa na de­tai­ly, a to naj­mä pre­to, aby sme si čo naj­viac prib­lí­ži­li fun­kcio­na­li­tu vzo­ro­vej ap­li­ká­cie a nes­kôr sa moh­li ve­no­vať „zlo­ži­tej­ším" sha­de­rom.

Sha­der nor­má­lo­vá ma­pa - glsl v1.7

Sha­der prog­ram na­čí­ta­va­me v rám­ci fun­kcie OGL_ini­tia­li­ze() mo­du­lu Inter­fa­ce. Pri tom nám po­má­ha kód umies­tne­ný do sú­bo­ru sha­der.cpp (sha­der.h). Jed­not­li­vé sha­de­ry sú po ich nah­ra­tí pre­kom­pi­lo­va­né a zlin­ko­va­né do sha­der prog­ra­mu. Al­go­rit­mus fun­kcie CSha­der::load() sme po­čas príp­ra­vy no­vých ver­zií ap­li­ká­cie tak­mer ne­me­ni­li.

V rám­ci fun­kcie CIn­ter­fa­ce::OGL_ini­tia­li­ze() sa k sha­de­ru pri­po­ja at­ri­bú­ty vr­cho­lov ob­jek­tov a uni­form pre­men­né (textú­ro­va­cia jed­not­ka pre zá­klad­nú textú­ru a nor­má­lo­vú ma­pu, pro­jek­čná ma­ti­ca OpenGL).

Vy­kres­le­nie ob­sa­hu scé­ny s pou­ži­tím kon­krét­ne­ho sha­de­ra je rie­še­né vo fun­kcii CIn­ter­fa­ce::OGL_draw(). Na za­čiat­ku sa vy­ma­žú pot­reb­né zá­sob­ní­ky, prip­ra­ví ma­ti­ca OpenGL mo­del­view a up­ra­ví po­lo­ha sve­tel­né­ho zdro­ja. Nas­le­du­je pri­po­je­nie textúr a vy­kres­le­nie ob­jek­tov s pou­ži­tím sha­de­ra. Na kon­ci fun­kcie je vy­kres­ľo­va­ný ob­jekt pred­sta­vu­jú­ci sve­tel­ný zdroj a in­for­mač­ný pa­nel s tla­čid­la­mi.

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

Pries­tor TAN­GENT (tan­gent-spa­ce)

Za fun­kčnosť efek­tu nor­mal­map je zod­po­ved­ný tzv. pries­tor TAN­GENT. Ide o pries­tor, v kto­rom sú de­fi­no­va­né tzv. tan­gen­ty, bi­tan­gen­ty a nor­má­ly (TBN). Na pod­rob­ný opis pou­ži­tia tan­gent-spa­ce ne­má­me pries­tor, pre­to uve­die­me iba naj­zák­lad­nej­šie pra­vid­lo: Na ko­rek­tné pou­ži­tie tan­gent-spa­ce je ne­vyh­nut­né, aby sa všet­ky ope­rá­cie vy­ko­na­li prá­ve v tom­to pries­to­re. Na zá­kla­de to­ho v rám­ci ver­tex sha­de­ra ná­so­bí­me jed­not­li­vé zlož­ky vek­to­ra sme­ru­jú­ce­ho z po­lo­hy vr­cho­lu do po­lo­hy sve­tel­né­ho zdro­ja TBN vek­tor­mi.

Nor­má­lo­vé ma­py

Tie­to špe­ciál­ne textú­ry na­mies­to jed­not­li­vých zlo­žiek far­by uk­la­da­jú nor­má­ly v bo­doch na­chá­dza­jú­cich sa na povr­chu ob­jek­tov. Pre­to­že ich smer nie je kon­štant­ný, ale pris­pô­so­bu­je sa far­bám (fa­reb­ným pre­cho­dom), do­chá­dza k si­mu­lá­cii ne­rov­nos­tí povr­chu. Je sa­moz­rej­mé, že povrch ob­jek­tu nie je mo­di­fi­ko­va­ný a pri sú­bež­nom poh­ľa­de naň sa efekt nor­mal­map strá­ca. Pri kol­mom poh­ľa­de je však ten­to efekt vý­raz­nej­ší a v ko­neč­nom dôs­led­ku ním do­ká­že­me zvý­šiť reál­nosť vy­kres­ľo­va­ných scén.

Jed­not­li­vé zlož­ky nor­má­lo­vých vek­to­rov ulo­že­ných v nor­má­lo­vých ma­pách na­do­bú­da­jú hod­no­ty z inter­va­lu <0;1>. Na ich pre­vod do inter­va­lu <-1;1> pou­ží­va­me vzo­rec v1 = v0 * 2 - 1 (vý­ber nor­má­ly z nor­má­lo­vej ma­py v rám­ci frag­ment sha­de­ra).

Na­ko­niec nám zos­tá­va po­mo­cou ska­lár­ne­ho sú­či­nu nor­má­ly a uve­de­né­ho vek­to­ra (v tan­gent-spa­ce) sta­no­viť in­ten­zi­tu di­fúz­ne­ho kom­po­nen­tu os­vet­le­nia.

Príl­ohou tej­to čas­ti se­riá­lu je vzo­ro­vý prík­lad glsl v2.1 im­ple­men­tu­jú­ci tzv. High Dy­na­mic Ran­ge sha­der. Ide o sha­der, kto­rý ma­nuál­ne preexpo­nu­je os­vet­le­né čas­ti scé­ny.

Zdroj: IW 1-2/2013



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Kto­ré spo­loč­nos­ti by ma­li zvá­žiť pre­chod na cloud?
Z povahy cloudu je zrejmé, že zatiaľ čo pre niektoré spoločnosti sa môže tento model používania IT zdať vhodnejší, iné podniky nemusia byť schopné využiť celý jeho potenciál a prechod do cloudu možno neprinesie želané výsledky. čítať »
 
Ako na ria­de­nie a zni­žo­va­nie te­le­ko­mu­ni­kač­ných nák­la­dov
Podľa analytikov spoločnosti Gartner telekomunikačné náklady skonzumujú 2 až 4 % celkových výnosov firmy. čítať »
 
Osob­ný cloud nah­ra­dí osob­né po­čí­ta­če
Podľa analytikov agentúry Gartner nahradí v roku 2014 tzv. osobný cloud tradičné osobné počítače ako hlavné centrum digitálneho života používateľov. Koniec „vlády" osobných počítačov sa tak podľa Gartneru definitívne blíži. čítať »
 
Ako na vlas­tné ap­li­ká­cie Win­dows 8 v pod­ni­ku
Spôsob práce sa v priebehu posledných rokov výrazne zmenil. Na to musia reagovať aj nové aplikácie, určené pre nové typy klientskych zariadení, hlavne pre tablety. čítať »
 
Kon­zul­tač­né služ­by v IT
Firmy sa snažia neustále modernizovať a posilniť tak svoju pozíciu pri súťažení na globálnych trhoch. Investujú do nových sľubných informačných technológií, najmä cloudových, analytických, mobilných a sociálnych. čítať »
 
Ako na vy­ššiu kva­li­tu a prís­tup­nosť webov štát­nej sprá­vy?
O kvalite webových stránok štátnej či verejnej správy a samospráv sa v médiách sporadicky vedú búrlivé diskusie. Takmer vždy to súvisí najmä s rôznymi kauzami, ktorými je tvorba webov v réžii štátu či samosprávy často poznačená. čítať »
 
Mož­nos­ti la­de­nia
Ak máte k dispozícii zariadenie na platforme x86/x64, máte vo väčšine prípadov všetky predpoklady na vývoj aplikácií splnené v jednom zariadení. Ako príklad takéhoto zariadenia uvádzame tablet Microsoft Surface Pro na báze architektúry x86. čítať »
 
Prog­ra­mu­je­me GPU / 19. časť
V tejto časti seriálu sa bližšie pozrieme na posledný z „jednoduchých" shaderov, ktorý používa tzv. normálové mapy. Zameriame sa na detaily, a to najmä preto, aby sme si čo najviac priblížili funkcionalitu vzorovej aplikácie a neskôr sa mohli venovať „zložitejším" shaderom. čí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