Hello everyone.

The Mixed Reality Forums here are no longer being used or maintained.

There are a few other places we would like to direct you to for support, both from Microsoft and from the community.

The first way we want to connect with you is our mixed reality developer program, which you can sign up for at https://aka.ms/IWantMR.

For technical questions, please use Stack Overflow, and tag your questions using either hololens or windows-mixed-reality.

If you want to join in discussions, please do so in the HoloDevelopers Slack, which you can join by going to https://aka.ms/holodevelopers, or in our Microsoft Tech Communities forums at https://techcommunity.microsoft.com/t5/mixed-reality/ct-p/MicrosoftMixedReality.

And always feel free to hit us up on Twitter @MxdRealityDev.
Options

What's the exact rendering capacity for HoloLens? How to optimize?

Hi, I am wondering how to optimize the rendering for my application. I have 105 * 68 cubes need to be rendered, however, it turns out flickering a lot.
Any thoughts to solve that problem?

Answers

  • Options

    There is no exact rendering capacity, the number of instructions per vertex will change how many vertices can be rendered at 60FPS.

    First things first - if your using unity, ensure you profile the app using the unity profiler (it will detect hololens as a remote target). Before you improve anything, you need to be able to understand where your bottleneck is. If your not using unity, VS has a frame debugger but I haven't been able to get it working.

    In specific terms though, we can make educated guesses. Assuming 16 verts per cube, 114K verts is quite low, in my app we draw over 500K. However, 7000 individual objects could result in 7000 draw calls, which will run like a 3-legged dog.

    To see how much overhead is in the actual rendering code, write your own shader that does nothing. If you still run slow, your most likely CPU-bound (most likely, draw-call bound).

    To reduce draw calls (assuming identical cubes) make sure you have an instancing shader (https://docs.unity3d.com/540/Documentation/Manual/GPUInstancing.html). I would recommend not using the Standard shader though, as the pixel shader in HL seems particularly weak. Use one of the shaders in the Hololens toolkit, ideally an un-lit shader, and convert it to support instancing. If your not using unity, there are hundreds of tutorials on instancing in DX11.

    Other options are to implement batching https://docs.unity3d.com/540/Documentation/Manual/DrawCallBatching.html.

    Also - if you aren't using Unity, ensure you render front-to-back to prevent overdraw.

Sign In or Register to comment.