Shader
Pliki shaderów GLSL znajdują się w katalogu shaders
Shadery definiowane przez materiał konstruowane są z plików vertex.vert
i mat_X.frag
, gdzie X jest nazwą podaną w pliku .mat.
Do każdego programu automatycznie przypinane są tekstury shadowmap
oraz envmap
Dodatkowo obsługiwane są specjalne dyrektywy:
#include <X>
- zastępuje dyrektywę treścią pliku shaders/X
. Wirtualny plik common
dołącza wbudowane w exe deklaracje struktur UBO przekazywanych do shadera: https://github.com/Milek7/maszyna/blob/gfx-work/gl/glsl_common.h
#texture (name, location, components)
- definiuje teksturę przypinaną w pliku .mat. name
jest używany jako nazwa samplera który zostanie podpięty do programu i jako alias numeru jednostki w pliku .mat. location
ustala numer jednostki tekstury, numeracja kolejnych tekstur musi zaczynać się od 0 i zwiększać się o 1 przy następnej teksturze.
#param (name, location, offset, size, default)
- definiuje dodatkowy parametr przekazywany do programu w UBO modelu. name
ustala alias parametru w pliku .mat. location
i offset
ustala w którym indeksie i pozycji tablicy param ma znaleźć się parametr. default
ustala wartość domyślną gdy nie jest podana w .mat:
required
- NaN, z wypisaniem błędu do errors
nan
- NaN
zero
- 0.0
one
- 1.0
ambient
- właściwość ambient submodelu
diffuse
- właściwość diffuse submodelu
specular
- właścwiość specular submodelu