U ponedeljak 17. Jula u Krovu održaću radionicu programiranja OpenGl shader-a.
“Šejderi” su programi koji se izvršavaju na grafičkoj jedinici (GPU) i omogućavaju efikasno kreiranje slike. Sve moderne igrice koriste šejdere kao osnovu renderovanja.
OpenGl Shading Language (GLSL) je jezik za programiranje šejdera, i najpopularniji je jezik za ovu vrstu programiranja. Sintaksa jezika liči na sintaksu C jezika (ali za razliku od C jezika nema pokazivače, niti bilo kakvo napredno upravljanje memorijom itd…). Svi koji imaju iskustva sa programiranjem (C, Python, JS, …) lako će se snaći u GLSL-u.
Karakteristično za programiranje šejdera je velika upotreba naprednijih matematičkih koncepata, ali u ovom predavanju će količina matematike biti svedena na apsolutni minimum. Ipak, dobro je da se poznaju neke osnove analitičke geometrije (ovaj video je sasvim dovoljan uvod).
Na ovoj radionici neće biti prikazano “tradicionalno” OpenGl programiranje (pošto se o tome može govoriti danima), već nešto mnogo jednostavnije (i po meni zanimljivije). Osim GLSL-a, nećemo pisati drugi jezik (npr. C++ koji se često koristi paralelno sa GLSL-om), niti ćemo pisati vertex i geometry šejdere. Pisaćemo samo fragment šejdere, i pokušaćemo da kroz fragment šejder implementiramo raymarching algoritam. Za programiranje šejdera koristićemo ovaj editor.
Neke zanimljive primere onoga što je moguće postići samo sa fragment šejderom, možete videti u ovoj galeriji. Naravno, mi ćemo napraviti nešto skromnije.
Radionica će trajati maksimalno dva sata. Sve što vam je potrebno je laptop sa pristupom za internet, i pretraživačem koji podržava gore linkovani šejder editor
Ako vidite poruku It does not appear your computer can support WebGL u gornjem desnom uglu, to znači da vaš pretraživač iz nekog razloga ne podržava WebGl (verovatno zbog drajvera). Probajte da otvorite stranicu stranicu sa drugim pretraživačem, npr. Firefox-om ako koristite Chrome. Svi moderni pretraživači bi trebalo da rade bez problema, ali se na Linux sistemima sa Nvidia grafikom ponekad dođe do problema.
Ako vas je prethodni opis zaplašio, ne brinite. Cilj radionice je da se pre svega zabavimo.
da ali bas to se trazi u gameing-IDEs. Nemas mozda u kombinaciji Unril ili Juniti (Unreal or Unity3d) za vertex i geometry sejderima neki tutorial za radionicu takvu ?
Pa dobro, najcesce u Decentrali nemamo ono sto industrija trazi nego sto je nama zanimljivo. Ali naravno nesto sto nekom nije, nekom drugom moze biti zanimljivo.
Aha, mislio sam da moze kao i fragmentni da bude jednostavno. Kontam da su vise za ubacivanje nekih modela itd. U svakom slucaju jako mi je drago da ce biit nesto ovaok vizualno pokazano
Iskreno, ne petljam se sa ostalim šejderima (pisao sam ranije verteks šejdere). Razlog tome je što su fragment šejderi dovoljni za ono što mene interesuje.
Problem sa ovakvim predavanjem je što nameštanje OpenGl pipeline sa barem dva šejdera, zahteva berem 50 linija čistog boilerplate koda. Mislim da nikome nije to interesantno. U 50 linija fragment šejdera možeš čuda da napraviš. Evo nešto što ćemo mi napraviti na radionici (možda nećemo sve detalje da stignemo):
Navedeni kod možete da kopipejstujete u editor kojeg ćemo koristiti. Napraviti ovakvu neku scenu sa klasičnim pipline-om zahteva (barem) duplo više koda.
An introduction to Shader Art Coding - uvodni klip u programiranje šejdera. Namenjen u potpunosti za početnike. Obrađuje se samo 2D grafika. Svima preporučujem da pogledaju ovo.
Sajt Inigio Quilez-a, na kom možete naći mnogo informacija o programiranju šejdera. Sajt nije pogodan za potpune početnike. Takođe, Quilez je autor sajta Shadertoy na kom možete naći mnoge šejdere koje su drugi autori napravili. Sahder Toy koristi editor koji je sličan onom kom smo mi danas koristili, ali postoje neke male razlike (npr. u imenu nekih promenljivih).
Kao što smo pričali, možemo za mesec dana da održimo radionicu na sličnu temu. Do tada bih jako voleo da vidim vaše šejdere u ovoj temi.