summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kernel.cu7
-rw-r--r--src/photon.h3
2 files changed, 9 insertions, 1 deletions
diff --git a/src/kernel.cu b/src/kernel.cu
index cc567b8..307412e 100644
--- a/src/kernel.cu
+++ b/src/kernel.cu
@@ -345,6 +345,13 @@ __global__ void propagate(int first_photon, int nthreads,
int command;
+ // check for NaN and fail
+ if (isnan(p.direction.x*p.direction.y*p.direction.z*p.position.x*p.position.y*p.position.z))
+ {
+ p.history |= NO_HIT | NAN_ABORT;
+ break;
+ }
+
fill_state(s, p);
if (p.last_hit_triangle == -1)
diff --git a/src/photon.h b/src/photon.h
index f471866..4203a50 100644
--- a/src/photon.h
+++ b/src/photon.h
@@ -44,7 +44,8 @@ enum
SURFACE_ABSORB = 0x1 << 3,
RAYLEIGH_SCATTER = 0x1 << 4,
REFLECT_DIFFUSE = 0x1 << 5,
- REFLECT_SPECULAR = 0x1 << 6
+ REFLECT_SPECULAR = 0x1 << 6,
+ NAN_ABORT = 0x1 << 31
}; // processes
enum {BREAK, CONTINUE, PASS}; // return value from propagate_to_boundary