# Vulkan preview render doubles draw calls

**URL:** <https://forums.unrealengine.com/t/vulkan-preview-render-doubles-draw-calls/480913>\
**Category:** Rendering\
**Tags:** Mobile, occlusion-culling, vulkan, unreal-engine, question\
**Created:** [March 26, 2021, 1:39pm UTC](https://forums.unrealengine.com/t/vulkan-preview-render-doubles-draw-calls/480913 "2021-03-26T13:39:50Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![BioMedKUL](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@BioMedKUL](https://forums.unrealengine.com/u/BioMedKUL)\
**Post date:** [March 26, 2021, 1:39pm UTC](https://forums.unrealengine.com/t/vulkan-preview-render-doubles-draw-calls/480913/1 "2021-03-26T13:39:50Z")

</div>

I’ve noticed a strange thing and would like to understand why:

I was using stat scenerendering to troubleshoot some cpu issues with a Vulkan VR project and switched between Preview rendering level: vulkan (mobile) and SM5. Whenever I switched to Vulkan, the amount of draw calls doubles or triples, compared to the same view in SM5 even though occlusion culling was enabled in project settings. This would basically mean that Vulkan renders all objects, even those that are behind a wall. I did a test by placing a wall (cube mesh) in the scene, in front of a bunch of objects and indeed, with Vulkan, the amount of draw calls remained equally high with or without the wall. With Shader Model 5 (which is the default renderer for windows), the wall indeed caused culling to occur and draw call count reduced about 70%.  
Eventually after trying out a few things, I found a solution to enable “Support Software Occlusion Culling” in project settings, then setting the “LOD For Occluder Mesh” to 0 (which means enabled) in the mesh Details. Then Vulkan behaves similar to SM5 and walls are actually occluding the view.

However, I don’t understand why I should enable software occlusion culling and set the occlusion LOD for each object to use it as an occluder. Shouldn’t occlusion on large meshes be done by default in Vulkan, similar to ShaderModel 5? I assumed this is default behavior for any GPU. I understand that the Vulkan preview render is more of an emulation and not really used for performance debugging. Perhaps that’s the reason why?

---

<div class="post-metadata">

**Author:** ![BioMedKUL](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@BioMedKUL](https://forums.unrealengine.com/u/BioMedKUL)\
**Post date:** [April 27, 2021, 7:29am UTC](https://forums.unrealengine.com/t/vulkan-preview-render-doubles-draw-calls/480913/2 "2021-04-27T07:29:52Z")

</div>

I managed to find a solution for this problem. It is related to the way mobile renders objects behind other objects.  
More information can be found in this thread: [Question about Culling and VR - XR Development - Unreal Engine Forums](https://answers.unrealengine.com/questions/1020531/view.html)

Basically, software culling should be enabled, then each object that should work as an occluder (like walls), need to be set as an occluder (LOD for occluder mesh = 0). Then, it will not render objects behind this mesh anymore and your draw calls will decrease significantly.
