{"id":28567075,"url":"https://github.com/guoriyue/3dgs-warp-scratch","last_synced_at":"2026-03-05T19:38:03.802Z","repository":{"id":291518831,"uuid":"813181415","full_name":"guoriyue/3dgs-warp-scratch","owner":"guoriyue","description":"Build 3D Gaussian Splatting from scratch with NVIDIA Warp in Python — CPU/GPU compatible, with a clean and minimalist design focused on learning modern graphics.","archived":false,"fork":false,"pushed_at":"2025-09-03T07:10:15.000Z","size":32638,"stargazers_count":195,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-03T09:10:52.185Z","etag":null,"topics":["3dgs","build-from-scratch","cuda","graphics","nerf","nvidia-warp","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guoriyue.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-06-10T16:12:21.000Z","updated_at":"2025-09-03T07:10:18.000Z","dependencies_parsed_at":"2025-05-24T23:22:06.875Z","dependency_job_id":"501ae120-f8c7-46a3-80c5-edf42967843e","html_url":"https://github.com/guoriyue/3dgs-warp-scratch","commit_stats":null,"previous_names":["guoriyue/3dgs-warp-scratch"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/guoriyue/3dgs-warp-scratch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoriyue%2F3dgs-warp-scratch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoriyue%2F3dgs-warp-scratch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoriyue%2F3dgs-warp-scratch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoriyue%2F3dgs-warp-scratch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guoriyue","download_url":"https://codeload.github.com/guoriyue/3dgs-warp-scratch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoriyue%2F3dgs-warp-scratch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006453,"owners_count":26084108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["3dgs","build-from-scratch","cuda","graphics","nerf","nvidia-warp","python"],"created_at":"2025-06-10T15:40:33.675Z","updated_at":"2025-10-11T06:32:20.900Z","avatar_url":"https://github.com/guoriyue.png","language":"Python","funding_links":[],"categories":["Implementations","Tools, Pipeline \u0026 Utilities"],"sub_categories":["Community Implementations","Gaussian Splatting \u0026 NeRF"],"readme":"# 3D Gaussian Splatting in Python with NVIDIA Warp\n\nThis project reimplements the core ideas of 3D Gaussian Splatting in a clean, minimalist Python codebase using NVIDIA Warp. It runs on both CPU and GPU with no CUDA setup, focuses on clarity and parallelism, and is designed as a practical entry point for learning modern graphics and differentiable rendering.\n\n## Why This Implementation?\n\n### ✅ CPU \u0026 GPU with Zero Hassle\n\nThanks to Warp, the same kernel code runs seamlessly on both CPU and GPU — no need to deal with CUDA setup, driver issues, or device-specific kernels. Just flip one config line.\n\n### 🧠 Learn Modern Graphics the Easy Way\n\nExplore differentiable rendering and parallel graphics through clean, readable Python — no pricey GPUs, complex toolchains, or heavy C++/CUDA boilerplate needed.\n\n### 📦 Minimalist \u0026 Educational\n\nThis isn’t another massive codebase. It’s designed for clarity and experimentation. Strips away complexity so you can focus on understanding how Gaussian Splatting really works.\n\n![The training video](examples/example_train_lego.gif)\n\n## Quick Start\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/guoriyue/3dgs-warp-scratch.git\ncd 3dgs-warp-scratch\n\n# Install dependencies\npip install warp-lang==1.7.0 numpy==1.26.4 matplotlib==3.9.2 imageio==2.34.1 tqdm==4.66.5 plyfile torch==2.6.0\n```\n\n### Download Example Data\n\n```bash\n# Download the Lego dataset\nbash download_example_data.sh\n```\n\n\n### Rendering\n\n```bash\n# Render 3 Gaussian points – a minimalist example\npython render.py\n```\nYou should see 3 Gaussian points like:\n\n\u003cimg src=\"examples/example_render.png\" alt=\"this\" width=\"300\"/\u003e\n\n### Training\n\n```bash\n# Train on Lego dataset (CPU by default)\n# For GPU training, change DEVICE in config.py to \"cuda\"\npython train.py\n```\n\n\n## Project Structure\n\n```\n├── forward.py                # 3DGS: Forward pass (reimplementation of graphdeco-inria/gaussian-splatting)\n├── backward.py               # 3DGS: Backward pass (reimplementation of graphdeco-inria/gaussian-splatting)\n\n├── train.py                  # Main training loop\n├── render.py                 # Rendering script to validate outputs; confirms forward pass correctness\n├── config.py                 # Configuration and training parameters\n\n\n├── loss.py                   # Loss functions for training (includes depth loss, though unused in this repo)\n├── scheduler.py              # Learning rate scheduler\n├── optimizer.py              # Adam optimizer and densify \u0026 prune logic\n\n├── utils/\n│   ├── camera_utils.py       # Load camera intrinsics and extrinsics from training data\n│   ├── point_cloud_utils.py  # Point cloud I/O utilities (e.g., saving to .ply)\n│   ├── math_utils.py         # General math utilities (e.g., transformation matrices)\n│   └── wp_utils.py           # Warp utilities for math operations and device transfer\n\n└── data/                     # Contains the NeRF-synthetic 'Lego' dataset\n\n```\n\n`forward.py` and `backward.py` are based on [graphdeco-inria/gaussian-splatting](https://github.com/graphdeco-inria/gaussian-splatting). The original pure CUDA version is now reimplemented in Nvidia Warp, easy to understand, set up, and run.\n\nDensification and pruning logic is based on [yzslab/gaussian-splatting-lightning](https://github.com/yzslab/gaussian-splatting-lightning), but restructured here with minimal data preparation and simplified training logic.\n\n## License\n\nThis project is licensed under the **GNU Affero General Public License v3.0**.  \nSee the [LICENSE](./LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoriyue%2F3dgs-warp-scratch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguoriyue%2F3dgs-warp-scratch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoriyue%2F3dgs-warp-scratch/lists"}