<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw" -->

---
title: Gaussian Splats part 3: There's always a bigger scene
description: Magnopus's Unreal Engine Gaussian splat renderer hit a hidden cap of 16 million splats per asset, traced to Unreal's GPU Scene instance limit. Sam Birley...
canonical: https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Gaussian Splats part 3: There's always a bigger scene | daily.dev
og:description: Magnopus's Unreal Engine Gaussian splat renderer hit a hidden cap of 16 million splats per asset, traced to Unreal's GPU Scene instance limit. Sam Birley...
og:url: https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw
og:image: https://api.daily.dev/og/posts/uEPjMBRPW.png
og:image:alt: Gaussian Splats part 3: There's always a bigger scene
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Gaussian Splats part 3: There's always a bigger scene

**[Hacker News](https://daily.dev/sources/hn)** · 15 min read · 0 upvotes · 0 comments

## Summary

Magnopus's Unreal Engine Gaussian splat renderer hit a hidden cap of 16 million splats per asset, traced to Unreal's GPU Scene instance limit. Sam Birley removed the cap by bypassing GPU Scene and using a custom indirect-instanced draw pipeline instead. That led to a second wall: a single texture holding splat data maxed out at 16384 rows, capping storage at about 67 million splats. Widening texture rows raised that ceiling to 268 million splats (about 8.6GB VRAM), and the team adopted PlayCanvas's Streamed SOG format for level-of-detail streaming with a memory budget and eviction policy, so scenes larger than memory can still render.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.magnopus.com/blog/gaussiansplats-part-3-theres-always-a-bigger-scene>

## Questions this post answers

### What causes the 16 million instance limit when rendering Gaussian splats in Unreal Engine?

The limit comes from Unreal's GPU Scene, the engine's central GPU-resident ledger for instanced objects, which caps out at roughly 16 million instances of a given mesh. Registering every splat as a mesh instance hits this ceiling, causing partial visibility and graphical corruption. The fix is bypassing GPU Scene entirely and using a direct DrawIndexedInstancedIndirect call instead.

_Developers scaling Unreal rendering pipelines can track engine-internals write-ups like this on daily.dev._

### How many Gaussian splats can fit in a single GPU texture in Unreal Engine?

A texture storing splat data as rows capped at 4096 splats wide hit Unreal's maximum texture dimension of 16384 rows, limiting storage to about 67 million splats. Widening each row toward the hardware's 16384-texel maximum raised capacity to roughly 268 million splats, consuming about 8.6GB of VRAM, before hitting the true storage ceiling.

_Anyone debugging GPU texture size limits can find rendering deep-dives like this through daily.dev._

### What LOD streaming format works for large Gaussian splat scenes?

PlayCanvas's Streamed SOG format works for large-scale Gaussian splat scenes because it carves a scene into a spatial tree of regions, each with multiple decimated LOD levels, delivered leaf by leaf over HTTP. Level selection uses a screen-space error metric with a configurable threshold, so only a bounded working set of splats needs to be resident on the GPU at once.

_Teams choosing a splat streaming format for production scenes can surface comparisons like this via daily.dev._

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 24 comments across hackernews (as of 2026-10-29).

**TL;DR:** Discussion is mostly enthusiastic and technical, with people sharing their own splat captures, related research (triangle splatting, Gaussian point splatting), and tool feedback for PlayCanvas's SOG compression format rather than debating the post's core findings.

**Sentiment:** 55% positive · 40% mixed · 5% skeptical

**The case for**

- Several people shared impressive personal Gaussian splat captures and real-world use cases like broadcast sports footage.
- The SOG format maintainer actively engaged, noting ongoing improvements like alpha compensation and an optimal quantiser fix for codebook generation.

**The pushback**

- One person found splats harder to capture in practice than claimed, citing issues with phone/iPad camera quality.
- A quality dip was reported in the .sog curve when adding more primitives in a compression benchmark, suggesting unresolved edge cases.

**By community**

- hackernews (positive): Engagement centers on sharing splat demos, related research like triangle splatting, and direct back-and-forth with tool authors about compression fixes.

**Hottest debate:** Whether triangle splatting is a viable alternative to Gaussian splats, with some arguing it hasn't gained traction despite theoretical GPU rendering advantages.

**Open questions**

- Why does the .sog compression curve dip in quality when more primitives are added, as observed in one benchmark?
- Will triangle splatting or similar flat-primitive methods eventually match Gaussian splats' research momentum and adoption?

**Highlights**

> Not substantially faster as your still drawing roughly the same number of primitives (Gaussians are rendered as a quad covering the splat area), and the extra cost in shading isn't that expensive compared to all the fragment samples / depth tests. Triangles also tend to be less effective at modelling most real world 3D scenes. In most cases I tried, it required more primitives, longer training, and ultimately lower FPS and PSNR than 3DGS. Other methods like PSGR also helped push 3DGS to better fit real world geometry. Triangle splatting and its variants do not generate clean efficient meshes like what you might be used to with a modelled scene [0]. [0]: https://meshsplatting.github.io/viewer/
> — [sergmiser on hackernews · 1 comments](https://news.ycombinator.com/item?id=50282825)

> Hey Donovan, keep up the great work :) That reminds we, we had really weird results with splat-transform .sog output, when measuring the references for KISS-GS a couple months back. Why is the .sog curve dipping in quality when adding more primitives? It's the "POPSpa + .sog" curve here, in the first Figure: https://arxiv.org/html/2608.26948v1 Always wanted to go back and measure with the latest splat-transform and find whats going on there.
> — [w-m on hackernews · 1 comments](https://news.ycombinator.com/item?id=50282103)

> Hi Wieland and congrats on your paper! The issue you saw had been addressed in 1.7.0. We were generating codebooks for color and scale using k-means, which would result in bad values sometimes for the extremes. In 1.7.0 we switched to an optimal quantiser with outlier handling. It was actually surprisingly hard to get this right. I just got opus to valid this now and it found another issue with our scale codebook gen, which I will fix now. Huzzzah!
> — [slimbuck on hackernews](https://news.ycombinator.com/item?id=50286697)

> It's more than year old, that's pretty old in this fast moving space. I guess it's possible it will get more popular, but I haven't seen it get any traction at all, gaussian splats however are getting more and more development and adoption. https://arxiv.org/abs/2505.19175
> — [sorenjan on hackernews](https://news.ycombinator.com/item?id=50280713)

> They are not that easy to make in my experience. I struggled a bit with my phone camera images and moved onto my iPad images.
> — [anukin on hackernews · 1 comments](https://news.ycombinator.com/item?id=50276550)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=50209269) · 103 points · 24 comments

## Similar posts on daily.dev

- [Turning a Gaussian Splat Into a Videogame](https://daily.dev/posts/turning-a-gaussian-splat-into-a-videogame-aflxs4w0l) · Hacker News · 0 upvotes · 0 comments
- [Magical Particle Generator Set Up with Apple's SHARP Model](https://daily.dev/posts/magical-particle-generator-set-up-with-apple-s-sharp-model-nosm54yaa) · 80 LEVEL · 0 upvotes · 0 comments

---

Tags: [#unreal-engine](https://daily.dev/tags/unreal-engine)

[View this post on daily.dev](https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Gaussian Splats part 3: There's always a bigger scene","url":"https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw"},"datePublished":"2026-10-28T20:49:34.390Z","dateModified":"2026-10-29T10:28:29.099Z","description":"Magnopus's Unreal Engine Gaussian splat renderer hit a hidden cap of 16 million splats per asset, traced to Unreal's GPU Scene instance limit. Sam Birley...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5aa133753a2f59d9c48f910e4474c3f2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5aa133753a2f59d9c48f910e4474c3f2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"unreal-engine","timeRequired":"PT15M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Gaussian Splats part 3: There's always a bigger scene"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/gaussian-splats-part-3-there-s-always-a-bigger-scene-uepjmbrpw#faq","mainEntity":[{"@type":"Question","name":"What causes the 16 million instance limit when rendering Gaussian splats in Unreal Engine?","acceptedAnswer":{"@type":"Answer","text":"The limit comes from Unreal's GPU Scene, the engine's central GPU-resident ledger for instanced objects, which caps out at roughly 16 million instances of a given mesh. Registering every splat as a mesh instance hits this ceiling, causing partial visibility and graphical corruption. The fix is bypassing GPU Scene entirely and using a direct DrawIndexedInstancedIndirect call instead. Developers scaling Unreal rendering pipelines can track engine-internals write-ups like this on daily.dev."}},{"@type":"Question","name":"How many Gaussian splats can fit in a single GPU texture in Unreal Engine?","acceptedAnswer":{"@type":"Answer","text":"A texture storing splat data as rows capped at 4096 splats wide hit Unreal's maximum texture dimension of 16384 rows, limiting storage to about 67 million splats. Widening each row toward the hardware's 16384-texel maximum raised capacity to roughly 268 million splats, consuming about 8.6GB of VRAM, before hitting the true storage ceiling. Anyone debugging GPU texture size limits can find rendering deep-dives like this through daily.dev."}},{"@type":"Question","name":"What LOD streaming format works for large Gaussian splat scenes?","acceptedAnswer":{"@type":"Answer","text":"PlayCanvas's Streamed SOG format works for large-scale Gaussian splat scenes because it carves a scene into a spatial tree of regions, each with multiple decimated LOD levels, delivered leaf by leaf over HTTP. Level selection uses a screen-space error metric with a configurable threshold, so only a bounded working set of splats needs to be resident on the GPU at once. Teams choosing a splat streaming format for production scenes can surface comparisons like this via daily.dev."}}]}
```

