Splatting
The Splatting plugin implements loading, processing, and real-time rendering of Gaussian Splatting models using GPU compute pipelines. It enables fast, high-quality rendering of dense point-based geometry, making it ideal for reconstructed or neural scene representations.
The plugin provides the SplattingModel interface for importing and exporting models in both *.ply
and an optimized internal *.spl
format.
The PLY importer supports transformations, spherical harmonics (SH) for rotated color lobes, and optional clipping using arbitrary planes.
Rendering is executed via compute shaders and injects depth, normal, and color textures into the RenderFrame, allowing integration with other scene geometry and lighting for seamless compositing.
The Splatting plugin creates a MaterialBase material to inject custom compute dispatches into the rendering pipeline.
#include <objects/splatting/include/TellusimSplatting.h>
Example
// Create splatting interface
Splatting splatting;
splatting.setOverdraw(16);
if(!splatting.create(device, splatting_graph, 3, 6)) return false;
// Load the splatting model
if(!splatting.load(device, "point_clount.ply")) return false;
TS_LOGF(Message, "Groups: %u\n", splatting.getNumGroups());
TS_LOGF(Message, "Points: %u\n", splatting.getNumPoints());
// Injection parameters
splatting.setAlphaThreshold(alpha_slider.getValuef32());
splatting.setEmissionScale(emission_slider.getValuef32());
splatting.setDiffuseScale(diffuse_slider.getValuef32());
splatting.setNormalScale(normal_slider.getValuef32());
splatting.setRoughnessValue(roughness_slider.getValuef32());
splatting.setMetallicValue(metallic_slider.getValuef32());