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. BELEK: turning Rouen into competitive FPS maps (Godot project, feedback wanted)

    zlatan24
    November 12, 2026 at 6:23 PM
  2. CS2 sticker critique | Would the eye or blade read first on an AK?

    EmberKrakenCS2
    November 9, 2026 at 10:21 PM
  3. dod_poznan

    Smile_2000
    November 9, 2026 at 9:10 AM
  4. [cs2][WIP] De_digital (A side only) Looking for Feedback

    Howw3
    November 5, 2026 at 9:22 PM
  5. Hello from Normandy: Metin, working on a tactical FPS

    Thrik
    November 2, 2026 at 10:19 PM
  6. How do I setup CS1.6 mapping on linux?

    zlatan24
    November 2, 2026 at 6:43 AM
  7. CS:S | de_honor | Map creation process by D'artagnan

    Dartagnan
    November 1, 2026 at 5:41 PM
  8. Made a map maker for my indie game.

    daud2k7
    November 1, 2026 at 4:19 PM
  9. First CS2 Maps DM and Bomb Defusal

    zlatan24
    November 1, 2026 at 3:06 PM
  10. POLYSTRIKE - Finally Announced After Years of Development!

    MetinSaygin
    October 31, 2026 at 10:57 AM

Users Viewing This Thread

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