summaryrefslogtreecommitdiff
path: root/src/kernel.cu
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel.cu')
-rw-r--r--src/kernel.cu22
1 files changed, 3 insertions, 19 deletions
diff --git a/src/kernel.cu b/src/kernel.cu
index 711ae80..0dc5639 100644
--- a/src/kernel.cu
+++ b/src/kernel.cu
@@ -7,6 +7,7 @@
#include "rotate.h"
#include "mesh.h"
#include "photon.h"
+#include "alpha.h"
#define RED_WAVELENGTH 685
#define BLUE_WAVELENGTH 465
@@ -18,7 +19,7 @@ __device__ void fAtomicAdd(float *addr, float data)
data = atomicExch(addr, data+atomicExch(addr, 0.0f));
}
-__device__ void to_diffuse(Photon &p, State &s, curandState &rng, const int &max_steps)
+__device__ __noinline__ void to_diffuse(Photon &p, State &s, curandState &rng, const int &max_steps)
{
int steps = 0;
while (steps < max_steps)
@@ -289,24 +290,7 @@ __global__ void ray_trace(int nthreads, float3 *positions, float3 *directions, i
float3 direction = directions[id];
direction /= norm(direction);
- float distance;
-
- int triangle_index = intersect_mesh(position, direction, distance);
-
- if (triangle_index == -1)
- {
- pixels[id] = 0x000000;
- }
- else
- {
- uint4 triangle_data = g_triangles[triangle_index];
-
- float3 v0 = g_vertices[triangle_data.x];
- float3 v1 = g_vertices[triangle_data.y];
- float3 v2 = g_vertices[triangle_data.z];
-
- pixels[id] = get_color(direction, v0, v1, v2, triangle_data.w);
- }
+ pixels[id] = get_color_alpha(position, direction);
} // ray_trace