gpuray_glsl
diff src/object.h @ 0:f234630e38ff
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 09 Nov 2014 13:03:36 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/object.h Sun Nov 09 13:03:36 2014 +0200 1.3 @@ -0,0 +1,48 @@ 1.4 +/* 1.5 +Simple introductory ray tracer 1.6 +Copyright (C) 2012 John Tsiombikas <nuclear@member.fsf.org> 1.7 + 1.8 +This program is free software: you can redistribute it and/or modify 1.9 +it under the terms of the GNU General Public License as published by 1.10 +the Free Software Foundation, either version 3 of the License, or 1.11 +(at your option) any later version. 1.12 + 1.13 +This program is distributed in the hope that it will be useful, 1.14 +but WITHOUT ANY WARRANTY; without even the implied warranty of 1.15 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1.16 +GNU General Public License for more details. 1.17 + 1.18 +You should have received a copy of the GNU General Public License 1.19 +along with this program. If not, see <http://www.gnu.org/licenses/>. 1.20 +*/ 1.21 +#ifndef OBJECT_H_ 1.22 +#define OBJECT_H_ 1.23 + 1.24 +#include "vmath/vmath.h" 1.25 +#include "material.h" 1.26 +#include "xform_node.h" 1.27 + 1.28 +struct HitPoint; 1.29 + 1.30 +class Object : public XFormNode { 1.31 +public: 1.32 + Matrix4x4 xform, inv_xform, dir_xform; 1.33 + 1.34 + Material material; // surface material properties 1.35 + 1.36 + virtual ~Object() {} 1.37 + 1.38 + virtual void prepare_xform(long msec); 1.39 + 1.40 + virtual bool intersect(const Ray &ray, HitPoint *pt) const = 0; 1.41 +}; 1.42 + 1.43 +struct HitPoint { 1.44 + float dist; // parametric distance of intersection along the ray 1.45 + Vector3 pos; // world position of the intersection point 1.46 + Vector3 normal; // surface normal vector at the intersection point 1.47 + Vector2 texcoord; // texture coordinates at the intersection point 1.48 + const Object *obj; // pointer to the intersected object 1.49 +}; 1.50 + 1.51 +#endif // OBJECT_H_