selbe checks wie bei sphere (shadowachne und co.) eingebaut und das hat es gefixxt
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
@@ -44,6 +44,7 @@ vec3 collisionPlane(ray *lightray, plane *object) {
|
|||||||
if (vec3Product(lightray->direction, object->normal) >= 0) return (vec3){-10000000, -10000000, -10000000};
|
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));
|
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));
|
collisionPoint = vec3Add(lightray->origin, vec3Scale(lightray->direction, r));
|
||||||
return collisionPoint;
|
return collisionPoint;
|
||||||
@@ -55,6 +56,7 @@ vec3 collisionQuad(ray *lightray, quad *object) {
|
|||||||
collisionPoint = collisionPlane(lightray, &Plane);
|
collisionPoint = collisionPlane(lightray, &Plane);
|
||||||
|
|
||||||
if (collisionPoint.x <= -1000000) return collisionPoint;
|
if (collisionPoint.x <= -1000000) return collisionPoint;
|
||||||
|
if (epsilonCheck(lightray->origin, collisionPoint) == 0) return (vec3){-10000000, -10000000, -10000000};
|
||||||
|
|
||||||
vec3 localCollisionPoint = vec3Subtract(collisionPoint, object->origin);
|
vec3 localCollisionPoint = vec3Subtract(collisionPoint, object->origin);
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -7,8 +7,8 @@
|
|||||||
#include "helper.h"
|
#include "helper.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#define epsilon 1e-8
|
#define epsilon 1e-8
|
||||||
#define RAYSPERPIXEL 10
|
#define RAYSPERPIXEL 100
|
||||||
#define lightBounces 3
|
#define lightBounces 6
|
||||||
enum objectType {
|
enum objectType {
|
||||||
SPHERETYPE,
|
SPHERETYPE,
|
||||||
QUADTYPE
|
QUADTYPE
|
||||||
|
|||||||
Reference in New Issue
Block a user