CLRaycaster: GPU OpenCL version of BVH Raycasting.
More...
#include <CLRaycaster.hpp>
|
bool | castRay (const Vector3f &origin, const Vector3f &direction, IntT &intersection) |
| Overload functions ///. More...
|
|
void | castRays (const std::vector< Vector3f > &origins, const std::vector< Vector3f > &directions, std::vector< IntT > &intersections, std::vector< uint8_t > &hits) override |
| Cast from multiple ray origin/direction pairs onto the mesh. More...
|
|
void | castRays (const Vector3f &origin, const std::vector< Vector3f > &directions, std::vector< IntT > &intersections, std::vector< uint8_t > &hits) override |
| Cast a ray from single origin with multiple directions onto the mesh. More...
|
|
| CLRaycaster (const MeshBufferPtr mesh, unsigned int stack_size=32) |
| Constructor: Generate BVH tree on mesh, loads CL kernels. More...
|
|
| BVHRaycaster (const MeshBufferPtr mesh, unsigned int stack_size=64) |
| Constructor: Stores mesh as member. More...
|
|
virtual void | castRays (const std::vector< Vector3f > &origins, const std::vector< std::vector< Vector3f > > &directions, std::vector< std::vector< IntT > > &intersections, std::vector< std::vector< uint8_t > > &hits) |
| Cast rays with multiples origins. Each origin has multiples directions. More...
|
|
virtual void | castRays (const Vector3f &origin, const std::vector< std::vector< Vector3f > > &directions, std::vector< std::vector< IntT > > &intersections, std::vector< std::vector< uint8_t > > &hits) |
| Cast a ray from a single origin with multiple directions (in matrix form) onto the mesh. More...
|
|
| RaycasterBase (const MeshBufferPtr mesh) |
| Constructor: Stores mesh as member. More...
|
|
template<typename IntT>
class lvr2::CLRaycaster< IntT >
CLRaycaster: GPU OpenCL version of BVH Raycasting.
Definition at line 70 of file CLRaycaster.hpp.
◆ CLRaycaster()
Constructor: Generate BVH tree on mesh, loads CL kernels.
◆ castRay()
Overload functions ///.
Cast a single ray onto the mesh. Hint: Better not use it on GPU.
- Parameters
-
[in] | origin | Ray origin |
[in] | direction | Ray direction |
[out] | intersection | User defined intersection output |
- Returns
- true Intersection found
-
false Not intersection found
Reimplemented from lvr2::BVHRaycaster< IntT >.
◆ castRays() [1/2]
template<typename IntT >
void lvr2::CLRaycaster< IntT >::castRays |
( |
const std::vector< Vector3f > & |
origins, |
|
|
const std::vector< Vector3f > & |
directions, |
|
|
std::vector< IntT > & |
intersections, |
|
|
std::vector< uint8_t > & |
hits |
|
) |
| |
|
overridevirtual |
Cast from multiple ray origin/direction pairs onto the mesh.
- Parameters
-
[in] | origin | Origin of the ray |
[in] | directions | Directions of the ray |
[out] | intersections | User defined intersections output |
[out] | hits | Intersection found or not |
Reimplemented from lvr2::RaycasterBase< IntT >.
◆ castRays() [2/2]
template<typename IntT >
void lvr2::CLRaycaster< IntT >::castRays |
( |
const Vector3f & |
origin, |
|
|
const std::vector< Vector3f > & |
directions, |
|
|
std::vector< IntT > & |
intersections, |
|
|
std::vector< uint8_t > & |
hits |
|
) |
| |
|
overridevirtual |
Cast a ray from single origin with multiple directions onto the mesh.
- Parameters
-
[in] | origin | Origin of the ray |
[in] | directions | Directions of the ray |
[out] | intersections | User defined intersections output |
[out] | hits | Intersection found or not |
Reimplemented from lvr2::RaycasterBase< IntT >.
◆ copyBVHToGPU()
◆ createKernel()
◆ getDeviceInformation()
◆ initOpenCL()
Initializes OpenCL related stuff.
◆ initOpenCLBuffer()
template<typename IntT >
void lvr2::CLRaycaster< IntT >::initOpenCLBuffer |
( |
size_t |
num_origins, |
|
|
size_t |
num_dirs |
|
) |
| |
|
private |
◆ initOpenCLTreeBuffer()
◆ m_bvhIndicesOrTriListsBuffer
◆ m_bvhLimitsnBuffer
◆ m_bvhTriangleIntersectionDataBuffer
◆ m_bvhTriIdxListBuffer
◆ m_context
◆ m_device
◆ m_device_global_memory
◆ m_kernel_multi_multi
◆ m_kernel_one_multi
◆ m_kernel_one_one
◆ m_max_work_group_size
◆ m_mps
◆ m_platform
◆ m_program
◆ m_queue
◆ m_rayBuffer
◆ m_rayOriginBuffer
◆ m_resultBuffer
◆ m_threads_per_block
◆ m_warp_size
The documentation for this class was generated from the following file: