Home Technical Talk

importance of LODs in game ?

focus_method
polycounter lvl 5
Offline / Send Message
focus_method polycounter lvl 5
hi,
when doing retopology , i am aware what is the purpose of  LOD but are all those LODs really necessary for every in game asset ?

Replies

  • Benjammin
    Offline / Send Message
    Benjammin greentooth
    It depends.
    Vague answer for a vague question ;)
  • Klunk
    Offline / Send Message
    Klunk ngon master
    it depends on how far away it can be seen
  • iam717
    Offline / Send Message
    iam717 greentooth
    think it helps with loading time-frames, so beneficial it seems, less to load, loads fast = smoother? from what i try to gather from information available.  For the record I've never made any, not that i couldn't it just never came up, don't know the exact process, to me it sounds like a lot of lowering and redoing uv's which sounds like a nightmare.
  • focus_method
    Offline / Send Message
    focus_method polycounter lvl 5
    yes, it is a nightmare,
    thats what i did on my previous job in a studio and thats why im asking is it really really mandatory that much of optimisation.
    So,  every AAA character need to have 5-7 LODs when doign retopo ? maybe that would be a better question
  • gnoop
    Online / Send Message
    gnoop sublime tool
    Until your model is pretty simple like  wall barrier  , a box or like    LODs  are necessary .   For a character  Simplygon  does an ok job already.   As far as I know Unreal uses Simplygon  and makes lods automatically .    But in some cases LODs require decisions and compromises  Ai incapable to do yet.   There are  also a semi-automated way  when you use decimation  tool, vertex groups  and normal transfer  from hi res to low res.   Usually only  first next lod is important because you see the switch to it  pretty close to camera. I usually bake for that lod  rather than  most detailed one .   Then it could be just decimation modifier or whatever it's called in your 3d package . They tend to keep shape and  normals  as long as possible now  .   Blender has pretty nice one  for example.
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    Unreal doesn't use simplygon - you can plug it in but the default is just a rudimentary (shite) decimator

    ok so..  this is a gross oversimplification but hopefully gets the point across

    The primary function of LODs is to reduce the amount of stuff on screen that your machine has to process so that it can draw frames more quickly

    The main areas where having too much geometry on screen will cause your frames to take longer are working out what to draw, in calculating shadows and in putting the colours on screen

    its a pretty simple thing to visualise really. 
    if you have a 10000 triangle mesh and it fills the screen you're  fine

    if you zoom out and there are 1000 of these meshes in your scene the following things happen :
     - its the same mesh so you haven't added any significant memory cost 
     - you have 1000* the amount of things to consider when working out what's occluded by something else
     - you have 1000* the amount of things to consider when casting shadows
     - every single triangle got a lot smaller,
     - - the cost of drawing a pixel to screen is directly related to the number of triangles that cover that pixel - more triangles = more time spent
     - - if a triangle is small enough that it can't be drawn it will be discarded but you still have to account for them in shadows and occlusion (i.e you paid for it and can't see it) 

    if you lod the meshes well, you don't increase the numbers by 1000* and you also don't get small triangles 

    There is a critical mass -  i.e you won't hit any problems until you reach a certain level of scene complexity.  the numbers involved will depend on your hardware capabilities but when you hit it, the effect will be significant.


    Nanite attempts to solve these problems automatically so in theory negates the need for lods. 
    In practice though you can't just turn it on and assume it's all gonna go fast because the default settings are shite and there is a significant overhead attached to running nanite in the first place. 

    The strategy Gnoop describes above is generally a very good idea,  its something I've used extensively in production and it works extremely well. 

  • Neox
    Offline / Send Message
    Neox godlike master sticky
    yes, it is a nightmare,
    thats what i did on my previous job in a studio and thats why im asking is it really really mandatory that much of optimisation.
    So,  every AAA character need to have 5-7 LODs when doign retopo ? maybe that would be a better question
    I assume the meshes you had to lod have not been constructed with LODs in mind? Which is a pretty common issue. Auto unwrapped and relaxed UVs, less than optimal geometry, floating geometry not baked down etc.
    There are lots of things that can make the job of creating lods a nightmare or a breeze
  • myclay
    Online / Send Message
    myclay polycounter lvl 11
    Auto LOD is included in every major game engine and it can be good enough in most cases until it isn´t anymore.
    Like for example eyes or hair pieces which are suddenly missing. (these four examples show an active Auto LOD without the included Distance where it occurs)

    Depending on when those issues pop up, you could do some educated guesses on what Method to choose.
    Mixing Auto LOD and having other meshes in the same scene using Manual LOD works. Doing this reduces the needed amount of work.

    I haven´t looked into this yet but it might be even possible to mix AutoLOD and manual LOD depending on the ranges you set. This would drastically lower the amount of needed manual LODs.



  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    Ive just run a series of pretty exhaustive tests with simplygon 10 vs manual lods on a load of characters
    (we already know it can't cope with hard surface meshes so didn't bother there)

    TLDR :
    You'll get a better looking result doing it by hand for the same geometry cost - especially on the lowest lods
    Simplygon still can't give you a one size fits all solution because it's still using a % of input mesh metric to determine how much to reduce something by (which is extremely wrong). 

    On the other hand..
    Because the SDK exists now I'm able to generate acceptable lods for over 100 pre-skinned character body parts in 10 minutes,  i'm able to do it over and over again with different settings and i'm able to integrate it into our export pipeline. 

    It's a tradeoff - I'd rather ship with suboptimal auto lods and only get 90% of the performance than have no lods for 80% of the dev cycle and ruin any hope we have of gauging how well the game runs.




Sign In or Register to comment.