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;
}
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);