The 3D Handbook
Topic

Polygon and triangle budgets

How many triangles an asset or a frame can afford, with dozens of published examples from real games, platforms and asset types, and a method for setting a budget yourself.

optimisationmodelingperformancenanitevrmobilereference

A triangle budget is the number of triangles you allow an asset, or a whole frame, to use so the game hits its target frame rate on its target hardware. It is a planning number, not a fixed rule: the full budget also covers draw calls, materials, texture memory, overdraw and LODs, and on engines with virtualised geometry the triangle part changes a lot.

This page explains what is being counted and why, then collects more than a hundred published numbers from real games, platforms and asset types. It ends with a method for setting a budget yourself.

Four Suzanne heads with fewer and fewer triangles from left to right.
An LOD chain made with Blender's Decimate modifier (Collapse): 3,936, 1,968, 983 and 392 triangles, that is 100%, 50%, 25% and 10%. The silhouette survives much longer than the inner wiring.Rendered in Blender 5.2 (Cycles) by the handbook author

#Triangles versus polygons

Your modeling app shows quads and n-gons, but engines count triangles. Every quad or n-gon is split into triangles on export or import (see triangulation). That is why most technical numbers you will meet are stated in triangles:

A quick conversion: a clean quad mesh has about twice as many triangles as faces. A "2,000 poly" quad prop is roughly a 4,000-triangle asset. Always ask which unit someone means.

Press articles and studio marketing usually say "polygons". Often nobody knows whether that means triangles, quads, the in-game LOD0 or the authoring model. The tables below keep the unit exactly as each source states it.

#Other limits besides triangles

Triangles are the easiest number to read in a viewport, so they are often blamed for performance problems they did not cause. In practice a scene usually hits other limits first.

Draw calls. Each object the game renders costs the CPU a request to the GPU, and Meta notes this cost is "largely independent of the complexity of the object being rendered" (Meta Horizon Developers: WebXR Performance Optimization Workflow). Meta's own example: submitting 1,000 single triangles as separate draw calls would likely drop a Quest app below 72 frames per second (Meta Horizon Developers: WebXR Performance Optimization Workflow). A thousand triangles is a small load, while a thousand draw calls is a large one. See draw calls.

Materials. Objects can be combined into one call when they share a material (Meta Horizon Developers: WebXR Performance Optimization Workflow). Every extra material on a prop is something that cannot be batched with its neighbours. This is a big reason environment artists use trim sheets, texture atlases and master materials and instances.

Texture memory. A low-poly mesh with a 4K normal map can be larger on disk than a dense mesh. Epic measured a 19,066-triangle mesh with 4K base colour and normal maps at 31.04 MB, against 27.83 MB for a 1.5-million-triangle Nanite version using a shared detail normal map (Unreal Engine Documentation: Nanite Technical Details). See texture formats, compression and mipmaps.

Overdraw. Pixels drawn more than once cost GPU time. Epic notes that "smaller objects that are closely stacked together create more overdraw than larger ones" (Unreal Engine Documentation: Nanite Technical Details), and Fortnite's team found that the empty, alpha-masked parts of foliage cards add overdraw (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…). Google's Android guide adds that triangles smaller than about 10 pixels in area are inefficient on mobile GPUs (Android Developers: Geometry). See overdraw and foliage and vegetation.

LODs and shadows. Distant objects should switch to cheaper versions; see level of detail. Shadows have a cost of their own: on Fortnite, large non-Nanite meshes rendered shadows into Virtual Shadow Maps more slowly than equivalent Nanite meshes (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…).

Instances. Even with Nanite, instance data has a price: Brian Karis gives 457 MB for the transforms of 10 million instances alone (SIGGRAPH 2021: Nanite: A Deep Dive).

#Budgets with Nanite

When Epic revealed Unreal Engine 5 in 2020, it promised "there are no more polygon count budgets, polygon memory budgets, or draw count budgets" (Unreal Engine blog: A first look at Unreal Engine 5). Nanite splits meshes into clusters and streams in only the detail the screen can show, in its own rendering pass that bypasses traditional draw calls (Unreal Engine Documentation: Nanite Virtualized Geometry). The current documentation is more careful. It says "practical limits still remain" for instance counts, triangles per mesh, material complexity, output resolution and performance, and that these must be measured on your own content and hardware (Unreal Engine Documentation: Nanite Virtualized Geometry).

Nanite also does not run everywhere. It needs DirectX 12 with Shader Model 6 class hardware, and it does not support stereo VR rendering or forward rendering (Unreal Engine Documentation: Nanite Virtualized Geometry). If you build for mobile, a standalone headset or any platform without Nanite, classic budgets apply in full. See virtualised geometry.

#Published examples

