1. Forums
  2. Discord
  3. About Mapcore
  4. Patreon Supporters
  • Login
  • Register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • More Options
  1. Mapcore
  2. Discussions
  3. Level Design

Draw calls in source?

  • grapen
  • February 24, 2017 at 2:35 PM
  • grapen
    • February 24, 2017 at 2:35 PM
    • #1

    Imagine a scene where you have two separate models, each with their own 1k material. Now let's add another model that utilizes both of these materials. Is this favorable over creating a new 1k material for the third model in terms of performance?

  • WD
    • February 24, 2017 at 3:23 PM
    • #2

    There's a whole lot of different console commands for engine telemetry, why not try testing that?

    https://developer.valvesoftware.com/wiki/Showbudge…wiki/Showbudget

    You'd only save memory for using the same texture.

    You're only going to hit the draw call bottle neck when rendering somewhere around over 3k static meshes simultaneously ( and by then its only ever so slightly affecting fps ). It is almost impossible to hit that number in a CSGO like corridor shooter if you consider all the good design practices. So if you'd have that many static meshes would it be better if they'd share some of the textures to save memory? I think so.


    In the case of just three models it doesn't really matter unless you want to save hdd space.

  • grapen
    • February 24, 2017 at 3:49 PM
    • #3
    Quote from WD

    21 minutes ago, WD said: There's a whole lot of different console commands for engine telemetry, why not try testing that?

    https://developer.valvesoftware.com/wiki/Showbudge…wiki/Showbudget

    You'd only save memory for using the same texture.

    You're only going to hit the draw call bottle neck when rendering somewhere around over 3k static meshes simultaneously ( and by then its only ever so slightly affecting fps ). It is almost impossible to hit that number in a CSGO like corridor shooter if you consider all the good design practices. So if you'd have that many static meshes would it be better if they'd share some of the textures to save memory? I think so.


    In the case of just three models it doesn't really matter unless you want to save hdd space.

    Display More

    Excellent link, didn't know this existed. Have some testing to do =)

    I ask because of what Cliffe had to say about this picture:

    [Blocked Image: http://i.imgur.com/r3yr5QK.png]

    "The reason you're seeing those models render is because models of similarity (that share textures) were combined in order to reduce draw calls. We measured the peformance of the map before and after this optimization and it resulted in a 40% average framerate boost. While looking at this it may seem counter intuitive but currently in the engine the number of entities is of far greater importance than the number of polygons you're rendering"

    I just found this very interesting and would like to know more about best practices in Source, theoretically.

  • DrywallDreams
    • February 25, 2017 at 7:31 PM
    • #4
    Quote from grapen

    On 2/24/2017 at 9:49 AM, grapen said: Excellent link, didn't know this existed. Have some testing to do =)

    I ask because of what Cliffe had to say about this picture:

    [Blocked Image: https://i.imgur.com/r3yr5QK.png]

    "The reason you're seeing those models render is because models of similarity (that share textures) were combined in order to reduce draw calls. We measured the peformance of the map before and after this optimization and it resulted in a 40% average framerate boost. While looking at this it may seem counter intuitive but currently in the engine the number of entities is of far greater importance than the number of polygons you're rendering"

    I just found this very interesting and would like to know more about best practices in Source, theoretically.

    I'm going to guess that it's running into a CPU cache bottleneck with more entities due to the dated entity design of Source (in addition to regular drawcall bottlenecking). More modern engines keep the positions, meshes, materials, so on, of every entities in their own arrays (as opposed to grouping all of them together into classes or structs) to keep processing arrays fast.

  • Klems
    • February 27, 2017 at 7:13 PM
    • #5

    It's always better to share textures on multiple meshes, period. You save on map size, on loading time and on GPU memory while in-game.

    That screen of nuke probably has to do with the size of these models, not the textures. It's sometimes a good idea to merge all the props of a room into a single, "huge" prop. Lots of small props will make the drawcall bigger, one big prop will make it much smaller. The trend is to do less objects on the CPU and more polygons on the GPU (modern GPU can handle it). The drawback is that the bounding box of the prop is so huge (since it encompass all the objects in the room) it's practically always "visible".

    Quote from grapen

    On 24/02/2017 at 4:49 PM, grapen said: and would like to know more about best practices in Source, theoretically.

    May I ask why? Are you making a map with so many props and polygons that you broke the limits of source? Do you experience a significant FPS drop on your map and you don't understand why? Are you just trying to learn? Otherwise it's probably better to avoid optimizing early.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Register Yourself Login
Discord

The Mapcore Discord is our lively IRC channel of the 2000s reborn. Chat about level design, gaming, and more.

Latest Posts

  1. Tangerine

    Harry Poster
    July 18, 2026 at 11:10 AM
  2. Any of the old guard still around? D:

    Warby
    July 12, 2026 at 8:23 PM
  3. About our archived forums

    Thrik
    June 30, 2026 at 2:12 PM
  4. Mapcore Discord

    mason_fan123
    June 24, 2026 at 8:52 PM
  5. [CS2] Valley

    Serialmapper
    June 22, 2026 at 11:56 AM
  6. Free Music / SFX Resource - Over 2500 Tracks

    Eric Matyas
    June 18, 2026 at 12:32 PM
  7. Pango [WIP]

    Elowen
    June 11, 2026 at 10:13 AM
  8. [CS2] Dvina

    Jeremy Rivera
    June 11, 2026 at 10:03 AM
  9. Bridges 2.0 by NEXSIDE, MAP SHOWCASE. ( Steam Workshop )

    MrTrane18
    June 1, 2026 at 7:46 PM
  10. Classic Maps Reborn For CS2

    SillySpaceCat
    May 31, 2026 at 10:33 PM

Users Viewing This Thread

  • 2 Guests
  1. Privacy Policy
  2. Contact
Powered by WoltLab Suite™