Difference between revisions of "Shader:send"

m (Add missing fullstop)
m (Arguments)
Line 55: Line 55:
 
=== Arguments ===
 
=== Arguments ===
 
{{param|string|name|Name of the matrix to send to the shader.}}
 
{{param|string|name|Name of the matrix to send to the shader.}}
{{param|table|matrix|2x2, 3x3, or 4x4 matrix to send to the uniform variable. Using table form: <code><nowiki>{{a,b,c,d}, {e,f,g,h}, ... }</nowiki></code>.}}
+
{{param|table|matrix|2x2, 3x3, or 4x4 matrix to send to the uniform variable. Using table form: <code><nowiki>{{a,b,c,d}, {e,f,g,h}, ... }</nowiki></code> or (since version [[0.10.2]]) <code>{a,b,c,d, e,f,g,h, ...}</code>.}}
 
{{param|table|...|Additional matrices of the same type as ''matrix'' to store in a uniform array.}}
 
{{param|table|...|Additional matrices of the same type as ''matrix'' to store in a uniform array.}}
  

Revision as of 16:06, 1 November 2016

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

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

uniform float time;  // "float" is the typical number type used in GLSL shaders.
uniform float vars[2];
uniform vec2 light_pos;
uniform 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})


Uniform / extern variables are read-only in the shader code and remain constant until modified by a Shader:send call. Uniform 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 uniform variable.
number ...
Additional numbers to send if the uniform variable is an array.

Returns

Nothing.

Notes

Because all numbers in Lua are floating point, in versions prior to 0.10.2 you must use the function Shader:sendInt to send values to uniform 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 uniform variable 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 if the uniform variable 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 uniform variable. Using table form: {{a,b,c,d}, {e,f,g,h}, ... } or (since version 0.10.2) {a,b,c,d, e,f,g,h, ...}.
table ...
Additional matrices of the same type as matrix to store in a uniform 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 uniform variable.

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 uniform variable.
boolean ...
Additional booleans to send if the uniform variable is an array.

Returns

Nothing.

See Also

Other Languages