Shader:send

Available since LÖVE 0.9.0
It has been renamed from PixelEffect:send.

Sends one or more values to a special (extern) variable inside the shader. Extern variables have to be marked using the extern keyword, e.g.

extern number time;
extern number vars[2];
extern vec2 light_pos;
extern vec4 colors[4];

The corresponding send calls would be

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})


Extern variables can be accessed in both the Vertex and Pixel components of a shader, as long as the variable is declared in each.

Function

Synopsis

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

Arguments

string name
Name of the number to send to the shader.
number number
Number to send to store in the extern.
number ...
Additional numbers to send in case the extern is an array.

Returns

Nothing.

Notes

Because all numbers in Lua are floating point, you must use the function Shader:sendInt to send values to extern int variables in the shader's code.

Function

Synopsis

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

Arguments

string name
Name of the vector to send to the shader.
table vector
Numbers to send to the extern as a vector. The number of elements in the table determines the type of the vector (e.g. two numbers -> vec2). At least two and at most four numbers can be used.
table ...
Additional vectors to send in case the extern is an array. All vectors need to be of the same size (e.g. only vec3's)

Returns

Nothing.

Function

Synopsis

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

Arguments

string name
Name of the matrix to send to the shader.
table matrix
2x2, 3x3, or 4x4 matrix to send to the extern. Using table form: {{a,b,c,d}, {e,f,g,h}, ... }
table ...
Additional matrices of the same type as matrix to store in the extern array.

Returns

Nothing.

Function

Synopsis

Shader:send( name, texture )

Arguments

string name
Name of the Texture to send to the shader.
Texture texture
Texture (Image or Canvas) to send to the extern.

Returns

Nothing.

Function

Synopsis

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

Arguments

string name
Name of the boolean to send to the shader.
boolean boolean
Boolean to send to store in the extern.
boolean ...
Additional booleans to send in case the extern is an array.

Returns

Nothing.

See Also

Other Languages