Skip to content

GLSL Snippets

Definitions

struct Camera {
    vec3 position;
    vec3 direction;
    vec3 top;
    vec3 side;
    float depth;
};

struct Ray {
    vec3 origin;
    vec3 direction;
};
Camera create Camera(vec3 position, vec3 direction, float depth) {
    Camera cam;
    cam.position = position;
    cam.diretion = direction;
    cam.top = vec3(0.0, 1.0, 0.0);
    cam.side = normalize(cross(cam.direction, cam.top));
    cam.depth = depth;
    return cam;
}

Ray createRay(vec2 uv, Camera cam) {
    vec3 dir = normalize(
        uv.x * cam.side
        + uv.y * cam.top
        + cam.direction * cam.depth
    );
    Ray ray;
    ray.direction = dir;
    ray.origin = cam.position;
    return ray;
}
  • distFunc

Shapes

float cylinder(vec3 p, vec2 h) {
    vec2 d = abs(vec2(length(p.xz), p.y)) - h;
}

Main

vec2 uv = (gl_FragCoord.xy * 2.0 - resolution.xy) / min(resolution.x, resolution.y);