Go to the documentation of this file.
18 # define DEG_TO_RAD (M_PI_F / 180)
19 # define M_PI_F (float)M_PI
20 # define M_INV_PI_F (1.0f / M_PI_F)
23 # define SHADOW_BIAS 5e-2
void print_matrix(t_matrix *mat)
Definition: print_matrix.c:16
float vec3_dot(t_vec3 *v1, t_vec3 *v2)
Definition: vec3_dot.c:15
Definition: rtstruct.h:44
Definition: rtstruct.h:130
t_inter inter_from_csg_op(int type, t_inter left, t_inter right, t_ray incoming)
Definition: inter_csg_op.c:86
void normal_tore(t_inter *inter)
Definition: normal_tore.c:15
void normal_cone(t_inter *inter)
Definition: normal_cone.c:16
t_vec3 vec3_sub_(t_vec3 a, t_vec3 b)
Definition: vec3_sub.c:24
Definition: rtstruct.h:30
void inter_set(t_inter *inter, t_ray ray)
Definition: inter_set.c:17
Definition: rtstruct.h:100
void inter_cube(t_inter *data, t_obj *node)
Definition: inter_cube.c:87
t_matrix set_rotation(float yz_angle, float xz_angle)
Definition: mat3_rot.c:51
t_vec3 vec3_normalize_(t_vec3 v1)
Definition: vec3_normalize.c:30
void create_orthobasis_from_y_axis(t_vec3 y, t_vec3 *x, t_vec3 *z)
Definition: mat3_rot.c:68
Definition: rtstruct.h:177
void apply_uv_mapping(t_vec3 *uv, t_uv_mapping mapping)
Definition: uv_mapping.c:17
t_vec3 get_cone_uv(t_inter *inter)
Definition: inter_cone.c:118
void apply_matrix(t_vec3 *v, t_matrix *mat)
Definition: vec3_matrix_apply.c:17
void vec3_print(t_vec3 *data)
void vec3_normalize(t_vec3 *v1)
Definition: vec3_normalize.c:15
Definition: rtstruct.h:245
void vec3_add(t_vec3 *res, t_vec3 *v1, t_vec3 *v2)
Definition: vec3_add.c:16
void normal_plane(t_inter *inter)
Definition: normal_plane.c:15
void normal_cube(t_inter *inter)
Definition: normal_cube.c:44
void inter_tore(t_inter *data, t_obj *node)
Definition: inter_tore.c:57
float vec3_mag(t_vec3 v1)
Definition: vec3_mag.c:16
void ray_offset_origin(t_ray *ray, t_vec3 normal)
Definition: ray_offset_origin.c:15
void inter_sphere(t_inter *data, t_obj *node)
Definition: inter_sphere.c:69
void vec3_scalar(t_vec3 *v1, float k)
Definition: vec3_scalar.c:15
void vec3_print_(char *msg, t_vec3 data)
Definition: vec3_print.c:21
t_vec3 get_cylinder_uv(t_inter *inter)
Definition: inter_cylinder.c:115
void set_min_max_corner(t_cube *cube)
Definition: inter_cube.c:17
void vec3_cpy(t_vec3 *dst, t_vec3 *src)
Definition: vec3_cpy.c:15
void ray_new(t_ray *res, t_pt3 *origin, t_vec3 *n)
Definition: ray_new.c:16
t_vec3 get_plane_uv(t_inter *inter)
Definition: inter_plane.c:66
void mat_transpose(t_matrix *m)
Definition: mat_transpose.c:15
void vec3_mul(t_vec3 *res, t_vec3 *v1, t_vec3 *v2)
Definition: vec3_mul.c:15
void normal_cylinder(t_inter *inter)
Definition: normal_cylinder.c:15
t_vec3 get_column(t_matrix m, int column)
Definition: mat3.c:35
float remap_to_0_to_1(float x)
Definition: uv_mapping.c:37
void mat3_rot(t_matrix *mat_x, t_matrix *mat_y, t_vec3 *vi, t_cam *cam)
void vec3_find(t_pt3 *origin, t_pt3 *dest, t_vec3 *value)
Definition: vec3_find.c:15
t_vec3 vec3_refract(t_vec3 ray, t_vec3 normal, float ior)
Definition: vec3_refract.c:18
t_vec3 vec3_cross(t_vec3 v1, t_vec3 v2)
Definition: vec3_cross.c:15
Definition: rtstruct.h:39
void inter_cylinder(t_inter *data, t_obj *node)
Definition: inter_cylinder.c:101
void vec3_cartesian_to_spherical(t_vec3 v, float *azimuth, float *polar)
Definition: vec3_spherical_cartesian.c:21
void create_orthobasis_qnd(t_vec3 vec, t_vec3 *t, t_vec3 *b)
Definition: normal_mapping.c:23
t_vec3 get_tore_uv(t_inter *inter)
Definition: inter_tore.c:71
void inter_setrefract(t_inter *inter, t_ray *res)
Definition: inter_setrefract.c:15
t_matrix matrix_mult(const t_matrix *lhs, const t_matrix *rhs)
Definition: mat3.c:15
Definition: rtstruct.h:50
void inter_plane(t_inter *data, t_obj *node)
Definition: inter_plane.c:52
float vec3_cos(t_vec3 *v1, t_vec3 *v2)
Definition: vec3_cos.c:16
t_vec3 get_sphere_uv(t_inter *inter)
Definition: inter_sphere.c:83
void set_column(t_matrix *m, int column, t_vec3 vec)
Definition: mat3.c:43
t_vec3 vec3_mul_(t_vec3 a, t_vec3 b)
Definition: vec3_mul.c:24
t_matrix mat_orbit(t_vec3 axis, float deg)
Definition: mat_orbit.c:36
void vec3_matrix_mult(t_matrix *matrix, t_matrix *add)
Definition: vec3_matrix_mult.c:16
void normal_sphere(t_inter *inter)
Definition: normal_sphere.c:15
t_matrix mat_set_axes(t_vec3 x, t_vec3 y, t_vec3 z)
Definition: mat3.c:57
Definition: rtstruct.h:218
float fresnel(t_vec3 ray_dir, t_vec3 normal, float ior)
Definition: fresnel.c:17
t_vec3 get_cube_uv(t_inter *inter)
Definition: inter_cube.c:112
void vec3_matrix_camera(t_matrix *matrix, t_cam *cam)
void vec3_new(t_vec3 *res, float x, float y, float z)
Definition: vec3_new.c:15
bool inter_plane_finite(t_inter *data, t_plane *plane, float dist)
Definition: inter_plane_finite.c:80
void inter_find(t_inter *primary, t_pt3 *value)
Definition: inter_find.c:15
t_vec3 vec3_deflect(t_vec3 vec, t_vec3 normal)
Definition: vec3_deflect.c:16
void inter_setlight(t_inter *i, t_inter *light_i, t_light *light)
Definition: inter_setlight.c:16
void set_row(t_matrix *m, int row, t_vec3 vec)
Definition: mat3.c:50
t_ray ray_transform(t_ray ray, t_matrix m)
Definition: ray_transform.c:15
void inter_cone(t_inter *data, t_obj *node)
Definition: inter_cone.c:104
void inter_csg(t_inter *data, t_obj *node)
Definition: inter_csg.c:46
void vec3_sub(t_vec3 *res, t_vec3 *v1, t_vec3 *v2)
Definition: vec3_sub.c:15
void inter_setdeflect(t_inter *inter, t_vec3 shading_normal)
Definition: inter_setdeflect.c:15
Definition: rtstruct.h:121