Shader: razlika između inačica

Izvor: Wikipedija
Izbrisani sadržaj Dodani sadržaj
m Uklonjena promjena suradnika BarrelRoll, vraćeno na zadnju inačicu suradnika TolaPosusje
Melt (razgovor | doprinosi)
Nema sažetka uređivanja
Redak 22: Redak 22:
Svaka nova verzija [[DirectX]]-a donosi povećan broj instrukcija koje dozvoljava trenutna verzija API-a, tako povećavajući slobodu i prostor programerima da urade što više efekata.
Svaka nova verzija [[DirectX]]-a donosi povećan broj instrukcija koje dozvoljava trenutna verzija API-a, tako povećavajući slobodu i prostor programerima da urade što više efekata.
Shaderi su se počeli upotrebljavat krajem 90-tih sa [[id tech 3 engine]], a sredinom 2004. godine doživljeli puni procvat i potpunu upotrebu sa igrama kao što su [[Far Cry]], Doom 3 i sl.
Shaderi su se počeli upotrebljavat krajem 90-tih sa [[id tech 3 engine]], a sredinom 2004. godine doživljeli puni procvat i potpunu upotrebu sa igrama kao što su [[Far Cry]], Doom 3 i sl.

== Kronologija razvoja Shadera ==
==='''1990.'''===
Do sredine 1980-tih su PC igre bile ograničene na dvije dimenzije. Jedna uobičajena rezolucija tada je bila 640x350 - najviše 224.000 grubih 2D kockica (piksela) je bilo predviđeno za prikazivanje svijeta, likova i elemenata funkcionalnih radnji (jedan 22" TFT ima 1,764 milijuna piksela). Ali već od 1970-tih godina su na sveučilištima bila dva koncepta za virtualne 3D svijetove: Rasterizacija ([[engleski|eng.]] Rasterisation) i Raytracing. Rasterizacija pokušava sa što manjim opsegom računanja prikazati što stvarnije približavanje stvarnom svijetu, Raytracing prati više fizičke okolnosti na našem planetu i zbog toga je precizniji, ali je danas za programe u stvarnom vremenu ([[engleski|eng.]] Realtime) kao PC igre prespor. [[PC]] ulazi napokon 1997. godine sa svemirskom igrom '''Elite''' u 3. dimenziju. Jedna šaka [[Mnogokut|poligona]] morala je biti dovoljna, više hardver nije mogao odraditi. U toku godina su u početku goli poligoni počeli biti lijepljeni za [[Tekstura|teksturama]] i tako su dobivali više detalja. Do 1996. morali smo se strpjeti, dok je id Software sa [[Quake]] izdao prvu kompletno u 3D računajuću igru. U tom razdoblju na popularnosti je dobio 3D ubrzivač imenom Voodoo. Četiri godine kasnije je sa Geforce 2 izašla zadnja hardver generacija ove 3D ere, prije nego što Nvidia godinu dana kasnije sa Geforce 3 i njenom Shader tehnologijom otvara novo doba programiranih grafičkih čipova.

==='''2000.'''===
U današnjem Shader vremenu nestaju granice između [[Procesor|CPU]] i [[Grafička kartica|grafičke kartice]] kao i Rasterizacije i Raytracinga. Od vremena DirectX 8 i Geforce 3, grafičke kartice nesavladavaju samo funkcije koje su programirane unaprijed (kao npr. zalijepiti jednu teksturu na jedan poligon), nego one mogu sa svojim Shader procesorima izvršavati kompleksne programe. 2002. je to [[Morrowind]] radio, kako bi za one vrijeme prikazao impresivne refleksije vode (vidi "Shader vremeplov). No još je tada DirectX 8 jako kočio programere. DirectX 9 (Radeon HD 9800, Geforce FX) je bio napokon toliko fleksibilan, da se naprosto svaki zamisljivi računarski podhvat na shaderima mogao poduzeti. Jedino maksimalna moguća snaga računanja je ograničavala slobodni prostor programerima igara. Mnoge moderne efekte programeri ostvaruju putem Shadera, svejedno bilo to fizika, Tezelacija ([[engleski|eng.]]Tesselation), Parallax Occlusion Mapping, ili Post-Processing. Mnogo ovih efekata su u najboljem slučaju samo približavanje stvarnom svijetu. To su trikovi, kako bi se kod civilnog procesa računanja dobila optički spektakularna 3D grafika. Parallax Occlusion Mapping npr. je prvi put nastupio na scenu u [[Tom Clancy's Splinter Cell|Splinter Cell: kaos teoriji]] i prikazuje cigle na zidovima i slične strukture u plastičnom svijetlu. Kada se jedan tako teksturiran zid pod jednim jako ravnim kutom promatra, trik se sam otkriva: na kraju se se radi samo o jednoj ravnoj teksturi, dakle o jednoj foto tapeti. Sa dolazećim DirecX 11 i njegovom podporom za tehniku tezelacije, moguće je svaku ciglu efiktivno iz poligona modelirati. Moderne grafičke kartice rade toliko brzo da neki Shader programi koriste čak i podjednostavljene Raytracing algoritme (Raycasting). Često pri kontroli vidljivih objekata ili približavanju uvjerljivom globalnom osvjetljenju.

== Shader vremeplov ==

*2002: '''TES 3 Morrowind'''
[[Datoteka:Gamescrn_morrowind_03-B.jpg|mini|left|100px|]]
Sa [[DirectX]] 8 i [[Geforce]] 3 počelo je doba programiranih grafičkih čipova. [[Morrowind]] je kao prva igra koristila nove Shader jedinice i pokazivala reflektirajuće površine vode.








*2004: '''Doom 3'''
[[Datoteka:Doom 3 shader.jpg|mini|left|100px|]]
Programer John Carmack upotrijebio je za Remake prvog [[Doom]] dijela intenzivne igre sijena. Mnogo DirectX 9 grafičkih kartica je ovo teško podnijelo.








*2004: '''Far Cry'''
[[Datoteka:FarCry HDR.jpg|mini|left|100px|]]
[[Far_Cry|Far Cry]], džungla pucačina iz Njemačke po prvi put prikazuje ogromne vanjske površine sa gustom vegetacijom. Sa zakrpom 1.3 Crytek nadograđuje '''High Dynamic Range''' osvjetljenje, što okolinu prikazuje još stvarnije.








*2004: '''Half-Life 2'''
[[Datoteka:Half-Life 2.jpg|mini|left|100px|]]
Isto u 2004. godini Valve isporučuje Half-Life 2 u trgovine. Tehnički novo i vrlo dobro napravljeno su bile jasno vidljive grimase i emocije likova u igri, što im je ulijevalo više života i činilo ih stvarnijim. Istotako sinkronizacija usana likova sa audio govorom je uspješno odrađena.







*2007: '''Crysis'''
[[Datoteka:Crysis vegetation.jpg|mini|left|100px|]]
Crysis je do danas PC igra koja ima najljepšu grafiku i najveće tehničke zahtjeve. Engine savladava sve tehničke igrarije, pogotovo do sada neviđen prikaz [[Vegetacija|vegetacije]].







*2009: '''Colin McRae: Dirt 2'''
[[Datoteka:Colin McRae DIRT2.jpg|mini|left|100px|]]
Ova igra juri Codemasters u sljedeću tehnik generaciju: Colin McRae Dirt 2 treba kao prvo igra uopće podržavati '''DirectX 11'''.









[[Kategorija:Programska podrška]]
[[Kategorija:Programska podrška]]
[[Kategorija:Računalna grafika]]
[[Kategorija:Računalna grafika]]

Inačica od 15. srpnja 2010. u 17:20

Shader je program koji zamjenjuje određene stadije u Fixed Function Pipelineu i omogućava definiranje svakog izvršenog pixela/vertexa/poligona. Doslovan prijevod shadera bio bi "sjenčar".

Podjela Shadera

U DirectX postoje 3 vrste shadera: Pixel Shader (često zvan Fragment Shader u OpenGLu), Vertex Shader, Geometry Shader.


Piksel Shader je vrsta programbilnog shadera koji zamjenjuje određene stadije u pipelineu i utječe na konačnu boju na ekranu. Pixel Shader se izvršava direktno na GPU, a od DX9 verzije programiranje istog se vrši kroz High Level Shading Language. Kroz Pixel Shader se najčešće dobiva efekt Bump Mappinga, Normal Mapping, te Parallax Mapinga. Također Pixel Shader se koristi za dobivanje efekta dinamične vode.

Vertex Shader je vrsta programbilnog shadera koji zamjenjuje određene stadije u pipelineu i utječe na transformacije i upravlja koordinatama tekstura. Kao i Pixel Shader, Vertex Shader se izvršava na GPU ali prije Pixel Shadera. Programiranje istog također se radi najčešće u HLSL. Vertex Shader upravlja svojstvima kao što su koordinate tekstura, transformacije, pozicije i sl. ali nemogu kreirati nove vertexe.

Geometry Shader je vrsta programbilnog shadera koji zamjenjuje određene stadije u pipeline i omogućuje stvaranje/odbacivanje novih primitiva. Također se izvršava na GPU i programira se u HLSL.

Pisanje Shadera

Dolaskom DirectX 10 API-a u potpunosti je uklonjen Fixed Function Pipeline, što znači ukoliko želili te isprogramirati i najobičnij trokut morate pisati za njega shader program. Sa DX9 verzijom uveden je High Level Shading Language (no još uvjek podržava FF Pipeline), programski jezik u kojem se obavlja programiranje shadera, zamjenjujući asemmbler u kojem se obavljalo programiranje shadera u prethodnoj verzij DirectX-a (DX8). Danas svaka igra na tržištu koristi kompleksne kombinacije shadera kako bi prikazala napredne efekte pomoću dočaravanja vode, simulacije ljudskog lica , prikazivanja naprednih efekata osvjetljenja, i sl. Svaka nova verzija DirectX-a donosi povećan broj instrukcija koje dozvoljava trenutna verzija API-a, tako povećavajući slobodu i prostor programerima da urade što više efekata. Shaderi su se počeli upotrebljavat krajem 90-tih sa id tech 3 engine, a sredinom 2004. godine doživljeli puni procvat i potpunu upotrebu sa igrama kao što su Far Cry, Doom 3 i sl.

Kronologija razvoja Shadera

1990.

Do sredine 1980-tih su PC igre bile ograničene na dvije dimenzije. Jedna uobičajena rezolucija tada je bila 640x350 - najviše 224.000 grubih 2D kockica (piksela) je bilo predviđeno za prikazivanje svijeta, likova i elemenata funkcionalnih radnji (jedan 22" TFT ima 1,764 milijuna piksela). Ali već od 1970-tih godina su na sveučilištima bila dva koncepta za virtualne 3D svijetove: Rasterizacija (eng. Rasterisation) i Raytracing. Rasterizacija pokušava sa što manjim opsegom računanja prikazati što stvarnije približavanje stvarnom svijetu, Raytracing prati više fizičke okolnosti na našem planetu i zbog toga je precizniji, ali je danas za programe u stvarnom vremenu (eng. Realtime) kao PC igre prespor. PC ulazi napokon 1997. godine sa svemirskom igrom Elite u 3. dimenziju. Jedna šaka poligona morala je biti dovoljna, više hardver nije mogao odraditi. U toku godina su u početku goli poligoni počeli biti lijepljeni za teksturama i tako su dobivali više detalja. Do 1996. morali smo se strpjeti, dok je id Software sa Quake izdao prvu kompletno u 3D računajuću igru. U tom razdoblju na popularnosti je dobio 3D ubrzivač imenom Voodoo. Četiri godine kasnije je sa Geforce 2 izašla zadnja hardver generacija ove 3D ere, prije nego što Nvidia godinu dana kasnije sa Geforce 3 i njenom Shader tehnologijom otvara novo doba programiranih grafičkih čipova.

2000.

U današnjem Shader vremenu nestaju granice između CPU i grafičke kartice kao i Rasterizacije i Raytracinga. Od vremena DirectX 8 i Geforce 3, grafičke kartice nesavladavaju samo funkcije koje su programirane unaprijed (kao npr. zalijepiti jednu teksturu na jedan poligon), nego one mogu sa svojim Shader procesorima izvršavati kompleksne programe. 2002. je to Morrowind radio, kako bi za one vrijeme prikazao impresivne refleksije vode (vidi "Shader vremeplov). No još je tada DirectX 8 jako kočio programere. DirectX 9 (Radeon HD 9800, Geforce FX) je bio napokon toliko fleksibilan, da se naprosto svaki zamisljivi računarski podhvat na shaderima mogao poduzeti. Jedino maksimalna moguća snaga računanja je ograničavala slobodni prostor programerima igara. Mnoge moderne efekte programeri ostvaruju putem Shadera, svejedno bilo to fizika, Tezelacija (eng.Tesselation), Parallax Occlusion Mapping, ili Post-Processing. Mnogo ovih efekata su u najboljem slučaju samo približavanje stvarnom svijetu. To su trikovi, kako bi se kod civilnog procesa računanja dobila optički spektakularna 3D grafika. Parallax Occlusion Mapping npr. je prvi put nastupio na scenu u Splinter Cell: kaos teoriji i prikazuje cigle na zidovima i slične strukture u plastičnom svijetlu. Kada se jedan tako teksturiran zid pod jednim jako ravnim kutom promatra, trik se sam otkriva: na kraju se se radi samo o jednoj ravnoj teksturi, dakle o jednoj foto tapeti. Sa dolazećim DirecX 11 i njegovom podporom za tehniku tezelacije, moguće je svaku ciglu efiktivno iz poligona modelirati. Moderne grafičke kartice rade toliko brzo da neki Shader programi koriste čak i podjednostavljene Raytracing algoritme (Raycasting). Često pri kontroli vidljivih objekata ili približavanju uvjerljivom globalnom osvjetljenju.

Shader vremeplov

  • 2002: TES 3 Morrowind
Datoteka:Gamescrn morrowind 03-B.jpg

Sa DirectX 8 i Geforce 3 počelo je doba programiranih grafičkih čipova. Morrowind je kao prva igra koristila nove Shader jedinice i pokazivala reflektirajuće površine vode.





  • 2004: Doom 3
Datoteka:Doom 3 shader.jpg

Programer John Carmack upotrijebio je za Remake prvog Doom dijela intenzivne igre sijena. Mnogo DirectX 9 grafičkih kartica je ovo teško podnijelo.





  • 2004: Far Cry
Datoteka:FarCry HDR.jpg

Far Cry, džungla pucačina iz Njemačke po prvi put prikazuje ogromne vanjske površine sa gustom vegetacijom. Sa zakrpom 1.3 Crytek nadograđuje High Dynamic Range osvjetljenje, što okolinu prikazuje još stvarnije.





  • 2004: Half-Life 2
Datoteka:Half-Life 2.jpg

Isto u 2004. godini Valve isporučuje Half-Life 2 u trgovine. Tehnički novo i vrlo dobro napravljeno su bile jasno vidljive grimase i emocije likova u igri, što im je ulijevalo više života i činilo ih stvarnijim. Istotako sinkronizacija usana likova sa audio govorom je uspješno odrađena.




  • 2007: Crysis
Datoteka:Crysis vegetation.jpg

Crysis je do danas PC igra koja ima najljepšu grafiku i najveće tehničke zahtjeve. Engine savladava sve tehničke igrarije, pogotovo do sada neviđen prikaz vegetacije.




  • 2009: Colin McRae: Dirt 2
Datoteka:Colin McRae DIRT2.jpg

Ova igra juri Codemasters u sljedeću tehnik generaciju: Colin McRae Dirt 2 treba kao prvo igra uopće podržavati DirectX 11.