Liste des variables
Une multitudes de variables sont fournies en entrée des shaders et sont utilisables par ceux-ci :
Les variables des effets
// variables issues du vertex shader, fournies au fragment shader
in vec4 v_color; // color of the vertex
in vec2 v_texCoords0; //coordonnées de texture 0 : coordonnées de texture dans le layer courant
in vec2 v_texCoords1; //coordonnées de texture 1 : non utilisé pour l'instant
in vec2 v_texCoords2; //coordonnées de texture 2 : non utilisé pour l'instant
// variables uniformes
uniform vec2 f_texturePos; // position de la texture, dans les coordonnées du canevas
uniform float f_textureSize; // taille de la texture (512)
uniform vec2 f_paintedRectPos; // position du rectangle peint, dans les coordonnées du canevas
uniform float f_paintedRectWidth; // largeur du rectangle peint
uniform float f_paintedRectHeight; // hauteur du rectangle peint
uniform bool f_clipToPaintedRect = true; // true -> restreindre au rectangle peint
uniform bool f_clipToSelection = false; // true -> restreindre à la sélection
uniform float f_opacity = 1; // opacité du calque courant
uniform float f_globalTime = 0; // temps écoulé depuis le démarrage de l'application
uniform sampler2D f_currentLayerTexture; // id de texture du layer courant
uniform sampler2D f_underLayerTexture; // id de texture du layer sous le layer courant
uniform sampler2D f_paperTexture; // id de texture du papier
uniform sampler2D f_selectionLayerTexture; // id de texture du buffer de sélection
out vec4 f_color; // la couleur du fragment à calculer
Les variables des moteurs de brosse
// variables issues du vertex shader, fournies au fragment shader
in vec4 v_color; // la couleur de la brosse
in vec2 v_texCoords0; // les coordonnées de texture 0 : coordonnées de texture dans le stamp
in vec2 v_texCoords1; // les coordonnées de texture 1 : coordonnées de texture dans le layer courant
in vec2 v_texCoords2; // non utilisé pour l'instant
// variables uniformes
uniform float f_radius = 10; // rayon du tampon
uniform float f_hardness = 1.0; // dureté de la brosse
uniform float f_density = 1.0; // densité de la brosse
uniform float f_flow = 1.0; // densité du flux de couleur
uniform float f_opacity = 1.0; // opacité du trait de brosse
uniform int f_compositionMode = 0; // mode de composition de la brosse
uniform bool f_inheritAlphaUnder = false; // indique si la brosse doit composer avec l'alpha du layer sous le layer courant
uniform int f_alphaEquation = 0; // équation du masque (0 = pas de masque, 1 = masque alpha, 2 = masque 1 - alpha)
uniform bool f_inheritAlphaCurrent = false; // indique si la brosse doit composer avec l'alpha du layer courant
uniform bool f_hasTexture = false; // indique si la brosse à une texture associée
uniform bool f_preserveTextureColor = false; // indique si la couleur de la texture est utilisée
uniform float f_colorAbsorbtionRate = 0.0; // taux d’absorption de la couleur de la brosse
uniform float f_colorFlowingRate = 1.0; // taux d'écoulement de la couleur de la brosse
uniform int f_antialiasing = 0; // Type d'antialiasing (0 = antialiasing, 1 = pas d'antialiasing)
uniform bool f_clipToSelection = true; // indique s'il faut utiliser la sélection pour clipper le tampon
uniform int f_shape = 0; // forme de la brosse (0 = ellipse, 1 = rectangle)
uniform float f_factor = 1.0; // facteur [0, 1] applicable dans les formules
uniform vec4 f_borderColor = vec4(1, 1, 1, 1); // couleur de la bordure du tampon
uniform bool f_useBorderColor = false; // indique s'il faut utiliser la couleur de la bordure
uniform int f_stampCount = 1; // nombre de tampons depuis le début du trait
uniform float f_random = 1.0; // nombre aléatoire fourni à chaque tampon
uniform vec2 f_texturePos; // position de la texture, dans les coordonnées du canevas
uniform float f_textureSize; // taille de la texture (512)
uniform vec2 f_paintedRectPos; // position du rectangle peint, dans les coordonnées du canevas
uniform float f_paintedRectWidth; // largeur du rectangle peint
uniform float f_paintedRectHeight; // hauteur du rectangle peint
uniform sampler2D f_currentLayerTexture; // id de texture du layer courant
uniform sampler2D f_underLayerTexture; // id de texture du layer sous le layer courant
uniform sampler2D f_brushTexture; // id de texture de la brosse, si la brosse possède une texture
uniform sampler2D f_colorTexture; // id de texture du buffer de couleur utilisable pour le feedback (mélange des couleurs)
uniform sampler2D f_selectionLayerTexture; // id de texture du buffer de sélection
out vec4 f_color; // la couleur du fragment à calculer