# GLSL Built-in Functions Reference Complete reference for GLSL ES 1.0 / WebGL functions. ## Trigonometric Functions | Function | Description | Range | |----------|-------------|-------| | `sin(x)` | Sine | [-1, 1] | | `cos(x)` | Cosine | [-1, 1] | | `tan(x)` | Tangent | unbounded | | `asin(x)` | Arc sine | [-PI/2, PI/2] | | `acos(x)` | Arc cosine | [0, PI] | | `atan(y, x)` | Arc tangent (quadrant-aware) | [-PI, PI] | | `atan(y_over_x)` | Arc tangent | [-PI/2, PI/2] | All accept float, vec2, vec3, vec4. Input in radians. ## Exponential Functions | Function | Description | |----------|-------------| | `pow(x, y)` | x raised to power y | | `exp(x)` / `exp2(x)` | e^x / 2^x | | `log(x)` / `log2(x)` | Natural / Base-2 logarithm | | `sqrt(x)` / `inversesqrt(x)` | Square root / 1/sqrt(x) | ## Common Functions | Function | Description | |----------|-------------| | `abs(x)` / `sign(x)` | Absolute value / -1, 0, or 1 | | `floor(x)` / `ceil(x)` | Round down / up | | `fract(x)` | x - floor(x) | | `mod(x, y)` | x - y * floor(x/y) | | `min(x, y)` / `max(x, y)` | Minimum / Maximum | | `clamp(x, min, max)` | Constrain to range | | `mix(a, b, t)` | Linear interpolation: a*(1-t) + b*t | | `step(edge, x)` | 0.0 if x < edge, else 1.0 | | `smoothstep(e0, e1, x)` | Hermite interpolation | ## Geometric Functions | Function | Description | |----------|-------------| | `length(v)` / `distance(a, b)` | Magnitude / Distance | | `dot(a, b)` / `cross(a, b)` | Dot / Cross product | | `normalize(v)` | Unit vector | | `reflect(i, n)` / `refract(i, n, eta)` | Reflection / Refraction | ## Vector Relational Functions `lessThan`, `lessThanEqual`, `greaterThan`, `greaterThanEqual`, `equal`, `notEqual` - Return bvec. `any(bvec)`, `all(bvec)`, `not(bvec)` - Boolean operations. ## Texture Functions | Function | Description | |----------|-------------| | `texture2D(sampler, coord)` | Sample 2D texture | | `textureCube(sampler, coord)` | Sample cube map | ## Constants ```glsl #define PI 3.14159265359 #define TWO_PI 6.28318530718 #define HALF_PI 1.57079632679 ``` ## Type Constructors ```glsl vec2(x), vec2(x, y) vec3(x), vec3(xy, z), vec3(x, y, z) vec4(x), vec4(xyz, w), vec4(xy, zw) mat2(a, b, c, d), mat3(...), mat4(...) ``` ## Operators ```glsl + - * / // Arithmetic (component-wise) < > <= >= == != // Comparison && || ! // Logical mat * mat // Matrix multiply mat * vec // Transform vector ``` ## Qualifiers ```glsl attribute // Vertex input uniform // Constant across draw varying // Interpolated vertex->fragment lowp / mediump / highp // Precision in / out / inout / const // Parameters ``` ## Built-in Variables ```glsl // Fragment Shader vec4 gl_FragCoord; // Window coordinates vec4 gl_FragColor; // Output color (write only) bool gl_FrontFacing; // Front face? vec2 gl_PointCoord; // Point sprite [0,1] // Vertex Shader vec4 gl_Position; // Clip-space position float gl_PointSize; // Point size ```