It looks like my triangle intersection code:
var EPSILON = 0.000001;
var e1 = this.t2.sub(this.t1);
var e2 = this.t3.sub(this.t1);
var P = ray.direction.cross(e2);
var det = e1.dot(P);
if(det > -EPSILON && det < EPSILON)
return -1.0;
var inv_det = 1.0 / det;
var T = ray.origin.sub(this.t1);
var u = T.dot(P) * inv_det;
if(u < 0.0 || u > 1.0)
return -1.0;
var Q = T.cross(e1);
var v = ray.direction.dot(Q) * inv_det;
if(v < 0.0 || u+v > 1.0)
return -1.0;
var t = e2.dot(Q) * inv_det;
if(t > EPSILON)
return t;
return -1.0;
is not working properly. If i use the triangle as an emitter it looks like the first image. But if i use it as a normal object it looks like the second image.
Any ideas?