Tiled Rasterization: the Other Rasterization Path of LCC2
The LCC2 pipeline offers two rasterization methods, selected by the Rasterizer property on the Actor: the default Pipeline uses the engine's own rendering pipeline, while Tiled uses a tile-based compute path implemented by the plugin.
Tiled is currently experimental and belongs to the Pro edition. It only takes effect after an App Key is registered, see Editions and Licensing.
It raises the frame rate noticeably in most dense scenes, but the gain depends on the image content and on where the bottleneck is. In some scenes the gain is small, and in others there is no change at all. After enabling it, confirm the result by measuring, as described in Deciding whether it helps. Do not assume it is always faster.
Note: "tile" here refers to tiles of screen pixels, which is a different thing from the "chunked rendering" in Rendering that loads nodes by camera visibility. The former decides how data already in video memory is drawn, the latter decides how data enters video memory. They are independent and can be active at the same time.
Differences Between the Two Rasterization Methods
| Pipeline (default) | Tiled | |
|---|---|---|
| Rasterization | Handed to the engine rendering pipeline; each splat is expanded into a quad and the engine fills the pixels | Custom compute dispatch by the plugin; visible splats are first binned into screen tiles, then shaded and composited tile by tile |
| Sorting | One global sort over all visible splats | Segmented sort per screen tile; each segment only sorts the splats that fall into that tile |
| Maturity | The long-standing default path | Experimental |
| Licensing | Available in the free edition | Pro edition |
The gain comes from two places: the sorting range narrows from global to a single screen tile, and pixels are only processed in the tiles that actually cover them, which cuts wasted fill in overlapping areas.
The gain is therefore tied to the image content: it is clear when splat density is high and screen overlap is heavy, and there is no observable change when the image is sparse or when the frame rate bottleneck is not in sorting and pixel fill to begin with.
The visual result is identical either way. Switching Rasterizer requires no other parameter changes and does not affect data loading, LOD, clipping volumes, lighting, or color settings.
How to Enable It
In the XGrids category of the Actor Details panel, set Rasterizer to Tiled. The property sits right after Render Mode and only appears when Render Mode is 3DGS.
Call the setter from Blueprint or C++:
LCC2Component->SetRasterizer(ELCC2Rasterizer::Tiled);
There are two getters, with different purposes:
| Method | Returns |
|---|---|
GetRasterizer() | The choice stored on the panel |
GetEffectiveRasterizer() | The rasterization actually in effect, with the license gate applied |
Use GetEffectiveRasterizer() to confirm the render path really goes through Tiled.
Deciding Whether It Helps
Because the gain is not guaranteed, measure before and after switching. The method matches the Performance Guide:
- Fix the test conditions: the same view or camera path, the same resolution and Screen Percentage, every other parameter unchanged.
- Run a warm-up pass first to keep the initial shader compilation and first disk read out of the numbers.
- Record the GPU frame time under
Pipelinewithstat unitas the baseline. - Change only
Rasterizerand measure the same view again. - Repeat across a few representative views, especially the images with the densest splats and the heaviest overlap.
If the GPU frame time does not drop, the current bottleneck is outside what this path covers. Keep Pipeline and go on locating the real bottleneck with the performance guide.
Scope
| Item | Notes |
|---|---|
| Pipeline | LCC2 pipeline only. ALCCActor (.lcc) does not have this property |
| Formats | .lcc2 / .sog / .spz / .ply all work |
| Render mode | 3DGS mode only. Point cloud mode ignores the property and always uses Pipeline |
| Engine and RHI | The same support range as the plugin itself; both D3D12 and Vulkan work |
| Multiple views | VR stereo rendering, nDisplay, split screen, and SceneCapture are all supported |
Behavior Without a License
Setting Rasterizer to Tiled without a registered App Key does not raise an error or cause a load failure. The render path falls back to Pipeline automatically. The choice stored on the panel is never overwritten, so it takes effect once the license is registered, with no need to set it again.
To tell whether Tiled is really in use, read the return value of GetEffectiveRasterizer(): on fallback it returns Pipeline, while GetRasterizer() still returns Tiled.
Note: confirm the license is valid before packaging for release, otherwise the packaged output follows free edition behavior and uses Pipeline.
When to Keep Pipeline
- Point cloud render mode is in use. The property has no effect there, so there is nothing to set.
.lccdata is loaded. The LCC pipeline does not have this path.- Free edition projects. Setting
Tiledfalls back anyway, so the default is clearer. - Measurement shows no improvement in frame time.
- The project has entered delivery validation, where an experimental path is best avoided.
Tiled lowers the cost of the rendering stage; it does not reduce the loading and traversal work. When the bottleneck is on the data loading side, handle loading and LOD first with the Performance Guide.