113 lines
2.9 KiB
Markdown
113 lines
2.9 KiB
Markdown
# 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
|
|
```
|