// // Created by dtouch on 23-5-23. // #ifndef RENDERSDF_ROD_GENERATE_CUH #define RENDERSDF_ROD_GENERATE_CUH #include "cuda_runtime.h" #include "rod.h" #include "Eigen/Eigen" #include "unsupported/Eigen/CXX11/Tensor" #include "pybind11/pybind11.h" #include "pybind11/numpy.h" namespace py = pybind11; #ifdef _MSC_VER #define DLL_EXPORT __declspec( dllexport ) #else #define DLL_EXPORT #endif __global__ void g_rod_generate(const RodCrystal *rodCrystal, cudaPitchedPtr sdf, const cudaExtent* extent, const Eigen::Vector3f *sampleMin, const Eigen::Vector3f *sampleMax, int radius); extern "C" DLL_EXPORT __host__ float* h_rod_generate(const RodCrystal &rodCrystal, const Eigen::Vector3i &sampleCnt, const Eigen::Vector3f &sampleMin, const Eigen::Vector3f &sampleMax, float radius); // return structure for ctypes in python typedef struct sdfStruct { // float *sdf; int *sampleCnt; int x; } sdfStruct, *sdfStructPtr; //extern "C" DLL_EXPORT sdfStruct* py::array_t generate(int sampleX, int sampleY, int sampleZ, float halfSampleRegion); class rod_generate { }; #endif //RENDERSDF_ROD_GENERATE_CUH