The tables in this section only contain numbers from a published source. Read three things before you compare two rows:

  • Unit. Triangles, "polygons" or vertices, exactly as the source says. "Polygons" in a press quote is ambiguous.
  • Scope. A per-frame budget, a platform limit, one LOD0 asset and a marketing headline are different kinds of number.
  • Source quality. Rows marked (compiled) come from a long-running Polycount forum thread where members collected figures that artists posted on ArtStation and elsewhere (Polycount forum: Polycounts in next gen games thread!). They are real reported numbers, but this handbook could not open each original post, so treat them as second-hand.

Unless a row says otherwise, assume the number is the highest-detail version (LOD0) the player sees, not the sculpt.

#1. Platform and frame-level budgets

Platform / project Number Unit as stated What it measures Source
Meta Quest 2 under 750K; under 100 draw calls triangles Recommended per frame, 72 Hz target (Meta Horizon Developers)
Meta Quest 3 under 1.5M; under 200 draw calls triangles Recommended per frame; 90 Hz recommended (Meta Horizon Developers)
PC VR (Rift, PC SDK) 1–2M; 500–1,000 draw calls triangles or vertices Maximum per frame, older guidance (Meta Horizon Developers)
Apple Vision Pro, immersive scene no more than 500,000 triangles Apple's general guideline for the whole scene (WWDC24)
Apple Vision Pro, shared space 250,000 triangles Apps running alongside other apps (WWDC24)
Apple Vision Pro, "safe target" around 100,000 in view triangles Leaves "plenty of headroom" (WWDC24)
Android phone, Google's Armies demo about 210,000 per frame at about 30 fps triangles A Unity demo with hundreds of animated soldiers (Android Developers)
Android phone, any single mesh below 65,535 vertices 16-bit index limit guaranteed on all mobile GPUs (Android Developers)
iPad 2 (2011) around 100,000 vertices Where driver costs "become apparent" with complex shaders (Unity Documentation)
Roblox 20,000 per individual mesh triangles Hard limit; avatar items have separate budgets (Roblox Creator Hub)
Fortnite / UEFN 500+ with one LOD flagged; LOD0 over 30,000 warns vertices Asset validator thresholds (Fortnite Documentation)
Microsoft Flight Simulator 2024 1,500,000 at LOD0 triangles Maximum for a whole aircraft, including cockpit, cabin and livery (Microsoft Flight Simulator 2024 SDK Documentation)
PS5, UE5 "Lumen in the Land of Nanite" about 1 billion source, about 20M drawn per frame triangles 2020 Nanite tech demo (CG Channel)
Same demo, Karis's analysis about 25M rasterised; 896,322 instances before culling, 3,668 after triangles One frame of the demo (SIGGRAPH 2021)
Same demo, standard UE4 path over 1 billion triangles What the same frame would have cost without Nanite (SIGGRAPH 2021)
PS5, Witcher 4 UE5 tech demo (2025) about 500k tree instances; 60 fps instances Nanite Foliage forest; trees of 1–10M polygons each (Unreal Engine Documentation; PlayStation.Blog)
The Matrix Awakens (UE5, 2021) 7 million instanced assets; 7,000 buildings instances A city of "sixteen kilometers square" streamed with Nanite (Unreal Engine blog)
Street Fighter V (compiled) 700,000–900,000 total; stage 400,000–500,000 polygons Whole scene at 60 fps (Polycount forum)
Nier: Automata (compiled) 2 million; 500 draw calls polygons Environment budget (Polycount forum)
The Division (compiled) 5–6 million triangles Scene at 60 fps (Polycount forum)

What the table shows. Frame budgets span more than two orders of magnitude, from roughly 100,000 triangles on a headset you wear to tens of millions drawn per frame on a console running Nanite. The headset and mobile numbers are close to each other: Vision Pro, Quest 2 and Google's phone demo all sit between 200,000 and 750,000 triangles. Fighting games and arena scenes can spend more per object because the camera sees little else. Nanite projects stop counting triangles per frame and start counting instances, which is why the Witcher 4 and Matrix numbers are instance counts. Even those vary by report: Epic's documentation gives about 500,000 tree instances for the Witcher 4 forest (Unreal Engine Documentation: Nanite Foliage), while a 2026 report on Nvidia's path-traced version describes "approximately 1 million trees" (TechSpot: Nvidia shows The Witcher 4 forest demo…).

Horizontal bar chart on a logarithmic scale comparing per-frame triangle numbers: Quest 2 under 750 thousand, Quest 3 under 1.5 million, PC VR 1 to 2 million, the UE5 demo drawing about 20 million, and about 1 billion source triangles behind that demo.
Published per-frame triangle numbers on a log scale. Each step on the axis is ten times the last; the UE5 demo draws roughly 13 times the Quest 3's whole-frame target.Chart by the handbook author, data from Meta and CG Channel

