#ifndef __MAPOBJECT_SHADE_H__
#define __MAPOBJECT_SHADE_H__

typedef PikaRGB (* get_ray_color_func) (PikaVector3 *pos);

extern get_ray_color_func get_ray_color;

PikaRGB   get_ray_color_plane    (PikaVector3 *pos);
PikaRGB   get_ray_color_sphere   (PikaVector3 *pos);
PikaRGB   get_ray_color_box      (PikaVector3 *pos);
PikaRGB   get_ray_color_cylinder (PikaVector3 *pos);
void     compute_bounding_box   (void);

void     vecmulmat              (PikaVector3 *u,
                                 PikaVector3 *v,
                                 gfloat       m[16]);
void     rotatemat              (gfloat       angle,
                                 PikaVector3 *v,
                                 gfloat       m[16]);
void     transpose_mat          (gfloat       m[16]);
void     matmul                 (gfloat       a[16],
                                 gfloat       b[16],
                                 gfloat       c[16]);
void     ident_mat              (gfloat       m[16]);

#endif  /* __MAPOBJECT_SHADE_H__ */
