Estrutura digital abstrata com cubos luminosos em 3D, referência a dados e tecnologia
Tecnologia

Spark 2.0: LoD aberto e streaming, 100M+ 3DGS no browser

Spark 2.0 libera um sistema open source de streaming e Level of Detail para 3D Gaussian Splats que roda no navegador, viabiliza cenas com 100M+ splats e performance consistente em vários dispositivos.

Danilo Gato

Danilo Gato

Autor

16 de abril de 2026
10 min de leitura

Introdução

Spark 2.0 acaba de colocar o 3D Gaussian Splatting em outro patamar no navegador, com um sistema open source de streaming e Level of Detail que sustenta 100M+ splats em tempo real. A palavra-chave Spark 2.0 virou sinônimo de escala web aplicada a 3D. O anúncio detalha como o novo pipeline lida com cenas enormes sem sacrificar a fluidez, de desktops a smartphones.

A importância disso salta aos olhos de quem constrói experiências imersivas e aplicações geoespaciais. Renderizar nuvens massivas de splats com estabilidade sempre foi o gargalo do browser. Com Spark 2.0, o orçamento de renderização fica controlado, a complexidade tende a se manter estável e o carregamento acontece por demanda, priorizado pela câmera. O objetivo aqui é entender o que muda no motor, no formato de dados e no fluxo de trabalho para colocar Spark 2.0 em produção com previsibilidade.

O que há de novo no Spark 2.0

A grande virada está no LoD streamável, pensado para o navegador e publicado como open source. O motor reescrito, chamado SparkRenderer, rende splats com um orçamento fixo N, o que mantém a complexidade praticamente constante, independentemente do número total de splats na cena. Isso abre espaço para 100M+ splats com estabilidade de frame, inclusive em dispositivos móveis com pouca memória de GPU. Spark 2.0 tornou-se, na prática, um conjunto de ferramentas para criar, transmitir e renderizar mundos 3DGS na web.

Outro ponto relevante é a eficiência de I/O e decodificação. O pipeline novo possibilita download em partes, streaming e decodificação em pipeline, evitando estouros de buffer comuns quando se juntava o arquivo inteiro em um único ArrayBuffer. Em projetos reais, isso reduz picos de memória no browser e diminui a latência de primeira visualização.

Além disso, Spark 2.0 inclui um sistema de paginação com política de prioridade baseada no ponto de vista, que carrega e ejeta blocos de splats conforme a relevância na câmera. O resultado prático é maior previsibilidade de uso de VRAM e menos stuttering.

Como o LoD streamável funciona

A base é a Splat Tree, uma hierarquia onde as folhas mantêm os splats originais e os nós internos são versões decimadas que sintetizam cor e forma. Durante a renderização, Spark 2.0 avalia o tamanho de projeção de cada nó na tela e decide se expande um nó, mantém o nível atual ou coleta as folhas, sempre respeitando o orçamento de splats N. É assim que o motor consegue qualidade quando perto, alcance quando longe e estabilidade de performance em qualquer ângulo de câmera.

Há dois caminhos para gerar LoD. Dá para criar a hierarquia sob demanda, diretamente no browser via WebWorker, depois de carregar um arquivo de splats. Ou dá para pré-processar do lado do servidor com a ferramenta de linha de comando. Essa flexibilidade permite experimentar em tempo real e, quando o projeto cresce, consolidar um pipeline offline reprodutível.

Do ponto de vista de experiência do usuário, o LoD streamável de Spark 2.0 prioriza o que a câmera precisa agora. O sistema de download, decodificação e paginação foi refeito para operar em chunks, com pedidos fracionados e pré-busca inteligente. Na prática, a cena fica navegável muito antes do carregamento completo, e a qualidade aumenta conforme a oclusão e a distância permitem.

![Estrutura digital futurista em 3D]

Formatos, compactação e o novo ExtSplats

Spark 2.0 introduz melhorias de codificação para suportar LoD e streaming com precisão maior. A documentação descreve um modo estendido para SPZ e um contêiner ExtSplats que pode armazenar coordenadas como float32, reduzir artefatos de quantização e anexar metadados essenciais como child_count e child_start para navegação da árvore. Na prática, o arquivo “estendido” fica cerca de 30 por cento maior que o SPZ de entrada, porém viabiliza hierarquia e paginação com mais fidelidade.