For the Nintendo Switch and last-generation consoles (PlayStation 4, Xbox One), no official per-frame triangle budget could be verified. Treat any single figure quoted for these platforms with suspicion, and use the method in How to set a budget yourself.

#2. Examples by game type

Game type Game / project Asset Number Unit Context Source
Mobile Google Armies demo Soldier about 360 triangles Hundreds on screen at once (Android Developers)
Mobile Google Armies demo Cannon tower about 3,000 triangles Fills a large part of the screen (Android Developers)
Mobile / VR Google CircuitVR demo Robot 11,000 triangles Only one object on screen, so it gets more (Android Developers)
Mobile (legacy guidance) Unity manual Character mesh 300–1,500 polygons "will give good results" on mobile (Unity Documentation)
Desktop (legacy guidance) Unity manual Character mesh 1,500–4,000 polygons "ideal range" for desktop (Unity Documentation)
Social VR, standalone VRChat on Quest / Android Avatar, "Good" rank 10,000 triangles Also 1 material slot, 1 skinned mesh (VRChat Creator Documentation)
Social VR, PC VRChat on PC Avatar, "Excellent" rank 32,000 triangles 4 material slots (VRChat Creator Documentation)
User-generated Roblox Any single mesh 20,000 max triangles Upload limit (Roblox Creator Hub)
Stylised, UGC Fortnite / UEFN Large complex prop 9,000 max at LOD0 "poly count" Epic's Fortnite-ready table (Fortnite Documentation)
Stylised Fortnite (compiled) Character 23,041 at LOD0 triangles (Polycount forum)
Stylised Fortnite Chapter 4 Tree, non-Nanite / Nanite about 10–20k / 300–500k vertices Two versions of the same tree (Unreal Engine tech blog)
Stylised Crash Bandicoot N. Sane Trilogy (compiled) Critters 17,264–24,678 triangles (Polycount forum)
Open world Horizon Zero Dawn Thunderjaw (machine creature) 550,000 polygons Director Mathijs de Jonge, 2015 (Wccftech)
Open world Mafia III / Definitive Edition One building about 20,000–30,000 triangles Lead environment artist (mafia.2k.com)
Open world Mafia: The Old Country One building more than 1,000,000 triangles Same studio, UE5 (mafia.2k.com)
Open world Witcher 4 UE5 tech demo Tree roughly 1–10 million polygons Nanite Foliage; about 500k instances (Unreal Engine Documentation)
Linear AAA Killzone Shadow Fall (PS4) Character, closest LOD about 40,000 polygons 7 LODs down to 150 (Guerrilla Games)
Linear AAA Killzone 3 (PS3) Character 10,000 polygons 3 LODs, 1K textures (Guerrilla Games)
Linear AAA The Order: 1886 (compiled) Character 100,000 polygons (Polycount forum)
Linear AAA Resident Evil 2 remake (compiled) Character about 137,000 triangles Hair alone about 30,600 (Polycount forum)
Linear AAA Final Fantasy VII Rebirth Cloud (battle model) about 220,000 polygons Lead character artist (PlayStation.Blog)
Fighting Street Fighter V (compiled) Character 80,000 polygons At 60 fps (Polycount forum)
Racing, simulation Gran Turismo 7 Car 500,000 polygons Official Gran Turismo account (GTPlanet)
Racing, simulation Forza Motorsport 4 Car 800,000 polygons Guinness record, 2011 (Guinness World Records)
Racing, simulation iRacing Dallara car / Skip Barber car 26,000 / about 10,000 polygons Art lead, 2010; source models about 500,000 (iRacing.com)
Racing, arcade Need for Speed: The Run Car about 25,000 triangles "including the four wheels and driver" (Speedhunters)
Racing, open world Forza Horizon 3 (compiled) 2017 Acura NSX 217,000 triangles (Polycount forum)
Flight simulation Microsoft Flight Simulator 2024 Whole aircraft up to 1,500,000 triangles "strive to be well below" (Microsoft Flight Simulator 2024 SDK Documentation)
Space simulation Star Citizen Idris frigate 3,322,169 polygons Guinness record, 2016 (Guinness World Records)

What the table shows. Game type changes the budget mainly through how many things share the screen. Google's two demos show this within one source: a lone robot gets 11,000 triangles, a soldier in a crowd gets 360 (Android Developers: Geometry). Platforms built for user content (Roblox, VRChat, UEFN) publish hard numbers because they cannot review every upload by hand. Racing and flight games spend the most on a single object because the vehicle fills the screen for the whole session. The open-world rows show the largest change: a Mafia building grew from about 25,000 to over a million triangles once the studio moved to Nanite (mafia.2k.com: The Technology Bringing Mafia: The Old…).

