UnityGaussianSplatting

aras-pMIT活跃维护

在 Unity 里直接渲染和查看 3D Gaussian Splatting 重建结果,省去自己写渲染管线的麻烦,适合做三维场景可视化。

Gaussian Splatting visualization for Unity

v2.0.0发布于 2026-11-02 15:59 UTC3,462star +1 / 7 天483fork同步于 2026-11-10 11:40 UTC

怎么上手

由 README 提炼,执行前请确认
打开 projects/GaussianExample(BiRP,2022.3)或 projects/GaussianExample-URP / -HDRP(6000.0),载入 GSTestScene 场景;把 .ply 或 .spz 放到 Assets/StreamingAssets 下,再拖到 GaussianSplatRenderer 的 PLY / SPZ 字段
硬件要求按 README 说明

README 未给出显存下限,但给出参考:6.1M splats 场景在 RTX 3080 Ti 上占 4.8GB 显存。仅支持 D3D12、Metal、Vulkan 平台(Windows、Mac、Linux),Windows 上 DX11 不可用;OpenGL、OpenGL ES、WebGPU 及多数移动端未验证或不可用。

8G 显存可跑支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

在 Unity 里实时渲染 3D Gaussian Splatting 模型的可视化工具

在 Unity 里直接渲染和查看 3D Gaussian Splatting 重建结果,省去自己写渲染管线的麻烦,适合做三维场景可视化。

核心能力

  • 支持加载原始 3DGS 论文的二进制 PLY 格式
  • 支持 Scaniverse SPZ 格式 1-4 版、SH 0-3 阶
  • 提供 Sorted Blended 与 Stochastic 两种渲染模式
  • 可读取同名 JSON 相机文件并切换预设视角
  • 附带 BiRP、URP、HDRP 三套示例工程

容易踩的坑

Windows 上必须用 DX12 或 Vulkan,DX11 直接不可用;PLY 必须是二进制格式且 splat 属性为普通 float,官方模型要取 point_cloud/iteration_*/point_cloud.ply;官方训练软件许可限学术非商用,商用需另向 INRIA 取得授权,与仓库自身 MIT 无关

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

最近发版

