Shader

Z MaSzyna
Skocz do: nawigacja, szukaj

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. components ustala format ładowanej tekstury, musi być jednym z: R, RG, RGB, RGBA, sRGB, sRGB_A. (format jest właściwością tekstury a nie shadera!. jeżeli tekstura zostanie załadowana w innym materiale z innym formatem, użyty format jest dowolny)

#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