#3. Examples by asset type

Asset type Game / project Asset Number Unit LOD / context Source
Small prop Fortnite / UEFN Simple / complex small object 400 / 1,200 max "poly count" LOD0 maximum (Fortnite Documentation)
Small prop Fortnite / UEFN Small prop 900 at LOD0, 60 at LOD3 vertices Recommended (Fortnite Documentation)
Small prop Rainbow Six Siege (compiled) Magazine 1,000 triangles (Polycount forum)
Small prop Vampyr (compiled) Wheelbarrow 3,140 triangles (Polycount forum)
Small prop This page's worked example Barrel, 0.9 m 332 triangles LOD0 at 3 m, 1080p see below
Medium prop Fortnite / UEFN Simple / complex medium object 900 / 4,000 max "poly count" LOD0 maximum (Fortnite Documentation)
Medium prop Vampyr (compiled) Bookcase / bed / cash till 6,531 / 11,218 / 12,316 triangles (Polycount forum)
Hero / large prop Vampyr (compiled) Grand piano 23,449 triangles (Polycount forum)
Hero / large prop Rise of the Tomb Raider (compiled) Ballista 30,000 triangles (Polycount forum)
Hero / large prop Mafia III (compiled) Environment props 1,404–41,766 triangles Range across a portfolio (Polycount forum)
Modular piece Thief (2014) (compiled) Wall module about 850 triangles (Polycount forum)
Modular piece Assassin's Creed Origins (compiled) Stone module, 6 × 6 m about 4,000 triangles (Polycount forum)
Building Mafia III (compiled) Building 37,718 triangles (Polycount forum)
Building Mafia III vs Mafia: The Old Country One building 20,000–30,000 vs over 1,000,000 triangles Studio statement (mafia.2k.com)
Building The Matrix Awakens 7,000 buildings "thousands of modular pieces" — Nanite city (Unreal Engine blog)
Rock Epic's Valley of the Ancient sample Rock mesh, low poly with 4 LODs 19,066 triangles Nanite off; 1.34 MB package (Unreal Engine Documentation)
Rock Same sample Same rock, high poly 1,545,338 triangles Nanite on; 19.64 MB package (Unreal Engine Documentation)
Rock Fortnite / UEFN Small / medium / large rock 600 / 1,200 / 2,500 vertices LOD0 recommended (Fortnite Documentation)
Statue UE5 demo (2020) Statue sculpt 33 million triangles Imported from ZBrush, instanced 500 times (CG Channel)
Tree Fortnite / UEFN Small / medium / large tree 1,700 / 5,000 / 15,000 vertices LOD0; LOD3 is 150 / 1,200 / 2,000 (Fortnite Documentation)
Tree Fortnite Chapter 4 Tree, non-Nanite / Nanite about 10–20k / 300–500k vertices (Unreal Engine tech blog)
Tree Witcher 4 UE5 tech demo Forest trees roughly 1–10 million each polygons Nanite Foliage (Unreal Engine Documentation)
Tree Epic's Nanite Foliage example One tree 41 million triangles 12 unique parts, 2,160 part instances (Unreal Engine Documentation)
Vehicle Need for Speed: The Run Car about 25,000 triangles With wheels and driver (Speedhunters)
Vehicle Mafia III (compiled) Sports car 26,006 triangles (Polycount forum)
Vehicle Call of Duty: Black Ops III (compiled) Futuristic car / VTOL 29,150 / 67,764 triangles (Polycount forum)
Vehicle DRIVECLUB (compiled) Car 250,000 polygons (Polycount forum)
Vehicle Fortnite / UEFN Small / medium / large vehicle 1,200 / 6,000 / 9,000 vertices LOD0 recommended (Fortnite Documentation)
Vehicle Star Citizen Small fighter / largest carriers about 300,000 / about 7 million polygons Press report, 2013 (GameWatcher)
Weapon Rainbow Six Siege (compiled) HK417 rifle 15,000 triangles (Polycount forum)
Weapon The Division (compiled) FN FNX-45 pistol 15,000 triangles (Polycount forum)
Weapon Ghost Recon Wildlands (compiled) QBB-95 machine gun 13,421 triangles (Polycount forum)
Weapon Fortnite (compiled) Stylised mailbox weapon 7,404 triangles (Polycount forum)
Weapon Final Fantasy VII Rebirth Buster Sword about 8,000 polygons 50–100 in the 1997 battle model (Siliconera)
Creature Horizon Zero Dawn Thunderjaw 550,000 polygons Very large machine enemy (Wccftech)
Character (comparison) Killzone Shadow Fall Character LOD chain 40,000 → 20,000 → 10,000 → 3,200 → 800 → 350 → 150 polygons Seven LODs by distance (Guerrilla Games)
Character (comparison) Final Fantasy VII Remake Cloud about 110,000 polygons Hair is about half the model (PlayStation.Blog)
Character (comparison) Horizon Zero Dawn (compiled) Aloy's hair 100,000 triangles (Polycount forum)
Character (comparison) Metal Gear Solid 4 Most characters, incl. face about 5,000–10,000 polygons Face sculpt for baking about 500,000 (ModDB)

