{"id":29514156,"url":"https://github.com/bigmat18/cuda-mesh-voxelization","last_synced_at":"2026-05-15T21:38:17.519Z","repository":{"id":298351077,"uuid":"997486407","full_name":"bigmat18/cuda-mesh-voxelization","owner":"bigmat18","description":"GPU-accelerated pipeline for robust 3D mesh Boolean operations (CSG) using voxelized Signed Distance Fields (SDFs).","archived":false,"fork":false,"pushed_at":"2026-03-29T01:35:10.000Z","size":43399,"stargazers_count":25,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T04:29:46.465Z","etag":null,"topics":["computer-graphics","cuda","hpc","mesh-processing","voxel"],"latest_commit_sha":null,"homepage":"https://www.canva.com/design/DAGtctetbj0/ZMeEuIOAW2boftsXtSnLZQ/edit?utm_content=DAGtctetbj0\u0026utm_campaign=designshare\u0026utm_medium=link2\u0026utm_source=sharebutton","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bigmat18.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-06T15:55:59.000Z","updated_at":"2026-03-29T01:35:14.000Z","dependencies_parsed_at":"2025-06-25T23:18:10.745Z","dependency_job_id":"a2b0f414-1c52-4b6e-98fc-55f4bd0e554d","html_url":"https://github.com/bigmat18/cuda-mesh-voxelization","commit_stats":null,"previous_names":["bigmat18/cuda-surface-voxelization"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bigmat18/cuda-mesh-voxelization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigmat18%2Fcuda-mesh-voxelization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigmat18%2Fcuda-mesh-voxelization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigmat18%2Fcuda-mesh-voxelization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigmat18%2Fcuda-mesh-voxelization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigmat18","download_url":"https://codeload.github.com/bigmat18/cuda-mesh-voxelization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigmat18%2Fcuda-mesh-voxelization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33080779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-graphics","cuda","hpc","mesh-processing","voxel"],"created_at":"2025-07-16T14:00:55.757Z","updated_at":"2026-05-15T21:38:17.515Z","avatar_url":"https://github.com/bigmat18.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CUDA Mesh Voxelization\n\n## 1. Introduction\n\n**CUDA Mesh Voxelization** is a C++/CUDA library and CLI for 3D mesh voxelization, CSG operations, and Signed Distance Field (SDF) computation on the GPU. The project is designed for benchmarking, visualization, and manipulation of volumetric 3D data, with a particular focus on performance and extensibility.\n\n### Features\n\n- **Mesh Voxelization:** Converts 3D triangle meshes into solid or surface voxel grids.\n- **CSG Operations:** Supports union, intersection, and difference operations between voxelized meshes.\n- **SDF Calculation:** Computes the signed distance field using the Jump Flooding Algorithm (JFA).\n- **CLI Application:** Command-line interface for batch processing and benchmarking.\n- **Benchmarking:** Comparative analysis between sequential, OpenMP, and CUDA implementations.\n- **Visualization:** Exports voxel grids for analysis and plotting.\n\n## 2. Papers, Libraries, and Requirements\n\n### Reference Papers and Algorithms\n\n- [Fast Parallel Surface and Solid Voxelization on GPUs by Michael Schwarz and Hans-Peter Seidel (2010)](https://michael-schwarz.com/research/publ/files/vox-siga10.pdf)\n- [Out-of-Core Construction of Sparse Voxel Octrees](https://graphics.cs.kuleuven.be/publications/BLD14OCCSVO)\n- [Jump Flooding in GPU with Applications to Voronoi Diagram and Distance Transform](https://www.comp.nus.edu.sg/~tants/jfa/i3d06.pdf)\n\n### Libraries Used\n\n- [cxxopts](https://github.com/jarro2783/cxxopts) for CLI parsing\n- CMake as the build system\n\n### Software Requirements\n\n- **C++:** \u003e= C++23\n- **CUDA Toolkit:** \u003e= 12.0\n- **CMake:** \u003e= 3.20\n- **Compiler:** GCC/Clang/MSVC with C++23 support\n\n---\n\n## 3. Installation and Usage\n\n### Installation\n\n```bash\ngit clone https://github.com/bigmat18/cuda-mesh-voxelization.git\ncd cuda-mesh-voxelization\ngit submodule update --init --recursive\ncmake -S . -B build\ncmake --build build --config Release\n```\n\n### Basic Usage\n\nVoxelize a mesh and export the result:\n\n```bash\n./build/Release/apps/cli/cli assets/bunny.obj -n 128 -e -t 2 -p 1 -s\n```\n\n**Main options:**\n- `-n` number of voxels per grid side\n- `-e` enable export\n- `-t` algorithm type (0 = sequential, 1 = naive, 2 = tiled, 3 = OpenMP)\n- `-p` CSG operation type (1 = union, 2 = intersection, 3 = difference)\n- `-s` compute SDF\n\nFor all available options:\n```bash\n./build/Release/apps/cli/cli -h\n```\n\n---\n\n## 4. Results\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\u003cimg src=\"images/snapshot04.png\" width=\"200\"/\u003e\u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\u003cimg src=\"images/snapshot02.png\" width=\"250\"/\u003e\u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\u003cimg src=\"images/snapshot05.png\" width=\"200\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n      \u003cb\u003eStanford Armadillo\u003c/b\u003e\u003cbr\u003e64 voxels/side\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n      \u003cb\u003eStanford Dragon\u003c/b\u003e\u003cbr\u003e256 voxels/side\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n      \u003cb\u003eStanford Bunny\u003c/b\u003e\u003cbr\u003e128 voxels/side\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"48%\"\u003e\u003cimg src=\"images/snapshot01.png\" width=\"230\"/\u003e\u003c/td\u003e\n    \u003ctd align=\"center\" width=\"48%\"\u003e\u003cimg src=\"images/snapshot00.png\" width=\"250\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"48%\"\u003e\n      Armadillo section (128 voxels), colored by SDF value.\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"48%\"\u003e\n      CSG section (Bimba ∪ Bunny, 64 voxels), colored by SDF value.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n## 5. Benchmark and Performance Analysis\n\n### Voxelization Performance Charts\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"350\"\u003e\n      \u003cimg src=\"images/bunny_3510/bunny_3510_vox_comparison_no_memory_12.jpg\" width=\"350\"/\u003e\u003cbr\u003e\n      \u003csub\u003eBunny 3,510 faces\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"350\"\u003e\n      \u003cimg src=\"images/bunny_56172/bunny_56172_vox_comparison_no_memory_12.jpg\" width=\"350\"/\u003e\u003cbr\u003e\n      \u003csub\u003eBunny 56,172 faces\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"350\"\u003e\n      \u003cimg src=\"images/bunny_168516/bunny_168516_vox_comparison_no_memory_12.jpg\" width=\"350\"/\u003e\u003cbr\u003e\n      \u003csub\u003eBunny 168,516 faces\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"350\"\u003e\n      \u003cimg src=\"images/bunny_337032/bunny_337032_vox_comparison_no_memory_12.jpg\" width=\"350\"/\u003e\u003cbr\u003e\n      \u003csub\u003eBunny 337,032 faces\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"350\"\u003e\n      \u003cimg src=\"images/bunny_674064/bunny_674064_vox_comparison_no_memory_12.jpg\" width=\"350\"/\u003e\u003cbr\u003e\n      \u003csub\u003eBunny 674,064 faces\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"350\"\u003e\n      \u003cimg src=\"images/bunny_1348128/bunny_1348128_vox_comparison_no_memory_12.jpg\" width=\"350\"/\u003e\u003cbr\u003e\n      \u003csub\u003eBunny 1,348,128 faces\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n### JFA Performance Charts\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ctable style=\"margin:0 auto;\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"400\" style=\"padding:2px;\"\u003e\n      \u003cimg src=\"images/bunny_1348128/bunny_1348128_jfa_comparison_no_memory_12.jpg\" width=\"330\"/\u003e\u003cbr\u003e\n      \u003csub\u003eImplementations comparison\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"440\"\u003e\n      \u003cimg src=\"images/bunny_1348128/bunny_1348128_jfa_bar_diagram_no_memory_12.jpg\" width=\"440\"/\u003e\u003cbr\u003e\n      \u003csub\u003eStages comparison\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigmat18%2Fcuda-mesh-voxelization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigmat18%2Fcuda-mesh-voxelization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigmat18%2Fcuda-mesh-voxelization/lists"}