logoalt Hacker News

mschuetz • yesterday at 7:37 PM • 1 reply • view on HN

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.


Replies

cma • yesterday at 10:19 PM

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).