5 个版本v2.0.0
  1. v2.0.0v2.0.0: Direct PLY/SPZ loading, global sorting, stochastic render, removed edits/cutouts最新正式版2026-11-02 · 2026-11-02 15:59 UTC

    Against my better judgement, here's a "everything's changed!" release. Originally this repository was made to play around with some simple forms of 3DGS in-memory compression, where I explored a chunked splat layout, possibility of using e.g. BC7 texture compression for data, and so on. That was interesting, but it seems that most people who use this are only interested in "I just want to render splats inside unity" aspect. Later on I wanted to play around with things like stochastic transparency (#174), but never took the plunge to finish it. So this release reshuffles things around in a major way, hence 2.0.0 version.

    Note that like all this time, I have exactly zero VR/XR devices around, so these code paths could have broken in the process. I tried not to, but who knows!

    • No more "create gaussian asset" workflow; instead you just drop and use your 3DGS .ply or .spz files directly.
      • While at it, add SPZ 4 support (the one where data streams are zstd-compressed).
      • Support loading from files relative to StreamingAssets, filesystem (relative or absolute paths), or from URLs.
    • Removed all the splat editing tools; these days using something like SuperSplat Editor is much easier and they have more & better tools.
    • Global sorting: multiple intersecting splat objects now render correctly in the sorted/blended case too. Previously multiple overlapping splats did not quite sort correctly among themselves: whereas now they do:
    • Splat rendering options are not per-splat anymore, but rather global to the scene. Do that by adding GaussianSplatRenderingOptions component to any game object.
    • In addition to the traditional "sort the splats and alpha blend them", add an option for stochastic rendering, which needs no sorting. It can use a simple temporal/reprojection filter. Without any temporal filtering it is quite noisy: but with more frames it gets less noisy: and eventually more or less converges to regular result:
    • Removed some debug rendering options (the only left is "Draw Points"), removed option to sort only every Nth frame.
    • Runtime VRAM/memory usage is similar to previous "Medium" quality (about 104 bytes/splat), with a tiny bit higher data precision. Performance is similar as well.
    • Compile error and warning fixes for Unity 6.0, 6.3, 6.6, 7.0 alpha.

    Full Changelog: https://github.com/aras-p/UnityGaussianSplatting/compare/v1.1.2...v2.0.0

  2. v1.1.2v1.1.2: Fixes!2026-10-25 · 2026-10-25 17:36 UTC
    查看更新说明
    • Fix #25: Orthographic projection now works. #214 (@wells2kb)
    • Fix: Improved blending of gaussians with skyboxes and other objects. #189 (@AdrianTheFrog) and #199 (@mwfarb)
    • Fix: Splat editing selection rectangle was upside down.
    • Fix: Support lower order spherical harmonics in PLY. #200 (@WindyYam)
    • Fix: Support lower order spherical harmonics in SPZ. #222 (@winnie1994)
    • Fix #229: Crash after Morton reordering, when reading PLY file where file is below 2GB, but raw expanded data is above 2GB.
    • Fix #212: Incorrect reading of PLY files that contain non-vertex attributes, e.g. as produced by Apple SHARP.
    • Fix: Memory leak while reading PLY file.

    Full Changelog: https://github.com/aras-p/UnityGaussianSplatting/compare/v1.1.1...v1.1.2

  3. v1.1.1v1.1.1: More flexible PLY parsing, other fixes2025-04-09 · 2025-04-09 08:08 UTC
    查看更新说明
    • Improvement: can read PLY files that do not exactly match original 3DGS paper format. Fixes reading files produced by latest version of Postshot. #172, #170
    • Fix: rotations from Scaniverse SPZ files were read incorrectly. #163, thanks @d-kyles
    • Fix: clearer error message when trying to load non-binary PLY files. #165
  4. v1.1.0v1.1.0: SPZ format input, Unity 6 render graph, fixes2025-01-30 · 2025-01-30 08:22 UTC
    查看更新说明
    • Feature: Scaniverse SPZ input files are supported for creation of splat assets now. #161
      splat-spz
    • Feature: splat objects got a "Render Order" setting that can be used for more manual control of drawing order of multiple splat objects. render-order
    • Change: URP rendering is now done through Unity 6 render graph (thanks @zawazawagh!). #150
      • URP support requires Unity 6 or later now (turns out that previously added VR support made URP not work properly on earlier versions anyway).
      • URP requires Render Graph "Compatibility Mode" setting to be off.
    • Fix: exception when drag-dropping splat asset into a freshly created GaussianSplatRenderer component asset reference field (#153).
    • Fix: upside down rendering when HDR is off in Built-in Render Pipeline (#156).

    Full Changelog: https://github.com/aras-p/UnityGaussianSplatting/compare/v1.0.0...v1.1.0

  5. v1.0.0v1.0.0: VR support2024-11-28 · 2024-11-28 09:05 UTC
    查看更新说明

    Virtual Reality (VR/XR/MR/AR) support is in!

    While I have not tested any of that myself, @ninjamode contributed shader/script fixes needed for VR to work, and @b0nes164 did additional GPU sorting code fixes for GPUs in devices like Quest 3. All of that came in PR #146.

    • Reportedly works now: Quest 3, Quest Pro, HTC Vive, Varjo Aero.
    • Does not work: Apple Vision Pro, probably others that lack single-pass instanced rendering.

    Besides this, nothing else really changed; the version bump from 0.9 to 1.0 makes it sound like a larger release than it actually is :)

用户点评

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

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

    README 原文

    未翻译

    Gaussian Splatting playground in Unity

    SIGGRAPH 2023 had a paper "3D Gaussian Splatting for Real-Time Radiance Field Rendering" by Kerbl, Kopanas, Leimkühler, Drettakis that is really cool! Here's my visualizer / renderer of 3DGS for Unity.

    Screenshot

    Everything in this repository is based on that original gaussian splatting paper. Towards end of 2023, there's a ton of new gaussian splatting research coming out; none of that is in this project.

    :warning: Status as of 2026 November: I'm not planning any significant further development.

    :warning: The only platforms where this is known to work are the ones that use D3D12, Metal or Vulkan graphics APIs. PC (Windows on D3D12 or Vulkan), Mac (Metal), Linux (Vulkan) should work. Anything else I have not actually tested; it might work or it might not.

    • Some virtual reality devices reportedly work (reportedly HTC Vive, Varjo Aero, Quest 3 and Quest Pro). Some others might not work, e.g. Apple Vision Pro. See #17
    • Anything using OpenGL or OpenGL ES: #26
    • WebGPU might work someday, but seems that today it does not quite have all the required graphics features yet: #65
    • Mobile may or might not work. Some iOS devices definitely do not work (#72), some Androids do not work either (#112)

    Usage

    Download or clone this repository, open projects/GaussianExample (BiRP, 2022.3), projects/GaussianExample-URP (URP, 6000.0) or projects/GaussianExample-HDRP (HDRP, 6000.0) as a Unity project, and open GSTestScene scene in there. These should also work in Unity versions 6000.3, 6000.6 and 7000.0; perhaps some others too.

    Note that the project requires DX12 or Vulkan on Windows, i.e. DX11 will not work. This is not tested at all on mobile/web, and probably does not work there.

    Put a gaussian splat .ply or .spz file under Assets/StreamingAssets (for example, Assets/StreamingAssets/bicycle.ply). Have a GameObject with GaussianSplatRenderer component, and drag the file onto the PLY / SPZ field. StreamingAssets is convenient because files under that will automatically get included into player builds; the GaussianSplatRenderer source file path can be relative to streaming assets, current working directory, absolute filesystem path, or a URL.

    Add a GaussianSplatRenderingOptions component to any GameObject to change global rendering options (transparency method, temporal filtering, debug render mode and SH-only display). Sorted Blended is the default. Stochastic uses noisy alpha testing and depth writes without sorting; and can use several temporal filtering methods. Without an options component, defaults are used.

    Currently two file formats are supported:

    • PLY format from the original 3DGS paper (in the official paper models, the correct files are under point_cloud/iteration_*/point_cloud.ply). It needs to be binary PLY file, with all splat related properties being regular floats.
    • Scaniverse SPZ format; versions 1-4, with SH degrees 0-3. Antialiased files load with a warning; SPZ extensions are not supported.

    Optionally there can be a [basename].json file next to the PLY/SPZ file (e.g. garden.json for garden.ply), describing cameras, in format from the original paper. The inspector's Cameras selector then moves the main camera relative to the splat object.

    Additional documentation:

    That's it!

    Write-ups

    My own blog posts about all this:

    Performance numbers:

    "bicycle" scene from the paper, with 6.1M splats and first camera, rendering at 1200x797 resolution:

    • Windows (NVIDIA RTX 3080 Ti):
      • Official SBIR viewer: 7.4ms (135FPS). 4.8GB VRAM usage.
      • Unity, DX12 or Vulkan: 6.3ms (158FPS) - 4.5ms rendering, 0.9ms sorting, 0.5ms splat view calc.
    • Mac (Apple M4 Max):
      • Unity, Metal: 12.8ms (78FPS).

    At runtime, memory usage is 28 bytes per splat without SH, or 36/48/60 bytes for SH degrees 1/2/3 respectively. Besides this source data, rendering needs 44 bytes of GPU memory per splat in sorted blended mode, or 28 bytes in stochastic mode.

    License and External Code Used

    The code I wrote for this is under MIT license. The project also uses several 3rd party libraries:

    However, keep in mind that the license of the original paper implementation says that the official training software for the Gaussian Splats is for educational / academic / non-commercial purpose; commercial usage requires getting license from INRIA. That is: even if this viewer / integration into Unity is just "MIT license", you need to separately consider how did you get your Gaussian Splat PLY files.