Unreal's LOD Group presets show how Epic expects categories to differ. These are LOD settings, not triangle targets (Unreal Engine Documentation: Static Mesh Automatic LOD Generation).

Unreal LOD Group Number of LODs Triangles kept per LOD step PixelError Source
SmallProp, LargeProp, Deco 4 50% 10 (Unreal Engine Documentation)
LevelArchitecture 4 50% 12 (plus SilhouetteImportance 4) (Unreal Engine Documentation)
HighDetail 6 50% 6 (Unreal Engine Documentation)
Vista, Foliage 1 n/a n/a (Unreal Engine Documentation)

What the tables show. Without Nanite, shipped AAA assets cluster in recognisable bands. Modular pieces sit in the hundreds to low thousands of triangles, because they repeat everywhere (modular kits). Furniture and medium props sit around 5,000–12,000. Hero props, weapons and arcade cars land around 13,000–30,000. First-person weapons get a lot for their size because they fill the screen the whole time. Simulation vehicles, creatures and Nanite assets jump by one to two orders of magnitude. Epic's UEFN table is much tighter than any AAA example because it targets phones as well as consoles. Unreal also gives architecture extra weight on silhouette, and that "high detail" assets get more LOD steps and a tighter error. See also hero assets, props and filler and modeling rocks, trees and terrain pieces.

Logarithmic bar chart of single assets: a non-Nanite Fortnite tree at 10 to 20 thousand vertices, Epic's low-poly sample at 19 thousand triangles, a Nanite Fortnite tree at 300 to 500 thousand vertices, Epic's Nanite sample at 1.5 million triangles, and the UE5 demo statue at 33 million triangles.
Published single-asset counts span more than three orders of magnitude, depending mostly on whether the target uses Nanite.Chart by the handbook author, data from Epic Games and CG Channel

#4. Historical growth

Era / platform Game Asset Number Unit Source
PS1 (1996) Crash Bandicoot Crash 512 polygons (Wikipedia; All Things Andy Gavin)
PS1 (1996) Crash Bandicoot Whole view about 800 (about 1,300 in Crash 2 and 3) polygons (All Things Andy Gavin)
PS1 (1996) Tomb Raider Lara Croft 350 polygons (Game Informer)
PS1 (1997) Final Fantasy VII Cloud, battle model about 900 polygons (PlayStation.Blog)
PS1 (1997) Gran Turismo Car about 300 polygons (TheSixthAxis; GTPlanet)
PC (2003) NASCAR Racing 2003 Car about 1,000 polygons (iRacing.com)
PS2 (2001) Metal Gear Solid 2 Snake over 4,000 polygons (GamingBolt)
PC (2004) Half-Life 2 Alyx 6,000 polygons (GamingBolt)
PS2 (2003) Tomb Raider: The Angel of Darkness Lara Croft over 5,000 polygons (Game Informer)
PS2 Gran Turismo 3 and 4 Car about 3,000 polygons (GTPlanet)
PS3 / Xbox 360 (2008) Tomb Raider: Underworld Lara Croft 32,000 polygons (Game Informer)
PS3 (2008) Metal Gear Solid 4 Most characters about 5,000–10,000 polygons (ModDB)
PS3 (2008) Metal Gear Solid 4 Background, per load 150,000–200,000 polygons (ModDB)
Xbox 360 (2009) Forza Motorsport 3 Car "10 times as many" as Forza 2 polygons (GameSpot)
PS3 (2010) Gran Turismo 5 Car about 500,000 polygons (TheSixthAxis)
PC (2010) iRacing Dallara 26,000 polygons (iRacing.com)
PS3 (2011) Killzone 3 Character 10,000 polygons (Guerrilla Games)
Xbox 360 (2011) Forza Motorsport 4 Car 800,000 polygons (Guinness World Records)
PS4 (2013) Killzone Shadow Fall Character, closest LOD about 40,000 polygons (Guerrilla Games)
PS4 era (2016) Mafia III Building about 20,000–30,000 triangles (mafia.2k.com)
PS4 (2020) Final Fantasy VII Remake Cloud about 110,000 polygons (PlayStation.Blog)
PS5 (2022) Gran Turismo 7 Car 500,000 polygons (GTPlanet)
PS5 (2024) Final Fantasy VII Rebirth Cloud about 220,000 polygons (PlayStation.Blog)
UE5 / Nanite (2025) Mafia: The Old Country Building over 1,000,000 triangles (mafia.2k.com)
UE5 / Nanite (2025) Witcher 4 tech demo Tree roughly 1–10 million polygons (Unreal Engine Documentation)

