Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1
Wstęp
Czasy,wktórychprogramybyłypisanenajczęściejpodkątemwykorzystaniaza-
sobówobliczeniowychcentralnegoprocesoraCPU(ang.centralprocessingunit),
właśniesięskończyły.DzisiajnietylkokomputeryosobisteklasyPClubMac,lecz
takżetabletyismartfonyopróczukładuCPUmająpotężnąjednostkęobliczenio-
wąGPU(ang.graphicsprocessingunit).Corazpowszechniejszastajesięwiedza
otym,jakwykorzystaćmocdrzemiącąwtychukładach,tymbardziej,żeżyjemy
wświecie,wktórymjestważnanietylkosamainformacjaijejprzetwarzanie,
lecztakżejejwizualizacja.AwtejdziedzinieakuratGPUsprawdzasięnadwyraz
dobrze,zwłaszczagdyproblemdotyczywizualizacji3D.
JeszczenapoczątkuXXIwiekuukładytebyłystosunkowowolneiograniczone
programistycznie.Renderowaniefotorealistycznychscenwczasierzeczywistym
znajdowałosięjedyniewsferzegłębokichmarzeńprogramistóworazartystów
tworzącychwizualizacje.Wgrachkomputerowych,produkowanychwtamtym
okresierozwojutechnologii3D,trudnobyłouzyskaćbardziejzaawansowaneefek-
tywizualne,nawetoświetlenieicieniebyłynajczęściejstatyczne,realizowaneprzy
użyciuinformacjiwypalanychbezpośrednionateksturach.Możliwościudostępnia-
neprzezAPIbibliotekgraficznychiarchitekturęukładówGPUztamtegookresu
byłymocnoograniczoneidałosiętoodczućszczególniewbranżytworzeniagier
wideo.Naszczęściepostęptechnologicznyrozwiązałzczasemkwestięwydajno-
ści,aprogramistomdałwiększąswobodędziałania.Zaczęłypojawiaćsięshadery,
dziękiktórymprogramiścimogliprzejśćzmocnoograniczonegokonfigurowania
pracyGPUzapośrednictwemAPInabardziejbezpośrednikontaktzukładem,
programująccałydostępnypotokrenderującywedługuznania.Liczbadostępnych
shaderówstopnioworosła.Doczekaliśmysięteżrewolucji,jakąbyłozastosowanie
układugraficznegodoGPGPU(ang.GeneralpurposecomputingonGPU),które
zostałoudostępnionewpostaciCUDAprzezfirmęNvidiaczyOpenCLprzezfirmę
Apple(dzisiajopiekęnadrozwojemOpenCL,podobniejakOpenGL,sprawuje
grupaKhronos).Natakąotwartośćprogramistycznąakceleratorówgraficznych,
zbliżonądoCPU,czekałowieleosób.WkońcuzawitałaonarównieżdoOpenGL
podpostaciąshaderaobliczeniowego(ang.computeshader).Niedostarczaon
możetakichmożliwości,jakiemająCUDAczyOpenCL,jednakpozwalanaprostą