Programujeme GPU / 21. časť

Poč­núc tou­to čas­ťou se­riá­lu sa bu­de­me neus­tá­le stre­tá­vať s tzv. fra­me­buf­fer ob­jek­tom (FBO) a s ním spo­je­ným tzv. off-screen ren­de­ro­va­ním. V pr­vom ra­de sa te­da mu­sí­me oboz­ná­miť s FBO a nás­led­ne opí­še­me pr­vý z na­šich sha­de­rov, kto­rý ten­to ob­jekt pou­ží­va - tzv. Depth Of Field sha­der.

FBO

Fra­me­buf­fer ob­jekt je v struč­nos­ti ob­jekt, do kto­ré­ho mô­že­me ren­de­ro­vať na­še scé­ny. Na­mies­to vý­stu­pu na ob­ra­zov­ku (screen) bu­de­me in­for­má­cie o frag­men­toch uk­la­dať do vy­hra­de­né­ho pa­mä­ťo­vé­ho mies­ta. To­to mies­to je pros­tred­níc­tvom ob­jek­tov textúr alo­ko­va­né po­čas príp­ra­vy FBO. Kom­plet­né in­for­má­cie o FBO, je­ho vlas­tnos­tiach, pra­vid­lách tvor­by a spô­so­boch pou­ži­tia mož­no naš­tu­do­vať z inter­ne­tu. Dô­le­ži­tý je fakt, že FBO ob­sa­hu­je nie­koľ­ko textúr, do kto­rých mož­no sme­ro­vať vý­stup z frag­ment sha­de­ra. Tým­to vý­stu­pom mô­žu byť prak­tic­ky ľu­bo­voľ­né úda­je. My bu­de­me FBO pou­ží­vať na uk­la­da­nie fa­rieb RGBA a hĺbok.

Z dô­vo­du pou­ží­va­nia FBO sme k zdro­jo­vé­mu kó­du na­šej ap­li­ká­cie dopl­ni­li sú­bo­ry com­mon/fbo.cpp a com­mon/fbo.h. Tie­to sú­bo­ry bu­de­me pos­tup­ne dopĺňať o fun­kcie po­ža­do­va­né na­ši­mi sha­der­mi. V prí­pa­de DoF sha­de­ra pou­ži­je­me dva FBO:

  1. FBO s jed­nou textú­rou na ulo­že­nie hĺbok a jed­nou textú­rou na ulo­že­nie fa­rieb (roz­me­ry to­tož­né s roz­mer­mi ok­na ap­li­ká­cie),
  2. FBO bez textú­ry na ulo­že­nie hĺbok, ale s tro­mi textú­ra­mi na ulo­že­nie fa­rieb (po­lo­vič­né roz­me­ry ok­na).

Na vy­kres­le­nie ob­sa­hu textúr pa­tria­cich FBO bu­de­me pou­ží­vať jed­no­du­chý štvo­ru­hol­ník s rov­na­ký­mi roz­mer­mi, aké má ok­no na­šej ap­li­ká­cie.

Depth Of Field (DoF) sha­der

Ten­to sha­der je je­den z má­la mo­der­ných sha­de­rov, kto­ré ma­jú vý­raz­ný vplyv na gra­fic­ký vzhľad ren­de­ro­va­ných scén. Sha­der sa sna­ží na­po­dob­niť za­os­tro­va­nie či už ľud­ské­ho oka, ale­bo op­tic­kých prís­tro­jov na ob­jek­ty na­chá­dza­jú­ce sa v oh­nis­ku šo­šo­viek (lens). Tá časť scé­ny, kto­rá le­ží v oh­nis­ku, je zob­ra­ze­ná os­tro, ale os­tat­né čas­ti sú ro­zos­tre­né. Ten­to efekt má nes­mier­ny vplyv na reál­nosť zob­ra­zo­va­ných scén.

Efekt DoF reali­zu­je­me v pia­tich kro­koch s pos­tup­ným vy­uži­tím pia­tich nav­zá­jom spo­lup­ra­cu­jú­cich sha­de­rov:

  1. vy­kres­le­nie scé­ny do textú­ry 1. FBO so sú­čas­ným vý­poč­tom a ulo­že­ním úda­ja o ro­zos­tre­ní (blur) tých čas­tí scé­ny, kto­ré sa ne­na­chá­dza­jú v oh­nis­ku šo­šov­ky ka­me­ry, na­mies­to vý­cho­dis­ko­vé­ho vzťa­hu na vý­po­čet prie­me­ru tzv. CoC - Circ­le of Con­fu­sion (kruh sply­nu­tia) pou­ží­va­me nas­le­du­jú­ci vzo­rec, up­ra­ve­ný pre pot­re­by na­šej ap­li­ká­cie:

