summaryrefslogtreecommitdiff
path: root/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'test.py')
-rw-r--r--test.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/test.py b/test.py
index 2aef412..a484032 100644
--- a/test.py
+++ b/test.py
@@ -20,16 +20,16 @@ print 'device %s' % autoinit.device.name()
source_directory = os.path.split(os.path.realpath(__file__))[0] + '/src'
source = open(source_directory + '/kernel.cu').read()
-mod = SourceModule(source, options=['-I ' + source_directory], no_extern_c=True, arch='sm_13')
+mod = SourceModule(source, options=['-I ' + source_directory], no_extern_c=True, cache_dir=False)
intersect_mesh = mod.get_function('intersect_mesh')
rotate = mod.get_function('rotate')
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
camera = Camera(size)
-camera.position((0,300,0))
+camera.position((0,300,50))
-origin, direction = camera.get_pixels()
+origin, direction = camera.get_rays()
for i in range(direction.shape[0]):
direction[i] /= np.linalg.norm(direction[i])
@@ -39,9 +39,10 @@ origin, direction = make_vector(origin), make_vector(direction)
origin_gpu = cuda.to_device(origin)
direction_gpu = cuda.to_device(direction)
+solid = Solid(read_stl('models/tie_interceptor6.stl'), vacuum, vacuum)
geometry = Geometry()
-geometry.add_mesh(read_stl('models/tie_interceptor6.stl'), vacuum, vacuum)
-geometry.build(bits=16)
+geometry.add_solid(solid)
+geometry.build()
mesh = geometry.mesh
mesh = mesh.reshape(mesh.shape[0]*3,3)
@@ -79,13 +80,16 @@ child_len_tex.set_format(cuda.array_format.UNSIGNED_INT32, 1)
pixels = np.empty(width*height, dtype=np.int32)
pixels_gpu = cuda.to_device(pixels)
+states = np.empty(width*height, dtype=np.int32)
+states_gpu = cuda.to_device(states)
+
block_size = 64
for i in range(100):
rotate(np.int32(origin.size), origin_gpu, np.float32(np.pi/100), gpuarray.vec.make_float3(0,0,1), block=(block_size,1,1), grid=(width*height//block_size+1,1))
rotate(np.int32(direction.size), direction_gpu, np.float32(np.pi/100), gpuarray.vec.make_float3(0,0,1), block=(block_size,1,1), grid=(width*height//block_size+1,1))
t0 = time.time()
- intersect_mesh(np.int32(origin.size), origin_gpu, direction_gpu, pixels_gpu, first_leaf, block=(block_size,1,1), grid=(width*height//block_size+1,1), texrefs=[mesh_tex, lower_bound_tex, upper_bound_tex, child_map_tex, child_len_tex])
+ intersect_mesh(np.int32(origin.size), origin_gpu, direction_gpu, pixels_gpu, first_leaf, states_gpu, block=(block_size,1,1), grid=(width*height//block_size+1,1), texrefs=[mesh_tex, lower_bound_tex, upper_bound_tex, child_map_tex, child_len_tex])
cuda.Context.synchronize()
elapsed = time.time() - t0