View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.3.1
- Last updated
- First released
- Unity version
- 6000.3.28 or later
- Package size
- 29.1 MB
- Files
- 340
- Favorites
- 22
- Views in the past week
- 173
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $24.99 on
Keywords
SplatBridge — 3D Gaussian Splatting: Import, Stream & Play Real-World Scans
Bring photoreal 3D scans into Unity. Import SOG, SPZ and 3DGS PLY, stream large scenes under a fixed GPU budget, add collision, VR and visual effects. Built-in/URP/HDRP.
Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 10
SplatBridge — 3D Gaussian Splatting: Import, Stream & Play Real-World Scans screenshot 1
About this asset
Bring real places into Unity with 3D Gaussian Splatting: explorable scans reconstructed from photos. Drop in a .sog, .spz or 3DGS .ply, add collision and gameplay, or take it to VR. Built-in, URP and HDRP are supported. Large captures stream under a fixed GPU budget — city-scale scans included.
English/Japanese manuals, troubleshooting and tuning guides are included. The gallery shows the demo video and unedited Unity captures. Support: publisher contact on this page.
Import: one step, three formats
Import SOG (PlayCanvas / SuperSplat), SPZ (Niantic v3/v4) and 3DGS PLY (SH 0–3) as render-ready assets, without an external converter. Drop bundled files into Unity; import unbundled SOG through the editor menu. superspl.at datasets import directly. Binary 3DGS PLY can also become a streaming bake.
Rendering: every pipeline, correct compositing
• Built-in, URP (Unity 6 Render Graph and Compatibility Mode) and HDRP (Custom Pass). Shaders are included in player builds automatically.
• GPU depth sorting. A radix sort in compute re-sorts the draw order as the camera moves, never on the main thread, with an automatic background CPU fallback where compute sorting is unavailable (specifics under Technical details).
• Render scale. Draw splats into a downscaled offscreen target and composite: fill cost drops roughly with scale², UI and geometry stay full resolution. XR has a stereo-array version of the same lever.
• Correct compositing. Splats depth-test against your scene, so scanned content sits behind walls and props instead of floating over them.
• View-dependent color. The capture's SH bands 1–3 are evaluated per view, so gloss, glass and wet surfaces shift with the camera as recorded; switchable per object. Training is the default color mode for Linear projects; Legacy remains available. Far-field billboards retain SH color.
Streaming: city-scale under a fixed budget
Large captures do not fit in GPU memory, so SplatBridge streams them under a hard resident-splat budget you set once. If all finest full slices fit after page rounding and transition reserve, full detail stays resident automatically. Otherwise screen-space LOD adapts within the same cap.
• Screen-space quality. Splat Quality Pixels (τ) sets detail in screen pixels, with a fixed 2 px default. An optional Auto preset chooses a platform-specific value.
• Coarser, never holes. The plan pays for every cell of the dataset before spending anything on detail, so an under-sized budget is absorbed by drawing the scene coarser, not by dropping parts of it.
• Coverage checks. The bake log and Inspector flag budgets too small for complete coverage. Optional debug logs report coverage, achieved quality, error distribution and frame-time knee for tuning.
• Fixed memory. Max Resident Splats is a hard memory cap and the main performance lever — τ sets quality. The GPU buffer is allocated once at that size, with per-frame upload budgets, frustum culling and no-flash chunk swaps.
• Pre-baked streaming. One-click .splatbake conversion produces GPU-ready records; runtime chunk loads need no image decoding.
• Live in the editor. The Scene view runs the real streaming loop before Play — same worker, same budget, same LOD cuts — and idles once converged; move the camera to resume.
Edit scans in Unity
Select regions in Scene View, preview the result, then split, delete or extract. Use five volume shapes, lasso or selection brush with both SplatObjects and baked Streamers. Add, subtract and intersect selections, filter by opacity, size or color, and adjust selected color/opacity. Review isolated-cluster candidates before deletion. Merge objects and rebuild LODs, or export SOG, streamed SOG ZIP or PLY. Mirror Copy creates reflected parts; separated parts are ordinary GameObjects for Unity animation. Convert a binary 3DGS PLY directly into a streaming bake with generated LODs. Clone Repair and runtime clipping are supported editing tools.
• Realtime shadows (URP/HDRP). Cast onto Unity Lit meshes and receive their shadows, with independent Cast Shadows / Receive Shadows switches, both off by default. This adds shadows; it does not remove lighting captured in the scan.
Effects & transitions (1.3.0)
• 11 source-local modes and 16 presets: HDR glow, sonar, sphere/plane reveal, noise dissolve, scanlines, pulse, glitch, thermal look, monochrome and colorize. Thermal look uses luminance, not temperature.
• Effects Player, Inspector presets, edit-time scrubbing/Undo and UnityEvent/script recipes.
• HDR image crossfade and afterimages for fixed-size 2D render textures; XR arrays are unsupported.
• Effects preserve source data, colliders and shadow-casting geometry.
• Performance: active source effects bypass billboard caching and single-source EWA precomputation, which can substantially increase frame time. Keep them off if your frame budget relies on billboards. Playback holds its final state; set Amount to 0 to restore rendering. Billboard restoration rebuilds the cache. Profile on the target device.
Make it a game
• Collision. Generate a MeshCollider with adjustable grid size and occupancy. Voxel is the default; smoothing and surface fitting are optional. Use it with Unity physics and NavMesh baking. Generation reads the dataset independently of the displayed LOD and needs Editor memory. This is not runtime streamed collision.
• Reveal / hide animation. Five patterns (Scatter, FromPoint, Rain, Dissolve, Sweep) animate the actual gaussians in the vertex shader — no particle-to-splat handoff pop, and the fully revealed frame is exactly the normal render. It can wait for the streamer's first full coverage, so the scene converges at once instead of popping in.
• VFX Graph bridge. Sample the live splat buffers from VFX Graph: particles that spawn on the scanned surface, inherit its color and sync to the reveal wave. Two ready-to-paste HLSL recipes are in the manual.
• Runtime loading. SplatRuntimeLoader.LoadFromFile(path) loads .sog / .spz / .ply at runtime; errors surface as typed exceptions with the cause (unrecognized container, unsupported version, corrupt data …), not silent failure.
VR — and experimental Meta Quest standalone
PC VR (URP) is a first-class target: Single Pass Instanced and Multiview stereo, verified on Quest 3 over Link (OpenXR). The sort follows the head pose, so depth ordering holds up as you look around.
SplatBridge also runs on Quest 3 standalone (Android, OpenXR, Vulkan, Multiview) — the same importer, streamer, GPU depth sort and stereo path as on desktop, with one-time StreamingAssets extraction handled for you. It works on device today.
Quest standalone remains experimental. Performance depends heavily on the capture and settings; tuning is ongoing. Prototype and measure on device: no frame rate is guaranteed.
One more lever where fill binds: an opt-in impostor bakes the far field into a billboard, so the live draw only pays for near splats. The included Quest scene ships it on and tuned.
Use the included tuning panel and the manual's Quest setup guide to adjust budget, render scale and splat size on your device. Standalone performance remains scene-dependent.
Included samples: scenes and Effects Recipes
The smaller demo download includes source SOG. First open ClassroomDemo in the Editor and wait for streaming data to be generated; later openings reuse the verified cache. Then press Play.
• Demo scene. An indoor classroom (1.0M splats, 175 MB), ready to play: streaming, view-dependent color, a Sweep reveal, a camera dolly and physics balls on a splat-generated collider.
• Tuning panel. A ready-made VR scene with streaming/frame-time telemetry and controller adjustments for budget, τ, render scale and quad extent.
• Quest scene. XR rig, floor and streamer preconfigured for standalone. Its README lists the required Android/OpenXR project settings. Both XR scenes stream the classroom set.
• Effects Recipes. Script and UnityEvent triggers for the effects library; use your own renderer or streamer. No additional scene or dataset is required.
Every bundled dataset is our own content — nothing to credit.
Requirements
• Unity 6000.x (tested on 6000.3.25f1 and 6000.6.1f1).
• Built-in, URP 17.x or HDRP 17.x.
• Windows / macOS desktop and Android (including experimental Meta Quest 3 standalone — see above). WebGL is not supported (streaming needs file IO and compute).
• VR/XR: URP + OpenXR; HDRP + OpenXR is supported. Built-in XR is unsupported.
Known limitations
• Splats retain captured lighting; scene lights and GI do not relight them. Shadow receiving adds darkening, not illumination. HDRP exposure/tone mapping affect both color modes; bright HDR backgrounds may need intensity adjustment.
• Meta Quest 3 standalone support is experimental (see above): budget time to tune with the included panel and plan around that.
• SSOG/bake HTTP streaming requires ranges, strong ETags and identity encoding. Ordinary SOG/SPZ/PLY supports whole-file fallback, needs temporary disk space, and retains fully decoded CPU data until stop. Live SSOG decodes WebP; bake avoids that cost.
• Region edits preserve existing LODs; use Merge or Rebuild LODs to regenerate them. Large exports need temporary disk space and memory for metadata and caches. Lasso/brush supports front-surface, through-depth and manual-depth selection. Surface capture can take longer on large scans.
• Runtime clipping changes rendering; it does not rebuild colliders.
• New shadow paths are validated on desktop Metal; XR and other graphics APIs still need validation. Built-in shadow integration is not supported.
Roadmap (no dates promised, order may change)
• We are considering further enhancements to the editing tools.
• Standalone Quest performance — continued optimization of the mobile GPU path, aiming to drop the experimental label
• iOS (iPhone / iPad)
All 1.x updates are free for purchasers.
From the publisher's Asset Store listing.
Technical details
Effects
• 11 modes / 16 presets; one mode per source. Playback holds the final state; Amount=0 restores normal rendering. Active source effects bypass billboard caching and single-source EWA precomputation; restoring billboards rebuilds the cache.
• HDR crossfade/afterimages: fixed-size 2D textures, no XR arrays.
Supported formats
• SOG (PlayCanvas / SuperSplat): bundled .sog and unbundled meta.json, format version 2. Streamed SOG (lod-meta.json) imports through the bake step.
• SPZ (Niantic): v3 (gzip) and v4 (NGSP + zstd). v1/v2 are rejected with a clear error.
• 3DGS PLY: SH degree 0–3, binary little-endian.
• .splatbake: pre-baked GPU records and leaf table, generated by the importer or editor menu.
• Axis conventions: a Source Convention setting (Standard 3DGS — the PLY / SOG / SPZ default — plus Y-up right-handed, Z-up right-handed and Unity Native) brings files written in other frames in the right way up; collision meshes follow it.
Rendering
• SH bands 1–3 for imported assets and baked streams. In 1.0.4, Training color mode is the project-wide default: use Linear color space for training-space compositing and corrected splat projection. Legacy is available for the previous rendering. Source-image uses extra buffers and compositing to favor the source-image appearance. Legacy skips that additional compositing and may reduce GPU cost, but colors, brightness and transparency can differ. Performance gains depend on the scene, platform and render settings. Linear is the validated configuration for this update.
• Far-field billboard baking preserves SH color and invalidates cached views when SH data, bands or color mode change. HDRP retains its live far-field path.
• Unity 6000.x (tested on 6000.3.25f1 and 6000.6.1f1).
• Built-in RP, URP 17.x (Unity 6 Render Graph, plus Compatibility Mode fallback), HDRP 17.x (Custom Pass). Shaders live inside the package and ship in player builds automatically.
• Depth sorting: GPU radix sort on D3D12 / Vulkan / Metal; automatic threaded CPU counting-sort fallback elsewhere. Sorting never blocks the main thread. The camera pose is checked every frame; a re-sort triggers past a small position/rotation threshold.
• Splat render scale (offscreen + composite) for desktop and a separate stereo-array version for XR, with opt-in occlusion by opaque scene depth.
VR / XR
• URP + OpenXR; HDRP + OpenXR. Built-in XR is not supported.
• Single Pass Instanced and Multiview stereo. PC VR verified on Quest 3 over Link (D3D12) and desktop OpenXR runtimes. Use an XR Origin rig and the OpenXR plugin.
• Meta Quest 3 standalone: experimental. IL2CPP / ARM64 / Vulkan / Multiview; StreamingAssets sources are extracted to device storage automatically on first run. An in-headset tuning panel sample is included.
• Optional far-field impostor (off by default): the resident far leaves are baked into a view-facing billboard array every few frames and composited, so the live draw covers only the near region. The near/far radius is derived from a screen-space parallax error budget β (in pixels), the focal length and a head-movement budget — there is no distance threshold to set. Per-eye stereo bake by default; an optional mono bake writes one view plus a per-pixel depth channel and reprojects each eye through it, at half the bake cost. Requires the GPU sort path.
Streaming
• Automatically selects all finest full slices when their page-rounded cost fits the effective budget after transition reserve. Otherwise adaptive screen-space LOD applies; the memory cap is unchanged.
• Hard resident-splat budget (single pre-allocated GPU buffer); screen-space quality metric (τ, scale-invariant) with coverage-first level selection — under-budget renders coarser rather than dropping cells.
• Bake/Inspector coverage checks report Ok, RefinementMarginUnsatisfied (little refinement headroom), or CoverageInfeasible (raise the budget or re-bake).
• Per-frame upload budgets, frustum culling with hysteresis, no-flash chunk swaps, GC-friendly steady state.
• Local files and opt-in HTTP/HTTPS: loose/ZIP/SSOG and .splatbake stream selected ranges; ordinary SOG/meta.json/SPZ/PLY decode fully. Partial reads require 206, strong ETags and identity encoding. Ordinary formats can fall back to a complete temporary download without ranges/strong ETags (disk space required; no persistent reuse). Bounded, replaceable persistent/session caches use OS cache paths and validate online on reopen. Loose datasets need immutable versioned directories and relative child URLs; metadata queries are not inherited.
• Convert binary 3DGS PLY directly to a LOD-enabled .splatbake with block-based reading and temporary-file sorting. No external conversion tool is required. Imported SOG/SPZ/PLY scene objects can also be converted through LOD rebuilding (asset snapshots remain limited to eight million splats). Existing streamed SOG and lod-meta.json sets retain their separate bake workflow.
• Editor Preview (Inspector toggle on GaussianSplatStreamer, Basic section, default ON): drives the same streaming worker, Max Resident Splats budget and LOD cuts from the Scene view camera outside Play mode. Pumps until converged, then idles (no player-loop pumping or repaints), and resumes on camera or object movement. Does not mark the scene dirty. Also visible in the Game view while editing, using the Scene view camera pose as an approximation for LOD/sort. The far-field impostor stays disabled during editor preview (Play mode or device only). If editing feels heavy with a large dataset, turn the toggle off — the streamer is then inert outside Play mode.
Gameplay integration
• MeshCollider generation from splats (editor context menu or runtime API): standard static collision, works with CharacterController, Rigidbody, raycasts and NavMesh baking.
• Reveal/hide animation (5 patterns) running on the actual gaussians in the vertex shader; VFX Graph bridge sampling the live splat buffers; runtime loading API with typed exceptions.
Editor editing and shadows
• Shared Scene View selection for SplatObjects and baked Streamers: five shapes, lasso/brush, ordered Add/Subtract/Intersect and opacity/size/color filters. Split/delete/extract, multi-axis Mirror Copy, selected color/opacity adjustment and isolated-cluster review. Lasso/brush supports front-surface selection, selection through all depths and a manual depth range. Lasso can select centers or touching projected ellipses; brush selects centers. Surface selection uses a captured view of the chosen target and can take longer on large scans.
• Merge combines complete finest data, transforms and SH, then rebuilds spatial partitions and LODs into a new Streamer. Single-object LOD rebuilding is also available. Local bake inputs use temporary disk files; Renderer merge snapshots retain an eight-million combined limit. Merge requires uniform object scales and compatible rendering settings. Colliders/animation are not merged.
• SOG v2, streamed SOG ZIP (optional rebuilt LODs) and binary PLY export require no external tools. Local bake exports read bounded blocks; metadata, caches and temporary files still need memory/disk. Renderer exports copy their asset. SOG is quantized; exports retain source-local attributes, not scene lighting or runtime clipping.
• Clone Repair (donor picker and planar brush with rotation/scale/color controls) and runtime clipping are available. Runtime Clip has an independent shape-only selection, target Fit, up to eight animated child regions, ordered operations or OR/AND, and optional pixel clipping. It does not rebuild colliders.
• URP/HDRP realtime shadows: independent Cast Shadows / Receive Shadows, default off. Directional/Point/Spot; HDRP also Rectangle. Casting uses resident splats; receiving defaults to Shared Surface with an automatically generated mesh, with Direct also available. Shared surfaces approximate the geometry. Receiving bypasses the far-field color cache. Cost depends on scene and shadow settings. No baked GI/Shadowmask, ray-traced shadows or Built-in shadow integration. Captured illumination remains. Desktop Metal validated; Shared Surface targets desktop mono. Shadow paths are not yet validated on XR or other graphics APIs.
Dependencies and code
• Pure C# decoders (including the WebP VP8L decoder) — no native plugins, no P/Invoke; the only bundled managed DLLs are ZstdSharp and System.Runtime.CompilerServices.Unsafe. Third-party notices included (MIT).
• Source code included — everything installs into a single folder, Assets/SplatBridge. Assembly definitions keep Runtime and Editor separated.
• All bundled demo data is original content created by the publisher: one synthetic scene (rendered from the CC0 "Classroom" Blender demo file — public domain, no attribution required — and reconstructed with our own Gaussian Splatting pipeline) and one photographic capture made by us. Nothing in the package carries an attribution requirement. An attribution overlay helper component is included and prewired in the demo scene, for your own captures that do need a credit line.
SH color and memory
• Imported assets and baked streams support SH 1–3 (18 / 48 / 90 bytes per splat, fp16). Streamers allocate to resident capacity. Per-object toggle; Quest sample defaults off. SH Bands 0 disables view dependence; use 1–3 to enable it. Streamer band changes require reload. Off before loading avoids the SH buffer; off after loading retains it. Live streamed SOG has base color only; bake it for SH color.
Not supported
• WebGL (streaming needs file IO and compute shaders).
• AI repair and curved-surface clone painting.
Demo distribution: source SOG is included under Editor. First scene opening converts it to a validated StreamingAssets bake, reused on later openings. Existing mismatched files are not overwritten. Only the bake is used in Players.
Documentation: full manual, troubleshooting table and tuning guide in the package (English and Japanese).
Compatibility
| Unity version | Built-in | URP | HDRP |
|---|---|---|---|
| 6000.3.28f1 | Compatible | Compatible | Compatible |
As listed on the Asset Store.