X-Git-Url: https://git.rohieb.name/MicroTrace.git/blobdiff_plain/a8137256e983a49f97ff1fbecd26a1a0372f7b0b..556bb9d82b766ce68c56844492536525dc2d19d7:/QuadAreaLight.cxx diff --git a/QuadAreaLight.cxx b/QuadAreaLight.cxx index ed64910..24e0b8e 100644 --- a/QuadAreaLight.cxx +++ b/QuadAreaLight.cxx @@ -1,4 +1,5 @@ #include +#include #include "QuadAreaLight.hxx" @@ -16,7 +17,7 @@ QuadAreaLight::QuadAreaLight(Scene* scene, { m_n = m_e1.cross(m_e2); m_area = m_n.norm(); - m_n.normalize(); + m_n.normalize(); } QuadAreaLight::QuadAreaLight() @@ -36,21 +37,21 @@ QuadAreaLight::~QuadAreaLight() bool QuadAreaLight::Illuminate(Ray& shadow_ray, Vec3f& intensity) { - // generate random factors + // generate random factors float xi1 = drand48(); float xi2 = drand48(); - + // bilinear interpolation of position Vec3f pos = m_p0 + m_e1 * xi1 + m_e2* xi2; // direction of shadow ray Vec3f dir = pos-shadow_ray.origin(); - + float dist = dir.norm(); float cosN = (dir.dot(m_n)) / dist; if(cosN <= 0.0f ) return false; - + // squared falloff and projected area intensity = m_intensity * ( m_area * cosN / ( dist*dist));