Anyone have any tips for designing a game for low end GPUs?

Here is my current understanding of roughly optimal rendering of a simple cube mesh:

https://playground.babylonjs.com/#17ABFT#2

Does anyone know tricks beyond what’s in that PG? It is just instances with a frozen material. I like to pretend that it is a ballpark estimate of how many really simple entities could be in a game. If anyone knows a general approach that is even more lowfi please chime in

I’ve figured that low poly models would matter, and I’m sure that they do to an extent… but it isn’t so clear cut. For example changing from cubes to spheres did not always drastically drop the FPS the way I thought it would.

I’m curious if anyone could share how many cubes they can render before consistently dropping below maximum frame rate. It would be nice to get some chromebooks or anything that typically isn’t known for 3D power.

I did not actually fullscreen any of these, so the resolution is maybe not so relevant

Onboard gpu:

300 cubes @ 60 FPS- ASUS T100T, 1280x800 (2015 tablet) - sometimes can only do 100 cubes; may have some funky temperature/power throttling

Discrete gpu:

1100 cubes @ 60 FPS, 1920x1080 - GTX 660m (2015 gaming laptop)

600 cubes @ 144 FPS, 2560x1440 - Ryzen 1700 + GTX 1070 (2017 gaming desktop)

700 spheres @ 60 FPS, (?? faster for some reason)

2200 cubes @ 60 FPS 1680x1050- same as above, different screen

1900 spheres @ 60 FPS