{{newin|[[0.9.0]]|090|type=built-in shader variables|plural=y}}
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 ==
{{param|mat4|TransformMatrix|The transformation matrix affected by [[love.graphics.translate]] and friends. Note that automatically batched vertices are transformed on the CPU, and their TransformMatrix will be an identity matrix.}}

{{param|mat4|ProjectionMatrix|The orthographic projection matrix.}}

{{param|mat4|TransformProjectionMatrix|The combined transform and projection matrices. Used as the <code>transform_projection</code> argument to the [[love.graphics.newShader#Vertex Shader Function|vertex shader 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 <code>texture_coords</code> argument to the [[love.graphics.newShader#Pixel Shader Function|pixel shader 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>ConstantColor * gammaCorrectColor(VertexColor)</code> in LÖVE [[0.10.0]] and newer, or <code>VertexColor</code> in [[0.9.2]] and older, in the vertex shader before the [[love.graphics.newShader#Vertex Shader Function|position]] function is called. Used as the <code>color</code> argument to the [[love.graphics.newShader#Pixel Shader Function|pixel shader 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 ==
{{param|vec4|VertexPosition|The pre-transformed position of the vertex. Used as the <code>vertex_position</code> argument to the [[love.graphics.newShader#Vertex Shader Function|vertex shader 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|VertexColor|The color of the vertex, sprite, or text character if a [[Mesh]], [[SpriteBatch]], or [[Text]] object with per-vertex colors is drawn, or in LÖVE [[0.9.2]] and older the global color set with [[love.graphics.setColor]]. It does not have [[love.graphics.isGammaCorrect|gamma-correction]] applied.}}

{{newin|[[0.10.0]]|100|type=shader variable}}
{{param|vec4|ConstantColor|The global color set with [[love.graphics.setColor]]. If global [[love.graphics.isGammaCorrect|gamma-correction]] is enabled, it will already be gamma-corrected.}}

== Pixel Shader built-in variables ==
{{param|vec4 array|love_Canvases[]|Array used to set per-canvas pixel colors when multiple canvases are set with [[love.graphics.setCanvas]] and the [[love.graphics.newShader#Pixel Shader Function|effects]] function is used instead of <code>effect</code>. Note that arrays in shaders are 0-based. Writable in the pixel shader when the '''effects''' function is used.}}

{{param|vec2|love_PixelCoord|Coordinates of the pixel on screen. The same as <code>screen_coords</code> passed to the <code>vec4 effect</code> [[love.graphics.newShader#Pixel_Shader_Function|Shader function]]}}

=== Notes ===
If you wish to access the texture used for the drawing operation, you may define a uniform called <code>MainTex</code> of the appropriate type yourself, e.g. <code>uniform Image MainTex;</code>

== See Also ==
* [[Shader]]
* [[love.graphics.newShader]]

== Other Languages ==
{{i18n|Shader_Variables}}