Performance (Frame Rate)

Following things will increase performance for real-time use.

These points are roughly all the things one needs to consider when working with the model in a game engine like Unreal Engine or Unity. These tips can however also help for things like Marmoset Toolbag real-time viewer files as well as making the 3D software viewport smoother.

  • Use as few materials as possible
  • Use as few texture maps as possible. By efficiently reusing the maps, using mirrors or by using atlas maps to get many small items together in one texture / material / shader. Extra textures are far more performance hungry than extra polygons
  • Batch many small objects together on run time to reduce draw call amount. (This has nothing to do with merging objects in the modeling software)
  • If possible, the entire scene should use one and the same shader
  • Avoid using alpha when possible. 99% of the stuff people use alpha for these days could be done with actual geometry, and would both look better and perform better
  • Use as little transparent stuff as possible (fire for example needs it)
  • Clean poly flow will ensure better triangle strip generation. Which saves memory and transform time. Yes, sometimes MORE geometry can result in less memory use and less performance loss if done right!
  • Character mesh optimization has different rules than those for environments (This is partially because world geometry in games is mostly set to static)

Industry Examples (Characters)

I didn’t add platform because basically all are both PC and Console. The focus here is mainly the characters of games, except for if explicitly stated differently.

ExamplePolycount (tris) / LOD’sTexture MapsMap Channels / Bit DepthsLinks
Overwatch
Blizzard
2016
4 LOD’s: LOD0=45k, LOD1=22k, LOD2=11k, LOD3=5.5k. Plus around 15k for weapons2k (Emissive is usually reduced to 1024 or 512) The same set is made for weapons at 1024x1024. Heroes with visible skin also get a blood map (24bit RGB) that our skin shader uses to fake sub-surface scattering. All textures must be under 30mb after block compressionColor (24bit RGB) + Ambient Occlusion (8bit gray), combined into a 32bit RGBA map. Specular (8bit gray) + Roughness (8bit gray), combined into a 16bit map. Emissive (8bit gray)Source
Resident Evil Village
Capcom
2021
Lady Dimitrescu is 350k. And the Duke is 300k
League of Legends
Riot
Killzone Shadow Fall
Guerrilla Games
2013
LOD1=40k, LOD7=150
Call of Duty: Ghosts
2013
LOD0=23k
The Order 1886
2015
100k
Rainbow Six Siege
2015
40k3 x 2k maps
Street Fighter 5
Capcom
2016
80k (more than half of that in head)
Dishonored 2
Arcane Studio
2016
ArtStation
Final Fantasy 15
Square Enix
2016
100k per character of that 20k for hairSource
NieR: Automata
PlatinumGames
2017
100k
Horizon : Zero Dawn
Guerrilla Games
2017
Thunderjaw=550k, Alloy’s Hair=100kSource, ArtStation
Fortnite
Epic Games
2017
LOD0=23k
Fractured Space
2016
Spaceship = 30-280k
Star CitizenSpaceship=30mil

A Deep Dive into the Technical Side of Mesh Rendering: