summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--geometry.py4
-rw-r--r--test.py16
2 files changed, 7 insertions, 13 deletions
diff --git a/geometry.py b/geometry.py
index 48d19fc..cf92d53 100644
--- a/geometry.py
+++ b/geometry.py
@@ -33,7 +33,7 @@ def interleave(arr):
raise Exception('shape mismatch')
z = np.zeros(arr.shape[0], dtype=np.uint64)
- for i in range(arr[0][0].nbytes*8):
+ for i in range(arr.dtype.itemsize*8):
z |= (arr[:,2] & 1 << i) << (2*i) | (arr[:,1] & 1 << i) << (2*i+1) | (arr[:,0] & 1 << i) << (2*i+2)
return z
@@ -48,7 +48,7 @@ def morton_order(mesh, bits=3):
mean_positions = quantize(np.mean(mesh, axis=1))
- return interleave_arr(mean_positions)
+ return interleave(mean_positions)
class Solid(object):
def __init__(self, mesh, inside, outside):
diff --git a/test.py b/test.py
index 9b0644d..236d1ec 100644
--- a/test.py
+++ b/test.py
@@ -12,6 +12,7 @@ from geometry import *
from materials import *
from camera import *
from vector import *
+import detectors
import pygame
@@ -40,15 +41,7 @@ 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/lionsolid.stl'), vacuum, vacuum)
-#geometry = Geometry()
-#geometry.add_solid(solid)
-#geometry.build(bits=3)
-
-import detectors
-
-geometry = detectors.build_lbne()
-#geometry = detectors.load_lbne('./detectors/lbne_8bit.pkl')
+geometry = detectors.build_lbne(bits=6)
mesh = geometry.mesh
mesh = mesh.reshape(mesh.shape[0]*3,3)
@@ -90,11 +83,12 @@ states = np.empty(width*height, dtype=np.int32)
states_gpu = cuda.to_device(states)
block_size = 64
-for i in range(10):
+for i in range(100000):
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))
- translate(np.int32(origin.size), origin_gpu, gpuarray.vec.make_float3(-.5*np.sin(i*np.pi/100), -.5*np.cos(i*np.pi/100), 0), block=(block_size,1,1), grid=(width*height//block_size+1,1))
+ #translate(np.int32(origin.size), origin_gpu, gpuarray.vec.make_float3(-np.sin(i*np.pi/100)/2, -np.cos(i*np.pi/100)/2, 0), 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, 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])