X-Git-Url: https://git.rohieb.name/MicroTrace.git/blobdiff_plain/80400444b6db0076159fd1952693f03f12e5bc53..0db0dec898ba811c966267d4cb12dad33a1e3545:/Ray.cxx diff --git a/Ray.cxx b/Ray.cxx index 86b1294..84617d1 100644 --- a/Ray.cxx +++ b/Ray.cxx @@ -5,15 +5,20 @@ Ray::Ray() : m_org(Vec3f()), m_dir(Vec3f()), + m_level(0), + m_density(1.0), m_hit(0) { m_t = std::numeric_limits::max(); } -Ray::Ray(const Vec3f& org, - const Vec3f& dir) +Ray::Ray(const Vec3f& org, + const Vec3f& dir, + unsigned int recursion_level) : m_org(org), m_dir(dir), + m_level(recursion_level), + m_density(1.0), m_hit(0) { m_t = std::numeric_limits::max(); @@ -29,6 +34,8 @@ Ray::Ray(const Ray& r) m_dir = r.m_dir; m_t = r.m_t; m_hit = r.m_hit; + m_level = r.m_level; + m_density = r.m_density; } Ray& @@ -40,6 +47,8 @@ Ray::operator=(const Ray& r) m_dir = r.m_dir; m_t = r.m_t; m_hit = r.m_hit; + m_level = r.m_level; + m_density = r.m_density; } return *this; } @@ -80,19 +89,19 @@ Ray::setT(float t) m_t = t; } -void -Ray::setHit(Primitive * p) -{ - m_hit = p; -} - Primitive* Ray::hit() { return m_hit; } -unsigned int +void +Ray::setHit(Primitive* p) +{ + m_hit = p; +} + +unsigned int Ray::recursionDepth() const { return m_level; @@ -103,3 +112,15 @@ Ray::setRecursionDepth(unsigned int i) { m_level = i; } + +float +Ray::indexOfRefraction() const +{ + return m_density; +} + +void +Ray::setIndexOfRefraction(float d) +{ + m_density = d; +}