Classes | |
class | FastWindingNumber |
class | PointsProjector |
CUDA-backed implementation of IPointsProjector. More... | |
class | PointsToMeshProjector |
Computes the closest point on mesh to each of given points on GPU. It caches data that necessary for computing. More... | |
Functions | |
MRCUDA_API bool | isCudaAvailable (int *driverVersion=nullptr, int *runtimeVersion=nullptr, int *computeMajor=nullptr, int *computeMinor=nullptr) |
MRCUDA_API size_t | getCudaAvailableMemory () |
MRCUDA_API size_t | getCudaSafeMemoryLimit () |
MRCUDA_API size_t | maxBufferSize (size_t availableBytes, size_t elementCount, size_t elementBytes) |
MRCUDA_API size_t | maxBufferSizeAlignedByBlock (size_t availableBytes, const Vector2i &blockDims, size_t elementBytes) |
MRCUDA_API size_t | maxBufferSizeAlignedByBlock (size_t availableBytes, const Vector3i &blockDims, size_t elementBytes) |
MRCUDA_API Expected< DistanceMap > | distanceMapFromContours (const Polyline2 &polyline, const ContourToDistanceMapParams ¶ms) |
Computes distance of 2d contours according to ContourToDistanceMapParams (works correctly only when withSign==false) | |
MRCUDA_API size_t | distanceMapFromContoursHeapBytes (const Polyline2 &polyline, const ContourToDistanceMapParams ¶ms) |
Computes memory consumption of distanceMapFromContours function. | |
MRCUDA_API float3 | fromVec (const Vector3f &v) |
MRCUDA_API int3 | fromVec (const Vector3i &v) |
MRCUDA_API Matrix4 | fromXf (const MR::AffineXf3f &xf) |
MRCUDA_API Expected< DistanceMap > | computeDistanceMap (const Mesh &mesh, const MeshToDistanceMapParams ¶ms, ProgressCallback cb={}, std::vector< MeshTriPoint > *outSamples=nullptr) |
MRCUDA_API size_t | computeDistanceMapHeapBytes (const Mesh &mesh, const MeshToDistanceMapParams ¶ms, bool needOutSamples=false) |
Computes memory consumption of computeDistanceMap function. | |
template<typename BufferType , typename InputIt , typename GPUFunc , typename CPUFunc > | |
Expected< void > | cudaPipeline (BufferType init, InputIt begin, InputIt end, GPUFunc gpuFunc, CPUFunc cpuFunc) |
MRCUDA_API Expected< std::unique_ptr< PointCloudDataHolder > > | copyDataFrom (const PointCloud &pc, bool copyNormals=false, const std::vector< Vector3f > *normals=nullptr) |
copy point cloud-related data to the GPU memory | |
MRCUDA_API size_t | pointCloudHeapBytes (const PointCloud &pc, bool copyNormals=false, const std::vector< Vector3f > *normals=nullptr) |
return the amount of GPU memory required for MR::Cuda::PointCloudDataHolder | |
MRCUDA_API Expected< std::vector< MR::PointsProjectionResult > > | findProjectionOnPoints (const PointCloud &pointCloud, const std::vector< Vector3f > &points, const FindProjectionOnPointsSettings &settings={}) |
computes the closest points on point cloud to given points | |
MRCUDA_API size_t | findProjectionOnPointsHeapBytes (const PointCloud &pointCloud, size_t pointsCount) |
returns the minimal amount of free GPU memory required for MR::Cuda::findProjectionOnPoints | |
MRCUDA_API Expected< MR::SimpleVolumeMinMax > | pointsToDistanceVolume (const PointCloud &cloud, const MR::PointsToDistanceVolumeParams ¶ms) |
makes SimpleVolume filled with signed distances to points with normals | |
MRCUDA_API Expected< void > | pointsToDistanceVolumeByParts (const PointCloud &cloud, const MR::PointsToDistanceVolumeParams ¶ms, std::function< Expected< void >(const SimpleVolumeMinMax &volume, int zOffset)> addPart, int layerOverlap) |
MRCUDA_API VertScalars | computeSkyViewFactor (const Mesh &terrain, const VertCoords &samples, const VertBitSet &validSamples, const std::vector< MR::SkyPatch > &skyPatches, BitSet *outSkyRays=nullptr, std::vector< MR::MeshIntersectionResult > *outIntersections=nullptr) |
MRCUDA_API BitSet | findSkyRays (const Mesh &terrain, const VertCoords &samples, const VertBitSet &validSamples, const std::vector< MR::SkyPatch > &skyPatches, std::vector< MR::MeshIntersectionResult > *outIntersections=nullptr) |
MRCUDA_API Expected< void > | negatePicture (MR::Image &image) |
MRCUDA_API void | loadMRCudaDll () |
MRCUDA_API Expected< DistanceMap > MR::Cuda::computeDistanceMap | ( | const Mesh & | mesh, |
const MeshToDistanceMapParams & | params, | ||
ProgressCallback | cb = {}, | ||
std::vector< MeshTriPoint > * | outSamples = nullptr ) |
computes distance (height) map for given projection parameters using float-precision for finding ray-mesh intersections, which is faster but less reliable
MRCUDA_API size_t MR::Cuda::computeDistanceMapHeapBytes | ( | const Mesh & | mesh, |
const MeshToDistanceMapParams & | params, | ||
bool | needOutSamples = false ) |
Computes memory consumption of computeDistanceMap function.
|
nodiscard |
computes relative radiation in each valid sample point by emitting rays from that point in the sky: the radiation is 1.0f if all rays reach the sky not hitting the terrain; the radiation is 0.0f if all rays do not reach the sky because they are intercepted by the terrain;
outSkyRays | - optional output bitset where for every valid sample #i its rays are stored at indices [i*numPatches; (i+1)*numPatches), 0s for occluded rays (hitting the terrain) and 1s for the ones which don't hit anything and reach the sky |
outIntersections | - optional output vector of MeshIntersectionResult for every valid sample point |
MRCUDA_API Expected< std::unique_ptr< PointCloudDataHolder > > MR::Cuda::copyDataFrom | ( | const PointCloud & | pc, |
bool | copyNormals = false, | ||
const std::vector< Vector3f > * | normals = nullptr ) |
copy point cloud-related data to the GPU memory
Expected< void > MR::Cuda::cudaPipeline | ( | BufferType | init, |
InputIt | begin, | ||
InputIt | end, | ||
GPUFunc | gpuFunc, | ||
CPUFunc | cpuFunc ) |
Process data by blocks alternately by GPU and CPU. GPUFunc is executed in a separate thread. Both GPUFunc and CPUFunc must satisfy the following signature: MR::Expected<void> (*funcName) ( BufferType& buffer, InputIt::value_type value )
MRCUDA_API Expected< DistanceMap > MR::Cuda::distanceMapFromContours | ( | const Polyline2 & | polyline, |
const ContourToDistanceMapParams & | params ) |
Computes distance of 2d contours according to ContourToDistanceMapParams (works correctly only when withSign==false)
MRCUDA_API size_t MR::Cuda::distanceMapFromContoursHeapBytes | ( | const Polyline2 & | polyline, |
const ContourToDistanceMapParams & | params ) |
Computes memory consumption of distanceMapFromContours function.
MRCUDA_API Expected< std::vector< MR::PointsProjectionResult > > MR::Cuda::findProjectionOnPoints | ( | const PointCloud & | pointCloud, |
const std::vector< Vector3f > & | points, | ||
const FindProjectionOnPointsSettings & | settings = {} ) |
computes the closest points on point cloud to given points
MRCUDA_API size_t MR::Cuda::findProjectionOnPointsHeapBytes | ( | const PointCloud & | pointCloud, |
size_t | pointsCount ) |
returns the minimal amount of free GPU memory required for MR::Cuda::findProjectionOnPoints
|
nodiscard |
In each valid sample point tests the rays from that point in the sky;
outIntersections | - optional output vector of MeshIntersectionResult for every valid sample point |
MRCUDA_API float3 MR::Cuda::fromVec | ( | const Vector3f & | v | ) |
MRCUDA_API int3 MR::Cuda::fromVec | ( | const Vector3i & | v | ) |
MRCUDA_API Matrix4 MR::Cuda::fromXf | ( | const MR::AffineXf3f & | xf | ) |
MRCUDA_API size_t MR::Cuda::getCudaAvailableMemory | ( | ) |
MRCUDA_API size_t MR::Cuda::getCudaSafeMemoryLimit | ( | ) |
MRCUDA_API bool MR::Cuda::isCudaAvailable | ( | int * | driverVersion = nullptr, |
int * | runtimeVersion = nullptr, | ||
int * | computeMajor = nullptr, | ||
int * | computeMinor = nullptr ) |
MRCUDA_API void MR::Cuda::loadMRCudaDll | ( | ) |
MRCUDA_API size_t MR::Cuda::maxBufferSize | ( | size_t | availableBytes, |
size_t | elementCount, | ||
size_t | elementBytes ) |
MRCUDA_API size_t MR::Cuda::maxBufferSizeAlignedByBlock | ( | size_t | availableBytes, |
const Vector2i & | blockDims, | ||
size_t | elementBytes ) |
MRCUDA_API size_t MR::Cuda::maxBufferSizeAlignedByBlock | ( | size_t | availableBytes, |
const Vector3i & | blockDims, | ||
size_t | elementBytes ) |
MRCUDA_API size_t MR::Cuda::pointCloudHeapBytes | ( | const PointCloud & | pc, |
bool | copyNormals = false, | ||
const std::vector< Vector3f > * | normals = nullptr ) |
return the amount of GPU memory required for MR::Cuda::PointCloudDataHolder
MRCUDA_API Expected< MR::SimpleVolumeMinMax > MR::Cuda::pointsToDistanceVolume | ( | const PointCloud & | cloud, |
const MR::PointsToDistanceVolumeParams & | params ) |
makes SimpleVolume filled with signed distances to points with normals
MRCUDA_API Expected< void > MR::Cuda::pointsToDistanceVolumeByParts | ( | const PointCloud & | cloud, |
const MR::PointsToDistanceVolumeParams & | params, | ||
std::function< Expected< void >(const SimpleVolumeMinMax &volume, int zOffset)> | addPart, | ||
int | layerOverlap ) |
makes SimpleVolume filled with signed distances to points with normals populate the volume by parts to the given callback