Para cenários que exigem máxima eficiência de memória e cache, Spark 2.0 documenta um layout PackedSplats com 16 bytes por splat. Esse arranjo ajuda nos hot paths do renderizador e pode incluir dados extras como harmônicos esféricos, de acordo com a necessidade visual. Em workloads de larga escala, cada byte poupado conta para manter o frame estável.

Outro detalhe importante é a calibragem do critério de pixel para LoD. Por padrão, 1.0 significa que o motor seleciona splats que não projetem menos de 1 pixel, e é possível ajustar para 2.0, 0.5 ou outros valores, dependendo do equilíbrio desejado entre nitidez e desempenho. O controle fino desse threshold facilita adaptar Spark 2.0 para máquinas com GPU limitada sem reexportar ativos.

Pipeline de criação e tempo de preparo dos LoDs

Quando o objetivo é pré-processar ativos, Spark 2.0 oferece o utilitário de linha de comando para criar a árvore de LoD a partir de um arquivo de splats comum. Em projetos iterativos, o próprio app web pode disparar a geração da hierarquia em background, o que acelera a prototipagem. A documentação cita tempos de 1 a 3 segundos por 1 milhão de splats para a conversão LoD no browser, com suporte prático até cerca de 30 milhões de splats como entrada, o que cobre a maioria das cenas de médio porte em pipelines modernos.

Já para cenas gigantes, o caminho recomendado é pré-construir a árvore e exportar no formato estendido compatível com streaming. Ao servir os dados com HTTP Range e cache granular, o navegador solicita apenas os blocos relevantes, o que reduz transferência, latência e consumo de RAM. Vários projetos da comunidade confirmam que o uso de LoD streamável no browser derruba a barreira prática dos 10 a 20 milhões de splats carregados de uma só vez.

![Cubo digital abstrato com brilho de circuitos]

Comparação com abordagens da comunidade

Streaming e LoD para splats no navegador não são uma ideia isolada. O ecossistema PlayCanvas, por exemplo, publicou documentação e exemplos de LOD Streaming, com seleção dinâmica por distância da câmera e carregamento assíncrono, focado em reduzir memória e manter o frame estável. Há também o histórico do SuperSplat, cujo editor e viewer open source ajudaram a popularizar pipelines web para 3DGS. Spark 2.0 se diferencia por integrar LoD, paginação e orquestração de GPU como parte central do renderizador e das ferramentas, com foco explícito em cenas massivas.

Outra linha vem de bibliotecas como o viewer WebGL do antimatter15, que mostraram cedo a viabilidade de splats no browser. Essas iniciativas destacam pontos práticos, como a necessidade de manter compatibilidade ampla em navegadores que ainda não suportam totalmente WebGPU. Em cenários assim, a escolha por WebGL 2.0 e otimizações cuidadosas mantêm a experiência acessível. Spark 2.0 entra nesse contexto com um pacote de produção e documentação abrangente.

Por fim, há soluções baseadas em OGC 3D Tiles e forks variados, que comprovam ganhos ao dividir a cena em blocos com LoD e streaming condicional. Esses relatos, muitos deles em discussões abertas, reforçam a tendência de trazer técnicas tradicionais de sistemas 3D para o mundo web, com caching, paginação e orçamentos fixos de draw.

Casos de uso e oportunidades reais

  • Geoespacial e mapeamento urbano. Cenas com 100M+ splats deixam de ser apenas demo técnica e viram produto navegável, com time to first view curto e progressão de qualidade conforme a câmera avança. Spark 2.0 enfatiza que mundos com 100 milhões ou até 1 bilhão de splats podem rodar em tempo real no mobile, desde que a priorização e a paginação façam o seu trabalho.
  • Digital twins e revisão de projetos. O orçamento fixo N e a Splat Tree fazem o viewer se comportar de forma previsível, um requisito para times que precisam de inspeção técnica em qualquer máquina do escritório.
  • XR web e headsets. A base em WebGL 2.0 e um design cross device abrem caminho para experiências que rodam no navegador do headset, enquanto o ecossistema adiciona recursos de WebXR e WebGPU conforme ganham maturidade. A literatura e os exemplos da comunidade apontam nessa direção.

