diff options
Diffstat (limited to 'camera.py')
-rwxr-xr-x | camera.py | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -70,7 +70,7 @@ class Camera(Thread): self.gpu = GPU(self.device_id) self.gpu.load_geometry(geometry) - self.kernels = CUDAFuncs(self.gpu.module, ['ray_trace', 'rotate', 'rotate_around_point', 'translate', 'update_xyz_lookup', 'update_xyz_image', 'process_image', 'init_rng']) + self.kernels = CUDAFuncs(self.gpu.module, ['ray_trace', 'ray_trace_alpha', 'rotate', 'rotate_around_point', 'translate', 'update_xyz_lookup', 'update_xyz_image', 'process_image', 'init_rng']) self.width, self.height = size @@ -94,6 +94,7 @@ class Camera(Thread): self.directions_gpu = gpuarray.to_gpu(directions.astype(np.float32).view(gpuarray.vec.float3)) self.pixels_gpu = gpuarray.zeros(self.width*self.height, dtype=np.int32) + self.alpha = True self.movie = False self.movie_index = 0 self.movie_dir = None @@ -205,7 +206,10 @@ class Camera(Thread): self.update_image() self.process_image() else: - self.kernels.ray_trace(np.int32(self.pixels_gpu.size), self.origins_gpu, self.directions_gpu, self.pixels_gpu, block=(self.nblocks,1,1), grid=(self.pixels_gpu.size//self.nblocks+1,1)) + if self.alpha: + self.kernels.ray_trace_alpha(np.int32(self.pixels_gpu.size), self.origins_gpu, self.directions_gpu, self.pixels_gpu, block=(self.nblocks,1,1), grid=(self.pixels_gpu.size//self.nblocks+1,1)) + else: + self.kernels.ray_trace(np.int32(self.pixels_gpu.size), self.origins_gpu, self.directions_gpu, self.pixels_gpu, block=(self.nblocks,1,1), grid=(self.pixels_gpu.size//self.nblocks+1,1)) pygame.surfarray.blit_array(self.screen, self.pixels_gpu.get().reshape(self.size)) pygame.display.flip() @@ -304,6 +308,10 @@ class Camera(Thread): self.clear_image() self.update() + elif event.key == K_F8: + self.alpha = not self.alpha + self.update() + elif event.key == K_m: if self.movie: encode_movie(self.movie_dir) |