Ejemplo n.º 1
0
void init_active_pixels(const BufferView<Ray> &rays,
                        BufferView<int> &active_pixels,
                        bool use_gpu,
                        ThrustCachedAllocator &thrust_alloc) {
    assert(rays.size() == active_pixels.size());
    DISPATCH(use_gpu, thrust::sequence, active_pixels.begin(), active_pixels.end());
    auto op = is_invalid_ray{rays.begin()};
    auto new_end = DISPATCH_CACHED(use_gpu, thrust_alloc, thrust::remove_if,
        active_pixels.begin(), active_pixels.end(),
        active_pixels.begin(), op);
    active_pixels.count = new_end - active_pixels.begin();
}
Ejemplo n.º 2
0
void update_active_pixels(const BufferView<int> &active_pixels,
                          const BufferView<Intersection> &isects,
                          BufferView<int> &new_active_pixels,
                          bool use_gpu) {
    auto op = is_valid_intersection{isects.begin()};
    auto new_end = DISPATCH(use_gpu, thrust::copy_if,
        active_pixels.begin(), active_pixels.end(),
        new_active_pixels.begin(), op);
    new_active_pixels.count = new_end - new_active_pixels.begin();
}