So, I made a whole bunch of sprites in a 3D world representing hexagons which are not currently but will eventually be at varied, procedurally-generated altitudes.
My intent is not to have quite this many, but it’s still alarming to me that I’m getting 20 fps from 40000 sprites (160k triangles, 240k vertices) just sitting there doing nothing. I’m not planning on needing to render 40000 tiles at once in reality, but I’m definitely planning on adding sprites into the tiles for things like foliage or NPCs or buildings, and also rendering a little rectangular cliff between each tile. So I could easily see tens of thousands of sprites being a real possibility if, say, the average tile has 5 or 10 tree/grass/building/NPCs, etc sprites on it.
Interestingly, I tested replacing the sprites with a capsule minus all lighting, and the results are quite informative. Rendering cost goes way up, as that’s now 33.3 million Tris and 22.0 million Verts, but overall FPS only drops to 16 (from 20). That is, rendering 40000 capsules seems to only be a little bit harder than rendering 40000 sprites.
Is there some way to render zillions of 2D sprites in a 3D world, some camera-facing, some not, without as much overhead? At this point I could probably turn every sprite into a 3D mesh and not lose performance which is bonkers. If I’m dropping the FPS to 20 due to rendering I’d prefer if the actual rendering were the thing doing it, not simply the fact that there’s tens of thousands of game objects being rendered.