Files
english/.opencode/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md
2026-04-12 01:06:31 +07:00

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
```