Shader:send (Français)

Disponible depuis LÖVE 0.9.0
It has been renamed from PixelEffect:send.

Envoie une ou plusieurs valeurs à une variable (uniform) spéciale, au sein d'un ombrage. Les variables uniformes doivent être marquées comme utilisant les mots clés uniform (ou, déprécié extern), par exempla :

uniform float time;  // "float" (nombre à virgule flottante) est le type numéraire typique utilisé dans les ombrages GLSL.
uniform float vars[2];
uniform vec2 light_pos;
uniform vec4 colors[4];

L'appel send (envoi) correspondant sera :

shader:send("time", t)
shader:send("vars",a,b)
shader:send("light_pos", {light_x, light_y})
shader:send("colors", {r1, g1, b1, a1},  {r2, g2, b2, a2},  {r3, g3, b3, a3},  {r4, g4, b4, a4})


Les variables uniform / extern sont en lecture seul dans le code de l'ombrage et reste constantes jusqu'à ce qu'elles soient modifiées par un appel à Shader:send. Les variables Uniform sont accessibles à la fois dans les composantes Vertex (vecteur) et Pixel d'un ombrage, tant que les variables sont déclarées dans chacune d'elles.

O.png Il y a un bug dans la version 0.10.2 qui fait que Shader:send ignore le dernier argument, lorsque des tables sont envoyées. Un contournement simple consiste à ajouter un un argument supplémentaire null lors de l'envoie de valeurs multiples à une table uniforme.  


Fonction

Synopsis

Shader:send( name, number, ... )

Arguments

string (Français) name
Nom du nombre à envoyer à l'ombrage.
number (Français) number
Nombre à envoyer et à conserver dans la variable uniforme.
number (Français) ...
Nombres supplémentaires à envoyer, si la variable uniforme est une array (table).

Retourne

Rien.

Notes

Comme tous les nombres sont à virgule flottante en Lua, dans les versions antérieures à 0.10.2, vous devez utiliser la fonction Shader:sendInt pour envoyer des valeurs aux variables uniform int dans le code de l'ombrage..

Fonction

Synopsis

Shader:send( name, vector, ... )

Arguments

string (Français) name
Nom du vecteur à envoyer à l'ombrage.
table (Français) vector
Nombres à envoyer à la variable uniforme en tant que vecteur. Le nombre d'éléments dans la table détermine le type du vecteur (par exemple, deux nombres -> vec2). Au moins deux et au plus quatre nombres peuvent être utilisés.
table (Français) ...
Vecteurs supplémentaires à envoyer si la variable uniforme est une table. Tous les vecteurs doivent être de la même taille (par exemple, seulement de type vec3).

Retourne

Rien.

Fonction

Synopsis

Shader:send( name, matrix, ... )

Arguments

string (Français) name
Nom de la matrice à envoyer à l'ombrage.
table (Français) matrix
matrice 2x2, 3x3, ou 4x4 à envoyer à la variable uniforme. En utilisant une table sous la forme : {{a,b,c,d}, {e,f,g,h}, ... } ou (depuis la version 0.10.2) {a,b,c,d, e,f,g,h, ...}. L'ordre dans 0.10.2 est column-major; À partir de 11.0 c'est row-major.
table (Français) ...
Matrices supplémentaires du même type que matrix à enregistrer dans une table uniforme.

Retourne

Rien.

Fonction

Synopsis

Shader:send( name, texture )

Arguments

string (Français) name
nom d'une Texture à envoyer à l'ombrage.
Texture (Français) texture
Texture (Image ou Canvas) à envoyer à la variable uniforme.

Retourne

Rien.

Fonction

Synopsis

Shader:send( name, boolean, ... )

Arguments

string (Français) name
Nom du booléen à envoyer à l'ombrage.
boolean (Français) boolean
Booléen à envoyer et stocker dans la variable uniforme.
boolean (Français) ...
Booléens supplémentaires à envoyer si la variable uniforme est une table.

Retourne

Rien.

Fonction

Disponible depuis LÖVE 11.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Synopsis

Shader:send( name, matrixlayout, matrix, ... )

Arguments

string (Français) name
Nom de la matrice à envoyer à l'ombrage.
MatrixLayout (Français) matrixlayout
La structure (ligne- ou colonne-majeure) de la matrice.
table (Français) matrix
Matrices 2x2, 3x3, ou 4x4 à envoyer à la variable uniforme. en utilisant la structure de définition de table : {{a,b,c,d}, {e,f,g,h}, ... } ou {a,b,c,d, e,f,g,h, ...}.
table (Français) ...
Matrices supplémentaires du même type, en tant que matrix à stocker dans la table uniforme.

Fonction

Disponible depuis LÖVE 11.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Envoie des valeurs uniformes à l'ombrage, sourcées par le contenu d'un objet Data (données). Cela copie directement les octets des données.

Synopsis

Shader:send( name, data, offset, size )

Arguments

string (Français) name
Nom de l'uniforme à envoyer à l'ombrage.
Data (Français) data
Objet Data (données) contenant les valeurs à envoyer.
number (Français) offset (0)
Décalage, en octets, depuis le début de l'objet Data.
number (Français) size (all)
Taille en octets des données à envoyer. Si nil (nul), la totalité des octets que l'uniforme spécifié utilise seront copiés.

Retourne

Rien.

Fonction

Disponible depuis LÖVE 11.0
Ce-tte variant n'est pas supporté-e par des versions plus anciennes.

Envoie des matrices uniformes à l'ombrages, sourcé depuis le contenu d'un objet Data (données). Cela copie directement les octets des données.

Synopsis

Shader:send( name, data, matrixlayout, offset, size )

Arguments

string (Français) name
Nom de la matrice à envoyer à l'ombrage.
Data (Français) data
objet Data (données) contenant les valeurs à envoyer.
MatrixLayout (Français) matrixlayout
L'agencement (ligne- ou colonne-majeur) de la matrice en mémoire.
number (Français) offset (0)
Décalage en octets depuis le début de l'objet Data (données).
number (Français) size (all)
Taille en octets des données à envoyer. Si nil (nul), la totalité des octets que l'uniforme spécifié utilise seront copiés.

Retourne

Rien.

Voir également


Autres langues