On a Meta Quest 2 with the Qualcomm XR2, I am trying to render a scene with about 250k vertices. Since it is rendered twice using multiview, I guess the real number is closer to 500k vertices. I use Vulkan.
The problem is that it is spending between 3.7ms and 3.9ms on binning every frame and I'd really like to reduce that time. I use indexed rendering with 16bit indices.
The vertex shader is multiplying the vertex position with the objects world transform and multiplying the result with the view projection matrix. And that's all it does. I tried reducing it to one multiplication, but without seeing a meaningful improvement.
I tried splitting off vertex positions into their own buffer, but without seeing any improvement.
I tried reducing the per vertex data size by using 16bit positions and 16bit normals, but again without any measurable improvemen in binning time (or any other times...).
So now I am wondering what the actual bottleneck might be and how I could hopefully improve it without reducing resolution (and as a result the number of tiles). Reducing MSAA or depth buffer bitrate is also not an option :(
Surface 1 | 1440x1584 | color 32bit, depth 32bit, stencil 0 bit, MSAA 4, Mode: 1 (HwBinning) | 135 96 x176 bins ( 92 rendered) | 11.42 ms | 282 stages : Binning : 3.809ms Render : 4.026ms StoreColor : 0.765ms Preempt : 1.867ms
I'd be happy about any advice or ideas.
Thanks!