Hacker News new | past | comments | ask | show | jobs | submit
Pretty sure they use SDFs, not triangle or gaussian splatting
If I recall their talk correctly, models are unions of SDFs, which get sampled into a point cloud, and each point gets splatted as another SDF primitive called a "fleck".
Ah thanks for the correction. The splat terminology they also use confused me.
I think SDFs is the data underneath, but baked into SDF voxel tiles at runtime and not always evaluating SDF shapes. The SDF tiles still get splatted.

At one point it used triangles for the large splats, and still compute shaders for the small ones due to quad overdraw. I'm not sure if the final version stuck with that or went all compute, but quad complexity is also why nanite does compute shaders for small triangles and traditional rasterization for the larger ones.

In my experience it isn't really about quad overdraw/helper lanes, but rather about primitive assembly. On my RTX 4090, vertex shaders max out at about 20M tris/ms, while mesh shaders, which bypass primitive assembly, can reach 40M tris/ms. Maybe quad draw might be the next bottleneck after primitive assembly.

But it's a bit difficult to find the exact reason since profilers won't really tell you a concrete bottleneck when drawing vast amounts of tiny tris.

Nanite does support mesh shaders and does use that for the larger triangle rasterization when available. But quad overdraw is brutal with triangles near pixel size, making 4K as expensive to render as 8K, and they've said it's the reason they fall back to compute shaders even when mesh shaders are available for small patches. That might have been part of the reason on Dreams though since there weren't any mesh shaders on PS4.

4K has 8 million pixels so should be able to do pixel per triangle with a separate depth pass and still fall within that 20M even with some overdraw from not all patches able to be culled.

edit: opps thought you said per frame, per ms would give 330M/660M triangles per frame, doesn't seem like a big bottleneck; PS4 was more like 26M per frame though but rendered at 900p-1080p. I think it's translucency was stochastic so lots of stuff could still get culled, but wouldn't be able to cull as aggressively (like nanite with masked materials).