No announcement yet.

Reducing draw calls for very simple procedural meshes using identical textures

  • Filter
  • Time
  • Show
Clear All
new posts

    Reducing draw calls for very simple procedural meshes using identical textures

    Hi, I'm a beginner to game programming, but not programming in general, and really need some help in boosting performance in my project.

    I'm working on a tile-based map system with heightmaps implemented, it looks a bit like this. What you see is a 10x10 grid with some height adjustments being generated 4 times in a 2x2 pattern, i.e. 400 tiles in total. The structure can be seen as:
    - 4 Chunks with a procedural mesh component
    - - 100 tiles per chunk, a section of the Procedural Mesh Component
    - - - 4 vertices /2 tris per tile with one 256px texture each, often sharing textures between tiles.

    My problem is that the number of draw calls (~1600, seen in the image) becomes unsustainable when scaling this up to, say, 1m per tile and 50x50 tiles on the screen. Despite only 2 tris per tile, each tile generates 4 draw calls, which you can see in the image (4x400 = 1600) and despite being very simple constructs and using low resolution textures, this high amount of draw calls tanks the performance. It doesn't seem like same-texture assets are being merged as well. I've already tried the following to increase performance:
    • Disabling shadows
    • Disabling collisions (although I need them)
    • Disabling textures
    • Tweaked random settings
    • Treat as background enabled

    Shadows did quite a bit to reduce computations, but the draw calls are still as high. Is there anything I'm missing that can be done to increase performance? Can I draw the entire chunk at once by dynamically generating a chunk texture of all the current tiles so, then update that in real-time?
    Last edited by Baraklava; 06-01-2019, 11:12 AM.