Draw Calls in regards to Static Mesh and Materials

I have a environment Im working on at work and the frame rate is low. The environment has a lot of models in it and mostly made up of blueprints that have modular pieces that is for building variations. I have a few questions. Most of these buildings are using a set of maybe 8 pieces that are duplicated in the blueprint to make up these building variations. My impression was that if i added a static mesh within the component of that blueprint over and over to create the buildings that the draw calls would only be 1 for the mesh and 1 for the material because Im using that same model over and over. I was told that each blueprint is a separate object so therefor each one would be a added draw call. I saw that within the blueprint there is this hierarchy instance static mesh , am I suppose to use that instead for a better draw call?
Also , is there a console command that will specifically say how many calls per mesh and material for example I put a box in the scene so my draw call would be 1 for the box and 1 for material . So then i know if i add a sphere now its 4 draw calls. Im totally making this up because I just dont know, so thats why Im here. Thanks

If you add components to BP it is the same as having them outside BP which mans draw calls per addition. If you attach the meshes as one piece in your 3d app and import it as one mesh and one material element then that’s one draw call. Instances don’t matter you still get draw calls per instanced mesh.

Here’s a good guide on how to reduce draw calls with instancing using Blueprints: https://www.youtube.com/watch?v=oMIbV2rQO4k

1 Like

thanks for the video, I did watch that last week but I am just disappointed. I dont like creating buildings using nodes. I like being in the viewport adding static mesh and moving it where I need it. I just dont understand how the engine doesnt just know that when I use the same model within a blueprint to count that as 1 draw call. I tried creating a blueprint by just using the instanced mesh option but in my opinion is counter intuitive and when i just use that same model and instance it and then within my scene i duplicate the blueprint my draw calls go up even though i just have that instance mesh hierarchy models. I just wished that within my blueprint I can add static mesh and duplicate the model within that blueprint to make my buildings and have unreal know to count that as one draw call(if im using that same model over and over). I just love being able to make changes within the blueprint and having it affect all the other models in the scene. saves a lot on time.

Hey , I thought the whole point of using instanced models was that unreal would see those instances as 1 draw call because its the same model over and over. I thought thats the whole point of it?

Could try using the foliage tool? you can just add instances per click and then mess with the transforms after they’re roughly in the spot you want them… idk…

This thread is more than a year old, and the advice contained within is now somewhat out of date.

There is one thing that doesn’t work. When you create a class and inherit from AStaticMeshActor then StaticMeshComponent inside that class is not instanced rendered and treated as one draw call. In such case all actors of that type generate additional draw calls.