Home Technical Talk

Performance affecting with polycount/uv etc

interpolator
Offline / Send Message
Larry interpolator
Hello guys, can someone explain to me or give me some source of info on what affects performance most? I know that polycount, uv seams, drawcalls on ue4 and texture numbers/ sizes all affect a game"s performance, but I dont know to what degree nor have any reference so I generally dont know how to model, how much to cut on my geometry and where to use more geo for detail.

1)How much performance does a texture take?
2)is it better to have an rgba texture instead of 4 same sized 1 channel textures?
3)what about material instances?
4)Do you keep track of your vertex count with the uv seams in an engine? 
5)How many tris does a close up environment can take before the LOD"s kick in?
6) How much with hq and LOD alltogether?
7) do all the above get expotentially heavier the more lights iI place on my scene?

I have literally no clue about any of these technical information, so if anyone can give me some insight/sources/books to read about that, i'd really appreciate it!!

Replies

  • Axi5
    Offline / Send Message
    Axi5 interpolator
    All of these are dependent.

    1) That depends on:
    • The texture size
    • The texture compression
    • How the texture is sampled
    2) If I'm understanding you correctly. You mean 4 grayscale channel images vs 1 RGBA image with those 4 grayscale channels packed. If so, either/or, providing that the engine packs it correctly. It's safer to do the 1 RGBA for sure, that's 3 fewer times the CPU has to open the stream to the GPU, also saves you precious texture units.

    3) What about them?

    4) Don't over optimize. Do your best to describe the shape with as little as you need. It's okay to be a bit over.

    5) Depends on how you set it up

    6) Unsure about your wording on this q

    7) It depends on your rendering pipeline. If you're using deferred rendering then no, frametime is not hit badly with more lights. It is however a massive problem with forward rendering, where O(geometry * lights). Unreal Engine is a deferred renderer first and foremost, so adding lots of lights is not a massive concern.
  • Larry
    Offline / Send Message
    Larry interpolator
    Axi5 said:
    All of these are dependent.

    1) That depends on:
    • The texture size
    • The texture compression
    • How the texture is sampled
    2) If I'm understanding you correctly. You mean 4 grayscale channel images vs 1 RGBA image with those 4 grayscale channels packed. If so, either/or, providing that the engine packs it correctly. It's safer to do the 1 RGBA for sure, that's 3 fewer times the CPU has to open the stream to the GPU, also saves you precious texture units.

    3) What about them?

    4) Don't over optimize. Do your best to describe the shape with as little as you need. It's okay to be a bit over.

    5) Depends on how you set it up

    6) Unsure about your wording on this q

    7) It depends on your rendering pipeline. If you're using deferred rendering then no, frametime is not hit badly with more lights. It is however a massive problem with forward rendering, where O(geometry * lights). Unreal Engine is a deferred renderer first and foremost, so adding lots of lights is not a massive concern.
    I know that everything is dependent, but i dont have ANY reference or examples. In every question i make, i am asking how much does it hit the performance. Let me rephrase with examples

    1) How much performance does a (e.g) 2k JPEG texture take
    2)Yes, lets say i pack my roughness/normal/alpha mask and metalic, all in one texture. Is this better than having 4 different textures, but all of them with 1 channel active?
    3) How much performance does a material take, and how much % less performance does a material instance take, from the master material?
    4) Do you get directions on your polygon count from your supervisors? Do you have a general budget for a whole environment and you spend your polygons as you want? Or do they give you a polygon count budget for every category like props / landscape / architecture / character / weapons?
    5)A modern day average computer, how many polygons can it have in a real time game with their highest polycount of LOD's and
    6) how many polycons does some an open world game (e.g. wow)  utilise in your screen? You obviously use LOD's the further you go, combined with atmospheric fog to keep you from seeing infinitely and loading the whole world, but how many polygons is that as a total?

    I understand these might be very specific technical questions, but i have no reference whatsoever on scale/numbers in ANY of the above, to have a deeper understanding of how does everything affect performance. I know it will not be a problem when making small rooms and scenes, but in a large scale project, how does all this affect performance? Where to invest and where to reserve as a general rule of thumb? All i am looking for is a general guideline, nothing too specific. Or some source of information that will make me understand performance better
  • Axi5
    Offline / Send Message
    Axi5 interpolator
    I don't have much time to answer so I'm being brief:

    > 1) How much performance does a (e.g) 2k JPEG texture take

    Using which compression? DXT1, 3, 5 etc. Refer to above. If you save your texture to a DDS file, the file on your disk will be the roughly the same amount it will take in VRAM on a GPU. If you want to test it, do so using frame times, ms not fps.

    > 2)Yes, lets say i pack my roughness/normal/alpha mask and metalic, all in one texture. Is this better than having 4 different textures, but all of them with 1 channel active?

    Yes. Refer to above.

    3) This question is fundamentally wrong. A material is just a piece of data you use to tell the graphics card how to render a surface. A material instance is just telling the graphics card what data is shared between models. So instancing by itself instantaneous and practically free. The problem arises from the complexity of the shader and how many pixels the GPU has to render that shader on, this is split into categories texel and pixel fill rate. I recommend reading up on it.

    As for the rest of your questions. GPU's these days can chew through millions upon millions of triangles in scenes. You can find some numbers on the Wiki here at PolyCount but I would say it's not worth concerning yourself over.
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    As above really.. A couple of extra thoughts below.. 

    2.. Packing 4channels into one texture  isn't always better.  Less textures means less time spent reading textures and less samples used in the Shader but after compression (depending on type)  you can end up with double the memory cost of a 3 channel texture. 

    6: to give you an idea of why numbers are meaningless .. I worked on a PS4 title that had a budget of approx 1.2million tris per frame, a contemporary title on the same hardware had a budget approaching ten times that. Why? Different approaches to rendering, different distribution of resources etc. etc. 

    The answer to all of these questions isn't just 'it depends', the answer is 'it depends on your priorities' 


  • Larry
    Offline / Send Message
    Larry interpolator
    @Axi5
    @poopipe

    thank you both guys for the clarification, it actually helped me alot to understand and take better desicions on modeling :) I was always trying to win as many polygons as i could, giving alot of time trying to reduce geometry only to get rid of 500 tris in a 7k tris model. :pensive:

Sign In or Register to comment.