HLSL

High Level Shading Language je jezik koji je razvila Microsoft korporacija za potrebe DirectX-a. Osnovna funkcionalnost HLSL-a je da se C program može isprogramirati sjencanja za Direct3D cjevovod.

Prvi HLSL stvoren je kao podrska DirectX p kako bi se na laksi nacin izprogramirao 3D cjevovod. Obicni 3D cjevovod se moze definirati sa pozivanjem funkcija.

HLSL nastao je kao nasljednik GLSL-a jezika. On je zapravo odgovor Microsofta na njegovo postojanje. Ono sto je vazno sto se danas mogu razvijati razne grafike u ovome jeziku. Takodjer razvojem ovog jezika Microsoft je postigao da grafike koje se rade u ovom jeziku postaju puno brze nego sto su to prije bile. Razlog tome je što se moze maksimalno iskorisiti snaga grafickog procesora.

Danas HLSL dolazi u pet mogucih oblika.

  • Pixel Shader
  • Vertex Shader
  • Geometry Shader
  • Compute Shader
  • Tesselation Shader

"Vertex Shader" se izvršava svaki put kad se izvrsava Vertex u aplikaciji. Glavna odgovornost koju ima jest pretvaranje prostora objekta u vidljivi prostor na nacin da generira koordinate tekstura te preracunava koeficijent svjetlosti kao što je tangens kuta. Kad grupa duzina prodje kroz Vertex Shader, ovdje se pod grupu duzina misli tocno na tri duzine koje cine jedan trokut, njihov izlaz je interpolirane vrijednosti koje se kasnije prikazuju kroz piksele u odredjenom podrucju. Rezultat ovih dijelova koda jest kvalitetna slika koju na kraju korisnik dobiva. Kad su programeri koji razvijaju graficki veoma zahtjevne igrice krenuli ovim putem, znali su da mogu iskoristiti graficke procesore maksimalno te drukcijim pristupom dobiti savrsene teksture odnosno slike koje korisnik vidi na ekranu.

no hlsl no hlsl

Slika 1. Lijevo je slika bez HLSL-a a desno je slika koja primjenjuje HLSL

Na slikama možemo vidjeti kako je to kad se primjenjuje HLSL a kad ne. Na desnoj slici vidimo da je slika veoma mutna, odnosno ne iscrtavaju se lijepo pikseli. Na desnoj slici koristenjem kako je slika popravljena.

U nastavku cemo pokazati neke primjere koristenja HLSL-a. Kao prvo da bi ovo mogli pogledati morate instalirati DIRECTX SDK i zatim samo otidjete unutar mape i pokrenete projekt. Ako bas zelite vidjeti kod najbolje bi bilo da skinete Visual Studio i unutar njega pratite kod. Visual studio se automatski spaja na DirectX tako da mozete odmah gledati projekte koji su napisani u HLSL-jeziku.

Primjer trokuta i shadera

Primjer kocke

hlsl hlsl

Slika 2. i 3. Prikaz implementacije HLSL-a