gaussian-point-splatting

JorisARBSD-3-Clause活跃维护

用 C++ 实现的高斯点泼溅渲染方案,把 3D 高斯点直接投影成图像,为实时三维重建和新视角合成提供高效渲染路径。

Official implementation of Gaussian point splatting (SIGGRAPH'26)

暂无版本218star16fork同步于 2026-11-07 07:30 UTC

怎么上手

由 README 提炼,执行前请确认
git clone <repo>
cmake 构建项目
./gaussian_splatting --model-path ./data/scene_01 --resolution 1920 1080 --samples-per-pixel 4
硬件要求按 README 说明

需要 NVIDIA GPU,README 示例在 RTX 4070 Ti SUPER 上交互渲染 4.25 亿高斯;多 GPU 笔记本须指定独显,否则 CUDA-OpenGL 互操作初始化失败;README 未给出具体显存数值。

需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用随机点泼溅实时渲染上亿个 3DGS 高斯,免排序、无需 LOD 的官方实现

用 C++ 实现的高斯点泼溅渲染方案,把 3D 高斯点直接投影成图像,为实时三维重建和新视角合成提供高效渲染路径。

核心能力

  • 采样像素大小的不透明点并原子泼溅,省去排序
  • 用随机透明度与工作量分配均衡 GPU 线程负载
  • 支持分层剔除与遮挡剔除加速大规模场景
  • 内置压缩高斯格式与 Morton 排序降低内存占用
  • 可加载 3DGS 输出目录或 .ply 模型并回放相机轨迹

容易踩的坑

需自备 CUDA Toolkit(开发用 12.6)与 CMake >= 3.27;需自行准备训练好的 3DGS 模型或 .ply 文件;--max-number-of-points 默认上限 2.5e8,过低会漏渲染、过高吃显存。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Gaussian Point Splatting

    Teaser image showing over 4 copies of a town rendered using Gaussians, with two magnified insets.

    We propose Gaussian point splatting, a stochastic method for rendering massive 3DGS scenes. By sampling pixel-sized opaque points, splatting them atomically, and applying stochastic transparency, we eliminate the need for sorting. Our approach distributes workload evenly across GPU threads, enabling the real-time display of hundreds of millions of Gaussians efficiently.

    Citation

    If you find this code useful for your research, please consider citing our paper:

    @article{Rijsdijk2026GaussianPointSplatting,
      title = {Gaussian Point Splatting},
      author = {Rijsdijk, Joris and Peters, Christoph and Weinnman, Michael and Marroquim, Ricardo},
      journal = {ACM Trans. Graph.},
      volume = {45},
      number = {4},
      publisher = {Association for Computing Machinery},
      year = {2026},
      doi = {10.1145/3811272}
    }
    

    How to Run

    Prerequisites

    • CUDA Toolkit (developed with version 12.6)
    • CMake (>= 3.27)
    • All other third-party packages are included directly in /packages
    • Note: This application requires an NVIDIA GPU to work. On systems with multiple GPUs (e.g., laptops with integrated graphics), you must ensure the application is configured to run on your dedicated NVIDIA GPU. If the executable defaults to the integrated GPU, the CUDA-OpenGL interoperability will fail to initialize.

    Installation

    • Clone the repository
    • Build the project using CMake

    Example Usage

    ./gaussian_splatting --model-path ./data/scene_01 --resolution 1920 1080 --samples-per-pixel 4
    

    Command Line Arguments

    ArgumentDescription
    --model-path <path>Path to the trained Gaussian point model. (Either a .ply file, or the root folder of a 3DGS output.)
    --resolution <w> <h>Sets the render window resolution (e.g., --resolution 1920 1080).
    --supersampling-factor <n>Overrides the default supersampling factor, (2 -> 2x2 samples per output pixel)
    --max-number-of-points <n>Overrides the default limit on the number of points per frame, (250e6). If the limit is too low, some Gaussians might not render. Higher limits use more VRAM.
    --samples-per-pixel <n>Overrides the default number of samples per pixel, (1)
    --fovy <degrees>Overrides the default camera field of view (45)
    --near-view-plane <distance>Overrides the default camera near view plane (0.2)
    --far-view-plane <distance>Overrides the default camera far view plane (10000)
    --camera-path <path>Load a .json camera trajectory exported by 3DGS. If --model--path points to a 3DGS output directory, it automatically loads the camera path.
    --disable-hierarchical-cullingDisables hierarchical culling optimizations.
    --disable-occlusion-cullingDisables occlusion culling.
    --sort-morton-orderEnables Morton order sorting for faster processing and lower (system) RAM usage.
    --one-point-per-threadIf enabled, the renderer uses K = 1 (as described in the paper). By default, K = (supersampling factor)^2. Enabling this flag enables mathematically more correct rendering, at the cost of (much) higher frame times.
    --play-camera-pathAutomatically play the loaded camera path on start.
    --disable-guiDisables the UI overlay.
    --cull-smallEnables culling for small Gaussian splats from Splatshop. This does not make a big difference in frame time for our renderer.
    --background <r> <g> <b>Sets the RGB background color.

    Controls

    • Use WASD (horizontal movement), space bar (vertical up), ctrl (vertical down) and the mouse (rotation) to control the camera.
    • Use backspace to toggle the visibility of the UI.
    • Use escape to toggle mouse pointer lock.
    • Use F5 to take a screenshot, saved at ./out/screenshots.

    Important Files

    The main contributions of the paper can be found in the following files:

    FileDescription
    src/main.cuRender loop and program entry
    src/config.hDefines compile-time constants, for instance to toggle spherical harmonics and compression.
    src/core/rendering/passes/gaussian_point_splatting.cuImplementation of the main method, including kernels for preprocessing, splatting, and combining of samples.
    src/core/rendering/passes/post_processing_kernels.cuhImplementation of temporal reuse.
    src/core/random/workload/workload_distributor.cuhHandles the workload distribution algorithm as discussed in the paper.
    src/core/gaussians/gaussian_types.cuhImplementation of our compressed Gaussian format.
    src/core/rendering/occlusion/gaussian_bvh.cuComputes the hierarchy and handles hierarchical culling.
    src/core/rendering/occlusion/depth_mip_chain.cuComputes the depth mip chain and exposes a device function to check whether an AABB at a certain depth is occluded or not.
    assets/cameras/*.jsonThe camera paths used to run our experiments and render our supplemental video. The file format is consistent with 3DGS.

    Evaluation Scenes

    The following scenes were used to test the implementation:


    License

    This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.

    Acknowledgments

    This work was supported by the Dutch Research Council (NWO) under the project VR Retrofit-4U (Grant ID: 10.61686/EIHMV70145).

    The large-scale scene (Jastrzebia Góra) used in our teaser was provided by Andrii Shramko, Teleportour.