nuclear@22: #ifndef RAYTRACE_H_ nuclear@22: #define RAYTRACE_H_ nuclear@22: nuclear@22: #include "vmath.h" nuclear@22: #include "vmathray.h" nuclear@22: nuclear@22: class Object; nuclear@22: nuclear@22: struct RayHit { nuclear@22: Ray ray; // the ray in world coordinates nuclear@22: Ray lray; // the local coordinate system ray nuclear@22: float dist; // parametric distance along the ray nuclear@22: const Object *obj; // pointer to the object that has been hit nuclear@22: const void *subobj; // object-specific subobject pointer (can be null). nuclear@22: }; nuclear@22: nuclear@22: Vector3 ray_trace(const Ray &ray, int iter = 0); nuclear@22: Vector3 shade(const RayHit &hit, int iter); nuclear@22: nuclear@22: #endif // RAYTRACE_H_