Guia prático de adoção

  1. Comece pequeno com Spark 2.0. Carregue um arquivo de splats e gere a Splat Tree no browser via WebWorker para validar a qualidade de LoD e o impacto no orçamento N. Ajuste o threshold de pixel, por exemplo de 1.0 para 1.5, para aliviar o custo em laptops mais modestos.
  2. Quando os ativos crescerem, pré-construa o LoD. Use a ferramenta de CLI para criar a hierarquia e exporte no formato estendido compatível com streaming. Combine com um servidor que suporte HTTP Range e tenha cache por chunk.
  3. Monitore o consumo de GPU e memória. Explore o PackedSplats de 16 bytes por splat quando o perfil exigir eficiência máxima de cache, e mantenha harmônicos esféricos apenas onde agregarem valor visual.
  4. Integre com seu framework 3D. Spark 2.0 foi pensado para o ecossistema Three.js, com APIs de alto nível para criar o SparkRenderer e controlar LoD por cena, por objeto e por viewport, o que ajuda em projetos com múltiplas câmeras ou espelhamentos de ambiente.

Perguntas frequentes que importam no dia a dia

  • Qual o ganho prático do orçamento fixo N. Estabilidade. Quando a câmera se aproxima, o motor troca nós LoD por folhas relevantes, mas mantém o total de splats renderizados dentro do orçamento, o que restringe variação de frame time.
  • Quão rápido é gerar LoD no browser. A documentação relata ordem de 1 a 3 segundos por 1M de splats, adequado para prototipagem. Para acervos enormes, o pré-processamento offline é o caminho.
  • O que muda com o formato estendido. Metadados da árvore embutidos, precisão maior, e um crescimento de cerca de 30 por cento no tamanho do arquivo, em troca de streaming e LoD robustos.
  • Existe base comparável no mercado. Sim, a comunidade PlayCanvas documenta LoD Streaming com seleção por distância e exemplos públicos, e projetos como SuperSplat ajudaram a desbravar o terreno. Spark 2.0 integra esses conceitos a um pipeline coeso e focado em produção.

Reflexões e insights

Spark 2.0 reduz atrito entre ideia e entrega. Com LoD streamável, o navegador vira palco de exploração rápida, e o servidor entrega apenas o que a câmera pede. O padrão de projeto lembra pipelines maduros de engines nativas, só que agora com a conveniência e o alcance do browser. O ponto crítico é tratar dados como produto, com versionamento de LoDs, métricas de cache e curadoria de qualidade por distância.

Outro insight é a convergência de comunidades. O discurso em torno de 3DGS na web deixou de ser sobre se é possível e passou a ser sobre como servir, priorizar e depurar. A documentação de PlayCanvas, as discussões técnicas e o histórico de viewers mostram como as peças se encaixam. Spark 2.0 dá um passo além ao consolidar criação, streaming e renderização em um pacote único, com foco em cenas com 100M+ splats.

Conclusão

Spark 2.0 entrega um caminho claro para levar 3D Gaussian Splatting ao navegador em escala. O LoD streamável, o orçamento fixo de splats, a paginação com prioridade de câmera e os formatos estendidos formam um toolkit maduro para quem precisa de previsibilidade e qualidade visual em qualquer dispositivo. Na prática, quem adotar Spark 2.0 vai navegar melhor por cenas gigantes, com tempos de carregamento mais curtos e menos picos de memória.

O efeito imediato é estratégico. Empresas de mapas, digital twins e entretenimento ganham um caminho viável para publicar conteúdos massivos sem plugins e sem cadeados proprietários. Com Spark 2.0, a web fica mais próxima de experiências ricas, persistentes e acessíveis, que escalam de 1M para 100M+ splats sem drama, usando um pipeline aberto e documentado.

Tags

3DGSThree.jsWebGLRenderingOpen Source