obr1 copy.jpg

Obr. 1  glsl v2.3 – Sha­dow sha­der

mie­ra_ro­zos­tre­nia = abs( -Z_vzdia­le­nosť_vr­cho­lu - oh­nis­ko­vá_vzdia­le­nosť ) / vzdia­le­nosť_maximál­ne­ho_ro­zos­tre­nia
  1. vy­kres­le­nie ob­sa­hu textú­ry 1. FBO do 1. textú­ry 2. FBO s po­lo­vič­ný­mi roz­mer­mi ok­na (downsam­pling),
  2. vy­kres­le­nie ob­sa­hu 1. textú­ry 2. FBO do 2. textú­ry 2. FBO s ap­li­ká­ciou tzv. Gaus­sov­ho filtra v sme­re osi X,
  3. vy­kres­le­nie ob­sa­hu 2. textú­ry 2. FBO do 3. textú­ry 2. FBO s ap­li­ká­ciou Gaus­sov­ho filtra v sme­re osi Y,
  4. „zmie­ša­nie" (mix) ob­sa­hu textú­ry 1. FBO s 3. textú­rou 2. FBO a vy­kres­le­nie vý­sled­ku zmie­ša­nia do fra­me­buf­fe­ra alo­ko­va­né­ho ap­li­ká­ciou.

Zdroj: IW 4/2013



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Prá­ca s do­ku­men­tmi Of­fi­ce na iných plat­for­mách
Aplikácie Office sú k dispozícii pre platformy Windows a Mac OS, pričom si môžete nainštalovať buď škatuľový Office, alebo lokálnu inštaláciu v rámci licencie Office 365. čítať »
 
Vir­tua­li­zá­cia sie­te bu­de ďal­šia fá­za
Pojem virtualizácia je dnes na poli IT veľmi rozšírený, ale veľmi všeobecný. Virtualizácia sa rozšírila primárne s virtualizáciou serverov, nasledovala virtualizácia aplikácií a v posledných rokoch sa úspešne rozširuje virtualizácia desktopov. čítať »
 
Kon­so­li­dá­cia mô­že zní­žiť pre­vádz­ko­vé nák­la­dy až o 20 %
IT konsolidácia sa stala jedným z najrozšírenejších trendov v IT biznise a jej cieľom je zabezpečiť pružnejšie, efektívnejšie a ucelenejšie IT s nižšími prevádzkovými nákladmi, ako boli doposiaľ. Je však toto tvrdenie pravdivé? čítať »
 
BYOD: Reál­ne mož­nos­ti na­sa­de­nia na Slo­ven­sku
Mobilita sa už reálne stala novým fenoménom, čo potvrdzujú aj čísla analytikov. Ľudia využívajú v súčasnosti na svoju prácu a v súkromí až tri výpočtové zariadenia súčasne. Až 50 % zamestnancov pracuje z domu alebo z viacerých lokalít. čítať »
 
Zdie­ľa­nie zdro­jov me­dzi OS Win­dows a OS Li­nux / 10.
V tomto článku budeme pokračovať v opise špecifického spôsobu pripojenia smartfónu k PC pomocou ad hoc siete Wi-Fi. Zameriame sa na postup aktivácie rootovania. čítať »
 
Uk­la­da­nie úda­jov po­čas ži­vot­né­ho cyk­lu ap­li­ká­cie
Na úvod pripomenieme, že aplikácia Windows 8 sa môže nachádzať v troch stavoch, úmyselne ich uvádzame v originálnej terminológii: Running, Suspended a NotRunning. Používateľovi sa tento životný cyklus navonok javí takto: Systém pozastaví aplikáciu, kedykoľvek sa používateľ prepne na inú aplikáciu alebo na plochu. čítať »
 
Prog­ra­mu­je­me GPU / 21. časť
Počnúc touto časťou seriálu sa budeme neustále stretávať s tzv. framebuffer objektom (FBO) a s ním spojeným tzv. off-screen renderovaním. V prvom rade sa teda musíme oboznámiť s FBO a následne opíšeme prvý z našich shaderov, ktorý tento objekt používa - tzv. Depth Of Field shader. čítať »
 
Poh­ľad do sve­ta ino­vá­cií na Tech­Days 2013
IT seminárov a konferencií vznikajú na Slovensku desiatky. Máloktorá z nich je však naozaj miestom, kde by sa stretla taká široká IT komunita z celého Slovenska, ako to bolo práve na roadshow TechDays 2013, ktorá sa tento rok konala v druhej polovici marca v Košiciach, Žiline a Bratislave. čí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