diff --git a/2GoodResult.png b/2GoodResult.png new file mode 100644 index 0000000..3918a76 Binary files /dev/null and b/2GoodResult.png differ diff --git a/Collision.c b/Collision.c index efee13a..9a06e50 100644 --- a/Collision.c +++ b/Collision.c @@ -44,6 +44,7 @@ vec3 collisionPlane(ray *lightray, plane *object) { if (vec3Product(lightray->direction, object->normal) >= 0) return (vec3){-10000000, -10000000, -10000000}; r = vec3Product(object->normal, vec3Subtract(object->origin, lightray->origin)) * 1/(vec3Product(lightray->direction, object->normal)); + if (r <= 1e-6) return (vec3){-10000000, -10000000, -10000000}; collisionPoint = vec3Add(lightray->origin, vec3Scale(lightray->direction, r)); return collisionPoint; @@ -55,6 +56,7 @@ vec3 collisionQuad(ray *lightray, quad *object) { collisionPoint = collisionPlane(lightray, &Plane); if (collisionPoint.x <= -1000000) return collisionPoint; + if (epsilonCheck(lightray->origin, collisionPoint) == 0) return (vec3){-10000000, -10000000, -10000000}; vec3 localCollisionPoint = vec3Subtract(collisionPoint, object->origin); diff --git a/raytrace.c b/raytrace.c index 2a4d7cd..4cd9ed3 100644 --- a/raytrace.c +++ b/raytrace.c @@ -7,8 +7,8 @@ #include "helper.h" #include #define epsilon 1e-8 -#define RAYSPERPIXEL 10 -#define lightBounces 3 +#define RAYSPERPIXEL 100 +#define lightBounces 6 enum objectType { SPHERETYPE, QUADTYPE diff --git a/test.png b/test.png deleted file mode 100644 index 6095d1b..0000000 Binary files a/test.png and /dev/null differ