Difference between revisions of "Shader Variables"

m (Pixel Shader built-in variables)
(Added love_ScreenSize)
Line 4: Line 4:
 
== Global built-in variables ==
 
== Global built-in variables ==
 
{{param|mat4|TransformMatrix|The transformation matrix affected by [[love.graphics.translate]] and friends.}}
 
{{param|mat4|TransformMatrix|The transformation matrix affected by [[love.graphics.translate]] and friends.}}
 +
 
{{param|mat4|ProjectionMatrix|The orthographic projection matrix.}}
 
{{param|mat4|ProjectionMatrix|The orthographic projection matrix.}}
 +
 
{{param|mat4|TransformProjectionMatrix|The combined transform and projection matrices. Used as the first argument to the [[love.graphics.newShader#Vertex Shader Function|position]] function.}}
 
{{param|mat4|TransformProjectionMatrix|The combined transform and projection matrices. Used as the first argument to the [[love.graphics.newShader#Vertex Shader Function|position]] function.}}
  
 
{{param|vec4|VaryingTexCoord|The interpolated per-vertex texture coordinate. Automatically set to the value of <code>VertexTexCoord</code> in the vertex shader before the [[love.graphics.newShader#Vertex Shader Function|position]] function is called. Used as the third argument to the [[love.graphics.newShader#Pixel Shader Function|effect]] function. Writable in the vertex shader. Use this variable to change the texture coordinate in the vertex shader.}}
 
{{param|vec4|VaryingTexCoord|The interpolated per-vertex texture coordinate. Automatically set to the value of <code>VertexTexCoord</code> in the vertex shader before the [[love.graphics.newShader#Vertex Shader Function|position]] function is called. Used as the third argument to the [[love.graphics.newShader#Pixel Shader Function|effect]] function. Writable in the vertex shader. Use this variable to change the texture coordinate in the vertex shader.}}
 +
 
{{param|vec4|VaryingColor|The interpolated per-vertex color. Automatically set to the value of <code>VertexColor</code> in the vertex shader before the [[love.graphics.newShader#Vertex Shader Function|position]] function is called. Used as the first argument to the [[love.graphics.newShader#Pixel Shader Function|effect]] function. Writable in the vertex shader. Use this variable to change the per-vertex or constant color in the vertex shader.}}
 
{{param|vec4|VaryingColor|The interpolated per-vertex color. Automatically set to the value of <code>VertexColor</code> in the vertex shader before the [[love.graphics.newShader#Vertex Shader Function|position]] function is called. Used as the first argument to the [[love.graphics.newShader#Pixel Shader Function|effect]] function. Writable in the vertex shader. Use this variable to change the per-vertex or constant color in the vertex shader.}}
 +
 +
 +
{{newin|[[0.9.1]]|091|type=shader variable}}
 +
{{param|vec4|love_ScreenSize|The width and height of the screen (or canvas) currently being rendered to, stored in the x and y components of the variable. The z and w components are used internally by LÖVE. You can convert it to a vec2 with <code>love_ScreenSize.xy</code> or <code>vec2(love_ScreenSize)</code>.}}
  
 
== Vertex Shader built-in variables ==
 
== Vertex Shader built-in variables ==
 
{{param|vec4|VertexPosition|The pre-transformed position of the vertex. Used as the second argument to the [[love.graphics.newShader#Vertex Shader Function|position]] function. The third and fourth components of the vector are normally (0, 1).}}
 
{{param|vec4|VertexPosition|The pre-transformed position of the vertex. Used as the second argument to the [[love.graphics.newShader#Vertex Shader Function|position]] function. The third and fourth components of the vector are normally (0, 1).}}
 +
 
{{param|vec4|VertexTexCoord|The texture coordinate of the vertex. The third and fourth components of the vector are normally (0, 1). [[Mesh]]es allow for custom texture coordinates.}}
 
{{param|vec4|VertexTexCoord|The texture coordinate of the vertex. The third and fourth components of the vector are normally (0, 1). [[Mesh]]es allow for custom texture coordinates.}}
 +
 
{{param|vec4|VertexColor|The global color set with [[love.graphics.setColor]], or the color of the vertex if a [[Mesh]] with per-vertex colors is drawn.}}
 
{{param|vec4|VertexColor|The global color set with [[love.graphics.setColor]], or the color of the vertex if a [[Mesh]] with per-vertex colors is drawn.}}
  

Revision as of 10:27, 30 January 2014

Available since LÖVE 0.9.0
These built-in shader variables are not supported in earlier versions.

There are several built-in variables LÖVE provides in vertex and pixel shaders. All built-in variables are read-only unless otherwise specified.

Global built-in variables

mat4 TransformMatrix
The transformation matrix affected by love.graphics.translate and friends.
mat4 ProjectionMatrix
The orthographic projection matrix.
mat4 TransformProjectionMatrix
The combined transform and projection matrices. Used as the first argument to the position function.
vec4 VaryingTexCoord
The interpolated per-vertex texture coordinate. Automatically set to the value of VertexTexCoord in the vertex shader before the position function is called. Used as the third argument to the effect function. Writable in the vertex shader. Use this variable to change the texture coordinate in the vertex shader.
vec4 VaryingColor
The interpolated per-vertex color. Automatically set to the value of VertexColor in the vertex shader before the position function is called. Used as the first argument to the effect function. Writable in the vertex shader. Use this variable to change the per-vertex or constant color in the vertex shader.


Available since LÖVE 0.9.1
This shader variable is not supported in earlier versions.
vec4 love_ScreenSize
The width and height of the screen (or canvas) currently being rendered to, stored in the x and y components of the variable. The z and w components are used internally by LÖVE. You can convert it to a vec2 with love_ScreenSize.xy or vec2(love_ScreenSize).

Vertex Shader built-in variables

vec4 VertexPosition
The pre-transformed position of the vertex. Used as the second argument to the position function. The third and fourth components of the vector are normally (0, 1).
vec4 VertexTexCoord
The texture coordinate of the vertex. The third and fourth components of the vector are normally (0, 1). Meshes allow for custom texture coordinates.
vec4 VertexColor
The global color set with love.graphics.setColor, or the color of the vertex if a Mesh with per-vertex colors is drawn.

Pixel Shader built-in variables

vec4 array love_Canvases
Array used to set per-canvas pixel colors when multiple canvases are set with love.graphics.setCanvas and the effects function is used instead of effect. Note that arrays in shaders are 0-based. Writable in the pixel shader when the effects function is used.

See Also

Other Languages