- CUDA implementation of Monte Carlo Geometry Processing
- GPU based Linear Bounding Volume Hierarchy, Closest point query
- Laplace and Poisson PDE solver based on Walk on Sphere algorithm
- Consideration of only Diriclet Boundary Condition
- Parallel execution of 1's algorithm
- Other BVH method
- Other Walk on method (Walk on Star shape, Walk on Boundary)
- Shader excution reordering
CMake, C++17, CUDA 11.8, Visual Studio 2019 (Windows 10, 11)
tinyply, tiny-cuda-nn(reference), Polyscope (for visualiziation)
- Visualization of the tested solver by Polyscope is implemented in demo/wosolver.cu. Please refer this.
Windows
mkdir build
cd build && cmake ..
cmake -B build
.\build\test_wos.exe
- Define Boundary Condition and Source Term for PDE The functioncallity in this repo works by functor. Just define the interesting boundary condition and source term as below.
struct BoundaryCondition {
HOST_DEVICE float operator()(vec3 x) {
return cos(2.f*M_PI*x.x) * sin(2.f*M_PI*x.y);
}
};
struct SourceTerm {
HOST_DEVICE float operator()(vec3 x) {
return (M_PI*M_PI) * cos(2.f*M_PI*x.x) * sin(2.f*M_PI*x.y);
}
};
int main() {
WoSolver<TriangleLBVH> solver(mesh.v(), mesh.f(), stream);
Laplace<BoundaryCondition> laplace;
Poisson<BoundaryCondition, SourceTerm> poisson;
... make cuda stream interesting points
...
auto gpu_result = solver.estimate_features(stream, gpu_points.mut_span(), laplace, poisson);
}