Triangles are cheap until they aren't. Every project that ships on time starts with a polygon count budget — a hard ceiling on triangles per asset class, set before the first model is blocked out. Without one, you discover your frame-time problem in week thirty, when a hundred over-built props are already textured, rigged, and scattered across your levels. This guide gives you realistic per-platform baselines for mobile, VR, and PC, shows where triangles actually pay off, and walks through enforcing the budget in your pipeline so it survives contact with production.
Platform baselines for your polygon count budget
Modern GPUs rasterize triangles fast, but vertex throughput still costs you on mobile tile-based renderers, and VR pays every triangle twice — once per eye — at 90 Hz or better. PC gives you the most headroom, but draw distance and instance counts eat it quickly.
![]()
Use these numbers as starting points, not gospel. They assume a mid-range target device for each platform in 2026:
| Asset class | Mobile | VR (standalone) | PC (mid-range) |
|---|---|---|---|
| Hero character | 10k–30k | 20k–50k | 50k–120k |
| NPC / background character | 3k–8k | 8k–15k | 15k–40k |
| Hero prop (inspectable) | 2k–5k | 4k–10k | 10k–30k |
| Standard prop | 300–1.5k | 500–3k | 1k–8k |
| Modular environment piece | 500–2k | 1k–4k | 2k–10k |
Two notes on reading the table. First, standalone VR (Quest-class hardware) is closer to mobile than to PC VR — if you target both, budget for standalone and let PC VR enjoy the headroom. Second, these are *rendered* triangle counts after LODs kick in; your LOD0 source mesh can be higher as long as distant instances drop aggressively.
Where to spend your triangles
Budgets fail when they're applied uniformly. A 2,000-triangle barrel and a 2,000-triangle door handle are both mistakes — one is starved, the other is bloated. Spend triangles where the player's eye lingers:
- Silhouette first. Triangles that change the outline are worth ten that don't. Bevels on hard edges read at any distance; interior surface detail belongs in the normal map.
- Proximity scales priority. First-person weapons, hands, and inspectable items justify hero-prop budgets. Skybox-distance geometry deserves almost nothing.
- Curvature is the honest test. Cylinders that read as faceted need more segments; flat planes with edge loops "for the bake" need fewer. Delete loops that don't hold a silhouette or deform.
- Density should be uniform on screen, not on the asset. A consistent on-screen texel-and-triangle density across a scene looks more expensive than one over-built centerpiece surrounded by starved filler.
Free assets make this easier to practice than to preach: pull a few game-ready GLB models from the BitSoul marketplace and compare triangle counts across similar props — the well-built ones put their density exactly where the silhouette needs it.
Measuring and enforcing the budget
Budgets that live in a wiki die in a wiki. Enforcement has to happen where the work happens: in Blender before export, and at import in the engine.
![]()
In Blender, statistics overlays lie to you — they count quads and n-gons, not the triangles the engine will see. Audit the real number with a quick script:
```python
import bpy
BUDGETS = {"prop": 1500, "hero_prop": 5000, "character": 30000}
for obj in bpy.context.selected_objects:
if obj.type != 'MESH':
continue
mesh = obj.evaluated_get(bpy.context.evaluated_depsgraph_get()).data
tris = sum(len(p.vertices) - 2 for p in mesh.polygons)
tag = obj.get("budget_class", "prop")
status = "OK" if tris <= BUDGETS.get(tag, 1500) else "OVER"
print(f"{obj.name}: {tris} tris [{tag}] {status}")
```
Tag each asset with a `budget_class` custom property and run the script before every export — it counts the *evaluated* mesh, so modifiers like Subdivision and Decimate are included. On the engine side, add a second gate: Unity's `AssetPostprocessor` or Unreal's import validation can reject meshes over budget automatically, so an over-built asset never silently lands in the project.
A pre-export checklist worth pinning:
- Triangulated count checked against the asset's budget class
- LODs present (or auto-LOD settings confirmed) for anything placed more than once
- No interior faces, hidden geometry, or bake-only edge loops left in
- Silhouette holds at the asset's typical on-screen size
Ship within the budget
Polygon count budgets aren't about making everything low poly — they're about spending a finite resource deliberately, so the assets that deserve detail get it and the rest stay out of the profiler. Set the table above as your default, tag your assets, and let scripts do the policing. If you want game-ready models that already respect sensible budgets, the BitSoul marketplace has 747 free GLB assets tested in Unity, Unreal Engine 5, and Godot — grab a few and reverse-engineer how their triangle spend matches their role.
---
*This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.*