Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Voting for the Unity Awards are OPEN! We’re looking to celebrate creators across games, industry, film, and many more categories. Cast your vote now for all categories
    Dismiss Notice
  3. Dismiss Notice

How many tris should I plan for in a game meant for a typical player?

Discussion in 'General Graphics' started by SoundStormLabs, Jun 10, 2018.

  1. SoundStormLabs

    SoundStormLabs

    Joined:
    May 6, 2017
    Posts:
    176
    I'm working on a game that will have many tiles, creatures and flora, but I'm starting to become concerned over how detailed I'm making them, given that a typical game character has around 3000 polys or less. I'd like to know about how complex I can make these objects in an open-world level that will have thousands of tiles and flora, and although shaders and normal maps and textures definitely play a major roll in this, I want to enhance accuracy/detail of the shape of 3D models over anything else, which means a single tile could easy have between 1000-6000 tris.

    Now if you look here https://store.steampowered.com/hwsurvey/videocard/ you might be tempted to think everyone has cutting edge graphics cards because many of the most common cards are decent nvidia ones. But, if you add up the percentage of people with crappy graphics cards that aren't even in the GeForce 1000+ series, you'll find all those small numbers add up to at least 30%, it would be a bit more but it became tedious to add more up and compare them to every other card.

    This problem becomes even worse when you consider that those common nvidia cards from the Steam survey don't even represent most of the world as the market share of different GPU manufacturers, inferred by the demand from their shipments can be seen here https://www.statista.com/statistics/754557/worldwide-gpu-shipments-market-share-by-vendor/ with light blue being nvidia, dark grey being Intel and light grey being radeon. Intel has the largest market share at around 60%-70%, and this is a problem because of the 3 major manufacturers, Intel is know for having typically worse graphics cards despite exceptional CPU processors.

    After some research, I was fortunate enough to find this link https://www.darkcreations.org/forums/topic/5510-skyrim-custom-mesh-polycount-comparisons/ detailing the number of tris on different Skyrim models. Knowing that multiple characters and flora can be rendered in a scene, I know that a player who can run Skyrim can run at least 100,000 tris with all the shaders and textures, but at minimum settings. The special edition is even worse in terms of its requirements, I won't waste time on that.
    However, I've found a couple Unity developers giving different numbers for what I should expect, understandably. Some one suggested 3 million tris for an upper limit, one suggested 11 million.

    For a game that will likely forgo complicated shaders for realistic meshes but still have colorful textures and very accurate physics, what is a good range of tris I should I plan on the game rendering in a scene of gameplay, prior to low-poly substitutes for the object fade?
     
    Last edited: Jun 10, 2018
  2. AkiraWong89

    AkiraWong89

    Joined:
    Oct 30, 2015
    Posts:
    662
    Actually a bit hard to give an exact number. Polygon is just one of the small factor.
    Did you played some games where the graphic is normal but very laggy...
    And oppositely some games where the graphic is fantastic but run smoothly?
    Yes, talk about optimization. You can always do some good practices as below:

    - Bake lighting into static meshes as much as you can.
    - Bake non-static lighting information by using suitable amount of light probes.
    - Bake surrounding reflection data into reflection probes in suitable area distribution.
    - Bake camera occlusion culling to auto hiding meshes that you won't see.
    - Turn off any real-time lighting via scripting which are far from you or in other rooms etc.
    - Make texture atlas as much as you can where quality is still acceptable.
    - Make LOD for props. The more complex the object, the more LOD level you may need.
    - Don't work opaque and transparent / alpha clipping textures together. Separate them.

    Good luck. Have a nice day.;)
     
  3. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    This is the 3rd thread you've made on the subject and people (me included) keep giving the same answer. Which is: Make it high poly and have LODs then you can make it work without an issue. LOD generation is easy these days. 3D models have to be variable level of detail. Skyrim has LODs too.

    Here's some safe numbers without knowing your game or target platform:

    Player model LOD0 = 40,000
    Player model LOD1 = 20,000
    Player model LOD2 = 8,000
    Player model LOD3 = 2000

    This means you can start LOD0 on all devices if it works nice, but on slower machines or your game has issues, it starts on LOD1 instead. Stuff like that. That is what all games have options for. You can change those numbers to better fit your own choices but going over a certain amount does yield diminishing returns visually.
     
  4. SoundStormLabs

    SoundStormLabs

    Joined:
    May 6, 2017
    Posts:
    176
    It's a nice thought but the problem with that, as you ignored for the third time, is I won't have many options for LOD to begin with. A tile will have either 1000-6000 tris, or it will have 12, that's it, and that's because the accuracy of the models is an integral aspect of the game. If it has any less, then you're talking about a script that automatically unsubdivides each mesh in real time which is going to soak up any processing I was trying to save, and if that happens, the tiles won't actually be tiles anymore because their vertices will be misaligned and won't merge.

    Thanks those are all good ideas. I don't think the tiles and sun are going to move much so it's good to plan on that.
     
    Last edited: Jun 11, 2018
  5. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Have you tried GPU instancing?
     
  6. SoundStormLabs

    SoundStormLabs

    Joined:
    May 6, 2017
    Posts:
    176
    If I knew what it was actually doing to speed up rendering I would try it, otherwise I can't be sure it won't interfere with anything else I'm trying to do. I could see it as a way of batching similar objects like colors in an optimized jpeg or PNG into one algorithm, but I don't see where it explicitly does that.
     
  7. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Just tick it on in the material for now "enable GPU instancing" and any tiles that share the same material will likely improve performance.
     
  8. SoundStormLabs

    SoundStormLabs

    Joined:
    May 6, 2017
    Posts:
    176
    So it only saves on rendering materials, not actually grouping a number of tris into a simpler algorithm? I'm going to have a lot more tris than materials, so I don't want to worry about materials just yet. Literally if there were 0 shaders beyond the most basic default, the number of tris over many tiles would probably be enough to cause latency.
     
    Last edited: Jun 11, 2018