Difference between revisions of "Shader:send"
m (extern -> uniform) |
|||
Line 1: | Line 1: | ||
{{newin|[[0.9.0]]|090|type=function|text=It has been renamed from [[PixelEffect:send]]}} | {{newin|[[0.9.0]]|090|type=function|text=It has been renamed from [[PixelEffect:send]]}} | ||
− | Sends one or more values to a special ('' | + | 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. |
<source lang="glsl"> | <source lang="glsl"> | ||
− | + | uniform number time; | |
− | + | uniform number vars[2]; | |
− | + | uniform vec2 light_pos; | |
− | + | uniform vec4 colors[4]; | |
</source> | </source> | ||
Line 19: | Line 19: | ||
− | + | Uniform / 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 == | == Function == | ||
Line 28: | Line 28: | ||
=== Arguments === | === Arguments === | ||
{{param|string|name|Name of the number to send to the shader.}} | {{param|string|name|Name of the number to send to the shader.}} | ||
− | {{param|number|number|Number to send to store in the | + | {{param|number|number|Number to send to store in the uniform variable.}} |
− | {{param|number|...|Additional numbers to send | + | {{param|number|...|Additional numbers to send if the uniform variable is an array.}} |
=== Returns === | === Returns === | ||
Nothing. | Nothing. | ||
=== Notes === | === Notes === | ||
− | Because all numbers in Lua are floating point, you must use the function [[Shader:sendInt]] to send values to <code> | + | 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 <code>uniform int</code> variables in the shader's code. |
== Function == | == Function == | ||
Line 42: | Line 42: | ||
=== Arguments === | === Arguments === | ||
{{param|string|name|Name of the vector to send to the shader.}} | {{param|string|name|Name of the vector to send to the shader.}} | ||
− | {{param|table|vector|Numbers to send to the | + | {{param|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.}} |
− | {{param|table|...|Additional vectors to send | + | {{param|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 === | === Returns === | ||
Nothing. | Nothing. | ||
Line 54: | Line 54: | ||
=== 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 | + | {{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|...|Additional matrices of the same type as ''matrix'' to store in | + | {{param|table|...|Additional matrices of the same type as ''matrix'' to store in a uniform array.}} |
=== Returns === | === Returns === | ||
Nothing. | Nothing. | ||
Line 66: | Line 66: | ||
=== Arguments === | === Arguments === | ||
{{param|string|name|Name of the [[Texture]] to send to the shader.}} | {{param|string|name|Name of the [[Texture]] to send to the shader.}} | ||
− | {{param|Texture|texture|Texture ([[Image]] or [[Canvas]]) to send to the | + | {{param|Texture|texture|Texture ([[Image]] or [[Canvas]]) to send to the uniform variable.}} |
=== Returns === | === Returns === | ||
Nothing. | Nothing. | ||
Line 77: | Line 77: | ||
=== Arguments === | === Arguments === | ||
{{param|string|name|Name of the boolean to send to the shader.}} | {{param|string|name|Name of the boolean to send to the shader.}} | ||
− | {{param|boolean|boolean|Boolean to send to store in the | + | {{param|boolean|boolean|Boolean to send to store in the uniform variable.}} |
− | {{param|boolean|...|Additional booleans to send | + | {{param|boolean|...|Additional booleans to send if the uniform variable is an array.}} |
=== Returns === | === Returns === | ||
Nothing. | Nothing. |
Revision as of 22:18, 31 October 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 number time;
uniform number 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 can be accessed in both the Vertex and Pixel components of a shader, as long as the variable is declared in each.
Contents
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}, ... }
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
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info