What the table shows. A hero character grew from a few hundred polygons on the PS1 to over 200,000 on the PS5. That is roughly a 250-fold increase for Cloud alone across 27 years (PlayStation.Blog: Final Fantasy VII Rebirth: The polygonal…). The biggest single jump in each series tends to come with normal-map baking and a new console, not steady yearly growth: Killzone's characters quadrupled between PS3 and PS4 (Guerrilla Games: Killzone Shadow Fall Demo Postmortem). Since Nanite, environment assets are growing faster than characters. A whole PS1 view in Crash Bandicoot held about 800 polygons (All Things Andy Gavin: Making Crash Bandicoot – part 3); one Quest 3 frame is asked to stay under 1.5 million triangles (Meta Horizon Developers: Device Optimization Comparison).

#Rule-of-thumb tables (unsourced, use with care)

Many blogs publish per-asset ranges. The two below are typical. Neither cites a source, and they disagree, so use them only as a sanity check against the sourced tables above.

Asset type Mobile PC / console VR Source
Small prop 300–2K 2K–10K 500–5K (Tripo blog)
Large prop 2K–8K 10K–30K 5K–15K (Tripo blog)
Environment asset 1K–10K 5K–50K 2K–20K (Tripo blog)
NPC character 5K–15K 20K–50K 10K–30K (Tripo blog)
Hero character 15K–30K 50K–100K+ 25K–60K (Tripo blog)
Prop 300–1,500 1,000–10,000 "keep low" (Sloyd glossary)
Character 3,000–10,000 20,000–80,000 — (Sloyd glossary)

Forum advice varies just as much. One Unity forum user in 2014 suggested keeping main characters under 10,000 polygons on mobile and between 70,000 and 120,000 on PC, Xbox One and PS4 (Unity Discussions: Poly count for character?). Note "polygons", not triangles. At the far extreme, the Polycount Low Poly Challenge in 2010 limited a player model, vehicle or whole scene to 1,024 triangles each as a deliberate art constraint (Polycount forum: LPC vol2 #4 - TRON).

#How to set a budget yourself

You can work out a defensible budget from three things: how big the asset gets on screen, how many such assets are visible at once, and the platform's frame budget.

#Step 1: find the screen size

Unity defines LOD transitions as the object's height "as a percentage of the screen height" (Unity Documentation: LOD Group). You can estimate it with basic trigonometry. With a vertical field of view θ, the visible height at distance d is 2 · d · tan(θ/2).

Take a barrel 0.9 m tall with a 0.3 m radius, a 60° vertical field of view and a 1080-pixel-tall screen (see cameras, lenses and field of view).

  • At 3 m, the visible height is 2 × 3 × tan 30° ≈ 3.46 m.
  • That gives 1080 / 3.46 ≈ 312 pixels per metre.
  • The barrel is about 281 px tall (26% of screen height), and its radius is about 94 px.

#Step 2: spend triangles where the silhouette needs them

A round object made of n straight sides deviates from a true circle by s = r · (1 − cos(180°/n)). Keep that error under about one pixel and the player will not see facets.

A circle with an inscribed hexagon. One side of the hexagon and the gap between it and the circle are highlighted, labelled as the silhouette error s. A table lists the error in pixels for 12, 16, 24 and 32 sides at a 94 pixel radius.
Silhouette error is the gap between the true curve and a straight side. At a 94 px radius, 24 sides keep it under one pixel.Diagram by the handbook author
Sides Error at 94 px radius
12 about 3.2 px
16 about 1.8 px
24 about 0.8 px
32 about 0.45 px

So 24 sides are enough at 3 m. With six height segments for the bulge and hoops and two 24-sided caps (22 triangles each), LOD0 is 6 × 48 + 44 = 332 triangles. Flat areas, such as the lid, need no extra geometry; let the normal map carry the small detail.

That lands close to the published bands above: under UEFN's 400-poly cap for a simple small object (Fortnite Documentation: Fortnite-Ready Assets Best Practices), and far below Vampyr's 3,140-triangle wheelbarrow (Polycount forum: Polycounts in next gen games thread!). A plain barrel is a simple shape.

#Step 3: build the LOD chain from screen size

Halve the screen size and you can halve the sides for the same pixel error:

LOD Distance Radius on screen Sides Height segments Triangles
LOD0 up to 3 m 94 px 24 6 332
LOD1 from 6 m 47 px 16 6 220
LOD2 from 12 m 23 px 12 3 92

Unreal's presets allow more error than one pixel; small props use a PixelError value of 10 (Unreal Engine Documentation: Static Mesh Automatic LOD Generation). That is a reminder that one pixel is a strict target. Relax it for props players never inspect.

#Step 4: check against the frame

Now work from the top down. Say you build a VR room for Quest 3, with a recommended ceiling of 1.5 million triangles and 200 draw calls per frame (Meta Horizon Developers: Device Optimization Comparison). If about 250 meshes are visible at once, the average is 6,000 triangles each. But 250 meshes already exceed 200 draw calls before you count materials, so the main task is merging and instancing rather than trimming triangles. This is the common outcome: the draw call and material budget binds before the triangle budget does.

A real kit to test your budgeting on: 12 game-ready pieces (floors, walls, stairs, a portcullis, an altar) with pivots aligned to Unity or Unreal grids, a brick trim sheet and a texture atlas, about 14,400 faces in total. Count how many pieces a typical corridor view would show and work out the triangles per view.Tom (just_polygons), via Sketchfab

#Common mistakes

  • Counting quads. Your "polys" may be half the real triangle count.
  • Comparing headline numbers. A "500,000-polygon car" and a "25,000-triangle car" may not be measured the same way.
  • Budgeting only the hero. One 50,000-triangle prop seen once costs less than a 2,000-triangle prop scattered 500 times.
  • Spending triangles on flat areas. Triangles belong on the silhouette and on curves that catch light; flat panels can be very low.
  • Forgetting materials. Five materials on one prop can cost more than doubling its triangles. See draw calls.
  • Tiny triangles. On mobile, triangles under about 10 pixels in area waste GPU work (Android Developers: Geometry).
  • Masked foliage on Nanite. Masked materials carry a significant shading cost in Nanite (Unreal Engine tech blog: Bringing Nanite to Fortnite Battle Royale in…).
  • Assuming Nanite everywhere. It does not support stereo VR rendering or forward rendering (Unreal Engine Documentation: Nanite Virtualized Geometry).

#In different tools

#Further reading and watching

How an open-world AAA team built, LODed and billboarded its vegetation; the LOD discussion is around the 40-minute mark. Watch on YouTube

References

  1. Meta · Device Optimization Comparison · Meta Horizon Developers, 2026 · docs · accessed 2026-10-20
  2. Epic Games · Static Mesh Automatic LOD Generation · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-20
  3. Blender Foundation · Decimate Modifier (Blender 3.6 Manual) · Blender Manual, 2023 · docs · accessed 2026-10-20
  4. Brian Karis · Nanite: A Deep Dive · SIGGRAPH 2021, Advances in Real-Time Rendering in Games, 2021 · talk · accessed 2026-10-20
  5. VRChat · Performance Ranks · VRChat Creator Documentation, 2026 · docs · accessed 2026-10-21
  6. Meta · Performance Guidelines (PC SDK) · Meta Horizon Developers, 2026 · docs · accessed 2026-10-20
  7. Epic Games · Simplify Static Meshes in Fortnite · Fortnite (UEFN) Documentation, 2026 · docs · accessed 2026-10-21
  8. Meta · WebXR Performance Optimization Workflow · Meta Horizon Developers, 2026 · docs · accessed 2026-10-20
  9. Epic Games · Nanite Technical Details · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-20
  10. Epic Games · Bringing Nanite to Fortnite Battle Royale in Chapter 4 · Unreal Engine tech blog · article · accessed 2026-10-20
  11. Google · Geometry · Android Developers (game optimisation guide) · docs · accessed 2026-10-21
  12. Epic Games · A first look at Unreal Engine 5 · Unreal Engine blog, 2020 · article · accessed 2026-10-20
  13. Epic Games · Nanite Virtualized Geometry · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-20
  14. Epic Games · Nanite Foliage · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
  15. Hangar 13 / 2K · The Technology Bringing Mafia: The Old Country to Life (Dev Diary 2) · mafia.2k.com · article · accessed 2026-10-21
  16. Apple · Optimize your 3D assets for spatial computing · WWDC24 (session 10186), 2024 · talk · accessed 2026-10-21
  17. Roblox · General specifications · Roblox Creator Hub, 2026 · docs · accessed 2026-10-21
  18. JordanN and Polycount members · Polycounts in next gen games thread! · Polycount forum, 2014 · forum · accessed 2026-10-21
  19. Unity Technologies · Practical guide to optimization for mobiles (Unity 2018.3 Manual) · Unity Documentation, 2018 · docs · accessed 2026-10-21
  20. Asobo Studio / Microsoft · Aircraft Modeling General Principles · Microsoft Flight Simulator 2024 SDK Documentation, 2026 · docs · accessed 2026-10-21
  21. Jim Thacker · Watch Epic Games' amazing new Unreal Engine 5 demo · CG Channel, 2020 · article · accessed 2026-10-20
  22. PlayStation.Blog · The Witcher 4 Unreal Engine 5 Tech Demo on PS5 revealed · PlayStation.Blog, 2025 · article · accessed 2026-10-21
  23. Epic Games · Introducing The Matrix Awakens: An Unreal Engine 5 Experience · Unreal Engine blog, 2021 · article · accessed 2026-10-21
  24. Daniel Sims · Nvidia shows The Witcher 4 forest demo running path tracing on an RTX 4070 · TechSpot, 2026 · article · accessed 2026-10-21
  25. Unity Technologies · Modeling Characters for Optimal Performance (Unity 2017.2 Manual) · Unity Documentation, 2017 · docs · accessed 2026-10-21
  26. Epic Games · Fortnite-Ready Assets Best Practices · Fortnite (UEFN) Documentation, 2026 · docs · accessed 2026-10-21
  27. Aernout van de Velde · UPDATED: Horizon: Zero Dawn's Thunderjaw Consists Of 550k Polygons & Stands 24×9 Meters Tall · Wccftech, 2015 · article · accessed 2026-10-21
  28. Michal Valient (Guerrilla Games) · Killzone Shadow Fall Demo Postmortem · Guerrilla Games, 2013 · talk · accessed 2026-10-21
  29. Dai Suzuki (Square Enix) · Final Fantasy VII Rebirth: The polygonal evolution from 1997 to the modern remake project · PlayStation.Blog, 2024 · article · accessed 2026-10-21
  30. Andrew Evans · Gran Turismo 7's Car Models Use 500,000 Polygons Each · GTPlanet, 2022 · article · accessed 2026-10-21
  31. Guinness World Records · Most polygons per car in a racing videogame · Guinness World Records, 2011 · web · accessed 2026-10-21
  32. John Hughes · I love cars · iRacing.com, 2010 · article · accessed 2026-10-21
  33. Carl Jarrett and Andy Blackmore · Behind The Scenes>> Creating The Cars For Need For Speed The Run · Speedhunters · article · accessed 2026-10-21
  34. Guinness World Records · Most polygons in a playable spaceship · Guinness World Records, 2016 · web · accessed 2026-10-21
  35. Simon Priest · Star Citizen asset cost for ships anywhere from $35,000 to $150,000 · GameWatcher, 2013 · article · accessed 2026-10-21
  36. Jenni Lada · Final Fantasy VII Rebirth Character Models Compared to FFVII · Siliconera, 2024 · article · accessed 2026-10-21
  37. Yoshiyuki Watanabe · SOFTIMAGE|XSI Case Study: Konami - METAL GEAR SOLID 4 · ModDB (repost), 2010 · article · accessed 2026-10-21
  38. Asobo Studio / Microsoft · LOD Technical Information · Microsoft Flight Simulator 2024 SDK Documentation, 2026 · docs · accessed 2026-10-21
  39. Wikipedia contributors · Crash Bandicoot (character) · Wikipedia, 2026 · web · accessed 2026-10-21
  40. Andy Gavin · Making Crash Bandicoot – part 3 (via the blog's 'video games' tag archive) · All Things Andy Gavin, 2011 · article · accessed 2026-10-21
  41. Game Informer · Lara Croft: The Evolution · Game Informer, 2010 · article · accessed 2026-10-21
  42. TheSixthAxis · GT5 Has 'Real' Cars · TheSixthAxis, 2010 · article · accessed 2026-10-21
  43. Arjun Krishna Lal · Metal Gear Solid 2 – A Technical Retrospective of Hideo Kojima's Masterpiece · GamingBolt, 2020 · article · accessed 2026-10-21
  44. GameSpot · Forza Motorsport 3 Hands-On · GameSpot · article · accessed 2026-10-21
  45. Tripo · Poly Count for Game Assets - How to Prepare AI 3D Models · Tripo blog · web · accessed 2026-10-20
  46. Sloyd · Polygon Count · Sloyd glossary · web · accessed 2026-10-20
  47. Unity community · Poly count for character? · Unity Discussions · forum · accessed 2026-10-20
  48. hawken and Polycount members · LPC vol2 #4 - TRON · Polycount forum, 2010 · forum · accessed 2026-10-20
  49. Unity Technologies · LOD Group (Unity 6.4 Manual) · Unity Documentation, 2026 · docs · accessed 2026-10-20

Last updated 2026-10-22